智慧农业后台管理页面
guanqb
2022-09-03 b5f7b312745b0788b4fa246591ff4884b01ff436
Merge branch 'master' of http://192.168.0.105:10010/r/zhny_web
11 files modified
1329 ■■■■■ changed files
src/components/map/mainInThere.vue 29 ●●●● patch | view | raw | blame | history
src/store/getters.js 1 ●●●● patch | view | raw | blame | history
src/store/modules/user.js 3 ●●●● patch | view | raw | blame | history
src/views/farm/farm.vue 26 ●●●● patch | view | raw | blame | history
src/views/farm/farmInfoDetail.vue 20 ●●●● patch | view | raw | blame | history
src/views/farmplant/farmplant.vue 3 ●●●● patch | view | raw | blame | history
src/views/land/landAdd.vue 495 ●●●●● patch | view | raw | blame | history
src/views/land/landUpdate.vue 478 ●●●●● patch | view | raw | blame | history
src/views/remote/remote.vue 12 ●●●●● patch | view | raw | blame | history
src/views/traceability/details.vue 2 ●●● patch | view | raw | blame | history
src/views/wel/land.vue 260 ●●●● patch | view | raw | blame | history
src/components/map/mainInThere.vue
@@ -113,7 +113,12 @@
        //面实例
        zIndex: 22,
        source: new VectorSource()
      })
      }),
      urls:[
        "http://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0",
        "http://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e9533f5acb2ac470b07f406a4d24b4f0"
      ],
      imgSrc:''
    };
  },
  computed: {
@@ -134,9 +139,21 @@
        new OlLayerTile({
          zIndex: 4,
          title: "影像",
          source: new XYZ({
            url:
              "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal" // 行政区划
          source:
          new XYZ({
            // url:
            //   "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal" // 行政区划
            url:this.urls[0]
          })
        }),
        new OlLayerTile({
          zIndex: 5,
          title: "区划",
          source:
          new XYZ({
            // url:
            //   "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal" // 行政区划
            url:this.urls[1],
          })
        })
      ],
@@ -155,8 +172,8 @@
    var view = ol2d.getView();
    this.source = new VectorSource({ wrapX: false });
    view.setCenter([115.9032747077233, 28.67433116990186]);
    // view.setCenter([115.9032747077233, 28.67433116990186]);
    view.setCenter([116.56705776, 27.42386903]);
    this.view = view;
  },
  methods: {
src/store/getters.js
@@ -22,6 +22,7 @@
    menu: state => state.user.menu,
    menuId: state => state.user.menuId,
    menuAll: state => state.user.menuAll,
    drawMapUrlBase: state => state.user.drawMapUrlBase,
    logsList: state => state.logs.logsList,
    logsLen: state => state.logs.logsList.length || 0,
    logsFlag: (state, getters) => getters.logsLen === 0,
src/store/modules/user.js
@@ -51,7 +51,8 @@
    menuAll: getStore({name: 'menuAll'}) || [],
    token: getStore({name: 'token'}) || '',
    refreshToken: getStore({name: 'refreshToken'}) || '',
    $farmId: 0
    $farmId: 0,
    drawMapUrlBase: 'http://182.106.212.58:8013'
  },
  actions: {
    loginInfoByToken({commit}) {
src/views/farm/farm.vue
@@ -31,9 +31,9 @@
                >删 除</el-button>
            </template>
            <!-- 地图插入 -->
            <template slot-scope="{ type, disabled }" slot="lineForm">
            <!-- <template slot-scope="{ type, disabled }" slot="lineForm">
                <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>
            </template>
            </template> -->
            <template slot-scope="{ type, size, row }" slot="menu">
                <el-button
                    icon="el-icon-view"
@@ -236,17 +236,17 @@
                        },
                        action: "/api/blade-resource/oss/endpoint/put-files"
                    },
                    {
                        label: "路线展示",
                        labelWidth: 145,
                        prop: "line",
                        className: "mapClass",
                        hide: true,
                        display: true,
                        span: 24,
                        formslot: true,
                        addDisplay: true
                    }
                    // {
                    //     label: "路线展示",
                    //     labelWidth: 145,
                    //     prop: "line",
                    //     className: "mapClass",
                    //     hide: true,
                    //     display: true,
                    //     span: 24,
                    //     formslot: true,
                    //     addDisplay: true
                    // }
                ],
            }
        }
src/views/farm/farmInfoDetail.vue
@@ -5,13 +5,13 @@
            <basic-container>
                <avue-form ref="form" v-model="objBase" :option="optionBase" @submit="submitBase">
                    <!-- 地图插入 -->
                    <template slot-scope="{}" slot="position">
                    <!-- <template slot-scope="{}" slot="position">
                        <getMapDataInThere
                            ref="getMapData"
                            id="getMapData"
                            @setMapData="setMapData"
                        ></getMapDataInThere>
                    </template>
                    </template> -->
                </avue-form>
            </basic-container>
        </el-tab-pane>
@@ -160,14 +160,14 @@
                                },
                                action: "/api/blade-resource/oss/endpoint/put-files"
                            },
                            {
                                label: "农场位置",
                                prop: "position",
                                className: "mapClass",
                                span: 24,
                                formslot: true,
                                labelWidth: 145,
                            },
                            // {
                            //     label: "农场位置",
                            //     prop: "position",
                            //     className: "mapClass",
                            //     span: 24,
                            //     formslot: true,
                            //     labelWidth: 145,
                            // },
                        ],
                    },
                ],
src/views/farmplant/farmplant.vue
@@ -30,7 +30,7 @@
                >删 除</el-button>
            </template>
            <template slot-scope="{ type, size, row }" slot="menu">
              <el-button icon="el-icon-check" :size="size" :type="type" @click="recovery(row)">采 收</el-button>
              <el-button :disabled="row.plantingWay == 2" icon="el-icon-check" :size="size" :type="type" @click="recovery(row)">采 收</el-button>
              <!-- <el-button icon="el-icon-error" :size="size" :type="type" @click="over(row.id)">结 束</el-button> -->
              <el-button icon="el-icon-error" :size="size" :type="type" @click="getData(row)">结 束</el-button>
@@ -675,7 +675,6 @@
    methods: {
        //初始化数据
        initData () {
            console.log(this.$farmId,66666666666)
            var that = this
            //获取农地数据
            getLandList(this.$farmId).then((res) => {
src/views/land/landAdd.vue
@@ -1,194 +1,343 @@
<template>
    <el-dialog
        :title="title"
        :modal-append-to-body="false"
        :append-to-body="true"
        :close-on-click-modal="false"
        width="60%"
        :visible.sync="visible"
    >
        <avue-form ref="form" v-model="form" :option="option" @submit="submit">
            <!-- 地图插入 -->
            <template slot-scope="{ type, disabled }" slot="line">
                <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>
            </template>
        </avue-form>
    </el-dialog>
  <el-dialog
    :title="title"
    :modal-append-to-body="false"
    :append-to-body="true"
    :close-on-click-modal="false"
    width="80%"
    :visible.sync="visible"
    top="10vh"
  >
    <avue-form ref="form" v-model="form" :option="option" @submit="submit">
      <!-- 地图插入 -->
      <template slot-scope="{ type, disabled }" slot="line">
        <!-- <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></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 { getFarmList } from "@/api/farm/farm"
import { getDeptTree } from "@/api/system/dept"
import { add } from "@/api/land/land"
import website from '@/config/website'
import getMapDataInThere from "./getMapDataInThere.vue"
import { mapGetters } from "vuex";
import { getFarmList,getDetail } from "@/api/farm/farm";
import { getDeptTree } from "@/api/system/dept";
import { add } from "@/api/land/land";
import website from "@/config/website";
import domtoimage from "dom-to-image";
import h2 from "html2canvas";
import getMapDataInThere from "./getMapDataInThere.vue";
import { number } from "echarts";
// import canvas2Image from 'canvas2Image'
export default {
    components: {
        getMapDataInThere
    },
    data () {
        return {
            title: "新增地块",
            form: {},
            option: {
                emptyBtn: false,
                submitText: "保存",
                gutter: 30,
                column: [
                    {
                        label: "地块名称",
                        prop: "landName",
                        rules: [{
                            required: true,
                            message: "请输入地块名称",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "所属农场",
                        prop: "farmId",
                        type: "tree",
                        value:"",
                        dicData: [],
                        props: {
                            label: "farmName",
                            value: "id"
                        },
                        disabled:true,
                        slot: true,
                        rules: [{
                            required: true,
                            message: "请选择所属农场",
                            trigger: "click"
                        }]
                    },
                    {
                        label: "地块类型",
                        type: "select",
                        prop: "landType",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        dataType: "number",
                        rules: [{
                            required: true,
                            message: "请选择地块类型",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "面积单位",
                        prop: "landUnit",
                        value: "0",
                        type: "select",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        rules: [{
                            required: true,
                            message: "请选择面积单位",
                            trigger: "click"
                        }],
                        dataType: "number",
                        span: 6,
                    },
                    {
                        label: "地块展示",
                        labelWidth: "0",
                        prop: "line",
                        className: "mapClass",
                        span: 24,
                        formslot: true,
                    }
                ],
  components: {
    getMapDataInThere,
  },
  data() {
    return {
      title: "新增地块",
      form: {},
      option: {
        emptyBtn: false,
        submitText: "保存",
        submitBtn: false,
        gutter: 30,
        column: [
          {
            label: "地块名称",
            prop: "landName",
            rules: [
              {
                required: true,
                message: "请输入地块名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "所属农场",
            prop: "farmId",
            type: "tree",
            value: "",
            dicData: [],
            props: {
              label: "farmName",
              value: "id",
            },
            visible: false,
            disabled: true,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择所属农场",
                trigger: "click",
              },
            ],
          },
          {
            label: "地块类型",
            type: "select",
            prop: "landType",
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            dataType: "number",
            rules: [
              {
                required: true,
                message: "请选择地块类型",
                trigger: "blur",
              },
            ],
          },
          {
            label: "面积",
            prop: "landArea",
            rules: [
              {
                required: true,
                message: "请输入面积",
                trigger: "click",
              },
            ],
            span: 6,
            type: "number",
            controls: false,
          },
          {
            label: "面积单位",
            prop: "landUnit",
            value: "0",
            type: "select",
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            rules: [
              {
                required: true,
                message: "请选择面积单位",
                trigger: "click",
              },
            ],
            dataType: "number",
            span: 6,
          },
          // {
          //     label: "地块展示",
          //     labelWidth: "0",
          //     prop: "line",
          //     className: "mapClass",
          //     span: 24,
          //     formslot: true,
          // }
        ],
      },
      url: "",
      landUrl: "",
      polygon: [],
      area: "",
      farmInfo:{},
      visible: false,
    };
  },
  created() {
  },
  computed: {
    ...mapGetters([
      "userInfo",
      "permission",
      "polygons",
      "$farmId",
      "drawMapUrlBase",
    ]),
  },
  watch: {
    landUrl: {
      handler(newVal, oldVal) {
        if (newVal) {
          this.$refs.form.submit();
        }
      },
    },
    computed: {
        ...mapGetters(["userInfo", "permission", "polygons","$farmId"]),
    "form.landName": {
      handler(newVal, oldVal) {
        this.landUrl = "";
      },
    },
    mounted () {
        this.initData(this.userInfo.tenant_id)
    "form.landType": {
      handler(newVal, oldVal) {
        this.landUrl = "";
      },
    },
    methods: {
        initData (tenantId) {
            getFarmList().then(res => {
                const column = this.findObject(this.option.column, "farmId")
                column.dicData = res.data.data
            })
        },
        //初始化
        init () {
            //清空面的数据
            this.$store.commit('clear_polygon')
            //计算当前时间
            this.visible = true
            this.form.farmId = this.$farmId
        },
        // 表单提交
        submit (row, done) {
            row['deptId'] = this.userInfo.dept_id
            // row.farmId = this.farm.id
            var that = this
            if (this.polygons.length == 0) {
                //没有面的数据
                // this.$refs.getMapData.isCheck = true
                // loading()
            } 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
            }
            add(row).then(() => {
                that.$emit("refreshOnLoad")
                that.$refs.form.resetFields()
                that.form.landUnit = "0"
                that.visible = false
                this.$message({
                    type: "success",
                    message: "操作成功!"
                })
                done()
            }, error => {
                // loading()
                window.console.log(error)
            })
        },
        setMapData (val) {
            this.LineData = val[0]
            this.PointData = val[1]
        },
    "form.landArea": {
      handler(newVal, oldVal) {
        this.landUrl = "";
      },
    },
    "form.landUnit": {
      handler(newVal, oldVal) {
        this.landUrl = "";
      },
    },
  },
  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) {
      getFarmList().then((res) => {
        const column = this.findObject(this.option.column, "farmId");
        column.dicData = res.data.data;
      });
    },
    //初始化
    init() {
      //清空面的数据
      this.$store.commit("clear_polygon");
      this.form.landArea = 0
      this.visible = true;
      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) {
      row["deptId"] = this.userInfo.dept_id;
      // row.farmId = this.farm.id
      var that = this;
      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
        // loading()
      } else {
        //如果有值,空间坐标转换
        let pol = this.polygon;
        let polLength = this.polygon.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;
      }
      // if (this.polygons.length == 0) {
      //     //没有面的数据
      //     // this.$refs.getMapData.isCheck = true
      //     // loading()
      // } 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
      //     console.log(row.landRange)
      // }
      row["url"] = this.landUrl;
      // row['landArea'] = this.area
      if (row.landArea < 0) {
        this.$message.warning("地块面积不能为负数");
        done();
        return;
      }
      add(row).then(
        () => {
          that.$emit("refreshOnLoad");
          that.$refs.form.resetFields();
          that.form.landUnit = "0";
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          done();
        },
        (error) => {
          // loading()
          window.console.log(error);
        }
      );
    },
    setMapData(val) {
      this.LineData = val[0];
      this.PointData = val[1];
    },
    showMap() {
      this.mapVisible = true;
    },
  },
};
</script>
<style lang="scss" scoped>
.mapClass div label {
    display: none;
  display: none;
}
#getMapData {
    width: 90%;
    position: relative;
    height: 400px;
    top: 10px;
    left: 90px;
  width: 90%;
  position: relative;
  height: 400px;
  top: 10px;
  left: 90px;
}
.map {
  height: 450px;
}
</style>
src/views/land/landUpdate.vue
@@ -1,227 +1,299 @@
<template>
    <el-dialog
        :title="title"
        :modal-append-to-body="false"
        :append-to-body="true"
        :close-on-click-modal="false"
        width="60%"
        :visible.sync="visible"
    >
        <avue-form ref="form" v-model="form" :option="option" @submit="submit">
            <!-- 地图插入 -->
            <template slot-scope="{ type, disabled }" slot="line">
                <getMapDataInThere :currentPolygons="form.landRange" ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>
            </template>
        </avue-form>
    </el-dialog>
  <el-dialog
    :title="title"
    :modal-append-to-body="false"
    :append-to-body="true"
    :close-on-click-modal="false"
    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 :currentPolygons="form.landRange" ref="getMapData" id="getMapData" @setMapData="setMapData"></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 { getFarmList } from "@/api/farm/farm"
import { getDeptTree } from "@/api/system/dept"
import {update} from "@/api/land/land"
import website from '@/config/website'
import getMapDataInThere from "./getMapDataInThere.vue"
import { mapGetters } from "vuex";
import { getFarmList } from "@/api/farm/farm";
import { getDeptTree } from "@/api/system/dept";
import { update } from "@/api/land/land";
import website from "@/config/website";
import getMapDataInThere from "./getMapDataInThere.vue";
export default {
    components: {
        getMapDataInThere
    },
    data () {
        return {
            title: "编辑地块",
            form: {},
            isFarmNameCk:false,
            option: {
                emptyBtn: false,
                submitText: "保存",
                gutter: 30,
                farmName:'',
                column: [
                    {
                        label: "地块名称",
                        prop: "landName",
                        rules: [{
                            required: true,
                            message: "请输入地块名称",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "所属农场",
                        prop: "farmId",
                        type: "tree",
                        disabled:true,
                        dicData: [],
                        props: {
                            label: "farmName",
                            value: "id"
                        },
                        slot: true,
                        click:function (value){
                            this.isFarmNameCk = true
                        },
                        rules: [{
                            required: true,
                            message: "请选择所属农场",
                            trigger: "click"
                        }]
                    },
                    {
                        label: "地块类型",
                        type: "select",
                        prop: "landType",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        dataType: "number",
                        rules: [{
                            required: true,
                            message: "请选择地块类型",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "面积单位",
                        prop: "landUnit",
                        value: "0",
                        type: "select",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        dataType: "number",
                        span: 6,
                    },
                    {
                        label: "地块展示",
                        labelWidth: "0",
                        prop: "line",
                        className: "mapClass",
                        span: 24,
                        formslot: true,
                    }
                ],
  components: {
    getMapDataInThere,
  },
  data() {
    return {
      title: "编辑地块",
      form: {},
      isFarmNameCk: false,
      option: {
        emptyBtn: false,
        submitText: "保存",
        submitBtn: false,
        gutter: 30,
        farmName: "",
        column: [
          {
            label: "地块名称",
            prop: "landName",
            rules: [
              {
                required: true,
                message: "请输入地块名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "所属农场",
            prop: "farmId",
            type: "tree",
            disabled: true,
            dicData: [],
            props: {
              label: "farmName",
              value: "id",
            },
            visible: false,
            slot: true,
            click: function (value) {
              this.isFarmNameCk = true;
            },
            rules: [
              {
                required: true,
                message: "请选择所属农场",
                trigger: "click",
              },
            ],
          },
          {
            label: "地块类型",
            type: "select",
            prop: "landType",
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            dataType: "number",
            rules: [
              {
                required: true,
                message: "请选择地块类型",
                trigger: "blur",
              },
            ],
          },
          {
            label: "面积",
            prop: "landArea",
            rules: [
              {
                required: true,
                message: "请输入面积",
                trigger: "click",
              },
            ],
            span: 6,
            type: "number",
            controls: false,
          },
          {
            label: "面积单位",
            prop: "landUnit",
            value: "0",
            type: "select",
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            dataType: "number",
            span: 6,
          },
          // {
          //     label: "地块展示",
          //     labelWidth: "0",
          //     prop: "line",
          //     className: "mapClass",
          //     span: 24,
          //     formslot: true,
          // }
        ],
      },
      url: "",
      landUrl: "",
      polygon: [],
      area: "",
      visible: false,
    };
  },
  watch: {
    landUrl: {
      handler(newVal, oldVal) {
        this.$refs.form.submit();
      },
    },
  },
  computed: {
    ...mapGetters(["userInfo", "permission", "polygons", "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) => {
        const column = this.findObject(this.option.column, "farmId");
        column.dicData = res.data.data;
      });
    },
    //初始化
    init() {
      this.url =
        this.drawMapUrlBase +
        "/revamp?type=1&status=manage&position=" +
        this.$route.query.landRange;
      //清空面的数据
      this.$store.commit("clear_polygon");
      //计算当前时间
      this.visible = true;
      this.form.landName = this.$route.query.landName;
      this.form.id = this.$route.query.id;
      this.form.landArea = this.$route.query.landArea;
      this.form.farmId = this.$route.query.farmId;
      this.form.$farmId = this.$route.query.deptname;
      this.form.landUnit = this.$route.query.landUnit;
      this.form.landType = this.$route.query.landType;
      this.form.landRange = this.$route.query.landRange;
      this.form.landRange = this.form.landRange.replace(/POLYGON\(\(/g, "");
      this.form.landRange = this.form.landRange.replace(/\)\)/g, "");
      // this.form.landRange = this.form.landRange.split(',')
      this.form.landRange = this.form.landRange.replaceAll(",", ";");
      this.form.landRange = this.form.landRange.replaceAll(" ", ",");
    },
    // 表单提交
    submit(row, loading) {
      row["deptId"] = this.userInfo.dept_id;
      var that = this;
      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) {
        //如果有值,空间坐标转换
        let pol = this.polygon;
        let polLength = this.polygon.length - 1;
        let usePolygons = "";
        for (let k in pol) {
          usePolygons += pol[k].lng + "," + pol[k].lat;
          if (k != polLength) {
            usePolygons += ";";
          }
        }
    },
    computed: {
        ...mapGetters(["userInfo", "permission", "polygons"]),
    },
    mounted () {
        this.initData(this.userInfo.tenant_id)
    },
    methods: {
        initData (tenantId) {
            const data = {
                deptId: this.userInfo.dept_id
            }
            getFarmList(data).then(res => {
                const column = this.findObject(this.option.column, "farmId")
                column.dicData = res.data.data
            })
        },
        //初始化
        init () {
            //清空面的数据
            this.$store.commit('clear_polygon')
            //计算当前时间
            this.visible = true
            this.form.landName = this.$route.query.landName
            this.form.id = this.$route.query.id
            this.form.landArea = this.$route.query.landArea
            this.form.farmId = this.$route.query.farmId
            this.form.$farmId = this.$route.query.deptname
            this.form.landUnit = this.$route.query.landUnit
            this.form.landType = this.$route.query.landType
            this.form.landRange = this.$route.query.landRange
        //设置坐标点
        row.userId = this.userInfo.user_id;
        row.landRange = usePolygons;
            this.form.landRange = this.form.landRange.replace(/POLYGON\(\(/g, '')
            this.form.landRange = this.form.landRange.replace(/\)\)/g, '')
            this.form.landRange = this.form.landRange.split(',')
        },
        // 表单提交
        submit (row, loading) {
            row['deptId'] = this.userInfo.dept_id
            var that = this
            if (this.polygons.length == 0) {
                //没有面的数据
                this.$refs.getMapData.isCheck = true
                loading()
                return
            } 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
        row["url"] = this.landUrl;
        // row['landArea'] = this.area
      }
      update(row).then(
        () => {
          that.$emit("refreshOnLoad");
          that.$refs.form.validate((vaild, done) => {
            if (row.landArea < 0) {
              this.$message.warning("地块面积不能为负数");
              done();
              return;
            }
            update(row).then(() => {
                that.$emit("refreshOnLoad")
                that.$refs.form.validate((vaild,done)=>{
                    if (vaild) {
                        that.visible = false
                        this.$message({
                          type: "success",
                          message: "操作成功!"
                        })
                      done()
                      this.form.landRange = this.$route.query.landRange
                      this.form.dica = row.$landUnit
                      this.form.dic = row.$landType
                      this.form.deptname = row.$farmId
            if (vaild) {
              that.visible = false;
              this.$message({
                type: "success",
                message: "操作成功!",
              });
              done();
                      var arr = [];
                      this.$store.state.tags.tagList.forEach((item) => {
                        if (item.label != "地块详情") {
                          arr.push(item);
                        }
                      });
                      this.$store.state.tags.tagList = arr;
                      this.$router.replace({  path: `/LandDetail`, query: this.form  });
                    }
              //   this.form.landRange = this.$route.query.landRange
              //   this.form.dica = row.$landUnit
              //   this.form.dic = row.$landType
              //   this.form.deptname = row.$farmId
                })
              }, error => {
                  loading()
                  window.console.log(error)
              })
              //   var arr = [];
              //   this.$store.state.tags.tagList.forEach((item) => {
              //     if (item.label != "地块详情") {
              //       arr.push(item);
              //     }
              //   });
              //   this.$store.state.tags.tagList = arr;
              //   this.$router.replace({  path: `/land`, query: this.form  });
              this.$router.go(-1);
            }
          });
        },
        setMapData (val) {
            this.LineData = val[0]
            this.PointData = val[1]
        },
        (error) => {
          loading();
          window.console.log(error);
        }
      );
    },
    setMapData(val) {
      this.LineData = val[0];
      this.PointData = val[1];
    },
  },
};
</script>
<style lang="scss" scoped>
.mapClass div label {
    display: none;
  display: none;
}
#getMapData {
    width: 90%;
    position: relative;
    height: 400px;
    top: 10px;
    left: 90px;
  width: 90%;
  position: relative;
  height: 400px;
  top: 10px;
  left: 90px;
}
.map {
  height: 450px;
}
</style>
src/views/remote/remote.vue
@@ -93,7 +93,7 @@
                        searchSpan:4,
                        rules: [{
                            required: true,
                            message: "请输入reName",
                            message: "请输入专题名称",
                            trigger: "blur"
                        }]
                    },
@@ -135,7 +135,7 @@
                        }]
                    },
                    {
                        label: "通知时间",
                        label: "拍摄时间",
                        prop: "releaseTimeRange",
                        type: "datetime",
                        format: "yyyy-MM-dd hh:mm:ss",
@@ -157,9 +157,11 @@
                        prop: "reTime",
                        search: true,
                        searchSpan: 4,
                        type: "datetime",
                        format: "yyyy-MM-dd",
                        valueFormat: "yyyy-MM-dd",
                        type: "month",
                        // format: "yyyy-MM-dd",
                        // valueFormat: "yyyy-MM-dd",
                        format: "yyyy-MM",
                        valueFormat: "yyyy-MM",
                        rules: [{
                            required: true,
                            message: "请输入遥感时间",
src/views/traceability/details.vue
@@ -7,7 +7,7 @@
export default {
  data() {
    return {
      url: "/traceablityInfos.html",
      url: "traceablityInfos.html",
    };
  },
  created(){
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>