From 937ab15b5e62f83b2f190ece0134c4dffb784be5 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 18 Jul 2022 08:52:28 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/zhny_web

---
 src/views/wel/index.vue                  |   10 
 public/mg.png                            |    0 
 src/store/modules/user.js                |    2 
 src/views/farmplant/process.vue          |  796 +++++++++++++++++
 public/index.html                        |    2 
 public/img/bg/mg.png                     |    0 
 src/views/farmplant/farmproductstock.vue | 1275 ++++++++++++++++++---------
 src/views/system/user.vue                |    2 
 src/api/retrieval/retrieval.js           |   50 +
 src/views/retrieval/retrieval.vue        |  281 ++++++
 src/api/process/process.js               |   50 +
 src/api/land/land.js                     |    6 
 src/views/process/process.vue            |  254 +++++
 13 files changed, 2,275 insertions(+), 453 deletions(-)

diff --git a/public/img/bg/mg.png b/public/img/bg/mg.png
new file mode 100644
index 0000000..3bac32c
--- /dev/null
+++ b/public/img/bg/mg.png
Binary files differ
diff --git a/public/index.html b/public/index.html
index 8007c45..7a2d50e 100644
--- a/public/index.html
+++ b/public/index.html
@@ -29,7 +29,7 @@
   <script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
   <script src="https://cdn.staticfile.org/FileSaver.js/2014-11-29/FileSaver.min.js"></script>
   <script src="https://cdn.staticfile.org/xlsx/0.18.2/xlsx.full.min.js"></script>
-  <link rel="icon" href="<%= BASE_URL %>favicon.png">
+  <link rel="icon" href="<%= BASE_URL %>mg.png">
   <title>智慧农业综合管理平台</title>
   <style>
     html,
diff --git a/public/mg.png b/public/mg.png
new file mode 100644
index 0000000..3bac32c
--- /dev/null
+++ b/public/mg.png
Binary files differ
diff --git a/src/api/land/land.js b/src/api/land/land.js
index 63d9eca..ea48257 100644
--- a/src/api/land/land.js
+++ b/src/api/land/land.js
@@ -58,12 +58,12 @@
     })
 }
 
-export const selectCount = (deptId) => {
+export const selectCount = (farmId) => {
     return request({
         url: '/api/land/land/selectCount',
         method: 'get',
         params: {
-            deptId
+          farmId
         }
     })
-}
\ No newline at end of file
+}
diff --git a/src/api/process/process.js b/src/api/process/process.js
new file mode 100644
index 0000000..5d84a38
--- /dev/null
+++ b/src/api/process/process.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/process/process/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/process/process/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/process/process/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const addjg = (row) => {
+  return request({
+    url: '/api/process/process/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/process/process/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/retrieval/retrieval.js b/src/api/retrieval/retrieval.js
new file mode 100644
index 0000000..8896479
--- /dev/null
+++ b/src/api/retrieval/retrieval.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/retrieval/retrieval/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/retrieval/retrieval/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/retrieval/retrieval/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const addck = (row) => {
+  return request({
+    url: '/api/retrieval/retrieval/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/retrieval/retrieval/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 5fe9fd0..faab908 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -240,7 +240,7 @@
     },
     SET_USER_INFO: (state, userInfo) => {
       if (validatenull(userInfo.avatar)) {
-        userInfo.avatar = "/img/bg/img-logo.png";
+        userInfo.avatar = "/img/bg/mg.png";
       }
       state.userInfo = userInfo;
       setStore({name: 'userInfo', content: state.userInfo})
diff --git a/src/views/farmplant/farmproductstock.vue b/src/views/farmplant/farmproductstock.vue
index 9eafde4..304d7c0 100644
--- a/src/views/farmplant/farmproductstock.vue
+++ b/src/views/farmplant/farmproductstock.vue
@@ -23,8 +23,8 @@
           <!-- <div class="farm-img">
             <img src="../../../public/img/map.png" class="img" />
           </div> -->
-          <div class="cai">{{item.strainName}}</div>
-          <div class="area">库存量:<span>{{item.weight}}</span>公斤</div>
+          <div class="cai">{{ item.strainName }}</div>
+          <div class="area">库存量:<span>{{ item.weight }}</span>公斤</div>
           <div class="btn">
             <el-button style="width: 65px;" plain size="small" @click="openWindow(0,item)">
               <span style="color: #5abf78">销售</span></el-button
@@ -34,15 +34,14 @@
             </el-button
             >
           </div>
-          <!--          <div class="btn">-->
-          <!--            <el-button style="width: 65px;" plain size="small"-->
-          <!--            ><span style="color: #5abf78">出库</span></el-button-->
-          <!--            >-->
-          <!--            <el-button style="width: 65px;" plain size="small">-->
-          <!--              加工-->
-          <!--            </el-button-->
-          <!--            >-->
-          <!--          </div>-->
+          <div class="btn">
+            <el-button style="width: 65px;" plain size="small" @click="openWindow(3,item)"
+            ><span style="color: #5abf78">出库</span>
+            </el-button>
+            <el-button style="width: 65px;" plain size="small" @click="openWindow(2,item)">
+              加工
+            </el-button>
+          </div>
         </div>
       </div>
     </div>
@@ -59,7 +58,7 @@
       >
       </el-pagination>
     </div>
-
+    <!--销售-->
     <el-dialog
       title="农产品销售"
       :modal-append-to-body="false"
@@ -112,7 +111,7 @@
       <avue-form ref="form" v-model="form" :option="option">
         <template slot-scope="{disabled,size}" slot="name">
           <div>
-            <el-tag type="success">{{form.name}}</el-tag>
+            <el-tag type="success">{{ form.name }}</el-tag>
           </div>
         </template>
         <template slot-scope="{disabled,size}" slot="saleDestination">
@@ -132,7 +131,7 @@
             <el-input type="number" placeholder="请输入销售数量" v-model="form.saleNum"><i slot="suffix"
                                                                                     style="font-style:normal;margin-right: 5px;">公斤</i>
             </el-input>
-            <div style="text-align: right;color: #ffb218">可销售量:{{form.weight}}公斤</div>
+            <div style="text-align: right;color: #ffb218">可销售量:{{ form.weight }}公斤</div>
           </div>
         </template>
         <template slot-scope="{disabled,size}" slot="salePrice">
@@ -149,8 +148,7 @@
         </template>
       </avue-form>
     </el-dialog>
-
-
+    <!--库存-->
     <el-dialog
       title="农产品库存损耗"
       :modal-append-to-body="false"
@@ -165,14 +163,15 @@
       <avue-form ref="form" v-model="formKC" :option="optionKC">
         <template slot-scope="{disabled,size}" slot="name">
           <div>
-            <el-tag type="success">{{formKC.name}}</el-tag>
+            <el-tag type="success">{{ formKC.name }}</el-tag>
           </div>
         </template>
         <template slot-scope="{disabled,size}" slot="saleNum">
           <div style="margin-bottom: -20px">
-            <el-input type="number" placeholder="请输入损耗数量" v-model="formKC.saleNum"><i slot="suffix" style="font-style:normal;margin-right: 5px;">公斤</i>
+            <el-input type="number" placeholder="请输入损耗数量" v-model="formKC.saleNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
             </el-input>
-            <div style="text-align: right;color: #ffb218">库存量:{{formKC.weight}}公斤</div>
+            <div style="text-align: right;color: #ffb218">库存量:{{ formKC.weight }}公斤</div>
           </div>
         </template>
         <template slot="menuForm">
@@ -183,458 +182,850 @@
         </template>
       </avue-form>
     </el-dialog>
+    <!--加工-->
+    <el-dialog
+      title="加工产品"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      @close="close"
+      width="30%"
+      :before-close="cleanJGData"
+      :visible.sync="visibleJG"
+      center
+    >
+      <avue-form ref="form" v-model="formJG" :option="optionJG">
+        <template slot-scope="{disabled,size}" slot="name">
+          <div>
+            <el-tag type="success">{{ formJG.name }}</el-tag>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入加工数量" v-model="formJG.saleNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+            <div style="text-align: right;color: #ffb218">库存量:{{ formJG.weight }}公斤</div>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="processNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入产品数量" v-model="formJG.processNum"><i slot="suffix"
+                                                                                         style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+          </div>
+        </template>
+        <template slot="menuForm">
+          <div style="text-align: center">
+            <el-button style="width: 80px" plain @click="cleanKCData">取消</el-button>
+            <el-button style="width: 80px" type="success" plain @click="submitJGloss">确认</el-button>
+          </div>
+        </template>
+      </avue-form>
+    </el-dialog>
+    <!--出库-->
+    <el-dialog
+      title="出库产品"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      :before-close="cleanCKData"
+      @close="close"
+      width="30%"
+      :visible.sync="visibleCK"
+      center
+    >
+      <avue-form ref="form" v-model="formCK" :option="optionCK">
+        <template slot-scope="{disabled,size}" slot="name">
+          <div>
+            <el-tag type="success">{{ formCK.name }}</el-tag>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleDestination">
+          <div>
+            <el-cascader
+              style="width: 100%;"
+              placeholder="请选择出库去向"
+              size="large"
+              :options="optionck"
+              @change="handleChangeck"
+              v-model="saleDestination">
+            </el-cascader>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入出库数量" v-model="formCK.saleNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+            <div style="text-align: right;color: #ffb218">可出库量:{{ formCK.weight }}公斤</div>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="salePrice">
+          <!--          <div style="margin-bottom: -20px">
+                      <el-input type="number" placeholder="请输入销售价格" v-model="formCK.salePrice"><i slot="suffix"
+                                                                                                style="font-style:normal;margin-right: 5px;">元/公斤</i>
+                      </el-input>
+                    </div>-->
+        </template>
+        <template slot="menuForm">
+          <div style="text-align: center">
+            <el-button style="width: 120px" type="success" plain @click="submitCK">出库</el-button>
+          </div>
+        </template>
+      </avue-form>
+    </el-dialog>
   </div>
 
 </template>
 
 <script>
-  import {
-    getDetail,
-    getList,
-    update,
-    remove,
-    save,
-  } from "@/api/farmplant/farmproductstock";
+import {
+  getDetail,
+  getList,
+  update,
+  remove,
+  save,
+} from "@/api/farmplant/farmproductstock";
 
-  import {
-    add,addKC
-  } from "@/api/sale/sale";
+import {
+  add, addKC
+} from "@/api/sale/sale";
 
-  import {getStrainList} from "@/api/farmplant/strain";
-  import {mapGetters} from "vuex";
-  import {regionData} from 'element-china-area-data'
+import {
+  addjg
+} from "@/api/process/process";
 
-  export default {
-    data() {
-      return {
-        options: regionData,
-        formInline: {
-          user: "",
-          region: "",
-        },
-        form: {
-          name: "",
-          strainId: "",
-          saleTime: "",
-          saleNum: "",
-          saleDestination: "",
-          city: "",
-          county: "",
-          salePrice: "",
-          createUser: "",
-          saleBrand: "",
-        },
-        //损耗字段
-        formKC:{
-          name: "",
-          strainId: "",
-          saleNum: "",
-          remarks:"",
-          reason:"0",
-          lossTime:"",
-        },
-        visible: false,
-        visibleKC: false,
-        value: true,
-        page: {
-          pageSize: 16,
-          currentPage: 1,
-          total: 0,
-        },
-        option: {
-          emptyBtn: false,
-          submitBtn: false,
-          gutter: 30,
-          column: [
-            {
-              label: "种养品种",
-              prop: "strainName",
-              span: 24,
-              disabled: true,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入种养品种",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "销售时间",
-              prop: "saleTime",
-              type: "date",
-              span: 24,
-              format: "yyyy-MM-dd",
-              valueFormat: "yyyy-MM-dd",
-              rules: [
-                {
-                  required: true,
-                  message: "请选择销售时间",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "销售数量",
-              prop: "saleNum",
-              type: "number",
-              span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入销售数量",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "销售去向",
-              prop: "saleDestination",
-              span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请选择销售去向",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "销售价格",
-              prop: "salePrice",
-              span: 24,
-              type: "number",
-            },
-            {
-              label: "品牌",
-              prop: "saleBrand",
-              span: 24,
-            },
-            {
-              label: "操作人",
-              prop: "name",
-              span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入操作人",
-                  trigger: "blur",
-                },
-              ],
-            },
-          ]
-        },
-        optionKC: {
-          emptyBtn: false,
-          submitBtn: false,
-          gutter: 30,
-          column: [
-            {
-              label: "损耗品种",
-              prop: "strainName",
-              span: 24,
-              disabled: true,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入损耗品种",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "损耗时间",
-              prop: "lossTime",
-              type: "date",
-              span: 24,
-              format: "yyyy-MM-dd",
-              valueFormat: "yyyy-MM-dd",
-              rules: [
-                {
-                  required: true,
-                  message: "请选择损耗时间",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "损耗数量",
-              prop: "saleNum",
-              type: "number",
-              span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入损耗数量",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "损耗原因",
-              prop: "reason",
-              span: 24,
-              type: "select",
-              value: "0",
-              dicData: [
-                {
-                  label: "库存损耗",
-                  value: "0",
-                }],
-              rules: [
-                {
-                  required: true,
-                  message: "请选择损耗原因",
-                  trigger: "blur",
-                },
-              ],
-            },
-            {
-              label: "备注",
-              prop: "remarks",
-              span: 24,
-            },
-            {
-              label: "操作人",
-              prop: "name",
-              span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入操作人",
-                  trigger: "blur",
-                },
-              ],
-            },
-          ]
-        },
-        selectionList: [],
-        data: [],
-      };
-    },
-    computed: {
-      ...mapGetters(["permission", "userInfo"]),
-      // permissionList() {
-      //   return {
-      //     addBtn: this.vaildData(this.permission.social_add, true),
-      //     viewBtn: this.vaildData(this.permission.social_view, false),
-      //     delBtn: this.vaildData(this.permission.social_delete, false),
-      //     editBtn: this.vaildData(this.permission.social_edit, false),
-      //   };
-      // },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach((ele) => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
+import {
+  addck
+} from "@/api/retrieval/retrieval";
+import {mapGetters} from "vuex";
+import {regionData} from 'element-china-area-data'
+
+export default {
+  data() {
+    return {
+      options: regionData,
+      optionck: regionData,
+      formInline: {
+        user: "",
+        region: "",
       },
+      form: {
+        name: "",
+        proid: "",
+        landId: "",
+        strainId: "",
+        saleTime: "",
+        saleNum: "",
+        saleDestination: "",
+        city: "",
+        county: "",
+        salePrice: "",
+        createUser: "",
+        saleBrand: "",
+      },
+      //出库
+      formCK: {
+        name: "",
+        proid: "",
+        landId: "",
+        strainId: "",
+        saleTime: "",
+        saleNum: "",
+        saleDestination: "",
+        city: "",
+        county: "",
+        createUser: "",
+        remarks: "",
+      },
+      //损耗字段
+      formKC: {
+        name: "",
+        proid: "",
+        landId: "",
+        strainId: "",
+        saleNum: "",
+        remarks: "",
+        reason: "0",
+        lossTime: "",
+      },
+      //加工字段
+      formJG: {
+        name: "",
+        proid: "",
+        landId: "",
+        strainId: "",
+        saleNum: "",
+        processNum: "",
+        remarks: "",
+        reason: "0",
+        saleTime: "",
+      },
+      visible: false,
+      visibleCK: false,
+      visibleKC: false,
+      visibleJG: false,
+      value: true,
+      page: {
+        pageSize: 16,
+        currentPage: 1,
+        total: 0,
+      },
+      option: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "种养品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入种养品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售时间",
+            prop: "saleTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择销售时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入销售数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售去向",
+            prop: "saleDestination",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请选择销售去向",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售价格",
+            prop: "salePrice",
+            span: 24,
+            type: "number",
+          },
+          {
+            label: "品牌",
+            prop: "saleBrand",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      optionKC: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "损耗品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入损耗品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗时间",
+            prop: "lossTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择损耗时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入损耗数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗原因",
+            prop: "reason",
+            span: 24,
+            type: "select",
+            value: "0",
+            dicData: [
+              {
+                label: "库存损耗",
+                value: "0",
+              }],
+            rules: [
+              {
+                required: true,
+                message: "请选择损耗原因",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      optionJG: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "加工品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入加工品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工时间",
+            prop: "saleTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择加工时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入加工数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工产品",
+            prop: "processId",
+            span: 24,
+            type: "tree",
+            dicUrl: "/api/machining/machining/selectInfo",
+            props: {
+              label: "processName",
+              value: "processId"
+            },
+            rules: [
+              {
+                required: true,
+                message: "请输入加工产品",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "产品数量",
+            prop: "processNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入产品数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      optionCK: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "出库品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入出库品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "出库时间",
+            prop: "saleTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择出库时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "出库数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入出库数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "出库去向",
+            prop: "saleDestination",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请选择出库去向",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      selectionList: [],
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    // permissionList() {
+    //   return {
+    //     addBtn: this.vaildData(this.permission.social_add, true),
+    //     viewBtn: this.vaildData(this.permission.social_view, false),
+    //     delBtn: this.vaildData(this.permission.social_delete, false),
+    //     editBtn: this.vaildData(this.permission.social_edit, false),
+    //   };
+    // },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
     },
-    mounted() {
+  },
+  mounted() {
+  },
+  created() {
+    this.initData();
+    //初始化列表数据
+    this.onLoad(this.page);
+  },
+  methods: {
+    onSubmit() {
+      console.log("submit!");
     },
-    created() {
-      this.initData();
-      //初始化列表数据
+    //销售
+    submitSole() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          add(this.form).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanData();
+            done();
+          });
+        }
+      })
+    },
+    //加工产品
+    submitJGloss() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          addjg(this.formJG).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanJGData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanJGData();
+            done();
+          });
+        }
+      })
+    },
+    //库存消耗
+    submitKCloss() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          addKC(this.formKC).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanKCData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanKCData();
+            done();
+          });
+        }
+      })
+    },
+    //出库
+    submitCK() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          addck(this.formCK).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanCKData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanCKData();
+            done();
+          });
+        }
+      })
+    },
+    handleChange(value) {
+      if (value != null) {
+        this.form.saleDestination = value[0];
+        this.form.city = value[1];
+        this.form.county = value[2];
+      }
+    },
+    handleChangeck(value) {
+      if (value != null) {
+        this.formCK.saleDestination = value[0];
+        this.formCK.city = value[1];
+        this.formCK.county = value[2];
+      }
+    },
+    initData() {
+      // var that = this;
+      //获取农产品数据
+      // getStrainList(0).then((res) => {
+      //   if (res.data.code == 200) {
+      //     var strainId = that.findObject(that.option.column, "strainId");
+      //     strainId.dicData = res.data.data;
+      //   }
+      // });
+    },
+    openWindow(index, data) {
+      if (index == 0) {
+        this.form.name = this.userInfo.nick_name;
+        this.form.createUser = this.userInfo.user_id;
+        this.form.weight = data.weight;
+        this.form.proid = data.id;
+        this.form.landId = data.landId;
+        this.form.strainId = data.strainId;
+        this.form.strainName = data.strainName;
+        this.visible = true;
+      } else if (index == 1) {
+        this.formKC.name = this.userInfo.nick_name;
+        this.formKC.createUser = this.userInfo.user_id;
+        this.formKC.weight = data.weight;
+        this.formKC.proid = data.id;
+        this.formKC.landId = data.landId;
+        this.formKC.strainId = data.strainId;
+        this.formKC.strainName = data.strainName;
+        this.visibleKC = true;
+      } else if (index == 2) {
+        this.formJG.name = this.userInfo.nick_name;
+        this.formJG.createUser = this.userInfo.user_id;
+        this.formJG.proid = data.id;
+        this.formJG.landId = data.landId;
+        this.formJG.weight = data.weight;
+        this.formJG.strainId = data.strainId;
+        this.formJG.strainName = data.strainName;
+        this.visibleJG = true;
+      } else if (index == 3) {
+        this.formCK.name = this.userInfo.nick_name;
+        this.formCK.createUser = this.userInfo.user_id;
+        this.formCK.weight = data.weight;
+        this.formCK.proid = data.id;
+        this.formCK.landId = data.landId;
+        this.formCK.strainId = data.strainId;
+        this.formCK.strainName = data.strainName;
+        this.visibleCK = true;
+      }
+    },
+    cleanData() {
+      var that = this;
+      that.form.saleDestination = "";
+      that.$refs.form.resetFields();
+      that.visible = false;
+    },
+    cleanCKData() {
+      var that = this;
+      that.formCK.saleDestination = "";
+      that.$refs.form.resetFields();
+      that.visibleCK = false;
+    },
+    cleanKCData() {
+      var that = this;
+      that.$refs.form.resetFields();
+      that.visibleKC = false;
+    },
+    cleanJGData() {
+      var that = this;
+      that.$refs.form.resetFields();
+      that.visibleJG = false;
+    },
+    handleSizeChange(val) {
+      this.page.pageSize = val;
       this.onLoad(this.page);
     },
-    methods: {
-      onSubmit() {
-        console.log("submit!");
-      },
-      submitSole() {
-        var that = this;
-        this.$refs.form.validate((vaild, done) => {
-          if (vaild) {
-            add(this.form).then(() => {
-              this.onLoad(this.page);
-              this.$message({
-                type: "success",
-                message: "操作成功!"
-              });
-              //提交完成,关闭窗口清空数据
-              that.cleanData();
-              done();
-            }, error => {
-              window.console.log(error);
-              //提交失败,关闭窗口清空数据
-              that.cleanData();
-              done();
-            });
-          }
-        })
-      },
-      submitKCloss() {
-        var that = this;
-        this.$refs.form.validate((vaild, done) => {
-          if (vaild) {
-            addKC(this.formKC).then(() => {
-              this.onLoad(this.page);
-              this.$message({
-                type: "success",
-                message: "操作成功!"
-              });
-              //提交完成,关闭窗口清空数据
-              that.cleanKCData();
-              done();
-            }, error => {
-              window.console.log(error);
-              //提交失败,关闭窗口清空数据
-              that.cleanKCData();
-              done();
-            });
-          }
-        })
-      },
-      handleChange(value) {
-        if (value != null) {
-          this.form.saleDestination = value[0];
-          this.form.city = value[1];
-          this.form.county = value[2];
-
-        }
-      },
-      initData() {
-        // var that = this;
-        //获取农产品数据
-        // getStrainList(0).then((res) => {
-        //   if (res.data.code == 200) {
-        //     var strainId = that.findObject(that.option.column, "strainId");
-        //     strainId.dicData = res.data.data;
-        //   }
-        // });
-      },
-      openWindow(index, data) {
-        if (index == 0) {
-          this.form.name = this.userInfo.nick_name;
-          this.form.createUser = this.userInfo.user_id;
-          this.form.weight = data.weight;
-          this.form.strainId = data.strainId;
-          this.form.strainName = data.strainName;
-          this.visible = true;
-        } else if (index == 1) {
-          this.formKC.name = this.userInfo.nick_name;
-          this.formKC.createUser = this.userInfo.user_id;
-          this.formKC.weight = data.weight;
-          this.formKC.strainId = data.strainId;
-          this.formKC.strainName = data.strainName;
-          this.visibleKC = true;
-        }
-      },
-      cleanData() {
-        var that = this;
-        that.form.saleDestination = "";
-        that.$refs.form.resetFields();
-        that.visible = false;
-      },
-      cleanKCData() {
-        var that = this;
-        that.$refs.form.resetFields();
-        that.visibleKC = false;
-      },
-      handleSizeChange(val) {
-        this.page.pageSize = val;
-        this.onLoad(this.page);
-      },
-      handleCurrentChange(val) {
-        this.page.currentPage = val;
-        this.onLoad(this.page);
-      },
-      onLoad(page, params = {}) {
-        params['tenantId'] = this.userInfo.tenant_id;
-        params['deptId'] = this.userInfo.dept_id;
-        getList(
-          page.currentPage,
-          page.pageSize,
-          Object.assign(params, this.query)
-        ).then((res) => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      },
+    handleCurrentChange(val) {
+      this.page.currentPage = val;
+      this.onLoad(this.page);
     },
-  };
+    onLoad(page, params = {}) {
+      params['tenantId'] = this.userInfo.tenant_id;
+      params['deptId'] = this.userInfo.dept_id;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
 
-  .body {
-    background-color: #fff;
-    width: 98%;
-    height: 95%;
-    margin: 0 auto;
+.body {
+  background-color: #fff;
+  width: 98%;
+  height: 95%;
+  margin: 0 auto;
 
-    .search {
-      padding-top: 20px;
-      padding-left: 30px;
-    }
+  .search {
+    padding-top: 20px;
+    padding-left: 30px;
+  }
 
-    .table {
-      .content {
-        width: 99%;
-        height: auto;
-        min-height: 630px;
-        margin: 0 auto;
-        word-wrap: break-word;
-        word-break: break-all;
+  .table {
+    .content {
+      width: 99%;
+      height: auto;
+      min-height: 630px;
+      margin: 0 auto;
+      word-wrap: break-word;
+      word-break: break-all;
 
-        .farm {
+      .farm {
+        width: 168px;
+        height: 310px;
+        /*height: 315px;*/
+        background-color: #f7f9fb;
+        border-radius: 5px;
+        margin-left: 30px;
+        margin-top: 30px;
+        float: left;
+
+        .farm-img {
           width: 168px;
-          height: 283px;
-          /*height: 315px;*/
-          background-color: #f7f9fb;
-          border-radius: 5px;
-          margin-left: 30px;
-          margin-top: 30px;
-          float: left;
+          height: 168px;
 
-          .farm-img {
+          .img {
             width: 168px;
             height: 168px;
-
-            .img {
-              width: 168px;
-              height: 168px;
-              border-radius: 8px 8px 0px 0px;
-            }
+            border-radius: 8px 8px 0px 0px;
           }
-
-          .cai {
-            text-align: center;
-            font-size: 18px;
-            font-weight: 550;
-            margin-top: 8px;
-            color: #5abf78;
-          }
-
-          .area {
-            text-align: center;
-            font-size: 14px;
-            margin-top: 5px;
-            color: #333333;
-
-            span {
-              font-size: 15px;
-              color: #333333;
-            }
-          }
-
-          .btn {
-            text-align: center;
-            margin-top: 8px;
-          }
-
-
         }
+
+        .cai {
+          text-align: center;
+          font-size: 18px;
+          font-weight: 550;
+          margin-top: 8px;
+          color: #5abf78;
+        }
+
+        .area {
+          text-align: center;
+          font-size: 14px;
+          margin-top: 5px;
+          color: #333333;
+
+          span {
+            font-size: 15px;
+            color: #333333;
+          }
+        }
+
+        .btn {
+          text-align: center;
+          margin-top: 8px;
+        }
+
+
       }
     }
-
-    .el-page {
-      padding-top: 30px;
-      text-align: center;
-    }
   }
 
+  .el-page {
+    padding-top: 30px;
+    text-align: center;
+  }
+}
+
 </style>
diff --git a/src/views/farmplant/process.vue b/src/views/farmplant/process.vue
new file mode 100644
index 0000000..501f679
--- /dev/null
+++ b/src/views/farmplant/process.vue
@@ -0,0 +1,796 @@
+<template>
+  <div class="body">
+    <!-- <div class="search">
+      <el-form :inline="true" :model="formInline" class="demo-form-inline" size="small">
+        <el-form-item label="审批人">
+          <el-input v-model="formInline.user" placeholder="审批人"></el-input>
+        </el-form-item>
+        <el-form-item label="活动区域">
+          <el-select v-model="formInline.region" placeholder="活动区域">
+            <el-option label="区域一" value="shanghai"></el-option>
+            <el-option label="区域二" value="beijing"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit">查询</el-button>
+        </el-form-item>
+      </el-form>
+    </div> -->
+    <div class="table">
+      <div class="content">
+        <div class="farm" v-for="(item, index) in data" :key="index">
+          <div class="farm-img"><img :src="item.tpurl" class="img"/></div>
+          <!-- <div class="farm-img">
+            <img src="../../../public/img/map.png" class="img" />
+          </div> -->
+          <div class="cai">{{ item.processName }}</div>
+          <div class="area">库存量:<span>{{ item.processNum }}</span>公斤</div>
+<!--          <div class="btn">-->
+<!--            <el-button style="width: 65px;" plain size="small" @click="openWindow(0,item)">-->
+<!--              <span style="color: #5abf78">销售</span></el-button-->
+<!--            >-->
+<!--            <el-button style="width: 65px;padding-left:8px" plain size="small" @click="openWindow(1,item)">-->
+<!--              <span>库存损耗</span>-->
+<!--            </el-button-->
+<!--            >-->
+<!--          </div>-->
+<!--          <div class="btn">-->
+<!--            <el-button style="width: 65px;" plain size="small"-->
+<!--            ><span style="color: #5abf78">出库</span></el-button-->
+<!--            >-->
+<!--            <el-button style="width: 65px;" plain size="small" @click="openWindow(2,item)">-->
+<!--              加工-->
+<!--            </el-button>-->
+<!--          </div>-->
+        </div>
+      </div>
+    </div>
+    <div class="el-page">
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="page.currentPage"
+        :hide-on-single-page="value"
+        :page-size="page.pageSize"
+        background
+        layout="total, prev, pager, next"
+        :total="page.total"
+      >
+      </el-pagination>
+    </div>
+
+    <el-dialog
+      title="农产品销售"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      :before-close="cleanData"
+      @close="close"
+      width="30%"
+      :visible.sync="visible"
+      center
+    >
+      <avue-form ref="form" v-model="form" :option="option">
+        <template slot-scope="{disabled,size}" slot="name">
+          <div>
+            <el-tag type="success">{{ form.name }}</el-tag>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleDestination">
+          <div>
+            <el-cascader
+              style="width: 100%;"
+              placeholder="请选择销售去向"
+              size="large"
+              :options="options"
+              @change="handleChange"
+              v-model="saleDestination">
+            </el-cascader>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入销售数量" v-model="form.saleNum"><i slot="suffix"
+                                                                                    style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+            <div style="text-align: right;color: #ffb218">可销售量:{{ form.weight }}公斤</div>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="salePrice">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入销售价格" v-model="form.salePrice"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">元/公斤</i>
+            </el-input>
+          </div>
+        </template>
+        <template slot="menuForm">
+          <div style="text-align: center">
+            <el-button style="width: 120px" type="success" plain @click="submitSole">销售</el-button>
+          </div>
+        </template>
+      </avue-form>
+    </el-dialog>
+
+
+    <el-dialog
+      title="农产品库存损耗"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      @close="close"
+      width="30%"
+      :before-close="cleanKCData"
+      :visible.sync="visibleKC"
+      center
+    >
+      <avue-form ref="form" v-model="formKC" :option="optionKC">
+        <template slot-scope="{disabled,size}" slot="name">
+          <div>
+            <el-tag type="success">{{ formKC.name }}</el-tag>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入损耗数量" v-model="formKC.saleNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+            <div style="text-align: right;color: #ffb218">库存量:{{ formKC.weight }}公斤</div>
+          </div>
+        </template>
+        <template slot="menuForm">
+          <div style="text-align: center">
+            <el-button style="width: 80px" plain @click="cleanKCData">取消</el-button>
+            <el-button style="width: 80px" type="success" plain @click="submitKCloss">确认</el-button>
+          </div>
+        </template>
+      </avue-form>
+    </el-dialog>
+
+    <el-dialog
+      title="加工产品"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      @close="close"
+      width="30%"
+      :before-close="cleanJGData"
+      :visible.sync="visibleJG"
+      center
+    >
+      <avue-form ref="form" v-model="formJG" :option="optionJG">
+        <template slot-scope="{disabled,size}" slot="name">
+          <div>
+            <el-tag type="success">{{ formJG.name }}</el-tag>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="saleNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入加工数量" v-model="formJG.saleNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+            <div style="text-align: right;color: #ffb218">库存量:{{ formJG.weight }}公斤</div>
+          </div>
+        </template>
+        <template slot-scope="{disabled,size}" slot="processNum">
+          <div style="margin-bottom: -20px">
+            <el-input type="number" placeholder="请输入产品数量" v-model="formJG.processNum"><i slot="suffix"
+                                                                                      style="font-style:normal;margin-right: 5px;">公斤</i>
+            </el-input>
+          </div>
+        </template>
+        <template slot="menuForm">
+          <div style="text-align: center">
+            <el-button style="width: 80px" plain @click="cleanKCData">取消</el-button>
+            <el-button style="width: 80px" type="success" plain @click="submitJGloss">确认</el-button>
+          </div>
+        </template>
+      </avue-form>
+    </el-dialog>
+  </div>
+
+</template>
+
+<script>
+import {
+  getList,
+} from "@/api/process/process";
+
+import {
+  add, addKC
+} from "@/api/sale/sale";
+
+import {
+  addjg
+} from "@/api/process/process";
+import {mapGetters} from "vuex";
+import {regionData} from 'element-china-area-data'
+
+export default {
+  data() {
+    return {
+      options: regionData,
+      formInline: {
+        user: "",
+        region: "",
+      },
+      form: {
+        name: "",
+        proid:"",
+        landId:"",
+        strainId: "",
+        saleTime: "",
+        saleNum: "",
+        saleDestination: "",
+        city: "",
+        county: "",
+        salePrice: "",
+        createUser: "",
+        saleBrand: "",
+      },
+      //损耗字段
+      formKC: {
+        name: "",
+        proid:"",
+        landId:"",
+        strainId: "",
+        saleNum: "",
+        remarks: "",
+        reason: "0",
+        lossTime: "",
+      },
+      //加工字段
+      formJG: {
+        name: "",
+        proid:"",
+        landId:"",
+        strainId: "",
+        saleNum: "",
+        processNum: "",
+        remarks: "",
+        reason: "0",
+        saleTime: "",
+      },
+      visible: false,
+      visibleKC: false,
+      visibleJG: false,
+      value: true,
+      page: {
+        pageSize: 16,
+        currentPage: 1,
+        total: 0,
+      },
+      option: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "种养品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入种养品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售时间",
+            prop: "saleTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择销售时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入销售数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售去向",
+            prop: "saleDestination",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请选择销售去向",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "销售价格",
+            prop: "salePrice",
+            span: 24,
+            type: "number",
+          },
+          {
+            label: "品牌",
+            prop: "saleBrand",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      optionKC: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "损耗品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入损耗品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗时间",
+            prop: "lossTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择损耗时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入损耗数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "损耗原因",
+            prop: "reason",
+            span: 24,
+            type: "select",
+            value: "0",
+            dicData: [
+              {
+                label: "库存损耗",
+                value: "0",
+              }],
+            rules: [
+              {
+                required: true,
+                message: "请选择损耗原因",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      optionJG: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 30,
+        column: [
+          {
+            label: "加工品种",
+            prop: "strainName",
+            span: 24,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入加工品种",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工时间",
+            prop: "saleTime",
+            type: "date",
+            span: 24,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请选择加工时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工数量",
+            prop: "saleNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入加工数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "加工产品",
+            prop: "processId",
+            span: 24,
+            type: "tree",
+            dicUrl: "/api/machining/machining/selectInfo",
+            props: {
+              label: "processName",
+              value: "processId"
+            },
+            rules: [
+              {
+                required: true,
+                message: "请输入加工产品",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "产品数量",
+            prop: "processNum",
+            type: "number",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入产品数量",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            span: 24,
+          },
+          {
+            label: "操作人",
+            prop: "name",
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入操作人",
+                trigger: "blur",
+              },
+            ],
+          },
+        ]
+      },
+      selectionList: [],
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    // permissionList() {
+    //   return {
+    //     addBtn: this.vaildData(this.permission.social_add, true),
+    //     viewBtn: this.vaildData(this.permission.social_view, false),
+    //     delBtn: this.vaildData(this.permission.social_delete, false),
+    //     editBtn: this.vaildData(this.permission.social_edit, false),
+    //   };
+    // },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  mounted() {
+  },
+  created() {
+    this.initData();
+    //初始化列表数据
+    this.onLoad(this.page);
+  },
+  methods: {
+    onSubmit() {
+      console.log("submit!");
+    },
+    submitSole() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          add(this.form).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanData();
+            done();
+          });
+        }
+      })
+    },
+    //加工产品
+    submitJGloss() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          addjg(this.formJG).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanJGData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanJGData();
+            done();
+          });
+        }
+      })
+    },
+    submitKCloss() {
+      var that = this;
+      this.$refs.form.validate((vaild, done) => {
+        if (vaild) {
+          addKC(this.formKC).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            //提交完成,关闭窗口清空数据
+            that.cleanKCData();
+            done();
+          }, error => {
+            window.console.log(error);
+            //提交失败,关闭窗口清空数据
+            that.cleanKCData();
+            done();
+          });
+        }
+      })
+    },
+    handleChange(value) {
+      if (value != null) {
+        this.form.saleDestination = value[0];
+        this.form.city = value[1];
+        this.form.county = value[2];
+
+      }
+    },
+    initData() {
+      // var that = this;
+      //获取农产品数据
+      // getStrainList(0).then((res) => {
+      //   if (res.data.code == 200) {
+      //     var strainId = that.findObject(that.option.column, "strainId");
+      //     strainId.dicData = res.data.data;
+      //   }
+      // });
+    },
+    openWindow(index, data) {
+      if (index == 0) {
+        this.form.name = this.userInfo.nick_name;
+        this.form.createUser = this.userInfo.user_id;
+        this.form.weight = data.weight;
+        this.form.proid=data.id;
+        this.form.landId=data.landId;
+        this.form.strainId = data.strainId;
+        this.form.strainName = data.strainName;
+        this.visible = true;
+      } else if (index == 1) {
+        this.formKC.name = this.userInfo.nick_name;
+        this.formKC.createUser = this.userInfo.user_id;
+        this.formKC.weight = data.weight;
+        this.formKC.proid=data.id;
+        this.formKC.landId=data.landId;
+        this.formKC.strainId = data.strainId;
+        this.formKC.strainName = data.strainName;
+        this.visibleKC = true;
+      }
+      else if (index == 2) {
+        this.formJG.name = this.userInfo.nick_name;
+        this.formJG.createUser = this.userInfo.user_id;
+        this.formJG.proid=data.id;
+        this.formJG.landId=data.landId;
+        this.formJG.weight = data.weight;
+        this.formJG.strainId = data.strainId;
+        this.formJG.strainName = data.strainName;
+        this.visibleJG = true;
+      }
+    },
+    cleanData() {
+      var that = this;
+      that.form.saleDestination = "";
+      that.$refs.form.resetFields();
+      that.visible = false;
+    },
+    cleanKCData() {
+      var that = this;
+      that.$refs.form.resetFields();
+      that.visibleKC = false;
+    },
+    cleanJGData() {
+      var that = this;
+      that.$refs.form.resetFields();
+      that.visibleJG = false;
+    },
+    handleSizeChange(val) {
+      this.page.pageSize = val;
+      this.onLoad(this.page);
+    },
+    handleCurrentChange(val) {
+      this.page.currentPage = val;
+      this.onLoad(this.page);
+    },
+    onLoad(page, params = {}) {
+      params['tenantId'] = this.userInfo.tenant_id;
+      params['deptId'] = this.userInfo.dept_id;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+
+.body {
+  background-color: #fff;
+  width: 98%;
+  height: 95%;
+  margin: 0 auto;
+
+  .search {
+    padding-top: 20px;
+    padding-left: 30px;
+  }
+
+  .table {
+    .content {
+      width: 99%;
+      height: auto;
+      min-height: 630px;
+      margin: 0 auto;
+      word-wrap: break-word;
+      word-break: break-all;
+
+      .farm {
+        width: 168px;
+        height: 240px;
+        /*height: 315px;*/
+        background-color: #f7f9fb;
+        border-radius: 5px;
+        margin-left: 30px;
+        margin-top: 30px;
+        float: left;
+
+        .farm-img {
+          width: 168px;
+          height: 168px;
+
+          .img {
+            width: 168px;
+            height: 168px;
+            border-radius: 8px 8px 0px 0px;
+          }
+        }
+
+        .cai {
+          text-align: center;
+          font-size: 18px;
+          font-weight: 550;
+          margin-top: 8px;
+          color: #5abf78;
+        }
+
+        .area {
+          text-align: center;
+          font-size: 14px;
+          margin-top: 5px;
+          color: #333333;
+
+          span {
+            font-size: 15px;
+            color: #333333;
+          }
+        }
+
+        .btn {
+          text-align: center;
+          margin-top: 8px;
+        }
+
+
+      }
+    }
+  }
+
+  .el-page {
+    padding-top: 30px;
+    text-align: center;
+  }
+}
+
+</style>
diff --git a/src/views/process/process.vue b/src/views/process/process.vue
new file mode 100644
index 0000000..49f4bfe
--- /dev/null
+++ b/src/views/process/process.vue
@@ -0,0 +1,254 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.process_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/process/process";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "品种id",
+              prop: "strainId",
+              rules: [{
+                required: true,
+                message: "请输入品种id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "加工时间",
+              prop: "saleTime",
+              rules: [{
+                required: true,
+                message: "请输入加工时间",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "加工数量",
+              prop: "saleNum",
+              rules: [{
+                required: true,
+                message: "请输入加工数量",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "加工产品id",
+              prop: "processId",
+              rules: [{
+                required: true,
+                message: "请输入加工产品id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "产品数量",
+              prop: "processNum",
+              rules: [{
+                required: true,
+                message: "请输入产品数量",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "地块id",
+              prop: "landId",
+              rules: [{
+                required: true,
+                message: "请输入地块id",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.process_add, false),
+          viewBtn: this.vaildData(this.permission.process_view, false),
+          delBtn: this.vaildData(this.permission.process_delete, false),
+          editBtn: this.vaildData(this.permission.process_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>
diff --git a/src/views/retrieval/retrieval.vue b/src/views/retrieval/retrieval.vue
new file mode 100644
index 0000000..b1e9a80
--- /dev/null
+++ b/src/views/retrieval/retrieval.vue
@@ -0,0 +1,281 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               :page.sync="page"
+               :permission="permissionList"
+               :before-open="beforeOpen"
+               v-model="form"
+               ref="crud"
+               @row-update="rowUpdate"
+               @row-save="rowSave"
+               @row-del="rowDel"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @selection-change="selectionChange"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.retrieval_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/retrieval/retrieval";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "品种id",
+              prop: "strainId",
+              rules: [{
+                required: true,
+                message: "请输入品种id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库时间",
+              prop: "saleTime",
+              rules: [{
+                required: true,
+                message: "请输入出库时间",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库数量",
+              prop: "saleNum",
+              rules: [{
+                required: true,
+                message: "请输入出库数量",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库去向(省)",
+              prop: "saleDestination",
+              rules: [{
+                required: true,
+                message: "请输入出库去向(省)",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "具体出库去向",
+              prop: "saleDestination1",
+              rules: [{
+                required: true,
+                message: "请输入具体出库去向",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库备注",
+              prop: "remarks",
+              rules: [{
+                required: true,
+                message: "请输入出库备注",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库去向(市)",
+              prop: "city",
+              rules: [{
+                required: true,
+                message: "请输入出库去向(市)",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "出库去向(县)",
+              prop: "county",
+              rules: [{
+                required: true,
+                message: "请输入出库去向(县)",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "地块id",
+              prop: "landId",
+              rules: [{
+                required: true,
+                message: "请输入地块id",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.retrieval_add, false),
+          viewBtn: this.vaildData(this.permission.retrieval_view, false),
+          delBtn: this.vaildData(this.permission.retrieval_delete, false),
+          editBtn: this.vaildData(this.permission.retrieval_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>
diff --git a/src/views/system/user.vue b/src/views/system/user.vue
index 4381408..bf77c72 100644
--- a/src/views/system/user.vue
+++ b/src/views/system/user.vue
@@ -510,7 +510,7 @@
                   prop: "farmId",
                   labelWidth:110,
                   type: "tree",
-                  multiple: true,
+                  // multiple: true,
                   dicData: [],
                   props: {
                     label: "farmName",
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index 6d21d9e..63df300 100644
--- a/src/views/wel/index.vue
+++ b/src/views/wel/index.vue
@@ -224,7 +224,7 @@
     //本年农事操作记录
     getFarmingCount() {
       var that = this;
-      getFarmingCount(this.userInfo.dept_id).then((res) => {
+      getFarmingCount(this.userInfo.farmId).then((res) => {
         that.total = res.data.data;
         // that.total = 0;
         if (that.total > 0) {
@@ -235,13 +235,13 @@
     //本年农事操作记录,分组统计
     getFarmingStatis() {
       var that = this;
-      getFarmingStatis(this.userInfo.dept_id).then((res) => {
+      getFarmingStatis(this.userInfo.farmId).then((res) => {
         that.farmingList = res.data.data;
       });
     },
     StockCount() {
       var that = this;
-      StockCount(this.userInfo.dept_id).then((res) => {
+      StockCount(this.userInfo.farmId).then((res) => {
         that.stockList= res.data.data;
         console.log(that.stockList)
       });
@@ -249,7 +249,7 @@
     //地块使用率统计
     getCountStatis() {
       var that = this;
-      selectCount(this.userInfo.dept_id).then((res) => {
+      selectCount(this.userInfo.farmId).then((res) => {
         var data = res.data.data;
         that.landInfo = data;
       });
@@ -263,7 +263,7 @@
         status: 1,
       };
       params['tenantId'] = this.userInfo.tenant_id;
-      params['deptId'] = this.userInfo.dept_id;
+      params['farmId'] = this.userInfo.farmId;
       getList(1, 10, Object.assign(params)).then((res) => {
         const data = res.data.data;
         this.farmPlanList = data.records;

--
Gitblit v1.9.3