<template>
  <el-dialog
    class="addLineDialog"
    :title="lineDialogTitle"
    :visible.sync="lineDialog"
    width="420px"
  >
    <el-form
      label-position="left"
      label-width="92px"
      ref="formLineInfo"
      :rules="rules"
      :model="lineForm"
    >
      <el-form-item label="单位：" prop="bsManufacturer">
        <el-input
          v-model="lineForm.bsManufacturer"
          autocomplete="off"
        ></el-input>
      </el-form-item>
      <el-form-item label="DY等级：" prop="dyLevel">
        <el-select v-model="lineForm.dyLevelid" placeholder="请选择电压等级">
          <el-option
            v-for="items in dyOptions"
            :key="items.id"
            :label="items.name"
            :value="items.id"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="线路名称：" prop="name">
        <el-input v-model="lineForm.name" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
      <el-button @click="closeDialog(0)">取 消</el-button>
      <el-button type="primary" @click="submitForm()">确 定</el-button>
    </div>
  </el-dialog>
</template>
<script>
import {
  addLineJoggle,
  updateLineJoggle,
  getdyListJoggle,
} from "@/utils/api/index";

export default {
  props: {
    lineDialog: {
      type: Boolean,
    },
    lineDialogTitle: {
      type: String,
      default: "新增",
    },
    formItem: {
      type: Object,
      default: function () {
        return {};
      },
    },
  },

  data() {
    return {
      lineForm: {},
      dyOptions: "",
      rules: {
        bsManufacturer: [
          { required: true, message: "请输入公司名称", trigger: "blur" },
        ],
        dyLevelid: [
          { required: true, message: "请选择DY等级", trigger: "blur" },
          { type: "number", message: "DY等级数字值" },
        ],
        name: [
          {
            required: true,
            message: "请输入线路名称",
            trigger: "blur",
          },
        ],
      },
      //表单数组，对象
      formArr: [],
    };
  },
  methods: {
    // 保存确定操作
    submitForm() {
      this.$refs.formLineInfo.validate((valid) => {
        if (valid) {
          console.log(this.lineForm);
          let formObj = {
            bsManufacturer: this.lineForm.bsManufacturer,
            dyLevelid: this.lineForm.dyLevelid,
            name: this.lineForm.name,
          };
          this.formArr.push(formObj);
          console.log(this.formArr);

          // 走保存请求
          if (this.lineDialogTitle == "新增") {
            addLineJoggle({ list: this.formArr })
              .then((res) => {
                console.log(res);
                this.$emit("lineDialogClose", 1); //关闭弹窗
                this.formArr = [];
                this.$message.success("添加成功");
              })
              .catch((err) => {
                console.log(err); //代码错误、请求失败捕获
                this.$message.error("添加失败");
              });
          } else if (this.lineDialogTitle == "修改") {
            let changeformObj = {
              bsManufacturer: this.lineForm.bsManufacturer,
              dyLevelid: this.lineForm.dyLevelid,
              name: this.lineForm.name,
              id: this.lineForm.id,
            };
            updateLineJoggle(changeformObj)
              .then((res) => {
                console.log(res);
                this.$emit("lineDialogClose", 1); //关闭弹窗
                this.$message.success("修改成功");
              })
              .catch((err) => {
                console.log(err); //代码错误、请求失败捕获
                this.$message.error("修改失败");
              });
          }
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    //取消关闭弹窗
    closeDialog(flag) {
      this.$refs.formLineInfo.resetFields();
      this.$emit("lineDialogClose", flag);
    },
  },
  mounted() {
    console.log("打印传过来的对象", this.formItem);
    console.log("打印传过来的对象", this.formItem.bsManufacturer);
    this.lineForm = JSON.parse(JSON.stringify(this.formItem));
  },
  watch: {
    formItem: {
      handler(newVal, oldVal) {
        // 调用函数
        this.$nextTick(() => {
          this.lineForm = JSON.parse(JSON.stringify(this.formItem));
        });
      },
      immediate: true,
      deep: true,
    },
  },
  created() {
    getdyListJoggle().then((res) => {
      console.log(res);
      this.dyOptions = res.data.list;
      console.log(this.dyOptions);
    });
  },
};
</script>
<style lang="less">
.addLineDialog {
  .el-select {
    width: 100%;
  }
}
</style>
