<template>
  <div class="eContainer">
    <c-page :title="title">
      <el-form ref="modelForm" label-width="120px" size="small" label-position="right" :model="model" :rules="rules"
        :validate-on-rule-change="false" :disabled="isDisabled">
        <c-tabs v-model="tabVal" ref="elment" type="card">
          <el-tab-pane label="固定格式文本信息" name="txm">
            <c-content>
              <m-txm-info :model="model" :type="type" />
            </c-content>
          </el-tab-pane>
        </c-tabs>
      </el-form>
      <div style="text-align: center">
        <c-button type="primary" style="margin-right: 10px" @click="commitAdd" v-if="type === 'add'">提 交</c-button>
        <c-button type="primary" style="margin-right: 10px" @click="commitEdit" v-if="type === 'edit'">提 交</c-button>
        <c-button type="primary" style="margin-right: 10px" @click="commitDelete" v-if="type === 'delete'">提
          交</c-button>
        <c-button type="primary" @click="goBack">返 回</c-button>
      </div>
    </c-page>
  </div>
</template>

<script>
import Utils from "~/utils";
import Txm, { Pattern } from "./Txm.js";

import TxmInfo from "./TxmInfo.vue";

import { queryById, add, edit, deleteById } from "~/service/test/txm.js";

export default {
  name: "StaticsDbitxm",
  components: {
    "m-txm-info": TxmInfo,
  },
  provide() {
    return {
      root: this,
    };
  },
  props: {
    type: {
      type: String,
      default: "info"
    },
    title: {
      type: String,
      default: "dbitxm"
    }
  },
  data() {
    return {
      model: new Txm().data,
      tabVal: "txm",
      rules: Pattern,
    };
  },
  computed: {
    isDisabled() {
      return this.type === "info" || this.type === "delete";
    },
  },
  created() {
    if (this.type !== "add") {
      const inr = this.$route.params.inr;
      queryById(inr).then((res) => {
        if (res.inr) {
          this.model = res;
        } else {
          this.$message.error("该信息不存在")
        }
      });
    }
  },
  methods: {
    commitAdd() {
      this.$refs.modelForm.validate((validated) => {
        if (validated) {
          add(this.model)
            .then((res) => {
              this.$message.success("添加成功!");
              this.goBack(true)
            })
            .catch((err) => {
              this.$message.error("添加失败!");
            });
        } else {
          Utils.formValidateTips(this.$refs.modelForm.fields)
        }
      });
    },
    commitEdit() {
      this.$refs.modelForm.validate((validated) => {
        if (validated) {
          edit(this.model)
            .then((res) => {
              if (res.inr) {
                this.$message.success("修改成功!");
                this.goBack(true)
              } else {
                this.$message.error("修改失败!");
              }
            })
            .catch((err) => {
              this.$message.error("修改失败!");
            });
        } else {
          Utils.formValidateTips(this.$refs.modelForm.fields)
        }
      });
    },
    commitDelete() {
      this.$confirm("是否确认删除?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          deleteById(this.model.inr)
            .then((res) => {
              if (res === true) {
                this.$message.success("删除成功!");
                this.goBack(true)
              } else {
                this.$message.error("删除失败,请刷新后再试");
              }
            })
            .catch((err) => {
              this.$message.error("删除失败!");
            });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
    goBack(update) {
      this.$store.dispatch("TagsView/delView", this.$route);
      this.$router.push({ name: "StaticsInftxm", params: { update } });
    },

  },
};
</script>

<style>

</style>