智慧农业后台管理页面
shuishen
2022-07-29 e57c42d8338904f0045a72665f2ad43b5012cc53
src/views/mapPattern/index.vue
@@ -1,9 +1,6 @@
<template>
  <div style="width: 1920px;
        height: 1080px;
        background: #FFFFFF;
        border-radius: 0px 0px 0px 0px;
        opacity: 1;">
    <div 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" />
@@ -25,11 +22,12 @@
        <span>&nbsp;&nbsp;退出</span>
      </div>
    </div>
    <div class="down">
      <div class="farm-plant">
        <div class="title"><span>种养品种 · {{ this.page.total }}种</span></div>
            <div class="title">
                <span>种养品种 · {{ this.page.total }}种</span>
            </div>
        <div class="content">
          <div class="list-item" v-for="item in farmPlantList">
                <div class="list-item" v-for="(item, index) in farmPlantList" :key="index">
            <div class="item-img">
              <img :src="item.url" />
              <span>{{ item.strainName }}</span>
@@ -40,15 +38,23 @@
      </div>
      <div class="land-info">
        <div class="content">
          <span>有轮廓的地块:</span><span style="font-size: 26px;font-weight: bold;color: #5ABF78;"> &nbsp;{{landIsAreaStatistic[0]}}</span>
                <span>有轮廓的地块:</span>
                <span
                    style="font-size: 26px;font-weight: bold;color: #5ABF78;"
                >&nbsp;{{landIsAreaStatistic[0]}}</span>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <span>无轮廓的地块:</span><span style="font-size: 26px;font-weight: bold;color: #E3B745;"> &nbsp;{{landIsAreaStatistic[1]}}</span>
                <span>无轮廓的地块:</span>
                <span
                    style="font-size: 26px;font-weight: bold;color: #E3B745;"
                >&nbsp;{{landIsAreaStatistic[1]}}</span>
        </div>
      </div>
      <div class="farm-land">
        <div class="title"><span>地块 · {{ this.pageLand.total }}种</span></div>
            <div class="title">
                <span>地块 · {{ this.pageLand.total }}种</span>
            </div>
        <div class="content">
          <div class="list-item" v-for="item in landList">
                <div class="list-item" v-for="(item, index) in landList" :key="index">
            <div class="item-img">
              <img :src="item.url" />
              <span>{{ item.landName }}</span>
@@ -58,14 +64,13 @@
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { mapGetters } from "vuex"
import { getList } from "@/api/farmplant/farmplant";
import { getList as getLandList, selectCount,getLandIsAreaStatistic } from "@/api/land/land";
import { getDetails } from "@/api/farm/farm";
import { getList } from "@/api/farmplant/farmplant"
import { getList as getLandList, selectCount, getLandIsAreaStatistic } from "@/api/land/land"
import { getDetails } from "@/api/farm/farm"
export default {
  components: {
  },
@@ -94,49 +99,65 @@
  },
  created() {
    //获取种样品列表
    this.getFarmPlantList(this.page);
        this.getFarmPlantList(this.page)
    //获取地块列表
    this.getLandList(this.pageLand);
        this.getLandList(this.pageLand)
    //获取农场信息
    this.getFarmInfo();
        this.getFarmInfo()
    //获取统计面积信息
    this.getLandCount();
        this.getLandCount()
    //获取地块轮廓统计信息
    this.getLandIsAreaStatistic();
        this.getLandIsAreaStatistic()
  },
  methods: {
    //获取种养品列表
    getFarmPlantList(page, params = {}) {
      params['farmId'] = this.userInfo.farmId;
      this.loading = true;
            params['farmId'] = this.userInfo.farmId
            this.loading = true
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.farmPlantList = data.records;
        this.loading = false;
        this.selectionClear();
      });
                const data = res.data.data
                this.page.total = data.total
                this.farmPlantList = data.records
                this.loading = false
                // this.selectionClear()
            })
    },
    //获取地块列表
    getLandList(page, params = {}) {
      params['farmId'] = this.userInfo.farmId;
      params['tenantId'] = this.userInfo.tenant_id;
      this.loading = true;
            params['farmId'] = this.userInfo.farmId
            params['tenantId'] = this.userInfo.tenant_id
            this.loading = true
      getLandList(
        page.currentPage,
        page.pageSize,
        Object.assign(params)
      ).then((res) => {
        const data = res.data.data;
        this.pageLand.total = data.total;
        this.landList = data.records;
        this.loading = false;
        this.selectionClear();
      });
                const data = res.data.data
                data.records.forEach(item => {
                    if (item.landRange != '' || item.landRange != null) {
                        item.landRange = item.landRange.replace(/POLYGON\(\(/g, '')
                        item.landRange = item.landRange.replace(/\)\)/g, '')
                        const arr = item.landRange.split(',')
                        var brr = []
                        arr.forEach(it => {
                            brr.push(it.split(' '))
                        })
                        this.$refs.plotMap.addPlotPolygon(brr, item)
                    }
                })
                this.pageLand.total = data.total
                this.landList = data.records
                this.loading = false
                // this.selectionClear()
            })
    },
    //返回上一页
    goToBack() {
@@ -144,21 +165,21 @@
    },
    //获取农场信息
    getFarmInfo() {
      var that = this;
            var that = this
      getDetails(this.userInfo.farmId).then(res => {
        that.farmInfo = res.data.data;
                that.farmInfo = res.data.data
      })
    },
    //获取统计面积信息
    getLandCount() {
      selectCount(this.userInfo.farmId).then(res => {
        this.landAreaInfo = res.data.data;
                this.landAreaInfo = res.data.data
      })
    },
    //获取地块轮廓统计信息
    getLandIsAreaStatistic(){
       getLandIsAreaStatistic(this.userInfo.farmId).then(res=>{
          this.landIsAreaStatistic = res.data.data;
                this.landIsAreaStatistic = res.data.data
       })
    }
  }
@@ -166,11 +187,12 @@
</script>
<style lang="scss" scope>
.top {
    position: absolute;
    top: 0;
  width: 100%;
  height: 80px;
  background: #000000;
  border-radius: 0px 0px 0px 0px;
  opacity: 0.5;
    background: rgba(0, 0, 0, 0.5);
    z-index: 9;
  .logo {
    position: absolute;
@@ -191,7 +213,7 @@
      height: 33px;
      font-size: 25px;
      font-weight: bold;
      color: #5ABF78;
            color: #5abf78;
      text-align: center;
      padding-top: 13px;
    }
@@ -201,7 +223,7 @@
      height: 19px;
      font-size: 14px;
      font-weight: 400;
      color: #FFFFFF;
            color: #ffffff;
      text-align: center;
      padding-top: 6px;
    }
@@ -211,10 +233,10 @@
    width: 136px;
    height: 33px;
    line-height: 33px;
    background: rgba(236, 95, 89, 0.8000);
        background: rgba(236, 95, 89, 0.8);
    border-radius: 4px 4px 4px 4px;
    opacity: 1;
    border: 1px solid #EC5F59;
        border: 1px solid #ec5f59;
    position: absolute;
    top: 24px;
    right: 33px;
@@ -230,90 +252,10 @@
    span {
      font-size: 14px;
      color: #FFFFFF;
            color: #ffffff;
      font-weight: 400;
    }
  }
}
.down {
  width: 100%;
  .farm-plant {
    width: 292px;
    height: 550px;
    position: absolute;
    left: 30px;
    top: 242px;
    .title {
      width: 292px;
      height: 50px;
      background: #5ABF78;
      border-radius: 4px 4px 0px 0px;
      opacity: 1;
      line-height: 50px;
      font-size: 17px;
      font-weight: bold;
      color: #FFFFFF;
      span {
        margin-left: 20px;
      }
    }
    .content {
      width: 292px;
      // height: 500px;
      background: #08551E;
      border-radius: 4px 4px 0px 0px;
      opacity: 0.9;
      padding-bottom: 30px;
      .list-item {
        width: 252px;
        margin: auto;
        display: flex;
        height: 64px;
        line-height: 64px;
        border-bottom: 1px solid #cccccc;
        flex-flow: row nowrap;
        justify-content: space-between;
        .item-img {
          margin-left: 5px;
          display: flex;
          img {
            margin-top: 12px;
            width: 40px;
            height: 40px;
            background: #2389EF;
            border-radius: 84px 84px 84px 84px;
            opacity: 1;
          }
          span {
            margin-left: 11px;
            font-size: 14px;
            font-weight: 400;
            color: #FFFFFF;
          }
        }
        .item-num {
          font-size: 14px;
          font-weight: 400;
          color: #FFFFFF;
        }
      }
    }
  }
  .land-info{
@@ -325,35 +267,36 @@
      margin: auto;
      width: 431px;
      height: 56px;
      background: #000000;
        background: rgba(0, 0, 0, 0.5);
      border-radius: 28px 28px 28px 28px;
      opacity: 0.5;
      display: flex;
      justify-content: center;
      align-items:center;
      font-size: 16px;
      font-weight: 400;
      color: #FFFFFF;
        color: #ffffff;
    }
  }
  .farm-land {
.farm-plant {
    position: absolute;
    left: 30px;
    top: 242px;
    z-index: 99;
    width: 292px;
    height: 550px;
    position: absolute;
    right: 30px;
    top: 242px;
    .title {
      width: 292px;
      height: 50px;
      background: #5ABF78;
        background: #5abf78;
      border-radius: 4px 4px 0px 0px;
      opacity: 1;
      line-height: 50px;
      font-size: 17px;
      font-weight: bold;
      color: #FFFFFF;
        color: #ffffff;
      span {
        margin-left: 20px;
@@ -362,11 +305,15 @@
    .content {
      width: 292px;
        height: calc(100% - 50px);
        background: rgba(8, 85, 30, 0.9);
      // height: 500px;
      background: #08551E;
      border-radius: 4px 4px 0px 0px;
      opacity: 0.9;
      padding-bottom: 30px;
        overflow-x: hidden;
        overflow-y: auto;
      .list-item {
        width: 252px;
@@ -386,7 +333,7 @@
            margin-top: 12px;
            width: 40px;
            height: 40px;
            background: #2389EF;
                    background: #2389ef;
            border-radius: 84px 84px 84px 84px;
            opacity: 1;
          }
@@ -395,17 +342,93 @@
            margin-left: 11px;
            font-size: 14px;
            font-weight: 400;
            color: #FFFFFF;
                    color: #ffffff;
          }
        }
        .item-num {
          font-size: 14px;
          font-weight: 400;
          color: #FFFFFF;
                color: #ffffff;
            }
        }
    }
        }
.farm-land {
    position: absolute;
    right: 30px;
    top: 242px;
    z-index: 99;
    width: 292px;
    height: 550px;
    .title {
        width: 292px;
        height: 50px;
        background: #5abf78;
        border-radius: 4px 4px 0px 0px;
        opacity: 1;
        line-height: 50px;
        font-size: 17px;
        font-weight: bold;
        color: #ffffff;
        span {
            margin-left: 20px;
        }
    }
    .content {
        width: 292px;
        height: calc(100% - 50px);
        background: rgba(8, 85, 30, 0.9);
        // height: 500px;
        border-radius: 4px 4px 0px 0px;
        opacity: 0.9;
        padding-bottom: 30px;
        overflow-x: hidden;
        overflow-y: auto;
        .list-item {
            width: 252px;
            margin: auto;
            display: flex;
            height: 64px;
            line-height: 64px;
            border-bottom: 1px solid #cccccc;
            flex-flow: row nowrap;
            justify-content: space-between;
            .item-img {
                margin-left: 5px;
                display: flex;
                img {
                    margin-top: 12px;
                    width: 40px;
                    height: 40px;
                    background: #2389ef;
                    border-radius: 84px 84px 84px 84px;
                    opacity: 1;
                }
                span {
                    margin-left: 11px;
                    font-size: 14px;
                    font-weight: 400;
                    color: #ffffff;
                }
            }
            .item-num {
                font-size: 14px;
                font-weight: 400;
                color: #ffffff;
      }
    }
  }