<template>
  <div class="rule-type">
    <el-dialog
      :title="id ? '编辑安全责任书' : '新增安全责任书'"
      :visible.sync="isShow"
      @close="onHide"
      width="700px"
    >
      <div class="page-body">
        <el-form
          :model="formData"
          :rules="formDataRules"
          size="small"
          ref="form"
          label-position="right"
          label-width="130px"
          label-prefix=":"
        >
          <el-form-item prop="orgId" label="签署责任人所在机构:">
            <tree-select
              v-model="formData.orgId"
              :options="deptOptions"
              :show-count="true"
              :normalizer="tenantIdnormalizer"
              :props="{ checkStrictly: true, label: 'name' }"
              placeholder="请选择签署责任人所在机构"
            />
          </el-form-item>
          <el-form-item prop="type" label="签署责任书类型:">
            <el-select
              v-model="formData.type"
              style="width: 100%"
              placeholder="请选择签署责任书类型"
            >
              <el-option
                v-for="dict in dict.type.safety_book_type"
                :key="dict.value"
                :label="dict.label"
                :value="`${dict.value}`"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-form>
        <el-button @click="openSelect">新增签署</el-button>

        <el-table :data="tableData" style="width: 100%" height="400px">
          <el-table-column prop="names" label="姓名">
            <template slot-scope="scope">
              <template v-for="item in scope.row.names">
                {{ item }}
                <br />
              </template>
            </template>
          </el-table-column>
          <el-table-column prop="time" label="签署时间"> </el-table-column>
          <el-table-column prop="files" label="签署文件"> </el-table-column>

          <el-table-column prop="names" label="操作">
            <template v-slot="{ row }">
              <el-button type="text" @click="removeRow(row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>

      <div slot="footer" class="dialog-footer">
        <el-button @click="isShow = false">取消</el-button>
        <el-button type="primary" @click="onSubmit">确定</el-button>
      </div>
    </el-dialog>
    <DialogSelect ref="DialogSelect" @success="getSign"></DialogSelect>
  </div>
</template>

<script>
import { mapState, mapMutations } from "vuex";
import {
  listSafetyBook,
  getSafetyBook,
  editOrAdd,
  delSafetyBook,
} from "@/api/safetyBook/index";
import { deptTreeSelect } from "@/api/system/public";
import DialogSelect from "./dialog.sign";
export default {
  dicts: ["safety_book_type"],
  data() {
    return {
      id: null,
      isShow: false,
      formData: this.reset(),
      tableData: [],
      //修改新增中的机构树
      deptOptions: [],
      formDataRules: {
        orgId: [{ required: true, message: "请选择签署责任人所在机构" }],
        type: [{ required: true, message: "请选择签署责任书类型" }],
      },
    };
  },

  watch: {},
  computed: {
    ...mapState([]),
  },
  methods: {
    ...mapMutations([]),
    //添加签署后回调
    getSign(data) {
      this.tableData.push(data);
      // console.log(data, "ddd");
    },
    //新增签署
    openSelect() {
      this.$refs.DialogSelect.show();
    },
    /** 查询机构树数据 */
    getDeptTree() {
      deptTreeSelect().then((response) => {
        this.deptOptions = response.data;
      });
    },
    /** treeSelect组件自定义数据*/
    tenantIdnormalizer(node, instanceId) {
      if (node.children && !node.children.length) {
        delete node.children;
      }
      return {
        id: node.id,
        label: node.shortName,
        children: node.children,
      };
    },
    removeRow(row) {
      this.tableData = this.tableData.filter((item) => item !== row);
    },
    reset() {
      return {
        id: null,
        type: null,
      };
    },
    async refresh(id) {
      if(id!=null&&id!=undefined){
        await getSafetyBook(id).then((res) => {
          // console.log(res.data,"res")
          this.formData=res.data;
          this.tableData=res.data.bookUsers;
        });
      }
    },
    async show(id) {
      // console.log(id, "id");
      this.getDeptTree();
      this.formData=this.reset();
      this.tableData=[];
      this.id = id;
      await this.refresh(id);
      this.isShow = true;
    },

    // 事件
    onHide() {
      this.formData = this.reset();
      this.$refs.form.resetFields();
    },
    onSubmit() {
      console.log(this.formData,"this.formData")
      this.$refs.form.validate(async (isValidate) => {
        if (!isValidate) return;
        this.formData.bookUsers=this.tableData;
        await editOrAdd(this.formData);
        this.$emit("success");
        this.isShow = false;
      });
    },

    // 事件
    //apimark//
  },
  mounted() {},
  components: { DialogSelect },
};
</script>

<style lang="scss" scoped>
.brand_info {
  .el-form {
    width: 600px;
    padding-top: 40px;
  }
}
</style>
