智慧农业后台管理页面
Administrator
2022-05-31 a61f279100e1447e571a3cd36e7dbbc97e060ce9
产量统计,播种面积统计页面交互实现
3 files modified
627 ■■■■■ changed files
src/api/farmplant/farmplant.js 13 ●●●●● patch | view | raw | blame | history
src/views/statistics/farmplantarea.vue 320 ●●●●● patch | view | raw | blame | history
src/views/statistics/farmproductstockstatistics.vue 294 ●●●● patch | view | raw | blame | history
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,
        }
    })
}
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();
        }
      );
    },
  },
};
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;