<template>
  <div class="organization">
    <el-row type="flex" class="row-bg">
      <el-col  class="add-organization">
        <i class="el-icon-circle-plus-outline" @click="dialogMemberFn()"></i>
        <i class="text" @click="dialogMemberFn()">添加人员</i>
      </el-col>
      <el-col class="add-organization" v-if="showImportFlag">
        <!--<el-upload-->
          <!--class="bg-uploader"-->
          <!--action="#"-->
          <!--:show-file-list="false"-->
          <!--:before-upload="beforeUploadDoc">-->
          <i class="el-icon-document-add"></i>
          <i class="text" @click="batchImport()">批量导入</i>
        <!--</el-upload>-->
      </el-col>
      <el-col class="organization-search">
        <el-form :inline="true" :model="formOrganization" class="demo-form-inline" >
          <el-form-item label="机构:">
             <el-input style="width:140px;" size="small" v-model="formOrganization.orgName" placeholder="请输入机构名称"></el-input>
          </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 label="来源:">
            <el-select size="small" v-model="formOrganization.source" placeholder="请选择来源">
              <el-option v-for="(item, index) in sourceList" :key="index" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>

          <el-form-item>
            <el-button size="small" type="primary" @click="serch()">搜索</el-button>
          </el-form-item>
          <el-form-item>
            <el-button size="small"  @click="reset()">取消搜索</el-button>
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
    <el-table class="rim" ref="multipleOrganization" :data="peoplesDtoList" tooltip-effect="dark" style="width: 100%">
      <el-table-column prop="id" label="id" min-width="100" align="center"></el-table-column>
      <el-table-column prop="name" label="人员" min-width="100" align="center"></el-table-column>
      <el-table-column prop="department" label="所属科室" align="center"></el-table-column>
      <el-table-column prop="hospital" 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>
      <el-table-column prop="sourceName" label="来源" align="center"></el-table-column>
      <el-table-column prop="joinTimeStr" label="加入时间" min-width="100" align="center">
      </el-table-column>
      <el-table-column
        fixed="right"
        label="操作"
        align="center"
        width="140">
        <template slot-scope="scope">
          <el-button @click="detel(scope.row)" type="text" size="small" style="color:red" v-if="scope.row.source != 1">删除</el-button>
        </template>
      </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, 30, 50, 100, 200]" :page-size="formOrganization.pageSize"
        layout="total, sizes, prev, pager, next, jumper" :total="totalPeople"></el-pagination>
    </div>
    <el-dialog
      title="添加人员"
      :visible.sync="dialogOrg"
      width="80%"
      top="5vh"
      :before-close="handleClose">
        <add-member
          v-if="dialogOrg"
          :circleId='circleId'
          :roleType='roleType'
          @addPeople="addPeople"
          @handleClose="handleClose">
        </add-member>
    </el-dialog>
    <!-- 删除 弹窗 -->
    <el-dialog
      title="确认删除"
      :show-close="false"
      :visible.sync="deleteVisible"
      :close-on-click-modal="false"
      width="600px"
      center
    >
      <p style="text-align: center;">{{detelMessage}}</p>
      <span slot="footer" class="dialog-footer">
        <el-button @click="confirmDelete">删 除</el-button>
        <el-button type="primary" @click="hideDeleteFrom">取 消</el-button>
      </span>
    </el-dialog>

    <!--<el-dialog-->
      <!--title="导入错误提示"-->
      <!--:visible.sync="dialogVisible"-->
      <!--width="500px"-->
      <!--:close-on-click-modal="false"-->
      <!--@close="handleErrorClose"-->
      <!--center-->
    <!--&gt;-->
      <!--<el-table :data="dialogErrorData" align="center">-->
        <!--<el-table-column property="rowNumber" label="行数" align="center"></el-table-column>-->
        <!--<el-table-column property="wrongData" label="错误提示" align="center"></el-table-column>-->
      <!--</el-table>-->
    <!--</el-dialog>-->

    <el-dialog
      :title="dialogTitle"
      :visible.sync="dialogVisible"
      width="500px"
      :close-on-click-modal="false"
      @close="handleErrorClose"
      center>
      <!--<el-table :data="dialogErrorData" align="center">-->
      <!--<el-table-column property="rowNumber" label="行数" align="center"></el-table-column>-->
      <!--<el-table-column property="wrongData" label="错误提示" align="center"></el-table-column>-->
      <!--</el-table>-->

      <div v-if="importSuccessFlag" style="text-align: center;">
        <div>本次成功导入<span style="color: green;">&nbsp;{{importNum}}条&nbsp;</span>数据</div>
        <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="handleErrorClose" style="margin-top: 20px;">关闭</el-button>
        </span>
      </div>
      <div v-if="!importSuccessFlag" style="text-align: center;">
        <div v-if="importNum == 0">数据不符合格式要求，请修正后再次导入</div>
        <div v-if="importNum != 0">有<span style="color: red;">&nbsp;{{importNum}}条&nbsp;</span>数据不符合格式要求，请修正后再次导入</div>
        <br>
        <div>
        <span>
          <el-button @click="downloadFile" type="text" size="small" style="color: #449284 !important;">下载错误数据></el-button>
          <!--<a @click="downloadFile">下载错误数据</a>-->
        </span>
        </div>
        <div style="margin-top: 20px;">
        <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="handleErrorClose" style="float: left;margin-left: 130px;">取 消</el-button>
          <el-upload
            class="bg-uploader"
            action="#"
            :show-file-list="false"
            :before-upload="beforeUploadDoc">
       <el-button type="primary" size="small" style="margin-left: -100px;">重新导入</el-button>
     </el-upload>
      </span>
        </div>
      </div>
    </el-dialog>

    <el-dialog
      title="批量导入"
      :visible.sync="dialogImportVisible"
      width="650px"
      :close-on-click-modal="false"
      @close="handleImportClose"
      center>

      <div style="float:left;width: 250px;">
        <span>1.下载模板，填写信息</span>
        <br>
        <div>
          <el-button type="primary" size="small" style="float:left; margin-top: 30px;" @click="download1">下载模板1</el-button>
          <span style="float:left; margin-top: 72px;margin-left: -90px;">填写人员明细导入</span>
        </div>
        <div>
          <el-button type="primary" size="small" style="margin-top: 30px;margin-left: 48px;" @click="download2">下载模板2</el-button>
          <span style="float: right;margin-top:10px;">填写人员ID导入</span>
        </div>
      </div>
      <div style="float:left;margin-left: 90px;width: 1px;height: 100px; background: #c8cbd2;"></div>
      <div style="margin-left: 400px;height: 130px;">
        <span>2.上传填写好的文件</span>
        <br>
        <el-upload
          class="bg-uploader"
          action="#"
          :show-file-list="false"
          :before-upload="beforeUploadDoc">
          <el-button type="primary" size="small" style="margin-top: 30px;">上传文件</el-button>
        </el-upload>

      </div>
    </el-dialog>

  </div>
</template>

<script>
import * as operationData from "@/utils/operation";
import { openLoading, closeLoading } from "@/utils/utils";
import { doUpload, getFilePath } from "@/utils/qiniu-util";
import { mpRelSearch, mprDeleteOrg } from '@/utils/yqrange/memberApi';
import { doctorsByIdOrMobile } from '@/utils/yqrange/yqrangeApi';
import addMember from './addMember.vue'
let vm = null;
export default {
   components: {
    addMember
  },
  props: {
    circleId: {
      type: Number | String,
      default: 1
    },
    roleType: {
      type: Number | String,
      default: 1
    },
  },
  data() {
    return {
      props: {
        lazy: true,
        lazyLoad(node, resolve) {
          const { level } = 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: [],
      sourceList: [
        {
          label: '全部',
          value: 0
        },
        {
          label: '可访问本圈的地区/机构',
          value: 1
        },
        {
          label: '手动添加',
          value: 2
        },
      ],
      peoplesDtoList: [],
      totalPeople: 10,
      selectionList:[],
      formOrganization: {
        name: '',
        orgName: '',
        source: 0,
        pageNum: 1,
        pageSize: 10
      },
      dialogOrg:false,
      deleteVisible: false,
      detelMessage: '',
      dialogVisible: false,
      dialogErrorData: [],
      showImportFlag: false,
      dialogImportVisible: false,
      importMsg: "",
      importSuccessFlag: false,
      importNum: 0,
      dialogTitle: "",
      errorFileUrl: ""
    }
  },
  created() {
    vm = this;
    //Idtype:1,内部 2.外部
    vm.idType = localStorage.getItem("storageIdType");
    this.initRange();
    if(vm.idType == 1){
      this.showImportFlag = true;
    }
    else {
      setTimeout(() => {
        let highMainManager = localStorage.getItem('highMainManager');
        let mainManager = localStorage.getItem('mainManager');
        let manager = localStorage.getItem('manager');
        if(highMainManager == 1 || mainManager == 1 || manager == 1){
          this.showImportFlag = true;
        }
        else {
          this.showImportFlag = false;
        }
      },1000);

    }
  },
  mounted() {
  },
  methods: {
    initRange() {
      this.formOrganization.pageNum = 1;
      this.formOrganization.name = "";
      this.formOrganization.orgName = "";
      this.formOrganization.source = 0
      this.getList(1)
    },
    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;
        } else if (type == "towns") {
          obj.label = data[i].townName;
          obj.value = data[i].townId;
          obj.leaf = true;
        }
        option.push(obj);
      }
      return option;
    },
    serch() {
       this.formOrganization.pageNum = 1;
       this.getList()
    },
    getList(first) {
      let idType = localStorage.getItem("storageIdType");
      let req = {
        circleId: this.circleId,
        countryFlag: true,
        name:  this.formOrganization.name.trim(),
        orgName: this.formOrganization.orgName.trim(),
        pageNo: this.formOrganization.pageNum,
        pageSize: this.formOrganization.pageSize,
        source: this.formOrganization.source,
      };
      openLoading(vm);
      mpRelSearch(req).then(res => {
        if (!first) {
          closeLoading(vm);
        }

        if (res.code == "000000") {
          this.peoplesDtoList = res.data.peoplesDtoList;
          this.totalPeople = res.data.total;
          this.setPleTotal()
        } else {
          this.$message(res.message);
        }
      }).catch(err => {
        this.$message.error('请求失败');
      });
    },

    //重置机构、人员查询
    reset() {
      this.initRange()
    },
    //机构table修改
    handleSizeOrganization(val) {
      console.log(`每页 ${val} 条`);
      this.formOrganization.pageSize = val;
      this.getList();
    },
    handleCurrentOrganization(val) {
      //console.log(`当前页: ${val}`);
      this.formOrganization.pageNum = val;
      this.getList();
    },
    detel(item) {
      this.detelMessage = `删除后 "${item.name}" 将无法访问本圈, 确定删除么?`
      this.deleteVisible = true
      this.clickItem = item
    },
    confirmDelete() {
      let params = {
          circleId: this.circleId,
          docIds: [this.clickItem.id]
        }
        mprDeleteOrg(params).then((res) => {
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
          this.deleteVisible = false
          this.formOrganization.pageNum = 1;
          this.getList()
        }).catch(() => {
          this.$message.error('删除失败，请稍后重试');
        })
    },
    hideDeleteFrom() {
      this.deleteVisible = false
      this.detelMessage = ''
      this.clickItem = null
    },
    setPleTotal() {
      this.$emit('setPleTotal',this.totalPeople)
    },
    dialogMemberFn() {
      this.dialogOrg = true
    },
    handleClose() {
      this.dialogOrg = false
    },
    addPeople() {
     this.dialogOrg = false
     this.initRange()
    },


    // 批量导入
    beforeUploadDoc(file) {


      // // 人员数已超10000，无法导入机构
      // if(vm.totalPeople > 10000){
      //   this.$message.warning('人员数已超10000，无法导入机构');
      //   return;
      // }
      let name = file.name;
      let type = name.substring(name.lastIndexOf('.') + 1);
      if (type !== 'xls' && type !== 'xlsx') {
        vm.$message({
          message: '上传文件只能是 xls、xlsx格式!',
          type: 'warning'
        });
        return;
      }
      openLoading(vm);

      let formData = new FormData();
      formData.append("circleId", vm.circleId);
      formData.append("file", file);

      // let files = new window.File();

      doctorsByIdOrMobile(formData).then(res => {
        closeLoading(vm);

        if (res.code == "000000") {
          vm.dialogImportVisible = false;

          // 导入成功
          if(res.data.status){
            vm.dialogVisible = true;
            vm.dialogTitle = "导入成功";
            vm.importSuccessFlag = true;
            vm.importNum = res.data.successNum;
            vm.initRange();
            // vm.searchOrganization();
            // vm.$emit('refreshRenYuan');
          }
          else {

            vm.dialogVisible = true;
            vm.dialogTitle = "导入失败";
            vm.importSuccessFlag = false;
            vm.importNum = res.data.failNum;
            vm.errorFileUrl = res.data.file;

            // this.$message({
            //   type: 'success',
            //   message: '导入成功!'
            // });

          }
        }
        else {
          this.$message({
            type: 'error',
            message: res.message
          });
        }


        // if (res.code == "000000") {
        //
        //
        //   if(res.data.successNum == 0 && res.data.wrongDataList.length > 0){
        //
        //     this.dialogVisible = true;
        //
        //     this.dialogErrorData = res.data.wrongDataList;
        //   }
        //   else {
        //     this.$message({
        //       type: 'success',
        //       message: '导入成功!'
        //     });
        //     vm.initRange();
        //   }
        //
        // }
        // else {
        //   this.$message({
        //     type: 'error',
        //     message: res.message
        //   });
        // }
        // vm.setDialog(res);
      });
      // };
      // reader.readAsDataURL(file);

    },
    handleErrorClose() {
      this.dialogVisible = false;
    },

    // 批量导入
    batchImport(){
      this.dialogImportVisible = true;
    },

    handleImportClose(){
      this.dialogImportVisible = false;
    },

    // 下载模板
    download1(){
      const url = "https://files.yunqueyi.com/template/import_people_by_name_mobile.xlsx";
      window.location.href = url;
    },
    // 下载模板2
    download2(){
      const url = "https://files.yunqueyi.com/template/import_doctor_by_id.xlsx";
      window.location.href = url;
    },
  // 下载错误数据文件
  downloadFile(){
    window.location.href = vm.errorFileUrl;
  }
  }
}
</script>

<style lang="scss" scoped>
.organization {
  .add-organization {
    margin-left: 20px;
    line-height: 20px;
    width: 120px;
    cursor: pointer;
    padding-top: 10px;
    i {
      font-size: 18px;
      margin-right: 2px;
    }

  }
  .organization-search {
    flex: 1;
    margin-right: 10px;
    text-align: right;
  }
}
</style>
