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