From dcd75a9a37d281f8aa5aabbeb76bd544dc08a4da Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 18 May 2022 19:04:34 +0800
Subject: [PATCH] 采收记录完善,结束完成,新增农产品种植,页面样式优化

---
 src/views/wel/farming.vue     |  322 +++++++++++
 src/views/wel/index.vue       |  258 ++++----
 public/img/wel/plant.png      |    0 
 public/img/wel/xiaosou.png    |    0 
 src/views/wel/land.vue        |  322 +++++++++++
 public/img/wel/land.png       |    0 
 public/img/wel/nongzi.png     |    0 
 src/views/wel/recovery.vue    |  119 +++
 src/views/wel/stock.vue       |  322 +++++++++++
 src/api/farmplant/recovery.js |   48 +
 src/views/wel/plant.vue       |  324 +++++++++++
 public/img/wel/farming.png    |    0 
 12 files changed, 1,560 insertions(+), 155 deletions(-)

diff --git a/public/img/wel/farming.png b/public/img/wel/farming.png
new file mode 100644
index 0000000..3b22c43
--- /dev/null
+++ b/public/img/wel/farming.png
Binary files differ
diff --git a/public/img/wel/land.png b/public/img/wel/land.png
new file mode 100644
index 0000000..4f90c77
--- /dev/null
+++ b/public/img/wel/land.png
Binary files differ
diff --git a/public/img/wel/nongzi.png b/public/img/wel/nongzi.png
new file mode 100644
index 0000000..ce2248a
--- /dev/null
+++ b/public/img/wel/nongzi.png
Binary files differ
diff --git a/public/img/wel/plant.png b/public/img/wel/plant.png
new file mode 100644
index 0000000..befef87
--- /dev/null
+++ b/public/img/wel/plant.png
Binary files differ
diff --git a/public/img/wel/xiaosou.png b/public/img/wel/xiaosou.png
new file mode 100644
index 0000000..8481b49
--- /dev/null
+++ b/public/img/wel/xiaosou.png
Binary files differ
diff --git a/src/api/farmplant/recovery.js b/src/api/farmplant/recovery.js
new file mode 100644
index 0000000..9054f61
--- /dev/null
+++ b/src/api/farmplant/recovery.js
@@ -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
+        }
+    })
+}
\ No newline at end of file
diff --git a/src/views/wel/farming.vue b/src/views/wel/farming.vue
new file mode 100644
index 0000000..34994ea
--- /dev/null
+++ b/src/views/wel/farming.vue
@@ -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>
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index 9a71724..5903f13 100644
--- a/src/views/wel/index.vue
+++ b/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;
diff --git a/src/views/wel/land.vue b/src/views/wel/land.vue
new file mode 100644
index 0000000..34994ea
--- /dev/null
+++ b/src/views/wel/land.vue
@@ -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>
diff --git a/src/views/wel/plant.vue b/src/views/wel/plant.vue
new file mode 100644
index 0000000..cd25766
--- /dev/null
+++ b/src/views/wel/plant.vue
@@ -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>
diff --git a/src/views/wel/recovery.vue b/src/views/wel/recovery.vue
index 81e742a..34994ea 100644
--- a/src/views/wel/recovery.vue
+++ b/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);
+        }
+      );
     },
   },
 };
diff --git a/src/views/wel/stock.vue b/src/views/wel/stock.vue
new file mode 100644
index 0000000..34994ea
--- /dev/null
+++ b/src/views/wel/stock.vue
@@ -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>

--
Gitblit v1.9.3