Browse Source

耕地保护样式

zpf 1 năm trước cách đây
mục cha
commit
29a086cddf
2 tập tin đã thay đổi với 317 bổ sung22 xóa
  1. 316 21
      src/views/cockpitNew/gdbh.vue
  2. 1 1
      src/views/cockpitNew/tdsc.vue

+ 316 - 21
src/views/cockpitNew/gdbh.vue

@@ -1,10 +1,10 @@
 <template>
     <div class="gdbh">
         <div class="box">
-            <div class="title">建设用地规划指标</div>
+            <div class="title">耕地保护</div>
             <div class="centent">
                 <div class="item">
-                    <p>
+                    <p class="text">
                         <span>·</span>
                         地保有量
                         <span>354.56</span>
@@ -18,10 +18,21 @@
                     </p>
                 </div>
                 <div class="item">
-
+                    <p class="text">
+                        <span>·</span>
+                        地保有量
+                        <span>354.56</span>
+                        KM2
+                    </p>
+                    <p>
+                        <span>·</span>
+                        永久基本农田
+                        <span>354.56</span>
+                        KM2
+                    </p>
                 </div>
             </div>
-            <div id="echart">
+            <div id="gdbh_echart">
 
             </div>
         </div>
@@ -41,11 +52,286 @@ export default {
     //监控data中的数据变化
     watch: {},
     //方法集合
-    methods: {},
+
     beforeCreate() { }, //生命周期 - 创建之前
     created() { }, //生命周期 - 创建完成(可以访问当前this实例)
     beforeMount() { }, //生命周期 - 挂载之前
-    mounted() { }, //生命周期 - 挂在完成
+    methods: {
+        getRenKou() {
+            var dom = document.getElementById('gdbh_echart');
+            var myChart = window.echarts.init(dom);
+
+            let data = [
+                { name: '水田', value: 30 },
+                { name: '水浇地', value: 40 },
+                { name: '旱地', value: 50 },
+                // { name: '住宿', value: 24 },
+            ]
+            for (var i = 0; i < data.length; i++) {
+                for (var j = i + 1; j < data.length; j++) {
+                    //如果第一个比第二个大,就交换他们两个位置
+                    if (data[i].value < data[j].value) {
+                        var temp = data[i];
+                        data[i] = data[j];
+                        data[j] = temp;
+                    }
+                }
+            }
+            let pm = []
+            for (var i = 0; i < data.length; i++) {
+                let k = i + 1
+                pm.push('NO.' + k)
+            }
+            data.forEach(function (value, index, obj) {
+                value.pm = pm[index]
+            })
+            console.log('ssss', data)
+            const colors = ['rgb(96,149,239)', 'rgb(239,157,147)', 'rgb(232,191,72)', 'rgb(189,147,227)']
+            const chartData = data.map((item, index) => ({
+                value: item.value,
+                name: item.name,
+                pm: item.pm,
+                itemStyle: {
+                    shadowBlur: 20,
+                    shadowColor: `#${(((index + 1) % 7) + 10) * 100 + 99}`,
+                    shadowOffsetx: 25,
+                    shadowOffsety: 20,
+                    color: colors[index % colors.length],
+                },
+            }))
+            const sum = chartData.reduce((per, cur) => per + cur.value, 0)
+            const gap = (1 * sum) / 100
+            const pieData1 = []
+            const gapData = {
+                name: '',
+                value: gap,
+                itemStyle: {
+                    color: 'transparent',
+                },
+            }
+            let totalRatio = []
+            // let totalPercent = 0
+            for (let i = 0; i < chartData.length; i++) {
+                // 计算占比
+                // let ratio = (chartData[i].value / sum).toFixed(2) * 100;
+                // 累加占比到总占比中
+                // totalRatio.push(ratio*100)
+                let ratio = (chartData[i].value / sum) * 100
+                let percent = Math.round(ratio)
+                totalRatio.push(percent)
+                // totalPercent += percent
+                // 第一圈数据
+                pieData1.push({
+                    ...chartData[i],
+                })
+                pieData1.push(gapData)
+            }
+            // 补充最后一项占比百分比保证之和为100%
+            // totalRatio[0].value += 100 - totalPercent
+            let option = {
+                backgroundColor: 'rgba(1,1,1,0)',
+                title: {
+                    show: true,
+                    // text: sum
+                    text: '收储来源',
+                    // subtext: '收储来源',
+                    x: '49%',
+                    y: '32%',
+                    itemGap: 6,
+                    textStyle: {
+                        color: '#fff',
+                        fontSize: 11,
+                        fontWeight: '400',
+                        lineHeight: 8,
+                    },
+                    subtextStyle: {
+                        color: '#fff',
+                        fontSize: 8,
+                        fontWeight: '400',
+                        lineHeight: 8,
+                    },
+                    textAlign: 'center',
+                },
+
+                // 图例
+                legend: {
+                    show: true,
+                    orient: 'vertical',
+                    icon: 'rect',
+                    textStyle: {
+                        color: '#fff',
+                        fontSize: 10,
+                    },
+                    top: '80%',
+                    left: '5%',
+                    itemGap: 14,
+                    itemHeight: 14,
+                    itemWidth: 14,
+                    data: chartData,
+                    formatter: function (name) {
+                        const selectedItem = chartData.find((item) => `${item.name}`.includes(`${name}`));
+                        // if (selectedItem) {
+                        //     const { value } = selectedItem;
+                        //     const { pm } = selectedItem;
+                        //     console.log('dddd', selectedItem)
+                        //     const p = ((value / sum) * 100).toFixed(2);
+                        //     const area = `${value}m²`;
+                        //     // console.log(`{icon|${pm}} {name|${name}}  {percent|${p}%} {area|${area}} `);
+
+                        //     return `{icon|${pm}} {name|${name}}  {percent|${p}%} {area|${area}} `;
+                        // } else {
+                        //     console.log(name);
+
+                        //     return name;
+                        // }
+
+                        if (selectedItem) {
+                            return name;
+
+                        }
+                    },
+                    textStyle: {
+                        rich: {
+                            icon: {
+                                color: colors
+                            },
+                            name: {
+                                color: '#fff'
+                            },
+                            percent: {
+                                color: '#fff'
+                            },
+                            area: {
+                                color: '#fff'
+                            }
+                        }
+                    }
+                },
+                series: [
+                    // 中间圆环
+                    {
+                        name: '',
+                        type: 'pie',
+                        roundCap: true,
+                        radius: ['36%', '52%'],
+                        center: ['50%', '35%'],
+                        data: pieData1,
+                        labelLine: {
+                            length: 8,
+                            length2: 16,
+                            lineStyle: {
+                                width: 1,
+                            },
+                        },
+                        label: {
+                            show: false,
+                            fontFamily: 'ysbth',
+                            position: 'outside',
+                            padding: [0, -4, 0, -4],
+                            formatter(params) {
+                                if (params.name === '') {
+                                    return ''
+                                }
+                                return `${params.percent.toFixed(0)}% `
+                            },
+                            color: '#fff',
+                            fontSize: '14px',
+                            lineHeight: 10,
+                        },
+                        emphasis: {
+                            // 鼠标移入时显示
+                            label: {
+                                show: true,
+                            },
+                        },
+                    },
+                    // 最里面圆环
+                    {
+                        type: 'pie',
+                        radius: ['28%', '30%'],
+                        center: ['50%', '35%'],
+                        animation: false,
+                        hoverAnimation: false,
+                        data: [
+                            {
+                                value: 100,
+                            },
+                        ],
+                        label: {
+                            show: false,
+                        },
+                        itemStyle: {
+                            color: '#3BC5EF',
+                        },
+                    },
+                    // 最里面圆环内的背景圆
+                    {
+                        name: '',
+                        type: 'pie',
+                        startAngle: 90,
+                        radius: '28%',
+                        animation: false,
+                        hoverAnimation: false,
+                        center: ['50%', '35%'],
+                        itemStyle: {
+                            labelLine: {
+                                show: false,
+                            },
+                            color: {
+                                type: 'radial',
+                                x: 0.5,
+                                y: 0.5,
+                                r: 1,
+                                colorStops: [
+                                    {
+                                        offset: 1,
+                                        color: 'rgba(50,171,241, 0)',
+                                    },
+                                    {
+                                        offset: 0.5,
+                                        color: 'rgba(50,171,241, .4)',
+                                    },
+                                    {
+                                        offset: 0,
+                                        color: 'rgba(55,70,130, 0)',
+                                    },
+                                ],
+                                global: false, // 缺省为 false
+                            },
+                            shadowBlur: 60,
+                        },
+                        data: [
+                            {
+                                value: 100,
+                            },
+                        ],
+                    },
+                    // 最外面的圆环
+                    {
+                        type: 'pie',
+                        color: ['#1a4a8c', 'rgba(0,0,0,0)', '#1a4a8c', 'rgba(0,0,0,0)'],
+                        radius: ['53%', '54%'],
+                        center: ['50%', '35%'],
+                        label: {
+                            show: false,
+                        },
+                        select: {
+                            display: false,
+                        },
+                        tooltip: {
+                            show: false,
+                        },
+                        data: totalRatio,
+                    },
+                ],
+            }
+
+            myChart.setOption(option);
+        },
+    },
+    mounted() {
+        this.getRenKou();
+    },
     beforeUpdate() { }, //生命周期 - 更新之前
     updated() { }, //生命周期 - 更新之后
     beforeDestroy() { }, //生命周期 - 销毁之前
@@ -100,32 +386,41 @@ export default {
     text-align: justify;
 }
 
-#echart {
-    width: 280px;
-    height: 230px;
+#gdbh_echart {
     width: 280px;
     height: 230px;
     position: relative;
-    left: -350px;
-    top: 59px;
+    left: 54%;
+    top: -83%;
 }
 
 .centent {
-    border: #00FFFF 1px solid;
+    // border: #00FFFF 1px solid;
     width: 280px;
     height: 185px;
     position: relative;
     left: 6%;
 }
 
-// .item {
-//     border: #00FFFF 1px solid;
-//     height: 40%;
-//     margin-bottom: 10%;
+.item {
+    // border: #00FFFF 1px solid;
+    height: 40%;
+    margin-bottom: 10%;
+    background-color: #283f6d;
+    text-align: left;
+    padding-left: 7%;
+    padding-top: 4%;
 
-//     background-color: rgba(40, 63, 109, 1)
-//      p {
-//         color: #fff;
-//     }
-// }
+    p {
+        font-size: 14px;
+        color: #fff;
+        margin-bottom: 4%;
+    }
+
+    span {
+        color: #00FFFF;
+        font-weight: 1000;
+
+    }
+}
 </style>

+ 1 - 1
src/views/cockpitNew/tdsc.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="tdsc">
-    <div class="title">建设用地规划指标</div>
+    <div class="title">土地收储</div>
     <div class="content">
       <div class="item">
         <div class="icon">