소스 검색

医保费用页面

zhanghaoyu 6 년 전
부모
커밋
e059000d96

+ 155 - 1
component/chart/bar-chart.js

@ -8,7 +8,7 @@
                            暂无数据\
                        </div>\
                    </div>',
        props: ['config'],
        props: ['config','legend'],
        data: function () {
            return {
                chartid: _.uniqueId("chart_"),
@ -38,6 +38,157 @@
       			});
    
                return options
            },
            getByteLen:function(val) {
                var len = 0;
                for (var i = 0; i < val.length; i++) {
                    var a = val.charAt(i);
                    if (a.match(/[^\x00-\xff]/ig) != null) {
                        len += 2;
                    } else {
                        len += 1;
                    }
                }
                return len;
            },
            createLegend:function() {
                var top = '';
                //  if(this.isbig){
                //   top='15%'
                //  }
                var showPercentArr = [] //用来获取每个图例对应的数据
                var total = 0 //总数用来计算百分比  因为formatter拿不到
                var maxStr = 0; //取最长的那个的长度 用来对齐
                var percent = 0; //临时变量  最后一个用1减去这个
                var legengdArr = []; //临时变量  最后一个用1减去这个
                var vm = this;
                this.config.series[0].data.map(function(v){
                    maxStr = Math.max(maxStr, vm.getByteLen(v.name.toString()))
                    total += Number(v.value);
                })
                showPercentArr = this.config.series[0].data.map(function(v, i, arr) {
                    var nowPercent = 0
                    if (total && i != arr.length - 1) {
                        nowPercent = Math.round((v.value / total * 100));
                        percent += nowPercent
                        if (percent >= 100) {
                            nowPercent = nowPercent - (percent - 100)
                            percent = 100
                        }
                        v.percent = nowPercent
                        v.p = nowPercent + '%'
                    }
                    if (i == arr.length - 1) {
                        v.percent = 100 - percent
                        v.p = (100 - percent) + '%'
                    }
                    if (!total || total == 0) {
                        v.p = '0'
                        v.percent = 0
                        v.nofilter = true
                    }
                    return v
                })
                legengdArr = showPercentArr.filter(function(v){
                    return Number(v.percent) != 0 || v.nofilter
                }).map(function(v) {
                    return v.name
                })
                if (this.config.series && !this.config.listLegend && !this.config.smallPie) {
                    return {
                        data: legengdArr,
                        // top: 30,
                        // top: 'bottom',
                        bottom:10,
                        orient: 'vertical',
                        textStyle: {
                            color: ['#b5e1fc']
                        },
                        // right: this.config.leR || 10,
                        // left: this.config.leL || '55%',
                        // align:'right',
                        formatter: function(name) {
                            // 
                            var str = '',
                                n = maxStr - vm.getByteLen(name);
                            // for(var c=0;c<n;c++){
                            //   str +=''
                            // }
                            showPercentArr.map(function(v) {
                                if (v.name == name) {
                                    str += v.p
                                }
                            })
                            return name + '   ' + str
                        }
                    };
                } else {
                    return {
                        data: legengdArr,
                        top: 30,
                        formatter: function(name) {
                            // 
                            var str = '',
                                n = maxStr - vm.getByteLen(name);
                            // for(var c=0;c<n;c++){
                            //   str +=''
                            // }
                            showPercentArr.map(function(v) {
                                if (v.name == name) {
                                    str += v.p
                                }
                            })
                            return name + '   ' + str
                        }
                    }
                }
                return {};
            },
            showSpecificLegends: function(arr) {
                let selected = {};
                let option = this.chart.getOption()
                let legend = option.legend[0]
                if (legend && legend.data) {
                    _.each(legend.data, function (name) {
                        selected[name] = _.indexOf(arr, name) > -1
                    })
                    legend.selected = selected;
                }
                this.chart.setOption(option);
            },
            hasData:function() {
                let series = this.config.series
                let data = []
                _.each(series, function(o){
                    data = data.concat(o.data)
                })
                return data.length
            },
            smallPie(option) { //太小的格子数字展示就在里面吧
                // option.series[0].label = {
                //   normal: {
                //     position: 'inner',
                //     formatter: '{d}%'
                //   }
                // }
                // option.series[0].labelLine = {
                //   normal: {
                //     show: false
                //   }
                // }
                option.series[0].radius = ['30', '50%'];
                option.series[0].center = ['50%', '60%'];
            }
        },
        watch: {
@ -52,6 +203,9 @@
                    }else{
                        this.isEmpty = false;
                    }
                    if(this.legend){
                        data.legend = this.createLegend();
                    }
                    this.chart.setOption(this.setOption(data));
                }
            }

+ 4 - 1
component/chart/map-chart.js

@ -3,7 +3,7 @@
        template: '<div class="chart_box" >\
                        <div :id="chartid" class="chart_box"></div>\
                    </div>',
        props: ['config'],
        props: ['config','tooltip'],
        data: function () {
            return {
                chartid: _.uniqueId("chart_"),
@ -43,6 +43,9 @@
        methods: {
            getOption: function () {
                if(this.tooltip == "元"){
                    defaults.tooltip.formatter = '{b}<br/>{c} (元)'
                }
                var options=JSON.parse(JSON.stringify(defaults));
                if(this.config){
                    var maxValue =0;

+ 2 - 1
js/api/bigData-api.js

@ -13,7 +13,8 @@
		getTemplateDataByViewCode:"/gov/report/getTemplateDataByViewCode",
		getCityArea: "/gov/report/getCityArea",
		getMapJingWeiDuInfo:"/gov/front/js/lib/plugins/echarts/map/json/china-main-city/361100.json",
		getMoreNoChartTemplateData:"/gov/report/getMoreNoChartTemplateData"
		getMoreNoChartTemplateData:"/gov/report/getMoreNoChartTemplateData",
		getCityHospital:"/gov/report/getSpecialOrgList"
	}
	
	exports.bigDataAPI = bigDataAPI;

+ 318 - 0
page/bigData/css/insurance.css

@ -0,0 +1,318 @@
#app{
    width: 1920px;
    height: 1080px;
    background-size: 100% 100%;
    background-image: url(../images/insurance-bg.png);
}
.btn.focus,
.btn:focus,
.btn:hover {
	color: #fff
}
.btn-default.active,
.btn-default:active,
.btn-default:focus,
.btn-default:hover,
.open .dropdown-toggle.btn-default {
	background-color: #009DFE;
	border-color: #009DFE;
}
.btn-default:hover,
.btn-default.active:hover {
	color: #fff;
	background-color: #009DFE;
	border-color: #009DFE;
}
.btn-default {
	background: #051829;
	border-color: #009DFE;
	color: #009DFE;
}
.btn.focus,
.btn:focus,
.btn:hover {
	color: #fff
}
.text-right{
	text-align: right;
}
.mb-20{
    margin-bottom: 20px;
}
.mt-20{
    margin-top: 20px;
}
.w-210{
	width: 210px;
}
.w-120{
	width: 120px;
}
.w-110{
	width: 110px;
}
.div-header {
	background: url(../images/biaoti_bg_img.png) no-repeat;
	width: 10rem;
	height: 0.39rem;
	background-size: 10rem 0.39rem;
	z-index: 50;
	position: relative;
	top: 0;
}
.div-title {
	height: 0.271rem;
	line-height: 0.271rem;
	text-align: center;
	font-size: .104167rem;
	color: #fff;
	width: 1.453125rem;
	background: url(../images/dashujuyingyongfuwupingtai.png) no-repeat;
	background-size: 100% 100%;
	position: relative;
	z-index: 99;
	cursor: pointer;
}
.div-skip {
	width: 0;
	height: 0;
	opacity: 0;
	overflow: hidden;
	background-image: url("../images/tc1.png");
	background-size: 100% 100%;
	position: fixed;
	top: 0.271rem;
	z-index: 5;
	transition: all .5s cubic-bezier(0.68, -0.55, 0.27, 1.55)
}
.div-skip-active {
	height: .625rem;
	opacity: 1;
	top: 0.35rem;
	/*margin-left: 0.1rem;*/
	width: 1.458333rem;
}
.div-skip div {
	height: .3125rem;
	line-height: .3125rem;
	color: rgb(179, 223, 251);
	text-align: center;
	font-size: 0.1rem;
}
.div-skip div a{
	color: rgba(213, 230, 255)
}
.div-skip div a:hover {
	color:rgb(4, 128, 211);
}
.sanjiao {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}
.sanjiao:checked~img {
	transform: rotate(180deg)
}
#app>.left{
    width: 444px;
    margin: 0 20px 0 17px;
    height: 500px;
    float: left;
}
#app>.middle{
    width: 950px;
    float: left;
    height: 500px;
    color: rgba(213, 230, 255);
}
#app>.right{
    width: 444px;
    margin-right: 16px;
    /* background-color: #f00; */
    height: 500px;
    float: right;
}
#app>.left>.chart{
    width: 444px;
    height: 317px;
    background-size: 100% 100%;
	background-image: url(../images/mjzrcdibu-1.png);
	position: relative;
}
#app>.middle{
    width: 950px;
    height: 983px;
    background-size: 100% 100%;
    background-image: url(../images/middle-bg.png);
    position: relative;
}
.dropdown-menu {
	background: rgba(5,31,51, 0.6);
	border: 1px solid #009dfe;
}
.open .dropdown-toggle.btn-default {
	background-color: #009DFE;
	border-color: #009DFE;
}
.Mapselect {
	position: absolute;
	top: .114583rem;
	width: .677083rem;
	left: 0.46875rem;
}
.diqu-label{
	position: absolute;
    top: 0.135rem;
    left: -0.21rem;
    font-size: 0.073rem;
}
.el-cascader,.el-date-editor--month{
	margin-top: 15px;
	height: 34px;line-height: 34px;
}
.el-input--suffix{
	height: 34px;line-height: 34px;
}
.el-input__inner {
	background-color:transparent;
	background: url(../images/mjzfwqktoubukuang.png) center center / 100% 100% no-repeat;
	height: 34px;
	padding: 6px 35px;
	color: rgba(213, 230, 255);
	border: solid 1px #009dfe;
}
.el-cascader__label{
	color: rgba(213, 230, 255);
}
#time{
    background: url(../images/mjzfwqktoubukuang.png) center center / 100% 100% no-repeat;
	height: 34px;
	padding: 6px 35px;
    margin-top: 0.1rem;
    width: 130px;
    border: none;
}
.pick-time{
    position: absolute;
    top: .114583rem;
    left: 1.46875rem;
}
.pick-time .caret{
    position: absolute;
    right: 20px;
    top: 35px;
}
#app>.middle>.shuju{
    width: 810px;margin:112px auto 0;
}
#app>.middle>.shuju>div{
    width: 237px;
    height: 98px;
    background-size: 100% 100%;
}
#app>.middle>.shuju>div p{
    text-align: center;width: 100%;
}
#app>.middle>.shuju>div p span{
    font-size: 36px;
}
#app>.middle>.shuju>div:nth-of-type(1){
    background-image: url(../images/shuju-1.png);
    color: #19e0f2;
}
#app>.middle>.shuju>div:nth-of-type(2){
    background-image: url(../images/shuju-2.png);
    color: #ffba11;
}
#app>.middle>.shuju>div:nth-of-type(3){
    background-image: url(../images/shuju-3.png);
    color: #f61d06;
}
#app>.middle>.map{
    height: 680px;
    position: relative;
}
.el-picker-panel{
	background-color: #051f33;
	border: none;
	/* color: #b5e1fc; */
}
.el-date-picker__header button,.el-date-picker__header span{
	color: #f6f6f6!important;
}
.el-month-table td .cell{
	color: #b5e1fc;
}
.chart-legend{
	width: 444px;
	height: 317px;
	position: absolute;
	top: 0;
	left: 0;
	text-align: center;
	font-size: 14px;
	color: #b5e1fc;
	line-height: 28px;
}
.table1{
	width: 444px;
	height: 473px;
	position: relative;
	margin-top: 58px;
}
.boxTitle {
	width: 100%;
    background: url(../images/icon_biaoti.png) no-repeat;
    background-size: 100% 100%;
    height: .260417rem;
    color: #fff;
    font-weight: bold;
    line-height: 0.198rem;
    font-size: 0.104rem;
    position: absolute;
    top: -0.4375rem;
    left: -0.1302rem;
}
thead{
	background-color: #051f33;
	height: 40px;
	border: solid 1px #009dfe;
	line-height: 40px;
	color: #b5e1fc;
	font-size: 16px;
}
thead th{
	font-weight: 200;
	border: solid 1px #009dfe;
	box-sizing: border-box;
	padding-left: 15px;
	padding-right: 15px;
}
tbody{
	overflow-y:scroll;
	height: 380px;
	border: solid 1px #009dfe;
}
tbody td{
	background-color: #041829;
	font-size: 14px;
	color: #b5e1fc;
	box-sizing: border-box;
	padding-left: 15px;
	padding-right: 15px;
	height: 40px;
	line-height: 40px;
	border: solid 1px #009dfe;
}

+ 163 - 0
page/bigData/html/insurance.html

@ -0,0 +1,163 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>医疗服务大数据分析</title>
    <meta name="keywords" content="">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
    <link href="../../../css/bootstrap.min.css" rel="stylesheet">
    <link href="../../../css/font-awesome.min.css?v=4.4.0" rel="stylesheet">
    <link href="../../../css/plugins/toastr/toastr.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <link rel="stylesheet" href="../layui/css/layui.css">
    <link href="../../../css/style.min.css" rel="stylesheet">
    <link href="../../../css/flex.css" rel="stylesheet">
    <link href="../css/insurance.css" rel="stylesheet">
</head>
<body>
    <div id="app">
        <!-- 遮罩层 -->
        <!-- <div class="div-mask-layer">
            <div class="ibox-content">
                <div class="spiner-example">
                    <div class="sk-spinner sk-spinner-fading-circle">
                        <div class="sk-circle1 sk-circle"></div>
                        <div class="sk-circle2 sk-circle"></div>
                        <div class="sk-circle3 sk-circle"></div>
                        <div class="sk-circle4 sk-circle"></div>
                        <div class="sk-circle5 sk-circle"></div>
                        <div class="sk-circle6 sk-circle"></div>
                        <div class="sk-circle7 sk-circle"></div>
                        <div class="sk-circle8 sk-circle"></div>
                        <div class="sk-circle9 sk-circle"></div>
                        <div class="sk-circle10 sk-circle"></div>
                        <div class="sk-circle11 sk-circle"></div>
                        <div class="sk-circle12 sk-circle"></div>
                    </div>
                </div>
            </div>
        </div> -->
        <div class="div-header flex f_y_c pl20">
            <div class="div-title" @click="skipClick()">大数据应用服务平台 <input type="checkbox" class="sanjiao"><img style="transition: all .3s ease-in-out"
                    src="../images/sanjiao.png"></div>
            <div class="div-skip" :class="{'div-skip-active':skipShow}">
                <div>
                    <a href="medical.html" style="color:rgb(4, 128, 211);">
                        医疗服务大数据分析
                    </a>
                </div>
                <div>
                    <a href="home.html">
                        居民健康管理大数据分析
                    </a>
                </div>
            </div>
        </div>
        <div class="left">
            <div class="chart mb-20">
                <bar-chart :config="leftData1"></bar-chart>
            </div>
            <div class="chart mb-20">
                <div class="flex f_xy_c chart-legend">
                    <p>参保就医费用<br>{{leftData2_legend}}万元</p>
                </div>
                <bar-chart :config="leftData2" :legend="true"></bar-chart>
            </div>
            <div class="chart">
                <bar-chart :config="leftData3"></bar-chart>
            </div>
        </div>
        <div class="middle">
            <div class="select" style="position:relative">
                <div class="dropdown Mapselect">
                    <label class="diqu-label">地区</label>
                    <el-cascader :options="town":show-all-levels="false" v-model="selectTown"></el-cascader>
                    <!-- <div type="button" class="btn dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">{{city}}
                        <span class="caret"></span>
                    </div>
                    <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
                        <li role="presentation" @click="setCity(item)" v-for="item in town">
                            <a role="menuitem" href="#">{{item.name}}</a>
                        </li>
                    </ul> -->
                </div>
                <div class="pick-time">
                    <label class="diqu-label">时间</label>
                    <el-date-picker
                    v-model="time"
                    type="month"
                    placeholder="选择月">
                  </el-date-picker>
                </div>
            </div>
            <div class="shuju flex f_y_c f_x_sb">
                <div>
                    <p class="mt-20"><span>{{middleData1}}</span>万元</p>
                    <p style="color: #a0f7ff;">本月医保支出费用</p>
                </div>
                <div>
                    <p class="mt-20"><span>{{middleData2}}%</span></p>
                    <p style="color: #ffde8e;">环比</p>
                </div>
                <div>
                    <p class="mt-20"><span>{{middleData3}}</span>万元</p>
                    <p style="color: #fe9589;">上月医保支出费用</p>
                </div>
            </div>
            <div class="map mt20">
                <div class="set_all_city" @click="clickMap({name:'上饶市'})" title="选择全市" v-show="hasMapData">
                    <img src="../images/allCity.png">
                </div>
                <div v-show="!hasMapData" class="no-result-panel">
                    <div class="no-result-img" style="padding-top: 1.3rem;">
                        <img src="../images/noData.png">
                    </div>
                    <div class="no-result-text">暂无数据!</div>
                </div>
                <map-chart @map-click="clickMap" ref="map" :config="mapData" v-show="hasMapData" :tooltip="'元'"></map-chart>
            </div>
        </div>
        <div class="right">
            <div class="table1">
                <div class="boxTitle mb10 mt24"><span class="ml50">住院服务情况</span></div>
                <table>
                    <thead>
                        <th class="w-210">机构名称</th>
                        <th class="w-120 text-right">费用</th>
                        <th class="w-110 text-right">环比</th>
                    </thead>
                    <tbody>
                        <tr>
                            <td>上饶县人民医院</td>
                            <td class="text-right">999.00万元</td>
                            <td class="text-right">56.65%</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=1W9gqPiqc7C9TDliPP8S9Rj9"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
    <script src="../../../js/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script src="../../../js/jquery.min.js?v=2.1.4"></script>
    <script src="../../../component/common/event-bus.js"></script>
    <script src="../../../js/plugins/echarts/echarts.js"></script>
    <script src="../../../js/plugins/toastr/toastr.min.js"></script>
    <script src="../../../js/bootstrap.min.js"></script>
    <script src="../../../js/es6-promise.js"></script>
    <script src="../../../js/underscore.js"></script>
    <script src="../../../js/util.js"></script>
    <script src="../../../js/plugins/layer/layer.min.js"></script>
    <script src="../../../js/api/http-request.js"></script>
    <script src="../../../js/api/bigData-api.js"></script>
    <script src="../../../component/chart/bar-chart.js"></script>
    <script src="../../../component/chart/map-chart.js"></script>
    <script src="../layui/layui.js"></script>
    <script src="../js/insuranceCharts.js"></script>
    <script src="../js/insurance.js"></script>
</body>
</html>

BIN
page/bigData/images/insurance-bg.png


BIN
page/bigData/images/middle-bg.png


BIN
page/bigData/images/mjzrcdibu-1.png


BIN
page/bigData/images/shuju-1.png


BIN
page/bigData/images/shuju-2.png


BIN
page/bigData/images/shuju-3.png


+ 351 - 0
page/bigData/js/insurance.js

@ -0,0 +1,351 @@
new Vue({
	el: '#app',
	data: {
		city: '上饶市',
		town: [],
		selectTown:["0"],
		cityVal:"0",
		timeType: '1', //时间过滤条件  1是上月  2是半年
		leftData1: {}, //左边数据块1
		leftData2: {}, //左边数据块2
		bakLeftData1:{},//缓存左边数据块1
		bakLeftData2:{},//缓存左边数据块2
		yesterdayData: {},
		leftChart1: null, //左边的图表1
		leftChart2: null, //左边的图表2
		leftData3:null,//左边的图表3
		leftData2_legend:null,//左边的图表2中间数据
		rightChart1: null, //右边边的图表1
		rightChart2: null, //右边的图表2
		tableData1: null, //表格数据1
		tableData2: null, //表格数据2
		mapData: null,
		allData: null, //所有的数据  用来切换区县
		lineHeightIndex: null,
		skipShow: 0,
		hasData1:true,
		hasData2:true,
		hasData3:true,
		hasData4:true,
		hasData5:true,
		hasData6:true,
		hasMapData:true,
		time:'',
		middleData1:'',
		middleData2:'',
		middleData3:'',
	},
	mounted: function() {
		this.initData();
	},
	filters:{
		formatData:function(value){
			if(value>100000){
				if(value>1000000000){
					return (value/100000000).toFixed(2)+"亿"
				}else{
					return (value/10000).toFixed(2)+"万"
				}
			}else{
				return value
			}
		}
	},
	methods: {
		initData: function() {
			this.timeType = 1;//默认显示本月
			$(".div-mask-layer").show();
			var vm = this,data1, data2, data3, data4, data5, data6, data7, data8;
			this.town.map(function(v, i) {
				if(v.name == vm.city) {
					vm.cityVal = v.id;
				}
			})
			// 上个月
			var linkageFilter1 = "quotaDate >= '" + getMonthStartDate() + "' and quotaDate <= '" + getMonthEndDate() + "';";
			console.log(linkageFilter1)
			if(vm.cityVal!="0") {
				linkageFilter1 += "town=" + vm.cityVal + ";";
			}
			// 今年
			var linkageFilter2 = "quotaDate >= '" + getYearStartDate() + "' and quotaDate <= '" + getYearEndDate() + "';";
			if(vm.cityVal!="0") {
				linkageFilter2 += "town=" + vm.cityVal + ";";
			}
			console.log(linkageFilter2)
			// 半年
			var linkageFilter3 = "quotaDate >= '" + getHalfYearStartDate() + "' and quotaDate <= '" + getHalfYearEndDate() + "';";
			if(vm.cityVal!="0") {
				linkageFilter3 += "town=" + vm.cityVal + ";";
			}
			console.log(linkageFilter3)
			var linkageFilter4 = "quotaDate >= '" + getYearEndDate() + "' and quotaDate <= '" + getYearEndDate() + "';";
			console.log(linkageFilter4)		
			var reqUrl = [{url: bigDataAPI.getCityHospital,reqType: 'get',data: {}},
						  {url: bigDataAPI.getNoChartTemplateData,reqType: 'get',data: {viewCodeStr: "VIEW_22_0004",linkageFilter:linkageFilter1}},//医保费用
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0003",linkageFilter:linkageFilter3}},//医保支出费用月趋势
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0002",linkageFilter:linkageFilter1}},//医保目录外费用占比
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0005",linkageFilter:linkageFilter1}},//
						  {url:bigDataAPI.getMapJingWeiDuInfo,reqType: 'get',data:{}},//上饶地图经纬度数据
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_22_0001",linkageFilter:linkageFilter1}},//机构排行
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0015",linkageFilter:linkageFilter3}},//门诊人次月趋势
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0016",linkageFilter:linkageFilter3}},//住院人次月趋势
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0017",linkageFilter:linkageFilter3}},//门诊分类别月趋势
						  {url: bigDataAPI.getTemplateDataByViewCode,reqType: 'get',data: {viewCode: "VIEW_14_0018",linkageFilter:linkageFilter3}},//住院平均日数月趋势
						  
						  ];
						//   debugger
			httpRequest.getReqPromises(reqUrl).then(function(datas) {
				vm.town = datas[0].map((item, index, arr) => {   
					item.children.map((t) => {
					  return t.label = t.text;
					})
					item.label = item.text;
					return item;
				  })
				vm.town.unshift({
					label: '上饶市',
					value: '0'
				})
				vm.middleData1 = toThousands(datas[1].obj.VIEW_22_0004[0].HC_22_1001/10000);
				vm.middleData2 = datas[1].obj.VIEW_22_0004[0].HC_22_1002;
				vm.middleData3 = toThousands(datas[1].obj.VIEW_22_0004[0].HC_22_1006/10000);
				var chart2 = datas[2].obj.viewInfos[0].options[0].option;
				// vm.leftData1 = datas[1];
				var chart3 = datas[3].obj.viewInfos[0].options[0].option;
				var chart4 = datas[4].obj.viewInfos[0].options[0].option;
				var data1 = datas[1]
				var data5 = datas[5];
				var data6 = datas[6];
				console.log(data6)
				// data5 = datas[5];
				// data6 = datas[6];
				// data7 = datas[7];
				// data8 = datas[8];
				// data9 = datas[9];
				vm.setLeftChart1(chart2);
				vm.setLeftChart2(chart3);
				vm.setLeftChart3(chart4);
				// vm.setRightChart1(data8);
				// vm.setRightChart2(data9);
				// vm.setTable1(data4);
				// vm.setTable2(data5);
				// vm.setleftData1();
				echarts.registerMap('上饶',data5);
				vm.setMapData(data1);
				vm.setYesterDay(data1);
				$(".div-mask-layer").hide();
			})
		},
		setleftData1: function() {
			var options = {},options1={},options2={},vm=this;
			if(this.leftData1.successFlg) {
				 _.map(vm.leftData1.obj.VIEW_14_0011,function(item,index){
					if(vm.cityVal=="0"){//上饶市
						options1 =  vm.leftData1.obj.VIEW_14_0011[0];
					}else if(item.firstColumn==vm.city){
						options1 = item;
					}
				})
			}
			if(this.leftData2.successFlg) {
				 _.map(vm.leftData2.obj.VIEW_14_0011,function(item,index){
					if(vm.cityVal=="0"){//上饶市
						options2 =  vm.leftData2.obj.VIEW_14_0011[0];
					}else if(item.firstColumn==vm.city){
						options2 = item;
					}
				})
			}
			vm.bakLeftData1 = this.setFormater(options1);
			vm.bakLeftData2 = this.setFormater(options2);
			this.leftData = vm.bakLeftData1;
		},
		setYesterDay: function(data3) {
			var options = {},vm=this;
			if(data3.successFlg) {
				 _.map(data3.obj&&data3.obj.VIEW_14_0012||[],function(item,index){
					if(vm.cityVal=="0"){//上饶市
						options =  data3.obj.VIEW_14_0012[0];
					}else if(item.firstColumn==vm.city){
						options = item;
					}
				})
			}
			if(options){
				this.setFormater(options);
				this.yesterdayData = options;
			}
		},
		setLeftChart1: function(data) {
			var options = JSON.parse(data);
            options = leftChart1(options);
            this.leftData1 = options;
		},
		setLeftChart2: function(data) {
			var options = JSON.parse(data);
			this.leftData2_legend = toThousands((Number(options.series[0].data[0].value)+Number(options.series[0].data[1].value))/10000)
            options = leftChart2(options);
            this.leftData2 = options;
		},
		setLeftChart3: function(data) {
			var options = JSON.parse(data);
            options = leftChart3(options);
            this.leftData3 = options;
		},
		setMapData: function(data3) {
			// debugger
			var optionData = [];
			_.map(data3.obj&&data3.obj.VIEW_22_0004||[], function(item) {
				if(item.firstColumn != "合计") {
					optionData.push({
						name: item.town,
						value: parseInt(item.HC_22_1001)
					})
				}
			})
			if(optionData.length>0){
				var options = optionData;
				this.mapData = {
					data: options,
					index: this.lineHeightIndex
				};
				this.hasMapData = true;
			}else{
				this.hasMapData = false;
			}
		},
		setRightChart1: function(data8) {
			var options = null;
			var options = data8.successFlg?data8.obj.viewInfos&&JSON.parse(data8.obj.viewInfos[0].options[0].option):{};
			if(options&&options.series && options.series[0].data && options.series[1].data && options.series[2].data && options.series[3].data){
				options = rightChart1DataFormat(options);
				this.rightChart1 = options
				this.hasData4 = true;
				$(".right1 .contentBox3").removeClass("div-menzhenfenleibei");
			}else{
				this.hasData4 = false;
				$(".right1 .contentBox3").addClass("div-menzhenfenleibei");
			}
		},
		setRightChart2: function(data9) {
			var options = null;
			var options = data9.successFlg?data9.obj.viewInfos&&JSON.parse(data9.obj.viewInfos[0].options[0].option):{};
			if(options&&options.series && options.series[0].data && options.series[1].data){
				options = rightChart2DataFormat(options);
				this.rightChart2 = options
				this.hasData6 = true;
				$(".right2 .contentBox3").removeClass("div-menzhenfenleibei");
			}else{
				this.hasData6 = false;
				$(".right2 .contentBox3").addClass("div-menzhenfenleibei");
			}
		},
		setTable1: function(data4) {
			var resData = [];
			var data = data4.successFlg?data4.obj.VIEW_14_0013:[];
			_.map(data, function(item, index) {
				if(item.firstColumn != "合计" && item.month) {
					item.month = parseInt(item.month.substring(5, 7))+"月";
					resData.push(item)
				}
			})
			if(resData.length==0){
				this.hasData3 = false;
			}else{
				this.hasData3 = true;
				this.tableData1 = resData
			}
		},
		setTable2: function(data5) {
			var resData = [];
			var data = data5.successFlg?data5.obj.VIEW_14_0014:[];
			_.map(data, function(item, index) {
				if(item.firstColumn != "合计" && item.month) {
					item.month = parseInt(item.month.substring(5, 7))+"月";
					resData.push(item)
				}
			})
			if(resData.length==0){
				this.hasData5 = false;
			}else{
				this.hasData5 = true;
				this.tableData2 = resData
			}
		},
		setCity(item) {
			this.city = item.name;
		},
		setTimeStr(v) {
			this.timeType = v;
			this.timeType == 1?this.leftData=this.bakLeftData1:this.leftData=this.bakLeftData2;
		},
		setFormater: function(obj) {
			for(var c in obj) {
				if(obj[c].toString().indexOf(",") == -1){//不存在,,说明要格式化
					var re = /^[0-9]+.?[0-9]*/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/ 
					if (!re.test(obj[c])) { //不是数字,则不格式化
						continue;
					} 
					if(obj[c]>100000){
						obj[c] = (obj[c]/10000).toFixed(2)+"万"
					}else{
						obj[c] = toThousands(obj[c]);
					}
				}
			}
			return obj;
		},
		newObj: function(obj) {
			return JSON.parse(JSON.stringify(obj))
		},
		clickMap: function(res) {
			this.city = res.name;
		},
		skipClick: function() {
			console.log(222)
			this.skipShow == 0 ? this.skipShow = 1 : this.skipShow = 0
		}
	},
	watch: {
		city: function(value) {
			var that = this;
			that.lineHeightIndex = value;
			this.initData();
		}
	}
});
//数字格式化
function toThousands(str) {
	if(!str) return
	str = parseInt(str);
	if(typeof(str) == 'number') str = str.toString()
	var newStr = "";
	var count = 0;
	if(str.indexOf(".") == -1) {
		for(var i = str.length - 1; i >= 0; i--) {
			if(count % 3 == 0 && count != 0) {
				newStr = str.charAt(i) + "," + newStr;
			} else {
				newStr = str.charAt(i) + newStr;
			}
			count++;
		}
		str = newStr;
	} else {
		for(var i = str.indexOf(".") - 1; i >= 0; i--) {
			if(count % 3 == 0 && count != 0) {
				newStr = str.charAt(i) + "," + newStr;
			} else {
				newStr = str.charAt(i) + newStr; //逐个字符相接起来
			}
			count++;
		}
		str = newStr + (str + "00").substr((str + "00").indexOf("."), 3);
	}
	return str;
}

+ 217 - 0
page/bigData/js/insuranceCharts.js

@ -0,0 +1,217 @@
var leftChart1 = function(options){
    var series0data = options.series[0].data  || [];
    var xAxisData = options.xAxis[0].data;   
    var option = {
        "title": {
            "text": "医保支出费用月趋势",
            "x": "center",
            "textStyle": {
                color: ['#b5e1fc']
            },
            "padding": [15, 0, 0, 0]
        },
        "tooltip": {
            "trigger": "axis"
        },
        grid: {
            top: 80,
            bottom: 30,
            left: 80
        },
        "yAxis": [{
            "type": "value",
            "name": "元",
            axisPointer: {
                type: 'shadow'
            },
            axisTick: {
                // show: false
            },
            axisLine: {
                lineStyle: {
                    color: '#095f8e'
                }
            },
            axisLabel: {
                color: '#b5e1fc'
            },
            splitLine: {
                lineStyle:{
                    color:'#004b7a'
                },
                show:true  // false不显示坐标轴刻度
            }
        }],
        "xAxis": [{
            "type": "category",
            
            axisPointer: {
                type: 'shadow'
            },
            axisTick: {
                // show: false
            },
            axisLine: {
                lineStyle: {
                    color: '#004b7a'
                }
            },
            axisLabel: {
                color: '#b5e1fc'
            },
            nameTextStyle: {
                color: '#b5e1fc'
            },
            "data": xAxisData,
        }],
        "series": [{
            "smooth": true,
            "name": "区县分布",
            "type": "line",
            barWidth: 20,
            "label": {
                show: false,
                position: "right"
            },
            "itemStyle": {
                "normal": {
                    "lineStyle": {
                        "shadowColor": "rgba(0,0,0,0.4)"
                    },
                    barBorderRadius: [0, 8, 8, 0],
                    color: '#03fa6c'
                }
            },
            "data":  series0data
        }, ]
    }
    return option
},
leftChart2 = function(options){
    var title = options.title.text;
    var data = options.series[0].data;
    var legend = data.map(function(item){
        return item.name;
    })
    var option =  {
        "title": {
            "text": title,
            "x": "center",
            "textStyle": {
                color: ['#b5e1fc']
            },
            "padding": [15, 0, 0, 0]
        },
        "tooltip": {
            "trigger": "item"
        },
        legend: {
            orient: 'vertical',
            // x: 'right',
            data:legend,
            right: '45%',
            bottom: '50%',
            textStyle: {
                color: ['#b5e1fc']
            }
        },
        "series": [{
            "center": ["50%", "50%"],
            "radius": ['45%', '55%'],
            "name": "",
            "type": "pie",
            "itemStyle": {
                "normal": {
                    "label": {
                        "show": false
                    },
                    "labelLine": {
                        "show": false
                    }
                }
            },
            "data": data
        }],
        color : ["#00e6f3","#ff616f","#ff616f","#0fa5f2","#00e6f3"]
    }
    return option
},
leftChart3 = function(options){
    var title = options.title.text;
    var xAxisData = options.xAxis[0].data;
    var series0data = options.series[0].data  || [];
    var option = {
        "title": {
            "text": title,
            "x": "center",
            textStyle: {
                color: '#b5e1fc',
                fontSize: 16,
                fontWeight: 'bold'
            },
            "padding": [17, 0, 0, 0]
        },
        "grid": {
            top: '90',
            left: '70',
            bottom:'25',
            right:'40'
        },
        xAxis: [{
            type: 'category',
            "data": xAxisData,
            axisPointer: {
                type: 'shadow'
            },
            axisTick: {
                show: false
            },
            axisLine: {
                lineStyle: {
                    color: '#095f8e'
                }
            },
            axisLabel: {
                color: '#b5e1fc'
            }
        }],
        yAxis: [{
                type: 'value',
                name: '元',
                nameTextStyle: {
                    color: '#b5e1fc' // 坐标轴名称颜色
                },
                splitLine: {
                    show: false
                },
                axisLine: {
                    lineStyle: {
                        color: '#095f8e'
                    }
                },
                axisLabel: {
                    color: '#b5e1fc'
                }
            }
        ],
        series: [{
                name: '元',
                type: 'bar',
                "data":series0data,
                barWidth: 20,
                label: {
                    normal: {
                        show: true,
                        position: 'top', // 在柱状图上方显示
                        color: '#fff' // 柱状图上方显示的数值颜色
                    }
                },
                itemStyle: {
                    barBorderRadius: [8, 8, 0, 0],
                    color: '#00e6f3'
                }
            }
        ]
    }
    return option
}