<template>
  <div id="medicalunion-management">
    <div class="top-btn">
      <el-button type="primary" class="btn" @click="addMedical">添加</el-button>
    </div>
    <div class="bot-table">
      <customs-table
        ref="table"
        :table-data="tableData"
        :columns="columns"
        :show-index="true"
        :header-class="'newHeader'"
        :list-loading="listLoading"
        :current-page="pageIndex"
        :total-count="total"
        :page-sizes="pageSizes"
        :page-size="pageSize"
        @pageSizeChange="handleSizeChange"
        @currentPageChange="handleCurrentChange"
      />
    </div>
    <el-dialog :visible.sync="addVisible" width="520px" :show-close="true">
      <div class="title">添加医联体</div>
      <el-form
        ref="form"
        :model="form"
        :label-position="'right'"
        label-width="110px"
        label-suffix=":"
      >
        <el-form-item
          v-for="(item, index) in formList"
          :key="index"
          :label="item.label"
          :rules="[{ required: true, message: item.label + '不能为空' }]"
          :prop="item.prop"
        >
          <el-input
            v-if="item.type == 'input'"
            v-model="form[item.prop]"
            autocomplete="off"
            :placeholder="'请填写' + item.label"
          ></el-input>
          <el-select
            v-if="item.type == 'select'"
            v-model="form[item.prop]"
            :placeholder="'请选择' + item.label"
            @change="changeCity(item.prop)"
          >
            <el-option
              v-for="e in item.selectGroup"
              :key="e.value"
              :label="e.label"
              :value="e.label"
            ></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button class="f-btn" type="primary" @click="submit()"
          >保存</el-button
        >
      </span>
    </el-dialog>
    <!-- 删除提示框 -->
    <el-dialog title="提示" :visible.sync="deleteVisible" width="30%">
      <span>确定删除吗？</span>
      <span slot="footer" class="dialog-footers">
        <el-button @click="deleteVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmDelete">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
import {
  addMedicalunion,
  medicalunionList,
  deleteUnion,
} from "@/api/medicalunion-management"
import cityList from "@/data/city"

export default {
  components: {
    CustomsTable,
  },
  mixins: [paginationMixin],
  data() {
    return {
      deleteVisible: false,
      addVisible: false,
      listLoading: false,
      columns: [
        {
          label: "医联体名称",
          minWidth: 120,
          value: "unionName",
        },
        {
          label: "医联体编号",
          minWidth: 120,
          value: "unionNo",
        },
        {
          label: "省",
          minWidth: 120,
          value: "province",
        },

        {
          label: "市",
          minWidth: 120,
          value: "city",
        },
        {
          label: "操作",
          width: 220,
          fixed: "right",
          operType: "button",
          operations: [
            {
              func: this.editMedical,
              formatter(row) {
                return {
                  label: "编辑",
                  type: "text",
                }
              },
            },
            {
              func: this.deleteFunc,
              style: {
                color: "#FA6400",
              },
              formatter(row) {
                return {
                  label: "删除",
                  type: "text",
                }
              },
            },
          ],
        },
      ],
      tableData: [],
      formList: [
        {
          type: "input",
          label: "医联体名称",
          prop: "unionName",
        },
        {
          type: "input",
          label: "医联体编号",
          prop: "unionNo",
        },
        {
          type: "select",
          label: "省",
          prop: "province",
          selectGroup: cityList,
        },
        {
          type: "select",
          label: "市",
          prop: "city",
          selectGroup: [],
        },
      ],
      form: {},
      deleteId: "",
    }
  },
  watch: {},
  mounted() {
    this.getMedicalunionList()
    console.log(cityList)
  },
  methods: {
    // 获取list
    getMedicalunionList() {
      this.listLoading = true
      medicalunionList({
        size: this.pageSize,
        current: this.pageIndex,
      }).then((res) => {
        if (res.code == 1) {
          this.total = res.data.total
          this.tableData = res.data.records
          this.listLoading = false
        }
      })
    },
    // 添加医联体
    addMedical() {
      if (this.$refs["form"]) {
        this.clearForm()
      }

      this.addVisible = true
    },
    // 编辑医联体
    editMedical(data) {
      console.log(data)
      this.form = { ...data }
      this.addVisible = true
      let value = this.form["province"]
      cityList.forEach((e) => {
        if (e.label == value) {
          this.formList[3].selectGroup = e.children
          if (e.children[0].label == "市辖区") {
            this.formList[3].selectGroup[0].label = e.label
          }
        }
      })
    },
    submit() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          addMedicalunion(this.form).then((res) => {
            if (res.code == 1) {
              this.$message.success("添加成功")
              this.addVisible = false
              this.page = 1
              this.getMedicalunionList()
            }
          })
        } else {
          // console.log("error submit!!")
          return false
        }
      })
    },
    // 删除
    deleteFunc(data) {
      console.log(data)
      this.deleteVisible = true
      this.deleteId = data.id
    },
    clearForm() {
      this.form = {}
      this.$refs["form"].resetFields()
    },
    confirmDelete() {
      this.deleteVisible = false
      deleteUnion(this.deleteId)
        .then((res) => {
          if (res.code == 1) {
            this.$message.success("删除成功")
            this.getMedicalunionList()
          }
        })
        .catch(() => {})
    },
    // 省份变化改变城市
    changeCity(val) {
      console.log(val)
      if (val == "province") {
        delete this.form["city"]
        // console.log(this.form["province"])
        let value = this.form["province"]
        cityList.forEach((e) => {
          if (e.label == value) {
            this.formList[3].selectGroup = e.children
            if (e.children[0].label == "市辖区") {
              this.formList[3].selectGroup[0].label = e.label
            }
          }
        })
      }
    },
  },
}
</script>
<style lang="scss" scoped>
#medicalunion-management {
  padding: 20px;
  .top-btn {
    .btn {
      width: 80px;
      height: 32px;
      background: #4e68ff;
      border-radius: 4px;
    }
  }
  .bot-table {
    margin-top: 20px;
  }
  .title {
    text-align: center;
    height: 26px;
    font-size: 22px;
    font-family: AlibabaPuHuiTiM;
    color: rgba(0, 0, 0, 0.8);
    line-height: 26px;
    margin-bottom: 30px;
  }
}
::v-deep .el-dialog__body {
  padding: 0 40px;
  border-top: none;
}
::v-deep .el-dialog__footer {
  border-top: none;
  text-align: center;
  .f-btn {
    width: 100px;
    height: 32px;
    background: #4e68ff;
  }
}
</style>
