|  | @@ -2,7 +2,7 @@
 | 
	
		
			
				|  |  |   * @LastEditors: gcz
 | 
	
		
			
				|  |  |  -->
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  | -    <div class="numerical">
 | 
	
		
			
				|  |  | +    <div class="numerical" ref="numericalRef">
 | 
	
		
			
				|  |  |          <div class="ntitle">{{$store.state.addr.selectAddr}}{{ntitle}}</div>
 | 
	
		
			
				|  |  |          <!-- <div class="ntitle">
 | 
	
		
			
				|  |  |              <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="item-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>
 | 
	
		
			
				|  |  |                      <span class="cell number">{{item.number}}</span>
 | 
	
		
			
				|  |  |                      <span class="cell unit">{{item.unit}}</span>
 | 
	
		
			
				|  |  |                  </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>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | -    //import { projectClassList } from '@/api/project/projectclass';
 | 
	
		
			
				|  |  | +    import { forestFarmDetail,treeListDetail,baseItemDetail } from '@/service/index';
 | 
	
		
			
				|  |  |      export default {
 | 
	
		
			
				|  |  |          name: '',
 | 
	
		
			
				|  |  |          props:{
 | 
	
	
		
			
				|  | @@ -36,17 +47,112 @@
 | 
	
		
			
				|  |  |                  type: String,
 | 
	
		
			
				|  |  |                  default: '数据概况',
 | 
	
		
			
				|  |  |              },
 | 
	
		
			
				|  |  | +            pageName:{
 | 
	
		
			
				|  |  | +                type: String,
 | 
	
		
			
				|  |  | +                default: '',
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          components: {},
 | 
	
		
			
				|  |  |          data () {
 | 
	
		
			
				|  |  |              return {
 | 
	
		
			
				|  |  | +                isShowDetails:false,
 | 
	
		
			
				|  |  | +                headerList:[],
 | 
	
		
			
				|  |  | +                detailsData:[]
 | 
	
		
			
				|  |  |                  
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          created(){
 | 
	
		
			
				|  |  |              // 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>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -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) {
 | 
	
		
			
				|  |  |    //概况
 | 
	
		
			
				|  |  |      .numerical{
 |