|
@@ -0,0 +1,183 @@
|
|
|
+<template>
|
|
|
+ <borderTemplate titleName="生态修复" class="stxf">
|
|
|
+ <template v-slot:title>
|
|
|
+ <!-- #content="row" -->
|
|
|
+ <div class="selectTab">
|
|
|
+ <el-select
|
|
|
+ v-model="tab"
|
|
|
+ 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>
|
|
|
+ </template>
|
|
|
+ <div class="stacontent">
|
|
|
+ <div class="item" v-for="(sd, index) in sdlist[tab]" :key="index">
|
|
|
+ <div class="itembg"></div>
|
|
|
+ <div class="text">{{ sd.name }}</div>
|
|
|
+ <span>{{ sdata[tab][sd.prop] || 0 }}</span>
|
|
|
+ {{ sd.unit }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Bar3d id="stxf_echart" ref="echartRef"></Bar3d>
|
|
|
+ </borderTemplate>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
|
|
|
+import borderTemplate from "./borderTemplate.vue";
|
|
|
+import Bar3d from "../../components/echartsTemplate/3dBar.vue";
|
|
|
+import { QueryOne, QueryList } from "../../api/cockpitNew";
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: { borderTemplate, Bar3d },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ options: [
|
|
|
+ { value: "tdxf", label: "土地综合整治" },
|
|
|
+ { value: "ssxf", label: "山水工程" },
|
|
|
+ { value: "haxf", label: "海岸线保护" }
|
|
|
+ ],
|
|
|
+ tab: "tdxf",
|
|
|
+ paramdatas: {},
|
|
|
+ sdlist: {
|
|
|
+ tdxf: [
|
|
|
+ { name: "综合整治项目", prop: "xzqhdm_number", unit: "个" },
|
|
|
+ { name: "土地整治面积", prop: "zlmj", unit: "公顷" },
|
|
|
+ { name: "总投资", prop: "tzje", unit: "万元" }
|
|
|
+ ],
|
|
|
+ ssxf: [
|
|
|
+ { name: "综合整治项目", prop: "xzqhdm_number", unit: "个" },
|
|
|
+ { name: "土地整治面积", prop: "zlmj", unit: "公顷" },
|
|
|
+ { name: "总投资", prop: "tzje", unit: "万元" }
|
|
|
+ ],
|
|
|
+ haxf: [
|
|
|
+ { name: "海岸线长度", prop: "xzqhdm_number", unit: "千米" },
|
|
|
+ { name: "自然岸线保有率", prop: "zlmj", unit: "%" },
|
|
|
+ { name: "海岸线整治修复项目", prop: "tzje", unit: "个" }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ sdata: { tdxf: {}, ssxf: {}, haxf: {} },
|
|
|
+ eData: {
|
|
|
+ xData: ["农用地", "建设用地", "生态修复", "历史文化保护"],
|
|
|
+ yData: [
|
|
|
+ [10, 10, 10, 10],
|
|
|
+ [10, 10, 30, 10],
|
|
|
+ [10, 10, 10, 40]
|
|
|
+ ],
|
|
|
+ legend: [""]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ //监听属性 类似于data概念
|
|
|
+ computed: {},
|
|
|
+ //监控data中的数据变化
|
|
|
+ watch: {},
|
|
|
+ methods: {
|
|
|
+ changeCharts() {
|
|
|
+ this.setData(this.paramdatas);
|
|
|
+ },
|
|
|
+ // //第二个图表
|
|
|
+ setData(datas) {
|
|
|
+ this.paramdatas = datas;
|
|
|
+ if (this.tab == "ssxf") {
|
|
|
+ this.GetQueryOne(datas);
|
|
|
+ this.GetQueryList(datas);
|
|
|
+ } else {
|
|
|
+ this.sdata.tdxf = { xzqhdm_number: 100, zlmj: 0, tzje: 20 };
|
|
|
+ this.sdata.haxf = { xzqhdm_number: 40, zlmj: 30, tzje: 3 };
|
|
|
+ this.eData.xData = ["农用地", "建设用地", "生态修复", "历史文化保护"];
|
|
|
+ this.eData.yData = [
|
|
|
+ [10, 10, 10, 10],
|
|
|
+ [10, 10, 30, 10],
|
|
|
+ [10, 10, 10, 40]
|
|
|
+ ];
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.echartRef.setOptions(this.eData);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ GetQueryOne(datas) {
|
|
|
+ let params = {
|
|
|
+ ...datas,
|
|
|
+ jscType: `jsc_stxf_ztgh_${this.tab}` //"jsc_stxf_ztgh_ssxf"
|
|
|
+ };
|
|
|
+ QueryOne(params).then(res => {
|
|
|
+ this.sdata[this.tab] = res.data || {};
|
|
|
+ });
|
|
|
+ },
|
|
|
+ GetQueryList(datas) {
|
|
|
+ this.eData.xData = [];
|
|
|
+ this.eData.yData = [];
|
|
|
+ let params = {
|
|
|
+ ...datas,
|
|
|
+ jscType: `jsc_stxf_ywlx_${this.tab}` // "jsc_stxf_ywlx_ssxf"
|
|
|
+ };
|
|
|
+ QueryList(params).then(res => {
|
|
|
+ res.data.forEach(edata => {
|
|
|
+ this.eData.xData.push(edata.jd_type);
|
|
|
+ this.eData.yData.push([edata.xzqhdm_number, edata.zlmj, edata.tzje]);
|
|
|
+ });
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.echartRef.setOptions(this.eData);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {}
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.stxf {
|
|
|
+ top: calc(33.3% + 20px) !important;
|
|
|
+ .stacontent {
|
|
|
+ width: 100%;
|
|
|
+ height: 44px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.item {
|
|
|
+ width: calc(100% / 3); //112px;
|
|
|
+ height: 44px;
|
|
|
+ position: relative;
|
|
|
+ text-align: center;
|
|
|
+ .itembg {
|
|
|
+ width: 112px;
|
|
|
+ height: 34px;
|
|
|
+ position: absolute;
|
|
|
+ top: 10px;
|
|
|
+ left: 10px;
|
|
|
+ background: no-repeat;
|
|
|
+ background-image: url("/static/images/overview/Tab.png");
|
|
|
+ }
|
|
|
+ .text {
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #bcd3e5;
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ font-size: 18px;
|
|
|
+ color: #64daff;
|
|
|
+ line-height: 18px;
|
|
|
+ }
|
|
|
+}
|
|
|
+#stxf_echart {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 44px);
|
|
|
+ position: relative;
|
|
|
+ // left: -28%;
|
|
|
+ // top: 7%;
|
|
|
+}
|
|
|
+</style>
|