123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564 |
- <template>
- <div class="app-container">
- <div class="conPanel">
- <el-row class="ht50p" :gutter="20">
- <el-col class="ht100p" :span="7">
- <div class="cardDiv">
- <div class="cardTitle">客户年龄段性别分布</div>
- <bar-two-way-chart
- id="barTwoWayChart"
- :width="width"
- :height="height"
- :data="barTwoWayChartData" />
- </div>
- </el-col>
- <el-col class="ht100p" :span="17">
- <div class="cardDiv">
- <div class="cardTitle">查询条件</div>
- <div class="lunboDiv">
- <img class="lineImg" src="../assets/image/line.png" alt="">
- <div class="wrapper horizontal demo1">
- <ul class="container" style=" transform-style: preserve-3d;transform: rotateX(-5deg) rotateY(0deg);">
- <li class="cards-list" v-for="(item,index) in lunboData" :key="index">
- <div class="img">
- <img class="iconImg" :src="item.iconSrc" alt="">
- <img class="shadowImg" src="../assets/image/shadow.png" alt="">
- </div>
- <div class="main-con">
- <div class="name">{{item.name}}</div>
- <img src="../assets/image/ItalicsLine.png" alt="">
- </div>
- </li>
- </ul>
- </div>
- </div>
- <div class="infoLeft">
- <!-- <img class="lineImg" src="../assets/image/line.png" alt="">-->
- <el-button class="lunboSearchBtn" icon="el-icon-search" circle @click="toUserInfoList"></el-button>
- <el-form v-if="lunboActiveIndex == 0" ref="conditionData" :model="conditionData" label-width="96px">
- <el-form-item class="formItemFull" label="业绩归属:" size="mini">
- <el-select v-model="conditionData.policybelong">
- <el-option v-for="(item,index) in policybelongArr" :key="index" :label="item.label" :value="item.value"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItemFull" label="年缴费区间:" size="mini">
- <el-input v-model="conditionData.payS" style="width: 43%;"></el-input>
- -
- <el-input v-model="conditionData.payE" style="width: 43%;"></el-input>
- </el-form-item>
- <el-form-item class="formItemFull" label="投保年份:" size="mini">
- <el-date-picker
- v-model="conditionData.fadate"
- type="year"
- clearable
- value-format="yyyy"
- placeholder="选择年">
- </el-date-picker>
- </el-form-item>
- <el-form-item class="formItemFull" label="险种类别:" size="mini">
- <el-select v-model="conditionData.productname">
- <el-option label="人寿保险" value="L"></el-option>
- <el-option label="年金保险" value="R"></el-option>
- <el-option label="万能保险" value="U"></el-option>
- <el-option label="意外伤害险" value="A"></el-option>
- <el-option label="重疾保险" value="S"></el-option>
- <el-option label="健康险" value="H"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItemFull" label="保额区间:" size="mini">
- <el-input v-model="conditionData.insuredAmountS" style="width: 43%;"></el-input>
- -
- <el-input v-model="conditionData.insuredAmountE" style="width: 43%;"></el-input>
- </el-form-item>
- </el-form>
- <el-form v-if="lunboActiveIndex == 1" :inline="true" ref="conditionData" :model="conditionData" label-width="96px">
- <el-form-item class="formItem" label="年龄:" size="mini">
- <el-input class="age" oninput="value=value.replace(/[^\d]/g,'')" v-model="conditionData.ageS"></el-input>
- -
- <el-input class="age" oninput="value=value.replace(/[^\d]/g,'')" v-model="conditionData.ageE"></el-input>
- </el-form-item>
- <el-form-item class="formItem" label="性别:" size="mini">
- <el-select v-model="conditionData.gender">
- <el-option label="男" value="0"></el-option>
- <el-option label="女" value="1"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItem" label="省份:" size="mini">
- <el-input v-model="conditionData.sobirth"></el-input>
- </el-form-item>
- <el-form-item class="formItem" label="保单件数:" size="mini">
- <el-select v-model="conditionData.NOVPolicy">
- <el-option label="无保单" value="无保单"></el-option>
- <el-option label="1件" value="1件"></el-option>
- <el-option label="2件" value="2件"></el-option>
- <el-option label="3-5件" value="3-5件"></el-option>
- <el-option label="6-10件" value="6-10件"></el-option>
- <el-option label="11-20件" value="11-20件"></el-option>
- <el-option label="21-50件" value="21-50件"></el-option>
- <el-option label="50件以上" value="50件以上"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItem" label="客户类型:" size="mini">
- <el-select v-model="conditionData.custtype">
- <el-option label="投保人" value="投保人"></el-option>
- <el-option label="被保人" value="被保人"></el-option>
- <el-option label="受益人" value="受益人"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItem" label="核心客户号:" size="mini">
- <el-input v-model="conditionData.SCustID"></el-input>
- </el-form-item>
- <el-form-item class="formItemFull labelM education" label="客户等级:" size="mini" style="width:100%;margin-top: 5px;">
- <el-select v-model="conditionData.custclass">
- <el-option label="钻石" value="1"></el-option>
- <el-option label="白金" value="2"></el-option>
- <el-option label="黄金" value="3"></el-option>
- <el-option label="普通" value="4"></el-option>
- <el-option label="无" value="0"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItemFull labelM education" label="学历:" size="mini" style="width:100%;margin-top: 5px;">
- <el-select v-model="conditionData.education" multiple collapse-tags>
- <el-option v-for="(item,index) in educationArr" :key="index" :label="item.label" :value="item.value"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item class="formItemFull labelM dateQj" label="参与方进入时间:" size="mini" style="margin-top: 5px;">
- <el-date-picker
- v-model="conditionData.participantsDateS"
- type="date"
- clearable
- style="width: 44%;"
- value-format="yyyy-MM-dd"
- placeholder="选择日期"
- :picker-options="pickerOptionsS"
- @blur="startDateBlur">
- </el-date-picker>
- -
- <el-date-picker
- v-model="conditionData.participantsDateE"
- type="date"
- clearable
- value-format="yyyy-MM-dd"
- style="width: 44%;"
- placeholder="选择日期"
- :picker-options="pickerOptionsE"
- @blur="endDateBlur">
- </el-date-picker>
- </el-form-item>
- </el-form>
- <el-form v-if="lunboActiveIndex == 2" ref="conditionData" :model="conditionData" label-width="96px">
- <el-form-item class="formItemFull" label="年收入:" size="mini">
- <el-input v-model="conditionData.PIncomeS" style="width: 43%;"></el-input>
- -
- <el-input v-model="conditionData.PIncomeE" style="width: 43%;"></el-input>
- </el-form-item>
- </el-form>
- <el-form v-if="lunboActiveIndex == 3" ref="conditionData" :model="conditionData" label-width="96px">
- <el-form-item class="formItemFull" label="投保对象:" size="mini">
- <el-input v-model="conditionData.Insured"></el-input>
- </el-form-item>
- </el-form>
- <el-form v-if="lunboActiveIndex == 4" ref="conditionData" :model="conditionData" label-width="196px">
- <el-form-item class="formItemFull" label="理赔:" size="mini">
- <el-radio v-model="conditionData.lp" label="0">是</el-radio>
- <el-radio v-model="conditionData.lp" label="1">否</el-radio>
- </el-form-item>
- <el-form-item class="formItemFull" label="有效:" size="mini">
- <el-radio v-model="conditionData.yx" label="0">是</el-radio>
- <el-radio v-model="conditionData.yx" label="1">否</el-radio>
- </el-form-item>
- <el-form-item class="formItemFull" label="关注官微:" size="mini">
- <el-radio v-model="conditionData.gzgw" label="0">是</el-radio>
- <el-radio v-model="conditionData.gzgw" label="1">否</el-radio>
- </el-form-item>
- <el-form-item class="formItemFull" label="注册官微:" size="mini">
- <el-radio v-model="conditionData.zcgw" label="0">是</el-radio>
- <el-radio v-model="conditionData.zcgw" label="1">否</el-radio>
- </el-form-item>
- </el-form>
- </div>
- <!-- <div class="infoRight">-->
- <!-- <div v-if="lunboActiveIndex == 0">-->
- <!-- <div class="infoItem">-->
- <!-- <div class="infoItemTitle">基本信息</div>-->
- <!-- <el-row class="infoCon">-->
- <!-- <el-col :span="12">性别:{{conditionData.sex}}</el-col>-->
- <!-- <el-col :span="12">年龄:{{conditionData.age}}</el-col>-->
- <!-- </el-row>-->
- <!-- </div>-->
- <!-- <div class="infoItem">-->
- <!-- <div class="infoItemTitle">客户标签</div>-->
- <!-- <el-row class="infoCon">-->
- <!-- <el-col :span="12" v-for="(item,index) in conditionData.tag" :key="index">{{item}}</el-col>-->
- <!-- </el-row>-->
- <!-- </div>-->
- <!-- </div>-->
- <!-- <div v-else>-->
- <!-- </div>-->
- <!-- <div>-->
- <!-- <el-button class="searchBtn" type="primary" size="mini">查询</el-button>-->
- <!-- </div>-->
- <!-- </div>-->
- </div>
- </el-col>
- </el-row>
- <el-row class="ht50p" :gutter="20">
- <el-col class="ht100p" :span="7">
- <div class="cardDiv">
- <div class="cardTitle">险种类别</div>
- <bar-chart3
- id="barChart"
- :width="width"
- :height="height"
- :data="barChartData" />
- </div>
- </el-col>
- <el-col class="ht100p" :span="10">
- <div class="cardDiv">
- <div class="cardTitle">近10年有效客户数</div>
- <bar-chart
- id="barChartVistors"
- :width="width"
- :height="height"
- :data="barChartVistorsData" />
- </div>
- </el-col>
- <el-col class="ht100p" :span="7">
- <div class="cardDiv">
- <div class="cardTitle">拥有保单件数分布</div>
- <pie-chart
- id="pieChart"
- :width="width"
- :height="height"
- :data="pieChartData" />
- </div>
- </el-col>
- </el-row>
- </div>
- </div>
- </template>
- <script>
- import '../assets/styles/lunbo.css'
- import '../assets/js/empile.js'
- import BarTwoWayChart from './dashboard/BarTwoWayChart'
- import BarChart from './dashboard/BarChart2'
- import BarChart3 from './dashboard/BarChart3'
- import PieChart from './dashboard/PieChart2'
- import { ageSexDis, riskcode, bdNumDis } from "@/api/index";
- export default {
- name: "UserInfoDetails",
- components: {
- BarTwoWayChart,
- BarChart,
- BarChart3,
- PieChart
- },
- data() {
- return {
- // 客户年龄段性别分布
- barTwoWayChartData:{
- yAxisName:'单位:万',
- legendData:[],
- xAxisData:[],
- seriesData:[]
- },
- // 险种类别
- barChartData:{
- yAxisName:'单位:万',
- color:['#028FF3','#F29700'],
- xAxisData:[],
- seriesData:[]
- },
- // 拥有保单件数分布
- pieChartData:{
- color:['#0084F1','#ED475B','#F39801','#00C7FF','rgb(242,158,194)','rgb(250,216,137)','rgb(127,229,154)','rgb(33,201,205)'],
- seriesData:[]
- },
- // 近10年有效客户数
- barChartVistorsData:{
- yAxisName:'数量:万个',
- color:['#048EF3','#7FE59A','#FAD889','#F29EC2'],
- xAxisData:['2011', '2012', '2013', '2014', '2015', '2016', '2017'],
- seriesData:[
- {
- name:'白银',
- stack: 'vistors',
- data: [79, 52, 200, 334, 390, 330, 220]
- },
- {
- name:'黄金',
- stack: 'vistors',
- data: [80, 52, 200, 334, 390, 330, 220]
- },
- {
- name:'白金',
- stack: 'vistors',
- data: [30, 52, 200, 334, 390, 330, 220]
- },
- {
- name:'钻石',
- stack: 'vistors',
- data: [30, 52, 200, 334, 390, 330, 220]
- },
- ]
- },
- width:'100%',
- height:'80%',
- lunboActiveIndex:'0',
- lunboData:[
- {
- iconSrc:require('../assets/image/productInfo.png'),
- name:'产品信息',
- },
- {
- iconSrc:require('../assets/image/baseInfo.png'),
- name:'基本信息',
- },
- {
- iconSrc:require('../assets/image/money.png'),
- name:'资产信息',
- },
- {
- iconSrc:require('../assets/image/guanlian.png'),
- name:'关联信息',
- },
- {
- iconSrc:require('../assets/image/tag.png'),
- name:'客户标签',
- },
- ],
- // 学历选项
- educationArr:[
- {
- value: '幼儿园',
- label: '幼儿园'
- },{
- value: '小学',
- label: '小学'
- },{
- value: '中专',
- label: '中专'
- },{
- value: '职高',
- label: '职高'
- },{
- value: '技校',
- label: '技校'
- },{
- value: '初中',
- label: '初中'
- },{
- value: '高中',
- label: '高中'
- },{
- value: '大专',
- label: '大专'
- },{
- value: '本科',
- label: '本科'
- },{
- value: '硕士及以上',
- label: '硕士及以上'
- },{
- value: '其他',
- label: '其他'
- }
- ],
- // 业绩归属选项
- policybelongArr:[
- {
- value: '00',
- label: '总部团险个单业务'
- },{
- value: '01',
- label: '上分团险个单业务'
- },{
- value: '02',
- label: '个险渠道'
- },{
- value: '03',
- label: '银保渠道'
- },{
- value: '05',
- label: '网销渠道'
- },{
- value: '06',
- label: '健康险事业部'
- }
- ],
- conditionData:{
- education:'',
- },
- pickerOptionsS: {
- disabledDate:(time)=> {
- if (this.conditionData.participantsDateE) {
- return time.getTime() > new Date(this.conditionData.participantsDateE).getTime()
- }
- }
- },
- pickerOptionsE: {
- disabledDate:(time)=> {
- if (this.conditionData.participantsDateS) {
- return time.getTime() < new Date(this.conditionData.participantsDateS).getTime() - 86400000
- }
- }
- },
- }
- },
- created() {
- },
- mounted() {
- this.lunboFn();
- this.getRiskcode();
- this.getAgeSexDis();
- this.getBdNumDis();
- },
- methods: {
- _$ (el) {
- try {
- var item = document.querySelectorAll(el);
- return item.length == 1 ? item[0] : item;
- } catch (err) {
- console.log(err)
- }
- },
- lunboFn(){
- var that = this;
- var empile1 = new Empile(that._$('.demo1>.container'), {
- waitForTransition: true,
- isClickSlide: true,
- on: {
- // 卡片切换时执行
- slideChange: function () {
- //设置'当前显示的是第[xxx]张'元素的文本内容
- // activeIndexEle.textContent = this.activeIndex + 1;
- that.lunboActiveIndex = this.activeIndex;
- }
- },
- css: function (coord, absCoord) {
- var zIndex = 100 - absCoord,
- opacity = Math.pow(.92, absCoord).toFixed(3),
- scale = 'scale(' + Math.pow(.9, absCoord).toFixed(2) + ')',
- translateX = 'translateX(' + 30 * coord + 'px)',
- translateZ = 'translateZ(' + '105px)',
- rotateY= 'rotateY('+ coord * 30 +'deg)';
- var transform = [translateX,rotateY,translateZ].join(' ');
- return {
- zIndex: zIndex,
- opacity: opacity,
- transform: transform,
- }
- },
- });
- },
- toUserInfoList(){
- var that = this;
- console.log(that.conditionData)
- // this.$router.push({ path:'/userInfoList'})
- // this.$router.push({ name:'UserInfoList',params:that.conditionData})
- },
- // 客户年龄段性别分布
- getAgeSexDis(){
- let that = this;
- ageSexDis().then(response => {
- console.log(response);
- response.data.seriesData.forEach((item,index) => {
- item.forEach((num,i) => {
- item[i] = ((num-0)/10000).toFixed(2);
- })
- })
- that.barTwoWayChartData.xAxisData = response.data.xaxisData;
- that.barTwoWayChartData.seriesData = response.data.seriesData;
- that.barTwoWayChartData.legendData = response.data.legendData;
- this.loading = false;
- }
- );
- },
- // 险种类别
- getRiskcode(){
- let that = this;
- riskcode().then(response => {
- console.log(response);
- response.data.seriesData.forEach((item,index) => {
- item.data.forEach((num,i) => {
- item.data[i] = ((num-0)/10000).toFixed(2);
- })
- })
- that.barChartData.xAxisData = response.data.xaxisData;
- that.barChartData.seriesData = response.data.seriesData;
- }
- );
- },
- // 拥有保单件数分布
- getBdNumDis(){
- let that = this;
- bdNumDis().then(response => {
- console.log(response);
- that.pieChartData.seriesData = response.data.seriesData;
- this.loading = false;
- }
- );
- },
- }
- };
- </script>
- <style lang="scss" scoped>
- .conPanel{
- width: 97%;
- height: 96%;
- position: absolute;
- .cardDiv {
- height: 95%;
- position: relative;
- margin-top: 5px;
- background:#FFF;
- border-radius:3px;
- /*border: 1px solid #122E83;*/
- box-sizing: border-box;
- /*position:relative;*/
- /*&.cardBg{*/
- /* background: url("../assets/image/cardBg.png") no-repeat;*/
- /* background-size: 100% 100%;*/
- /* }*/
- /* &.cardBg2{*/
- /* background: url("../assets/image/cardBg2.png") no-repeat;*/
- /* background-size: 100% 100%;*/
- /* }*/
- /* &.cardBg3{*/
- /* background: url("../assets/image/cardBg3.png") no-repeat;*/
- /* background-size: 100% 100%;*/
- /* }*/
- .cardTitle {
- height: 32px;
- line-height: 32px;
- font-size: 14px;
- color: #164993;
- font-weight: bold;
- padding: 0 15px;
- box-sizing: border-box;
- background: #DCE4F7;
- }
- }
- }
- .ht100p{
- height: 100%;
- }
- .ht50p{
- height: 50%;
- }
- </style>
- <style lang="scss">
- .age{
- width: 40px !important;
- .el-input__inner{
- padding: 0 6px !important;
- }
- }
- </style>
|