From c9adc35d48a65c29db7c59722192311070c33e61 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 02 Aug 2022 16:32:01 +0800
Subject: [PATCH] 地图模式相关更改

---
 vue.config.js                        |    3 
 src/components/map/plotMap.vue       |   18 ++
 src/views/land/LandDetail.vue        |   90 +++++++-------
 src/views/land/getMapDataInThere.vue |   39 +++---
 src/api/land/land.js                 |   19 +++
 src/views/mapPattern/index.vue       |  174 +++++++++++++++++++++++++++-
 src/styles/element-ui.scss           |   13 ++
 7 files changed, 282 insertions(+), 74 deletions(-)

diff --git a/src/api/land/land.js b/src/api/land/land.js
index 3817b91..25f0b57 100644
--- a/src/api/land/land.js
+++ b/src/api/land/land.js
@@ -1,3 +1,11 @@
+/*
+ * @Author: shuishen 1109946754@qq.com
+ * @Date: 2022-08-02 11:43:42
+ * @LastEditors: shuishen 1109946754@qq.com
+ * @LastEditTime: 2022-08-02 15:56:01
+ * @FilePath: \zhny_web\src\api\land\land.js
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
 import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
@@ -77,3 +85,14 @@
       }
   })
 }
+
+export const submit = (params) => {
+    return request({
+        url: '/api/land/land/submit',
+        method: 'post',
+        data: {
+          ...params
+        }
+    })
+  }
+  
\ No newline at end of file
diff --git a/src/components/map/plotMap.vue b/src/components/map/plotMap.vue
index 0e9d0bc..8f78a7e 100644
--- a/src/components/map/plotMap.vue
+++ b/src/components/map/plotMap.vue
@@ -285,8 +285,10 @@
                 that.$parent.plotDetailsPopupShow(e.overlay.attrParams)
             })
 
+            console.log(item, 123)
+
             plotRegionLayer.addOverlay(polygon)
-            addPlotLayers.push({ center, name: item.landName })
+            addPlotLayers.push({ center, name: item.landName, id: item.id })
         },
 
         setCenter (name) {
@@ -337,6 +339,20 @@
             })
         },
 
+        setPlotAttr (params) {
+            let overLayers = plotRegionLayer.getOverlays()
+
+            overLayers.some(item => {
+
+                if (item.attrParams.id == params.id) {
+                    item.attrParams = params
+
+                    return true
+                }
+
+            })
+        },
+
         // 经纬度测算中心位置
         getCenter (arr) {
             let centerLonLat = []
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index 21188cf..4d94891 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -137,4 +137,17 @@
     }
 
 
+}
+
+.plot-detail-popup {
+    .header {
+        .plot-name {
+            input {
+                background: transparent;
+                color: #fff;
+                font-weight: bold;
+                border: none;
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/views/land/LandDetail.vue b/src/views/land/LandDetail.vue
index 6f2ad9a..85ab848 100644
--- a/src/views/land/LandDetail.vue
+++ b/src/views/land/LandDetail.vue
@@ -2,7 +2,7 @@
     <div class="wraaper-box farming-detail-box">
         <div class="dd">
             <div class="da">
-<!--                <div class="land-img" @click="mod(usePolygons)">-->
+                <!--                <div class="land-img" @click="mod(usePolygons)">-->
                 <div class="land-img">
                     <img :src="url" class="landimg" />
                 </div>
@@ -38,26 +38,26 @@
                     </el-tab-pane>
                     <!-- 农资记录 -->
                     <el-tab-pane label="农资使用记录" name="tab4">
-                      <stockUseInfo></stockUseInfo>
+                        <stockUseInfo></stockUseInfo>
                     </el-tab-pane>
                 </el-tabs>
             </div>
         </div>
 
-<!--        <el-dialog-->
-<!--            title="地块位置"-->
-<!--            class="current-map-box"-->
-<!--            :visible.sync="gradeBoxVisible1"-->
-<!--            :modal="true"-->
-<!--            :modal-append-to-body="true"-->
-<!--            :append-to-body="true"-->
-<!--            :close-on-click-modal="false"-->
-<!--            :close-on-press-escape="false"-->
-<!--            :before-close="dialogBeforeClose"-->
-<!--        >-->
-<!--            <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>-->
-<!--            <el-button class="save" type="success" @click="upLand()">保存</el-button>-->
-<!--        </el-dialog>-->
+        <!--        <el-dialog-->
+        <!--            title="地块位置"-->
+        <!--            class="current-map-box"-->
+        <!--            :visible.sync="gradeBoxVisible1"-->
+        <!--            :modal="true"-->
+        <!--            :modal-append-to-body="true"-->
+        <!--            :append-to-body="true"-->
+        <!--            :close-on-click-modal="false"-->
+        <!--            :close-on-press-escape="false"-->
+        <!--            :before-close="dialogBeforeClose"-->
+        <!--        >-->
+        <!--            <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>-->
+        <!--            <el-button class="save" type="success" @click="upLand()">保存</el-button>-->
+        <!--        </el-dialog>-->
         <landUpdate v-if="landVisible" ref="landUpdate" id="landUpdate"></landUpdate>
     </div>
 </template>
@@ -69,7 +69,7 @@
 import recovery from "@/views/recovery/recovery.vue"
 import stockUseInfo from "@/views/farm/stockUseInfo.vue"
 import getMapDataInThere from "./getMapDataInThere.vue"
-import {getList, remove, update} from "@/api/land/land"
+import { getList, remove, update } from "@/api/land/land"
 import landUpdate from "./landUpdate"
 
 export default {
@@ -131,18 +131,18 @@
     methods: {
         //圈地
         land () {
-          this.landVisible = true
-          this.$nextTick(() => {
-            this.$refs.landUpdate.init()
-          })
+            this.landVisible = true
+            this.$nextTick(() => {
+                this.$refs.landUpdate.init()
+            })
         },
         openLandUpdate (page, params = {}) {
-          console.log('11111111111refreshOnLoad')
-          // getList(1, 10, Object.assign(params, this.query)).then(res => {
-          //   const data = res.data.data
-          //
-          //   this.farmPlanList = data.records
-          // })
+            console.log('11111111111refreshOnLoad')
+            // getList(1, 10, Object.assign(params, this.query)).then(res => {
+            //   const data = res.data.data
+            //
+            //   this.farmPlanList = data.records
+            // })
         },
         mod (usePolygons) {
             this.gradeBoxVisible1 = true
@@ -178,7 +178,7 @@
             if (this.polygons.length == 0) {
                 //没有面的数据
                 this.$refs.getMapData.isCheck = true
-                loading()
+                // loading()
             } else {
                 //如果有值,空间坐标转换
                 let pol = this.polygons
@@ -211,24 +211,24 @@
         }
     },
     watch: {
-      '$route.query': {
-        immediate: true,
-        handler(newData, oldData) {
-          this.url = this.$route.query.url
-          this.landName = this.$route.query.landName
-          this.dic = this.$route.query.dic
-          this.landArea = this.$route.query.landArea
-          this.dica = this.$route.query.dica
-          this.deptname = this.$route.query.deptname
-          this.delId = this.$route.query.id
-          this.landUnit = this.$route.query.landUnit
-          // this.form = res.data.data;
-          this.usePolygons = this.$route.query.landRange
-            .split("POLYGON((")[1]
-            .split("))")[0]
-            .split(",")
+        '$route.query': {
+            immediate: true,
+            handler (newData, oldData) {
+                this.url = this.$route.query.url
+                this.landName = this.$route.query.landName
+                this.dic = this.$route.query.dic
+                this.landArea = this.$route.query.landArea
+                this.dica = this.$route.query.dica
+                this.deptname = this.$route.query.deptname
+                this.delId = this.$route.query.id
+                this.landUnit = this.$route.query.landUnit
+                // this.form = res.data.data;
+                this.usePolygons = this.$route.query.landRange
+                    .split("POLYGON((")[1]
+                    .split("))")[0]
+                    .split(",")
+            }
         }
-      }
     },
 }
 </script>
diff --git a/src/views/land/getMapDataInThere.vue b/src/views/land/getMapDataInThere.vue
index 781985e..a74db44 100644
--- a/src/views/land/getMapDataInThere.vue
+++ b/src/views/land/getMapDataInThere.vue
@@ -19,10 +19,11 @@
 export default {
     name: "getMapData",
     props: {
-      currentPolygons: {
-        type: Array,
-        default: []
-      }
+        currentPolygons: {
+            type: Array,
+            // eslint-disable-next-line vue/require-valid-default-prop
+            default: []
+        }
     },
     components: {
         MapInThere,
@@ -44,16 +45,16 @@
                 this.isCheck = false
             }
         },
-      currentPolygons: {
-          immediate: true,
-        handler (newData, oldData) {
-            console.log(newData, 5656)
-            if (newData.length > 0) {
+        currentPolygons: {
+            immediate: true,
+            handler (newData, oldData) {
+                console.log(newData, 5656)
+                if (newData.length > 0) {
 
-              this.draw(newData)
-            }
-        },
-      }
+                    this.draw(newData)
+                }
+            },
+        }
     },
     data () {
         return {
@@ -63,9 +64,10 @@
             animateEnter: "animated fadeIn",
             animateLeave: "animated fadeOut",
             //未输入动画效果
-            animateName: "custom-classes-transition",
-            animateEnter: "animated fadeInDown",
-            animateLeave: "animated fadeOut",
+
+
+
+
             openTitle: "路径1",
             MapDataShow: false,
             fromView: false,
@@ -80,7 +82,7 @@
     methods: {
         draw (usePolygons) {
 
-          console.log(usePolygons, 456)
+            console.log(usePolygons, 456)
 
             let arr = []
 
@@ -349,7 +351,8 @@
 .list-leave {
     opacity: 1;
 }
-​ .list-enter-active,
+
+.list-enter-active,
 .list-leave-active {
     transition: all 0.3s;
 }
diff --git a/src/views/mapPattern/index.vue b/src/views/mapPattern/index.vue
index c045e43..485ce09 100644
--- a/src/views/mapPattern/index.vue
+++ b/src/views/mapPattern/index.vue
@@ -1,6 +1,7 @@
 <template>
     <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">
                 <img src="../../../public/mg.png" />
@@ -22,6 +23,7 @@
                 <span>&nbsp;&nbsp;返回</span>
             </div>
         </div>
+
         <div class="farm-plant">
             <div class="title">
                 <span>种养品种 · {{ this.plotPlantBreed.length }}种</span>
@@ -36,6 +38,7 @@
                 </div>
             </div>
         </div>
+
         <div class="land-info">
             <div class="content">
                 <div>
@@ -53,6 +56,7 @@
                 </div>
             </div>
         </div>
+
         <div class="farm-land">
             <div class="title">
                 <span>地块 · {{ this.pageLand.total }}种</span>
@@ -74,10 +78,39 @@
         </div>
 
         <div class="plot-detail-popup" v-show="cPShow" ref="showCP">
+            <div class="close-plot-popup" @click="closePlotPopup">
+                <i class="el-icon-close" style="color: #fff;"></i>
+            </div>
+
             <div class="header">
                 <div class="plot-name">
-                    <div class="name">{{ currentPlotDetails.landName }}</div>
-                    <i class="el-icon-edit-outline" title="编辑地块名称"></i>
+                    <div v-show="!plotNameEditShow">
+                        <div
+                            class="name"
+                            style="font-weight: bold;"
+                        >{{ currentPlotDetails.landName }}</div>
+                        <i
+                            @click="plotNameEditShow=true"
+                            class="el-icon-edit-outline edit-btn"
+                            title="编辑地块名称"
+                            style="margin-left: 9px;"
+                        ></i>
+                    </div>
+
+                    <div v-show="plotNameEditShow" class="edit-name">
+                        <el-input style="flex: 1;" v-model="currentPlotName" size="small"></el-input>
+                        <div class="btn-grounp">
+                            <span class="edit-btn" @click="editName">保存</span>
+
+                            <span style="color: #999;">|</span>
+
+                            <span
+                                class="edit-btn"
+                                @click="plotNameEditShow=fasle"
+                                style="color: #acdcd0;"
+                            >取消</span>
+                        </div>
+                    </div>
                 </div>
                 <div class="plot-area-type">
                     <div class="l">
@@ -86,7 +119,7 @@
                             class="type"
                         >{{ currentPlotDetails.dic }}</span>
                     </div>
-                    <div class="r">
+                    <div class="r" @click="goToPlotDetail">
                         进入地块
                         <i class="el-icon-arrow-right"></i>
                     </div>
@@ -94,7 +127,12 @@
             </div>
 
             <div class="body">
-                <div class="list" v-for="(item, index) in cPPBreed" :key="index">
+                <div
+                    v-show="cPPBreed.length > 0"
+                    class="list"
+                    v-for="(item, index) in cPPBreed"
+                    :key="index"
+                >
                     <div class="l">
                         <img :src="item.url" />
                         {{ item.strainName }}
@@ -103,6 +141,11 @@
                         class="r"
                     >{{ item.createTime }}{{ item.plantingWay == 0 ? "移摘" : item.plantingWay == 1 ? "播种" : "秧苗" }}</div>
                 </div>
+
+                <div
+                    v-show="cPPBreed.length == 0"
+                    style="height: 100%; display: flex; align-items: center; justify-content: center;"
+                >暂无种养品种</div>
             </div>
         </div>
     </div>
@@ -111,7 +154,7 @@
 <script>
 import { mapGetters } from "vuex"
 import { getList } from "@/api/farmplant/farmplant"
-import { getList as getLandList, selectCount, getLandIsAreaStatistic } from "@/api/land/land"
+import { getList as getLandList, selectCount, getLandIsAreaStatistic, submit } from "@/api/land/land"
 import { getDetails } from "@/api/farm/farm"
 export default {
     components: {
@@ -141,6 +184,10 @@
 
             // 当前点击地块详情
             currentPlotDetails: {},
+            currentPlotName: "",
+
+            // 名称编辑是否显示
+            plotNameEditShow: false,
 
             plotClickNum: 0,
 
@@ -282,6 +329,7 @@
 
         plotDetailsPopupShow (params) {
             this.currentPlotDetails = params
+            this.currentPlotName = params.landName
 
             let arr = []
 
@@ -310,6 +358,65 @@
                     this.cPShow = false
                 }
             }
+        },
+
+        editName () {
+            if (this.currentPlotName == "") {
+                this.$message({
+                    message: '地块名称不能为空',
+                    type: "warning",
+                })
+                return
+            }
+
+            submit({
+                id: this.currentPlotDetails.id,
+                landName: this.currentPlotName
+            }).then(res => {
+                if (res.data.code == 200) {
+                    this.currentPlotDetails.landName = this.currentPlotName
+                    this.$refs.plotMap.setPlotAttr(this.currentPlotDetails)
+                    this.landList.some(item => {
+                        if (item.id == this.currentPlotDetails.id) {
+                            item.landName = this.currentPlotDetails.landName
+                            return true
+                        }
+                    })
+
+                    this.plotNameEditShow = false
+
+                    this.$message({
+                        message: '地块名称修改成功',
+                        type: "success",
+                    })
+                }
+            })
+        },
+
+        closePlotPopup () {
+            this.plotClickNum = 0
+            this.plotNameEditShow = false
+            this.cPShow = false
+        },
+
+        goToPlotDetail () {
+            this.landList.some(item => {
+                if (item.id == this.currentPlotDetails.id) {
+                    var arr = []
+                    this.$store.state.tags.tagList.forEach((item) => {
+                        if (item.label != "地块详情") {
+                            arr.push(item)
+                        }
+                    })
+                    this.$store.state.tags.tagList = arr
+
+                    this.$router.push({
+                        path: `/LandDetail`,
+                        query: item,
+                    })
+                    return true
+                }
+            })
         }
     }
 }
@@ -583,15 +690,29 @@
     z-index: 11;
     background: rgba(255, 255, 255, 0.9);
     border-radius: 8px;
-    overflow: hidden;
+
+    .close-plot-popup {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        position: absolute;
+        top: -10px;
+        right: -10px;
+        width: 20px;
+        height: 20px;
+        border-radius: 50%;
+        background: #ccc;
+    }
 
     .header {
         display: flex;
         flex-direction: column;
-        padding: 0 20px;
+        padding: 10px 20px;
         height: 80px;
         background: #2cd2a9;
         color: #fff;
+        border-radius: 8px 8px 0 0;
+        box-sizing: border-box;
 
         & > div {
             flex: 1;
@@ -600,10 +721,48 @@
         }
 
         .plot-name {
+            & > div {
+                display: flex;
+                align-items: center;
+            }
+
+            .edit-btn {
+                cursor: pointer;
+            }
+
+            .edit-name {
+                width: 100%;
+                background: rgba(0, 0, 0, 0.15);
+                border-radius: 4px;
+
+                .btn-grounp {
+                    margin-right: 15px;
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-around;
+                    width: 80px;
+                    font-size: 14px;
+                }
+            }
         }
 
         .plot-area-type {
             justify-content: space-between;
+            font-size: 14px;
+
+            .l {
+                color: #e7f7f3;
+
+                .type {
+                    padding: 2px 10px;
+                    border-radius: 11px;
+                    background-color: #31bd9a;
+                }
+            }
+
+            .r {
+                cursor: pointer;
+            }
         }
     }
 
@@ -614,6 +773,7 @@
         box-sizing: border-box;
         overflow-x: hidden;
         overflow-y: auto;
+        border-radius: 0 0 8px 8px;
 
         .list:first-child {
             margin: 0;
diff --git a/vue.config.js b/vue.config.js
index e6a5809..88ddef0 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -37,9 +37,6 @@
         entry.add('classlist-polyfill').end()
         entry.add('@/mock').end()
     },
-    css: {
-        extract: { ignoreOrder: true }
-    },
     //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
     devServer: {
         port: 1888,

--
Gitblit v1.9.3