智慧农业后台管理页面
guoshilong
2022-11-08 082613d446e29e4ec1c16bfaa52345106a498b23
src/views/traceability/addTraceability.vue
@@ -4,6 +4,7 @@
    :modal-append-to-body="false"
    :append-to-body="true"
    :close-on-click-modal="false"
    @close="close"
    width="60%"
    :visible.sync="visible"
    center
@@ -78,7 +79,13 @@
              </div>
              <div class="input">
                <div class="left">重量/数量:</div>
                <div class="rigth">{{ formLabelAlign.weight==''?'':formLabelAlign.weight+"公斤" }}</div>
                <div class="rigth">
                  {{
                    formLabelAlign.weight == ""
                      ? ""
                      : formLabelAlign.weight + "公斤"
                  }}
                </div>
              </div>
              <div class="input">
                <div class="left">产地:</div>
@@ -112,7 +119,7 @@
            ref="formLabelAlign"
          >
            <el-form-item label="农产品名称" prop="productName">
              <el-input v-model="formLabelAlign.productName"></el-input>
              <el-input maxlength="40" v-model="formLabelAlign.productName"></el-input>
            </el-form-item>
            <el-form-item label="开具日期" prop="createTime">
              <el-date-picker
@@ -123,27 +130,46 @@
              ></el-date-picker>
            </el-form-item>
            <el-form-item label="重量/数量" prop="weight">
              <el-input v-model="formLabelAlign.weight"></el-input>
              <el-input maxlength="9" v-model="formLabelAlign.weight"></el-input>
            </el-form-item>
            <el-form-item label="联系方式" prop="phone">
              <el-input v-model="formLabelAlign.phone"></el-input>
              <el-input maxlength="14" v-model="formLabelAlign.phone"></el-input>
            </el-form-item>
            <el-form-item label="产地" prop="space">
              <el-input v-model="formLabelAlign.space"></el-input>
              <el-input maxlength="50" v-model="formLabelAlign.space"></el-input>
            </el-form-item>
            <el-form-item label="合格证编号" prop="certificationCode">
              <el-input v-model="formLabelAlign.certificationCode"></el-input>
              <el-input maxlength="45" v-model="formLabelAlign.certificationCode"></el-input>
            </el-form-item>
            <el-form-item label="承诺依据" prop="according">
              <el-checkbox-group v-model="formLabelAlign.according" @change="changeCheckBox">
                <el-checkbox label="委托检测" name="type" @change="wtChange"></el-checkbox>
                <el-checkbox label="自我检测" name="type" @change="zwChange"></el-checkbox>
                <el-checkbox label="内部质量控制" name="type" @change="nbChange"></el-checkbox>
                <el-checkbox label="自我承诺" name="type" @change="cnChange"></el-checkbox>
              <el-checkbox-group
                v-model="formLabelAlign.according"
                @change="changeCheckBox"
              >
                <el-checkbox
                  label="委托检测"
                  name="type"
                  @change="wtChange"
                ></el-checkbox>
                <el-checkbox
                  label="自我检测"
                  name="type"
                  @change="zwChange"
                ></el-checkbox>
                <el-checkbox
                  label="内部质量控制"
                  name="type"
                  @change="nbChange"
                ></el-checkbox>
                <el-checkbox
                  label="自我承诺"
                  name="type"
                  @change="cnChange"
                ></el-checkbox>
              </el-checkbox-group>
            </el-form-item>
            <el-form-item label="是否绑定溯源" prop="bind">
              <el-switch v-model="isBind" active-text="是" inactive-text="否">
              <el-switch v-model="isBind" active-text="是" inactive-text="否" @change="OnAutoStart">
              </el-switch>
            </el-form-item>
          </el-form>
@@ -151,39 +177,46 @@
      </div>
    </div>
    <div class="traceablility-table" v-if="isShow">
        <avue-crud
      :option="option"
      :table-loading="loading"
      :data="data"
      :page.sync="page"
      v-model="form"
      ref="crud"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
    ></avue-crud>
      <avue-crud
        :option="option"
        :table-loading="loading"
        :data="data"
        :page.sync="page"
        v-model="form"
        ref="crud"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @refresh-change="refreshChange"
        @on-load="onLoad"
      ></avue-crud>
    </div>
    <div class="traceability-btn">
        <el-button type="primary" @click="next" v-if="isBind">{{tip}}</el-button>
        <el-button type="primary" @click="submit">提 交</el-button>
      </div>
      <el-button type="primary" @click="next" v-if="isBind">{{
        tip
      }}</el-button>
      <!-- <el-button type="primary" @click="submit" v-if="isBtn">提 交</el-button> -->
      <el-button type="primary" @click="submit0" v-if="!isBind">提 交</el-button>
    </div>
  </el-dialog>
</template>
<script>
import { mapState } from "vuex";
import { save } from "@/api/traceability/traceability";
import { getList} from "@/api/farmplant/recovery";
import { getList } from "@/api/farmplant/recovery";
import { getStrainList } from "@/api/farmplant/strain";
import { getLandList,selectRecoveryLandList } from "@/api/land/land";
export default {
  data() {
    return {
      tip:"下一步",
      selectionList: [],
      tip: "下一步",
      isShow: false,
      isBind: false,
      isBtn: 1,
      wtjc: false,
      zwjc: true,
      nbjc: false,
@@ -191,6 +224,7 @@
      radio: "1",
      title: "创建溯源码",
      form: {},
      farm:{},
      formLabelAlign: {
        productName: "",
        createTime: "",
@@ -204,7 +238,7 @@
      visible: false,
      rules: {
        productName: [
          { required: true, message: "请输入产品名称", trigger: "blur" },
          { required: true, message: "请输入产品名称", trigger: ["blur","change"] },
        ],
        createTime: [
          {
@@ -216,7 +250,7 @@
        weight: [
          {
            required: true,
            message: "请输入联系重置/数量",
            message: "请输入数量",
            trigger: "change",
          },
        ],
@@ -235,10 +269,15 @@
            trigger: "change",
          },
        ],
        space: [{ required: true, message: "请输入产地", trigger: "change" }],
        space: [{ required: true, message: "请输入产地", trigger: ["blur","change"], }],
        certificationCode: [
          { required: true, message: "请输入合格证编号", trigger: "blur" },
          { required: true, message: "请输入合格证编号", trigger:["blur","change"], },
        ],
      },
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
      },
      option: {
        tip: false,
@@ -247,13 +286,17 @@
        delBtn: false,
        viewBtn: false,
        addBtn: false,
        menuWidth: 200,
        menu: false,
        menuAlign: "center",
        align: "center",
        selection: false,
        selection: true,
        searchShow: true,
        searchMenuSpan: 6,
        column: [
          {
            label: "采收品种",
            prop: "strainName",
          },
          {
            label: "采收品种",
            prop: "strainId",
@@ -261,6 +304,7 @@
            searchSpan: 4,
            span: 12,
            type: "tree",
            hide:true,
            dicData: [],
            props: {
              label: "strainName",
@@ -271,7 +315,7 @@
              {
                required: true,
                message: "请输入采收品种",
                trigger: "blur",
                trigger: ["blur","change"],
              },
            ],
            disabled: true,
@@ -336,10 +380,15 @@
            ],
          },
          {
            label:"操作人",
            prop:"realName"
          },
          {
            label: "操作人",
            prop: "operator",
            type: "tree",
            dicData: [],
            hide:true,
            props: {
              label: "realName",
              value: "id",
@@ -362,10 +411,10 @@
  computed: {
    ...mapState({
      userInfo: (state) => state.user.userInfo,
      $farmId: state => state.user.$farmId,
    }),
  },
  methods: {
    changeCheckBox(data) {},
    //委托检测
    wtChange(data) {
      this.wtjc = data;
@@ -382,41 +431,53 @@
    cnChange(data) {
      this.zwcn = data;
    },
    submit0(){
      if (this.isBind) {
        this.formLabelAlign["bind"] = "0";
      } else {
        this.formLabelAlign["bind"] = "1";
      }
      if(this.isBtn==1){
          this.submit();
      }
      if(this.isBtn==3){
          this.submits();
      }
    },
    //创建溯源码
    submit() {
      var that = this;
      if(this.isBind){
        this.formLabelAlign['bind'] = "0";
      }else{
        this.formLabelAlign['bind'] = "1";
      }
      that.formLabelAlign['tenantId'] = this.userInfo.tenant_id;
      that.formLabelAlign['deptId'] = this.$farmId;
      this.$refs["formLabelAlign"].validate((valid) => {
        if (valid) {
          that.formLabelAlign.createTime = that.formLabelAlign.createTime+" 00:00:00";
          that.formLabelAlign.createTime =
            that.formLabelAlign.createTime + " 00:00:00";
          var according = [];
          //承诺依据 数据格式转换
          that.formLabelAlign.according.forEach((item)=>{
            if(item=="委托检测"){
          that.formLabelAlign.according.forEach((item) => {
            if (item == "委托检测") {
              according.push(0);
            }
            if(item=="自我检测"){
            if (item == "自我检测") {
              according.push(1);
            }
            if(item=="内部质量控制"){
            if (item == "内部质量控制") {
              according.push(2);
            }
            if(item=="自我承诺"){
            if (item == "自我承诺") {
              according.push(3);
            }
          })
          });
          that.formLabelAlign.according = according.join(",");
          //新增
          save(that.formLabelAlign).then(
            () => {
              that.$emit("refreshOnLoad");
              that.$refs.formLabelAlign.resetFields();
              that.close();
              that.visible = false;
              that.isBtn = 1;
              that.$refs.formLabelAlign.resetFields();
              this.$message({
                type: "success",
                message: "操作成功!",
@@ -432,17 +493,129 @@
        }
      });
    },
    //是否绑定溯源码绑定事件
    OnAutoStart(e){
      if(e){
        this.isBtn = 2;
      }else{
        this.isBtn = 1;
      }
    },
    //创建溯源码
    submits() {
      var that = this;
      if (this.selectionList.length > 0 && this.selectionList.length > 1) {
        this.$message.warning("只能绑定一个溯源");
        return;
      }
      if (this.selectionList.length ==1) {
        that.formLabelAlign['recoveryId'] = this.selectionList[0].id;
        that.formLabelAlign['bind'] = '0';
      }
      that.formLabelAlign['tenantId'] = this.userInfo.tenant_id;
      that.formLabelAlign['deptId'] = this.$farmId;
      //新增
      save(that.formLabelAlign).then(
        () => {
          that.$emit("refreshOnLoad");
          that.visible = false;
          that.isBtn = 1;
          that.close();
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        },
        (error) => {
          window.console.log(error);
        }
      );
    },
    //关闭弹窗
    close() {
      //清除数据,状态回归
      this.isShow = false;
      this.isBind = false;
      this.isBtn = 1;
      this.wtjc = false;
      this.zwjc = true;
      this.nbjc = false;
      this.zwcn = false;
      this.formLabelAlign = {
        productName: "",
        createTime: "",
        according: ["自我检测"],
        weight: "",
        phone: "",
        space: "",
        certificationCode: "",
        code: "",
      };
    },
    //下一步
    next() {
      var that = this;
      this.$refs["formLabelAlign"].validate((valid) => {
        if (valid) {
          this.formLabelAlign["bind"] = "0";
          //设置时间
          that.formLabelAlign.createTime =
            that.formLabelAlign.createTime + " 00:00:00";
          var according = [];
          //承诺依据 数据格式转换
          that.formLabelAlign.according.forEach((item) => {
            if (item == "委托检测") {
              according.push(0);
            }
            if (item == "自我检测") {
              according.push(1);
            }
            if (item == "内部质量控制") {
              according.push(2);
            }
            if (item == "自我承诺") {
              according.push(3);
            }
          });
          that.formLabelAlign.according = according.join(",");
          //修改按钮状态
          this.isShow = true;
          this.isBind = false;
          this.isBtn = 3;
          //initFormData
          that.initFormData();
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    //初始化表格数据
    initFormData(){
      var that = this;
      // //获取农地数据
      // getLandList(this.userInfo.user_id).then((res)=>{
      //     if(res.data.code==200){
      //         var landIdcolumn = that.findObject(that.option.column,"landId");
      //         that.landList = res.data.data;
      //         landIdcolumn.dicData = res.data.data;
      //     }
      // })
      //获取农地数据
      selectRecoveryLandList(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;
          }
      })
      //获取农产品数据
      getStrainList(0).then((res)=>{
          if(res.data.code==200){
              var strainId = that.findObject(that.option.column,"strainId");
              strainId.dicData = res.data.data;
          }
      })
    },
    //计算当前时间
    getNowTime() {
@@ -455,11 +628,7 @@
      var day = date.getDate();
      //赋值
      this.formLabelAlign.createTime =
        year +
        "-" +
        this.addZero(month) +
        "-" +
        this.addZero(day);
        year + "-" + this.addZero(month) + "-" + this.addZero(day);
    },
    //小于10的拼接上0字符串
    addZero(s) {
@@ -499,6 +668,7 @@
    },
    onLoad(page, params = {}) {
      this.loading = true;
      params["farmId"] = this.$farmId
      getList(
        page.currentPage,
        page.pageSize,
@@ -561,12 +731,10 @@
      padding-top: 10px;
    }
  }
}
.traceability-btn {
    text-align: center;
    margin-top: 30px;
  }
  text-align: center;
  margin-top: 30px;
}
</style>