美文网首页
echarts tab分

echarts tab分

作者: 糖醋里脊120625 | 来源:发表于2020-06-24 17:10 被阅读0次
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=320, user-scalable=no, initial-scale=1.0, maximum-scale=1.3, minimum-scale=1.0">
            <!-- 启用360浏览器的极速模式(webkit) -->
            <meta name="renderer" content="webkit">
            <!-- 避免IE使用兼容模式 -->
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
            <meta name="HandheldFriendly" content="true">
            <!-- 微软的老式浏览器 -->
            <meta name="MobileOptimized" content="320">
            <!-- uc强制竖屏 -->
            <meta name="screen-orientation" content="portrait">
            <!-- QQ强制竖屏 -->
            <meta name="x5-orientation" content="portrait">
            <!-- UC强制全屏 -->
            <meta name="full-screen" content="yes">
            <!-- QQ强制全屏 -->
            <meta name="x5-fullscreen" content="true">
            <!-- UC应用模式 -->
            <meta name="browsermode" content="application">
            <!-- QQ应用模式 -->
            <meta name="x5-page-mode" content="app">
            <!--https请求http-->
            <!--<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">-->
            <title>资产统计</title>
            <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@2.0/lib/index.css">
            <link rel="stylesheet" href="./css/public.css" />
            <link rel="stylesheet" href="./css/same.css" />
            <link rel="stylesheet" href="./css/index.css" />
    
    
    
    
            <script src="js/vue.min.js"></script>
            <script src="https://cdn.jsdelivr.net/npm/vant@2.0/lib/vant.min.js"></script>
            <script src="https://unpkg.com/vue-resource@1.5.1/dist/vue-resource.js"></script>
            
            
            <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
            <script src="https://www.html5tricks.com/demo/echarts-html5-canvas-map/js/china.js"></script>
            <script src="https://cdn.jsdelivr.net/npm/v-charts/lib/index.min.js"></script>
        </head>
        <body>
            <div id="app">
                <div class="pubtab">
                    <div class="tabitem">
                        <a :href="'jobsubmission.html?viewtoken='+viewtoken">
                            <img src="img/tab1.png" />
                            <span>派工统计</span>
                        </a>
                    </div>
                    <div class="tabitem">
                        <a :href="'guarantee.html?viewtoken='+viewtoken">
                            <img src="img/tab2.png" />
                            <span>保障统计</span>
                        </a>
                    </div>
                    <div class="tabitem actitem">
                        <a :href="'assets.html?viewtoken='+viewtoken">
                            <img src="img/tab3.png" />
                            <span>资产统计</span>
                        </a>
                    </div>
                    <div class="tabitem">
                        <a :href="'routeline.html?viewtoken='+viewtoken">
                            <img src="img/tab4.png" />
                            <span>线路统计</span>
                        </a>
                    </div>
                </div>
    
                <div class="threemain">
                    <!-- tab切换 -->
                    <div class="threeicon">
                        <div class="threetab">
                            <div class="threeitem" @click="itemclick(1)" :class="{'activeon':isActive==1}">
                                <span>服务资产</span>
                                <div></div>
                            </div>
                            <div class="threeitem" @click="itemclick(2)" :class="{'activeon':isActive==2}">
                                <span>代管备件</span>
                                <div></div>
                            </div>
                        </div>
                    </div>
                    <!-- 第一个地图 -->
                    <div class="threedraw">
                        <h4 v-show="isActive==1">{{texttitle1}}</h4> 
                        <!-- <span v-show="isActive==1">{{tetxtime1}}</span> -->
                        
                        <h4 v-show="isActive==2">{{texttitle2}}</h4>
                        <!-- <span v-show="isActive==2">{{tetxtime2}}</span> -->
                        <!--中国地图两个 -->
                        <div class="PieAssetL" ref="pieEcharts">
                            <div v-show="isActive==1" class="assetsall" id="assetsall"></div>
                            <div v-show="isActive==2" class="chinesethree" id="chinesethree"></div>
                        </div>
                        
                        <div class="cenall" v-show="isActive==1">
                            <span class="censusitem" style="color:#005FBE;background: #E9F3FD;">报障:{{collally.reportCount}}单</span>
                            <span class="censusitem" style="color:#009AB0;background: #DDF3F5;">服务中:{{collally.serviceCount}}单</span>
                            <span class="censusitem" style="color:#00B18D;background: #E7F5F3;">已完成:{{collally.finishCount}}单</span>
                        </div>
                    </div>
                    
                    <!-- 第一个显示环形图 -->
                    <div class="drawring" v-show="isActive==1">
                        <div><div class="ringstyleall" id="ringstyleall"></div></div>
                    </div>
                    <!-- 第二个显示记录 -->
                    <div class="remindtwo" v-show="isActive==2">
                        <div class="remindall">
                            <div class="remindtitle"><span>设备类型</span><span>设备数量</span></div>
                            <div 
                                v-for="(item,index) in viewequipmentdata" 
                                :class="'itemnum'+index"
                            >
                                <span>{{item.name}}</span><span>{{item.value}}</span>
                            </div>
                        </div>
                    </div>
                    
                    
                    <!-- 第二个显示环形图 -->
                    <div class="drawtwo" v-show="isActive==2">
                        <div class="titeone" v-show="isActive==2">设备状态</div>
                        <div ><div v-show="isActive==2" class="equipment" id="equipment"></div></div>
                        <div class="titeone" v-show="isActive==2">库存状态</div>
                        <div><div v-show="isActive==2" class="stockpart" id="stockpartid"></div></div>
                    </div>
                    
                    
                </div>
        </body>
        <script>
            var doc = document,
                rootEl = doc.documentElement;
            var app = new Vue({
                el: "#app",
                data() { 
                    return {
                        viewequipmentdata:[],
                        collally:{},
                        isActive: 1,
                        texttitle1: '',
                        texttitle2: '',
                        list: [],
                        viewtoken:"",
                        api: "http://test.it188.com/client-service/app/",
                        img: "",
                    }
                },
                methods: {
                    itemclick(itemval) {
                        this.isActive = itemval;
                        if(itemval==1){
                        }else{
                        }
                    },
                    //环形图
                    drawscenering(viewceedata){
                        var sumData = [
                            {name:'正常',value:viewceedata.normalCount},
                            {name:'故障',value:viewceedata.faultCount},
                            {name:'报废',value:viewceedata.scrapCount},
                            {name:'已取消',value:viewceedata.cancelCount},
                            {name:'已过保',value:viewceedata.outCount},
                            ];
                        let dataName = [];
                        let total = 0;
                        sumData.forEach((res) => {
                            dataName.push(res.name);
                            total += parseFloat(res.value);
                        });
                        var partsceneid = document.getElementById('ringstyleall');
                        var viewringscene = echarts.init(partsceneid);
                        option = {
                            tooltip: { //提示框,可以在全局也可以在
                                show: true,
                                trigger: 'item', //提示框的样式
                                formatter: "{a} <br/>{b}: {c} ({d}%)",
                                color: '#000', //提示框的背景色
                                textStyle: { //提示的字体样式
                                    color: "white",
                                }
                            },
                            legend: { //图例
                                orient: 'horizontal',
                                x: 'center',
                                y: 'bottom',
                                icon: 'circle',
                                data: ['正常', '故障', '报废', '已取消', '已过保'],
                                textStyle: { //图例文字的样式
                                    color: '#333', //文字颜色
                                    fontSize: 12 //文字大小
                                }
                            },
                            series: [{
                                name: '访问来源',
                                type: 'pie', //环形图的type和饼图相同
                                radius: ['30%', '60%'], //饼图的半径,第一个为内半径,第二个为外半径
                                center: ['50%', '45%'],
                                avoidLabelOverlap: false,
                                color: ['#FF7171', '#3682FF', '#FFB021', '#13AF7A', '#756DE2'],
                                label: {
                                    normal: { //正常的样式
                                        show: true,
                                        position: 'left',
                                        formatter: '{b} : {c}'
                                    },
                                    emphasis: { //选中时候的样式
                                        show: true,
                                        textStyle: {
                                            fontSize: '20',
                                            fontWeight: 'bold'
                                        }
                                    }
                                }, //提示文字
                                labelLine: {
                                    normal: {
                                        show: true,
    
                                    }
                                },
                                data: sumData
                            }]
                        };
                        viewringscene.setOption(option);
                    },
                    //二个环形图
                    drawequipmap(seibeidata){
                        var sumData = [
                            {name:'正常',value:seibeidata.normalCount},
                            {name:'故障',value:seibeidata.faultCount},
                            {name:'报废',value:seibeidata.scrapCount},
                            {name:'已取消',value:seibeidata.cancelCount},
                            {name:'已过保',value:seibeidata.outCount},
                        ];
                        var partsceneid = document.getElementById('equipment');
                        partsceneid.style.width = this.$refs.pieEcharts.offsetWidth + "px";
                        var viewringscene = echarts.init(partsceneid);
                        
                        option = {
                            tooltip: { //提示框,可以在全局也可以在
                                show: true,
                                trigger: 'item', //提示框的样式
                                formatter: "{a} <br/>{b}: {c} ({d}%)",
                                color: '#000', //提示框的背景色
                                textStyle: { //提示的字体样式
                                    color: "white",
                                }
                            },
                            legend: { //图例
                                orient: 'horizontal',
                                x: 'center',
                                y: 'bottom',
                                icon: 'circle',
                                data: ['正常', '故障', '报废', '已取消', '已过保'],
                                textStyle: { //图例文字的样式
                                    color: '#333', //文字颜色
                                    fontSize: 12 //文字大小
                                }
                            },
                            series: [{
                                name: '设备状态',
                                type: 'pie', //环形图的type和饼图相同
                                radius: ['30%', '60%'], //饼图的半径,第一个为内半径,第二个为外半径
                                center: ['50%', '45%'],
                                avoidLabelOverlap: false,
                                color: ['#13AF7A', '#FFB021', '#3682FF', '#FF7171', '#756DE2'],
                                label: {
                                    normal: { //正常的样式
                                        show: true,
                                        position: 'left',
                                        formatter: '{b} : {c}'
                                    },
                                    emphasis: { //选中时候的样式
                                        show: true,
                                        textStyle: {
                                            fontSize: '20',
                                            fontWeight: 'bold'
                                        }
                                    }
                                }, //提示文字
                                labelLine: {
                                    normal: {
                                        show: true,
                                        
                                    }
                                },
                                data: sumData
                            }]
                        };
                        viewringscene.setOption(option);
                    },
                    drawstockpart(optionion){
                        var sumData = [
                            {name:'空闲中',value:optionion.freeCount},
                            {name:'已留用',value:optionion.retentionCount},
                            {name:'使用中',value:optionion.useCount},
                            {name:'已锁定',value:optionion.lockCount},
                        ];
                        var partsceneid = document.getElementById('stockpartid');
                        partsceneid.style.width = this.$refs.pieEcharts.offsetWidth + "px";
                        var viewringscene = echarts.init(partsceneid);
                        
                        option = {
                            tooltip: { //提示框,可以在全局也可以在
                                show: true,
                                trigger: 'item', //提示框的样式
                                formatter: "{a} <br/>{b}: {c} ({d}%)",
                                color: '#000', //提示框的背景色
                                textStyle: { //提示的字体样式
                                    color: "white",
                                }
                            },
                            legend: { //图例
                                orient: 'horizontal',
                                x: 'center',
                                y: 'bottom',
                                icon: 'circle',
                                data: ['空闲中', '已留用', '使用中', '已锁定'],
                                textStyle: { //图例文字的样式
                                    color: '#333', //文字颜色
                                    fontSize: 12 //文字大小
                                }
                            },
                            series: [{
                                name: '库存状态',
                                type: 'pie', //环形图的type和饼图相同
                                radius: ['30%', '60%'], //饼图的半径,第一个为内半径,第二个为外半径
                                center: ['50%', '45%'],
                                avoidLabelOverlap: false,
                                color: ['#13AF7A', '#756DE2', '#3682FF', '#FFB021'],
                                label: {
                                    normal: { //正常的样式
                                        show: true,
                                        position: 'left',
                                        formatter: '{b} : {c}'
                                    },
                                    emphasis: { //选中时候的样式
                                        show: true,
                                        textStyle: {
                                            fontSize: '20',
                                            fontWeight: 'bold'
                                        }
                                    }
                                }, //提示文字
                                labelLine: {
                                    normal: {
                                        show: true,
                    
                                    }
                                },
                                data: sumData
                            }]
                        };
                        viewringscene.setOption(option);
                    },
                    //第二个
                    drawmyMap(mycitydata) {
                        var moredata=[];
                        var newcitytwo = mycitydata.map((item,index)=>{
                            if(item.name.indexOf('市') !== -1){
                                item.name = item.name.substring(0, item.name.length - 1);
                            }if(item.name.indexOf('省') !== -1){
                                item.name = item.name.substring(0, item.name.length - 1);
                            }if(item.name.indexOf('自治区') !== -1){
                                item.name = item.name.substring(0, item.name.length - 3);
                            }
                            if(item.name.indexOf('港澳台') !== -1){
                                moredata = [{name:"香港",value:item.value},{name:"澳门",value:item.value},{name:"台湾",value:item.value}]
                            }
                          return item
                        })
                        newcitytwo = moredata.concat(newcitytwo)
                        
                        var myChartContainer = document.getElementById('chinesethree');
                        myChartContainer.style.width = this.$refs.pieEcharts.offsetWidth + "px";
                        var myChartChina = echarts.init(myChartContainer);
                        // 绘制图表
                        var optionMap = {
                            //color:['#CE131B','#ff6600','#808bc6'],
                            tooltip: {
                                trigger: 'item',
                                triggerOn: 'click',   //触发方式
                                enterable: true, // 鼠标可移入tooltip中
                                formatter:function (params) {
                                    var viewdata =params.data;
                                    var html = '';
                                    html+=
                                    '省份:'+viewdata.name+'<br>'+
                                    '资产:'+viewdata.value +'<br>'
                                    return html;
                                }
                            },
                            legend: {
                                orient: 'horizontal',
                                x: 'center',
                                y: 'bottom',
                                data: ['iphone3', 'iphone4', 'iphone5']
                            },
                            visualMap: {
                                show: true,
                                x: 'center',
                                y: 'bottom',
                                orient: "horizontal", //图例排列方向
                                splitList: [{
                                        start: 500,
                                        end: 1000
                                    },
                                    {
                                        start: 100,
                                        end: 500
                                    },
                                    {
                                        start: 50,
                                        end: 100
                                    },
                                    {
                                        start: 0,
                                        end: 50
                                    },
                                ],
                                color: ['#5475f5', '#9feaa5', '#85daef', '#74e2ca', ]
                            },
                            selectedMode: 'single',
                            series: [{
                                name: '数据',
                                type: 'map',
                                mapType: 'china',
                                roam: true,
                                showLegendSymbol: false,
                                type: 'map',
                                mapType: 'china',
                                aspectScale: 0.9, //长宽比
                                zoom: 1.4,
                                roam: false,
                                label: {
                                    normal: {
                                        show: false //省份名称  
                                    },
                                    emphasis: {
                                        show: true
                                    }
                                },
                                data: newcitytwo //数据
                            }]
                        }
                        myChartChina.setOption(optionMap);
                        window.onresize = function() {
                            resizeMyChartContainer();
                            myChartChina.resize();
                        }
                    },
                    drawassetmap(mycitydata) {
                        var moredata=[];
                        var newcitydata = mycitydata.map((item,index)=>{
                            if(item.name.indexOf('市') !== -1){
                                item.name = item.name.substring(0, item.name.length - 1);
                            }if(item.name.indexOf('省') !== -1){
                                item.name = item.name.substring(0, item.name.length - 1);
                            }if(item.name.indexOf('自治区') !== -1){
                                item.name = item.name.substring(0, item.name.length - 3);
                            }
                            if(item.name.indexOf('港澳台') !== -1){
                                moredata = [{name:"香港",value:item.value},{name:"澳门",value:item.value},{name:"台湾",value:item.value}]
                            }
                          return item
                        })
                        newcitydata = moredata.concat(newcitydata)
                        var myChartContainer = document.getElementById('assetsall');
                        myChartContainer.style.width = this.$refs.pieEcharts.offsetWidth + "px";
                        var myChartChina = echarts.init(myChartContainer);
                        // 绘制图表
                        var optionMap = {
                            //color:['#CE131B','#ff6600','#808bc6'],
                            tooltip: {
                                trigger: 'item',
                                triggerOn: 'click',   //触发方式
                                enterable: true, // 鼠标可移入tooltip中
                                formatter:function (params) {
                                    var viewdata =params.data;
                                    var html = '';
                                    html+=
                                    '省份:'+viewdata.name+'<br>'+
                                    '资产:'+viewdata.value +'<br>'
                                    return html;
                                }
                            },
                            legend: {
                                orient: 'horizontal',
                                x: 'center',
                                y: 'bottom',
                                data: ['iphone3', 'iphone4', 'iphone5']
                            },
                            visualMap: {
                                
                                show: true,
                                x: 'center',
                                y: 'bottom',
                                orient: "horizontal", //图例排列方向
                                splitList: [{
                                        start: 500,
                                        end: 1000
                                    },
                                    {
                                        start: 100,
                                        end: 500
                                    },
                                    {
                                        start: 50,
                                        end: 100
                                    },
                                    {
                                        start: 0,
                                        end: 50
                                    },
                                ],
                                color: ['#5475f5', '#9feaa5', '#85daef', '#74e2ca', ]
                            },
                            selectedMode: 'single',
                            series: [{
                                name: '数据',
                                type: 'map',
                                mapType: 'china',
                                roam: true,
                                showLegendSymbol: false,
                                type: 'map',
                                mapType: 'china',
                                aspectScale: 0.9, //长宽比
                                zoom: 1.4,
                                roam: false,
                                label: {
                                    normal: {
                                        show: false //省份名称  
                                    },
                                    emphasis: {
                                        show: true
                                    }
                                },
                                data: newcitydata //数据
                            }]
                        }
                        myChartChina.setOption(optionMap);
                        window.onresize = function() {
                            resizeMyChartContainer();
                            myChartChina.resize();
                        }
                    },
                    
                    gettwomoredata(){
                        this.$http.get(
                            ''+ this.api + 'ticket/statistics/selectStInventoryItemCountByProvince', 
                            {headers: {'x-auth-token':this.viewtoken}},
                            {emulateJSON: true}
                        )
                        .then(function(res) {
                            if (res.body.code == 200) {
                                this.viewequipmentdata=res.body.data.resultList;
                                this.drawequipmap(res.body.data);
                                this.drawstockpart(res.body.data);
                            }else{
                                
                            }
                        }, function(err) {
                            console.log(err);
                        });
                    },
                    gettwolist(){
                        //第二个地图地图加载的数据
                        const toast = this.$toast.loading({
                          duration: 0, // 持续展示 toast
                          forbidClick: true,
                          message: '加载数据中...',
                        });
                        this.$http.get(
                            ''+ this.api + '/ticket/statistics/selectStInventoryItemByDistrict', 
                            {headers: {'x-auth-token':this.viewtoken}},
                            {emulateJSON: true}
                        )
                        .then(function(res) {
                            if (res.body.code == 200) {
                                toast.clear();
                                this.texttitle2= "全国代管备件总数:"+res.body.data.inventoryCount;
                                this.drawmyMap(res.body.data.inventoryInMap);
                            }
                        }, function(err) {
                            console.log(err);
                        });
                    },
                    getlist() {
                        //地图加载的数据
                        const toast = this.$toast.loading({
                          duration: 0, // 持续展示 toast
                          forbidClick: true,
                          message: '加载数据中...',
                        });
                        this.$http.get(
                            ''+ this.api + '/ticket/statistics/selectMasMssCountByDistrict', 
                            {headers: {'x-auth-token':this.viewtoken}},
                            {emulateJSON: true}
                        )
                        .then(function(res) {
                            if (res.body.code == 200) {
                                toast.clear();
                                this.texttitle1= "全国资产总数:"+res.body.data.total;
                                this.drawassetmap(res.body.data.rsList);
                            }
                        }, function(err) {
                            console.log(err);
                        });
                        //地图下面统计的数据
                        this.$http.get(
                            ''+ this.api + '/ticket/statistics/selectMasMssCountByProvince', 
                            {headers: {'x-auth-token':this.viewtoken}},
                            {emulateJSON: true}
                        )
                        .then(function(res) {
                            if (res.body.code == 200) {
                                //console.log(res.body.data)
                                this.collally = res.body.data;
                                this.drawscenering(res.body.data)
                            }
                        }, function(err) {
                            console.log(err);
                        });
                    }
                    
                    
                },
                created() {
                    
                    //处理链接拼接出的token
                    //  http://127.0.0.1:8848/newone/index.html?viewtoken=934cd108-74fc-45c8-a393-6f1a9aea2584
                    var params = [], h;
                    var hash = window.location.href.slice(window.location.href.indexOf("?") + 1).split('&');
                    for (var i = 0; i < hash.length; i++) {
                        h = hash[i].split("=");
                        params.push(h[0]);
                        params[h[0]] = h[1];
                    }
                    this.viewtoken = params.viewtoken;
                    //this.viewtoken = '934cd108-74fc-45c8-a393-6f1a9aea2584';
                    //this.viewtoken ='ce474455-d6bf-450d-aabd-21dc0d84dfdc';
                },
                mounted(e) {
                    this.getlist();
                    this.gettwolist();
                    this.gettwomoredata();
                    
                    /* add elements */
                    function xiqiu(productId, totalNum) {
    
                    }
    
                }
            });
        </script>
    </html>
    
    

    相关文章

      网友评论

          本文标题:echarts tab分

          本文链接:https://www.haomeiwen.com/subject/hhxdfktx.html