|
@@ -0,0 +1,1459 @@
|
|
|
+<template>
|
|
|
+ <div class="tdsy">
|
|
|
+ <div class="box1">
|
|
|
+ <div class="title">
|
|
|
+ <div>
|
|
|
+ <div class="icon"></div>
|
|
|
+ <span>土地供应</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="selectTab">
|
|
|
+ <el-select v-model="value" placeholder="请选择" :popper-append-to-body="false" @change="changeCharts">
|
|
|
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-show="stateOwnedOrcollective">
|
|
|
+ <div class="content">
|
|
|
+ <div id="rsyt_echart"></div>
|
|
|
+ <div class="content1">
|
|
|
+ <div class="icon_info"></div>
|
|
|
+ <div class="info_left">
|
|
|
+ <span>计划入市面积</span>
|
|
|
+ <span class="count">{{ jhNumber }}
|
|
|
+ <i style="font-style: normal">公顷</i>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="info_main">
|
|
|
+ <span>已入市面积</span>
|
|
|
+ <span class="count">{{ sjNumber }}
|
|
|
+ <i style="font-style: normal">公顷</i>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content2">
|
|
|
+ <div class="search">
|
|
|
+ <el-input v-model="input" placeholder="请输入内容">
|
|
|
+ <i slot="suffix" class="el-input__icon el-icon-search"></i></el-input>
|
|
|
+ </div>
|
|
|
+ <div class="infoLIst" v-if="jiDataInfo.length">
|
|
|
+ <div class="infoItem" v-for="(item, index) in jiDataInfo" :key="index">
|
|
|
+ <div class="itemIcon"></div>
|
|
|
+ <div class="itemCon">
|
|
|
+ <p>{{ item.xmmc }}</p>
|
|
|
+ <p>
|
|
|
+ <span>{{ item.yelx }}</span>
|
|
|
+ <span>{{ item.tdyt }}</span>
|
|
|
+ <span>{{ item.crnj }}公顷</span>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <div :class="item.yelx == '已出让' ? 'itemStatus1' : 'itemStatus2'"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoLIst1" v-else>暂无数据</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="list"></div>
|
|
|
+ </div>
|
|
|
+ <div v-show="!stateOwnedOrcollective">
|
|
|
+ <div id="across_echart"></div>
|
|
|
+ <div id="vertical_echart"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
|
|
|
+// 定义myCharts用于统计图自适应
|
|
|
+import { QueryOne, QueryList } from "../../api/cockpitNew";
|
|
|
+let myCharts;
|
|
|
+
|
|
|
+import { mapState } from "vuex";
|
|
|
+export default {
|
|
|
+ components: {},
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ stateOwnedOrcollective: false,
|
|
|
+ options: [
|
|
|
+ {
|
|
|
+ value: "国有建设用地",
|
|
|
+ label: "国有建设用地",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: "集体供应性土地",
|
|
|
+ label: "集体供应性土地",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ value: "国有建设用地",
|
|
|
+ input: "区",
|
|
|
+ jiDataInfo: [], //集体信息列表
|
|
|
+ option: {},
|
|
|
+ setInterValAl: null,
|
|
|
+ jhNumber: 0, //计划入市面积总数
|
|
|
+ sjNumber: 0, //实际入市面积总数
|
|
|
+ };
|
|
|
+ },
|
|
|
+ //监听属性 类似于data概念
|
|
|
+ computed: {
|
|
|
+ // // 映射 Vuex 中的状态到当前组件的计算属性
|
|
|
+ // ...mapState({
|
|
|
+ // id:state => state.regional_information.id,
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ //监控data中的数据变化
|
|
|
+ watch: {
|
|
|
+ "store.state.regional_information.id": {
|
|
|
+ //深度监听,可监听到对象、数组的变化
|
|
|
+ handler(val, oldVal) {
|
|
|
+ if (val !== oldVal) {
|
|
|
+ this.init_across_echart();//国有饼图
|
|
|
+ this.init_vertical_echart();//国有柱状统计图
|
|
|
+ this.init_rsyt_echart();//集体立体饼图
|
|
|
+ this.getInfo();//集体列表数据
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deep: true, //true 深度监听
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ //方法集合
|
|
|
+ beforeCreate() { }, //生命周期 - 创建之前
|
|
|
+ created() { }, //生命周期 - 创建完成(可以访问当前this实例)
|
|
|
+ beforeMount() { }, //生命周期 - 挂载之前
|
|
|
+ methods: {
|
|
|
+ async getInfo() {
|
|
|
+ let res = await QueryList({
|
|
|
+ val0: this.input,
|
|
|
+ jscType: "jsc_tdgy_jt_xx",
|
|
|
+ id: store.state.regional_information.id,
|
|
|
+ });
|
|
|
+ this.jiDataInfo = res.data
|
|
|
+ },
|
|
|
+ changeCharts(evt) {
|
|
|
+ this.value = evt;
|
|
|
+ this.stateOwnedOrcollective = !this.stateOwnedOrcollective;
|
|
|
+ if (this.stateOwnedOrcollective) {
|
|
|
+ this.init_rsyt_echart();
|
|
|
+ this.getInfo();
|
|
|
+ // 清楚定时器
|
|
|
+ clearInterval(this.setInterValAl);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ switchStateOwnedButton() {
|
|
|
+ this.stateOwnedOrcollective = !this.stateOwnedOrcollective;
|
|
|
+ },
|
|
|
+
|
|
|
+ async init_across_echart() {
|
|
|
+ var dom = document.getElementById("across_echart");
|
|
|
+ var myChart = window.echarts.init(dom);
|
|
|
+ let gyInfo = await QueryList({
|
|
|
+ jscType: "jsc_tdgy_gy_ztsh",
|
|
|
+ id: store.state.regional_information.id,
|
|
|
+ });
|
|
|
+ var dataList = [
|
|
|
+ {
|
|
|
+ value: gyInfo.data[0]["sj_cr_crmj"],
|
|
|
+ name: "已出让",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: gyInfo.data[0]["sj_hb_crmj"],
|
|
|
+ name: "已划拨",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: gyInfo.data[0]["ce_crmj"],
|
|
|
+ name: "未供应",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ var color2 = [
|
|
|
+ {
|
|
|
+ color: {
|
|
|
+ type: "linear",
|
|
|
+ x: 0,
|
|
|
+ y: 0,
|
|
|
+ x2: 1,
|
|
|
+ y2: 1,
|
|
|
+ colorStops: [
|
|
|
+ {
|
|
|
+ offset: 0,
|
|
|
+ color: "#FC8053",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ offset: 1,
|
|
|
+ color: "#F2CAA4",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ global: false,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ color: {
|
|
|
+ type: "linear",
|
|
|
+ x: 0,
|
|
|
+ y: 0,
|
|
|
+ x2: 1,
|
|
|
+ y2: 1,
|
|
|
+ colorStops: [
|
|
|
+ {
|
|
|
+ offset: 0,
|
|
|
+ color: "#6EDC8D ",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ offset: 1,
|
|
|
+ color: "#5BBD88",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ global: false,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ color: {
|
|
|
+ type: "linear",
|
|
|
+ x: 0,
|
|
|
+ y: 0,
|
|
|
+ x2: 1,
|
|
|
+ y2: 1,
|
|
|
+ colorStops: [
|
|
|
+ // {
|
|
|
+ // offset: 0,
|
|
|
+ // color: "#f888b1",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // offset: 1,
|
|
|
+ // color: "#fbe6ee",
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ offset: 0,
|
|
|
+ color: "#5583e7",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ offset: 1,
|
|
|
+ color: "#36dddb",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ global: false,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ var dataAll = 0;
|
|
|
+ dataList.forEach((item, index) => {
|
|
|
+ item.itemStyle = color2[index];
|
|
|
+ dataAll += item.value;
|
|
|
+ });
|
|
|
+
|
|
|
+ let option = {
|
|
|
+ backgroundColor: "rgba(0,0,0,0)",
|
|
|
+ legend: {
|
|
|
+ orient: "horizontal",
|
|
|
+ left: "center",
|
|
|
+ bottom: "1%",
|
|
|
+ // selectedMode: 'multiple',
|
|
|
+ padding: [0, 0, 0, 0], //调节legend的位置
|
|
|
+ data: ["类型", "已出让", "已划拨", "未供应"],
|
|
|
+ icon: "rect", // 这个字段控制形状 类型包括 circle,rect ,roundRect,triangle,diamond,pin,arrow,none
|
|
|
+ itemWidth: 12, // 设置宽度
|
|
|
+ itemHeight: 12, // 设置高度
|
|
|
+ itemGap: 10, // 设置间距
|
|
|
+ textStyle: {
|
|
|
+ //图例文字的样式
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ graphic: [
|
|
|
+ {
|
|
|
+ type: "group",
|
|
|
+ top: "middle",
|
|
|
+ left: "center",
|
|
|
+ id: "data",
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ type: "text",
|
|
|
+ id: "current",
|
|
|
+ top: 100,
|
|
|
+ style: {
|
|
|
+ text: dataAll || 0,
|
|
|
+ font: 'bolder 18px "Microsoft YaHei", sans-serif',
|
|
|
+ fill: "#64DAFF ",
|
|
|
+ textAlign: "center",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "text",
|
|
|
+ id: "all",
|
|
|
+ top: 80,
|
|
|
+ style: {
|
|
|
+ text: "计划供应",
|
|
|
+ font: 'bolder 14px "Microsoft YaHei", sans-serif',
|
|
|
+ fill: "#ECF6FF",
|
|
|
+ textAlign: "center",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "text",
|
|
|
+ id: "gq",
|
|
|
+ top: 120,
|
|
|
+ style: {
|
|
|
+ text: "公顷",
|
|
|
+ font: 'bolder 12px "Microsoft YaHei", sans-serif',
|
|
|
+ fill: "#4FABCF",
|
|
|
+ textAlign: "center",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "公顷",
|
|
|
+ type: "pie",
|
|
|
+ radius: ["40%", "70%"],
|
|
|
+ avoidLabelOverlap: false,
|
|
|
+ label: {
|
|
|
+ normal: {
|
|
|
+ show: false, //是否展示数据
|
|
|
+ position: "inner", // 数值显示在内部
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: 16,
|
|
|
+ fontWeight: 400,
|
|
|
+ formatter: (params) => {
|
|
|
+ return params.percent + "%";
|
|
|
+ },
|
|
|
+ rich: {},
|
|
|
+ },
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ label: {
|
|
|
+ show: true,
|
|
|
+ fontSize: "16",
|
|
|
+ fontWeight: "bold",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ labelLine: {
|
|
|
+ show: false,
|
|
|
+ // length: 48,
|
|
|
+ },
|
|
|
+ data: dataList,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+
|
|
|
+ myChart.setOption(option);
|
|
|
+ },
|
|
|
+ async init_vertical_echart() {
|
|
|
+ var dom = document.getElementById("vertical_echart");
|
|
|
+ myCharts = window.echarts.init(dom);
|
|
|
+ if (this.setInterValAl) {
|
|
|
+ // 清楚定时器
|
|
|
+ clearInterval(this.setInterValAl);
|
|
|
+ }
|
|
|
+ var jhgymj = []; //计划供应面积
|
|
|
+ var ygimj = []; //已供应面积
|
|
|
+ var jhgyxm = []; //计划供应项目
|
|
|
+ var wcgyxm = []; //完成供应项目
|
|
|
+ var allType = []; //所有统计类型名称
|
|
|
+ let gyPlan = await QueryList({
|
|
|
+ jscType: "jsc_tdgy_gy_yelx",
|
|
|
+ id: store.state.regional_information.id,
|
|
|
+ });
|
|
|
+ gyPlan.data.forEach((item) => {
|
|
|
+ allType.push(item.tdyt);
|
|
|
+ jhgymj.push(item.jh_crmj);
|
|
|
+ ygimj.push(item.sj_crmj);
|
|
|
+ jhgyxm.push(item.jh_xzqhdm_number);
|
|
|
+ wcgyxm.push(item.sj_xzqhdm_number);
|
|
|
+ });
|
|
|
+ // 统计图的滚动属性
|
|
|
+ const dataZoom = [
|
|
|
+ {
|
|
|
+ show: false,
|
|
|
+ height: 12,
|
|
|
+ xAxisIndex: [0],
|
|
|
+ bottom: "5%",
|
|
|
+ start: 0,
|
|
|
+ end: 30,
|
|
|
+ handleIcon:
|
|
|
+ "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z",
|
|
|
+ handleSize: "110%",
|
|
|
+ handleStyle: {
|
|
|
+ color: "#d3dee5",
|
|
|
+ },
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
+ },
|
|
|
+ borderColor: "#90979c",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ this.option = {
|
|
|
+ backgroundColor: "rgba(0,0,0,0)",
|
|
|
+ // backgroundColor: transparent,
|
|
|
+ color: ["rgba(81, 151, 214, 1)", "rgba(16, 67, 118, 1)"],
|
|
|
+ title: {},
|
|
|
+ legend: {
|
|
|
+ orient: "horizontal",
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ name: "计划供应面积",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "已供应面积",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "计划供应项目",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "完成供应项目",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ left: "17%",
|
|
|
+ top: "1%",
|
|
|
+ itemGap: 5, // 设置间距
|
|
|
+ textStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ fontSize: 12,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ // left: "2%",
|
|
|
+ // right: "4%",
|
|
|
+ // bottom: "10%",
|
|
|
+ // top: "16%",
|
|
|
+ // containLabel: true,
|
|
|
+ },
|
|
|
+ tooltip: {
|
|
|
+ trigger: "axis",
|
|
|
+ axisPointer: {
|
|
|
+ type: "shadow",
|
|
|
+ },
|
|
|
+ textStyle: {
|
|
|
+ align: "left",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ xAxis: [
|
|
|
+ {
|
|
|
+ type: "category",
|
|
|
+ // data: [
|
|
|
+ // "居住用地",
|
|
|
+ // "公共管理与公共服务用地",
|
|
|
+ // "商业服务业用地",
|
|
|
+ // "工矿用地",
|
|
|
+ // "仓储用地",
|
|
|
+ // // "工矿用地仓储用地",
|
|
|
+ // "交通运输用地",
|
|
|
+ // "公用设施用地",
|
|
|
+ // // "绿地与开敞空间用地特殊用地",
|
|
|
+ // "绿地与开敞空间用地",
|
|
|
+ // "特殊用地",
|
|
|
+ // "留白用地"
|
|
|
+ // ],
|
|
|
+ data: allType,
|
|
|
+ axisTick: {
|
|
|
+ show: true,
|
|
|
+ },
|
|
|
+ axisLine: {
|
|
|
+ show: true, //是否显示轴线
|
|
|
+ lineStyle: {
|
|
|
+ color: "#D9D9D9", //刻度线的颜色
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ axisLabel: {
|
|
|
+ show: true,
|
|
|
+ rotate: 35, //35度角倾斜显示
|
|
|
+ textStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ formatter: function (value) {
|
|
|
+ let fast = "";
|
|
|
+ if (value.length >= 4) {
|
|
|
+ fast = value.slice(0, 4);
|
|
|
+ fast += "...";
|
|
|
+ } else {
|
|
|
+ fast = value;
|
|
|
+ }
|
|
|
+ return fast;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ name: "面积/公顷",
|
|
|
+ type: "value",
|
|
|
+ max: "200",
|
|
|
+ axisTick: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ axisLine: {
|
|
|
+ show: false,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ show: true,
|
|
|
+ textStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ splitLine: {
|
|
|
+ show: true,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#bcd3e59e",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "value",
|
|
|
+ name: "项目数/个",
|
|
|
+ max: "45",
|
|
|
+ nameTextStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ },
|
|
|
+ position: "right",
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: "#cdd5e2",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ show: true,
|
|
|
+ formatter: "{value}", //右侧Y轴文字显示
|
|
|
+ textStyle: {
|
|
|
+ color: "#BCD3E5",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "计划供应面积",
|
|
|
+ type: "bar",
|
|
|
+ stack: "总量",
|
|
|
+ barWidth: "40%",
|
|
|
+ // data: ["33", "34", "36", "39", "44", "49", "65", "69", "75", "3"],
|
|
|
+ data: jhgymj,
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ label: {
|
|
|
+ show: false, //开启显示
|
|
|
+ textStyle: {
|
|
|
+ //数值样式
|
|
|
+ color: "#333",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "已供应面积",
|
|
|
+ type: "bar",
|
|
|
+ stack: "总量",
|
|
|
+ // barWidth: "40%",
|
|
|
+ barWidth: 39,
|
|
|
+ // data: ["10", "10", "10", "10", "11", "11", "11", "10", "10", "3"],
|
|
|
+ data: ygimj,
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ label: {
|
|
|
+ show: false, //开启显示
|
|
|
+ // position: 'top', //在上方显示
|
|
|
+ textStyle: {
|
|
|
+ //数值样式
|
|
|
+ color: "#BCD3E5",
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "计划供应项目",
|
|
|
+ type: "line",
|
|
|
+ yAxisIndex: 1, //使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用
|
|
|
+ smooth: false, //平滑曲线显示
|
|
|
+ symbol: "circle", //标记的图形为实心圆
|
|
|
+ symbolSize: 8, //标记的大小
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: "rgba(255,255,255, 1)",
|
|
|
+ borderColor: "rgba(70, 138, 115,1)", //圆点透明 边框
|
|
|
+ borderWidth: 3,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ color: "rgba(70, 138, 115, 1)",
|
|
|
+ },
|
|
|
+ // data: ["23", "24", "26", "28", "29", "31", "32", "31", "33", "34"]
|
|
|
+ data: jhgyxm,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "完成供应项目",
|
|
|
+ type: "line",
|
|
|
+ yAxisIndex: 1, //使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用
|
|
|
+ smooth: false, //平滑曲线显示
|
|
|
+ symbol: "circle", //标记的图形为实心圆
|
|
|
+ symbolSize: 8, //标记的大小
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: "rgba(255,255,255, 1)",
|
|
|
+
|
|
|
+ borderColor: "rgba(144, 60, 80, 1)", //圆点透明 边框
|
|
|
+ borderWidth: 3,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ color: "rgba(144, 60, 80, 1)",
|
|
|
+ },
|
|
|
+ // data: ["30", "32", "34", "39", "41", "32", "30", "25", "28", "34"]
|
|
|
+ data: wcgyxm,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ dataZoom,
|
|
|
+ };
|
|
|
+
|
|
|
+ myCharts.on("click", function (params) {
|
|
|
+ console.log("点击了柱状图:", params.name, params.data);
|
|
|
+ });
|
|
|
+
|
|
|
+ myCharts.setOption(this.option);
|
|
|
+ this.setIntervalAll();
|
|
|
+ },
|
|
|
+
|
|
|
+ async init_rsyt_echart() {
|
|
|
+ var myChart = echarts.init(document.getElementById("rsyt_echart"));
|
|
|
+ let colors = [
|
|
|
+ "#57A6E9",
|
|
|
+ "#5EBC85",
|
|
|
+ "#37a2da",
|
|
|
+ "#ffdb5c",
|
|
|
+ "#ff9f7f",
|
|
|
+ "#9fe6b8",
|
|
|
+ "#67e0e3",
|
|
|
+ "#32c5e9",
|
|
|
+ "#fb7293",
|
|
|
+ "#9A60B4",
|
|
|
+ "#ea7ccc",
|
|
|
+ ];
|
|
|
+
|
|
|
+ let res = await QueryList({
|
|
|
+ jscType: "jsc_tdgy_jt_yelx",
|
|
|
+ id: 46,
|
|
|
+ });
|
|
|
+ // 传入数据生成 option
|
|
|
+ let optionsData = [];
|
|
|
+ let lengedList = []; //图例数据
|
|
|
+ this.jhNumber = 0; //计划入市面积总数
|
|
|
+ this.sjNumber = 0; //实际入市面积总数
|
|
|
+ res.data.forEach((item) => {
|
|
|
+ optionsData.push({
|
|
|
+ name: item.tdyt,
|
|
|
+ value: item.jh_crmj,
|
|
|
+ });
|
|
|
+ lengedList.push(item.tdyt);
|
|
|
+ this.jhNumber += item.jh_crmj;
|
|
|
+ this.sjNumber += item.sj_crmj;
|
|
|
+ });
|
|
|
+ function getParametricEquation(
|
|
|
+ startRatio,
|
|
|
+ endRatio,
|
|
|
+ isSelected,
|
|
|
+ isHovered,
|
|
|
+ k,
|
|
|
+ height,
|
|
|
+ i
|
|
|
+ ) {
|
|
|
+ // 计算
|
|
|
+ let midRatio = (startRatio + endRatio) / 2;
|
|
|
+
|
|
|
+ let startRadian = startRatio * Math.PI * 2;
|
|
|
+ let endRadian = endRatio * Math.PI * 2;
|
|
|
+ let midRadian = midRatio * Math.PI * 2;
|
|
|
+
|
|
|
+ // 如果只有一个扇形,则不实现选中效果。
|
|
|
+ if (startRatio === 0 && endRatio === 1) {
|
|
|
+ isSelected = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3)
|
|
|
+ k = typeof k !== "undefined" ? k : 1 / 3;
|
|
|
+
|
|
|
+ // 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0)
|
|
|
+ let offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0;
|
|
|
+ let offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0;
|
|
|
+ let offsetZ = i == 1 ? 2 : 0;
|
|
|
+ // 计算高亮效果的放大比例(未高亮,则比例为 1)
|
|
|
+ let hoverRate = isHovered ? 1.05 : 1;
|
|
|
+
|
|
|
+ // 返回曲面参数方程
|
|
|
+ return {
|
|
|
+ u: {
|
|
|
+ min: -Math.PI,
|
|
|
+ max: Math.PI * 3,
|
|
|
+ step: Math.PI / 32,
|
|
|
+ },
|
|
|
+
|
|
|
+ v: {
|
|
|
+ min: 0,
|
|
|
+ max: Math.PI * 2,
|
|
|
+ step: Math.PI / 20,
|
|
|
+ },
|
|
|
+
|
|
|
+ x: function (u, v) {
|
|
|
+ if (u < startRadian) {
|
|
|
+ return (
|
|
|
+ offsetX +
|
|
|
+ Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (u > endRadian) {
|
|
|
+ return (
|
|
|
+ offsetX +
|
|
|
+ Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate;
|
|
|
+ },
|
|
|
+
|
|
|
+ y: function (u, v) {
|
|
|
+ if (u < startRadian) {
|
|
|
+ return (
|
|
|
+ offsetY +
|
|
|
+ Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (u > endRadian) {
|
|
|
+ return (
|
|
|
+ offsetY +
|
|
|
+ Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate;
|
|
|
+ },
|
|
|
+
|
|
|
+ z: function (u, v) {
|
|
|
+ if (u < -Math.PI * 0.5) {
|
|
|
+ return Math.sin(u);
|
|
|
+ }
|
|
|
+ if (u > Math.PI * 2.5) {
|
|
|
+ return Math.sin(u);
|
|
|
+ }
|
|
|
+ return Math.sin(v) > 0 ? 1 * height : -1;
|
|
|
+ },
|
|
|
+ };
|
|
|
+ }
|
|
|
+ // 生成模拟 3D 饼图的配置项
|
|
|
+ function getPie3D(pieData, internalDiameterRatio) {
|
|
|
+ let series = [];
|
|
|
+ let sumValue = 0;
|
|
|
+ let startValue = 0;
|
|
|
+ let endValue = 0;
|
|
|
+ let legendData = [];
|
|
|
+ let k =
|
|
|
+ typeof internalDiameterRatio !== "undefined"
|
|
|
+ ? (1 - internalDiameterRatio) / (1 + internalDiameterRatio)
|
|
|
+ : 1 / 3;
|
|
|
+
|
|
|
+ // 为每一个饼图数据,生成一个 series-surface 配置
|
|
|
+ for (let i = 0; i < pieData.length; i++) {
|
|
|
+ sumValue += pieData[i].value;
|
|
|
+
|
|
|
+ let seriesItem = {
|
|
|
+ name:
|
|
|
+ typeof pieData[i].name === "undefined"
|
|
|
+ ? `series${i}`
|
|
|
+ : pieData[i].name,
|
|
|
+ type: "surface",
|
|
|
+ parametric: true,
|
|
|
+ wireframe: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ pieData: pieData[i],
|
|
|
+ itemStyle: {
|
|
|
+ color: colors[i], // 自定义颜色
|
|
|
+ opacity: "0.7",
|
|
|
+ },
|
|
|
+ pieStatus: {
|
|
|
+ selected: false,
|
|
|
+ hovered: false,
|
|
|
+ k: k,
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ if (typeof pieData[i].itemStyle != "undefined") {
|
|
|
+ let itemStyle = {};
|
|
|
+
|
|
|
+ typeof pieData[i].itemStyle.color != "undefined"
|
|
|
+ ? (itemStyle.color = pieData[i].itemStyle.color)
|
|
|
+ : null;
|
|
|
+ typeof pieData[i].itemStyle.opacity != "undefined"
|
|
|
+ ? (itemStyle.opacity = pieData[i].itemStyle.opacity)
|
|
|
+ : null;
|
|
|
+
|
|
|
+ seriesItem.itemStyle = itemStyle;
|
|
|
+ }
|
|
|
+ series.push(seriesItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,
|
|
|
+ // 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
|
|
|
+ for (let i = 0; i < series.length; i++) {
|
|
|
+ endValue = startValue + series[i].pieData.value;
|
|
|
+ series[i].pieData.startRatio = startValue / sumValue;
|
|
|
+ series[i].pieData.endRatio = endValue / sumValue;
|
|
|
+ series[i].parametricEquation = getParametricEquation(
|
|
|
+ series[i].pieData.startRatio,
|
|
|
+ series[i].pieData.endRatio,
|
|
|
+ false,
|
|
|
+ false,
|
|
|
+ k,
|
|
|
+ // 调整扇形高度
|
|
|
+ i === 0 ? 10 : 10,
|
|
|
+ i,
|
|
|
+ series[i].pieData.value
|
|
|
+ );
|
|
|
+
|
|
|
+ startValue = endValue;
|
|
|
+
|
|
|
+ legendData.push(series[i].name);
|
|
|
+ }
|
|
|
+ return series;
|
|
|
+ }
|
|
|
+
|
|
|
+ const series = getPie3D(optionsData, 0.6); // 可做为调整内环大小 0为实心圆饼图,大于0 小于1 为圆环
|
|
|
+ series.push({
|
|
|
+ name: "pie2d",
|
|
|
+ type: "pie",
|
|
|
+ label: {
|
|
|
+ opacity: 1,
|
|
|
+ fontSize: 14,
|
|
|
+ lineHeight: 20,
|
|
|
+ textStyle: {
|
|
|
+ fontSize: 14,
|
|
|
+ color: "#fff",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ labelLine: {
|
|
|
+ length: 10,
|
|
|
+ length2: 10,
|
|
|
+ },
|
|
|
+ startAngle: 2, //起始角度,支持范围[0, 360]。
|
|
|
+ clockwise: false, //饼图的扇区是否是顺时针排布。上述这两项配置主要是为了对齐3d的样式
|
|
|
+ radius: ["50%", "60%"],
|
|
|
+ center: ["62%", "50%"],
|
|
|
+ data: optionsData,
|
|
|
+ itemStyle: {
|
|
|
+ opacity: 0,
|
|
|
+ },
|
|
|
+ labelLine: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ label: {
|
|
|
+ show: false,
|
|
|
+ position: "center",
|
|
|
+ },
|
|
|
+ });
|
|
|
+ // 准备待返回的配置项,把准备好的 legendData、series 传入。
|
|
|
+ var option = {
|
|
|
+ legend: {
|
|
|
+ show: true,
|
|
|
+ tooltip: {
|
|
|
+ show: true,
|
|
|
+ },
|
|
|
+ orient: "vertical",
|
|
|
+ // data: ["商服用地", "工业用地"],
|
|
|
+ data: lengedList,
|
|
|
+ top: "center",
|
|
|
+ itemGap: 14,
|
|
|
+ itemHeight: 14,
|
|
|
+ itemWidth: 14,
|
|
|
+ itemRadius: 20,
|
|
|
+ right: "2%",
|
|
|
+ textStyle: {
|
|
|
+ color: "#BCD3E5 ",
|
|
|
+ fontSize: 14,
|
|
|
+ padding: [15, 5, 0, 0], //上,右,下,左
|
|
|
+ rich: {
|
|
|
+ name: {
|
|
|
+ // width: '45%',
|
|
|
+ fontSize: 14,
|
|
|
+ color: "#BCD3E5 ",
|
|
|
+ padding: [6, 0, 6, 0],
|
|
|
+ },
|
|
|
+ value: {
|
|
|
+ fontSize: 14,
|
|
|
+ padding: [0, 0, 0, 5],
|
|
|
+ color: "#64DAFF",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ formatter: function (name) {
|
|
|
+ let res = optionsData.filter((v) => v.name === name);
|
|
|
+ res = res[0] || {};
|
|
|
+ const p = res.value;
|
|
|
+ return "{name|" + name + "}" + "\n" + "{value|" + p + "}公顷";
|
|
|
+ // return "{name|" + name + "}";
|
|
|
+ },
|
|
|
+ },
|
|
|
+ animation: true,
|
|
|
+ tooltip: {
|
|
|
+ show: false,
|
|
|
+ textStyle: {
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ title: {
|
|
|
+ x: "center",
|
|
|
+ top: "20",
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: 22,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ backgroundColor: "rgba(0,0,0,0)",
|
|
|
+ labelLine: {
|
|
|
+ show: true,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#7BC0CB",
|
|
|
+ },
|
|
|
+ normal: {
|
|
|
+ show: false,
|
|
|
+ length: 10,
|
|
|
+ length2: 10,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ label: {
|
|
|
+ show: true,
|
|
|
+ position: "outside",
|
|
|
+ // formatter: "{b} {d}%",
|
|
|
+ formatter: function (optionsData) {
|
|
|
+ return (
|
|
|
+ "{name|" +
|
|
|
+ optionsData.name +
|
|
|
+ "}" +
|
|
|
+ " {value|" +
|
|
|
+ optionsData.percent.toFixed(0) +
|
|
|
+ "%}"
|
|
|
+ );
|
|
|
+ },
|
|
|
+ rich: {
|
|
|
+ name: {
|
|
|
+ fontSize: 14,
|
|
|
+ color: "#ffffff",
|
|
|
+ },
|
|
|
+ value: {
|
|
|
+ fontSize: 14,
|
|
|
+ color: "#ffffff",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: "14px",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ xAxis3D: {
|
|
|
+ min: -1,
|
|
|
+ max: 1,
|
|
|
+ },
|
|
|
+ yAxis3D: {
|
|
|
+ min: -1,
|
|
|
+ max: 1,
|
|
|
+ },
|
|
|
+ zAxis3D: {
|
|
|
+ min: -1,
|
|
|
+ max: 1,
|
|
|
+ },
|
|
|
+ grid3D: {
|
|
|
+ show: false,
|
|
|
+ boxHeight: 3,
|
|
|
+ //top: '30%',
|
|
|
+ left: "-20%",
|
|
|
+ bottom: "50%",
|
|
|
+ // environment: "rgba(255,255,255,0)",
|
|
|
+ viewControl: {
|
|
|
+ distance: 145,
|
|
|
+ alpha: 35,
|
|
|
+ beta: 15,
|
|
|
+ autoRotate: false, // 自动旋转
|
|
|
+ },
|
|
|
+ },
|
|
|
+ series: series,
|
|
|
+ };
|
|
|
+ myChart.setOption(option);
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @return {*}
|
|
|
+ * @author: liukeke
|
|
|
+ * @description: 设置定时器保证统计图的轮播
|
|
|
+ */
|
|
|
+ setIntervalAll() {
|
|
|
+ // 重设this指向
|
|
|
+ const that = this;
|
|
|
+ // 定时器
|
|
|
+ this.setInterValAl = setInterval(function () {
|
|
|
+ // 每次向后滚动一个,最后一个从头开始。
|
|
|
+ if (that.option.dataZoom[0].start == 30) {
|
|
|
+ that.option.dataZoom[0].end = 30;
|
|
|
+ that.option.dataZoom[0].start = 0;
|
|
|
+ } else {
|
|
|
+ that.option.dataZoom[0].end = that.option.dataZoom[0].end + 5;
|
|
|
+ that.option.dataZoom[0].start = that.option.dataZoom[0].start + 5;
|
|
|
+ // console.log(that.option_sevenWG.dataZoom[0].end);
|
|
|
+ // console.log(that.option_sevenWG.dataZoom[0].start);
|
|
|
+ }
|
|
|
+ myCharts.setOption(that.option);
|
|
|
+ }, 5000);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.init_across_echart();
|
|
|
+ this.init_rsyt_echart();
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.init_vertical_echart();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ beforeUpdate() { }, //生命周期 - 更新之前
|
|
|
+ updated() { }, //生命周期 - 更新之后
|
|
|
+ beforeDestroy() {
|
|
|
+ // 清楚定时器
|
|
|
+ clearInterval(this.setInterValAl);
|
|
|
+ }, //生命周期 - 销毁之前
|
|
|
+ destroy() { }, //生命周期 - 销毁完成
|
|
|
+ activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
|
|
|
+ deactivated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.tdsy {
|
|
|
+ border-width: 0px;
|
|
|
+ position: absolute;
|
|
|
+ left: 1rem;
|
|
|
+ top: 66%;
|
|
|
+ width: 640px;
|
|
|
+ z-index: 100;
|
|
|
+
|
|
|
+ .box1 {
|
|
|
+ border-width: 0px;
|
|
|
+ position: absolute;
|
|
|
+ left: 0px;
|
|
|
+ top: 0px;
|
|
|
+ // width: 800px;
|
|
|
+ // height: 260px;
|
|
|
+ width: 40rem;
|
|
|
+ height: 18rem;
|
|
|
+ background: inherit;
|
|
|
+ // background-color: rgba(3, 25, 67, 0.698039215686274);
|
|
|
+ border: none;
|
|
|
+ border-radius: 0px;
|
|
|
+ -moz-box-shadow: none;
|
|
|
+ -webkit-box-shadow: none;
|
|
|
+ box-shadow: none;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ border-width: 0px;
|
|
|
+ width: 100%;
|
|
|
+ height: 36px;
|
|
|
+ background: no-repeat;
|
|
|
+ background-image: url("/static/images/overview/标题框.png");
|
|
|
+ // background-size: 100% 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .icon {
|
|
|
+ background: no-repeat;
|
|
|
+ background-image: url("/static/images/overview/icon_标题框装饰.png");
|
|
|
+ display: inline-block;
|
|
|
+ width: 30px;
|
|
|
+ height: 30px;
|
|
|
+ background-position: 14px 7px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ position: relative;
|
|
|
+ bottom: 0.5rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .selectTab {
|
|
|
+ /deep/ .el-input__inner {
|
|
|
+ // padding-right: 30px;
|
|
|
+ width: 128px !important;
|
|
|
+ height: 24px !important;
|
|
|
+ line-height: 24px;
|
|
|
+ padding-left: 22px;
|
|
|
+ padding-right: 0px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #bcd3e5;
|
|
|
+ border: none;
|
|
|
+ background: url("/static/images/overview/selectBg.png") no-repeat !important;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-input__icon {
|
|
|
+ line-height: 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-input__suffix {
|
|
|
+ right: -2px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-select-dropdown__list {
|
|
|
+ color: #bcd3e5 !important;
|
|
|
+ background: linear-gradient(180deg,
|
|
|
+ rgba(3, 115, 177, 0) 11%,
|
|
|
+ rgba(3, 115, 177, 0.48) 100%);
|
|
|
+ border-image: linear-gradient(360deg,
|
|
|
+ rgba(75, 185, 250, 0.2),
|
|
|
+ rgba(75, 185, 250, 0.05)) 1 1 !important;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-select-dropdown__item.hover,
|
|
|
+ .el-select-dropdown__item:hover {
|
|
|
+ background-color: rgba(87, 163, 226, 0.5);
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-select-dropdown__item {
|
|
|
+ color: #ecf6ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ {
|
|
|
+ .el-select-dropdown__item.selected {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-popper[x-placement^="bottom"] {
|
|
|
+ margin-top: 12px;
|
|
|
+ background: #163253;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-select-dropdown {
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-popper[x-placement^="bottom"] .popper__arrow::after {
|
|
|
+ border-bottom-color: #163253;
|
|
|
+ top: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.content {
|
|
|
+ position: absolute;
|
|
|
+ left: 0%;
|
|
|
+ width: 20.5rem;
|
|
|
+ height: 18rem;
|
|
|
+ top: 18%;
|
|
|
+}
|
|
|
+
|
|
|
+#tdsyEchart {
|
|
|
+ width: 280px;
|
|
|
+ height: 230px;
|
|
|
+ position: relative;
|
|
|
+ left: -35px;
|
|
|
+ top: 95px;
|
|
|
+}
|
|
|
+
|
|
|
+.list {
|
|
|
+ position: absolute;
|
|
|
+ left: 137%;
|
|
|
+ top: 25%;
|
|
|
+}
|
|
|
+
|
|
|
+#across_echart {
|
|
|
+ position: relative;
|
|
|
+ // left: -6rem;
|
|
|
+ top: 2.1rem;
|
|
|
+ width: 15rem;
|
|
|
+ height: 15rem;
|
|
|
+}
|
|
|
+
|
|
|
+#vertical_echart {
|
|
|
+ left: 14rem;
|
|
|
+ top: -12.9rem;
|
|
|
+ width: 26rem;
|
|
|
+ height: 15rem;
|
|
|
+}
|
|
|
+
|
|
|
+#rsyt_echart {
|
|
|
+ position: relative;
|
|
|
+ top: 2.1rem;
|
|
|
+ width: 20.5rem;
|
|
|
+ height: 10rem;
|
|
|
+}
|
|
|
+
|
|
|
+.deficiency_echart {
|
|
|
+ width: 9rem;
|
|
|
+ height: 9rem;
|
|
|
+ border: 20px solid #104375;
|
|
|
+ position: absolute;
|
|
|
+ top: 4rem;
|
|
|
+ left: 2rem;
|
|
|
+ border-radius: 80rem;
|
|
|
+}
|
|
|
+
|
|
|
+.content1 {
|
|
|
+ background: no-repeat;
|
|
|
+ width: 100%;
|
|
|
+ height: 44px;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 1.8rem;
|
|
|
+}
|
|
|
+
|
|
|
+.icon_info {
|
|
|
+ background: no-repeat;
|
|
|
+
|
|
|
+ // background-image: url("/static/images/overview/icon_info.png");
|
|
|
+ background-image: url("/static/images/overview/icon信息.png");
|
|
|
+
|
|
|
+ display: inline-block;
|
|
|
+ width: 2rem;
|
|
|
+ height: 3rem;
|
|
|
+ position: absolute;
|
|
|
+ left: 0rem;
|
|
|
+ top: 0.5rem;
|
|
|
+}
|
|
|
+
|
|
|
+.info_left {
|
|
|
+ background: no-repeat;
|
|
|
+ background-image: url("/static/images/overview/info_left.png");
|
|
|
+ display: inline-block;
|
|
|
+ width: 10rem;
|
|
|
+ height: 3rem;
|
|
|
+ background-size: 100%;
|
|
|
+ position: absolute;
|
|
|
+ left: 0.65rem;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .count {
|
|
|
+ color: #faa012;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+
|
|
|
+ // line-height: 3rem;
|
|
|
+ // text-align: end;
|
|
|
+ i {
|
|
|
+ font-style: normal;
|
|
|
+ color: #ecf6ff;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: normal;
|
|
|
+ margin: 0 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ span:first-child {
|
|
|
+ width: 4rem;
|
|
|
+ height: 2.5rem;
|
|
|
+ display: block;
|
|
|
+ margin-left: 1rem;
|
|
|
+ color: #bcd3e5;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span:nth-child(2) {
|
|
|
+ display: inline-block;
|
|
|
+ width: 5rem;
|
|
|
+ height: 2.5rem;
|
|
|
+ text-align: end;
|
|
|
+ line-height: 2.5rem;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.info_main {
|
|
|
+ background: no-repeat;
|
|
|
+ background: linear-gradient(270deg,
|
|
|
+ rgba(29, 96, 156, 0.8) 0%,
|
|
|
+ rgba(29, 96, 156, 0.2) 100%);
|
|
|
+ display: inline-block;
|
|
|
+ width: 10rem;
|
|
|
+ height: 2.5rem;
|
|
|
+ background-size: 100%;
|
|
|
+ position: absolute;
|
|
|
+ left: 10.5rem;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .count {
|
|
|
+ color: #64daff;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+
|
|
|
+ // line-height: 3rem;
|
|
|
+ // text-align: end;
|
|
|
+ i {
|
|
|
+ font-style: normal;
|
|
|
+ color: #ecf6ff;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: normal;
|
|
|
+ margin: 0 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ span:first-child {
|
|
|
+ width: 3rem;
|
|
|
+ height: 2.5rem;
|
|
|
+ display: block;
|
|
|
+ margin-left: 1rem;
|
|
|
+ color: #bcd3e5;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span:nth-child(2) {
|
|
|
+ display: inline-block;
|
|
|
+ width: 6rem;
|
|
|
+ height: 2.5rem;
|
|
|
+ text-align: end;
|
|
|
+ line-height: 2.5rem;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.content2 {
|
|
|
+ position: absolute;
|
|
|
+ left: 100%;
|
|
|
+ width: 19.5rem;
|
|
|
+ height: 15rem;
|
|
|
+ top: 12%;
|
|
|
+
|
|
|
+ .search {
|
|
|
+ height: 14%;
|
|
|
+ padding-top: 2%;
|
|
|
+
|
|
|
+ /deep/ .el-input {
|
|
|
+ width: 54%;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/ .el-input__inner {
|
|
|
+ color: #bcd3e5;
|
|
|
+ height: 24px;
|
|
|
+ background: linear-gradient(180deg,
|
|
|
+ rgba(3, 115, 177, 0) 11%,
|
|
|
+ rgba(3, 115, 177, 0.48) 100%);
|
|
|
+ border-radius: 2px 16px 2px 22px;
|
|
|
+ border: 1px solid;
|
|
|
+ border-image: linear-gradient(360deg,
|
|
|
+ rgba(75, 185, 250, 0.2),
|
|
|
+ rgba(75, 185, 250, 0.05)) 1 1;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/.el-input__suffix {
|
|
|
+ color: #64daff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-input__icon {
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .infoLIst {
|
|
|
+ width: 100%;
|
|
|
+ height: 12rem;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ margin-right: 10px;
|
|
|
+ padding-top: 5px;
|
|
|
+
|
|
|
+ .infoItem {
|
|
|
+ width: 100%;
|
|
|
+ height: 3.3rem;
|
|
|
+ background-color: #64daff;
|
|
|
+ background: url("/static/images/overview/list_bg.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ display: flex;
|
|
|
+ margin-bottom: 10px;
|
|
|
+
|
|
|
+ .itemIcon {
|
|
|
+ width: 1.5rem;
|
|
|
+ height: 1.7rem;
|
|
|
+ background: url("/static/images/overview/iconDW.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ margin: 0.5rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .itemCon {
|
|
|
+
|
|
|
+ // width: 13.5rem;
|
|
|
+ // height: 1.55rem;
|
|
|
+ // background-color: #faa012;
|
|
|
+ // line-height: 1.55rem;
|
|
|
+ p {
|
|
|
+ height: 41%;
|
|
|
+ line-height: 1.55rem;
|
|
|
+ color: #ecf6ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ p:first-child {
|
|
|
+ width: 177px;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ color: #ecf6ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ p:nth-child(2) {
|
|
|
+ span {
|
|
|
+ padding: 0 0.4rem;
|
|
|
+ display: inline-block;
|
|
|
+ background: rgba(100, 218, 255, 0.1);
|
|
|
+ border-radius: 2px 14px 2px 14px;
|
|
|
+ color: #64daff;
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .itemStatus1 {
|
|
|
+ background: url("/static/images/overview/yrsIcon.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ width: 62px;
|
|
|
+ height: 18px;
|
|
|
+ position: relative;
|
|
|
+ right: -30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .itemStatus2 {
|
|
|
+ background: url("/static/images/overview/wrsIcon.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ width: 62px;
|
|
|
+ height: 18px;
|
|
|
+ position: relative;
|
|
|
+ right: -30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .infoLIst1 {
|
|
|
+ width: 100%;
|
|
|
+ height: 12rem;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ margin-right: 10px;
|
|
|
+ padding-top: 5px;
|
|
|
+ line-height: 12rem;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-scrollbar {
|
|
|
+ color: #faa012;
|
|
|
+}
|
|
|
+</style>
|