智慧农业后台管理页面
Administrator
2022-05-18 dcd75a9a37d281f8aa5aabbeb76bd544dc08a4da
采收记录完善,结束完成,新增农产品种植,页面样式优化
2 files modified
10 files added
1715 ■■■■■ changed files
public/img/wel/farming.png patch | view | raw | blame | history
public/img/wel/land.png patch | view | raw | blame | history
public/img/wel/nongzi.png patch | view | raw | blame | history
public/img/wel/plant.png patch | view | raw | blame | history
public/img/wel/xiaosou.png patch | view | raw | blame | history
src/api/farmplant/recovery.js 48 ●●●●● patch | view | raw | blame | history
src/views/wel/farming.vue 322 ●●●●● patch | view | raw | blame | history
src/views/wel/index.vue 258 ●●●● patch | view | raw | blame | history
src/views/wel/land.vue 322 ●●●●● patch | view | raw | blame | history
src/views/wel/plant.vue 324 ●●●●● patch | view | raw | blame | history
src/views/wel/recovery.vue 119 ●●●● patch | view | raw | blame | history
src/views/wel/stock.vue 322 ●●●●● patch | view | raw | blame | history
public/img/wel/farming.png
public/img/wel/land.png
public/img/wel/nongzi.png
public/img/wel/plant.png
public/img/wel/xiaosou.png
src/api/farmplant/recovery.js
New file
@@ -0,0 +1,48 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
    return request({
        url: '/api/recovery/page',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
export const remove = (ids) => {
    return request({
        url: '/api/recovery/remove',
        method: 'post',
        params: {
            ids,
        }
    })
}
export const save = (row) => {
    return request({
        url: '/api/recovery/save',
        method: 'post',
        data: row
    })
}
export const update = (row) => {
    return request({
        url: '/api/recovery/update',
        method: 'post',
        data: row
    })
}
export const getDetail = (id) => {
    return request({
        url: '/api/recovery/detail',
        method: 'get',
        params: {
            id
        }
    })
}
src/views/wel/farming.vue
New file
@@ -0,0 +1,322 @@
<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">
    </avue-form>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getUserList } from "@/api/system/user";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/recovery";
export default {
  data() {
    return {
      title:"采收/捕捞",
      form: {},
      option: {
        emptyBtn: false,
        submitText: "保存",
        gutter: 30,
        column: [
          {
            label: "采收品种",
            prop: "strainId",
            span: 12,
            type: "tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
            },
            labelWidth: 145,
            rules: [
              {
                required: true,
                message: "请输入采收品种",
                trigger: "blur",
              },
            ],
            disabled:true,
          },
          {
            label: "采收地块",
            span: 12,
            labelWidth: 145,
            width: 110,
            prop: "landId",
            type:"tree",
            dicData: [],
            props: {
              label: "landName",
              value: "id"
            },
            rules: [
              {
                required: true,
                message: "请选择采收地块",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收重量",
            prop: "weight",
            tip: '公斤',
            span: 12,
            labelWidth: 145,
            width: 110,
            controls:false,
            type:'number',
            rules: [
              {
                required: true,
                message: "请输入采收重量 公斤",
                trigger: "click",
              },
            ],
          },
          {
            label: "作业方式",
            prop: "jobWay",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "select",
            value:"0",
            dicData:[
              {
                label:"人工",
                value:"0"
              },
              {
                label:"机械",
                value:"1"
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择作业方式",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收时间",
            prop: "time",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "datetime",
            format: "yyyy-MM-dd HH:mm",
            valueFormat: "yyyy-MM-dd HH:mm",
            rules: [
              {
                required: true,
                message: "请选择采收时间",
                trigger: "click",
              },
            ],
          },
          // {
          //   label: "采收产品",
          //   prop: "farmArea",
          //   span: 12,
          //   labelWidth: 145,
          //   width: 110,
          //   rules: [
          //     {
          //       required: true,
          //       message: "请输入采收产品",
          //       trigger: "click",
          //     },
          //   ],
          // },
          {
            label: "操作人",
            prop: "operator",
            type: "tree",
            dicData: [],
            props: {
              label: "realName",
              value: "id",
            },
            span: 12,
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: true,
                message: "请输入操作人",
                trigger: "click",
              },
            ],
          },
          {
            label: "产品等级",
            prop: "leaves",
            span: 12,
            labelWidth: 145,
            width: 110,
            value:"0",
            type: "select",
            dicData:[
              {
                label:"一等品",
                value:"0"
              },
              {
                label:"二等品",
                value:"1"
              },
              {
                label:"三等品",
                value:"2"
              },
              {
                label:"四等品",
                value:"3"
              },
              {
                label:"五等品",
                value:"4"
              },
            ],
            rules: [
              {
                required: true,
                message: "请输入产品等级",
                trigger: "click",
              },
            ],
          },
          {
            label: "备注",
            prop: "remark",
            span: 24,
            type:"textarea",
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: false,
                message: "请输入备注",
                trigger: "click",
              },
            ],
          },
        ],
      },
      visible: false,
    };
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
    },
    //小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init(data) {
      this.form = {
        farmPlantId:data.id,
        strainId:data.strainId,
        landId:data.landId,
        weight:data.weight,
        leaves:'0',
        jobWay:data.jobWay,
        operator:data.operator,
        remark:''
      };
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
      getLandList(this.userInfo.user_id).then((res) => {
        if (res.data.code == 200) {
          var landIdcolumn = that.findObject(that.option.column, "landId");
          that.landList = res.data.data;
          landIdcolumn.dicData = res.data.data;
        }
      });
      //获取操作人
      const user = {
        tenantId: this.userInfo.tenant_id,
      };
      getUserList(user).then((res) => {
        if (res.data.code == 200) {
          var operatorcolumn = that.findObject(that.option.column, "operator");
          operatorcolumn.dicData = res.data.data;
        }
      });
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    submit(row,loading,done) {
      var that = this;
      row.time = row.time + ":00";
      save(row).then(
        () => {
          this.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
           done();
        },
        (error) => {
          done();
          window.console.log(error);
        }
      );
    },
  },
};
</script>
src/views/wel/index.vue
@@ -5,13 +5,12 @@
        <div class="farm-title">农场概览</div>
        <div class="statis">
          <div class="echarts-statis">
            <div id="alarmTypeProEcharts"></div>
            <div class="alarmTypeTotal">
              <div class="numAlarmType">
                <span>{{ alarmTypeTotal }}</span>
              </div>
              <div class="textAlarmType"><span>地块使用率</span></div>
            </div>
            <el-progress
              type="circle"
              :percentage="100"
              :stroke-width="15"
              :width="150"
            ></el-progress>
          </div>
          <div class="avue-statis">
            <avue-data-display :option="option"></avue-data-display>
@@ -22,12 +21,16 @@
        <div class="title">当前种养品种</div>
        <div class="content">
          <div class="farm" v-for="(item, index) in farmPlanList" :key="index">
            <div class="farm-img"><img :src="item.url" class="img"/></div>
            <div class="cai">{{item.strainName}}</div>
            <div class="farm-img"><img :src="item.url" class="img" /></div>
            <div class="cai">{{ item.strainName }}</div>
            <div class="area">种植面积:371.13亩</div>
            <div class="btn">
              <el-button plain size="small" @click="recovery(item)">采收</el-button>
              <el-button plain size="small">结束</el-button>
              <el-button plain size="small" @click="recovery(item)"
                >采收</el-button
              >
              <el-button plain size="small" @click="over(item.id)"
                >结束</el-button
              >
            </div>
          </div>
        </div>
@@ -38,28 +41,38 @@
        <div class="title">生产管理</div>
        <div class="btn">
          <div class="production-button">
            <div class="button">
              <img src="" class="img" />
            <div class="button" style="background-color: #f1fae6" @click="land">
              <div class="btn-img" style="background-color: #91CD4D">
                <img src="../../../public/img/wel/land.png" class="img" />
              </div>
              <div class="text">圈地</div>
            </div>
            <div class="button">
              <img src="" class="img" />
            <div class="button" style="background-color: #edf9fe" @click="plant">
              <div class="btn-img" style="background-color: #40C4FF">
                <img src="../../../public/img/wel/plant.png" class="img" />
              </div>
              <div class="text">添加种养品种</div>
            </div>
          </div>
          <div class="production-button">
            <div class="button">
              <img src="" class="img" />
            <div class="button" style="background-color: #fbf0e9" @click="farming">
              <div class="btn-img" style="background-color: #FFAC92">
                <img src="../../../public/img/wel/farming.png" class="img" />
              </div>
              <div class="text">农事操作</div>
            </div>
            <div class="button">
              <img src="" class="img" />
            <div class="button" style="background-color: #ebf1fd" @click="stock">
              <div class="btn-img" style="background-color: #80A6FA">
                <img src="../../../public/img/wel/nongzi.png" class="img" />
              </div>
              <div class="text">农资入库</div>
            </div>
          </div>
          <div class="production-button">
            <div class="button">
              <img src="" class="img" />
            <div class="button" style="background-color: #eefaf1">
              <div class="btn-img" style="background-color: #96DBAA">
                <img src="../../../public/img/wel/xiaosou.png" class="img" />
              </div>
              <div class="text">销售农产品</div>
            </div>
          </div>
@@ -72,24 +85,44 @@
        <div class="title">农资库存</div>
      </div>
    </div>
    <!-- 弹窗, 新增 / 修改 -->
    <!-- 弹窗, 采收 -->
    <recovery v-if="recoveryVisible" ref="recovery"></recovery>
    <!-- 圈地 -->
    <land v-if="landVisible" ref="land"></land>
    <!-- 种养品 -->
    <plant v-if="plantVisible" ref="plant" @refreshOnLoad="onLoad"></plant>
    <!-- 农事操作 -->
    <farming v-if="farmingVisible" ref="farming"></farming>
    <!-- 农资入库 -->
    <stock v-if="stockVisible" ref="stock"></stock>
  </div>
</template>
<script>
import { mapGetters } from "vuex";
import { getList } from "@/api/farmplant/farmplant";
import { getList, update } from "@/api/farmplant/farmplant";
import recovery from "./recovery.vue";
import land from "./land.vue";
import plant from "./plant.vue";
import farming from "./farming.vue";
import stock from "./stock.vue";
export default {
  components: {
    recovery,
    land,
    plant,
    farming,
    stock
  },
  name: "wel",
  data() {
    return {
      farmPlanList: [],
      recoveryVisible: false,
      landVisible: false,
      plantVisible: false,
      farmingVisible: false,
      stockVisible: false,
      option: {
        span: 8,
        data: [
@@ -125,7 +158,6 @@
  },
  created() {
    //地块使用率统计
    // this.getAlarmTypeProEcharts();
    this.onLoad();
  },
  methods: {
@@ -143,112 +175,62 @@
      });
    },
    //采收
    recovery(data){
    recovery(data) {
      this.recoveryVisible = true;
      this.$nextTick(() => {
        this.$refs.recovery.init(data);
      });
    },
    //预警类型占比统计
    getAlarmTypeProEcharts(data) {
      // selAlarmDayAveragePro(data).then((res) => {
      //   var that = this;
      //   //计算总和
      //   var data = [];
      //   var startDate = this.dateTime[0];
      //   var endDate = this.dateTime[1];
      //   data.push(
      //     { value: res.data.data[0], name: "一键求助" },
      //     { value: res.data.data[1], name: "违禁品" },
      //     { value: res.data.data[2], name: "红色健康码" },
      //     { value: res.data.data[3], name: "体温异常" }
      //   );
      //   let echarts = require("echarts");
      //   let myChart = echarts.init(
      //     document.getElementById("alarmTypeProEcharts")
      //   );
      //   myChart.on("click", function (params) {
      //     var data = [];
      //     if (params.name == "一键求助") {
      //       data.push({
      //         startTime: startDate,
      //         endTime: endDate,
      //         waringType: "紧急求救",
      //       });
      //       window.parent.handleStartAlarm(data);
      //     }
      //     if (params.name == "违禁品") {
      //       data.push({
      //         startTime: startDate,
      //         endTime: endDate,
      //         decisioDiagramResult: "contraband",
      //       });
      //       window.parent.handleStartParcelKind(data);
      //     }
      //     if (params.name == "红色健康码") {
      //       data.push({
      //         startTime: startDate,
      //         endTime: endDate,
      //         type: 3,
      //       });
      //       window.parent.handleStartHealthcode(data);
      //     }
      //     if (params.name == "体温异常") {
      //       data.push({
      //         startTime: startDate,
      //         endTime: endDate,
      //         status: 1,
      //       });
      //       window.parent.handleStartAnimalHeat(data);
      //     }
      //   });
      //   var colors = ["#FF9836", "#3fa1ff", "#F34A4A", "#8058A5"];
      //   let option = {
      //     color: colors,
      //     title: {
      //       textStyle: {
      //         fontWeight: "normal",
      //         fontSize: 16,
      //         color: "#000",
      //       },
      //       left: "1%",
      //       top: 25,
      //       textAlign: "left",
      //       text: "预警类型占比",
      //     },
      //     tooltip: {
      //       trigger: "item",
      //     },
      //     grid: {
      //       left: "1%",
      //       right: "10%",
      //       bottom: "5%",
      //       top: "25%",
      //       containLabel: true,
      //     },
      //     series: [
      //       {
      //         type: "pie",
      //         radius: ["43%", "60%"],
      //         center: ["45%", "53%"],
      //         avoidLabelOverlap: false,
      //         label: {
      //           show: false,
      //           position: "center",
      //         },
      //         labelLine: {
      //           show: false,
      //         },
      //         data: data,
      //       },
      //     ],
      //   };
      //   myChart.setOption(option);
      //   //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
      //   window.addEventListener("resize", function () {
      //     myChart.resize();
      //   });
      // });
    //结束种植
    over(id) {
      var that = this;
      this.$confirm("确定结束当前种植的农产品?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          const data = {
            id: id,
            status: 2,
          };
          return update(data);
        })
        .then(() => {
          that.onLoad();
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        });
    },
    //圈地
    land() {
      this.landVisible = true;
      this.$nextTick(() => {
        this.$refs.land.init();
      });
    },
    //种植
    plant() {
      this.plantVisible = true;
      this.$nextTick(() => {
        this.$refs.plant.init();
      });
    },
    //农事操作
    farming() {
      this.farmingVisible = true;
      this.$nextTick(() => {
        this.$refs.farming.init();
      });
    },
    //农资入库
    stock() {
      this.stockVisible = true;
      this.$nextTick(() => {
        this.$refs.stock.init();
      });
    },
  },
};
@@ -294,6 +276,9 @@
          height: 170px;
          line-height: 170px;
          margin: 0 auto;
          margin-left: 50px;
          text-align: center;
          padding-top: 30px;
        }
        .avue-statis {
@@ -331,7 +316,7 @@
        .farm {
          width: 150px;
          height: 180px;
          background-color: rgb(240, 230, 230);
          background-color: #F7F9FB;
          border-radius: 5px;
          margin-left: 20px;
@@ -341,7 +326,7 @@
            margin: 0 auto;
            text-align: center;
            .img{
            .img {
              width: 50px;
              height: 50px;
              border-radius: 100px;
@@ -407,16 +392,25 @@
            line-height: 50px;
            align-content: center;
            justify-content: center;
            background-color: aqua;
            border-radius: 3px;
            cursor: pointer;
            .img {
              width: 20px;
              height: 20px;
              background-color: antiquewhite;
            .btn-img{
              height: 25px;
              line-height: 25px;
              margin-top: 12px;
              border-radius: 3px;
              .img {
                width: 25px;
                height: 25px;
                z-index: 999;
              }
            }
            .text {
              font-size: 14px;
              margin-left: 5px;
src/views/wel/land.vue
New file
@@ -0,0 +1,322 @@
<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">
    </avue-form>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getUserList } from "@/api/system/user";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/recovery";
export default {
  data() {
    return {
      title:"采收/捕捞",
      form: {},
      option: {
        emptyBtn: false,
        submitText: "保存",
        gutter: 30,
        column: [
          {
            label: "采收品种",
            prop: "strainId",
            span: 12,
            type: "tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
            },
            labelWidth: 145,
            rules: [
              {
                required: true,
                message: "请输入采收品种",
                trigger: "blur",
              },
            ],
            disabled:true,
          },
          {
            label: "采收地块",
            span: 12,
            labelWidth: 145,
            width: 110,
            prop: "landId",
            type:"tree",
            dicData: [],
            props: {
              label: "landName",
              value: "id"
            },
            rules: [
              {
                required: true,
                message: "请选择采收地块",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收重量",
            prop: "weight",
            tip: '公斤',
            span: 12,
            labelWidth: 145,
            width: 110,
            controls:false,
            type:'number',
            rules: [
              {
                required: true,
                message: "请输入采收重量 公斤",
                trigger: "click",
              },
            ],
          },
          {
            label: "作业方式",
            prop: "jobWay",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "select",
            value:"0",
            dicData:[
              {
                label:"人工",
                value:"0"
              },
              {
                label:"机械",
                value:"1"
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择作业方式",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收时间",
            prop: "time",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "datetime",
            format: "yyyy-MM-dd HH:mm",
            valueFormat: "yyyy-MM-dd HH:mm",
            rules: [
              {
                required: true,
                message: "请选择采收时间",
                trigger: "click",
              },
            ],
          },
          // {
          //   label: "采收产品",
          //   prop: "farmArea",
          //   span: 12,
          //   labelWidth: 145,
          //   width: 110,
          //   rules: [
          //     {
          //       required: true,
          //       message: "请输入采收产品",
          //       trigger: "click",
          //     },
          //   ],
          // },
          {
            label: "操作人",
            prop: "operator",
            type: "tree",
            dicData: [],
            props: {
              label: "realName",
              value: "id",
            },
            span: 12,
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: true,
                message: "请输入操作人",
                trigger: "click",
              },
            ],
          },
          {
            label: "产品等级",
            prop: "leaves",
            span: 12,
            labelWidth: 145,
            width: 110,
            value:"0",
            type: "select",
            dicData:[
              {
                label:"一等品",
                value:"0"
              },
              {
                label:"二等品",
                value:"1"
              },
              {
                label:"三等品",
                value:"2"
              },
              {
                label:"四等品",
                value:"3"
              },
              {
                label:"五等品",
                value:"4"
              },
            ],
            rules: [
              {
                required: true,
                message: "请输入产品等级",
                trigger: "click",
              },
            ],
          },
          {
            label: "备注",
            prop: "remark",
            span: 24,
            type:"textarea",
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: false,
                message: "请输入备注",
                trigger: "click",
              },
            ],
          },
        ],
      },
      visible: false,
    };
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
    },
    //小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init(data) {
      this.form = {
        farmPlantId:data.id,
        strainId:data.strainId,
        landId:data.landId,
        weight:data.weight,
        leaves:'0',
        jobWay:data.jobWay,
        operator:data.operator,
        remark:''
      };
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
      getLandList(this.userInfo.user_id).then((res) => {
        if (res.data.code == 200) {
          var landIdcolumn = that.findObject(that.option.column, "landId");
          that.landList = res.data.data;
          landIdcolumn.dicData = res.data.data;
        }
      });
      //获取操作人
      const user = {
        tenantId: this.userInfo.tenant_id,
      };
      getUserList(user).then((res) => {
        if (res.data.code == 200) {
          var operatorcolumn = that.findObject(that.option.column, "operator");
          operatorcolumn.dicData = res.data.data;
        }
      });
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    submit(row,loading,done) {
      var that = this;
      row.time = row.time + ":00";
      save(row).then(
        () => {
          this.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
           done();
        },
        (error) => {
          done();
          window.console.log(error);
        }
      );
    },
  },
};
</script>
src/views/wel/plant.vue
New file
@@ -0,0 +1,324 @@
<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">
    </avue-form>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/farmplant";
export default {
  data() {
    return {
      title:"添加种养品种",
      form: {},
      option: {
        emptyBtn: false,
        submitText: "保存",
        gutter: 30,
        column: [
          {
            label: "种养品",
            prop: "strainId",
            labelWidth:110,
            type:"tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
            },
            rules: [
              {
                required: true,
                message: "请选择种养品",
                trigger: "blur",
              },
            ],
          },
          {
            label: "品种",
            prop: "varieties",
            labelWidth:110,
            rules: [
              {
                required: true,
                message: "请输入种养品名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "种养品图片",
            prop: "url",
            type: "upload",
            listType: "picture-img",
            width: 100,
            labelWidth:110,
            display:false,
          },
          {
            label: "所属地块",
            prop: "landId",
            type:"tree",
            dicData: [],
            props: {
              label: "landName",
              value: "id"
            },
            labelWidth:110,
            rules: [
              {
                required: true,
                message: "请选择所属地块",
                trigger: "blur",
              },
            ],
          },
          {
            label: "种植标准",
            prop: "plant",
            labelWidth:110,
            type: "select",
            value:"3",
            dicData:[
              {
                label:"有机",
                value:"0"
              },
              {
                label:"绿色",
                value:"1"
              },
              {
                label:"无公害",
                value:"2"
              },
              {
                label:"普通",
                value:"3"
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择种植标准",
                trigger: "blur",
              },
            ],
          },
          {
            label: "种植方式",
            prop: "plantingWay",
            type: "select",
            labelWidth:110,
            value:"0",
            dicData:[
              {
                label:"移栽",
                value:"0"
              },
              {
                label:"直播",
                value:"1"
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择种植方式",
                trigger: "blur",
              },
            ],
          },
          {
            label: "作业方式",
            prop: "jobWay",
            labelWidth:110,
            value:"0",
            type: "select",
            dicData:[
              {
                label:"人工",
                value:"0"
              },
              {
                label:"机械",
                value:"1"
              },
            ],
            rules: [
              {
                required: true,
                message: "请输入作业方式",
                trigger: "blur",
              },
            ],
          },
          {
            label: "移栽时间",
            prop: "transplanTime",
            type: "date",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            labelWidth:110,
            rules: [
              {
                required: true,
                message: "请选择移栽时间",
                trigger: "blur",
              },
            ],
          },
          {
            label: "预计采收时间",
            prop: "recoveryTime",
            type: "date",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            hide:true,
            labelWidth:110,
            rules: [
              {
                required: false,
                message: "请选预计采收时间",
                trigger: "blur",
              },
            ],
          },
          {
            label: "预计亩产",
            prop: "per",
            labelWidth:110,
            hide:true,
            type:"number",
            rules: [
              {
                required: false,
                message: "请输入预计亩产",
                trigger: "blur",
              },
            ],
          },
          {
            label: "株数",
            prop: "plantNumber",
            labelWidth:110,
            type:"number",
            hide:true,
            rules: [
              {
                required: false,
                message: "请输入株数",
                trigger: "blur",
              },
            ],
          },
          {
            label: "株间距",
            prop: "plantSpacing",
            labelWidth:110,
            type:"number",
            hide:true,
            rules: [
              {
                required: false,
                message: "请输入株间距",
                trigger: "blur",
              },
            ],
          },
        ],
      },
      visible: false,
    };
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
    },
    //小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init() {
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
      getLandList(this.userInfo.user_id).then((res)=>{
          if(res.data.code==200){
              var landIdcolumn = that.findObject(that.option.column,"landId");
              that.landList = res.data.data;
              landIdcolumn.dicData = res.data.data;
          }
      })
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    submit(row,loading) {
      var that = this;
      row['farmType'] = 0;
      row['createUser'] = this.userInfo.user_id;
      save(row).then(
        () => {
          that.$emit("refreshOnLoad")
          that.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        },
        (error) => {
          loading();
          window.console.log(error);
        }
      );
    },
  },
};
</script>
src/views/wel/recovery.vue
@@ -17,6 +17,8 @@
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getUserList } from "@/api/system/user";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/recovery";
export default {
  data() {
    return {
@@ -29,8 +31,14 @@
        column: [
          {
            label: "采收品种",
            prop: "farmName",
            prop: "strainId",
            span: 12,
            type: "tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
            },
            labelWidth: 145,
            rules: [
              {
@@ -39,6 +47,7 @@
                trigger: "blur",
              },
            ],
            disabled:true,
          },
          {
            label: "采收地块",
@@ -62,14 +71,17 @@
          },
          {
            label: "采收重量",
            prop: "farmArea",
            prop: "weight",
            tip: '公斤',
            span: 12,
            labelWidth: 145,
            width: 110,
            controls:false,
            type:'number',
            rules: [
              {
                required: true,
                message: "请输入采收重量",
                message: "请输入采收重量 公斤",
                trigger: "click",
              },
            ],
@@ -117,20 +129,20 @@
              },
            ],
          },
          {
            label: "采收产品",
            prop: "farmArea",
            span: 12,
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: true,
                message: "请输入采收产品",
                trigger: "click",
              },
            ],
          },
          // {
          //   label: "采收产品",
          //   prop: "farmArea",
          //   span: 12,
          //   labelWidth: 145,
          //   width: 110,
          //   rules: [
          //     {
          //       required: true,
          //       message: "请输入采收产品",
          //       trigger: "click",
          //     },
          //   ],
          // },
          {
            label: "操作人",
            prop: "operator",
@@ -153,7 +165,7 @@
          },
          {
            label: "产品等级",
            prop: "leave",
            prop: "leaves",
            span: 12,
            labelWidth: 145,
            width: 110,
@@ -191,7 +203,7 @@
          },
          {
            label: "备注",
            prop: "farmArea",
            prop: "remark",
            span: 24,
            type:"textarea",
            labelWidth: 145,
@@ -215,8 +227,47 @@
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
    },
    //小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init(data) {
      this.form = {
        farmPlantId:data.id,
        strainId:data.strainId,
        landId:data.landId,
        weight:data.weight,
        leaves:'0',
        jobWay:data.jobWay,
        operator:data.operator,
        remark:''
      };
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
@@ -227,6 +278,7 @@
          landIdcolumn.dicData = res.data.data;
        }
      });
      //获取操作人
      const user = {
        tenantId: this.userInfo.tenant_id,
@@ -237,12 +289,33 @@
          operatorcolumn.dicData = res.data.data;
        }
      });
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    dataFormSubmit() {
      this.dataForm["userId"] = this.userInfo.id;
      this.$refs["dataForm"].validate((valid) => {
      });
    submit(row,loading,done) {
      var that = this;
      row.time = row.time + ":00";
      save(row).then(
        () => {
          this.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
           done();
        },
        (error) => {
          done();
          window.console.log(error);
        }
      );
    },
  },
};
src/views/wel/stock.vue
New file
@@ -0,0 +1,322 @@
<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">
    </avue-form>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getUserList } from "@/api/system/user";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/recovery";
export default {
  data() {
    return {
      title:"采收/捕捞",
      form: {},
      option: {
        emptyBtn: false,
        submitText: "保存",
        gutter: 30,
        column: [
          {
            label: "采收品种",
            prop: "strainId",
            span: 12,
            type: "tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
            },
            labelWidth: 145,
            rules: [
              {
                required: true,
                message: "请输入采收品种",
                trigger: "blur",
              },
            ],
            disabled:true,
          },
          {
            label: "采收地块",
            span: 12,
            labelWidth: 145,
            width: 110,
            prop: "landId",
            type:"tree",
            dicData: [],
            props: {
              label: "landName",
              value: "id"
            },
            rules: [
              {
                required: true,
                message: "请选择采收地块",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收重量",
            prop: "weight",
            tip: '公斤',
            span: 12,
            labelWidth: 145,
            width: 110,
            controls:false,
            type:'number',
            rules: [
              {
                required: true,
                message: "请输入采收重量 公斤",
                trigger: "click",
              },
            ],
          },
          {
            label: "作业方式",
            prop: "jobWay",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "select",
            value:"0",
            dicData:[
              {
                label:"人工",
                value:"0"
              },
              {
                label:"机械",
                value:"1"
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择作业方式",
                trigger: "click",
              },
            ],
          },
          {
            label: "采收时间",
            prop: "time",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "datetime",
            format: "yyyy-MM-dd HH:mm",
            valueFormat: "yyyy-MM-dd HH:mm",
            rules: [
              {
                required: true,
                message: "请选择采收时间",
                trigger: "click",
              },
            ],
          },
          // {
          //   label: "采收产品",
          //   prop: "farmArea",
          //   span: 12,
          //   labelWidth: 145,
          //   width: 110,
          //   rules: [
          //     {
          //       required: true,
          //       message: "请输入采收产品",
          //       trigger: "click",
          //     },
          //   ],
          // },
          {
            label: "操作人",
            prop: "operator",
            type: "tree",
            dicData: [],
            props: {
              label: "realName",
              value: "id",
            },
            span: 12,
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: true,
                message: "请输入操作人",
                trigger: "click",
              },
            ],
          },
          {
            label: "产品等级",
            prop: "leaves",
            span: 12,
            labelWidth: 145,
            width: 110,
            value:"0",
            type: "select",
            dicData:[
              {
                label:"一等品",
                value:"0"
              },
              {
                label:"二等品",
                value:"1"
              },
              {
                label:"三等品",
                value:"2"
              },
              {
                label:"四等品",
                value:"3"
              },
              {
                label:"五等品",
                value:"4"
              },
            ],
            rules: [
              {
                required: true,
                message: "请输入产品等级",
                trigger: "click",
              },
            ],
          },
          {
            label: "备注",
            prop: "remark",
            span: 24,
            type:"textarea",
            labelWidth: 145,
            width: 110,
            rules: [
              {
                required: false,
                message: "请输入备注",
                trigger: "click",
              },
            ],
          },
        ],
      },
      visible: false,
    };
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
    },
    //小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init(data) {
      this.form = {
        farmPlantId:data.id,
        strainId:data.strainId,
        landId:data.landId,
        weight:data.weight,
        leaves:'0',
        jobWay:data.jobWay,
        operator:data.operator,
        remark:''
      };
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
      getLandList(this.userInfo.user_id).then((res) => {
        if (res.data.code == 200) {
          var landIdcolumn = that.findObject(that.option.column, "landId");
          that.landList = res.data.data;
          landIdcolumn.dicData = res.data.data;
        }
      });
      //获取操作人
      const user = {
        tenantId: this.userInfo.tenant_id,
      };
      getUserList(user).then((res) => {
        if (res.data.code == 200) {
          var operatorcolumn = that.findObject(that.option.column, "operator");
          operatorcolumn.dicData = res.data.data;
        }
      });
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    submit(row,loading,done) {
      var that = this;
      row.time = row.time + ":00";
      save(row).then(
        () => {
          this.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
           done();
        },
        (error) => {
          done();
          window.console.log(error);
        }
      );
    },
  },
};
</script>