From a61f279100e1447e571a3cd36e7dbbc97e060ce9 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 31 May 2022 14:03:36 +0800
Subject: [PATCH] 产量统计,播种面积统计页面交互实现

---
 src/api/farmplant/farmplant.js                      |   13 +
 src/views/statistics/farmproductstockstatistics.vue |  294 ++++++++++++-------------
 src/views/statistics/farmplantarea.vue              |  320 ++++++++++------------------
 3 files changed, 267 insertions(+), 360 deletions(-)

diff --git a/src/api/farmplant/farmplant.js b/src/api/farmplant/farmplant.js
index e06e5da..b2ae443 100644
--- a/src/api/farmplant/farmplant.js
+++ b/src/api/farmplant/farmplant.js
@@ -45,4 +45,17 @@
             id
         }
     })
+}
+
+
+export const getFarmPlantStatistics = (current, size, params) => {
+    return request({
+        url: '/api/farmPlant/getFarmPlantStatistics',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
 }
\ No newline at end of file
diff --git a/src/views/statistics/farmplantarea.vue b/src/views/statistics/farmplantarea.vue
index 6b795fb..fcabdd3 100644
--- a/src/views/statistics/farmplantarea.vue
+++ b/src/views/statistics/farmplantarea.vue
@@ -5,33 +5,23 @@
       :table-loading="loading"
       :data="data"
       :page.sync="page"
-      :permission="permissionList"
-      :before-open="beforeOpen"
+      :summary-method="getSummaries"
       v-model="form"
       ref="crud"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      @row-del="rowDel"
+      :search.sync="search"
       @search-change="searchChange"
       @search-reset="searchReset"
       @selection-change="selectionChange"
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @on-load="onLoad"
     >
     </avue-crud>
   </basic-container>
 </template>
 
 <script>
-import {
-  getDetail,
-  getList,
-  update,
-  remove,
-  save,
-} from "@/api/farmplant/farmproductstock";
+import { getFarmPlantStatistics } from "@/api/farmplant/farmplant";
 import { getStrainList } from "@/api/farmplant/strain";
 import { mapGetters } from "vuex";
 export default {
@@ -40,6 +30,7 @@
       visible: true,
       form: {},
       query: {},
+      search: {},
       loading: true,
       excelBox: false,
       page: {
@@ -66,24 +57,22 @@
         selectionFixed: false,
         expandFixed: false,
         menuFixed: false,
-        menu:false,
+        menu: false,
         sumColumnList: [
           {
             label: "合计",
             name: "strainId",
           },
           {
-            name: "weight",
+            name: "areas",
             type: "sum",
           },
         ],
         column: [
           {
-            label: "农产品名称",
+            label: "作物",
             prop: "strainId",
             span: 12,
-            search: true,
-            searchSpan: 4,
             searchLabelWidth: 100,
             type: "tree",
             dicData: [],
@@ -95,34 +84,15 @@
             rules: [
               {
                 required: true,
-                message: "请输入农产品名称",
+                message: "请输入作物",
                 trigger: "blur",
               },
             ],
             disabled: true,
           },
           {
-            label: "农产品图片",
-            prop: "url",
-            span: 12,
-            addDisplay: false,
-            editDisplay: false,
-            type: "upload",
-            dataType: "string",
-            listType: "picture-card",
-            labelWidth: 145,
-            rules: [
-              {
-                required: true,
-                message: "请上传农产品图片",
-                trigger: "click",
-              },
-            ],
-          },
-          {
-            label: "库存重量/公斤",
-            prop: "weight",
-            tip: "公斤",
+            label: "播种面积(亩)",
+            prop: "areas",
             span: 12,
             labelWidth: 145,
             controls: false,
@@ -136,76 +106,22 @@
             ],
           },
           {
-            label: "采收时间",
-            prop: "time",
-            addDisplay: false,
-            editDisplay: false,
+            label: "筛选时间段",
+            prop: "releaseTimeRange",
             span: 12,
-            labelWidth: 145,
-            type: "datetime",
-            format: "yyyy-MM-dd HH:mm",
-            valueFormat: "yyyy-MM-dd HH:mm",
+            hide: true,
+            search: true,
+            searchSpan: 6,
+            searchLabelWidth: 110,
+            searchRange: true,
+            searchValue: [this.getStartTime(), this.getEndTime()],
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
             rules: [
               {
                 required: true,
                 message: "请选择采收时间",
-                trigger: "click",
-              },
-            ],
-          },
-          // {
-          //   label: "操作人",
-          //   prop: "operator",
-          //   type: "tree",
-          //   dicData: [],
-          //   props: {
-          //     label: "realName",
-          //     value: "id",
-          //   },
-          //   span: 12,
-          //   labelWidth: 145,
-          //   rules: [
-          //     {
-          //       required: true,
-          //       message: "请输入操作人",
-          //       trigger: "click",
-          //     },
-          //   ],
-          // },
-          {
-            label: "产品等级",
-            prop: "leaves",
-            span: 12,
-            labelWidth: 145,
-            search: true,
-            searchSpan: 4,
-            type: "select",
-            dicData: [
-              {
-                label: "一等品",
-                value: "0",
-              },
-              {
-                label: "二等品",
-                value: "1",
-              },
-              {
-                label: "三等品",
-                value: "2",
-              },
-              {
-                label: "四等品",
-                value: "3",
-              },
-              {
-                label: "五等品",
-                value: "4",
-              },
-            ],
-            rules: [
-              {
-                required: true,
-                message: "请输入产品等级",
                 trigger: "click",
               },
             ],
@@ -220,14 +136,6 @@
   },
   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) => {
@@ -236,8 +144,76 @@
       return ids.join(",");
     },
   },
-  mounted() {},
+  mounted() {
+    var params = {
+      startTime:this.getStartTime(),
+      endTime:this.getEndTime()
+    }
+    this.onLoad(this.page,params);
+  },
   methods: {
+    //合计计算
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "合计";
+          return;
+        }
+        if (index === 1) {
+          const values = data.map((item) => Number(item[column.property]));
+          if (!values.every((value) => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                return prev + curr;
+              } else {
+                return prev;
+              }
+            }, 0);
+            sums[index] += " 亩";
+          } else {
+            sums[index] = "N/A";
+          }
+        }
+      });
+      return sums;
+    },
+    getStartTime() {
+      var myDate = new Date();
+      var year = myDate.getFullYear();
+      //获取当前月份(0-11,0代表1月,所以要加1);
+      var month = myDate.getMonth() + 1; 
+      //获取当前日(1-31)
+      var day = myDate.getDate(); 
+      if (month < 10) {
+        month = "0" + month;
+      }
+      if (day >= 0 && day <= 9) {
+        day = "0" + day;
+      }
+      var firstDay = year + "-" + month + "-01";
+      // this.query['startTime'] = firstDay;
+      return firstDay;
+    },
+    getEndTime() {
+      var myDate = new Date();
+      var year = myDate.getFullYear();
+      //获取当前月份(0-11,0代表1月,所以要加1);
+      var month = myDate.getMonth() + 1; 
+      //获取当前日(1-31)
+      var day = myDate.getDate(); 
+      if (month < 10) {
+        month = "0" + month;
+      }
+      if (day >= 0 && day <= 9) {
+        day = "0" + day;
+      }
+      var thisDay = year + "-" + month + "-" + day;
+      // this.query['endTime'] = thisDay;
+      return thisDay;
+    },
     initData() {
       var that = this;
       //获取农产品数据
@@ -247,89 +223,6 @@
           strainId.dicData = res.data.data;
         }
       });
-    },
-    //新增
-    rowSave(row, done, loading) {
-      row["strainType"] = 0;
-      save(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 = {};
@@ -359,17 +252,28 @@
     },
     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();
-      });
+      const { releaseTimeRange } = this.query;
+      let values = {
+        ...params,
+      };
+      if (releaseTimeRange) {
+        values = {
+          ...params,
+          startTime: releaseTimeRange[0],
+          endTime: releaseTimeRange[1],
+          ...this.query,
+        };
+        values.releaseTimeRange = null;
+      }
+      getFarmPlantStatistics(page.currentPage, page.pageSize, values).then(
+        (res) => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        }
+      );
     },
   },
 };
diff --git a/src/views/statistics/farmproductstockstatistics.vue b/src/views/statistics/farmproductstockstatistics.vue
index 6b795fb..5d876e7 100644
--- a/src/views/statistics/farmproductstockstatistics.vue
+++ b/src/views/statistics/farmproductstockstatistics.vue
@@ -6,12 +6,9 @@
       :data="data"
       :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
+      :summary-method="getSummaries"
       v-model="form"
       ref="crud"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      @row-del="rowDel"
       @search-change="searchChange"
       @search-reset="searchReset"
       @selection-change="selectionChange"
@@ -26,11 +23,7 @@
 
 <script>
 import {
-  getDetail,
-  getList,
-  update,
-  remove,
-  save,
+  getList
 } from "@/api/farmplant/farmproductstock";
 import { getStrainList } from "@/api/farmplant/strain";
 import { mapGetters } from "vuex";
@@ -66,11 +59,12 @@
         selectionFixed: false,
         expandFixed: false,
         menuFixed: false,
-        menu:false,
+        menu: false,
         sumColumnList: [
           {
             label: "合计",
             name: "strainId",
+            value: "合计",
           },
           {
             name: "weight",
@@ -82,8 +76,6 @@
             label: "农产品名称",
             prop: "strainId",
             span: 12,
-            search: true,
-            searchSpan: 4,
             searchLabelWidth: 100,
             type: "tree",
             dicData: [],
@@ -135,77 +127,77 @@
               },
             ],
           },
-          {
-            label: "采收时间",
-            prop: "time",
-            addDisplay: false,
-            editDisplay: false,
-            span: 12,
-            labelWidth: 145,
-            type: "datetime",
-            format: "yyyy-MM-dd HH:mm",
-            valueFormat: "yyyy-MM-dd HH:mm",
-            rules: [
-              {
-                required: true,
-                message: "请选择采收时间",
-                trigger: "click",
-              },
-            ],
-          },
           // {
-          //   label: "操作人",
-          //   prop: "operator",
-          //   type: "tree",
-          //   dicData: [],
-          //   props: {
-          //     label: "realName",
-          //     value: "id",
-          //   },
+          //   label: "采收时间",
+          //   prop: "time",
+          //   addDisplay: false,
+          //   editDisplay: false,
           //   span: 12,
           //   labelWidth: 145,
+          //   type: "datetime",
+          //   format: "yyyy-MM-dd HH:mm",
+          //   valueFormat: "yyyy-MM-dd HH:mm",
           //   rules: [
           //     {
           //       required: true,
-          //       message: "请输入操作人",
+          //       message: "请选择采收时间",
+          //       trigger: "click",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "产品等级",
+          //   prop: "leaves",
+          //   span: 12,
+          //   labelWidth: 145,
+          //   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: "leaves",
+            label: "筛选时间段",
+            prop: "releaseTimeRange",
             span: 12,
-            labelWidth: 145,
+            hide: true,
             search: true,
-            searchSpan: 4,
-            type: "select",
-            dicData: [
-              {
-                label: "一等品",
-                value: "0",
-              },
-              {
-                label: "二等品",
-                value: "1",
-              },
-              {
-                label: "三等品",
-                value: "2",
-              },
-              {
-                label: "四等品",
-                value: "3",
-              },
-              {
-                label: "五等品",
-                value: "4",
-              },
-            ],
+            searchSpan: 6,
+            searchLabelWidth: 110,
+            searchRange: true,
+            searchValue: [this.getStartTime(), this.getEndTime()],
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
             rules: [
               {
                 required: true,
-                message: "请输入产品等级",
+                message: "请选择采收时间",
                 trigger: "click",
               },
             ],
@@ -236,8 +228,76 @@
       return ids.join(",");
     },
   },
-  mounted() {},
+  mounted() {
+    var params = {
+      startTime:this.getStartTime(),
+      endTime:this.getEndTime()
+    }
+    this.onLoad(this.page,params);
+  },
   methods: {
+    //合计计算
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "合计";
+          return;
+        }
+        if (index === 2) {
+          const values = data.map((item) => Number(item[column.property]));
+          if (!values.every((value) => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                return prev + curr;
+              } else {
+                return prev;
+              }
+            }, 0);
+            sums[index] += " 公斤";
+          } else {
+            sums[index] = "N/A";
+          }
+        }
+      });
+      return sums;
+    },
+    getStartTime() {
+      var myDate = new Date();
+      var year = myDate.getFullYear();
+      //获取当前月份(0-11,0代表1月,所以要加1);
+      var month = myDate.getMonth() + 1; 
+      //获取当前日(1-31)
+      var day = myDate.getDate(); 
+      if (month < 10) {
+        month = "0" + month;
+      }
+      if (day >= 0 && day <= 9) {
+        day = "0" + day;
+      }
+      var firstDay = year + "-" + month + "-01";
+      // this.query['startTime'] = firstDay;
+      return firstDay;
+    },
+    getEndTime() {
+      var myDate = new Date();
+      var year = myDate.getFullYear();
+      //获取当前月份(0-11,0代表1月,所以要加1);
+      var month = myDate.getMonth() + 1; 
+      //获取当前日(1-31)
+      var day = myDate.getDate(); 
+      if (month < 10) {
+        month = "0" + month;
+      }
+      if (day >= 0 && day <= 9) {
+        day = "0" + day;
+      }
+      var thisDay = year + "-" + month + "-" + day;
+      // this.query['endTime'] = thisDay;
+      return thisDay;
+    },
     initData() {
       var that = this;
       //获取农产品数据
@@ -247,89 +307,6 @@
           strainId.dicData = res.data.data;
         }
       });
-    },
-    //新增
-    rowSave(row, done, loading) {
-      row["strainType"] = 0;
-      save(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 = {};
@@ -359,10 +336,23 @@
     },
     onLoad(page, params = {}) {
       this.loading = true;
+      const { releaseTimeRange } = this.query;
+      let values = {
+        ...params,
+      };
+      if (releaseTimeRange) {
+        values = {
+          ...params,
+          startTime: releaseTimeRange[0],
+          endTime: releaseTimeRange[1],
+          ...this.query,
+        };
+        values.releaseTimeRange = null;
+      }
       getList(
         page.currentPage,
         page.pageSize,
-        Object.assign(params, this.query)
+        values
       ).then((res) => {
         const data = res.data.data;
         this.page.total = data.total;

--
Gitblit v1.9.3