From 5d39c1041c0c5094d140623e5fb3ac388b8d2691 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 02 Aug 2022 11:43:40 +0800
Subject: [PATCH] 地图
---
src/views/mapPattern/index.vue | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 210 insertions(+), 7 deletions(-)
diff --git a/src/views/mapPattern/index.vue b/src/views/mapPattern/index.vue
index 89376b7..c045e43 100644
--- a/src/views/mapPattern/index.vue
+++ b/src/views/mapPattern/index.vue
@@ -1,5 +1,5 @@
<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">
@@ -24,10 +24,10 @@
</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>
@@ -42,14 +42,14 @@
有轮廓的地块:
<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>
@@ -58,12 +58,50 @@
<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>
@@ -91,10 +129,25 @@
total: 0,
},
farmPlantList: [],
+
+ // 数据合并后的种养品种
+ plotPlantBreed: [],
+
+ // 当前地块种养品种
+ cPPBreed: [],
+
+ // 当前地块对应弹框
+ cPShow: false,
+
+ // 当前点击地块详情
+ currentPlotDetails: {},
+
+ plotClickNum: 0,
+
landList: [],
farmInfo: {},
landAreaInfo: {},
- landIsAreaStatistic: [0, 0],
+ landIsAreaStatistic: [],
}
},
@@ -126,7 +179,41 @@
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()
})
},
@@ -186,10 +273,48 @@
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;
@@ -414,6 +539,7 @@
border-bottom: 1px solid #cccccc;
flex-flow: row nowrap;
justify-content: space-between;
+ cursor: pointer;
.item-img {
margin-left: 5px;
@@ -444,4 +570,81 @@
}
}
}
+
+.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>
--
Gitblit v1.9.3