|
@@ -2,7 +2,7 @@
|
|
* @LastEditors: gcz
|
|
* @LastEditors: gcz
|
|
-->
|
|
-->
|
|
<template>
|
|
<template>
|
|
- <div class="numerical">
|
|
|
|
|
|
+ <div class="numerical" ref="numericalRef">
|
|
<div class="ntitle">{{$store.state.addr.selectAddr}}{{ntitle}}</div>
|
|
<div class="ntitle">{{$store.state.addr.selectAddr}}{{ntitle}}</div>
|
|
<!-- <div class="ntitle">
|
|
<!-- <div class="ntitle">
|
|
<span v-if="$store.state.addr.mapLevel=='province'">{{$store.state.addr.selectAddr}}{{ntitle}}</span>
|
|
<span v-if="$store.state.addr.mapLevel=='province'">{{$store.state.addr.selectAddr}}{{ntitle}}</span>
|
|
@@ -13,18 +13,29 @@
|
|
<!-- <div class="addr">{{$store.state.addr.selectAddr}}</div> -->
|
|
<!-- <div class="addr">{{$store.state.addr.selectAddr}}</div> -->
|
|
<div class="item-wrap">
|
|
<div class="item-wrap">
|
|
<div class="inner u-flex u-flex-wrap">
|
|
<div class="inner u-flex u-flex-wrap">
|
|
- <div class="numerical-item" v-for="(item,index) in data" :key="item.name+index">
|
|
|
|
|
|
+ <div class="numerical-item" v-for="(item,index) in data" @click="showDetails" :key="item.name+index">
|
|
<div class="cell name">{{item.name}}</div>
|
|
<div class="cell name">{{item.name}}</div>
|
|
<span class="cell number">{{item.number}}</span>
|
|
<span class="cell number">{{item.number}}</span>
|
|
<span class="cell unit">{{item.unit}}</span>
|
|
<span class="cell unit">{{item.unit}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="detail-wrap" v-show="isShowDetails" ref="detailRef">
|
|
|
|
+ <el-table :data="detailsData" style="width: 100%;max-height: 80vh;overflow-y: auto;" >
|
|
|
|
+
|
|
|
|
+ <el-table-column :label="item.title" :prop="item.value" v-for="(item, index) in headerList" :key="index" align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{scope.row[item.value]||'-'}}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
- //import { projectClassList } from '@/api/project/projectclass';
|
|
|
|
|
|
+ import { forestFarmDetail,treeListDetail,baseItemDetail } from '@/service/index';
|
|
export default {
|
|
export default {
|
|
name: '',
|
|
name: '',
|
|
props:{
|
|
props:{
|
|
@@ -36,17 +47,112 @@
|
|
type: String,
|
|
type: String,
|
|
default: '数据概况',
|
|
default: '数据概况',
|
|
},
|
|
},
|
|
|
|
+ pageName:{
|
|
|
|
+ type: String,
|
|
|
|
+ default: '',
|
|
|
|
+ },
|
|
},
|
|
},
|
|
components: {},
|
|
components: {},
|
|
data () {
|
|
data () {
|
|
return {
|
|
return {
|
|
|
|
+ isShowDetails:false,
|
|
|
|
+ headerList:[],
|
|
|
|
+ detailsData:[]
|
|
|
|
|
|
};
|
|
};
|
|
},
|
|
},
|
|
created(){
|
|
created(){
|
|
// console.log('data',this.data);
|
|
// console.log('data',this.data);
|
|
},
|
|
},
|
|
- methods: {},
|
|
|
|
|
|
+ mounted(){
|
|
|
|
+ document.addEventListener('click',this.outClick)
|
|
|
|
+ },
|
|
|
|
+ destroyed(){
|
|
|
|
+ document.removeEventListener('click',this.outClick)
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ showDetails(){
|
|
|
|
+ // console.log('pageName',this.pageName);
|
|
|
|
+ let page = {
|
|
|
|
+ forest: this.getForestData,
|
|
|
|
+ treeSpecies: this.getTreeSpeciesData,
|
|
|
|
+ economics: this.getEconomicsData
|
|
|
|
+ };
|
|
|
|
+ page[this.pageName] && page[this.pageName]();
|
|
|
|
+ },
|
|
|
|
+ unShowDetails(){
|
|
|
|
+ this.isShowDetails = false;
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ getForestData(){
|
|
|
|
+ this.isShowDetails = true;
|
|
|
|
+ forestFarmDetail().then(res=>{
|
|
|
|
+ let resData = res.rows;
|
|
|
|
+ this.detailsData = resData;
|
|
|
|
+ // console.log('forestFarmDetail res',this.detailsData);
|
|
|
|
+
|
|
|
|
+ this.getHeaderList(resData);
|
|
|
|
+
|
|
|
|
+ }).catch((err) => {
|
|
|
|
+ console.log('forestFarmDetail err', err);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ getTreeSpeciesData(){
|
|
|
|
+ this.isShowDetails = true;
|
|
|
|
+ treeListDetail().then(res=>{
|
|
|
|
+ let resData = res.data;
|
|
|
|
+ this.detailsData = resData;
|
|
|
|
+ // console.log('treeListDetail res',this.detailsData);
|
|
|
|
+ this.getHeaderList(resData);
|
|
|
|
+
|
|
|
|
+ }).catch((err) => {
|
|
|
|
+ console.log('treeListDetail err', err);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ getEconomicsData(){
|
|
|
|
+ this.isShowDetails = true;
|
|
|
|
+ baseItemDetail().then(res=>{
|
|
|
|
+ let resData = res.rows;
|
|
|
|
+ this.detailsData = resData;
|
|
|
|
+ console.log('baseItemDetail res',this.detailsData);
|
|
|
|
+ this.getHeaderList(resData);
|
|
|
|
+
|
|
|
|
+ }).catch((err) => {
|
|
|
|
+ console.log('baseItemDetail err', err);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ getHeaderList(data){
|
|
|
|
+ let data1 = Object.keys(data[0]).map((key) => {
|
|
|
|
+ console.log('pageName',this.pageName);
|
|
|
|
+ let titles={};
|
|
|
|
+ if(this.pageName=='forest'){
|
|
|
|
+ titles={forestName:'林场名称',smallClassStock:'蓄积量(m³)',landArea:'占地面积(亩)',smallClassCount:'小班数量'};
|
|
|
|
+ }else if(this.pageName=='treeSpecies'){
|
|
|
|
+ titles={treeName:'树种名称',treeStock:'树种蓄积(m³)',treeCount:'树种株数(株)'};
|
|
|
|
+ }else if(this.pageName=='economics'){
|
|
|
|
+ titles={
|
|
|
|
+ baseName:'基地名称',
|
|
|
|
+ baseNumber:'基地数量',
|
|
|
|
+ baseArea:'基地面积(亩)',
|
|
|
|
+ corpNumber:'作物数量',
|
|
|
|
+ corpName:'作物名称',
|
|
|
|
+ outputValue:'预估产值(万元)',
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return { title: titles[key] ,value:key};
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ let newData = JSON.parse(JSON.stringify(data1));
|
|
|
|
+ this.headerList = newData;
|
|
|
|
+ },
|
|
|
|
+ outClick(e){
|
|
|
|
+ let detailRef=this.$refs.numericalRef
|
|
|
|
+ if(!detailRef.contains(e.target)&&this.isShowDetails){
|
|
|
|
+ this.isShowDetails=false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -87,7 +193,21 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ .detail-wrap{
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 0;
|
|
|
|
+ right: -115%;
|
|
|
|
+ z-index: 99;
|
|
|
|
+ min-width: 100%;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ border-radius: 10px;
|
|
|
|
+ border: 1px solid rgb(2, 238, 255);
|
|
|
|
+ ::-webkit-scrollbar {width: .5rem;height: .625rem;background: #ddd;}
|
|
|
|
+ ::-webkit-scrollbar-thumb {background-color: #333;border-radius: 2em;}
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
@media only screen and (max-width : 1280px) {
|
|
@media only screen and (max-width : 1280px) {
|
|
//概况
|
|
//概况
|
|
.numerical{
|
|
.numerical{
|