From b5f7b312745b0788b4fa246591ff4884b01ff436 Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Sat, 03 Sep 2022 17:46:07 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/zhny_web

---
 src/views/wel/land.vue |  260 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 197 insertions(+), 63 deletions(-)

diff --git a/src/views/wel/land.vue b/src/views/wel/land.vue
index 1f26d0a..204f4bc 100644
--- a/src/views/wel/land.vue
+++ b/src/views/wel/land.vue
@@ -4,51 +4,59 @@
     :modal-append-to-body="false"
     :append-to-body="true"
     :close-on-click-modal="false"
-    width="60%"
+    width="80%"
+    top="10vh"
     :visible.sync="visible"
   >
     <avue-form ref="form" v-model="form" :option="option" @submit="submit">
       <!-- 地图插入 -->
       <template slot-scope="{ type, disabled }" slot="line">
-        <getMapDataInThere
+        <!-- <getMapDataInThere
           ref="getMapData"
           id="getMapData"
           @setMapData="setMapData"
-        ></getMapDataInThere>
+        ></getMapDataInThere> -->
       </template>
     </avue-form>
+
+    <div class="map">
+      <iframe :src="url" frameborder="0" width="100%" height="100%"></iframe>
+    </div>
   </el-dialog>
 </template>
 
 <script>
-
-import {mapGetters} from "vuex";
+import { mapGetters } from "vuex";
 import { getLandList } from "@/api/land/land";
+import { getDetail } from "@/api/farm/farm";
 import { getStrainList } from "@/api/farmplant/strain";
-import {add} from "@/api/land/land";
+import { add } from "@/api/land/land";
 import getMapDataInThere from "./getMapDataInThere.vue";
-import {getFarmList} from "@/api/farm/farm";
+import { getFarmList } from "@/api/farm/farm";
 export default {
   components: {
-    getMapDataInThere
+    getMapDataInThere,
   },
   data() {
     return {
-      title:"新增地块",
+      title: "新增地块",
       form: {},
       option: {
         emptyBtn: false,
         submitText: "保存",
+        submitBtn: false,
         gutter: 30,
         column: [
           {
             label: "地块名称",
             prop: "landName",
-            rules: [{
-              required: true,
-              message: "请输入地块名称",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: "请输入地块名称",
+                trigger: "blur",
+              },
+            ],
           },
           {
             label: "所属农场",
@@ -57,15 +65,17 @@
             dicData: [],
             props: {
               label: "farmName",
-              value:"id"
+              value: "id",
             },
-            disabled:true,
+            disabled: true,
             slot: true,
-            rules: [{
-              required: true,
-              message: "请选择所属农场",
-              trigger: "click"
-            }]
+            rules: [
+              {
+                required: true,
+                message: "请选择所属农场",
+                trigger: "click",
+              },
+            ],
           },
           {
             label: "地块类型",
@@ -74,53 +84,124 @@
             dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
             props: {
               label: "dictValue",
-              value: "dictKey"
+              value: "dictKey",
             },
             dataType: "number",
-            rules: [{
-              required: true,
-              message: "请选择地块类型",
-              trigger: "blur"
-            }]
+            rules: [
+              {
+                required: true,
+                message: "请选择地块类型",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "面积",
+            prop: "landArea",
+            rules: [
+              {
+                required: true,
+                message: "请输入面积",
+                trigger: "click",
+              },
+            ],
+            span: 6,
+            type: "number",
+            controls: false,
           },
           {
             label: "面积单位",
             prop: "landUnit",
             type: "select",
-            value:"0",
+            value: "0",
             dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
             props: {
               label: "dictValue",
-              value: "dictKey"
+              value: "dictKey",
             },
             dataType: "number",
             span: 6,
           },
-          {
-            label: "地块展示",
-            labelWidth: "0",
-            prop: "line",
-            className: "mapClass",
-            span: 24,
-            formslot: true,
-          }
+          // {
+          //   label: "地块展示",
+          //   labelWidth: "0",
+          //   prop: "line",
+          //   className: "mapClass",
+          //   span: 24,
+          //   formslot: true,
+          // }
         ],
       },
+      url: "",
+      landUrl: "",
+      polygon: [],
+      area: "",
       visible: false,
     };
   },
+  created() {
+    this.url =
+      this.drawMapUrlBase + "/base?type=1&lng=112&lat=24&status=manage";
+  },
+  watch: {
+    landUrl: {
+      handler(newVal, oldVal) {
+        if (newVal) {
+          this.$refs.form.submit();
+        }
+      },
+    },
+    "form.landName": {
+      handler(newVal, oldVal) {
+        this.landUrl = "";
+      },
+    },
+    "form.landType": {
+      handler(newVal, oldVal) {
+        this.landUrl = "";
+      },
+    },
+    "form.landArea": {
+      handler(newVal, oldVal) {
+        this.landUrl = "";
+      },
+    },
+    "form.landUnit": {
+      handler(newVal, oldVal) {
+        this.landUrl = "";
+      },
+    },
+  },
   computed: {
-    ...mapGetters(["userInfo", "permission", "polygons","$farmId"]),
+    ...mapGetters([
+      "userInfo",
+      "permission",
+      "polygons",
+      "$farmId",
+      "drawMapUrlBase",
+    ]),
   },
   mounted() {
     this.initData(this.userInfo.tenant_id);
+    window.addEventListener("message", this.handleMessage);
   },
   methods: {
+    handleMessage(event) {
+      if (Number.isFinite(event.data)) {
+        this.form.landArea = (event.data * 0.0015).toFixed(2);
+      }
+
+      if (Object.prototype.toString.call(event.data) === "[object Object]") {
+        var obj = event.data;
+        this.polygon = obj.polygons;
+        this.landUrl = obj.url;
+      }
+    },
     initData(tenantId) {
       const data = {
-        deptId:this.userInfo.dept_id
-      }
-      getFarmList(data).then(res => {
+        deptId: this.userInfo.dept_id,
+      };
+      getFarmList(data).then((res) => {
         const column = this.findObject(this.option.column, "farmId");
         column.dicData = res.data.data;
       });
@@ -128,20 +209,57 @@
     //初始化
     init() {
       //计算当前时间
+      this.form.landArea = 0
       this.visible = true;
-      this.form.farmId = this.$farmId
+      this.form.farmId = this.$farmId;
+
+      getDetail(this.form.farmId).then(res=>{
+        this.farmInfo = res.data.data
+        this.url = this.drawMapUrlBase + "/base?type=1&lng=112&lat=24&status=manage&longitude="+this.farmInfo.longitude+"&latitude="+this.farmInfo.latitude;
+      })
     },
     // 表单提交
-    submit(row,done) {
+    submit(row, done) {
       var that = this;
-      if (this.polygons.length == 0) {
+
+      // if (this.polygons.length == 0) {
+      //   //没有面的数据
+      //   this.$refs.getMapData.isCheck = true;
+      //   done();
+      // } else {
+      //   //如果有值,空间坐标转换
+      //   let pol = this.polygons;
+      //   let polLength = this.polygons.length - 1;
+      //   let usePolygons = "";
+      //   for (let k in pol) {
+      //     usePolygons += pol[k].lng + "," + pol[k].lat;
+      //     if (k != polLength) {
+      //       usePolygons += ";";
+      //     }
+      //   }
+      //   //设置坐标点
+      //   row.userId = this.userInfo.user_id;
+      //   row.landRange = usePolygons;
+      // }
+      var poly = [];
+      if (this.polygon.length != 0) {
+        this.polygon.forEach((e) => {
+          poly.push({
+            lng: e[0],
+            lat: e[1],
+          });
+        });
+        this.polygon = poly;
+      }
+
+      if (this.polygon.length == 0) {
         //没有面的数据
-        this.$refs.getMapData.isCheck = true;
-        done();
+        // this.$refs.getMapData.isCheck = true
+        // loading()
       } else {
         //如果有值,空间坐标转换
-        let pol = this.polygons;
-        let polLength = this.polygons.length - 1;
+        let pol = this.polygon;
+        let polLength = this.polygon.length - 1;
         let usePolygons = "";
         for (let k in pol) {
           usePolygons += pol[k].lng + "," + pol[k].lat;
@@ -153,22 +271,35 @@
         row.userId = this.userInfo.user_id;
         row.landRange = usePolygons;
       }
-      row['tenantId'] = this.userInfo.tenant_id;
-      row['deptId'] = this.userInfo.dept_id;
-      add(row).then(() => {
-        that.$refs.form.resetFields();
-        this.form.landUnit = "0"
-        that.visible = false;
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-        this.$emit("refreshOnLoad")
+
+      row["tenantId"] = this.userInfo.tenant_id;
+      row["deptId"] = this.userInfo.dept_id;
+      row["url"] = this.landUrl;
+      // row['landArea'] = this.area
+
+      if (row.landArea < 0) {
+        this.$message.warning("地块面积不能为负数");
         done();
-      }, error => {
-        done();
-        window.console.log(error);
-      });
+        return;
+      }
+
+      add(row).then(
+        () => {
+          that.$refs.form.resetFields();
+          this.form.landUnit = "0";
+          that.visible = false;
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$emit("refreshOnLoad");
+          done();
+        },
+        (error) => {
+          done();
+          window.console.log(error);
+        }
+      );
     },
     setMapData(val) {
       this.LineData = val[0];
@@ -189,4 +320,7 @@
   top: 10px;
   left: 90px;
 }
+.map {
+  height: 450px;
+}
 </style>

--
Gitblit v1.9.3