智慧农业后台管理页面
guoshilong
2022-11-08 082613d446e29e4ec1c16bfaa52345106a498b23
src/views/wel/farming.vue
@@ -7,142 +7,181 @@
    width="60%"
    :visible.sync="visible"
  >
    <avue-form ref="form" v-model="form" :option="option" @submit="submit">
    <avue-form ref="form" v-if="visible"  v-model="form" :option="option" @submit="submit">
    </avue-form>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { getLandList } from "@/api/land/land";
import { getUserList } from "@/api/system/user";
import { getStrainList } from "@/api/farmplant/strain";
import { save } from "@/api/farmplant/recovery";
import {mapState} from "vuex";
import {getLandList} from "@/api/land/land";
import {getUserList} from "@/api/system/user";
import {getDetail} from "@/api/soldr/soldr";
import {selectStockFa} from "@/api/stockfactory/stockfactory";
import {save} from "@/api/farm/farmingrecord";
export default {
  data() {
    const validateNum = (rule, value, callback) => {
      if (!/^[1-9]\d*$/.test(value)) {
        callback(new Error("请输入正数"));
      } else {
        callback();
      }
    };
    return {
      title:"采收/捕捞",
      form: {},
      title: "农事操作",
      form: {
        num: ''
      },
      option: {
        emptyBtn: false,
        submitText: "保存",
        gutter: 30,
        column: [
          {
            label: "采收品种",
            label: "农事类型",
            prop: "type",
            type: "select",
            labelWidth: 110,
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=farmingType",
            dicFormatter:(res)=>{
              let typeList = res.data.filter(e=>{
                return e.dictKey<10
              })
              return typeList
            },
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            rules: [
              {
                required: true,
                message: "请选择农事类型",
                trigger: ["blur","change"]
              },
            ],
          },
          {
            label: "所属地块",
            prop: "landId",
            type: "tree",
            dicData: [],
            props: {
              label: "landName",
              value: "id",
            },
            cascader: ["strainId"],
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请选择所属地块",
                trigger: ["blur","change"]
              },
            ],
          },
          {
            label: "农产品",
            prop: "strainId",
            span: 12,
            span: 7,
            type: "tree",
            dicData: [],
            props: {
              label: "strainName",
              value: "id"
              value: "id",
            },
            labelWidth: 145,
            dicUrl: `/api/farmPlant/strain-tree?landId={{key}}`,
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请输入采收品种",
                trigger: "blur",
                message: "请选择农产品",
                trigger: ["blur","change"]
              },
            ],
            disabled:true,
          },
          {
            label: "采收地块",
            span: 12,
            labelWidth: 145,
            width: 110,
            prop: "landId",
            type:"tree",
            label: "农资",
            prop: "stockId",
            type: "tree",
            span: 8,
            dicData: [],
            props: {
              label: "landName",
              value: "id"
              label: "spn",
              value: "id",
            },
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请选择采收地块",
                trigger: "click",
                message: "请选择农资",
                trigger: ["blur","change"]
              },
            ],
            display: false,
            change: res => {
              this.getDe(res)
            },
          },
          {
            label: "采收重量",
            prop: "weight",
            tip: '公斤',
            span: 12,
            labelWidth: 145,
            width: 110,
            controls:false,
            type:'number',
            rules: [
              {
                required: true,
                message: "请输入采收重量 公斤",
                trigger: "click",
              },
            ],
            label: "待使用数量",
            prop: "num",
            disabled: true,
            span: 5,
            display: false,
          },
          {
            label: "使用数量",
            type: "number",
            prop: "snum",
            span: 6,
            display: false,
            rules:[{required: false, validator: validateNum, trigger: 'blur'}]
          },
          {
            label: "作业方式",
            prop: "jobWay",
            span: 12,
            labelWidth: 145,
            width: 110,
            span: 6,
            labelWidth: 110,
            type: "select",
            value:"0",
            dicData:[
            value: '0',
            dicData: [
              {
                label:"人工",
                value:"0"
                label: "人工",
                value: "0",
              },
              {
                label:"机械",
                value:"1"
                label: "机械",
                value: "1",
              },
            ],
            rules: [
              {
                required: true,
                message: "请选择作业方式",
                trigger: "click",
                message: "请输入作业方式",
                trigger: ["blur","change"]
              },
            ],
          },
          {
            label: "采收时间",
            label: "农事操作时间",
            prop: "time",
            span: 12,
            labelWidth: 145,
            width: 110,
            type: "datetime",
            format: "yyyy-MM-dd HH:mm",
            valueFormat: "yyyy-MM-dd HH:mm",
            type: "date",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请选择采收时间",
                trigger: "click",
                message: "请选择农事操作时间",
                trigger: ["blur","change"]
              },
            ],
          },
          // {
          //   label: "采收产品",
          //   prop: "farmArea",
          //   span: 12,
          //   labelWidth: 145,
          //   width: 110,
          //   rules: [
          //     {
          //       required: true,
          //       message: "请输入采收产品",
          //       trigger: "click",
          //     },
          //   ],
          // },
          {
            label: "操作人",
            prop: "operator",
@@ -152,67 +191,47 @@
              label: "realName",
              value: "id",
            },
            span: 12,
            labelWidth: 145,
            width: 110,
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请输入操作人",
                trigger: "click",
                required: false,
                message: "请选择操作人",
                trigger: ["blur","change"]
              },
            ],
          },
          {
            label: "产品等级",
            prop: "leaves",
            span: 12,
            labelWidth: 145,
            width: 110,
            value:"0",
            type: "select",
            dicData:[
              {
                label:"一等品",
                value:"0"
              },
              {
                label:"二等品",
                value:"1"
              },
              {
                label:"三等品",
                value:"2"
              },
              {
                label:"四等品",
                value:"3"
              },
              {
                label:"五等品",
                value:"4"
              },
            ],
            rules: [
              {
                required: true,
                message: "请输入产品等级",
                trigger: "click",
              },
            ],
            label: "农事照片",
            prop: "tp",
            type: "upload",
            labelWidth: 110,
            dataType: "string",
            span: 24,
            limit: 5,
            listType: "picture-card",
            tip: "建议上传手机横屏拍摄的照片,宽高比16:9,最多上传5张",
            canvasOption: {
              text: "",
              ratio: 1.0,
            },
            propsHttp: {
              res: "data",
              url: "url"
            },
            action: "/api/blade-resource/oss/endpoint/put-files"
          },
          {
            label: "备注",
            prop: "remark",
            prop: "remarks",
            type: "textarea",
            maxlength:200,
            span: 24,
            type:"textarea",
            labelWidth: 145,
            width: 110,
            labelWidth: 110,
            rules: [
              {
                required: false,
                message: "请输入备注",
                trigger: "click",
                trigger: ["blur","change"]
              },
            ],
          },
@@ -224,61 +243,87 @@
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
      $farmId: state => state.user.$farmId,
    }),
  },
  methods: {
    //计算当前时间
    getNowTime(){
        var date = new Date();
        //年 getFullYear():四位数字返回年份
        var year = date.getFullYear();  //getFullYear()代替getYear()
        //月 getMonth():0 ~ 11
        var month = date.getMonth() + 1;
        //日 getDate():(1 ~ 31)
        var day = date.getDate();
        //时 getHours():(0 ~ 23)
        var hour = date.getHours();
        //分 getMinutes(): (0 ~ 59)
        var minute = date.getMinutes();
        //秒 getSeconds():(0 ~ 59)
        var second = date.getSeconds();
        //赋值
        this.form['time'] = year + '-'
                          + this.addZero(month) + '-'
                          + this.addZero(day) + ' '
                          + this.addZero(hour) + ':'
                          + this.addZero(minute);
  watch: {
    "form.type": {
      handler(val) {
        var stockIdcolumn = this.findObject(this.option.column, "stockId");
        var numColumn = this.findObject(this.option.column,"num")
        var snumColumn = this.findObject(this.option.column,"snum")
        if(typeof val =="undefined"){
          stockIdcolumn.display = false
          numColumn.display =false
          snumColumn.display = false
        }
        else if (val === "0" || val == 4 || val == 5 || val == 8 || val == 9) {
          stockIdcolumn.display = true;
        } else {
          stockIdcolumn.display = false;
        }
      },
      immediate: true,
    },
    //小于10的拼接上0字符串
  },
  methods: {
    getDe(val) {
      if (val.value!='') {
        getDetail(val.value,this.$farmId).then(res => {
            var amount1 = res.data.data.amount1;
            this.form.num = amount1
          var numz = this.findObject(this.option.column, "num");
          var numzs = this.findObject(this.option.column, "snum");
          numz.display = true;
          numzs.display = true;
        });
      }
    },
//计算当前时间
    getNowTime() {
      var date = new Date();
      //年 getFullYear():四位数字返回年份
      var year = date.getFullYear();  //getFullYear()代替getYear()
      //月 getMonth():0 ~ 11
      var month = date.getMonth() + 1;
      //日 getDate():(1 ~ 31)
      var day = date.getDate();
      //时 getHours():(0 ~ 23)
      var hour = date.getHours();
      //分 getMinutes(): (0 ~ 59)
      var minute = date.getMinutes();
      //秒 getSeconds():(0 ~ 59)
      var second = date.getSeconds();
      //赋值
      this.form['time'] = year + '-'
        + this.addZero(month) + '-'
        + this.addZero(day) + ' '
        + this.addZero(hour);
    }
    ,
//小于10的拼接上0字符串
    addZero(s) {
      return s < 10 ? ('0' + s) : s;
    },
    //初始化
    init(data) {
      this.form = {
        farmPlantId:data.id,
        strainId:data.strainId,
        landId:data.landId,
        weight:data.weight,
        leaves:'0',
        jobWay:data.jobWay,
        operator:data.operator,
        remark:''
      };
    }
    ,
//初始化
    init() {
      var that = this;
      this.visible = true;
      if (this.$refs.form){
        this.$refs.form.resetForm()
      }
      this.form['operator'] = this.userInfo.user_id;
      //计算当前时间
      this.getNowTime();
      this.visible = true;
      var that = this;
      //获取农地数据
      getLandList(this.userInfo.user_id).then((res) => {
      getLandList(this.$farmId).then((res) => {
        if (res.data.code == 200) {
          var landIdcolumn = that.findObject(that.option.column, "landId");
          that.landList = res.data.data;
          landIdcolumn.dicData = res.data.data;
        }
      });
      //获取操作人
      const user = {
        tenantId: this.userInfo.tenant_id,
@@ -289,34 +334,46 @@
          operatorcolumn.dicData = res.data.data;
        }
      });
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    // 表单提交
    submit(row,loading,done) {
      var that = this;
      row.time = row.time + ":00";
      save(row).then(
        () => {
          this.$refs.form.resetFields();
          that.visible = false;
          this.$message({
            type: "success",
            message: "操作成功!",
          });
           done();
        },
        (error) => {
          done();
          window.console.log(error);
      //获取农资
      selectStockFa(this.$farmId).then((res) => {
        if (res.data.code == 200) {
          var stockIdcolumn = that.findObject(that.option.column, "stockId");
          stockIdcolumn.dicData = res.data.data;
        }
      );
    },
  },
};
      });
    }
    ,
// 表单提交
    submit(row, done) {
      var that = this;
      row['tenantId'] = this.userInfo.tenant_id;
      row['deptId'] = this.$farmId;
      if (row.snum > row.num || row.snum <=0) {
        this.$message.warning("使用数量小于等于0或大于库存数量");
        done();
      }
      else {
        save(row).then(
          () => {
            that.$refs.form.resetFields();
            that.visible = false;
            this.$message({
              type: "success",
              message: "操作成功!",
            });
            that.$emit("refreshOnLoad")
            done();
          },
          (error) => {
            done();
            window.console.log(error);
          }
        );
      }
    }
    ,
  }
  ,
}
;
</script>