| | |
| | | <template> |
| | | <div style="position: relative; height: 100%;"> |
| | | <div @click="bodyClick($event)" style="position: relative; height: 100%;"> |
| | | <plot-map ref="plotMap" style="position: absolute; width: 100%; height: 100%;"></plot-map> |
| | | <div class="top"> |
| | | <div class="logo"> |
| | |
| | | </div> |
| | | <div class="farm-plant"> |
| | | <div class="title"> |
| | | <span>种养品种 · {{ this.page.total }}种</span> |
| | | <span>种养品种 · {{ this.plotPlantBreed.length }}种</span> |
| | | </div> |
| | | <div class="content"> |
| | | <div class="list-item" v-for="(item, index) in farmPlantList" :key="index"> |
| | | <div class="list-item" v-for="(item, index) in plotPlantBreed" :key="index"> |
| | | <div class="item-img"> |
| | | <img :src="item.url" /> |
| | | <span>{{ item.strainName }}</span> |
| | |
| | | 有轮廓的地块: |
| | | <span |
| | | style="font-size: 26px;font-weight: bold;color: #5ABF78;" |
| | | >{{landIsAreaStatistic[0]}}</span> |
| | | >{{landIsAreaStatistic.length > 0 ? landIsAreaStatistic[0] : 0}}</span> |
| | | </div> |
| | | |
| | | <div> |
| | | 无轮廓的地块: |
| | | <span |
| | | style="font-size: 26px;font-weight: bold;color: #E3B745;" |
| | | >{{landIsAreaStatistic[1]}}</span> |
| | | >{{landIsAreaStatistic.length > 1 ? landIsAreaStatistic[1] : 0}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>地块 · {{ this.pageLand.total }}种</span> |
| | | </div> |
| | | <div class="content"> |
| | | <div class="list-item" v-for="(item, index) in landList" :key="index"> |
| | | <div |
| | | class="list-item" |
| | | v-for="(item, index) in landList" |
| | | :key="index" |
| | | @click="setCenter(item)" |
| | | > |
| | | <div class="item-img"> |
| | | <img :src="item.url" /> |
| | | <span>{{ item.landName }}</span> |
| | | </div> |
| | | <div class="item-num">{{ item.landArea }}亩</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="plot-detail-popup" v-show="cPShow" ref="showCP"> |
| | | <div class="header"> |
| | | <div class="plot-name"> |
| | | <div class="name">{{ currentPlotDetails.landName }}</div> |
| | | <i class="el-icon-edit-outline" title="编辑地块名称"></i> |
| | | </div> |
| | | <div class="plot-area-type"> |
| | | <div class="l"> |
| | | 占地面积:{{ currentPlotDetails.landArea }}{{ currentPlotDetails.dica }} |
| | | <span |
| | | class="type" |
| | | >{{ currentPlotDetails.dic }}</span> |
| | | </div> |
| | | <div class="r"> |
| | | 进入地块 |
| | | <i class="el-icon-arrow-right"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="body"> |
| | | <div class="list" v-for="(item, index) in cPPBreed" :key="index"> |
| | | <div class="l"> |
| | | <img :src="item.url" /> |
| | | {{ item.strainName }} |
| | | </div> |
| | | <div |
| | | class="r" |
| | | >{{ item.createTime }}{{ item.plantingWay == 0 ? "移摘" : item.plantingWay == 1 ? "播种" : "秧苗" }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | total: 0, |
| | | }, |
| | | farmPlantList: [], |
| | | |
| | | // 数据合并后的种养品种 |
| | | plotPlantBreed: [], |
| | | |
| | | // 当前地块种养品种 |
| | | cPPBreed: [], |
| | | |
| | | // 当前地块对应弹框 |
| | | cPShow: false, |
| | | |
| | | // 当前点击地块详情 |
| | | currentPlotDetails: {}, |
| | | |
| | | plotClickNum: 0, |
| | | |
| | | landList: [], |
| | | farmInfo: {}, |
| | | landAreaInfo: {}, |
| | | landIsAreaStatistic: [0, 0], |
| | | landIsAreaStatistic: [], |
| | | } |
| | | |
| | | }, |
| | |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.farmPlantList = data.records |
| | | |
| | | let arr = [] |
| | | this.farmPlantList.forEach(item => { |
| | | if (arr.length > 0) { |
| | | let result = arr.some(it => { |
| | | if (item.strainName == it.strainName) { |
| | | it.area += Number(item.area) |
| | | |
| | | return true |
| | | } |
| | | }) |
| | | |
| | | if (!result) { |
| | | arr.push({ |
| | | strainName: item.strainName, |
| | | area: Number(item.area), |
| | | url: item.url |
| | | }) |
| | | } |
| | | } else { |
| | | arr.push({ |
| | | strainName: item.strainName, |
| | | area: Number(item.area), |
| | | url: item.url |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | this.plotPlantBreed = arr |
| | | |
| | | |
| | | this.loading = false |
| | | |
| | | |
| | | |
| | | // this.selectionClear() |
| | | }) |
| | | }, |
| | |
| | | console.log(res) |
| | | this.landIsAreaStatistic = res.data.data |
| | | }) |
| | | }, |
| | | |
| | | // 地块定位 |
| | | setCenter (item) { |
| | | this.$refs.plotMap.setPlotCenter(item.landName) |
| | | }, |
| | | |
| | | plotDetailsPopupShow (params) { |
| | | this.currentPlotDetails = params |
| | | |
| | | let arr = [] |
| | | |
| | | this.farmPlantList.forEach((item, index) => { |
| | | if (params.id == item.landId) { |
| | | arr.push(item) |
| | | } |
| | | }) |
| | | |
| | | this.cPPBreed = arr |
| | | |
| | | this.cPShow = true |
| | | }, |
| | | |
| | | bodyClick (e) { |
| | | if (this.plotClickNum == 0) { |
| | | this.plotClickNum++ |
| | | return |
| | | } |
| | | |
| | | if (this.$refs.showCP) { |
| | | console.log(1) |
| | | let isSelf = this.$refs.showCP.contains(e.target) |
| | | if (!isSelf) { |
| | | this.plotClickNum = 0 |
| | | this.cPShow = false |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scope> |
| | | .top { |
| | | position: absolute; |
| | |
| | | border-bottom: 1px solid #cccccc; |
| | | flex-flow: row nowrap; |
| | | justify-content: space-between; |
| | | cursor: pointer; |
| | | |
| | | .item-img { |
| | | margin-left: 5px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .plot-detail-popup { |
| | | position: fixed; |
| | | top: 50%; |
| | | left: 50%; |
| | | |
| | | width: 462px; |
| | | height: 262px; |
| | | |
| | | transform: translate(-50%, -50%); |
| | | z-index: 11; |
| | | background: rgba(255, 255, 255, 0.9); |
| | | border-radius: 8px; |
| | | overflow: hidden; |
| | | |
| | | .header { |
| | | display: flex; |
| | | flex-direction: column; |
| | | padding: 0 20px; |
| | | height: 80px; |
| | | background: #2cd2a9; |
| | | color: #fff; |
| | | |
| | | & > div { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .plot-name { |
| | | } |
| | | |
| | | .plot-area-type { |
| | | justify-content: space-between; |
| | | } |
| | | } |
| | | |
| | | .body { |
| | | padding: 10px 20px; |
| | | height: calc(100% - 80px); |
| | | background: rgba(0, 0, 0, 0); |
| | | box-sizing: border-box; |
| | | overflow-x: hidden; |
| | | overflow-y: auto; |
| | | |
| | | .list:first-child { |
| | | margin: 0; |
| | | } |
| | | |
| | | .list { |
| | | margin-top: 10px; |
| | | padding: 0 10px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 50px; |
| | | background: #fff; |
| | | font-size: 14px; |
| | | |
| | | .l { |
| | | display: flex; |
| | | align-items: center; |
| | | color: #2cd2a9; |
| | | |
| | | img { |
| | | margin-right: 10px; |
| | | width: 30px; |
| | | height: 30px; |
| | | } |
| | | } |
| | | |
| | | .r { |
| | | color: #999; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |