<template>
  <el-tabs v-model="activeName">
    <el-form :inline="true" :model="formOrganization" class="demo-form-inline" >
      <el-form-item label>
        <el-cascader size="small" ref="cascaderRegion" :options="optionsRegion" :props="props"
          v-model="formOrganization.administrativeIdList" @change="handleChangeRegion" filterable change-on-select
          placeholder="请选择地区"></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-select size="small" v-model="formOrganization.level" placeholder="全部医院级别">
          <el-option v-for="(item, index) in organizationRank" :key="index" :label="item.label" :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label>
        <el-input style="width:140px;" size="small" v-model="formOrganization.name" placeholder="请输入机构名称"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button size="small" type="primary" @click="searchOrganization()">搜索</el-button>
      </el-form-item>
      <el-form-item>
        <el-button size="small" type="primary" @click="resetOrgOrPerson()">重置</el-button>
      </el-form-item>
    </el-form>
    <el-table class="rim" ref="multipleOrganization" :data="tableOrganization" tooltip-effect="dark" style="width: 100%"
      @select-all="selectAllOrganization" @select="selectOrganization">
      <el-table-column type="selection" width="55" :selectable="selectableTableList"></el-table-column>
      <el-table-column prop="orgName" label="医院名称" min-width="100" align="center"></el-table-column>
      <el-table-column prop="orgLevelName" label="医院级别" align="center"></el-table-column>
      <el-table-column prop="provinceName" label="所属省份" align="center"></el-table-column>
      <el-table-column prop="cityName" label="所属城市" align="center"></el-table-column>
      <el-table-column prop="countyName" label="所属区县" align="center"></el-table-column>
      <el-table-column prop="townName" label="所属街道" align="center"></el-table-column>
      <div slot="empty">
        <div class="table-empty">
          <img src="../../assets/image/no-content1.png">
          <p>没有机构信息</p>
        </div>
      </div>
    </el-table>
    <div class="pagination">
      <el-pagination background @size-change="handleSizeOrganization" @current-change="handleCurrentOrganization"
        :current-page="formOrganization.pageNum" :page-sizes="[10, 20, 40]" :page-size="formOrganization.pageSize"
        layout="total, sizes, prev, pager, next, jumper" :total="totalOrganization"></el-pagination>
    </div>
  </el-tabs>
</template>
<script>
    import { openLoading, closeLoading } from "../../utils/utils";
  import { doUpload, getFilePath } from "../../utils/qiniu-util";
  import * as operationData from "../../utils/operation";
  import { getCircleProvincesReq, getMemberSelectOrgReq,getMemberSelectOrgOptionReq } from '@/utils/yqrange/rangeApi';
  let vm = null;
  export default {
    name: "organzation",
    props: {
      formData: {
        type: Object,
        default: () => {
          return {}
        }
      }
    },
    data() {
      return {
        props: {
          lazy: true,
          lazyLoad(node, resolve) {
            const { level } = node;
            console.log("node", node);
            if (node.level == 1) {
              let req = {
                provinceId: node.data.value
              };
              vm.GET("basic-data/position/cities", req).then(res => {
                let newData = vm.setMoreOption(res.data.cityList, "cities");
                resolve(newData);
              });
            } else if (node.level == 2) {
              let req = {
                cityId: node.data.value
              };
              vm.GET("basic-data/position/counties", req).then(res => {
                let newData = vm.setMoreOption(res.data.countyList, "counties");
                resolve(newData);
              });
            } else if (node.level == 3) {
              let req = {
                countyId: node.data.value
              };
              vm.GET("basic-data/position/towns", req).then(res => {
                let newData = vm.setMoreOption(res.data.townList, "towns");
                resolve(newData);
              });
            }
          }
        },
        administrativeValue: "",
        optionsRegion: [],
        organizationRank: [],
        tableOrganization: new Array(),
        currentOrganization: 1,
        totalOrganization: 10,
        pageSizeOrganization: 2,
        activeName:"",
        selectionList:"",
        formOrganization: {
          name: "",
          administrativeId: "0",
          administrativeIdList: ["0"],
          level: "",
          chechAll: true,
          pageNum: 1,
          pageSize: 10
        },
      }
    },
    mounted() {
      // const { enterType, id } = this.$route.query;
      this.circleId = vm.formData.id;
      this.initRange();
      //Idtype:1,内部 2.外部
      vm.idType = localStorage.getItem("storageIdType");
      console.log("this.idType:" + vm.idType);
    },
    created() {
      vm = this;
    },
    methods: {
      initRange() {
        let circleId = this.formData.id;
        this.getRegionOption();
        this.listLevels();
        // this.getOrganization();
        // this.searchOrganization();
        this.activeName = "second";
        this.formOrganization.pageNum = 1;
        this.formOrganization.name = "";
        this.formOrganization.administrativeIdList = ["0"];
        this.formOrganization.level = "";
      },
      setMoreOption(data, type) {
        let option = [];
        for (let i = 0; i < data.length; i++) {
          let obj = data[i];
          if (type == "cities") {
            obj.label = data[i].cityName;
            obj.value = data[i].cityId;
          } else if (type == "counties") {
            obj.label = data[i].countyName;
            obj.value = data[i].countyId;
            // obj.leaf = true;
          } else if (type == "towns") {
            obj.label = data[i].townName;
            obj.value = data[i].townId;
            obj.leaf = true;
          }
          option.push(obj);
        }
        return option;
      },
      //获取地区
      getRegionOption() {
        openLoading(vm);
        let idType = localStorage.getItem("storageIdType");
        debugger
        getCircleProvincesReq(idType).then(res => {
          closeLoading(this);
          if (res.code == "000000") {
            if (idType == 1) {
              vm.optionsRegion = operationData.setRegionOption2(
              res.data.provinceList
            );
            }else{
              vm.optionsRegion = operationData.setRegionOption3(
              res.data.provinceList
            );

            }
            this.getOrganization();
          } else {
            this.$message(res.message);
          }
        }).catch(err => {
          this.$message.error('请求失败');
        });
      },
      //机构table中勾选一个
      selectOrganization(selection, row) {
        this.selectionList = selection;
        console.log("select", selection, row);
        let flag = false;
        for (let i = 0; i < selection.length; i++) {
          if (selection[i].id == row.id) {
            flag = true;
          }
        }
        let req = {
          ids: [row.id],
          circleId: this.circleId,
          type: flag === false ? 0 : 1
        };
        openLoading(vm);
        getMemberSelectOrgOptionReq(req).then(res => {
          closeLoading(vm);
          if (res.code == "000000") {

          } else {
            this.$message(res.message);
          }
        }).catch(err => {
          this.$message.error('请求失败');
        });
      },
      //机构table中勾选一排
      selectAllOrganization(selection) {
        this.selectionList = selection;
        let setList = [];
        let selectList = [];
        for (let i = 0; i < vm.tableOrganization.length; i++) {
          if (vm.tableOrganization[i].modifyFlag == 0) {
            setList.push(vm.tableOrganization[i].id);
          }
        }
        for (let j = 0; j < selection.length; j++) {
          selectList.push(selection[j].id);
        }
        let intersect = operationData.getIntersect(setList, selectList);
        let typeStatus = 0;
        if (intersect.length > 0) {
          typeStatus = 1;
        }
        // let  = this.$refs.multipleTable.selection
        console.log(selection, setList, selectList);
        if (setList.length > 0) {
          let req = {
            ids: setList,
            circleId: this.circleId,
            type: typeStatus
          };
          openLoading(vm);
          getMemberSelectOrgOptionReq(req).then(res => {
          closeLoading(vm);
          if (res.code == "000000") {
          } else {
            this.$message(res.message);
          }
        }).catch(err => {
          this.$message.error('请求失败');
        });
        }
      },
      selectableTableList(row, index) {
        // if (this.status4Flag == 1) {
        if (row.modifyFlag == 1) {
          return false;
        }
        return true;
        // }
        // return true;
      },
      //机构搜索
      getOrganizationChoose() {
        console.log('formOrganization', this.formOrganization);
        let administrativeIdItem = operationData.setAdministrativeId(
          this.formOrganization.administrativeIdList
        );
        if (administrativeIdItem == "000_0"){
          administrativeIdItem=""
        }
        let idType = localStorage.getItem("storageIdType");
        console.log('administrativeIdItem', administrativeIdItem);
        let req = {
          circleId: this.circleId,
          districtIds: administrativeIdItem,
          orgLevel: this.formOrganization.level,
          orgName: this.formOrganization.name,
          pageNo: this.formOrganization.pageNum,
          pageSize: this.formOrganization.pageSize,
          idType: idType
        };
        openLoading(vm);
        getMemberSelectOrgReq(req).then(res => {
          closeLoading(vm);
          if (res.code == "000000") {
            this.tableOrganization = res.data.orgList;
            this.totalOrganization = res.data.total;
            vm.initOrganizationStatus();
          } else {
            this.$message(res.message);
          }
        }).catch(err => {
          this.$message.error('请求失败');
        });
      },

      //查询机构列表
      getOrganization() {
        let idType = localStorage.getItem("storageIdType");

        let administrativeIdItem = "";
        // 如果是外部用户（2），只能看到所在省份的数据
        if(idType == 2){
          let optionRegionArray = new Array();
          optionRegionArray.push(this.optionsRegion[0].provinceId);
          administrativeIdItem = operationData.setAdministrativeId(
            optionRegionArray
          );
        }

        console.log(administrativeIdItem);
        // let administrativeIdItem = "";

        let req = {
          circleId: this.circleId,
          districtIds: administrativeIdItem,
          orgLevel:"",
          orgName: this.formOrganization.name,
          pageNo: this.formOrganization.pageNum,
          pageSize: this.formOrganization.pageSize,
          idType: idType
        };
        openLoading(vm);
        getMemberSelectOrgReq(req).then(res => {
          closeLoading(this);
          if (res.code == "000000") {
            this.tableOrganization = res.data.orgList;
            this.totalOrganization = res.data.total;
            vm.initOrganizationStatus();
          } else {
            this.$message(res.message);
          }
        }).catch(err => {
          this.$message.error('请求失败');
        });
      },
      //获取医院等级
      listLevels() {
        let req = {};
        vm.GET("contents/courseDoctor/listLevels?sysCode=10", req).then(res => {
          if (res.code == "000000") {
            // console.log(res);
            this.organizationRank = operationData.getLevelList(res.data.list);
          } else {
            this.organizationRank = [
              {
                id: "0",
                label: "全部医院等级"
              }
            ];
          }
        });
      },
      //选择搜索机构方式
      searchOrganization() {
        this.formOrganization.pageNum = 1;
        let searchForm = this.formOrganization;
        if (
          searchForm.administrativeId == "0" &&
          searchForm.administrativeIdList[
          searchForm.administrativeIdList.length - 1
          ] == "0" &&
          searchForm.level == "" &&
          searchForm.name == ""
        ) {
          console.log("wei")
          this.searchOrganizationType = "";
          this.getOrganization();
        } else {
          console.log("choose")
          this.searchOrganizationType = "choose";
          this.getOrganizationChoose();
        }
      },
      initOrganizationStatus() {
        let tableStatus = this.tableOrganization;
        tableStatus.forEach(row => {
          if (row.status == 1) {
            this.$nextTick(function () {
              this.$refs.multipleOrganization.toggleRowSelection(row);
            });
          }
        });
      },
      //重置机构、人员查询
      resetOrgOrPerson() {
        vm.formOrganization.name = "";
        vm.formOrganization.administrativeId = "0";
        vm.formOrganization.administrativeIdList = ["0"];
        vm.formOrganization.level = "";
        vm.formOrganization.pageNum = 1;
        vm.searchOrganization();

      },
      getTreeCheck() {
        //重构归并树
        let checkedTree = operationData.getSimpleCheckedNodes(
          this.$refs.tree.store
        );
        let halfCheckedTree = this.$refs.tree.getHalfCheckedKeys();
        let allSelectedKeys = operationData.setSelectedKeys(
          checkedTree,
          halfCheckedTree
        );
        vm.allSelectedKeys = allSelectedKeys;
        //重构内容
        return allSelectedKeys;
      },
      handleChangeRegion(value) {
        let areaId = "000";
        for (let i = 0; i < value.length; i++) {
          areaId += "_" + value[i];
        }
        vm.administrativeValue = areaId;
        console.log(value, vm.administrativeValue);
      },
      //机构table修改
      handleSizeOrganization(val) {
        console.log(`每页 ${val} 条`);
        this.formOrganization.pageSize = val;
        this.searchOrganization();
      },
      handleCurrentOrganization(val) {
        //console.log(`当前页: ${val}`);
        this.formOrganization.pageNum = val;
        if (this.searchOrganizationType == "choose") {
          this.getOrganizationChoose();
        } else {
          this.getOrganization();
        }
      },
      returnTypeData(name) {
        this.$emit('returnTypeData', {
          name: name,
          val: this.formData[name]

        })
      }
    }
  }
</script>
