<style>
  .departmentTreeStyleCont {
    padding-top: 20px;
    display: flex;
    height: 100%;
  }

  .departmentTreeStyleCont .departmentTreeStyle {
    background: #fff;
    padding: 20px;
    flex: 0 1 400px;
    min-height: 800px;
  }

  .departmentTreeStyleCont .departmentTreeStyle > p {
    font-size: 14px;
    margin-bottom: 15px;
    color: #333;
    font-weight: bold;
    height: 14px;
    line-height: 14px;
    border-left: 3px solid #E95252;
    text-indent: 20px;
  }

  .departmentTreeStyleCont .departmentTreeStyle .spanIcon {
    padding-left: 20px;
    display: none
  }

  .departmentTreeStyleCont .departmentTreeStyle .el-tree-node__content {
    height: 32px;
    line-height: 32px;
    font-size: 12px
  }

  .TreeSpan img {
    width: 24px;
    height: 24px;
    border-radius: 12px;
    vertical-align: sub;
    margin-right: 3px;
  }

  .departmentTreeStyleCont .departmentTreeStyle .el-tree-node__content:hover .spanIcon {
    display: inline-block
  }

  .departmentTreeStyleCont .departmentTreeStyle .el-tree-node__content:hover .spanIcon i {
    font-size: 14px !important;
    color: #999;
    margin-right: 2px;
  }

  .departmentTreeStyleCont .departmentTreeStyle .el-tree-node__content:hover .spanIcon i:hover {
    color: #E95252;
  }

  .departmentTreeStyleCont .departmentTreeLayer > p {
    font-size: 14px;
    margin-bottom: 15px;
    color: #333;
    font-weight: bold;
    height: 14px;
    line-height: 14px;
    border-left: 3px solid #E95252;
    text-indent: 20px;
  }

  .departmentTreeStyleCont .departmentTreeLayer {
    background: #fff;
    min-height: 300px;
    padding: 20px;
    margin-left: 20px;
    flex: auto
  }

  .departmentTreeStyleCont .el-date-editor.el-input,
  .departmentTreeStyleCont .el-date-editor.el-input__inner {
    width: auto !important;
  }
</style>
<template>
  <div class="flexOne">
    </el-select>
    <div class="query-box" v-show="!isTree">
      <ul>
        <li>
					<span><em>{{$t('admin.admin_company')}}</em><el-select filterable :disabled="msg.IsParentCompany==2"
                                                                 v-model='msg.RB_Branch_Id'
                                                                 :placeholder="$t('pub.unlimitedSel')">
						        <el-option :label="$t('pub.unlimitedSel')" value='-1'></el-option>
								<el-option v-for='item in companyList'
                           :label='item.BName'
                           :value='item.Id'
                           :key="item.Id">
								</el-option>
							  </el-select>
				      </span>
        </li>
        <li>
					<span><em>{{$t('admin.admin_parentdepartment')}}</em><el-select filterable clearable v-model='msg.ParentId'
                                                                          :placeholder="$t('pub.unlimitedSel')">
						        <el-option :label="$t('pub.unlimitedSel')" value='0'></el-option>
								<el-option v-for='item in departmentList'
                           :label='item.DepartmentName'
                           :value='item.DepartmentID'
                           :key="item.DepartmentID">
								</el-option>
							  </el-select>
				      </span>
        </li>
        <li>
					<span><em>{{$t('admin.admin_departmentLevel')}}</em><el-select v-model="msg.Tier">
						       	<el-option :label="$t('pub.unlimitedSel')" value='0'></el-option>
								<el-option v-for='item in tierList' :label='item.name' :value='item.id' :key="item.id"></el-option>
							</el-select>
				      </span>
        </li>

        <li>
          <span><em>{{$t('admin.admin_department')}}	</em><el-input v-model='msg.DepartmentName'
                                                                     @keyup.enter.native="getList"
                                                                     :placeholder="$t('pub.pleaseImport')"></el-input></span>
        </li>
        <li>
          <input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="resetPageIndex(),getList()"/>
          <input type="button" @click="outerVisible = true,getCompany()" class="normalBtn"
                 :value="$t('pub.addBtn')"/>
          <input type="button" class="normalBtn" :value="$t('adm.adm_sxjg')" @click="isTree=true"/>
        </li>
      </ul>
    </div>

    <div v-show="isTree" class="departmentTreeStyleCont">
      <div class="departmentTreeStyle">
        <p>
          {{$t('adm.adm_jggl')}}
          <input type="button" class="normalBtn fr"
                 style="font-size: 12px; width: 86px; height: 24px; padding: 0 2px; margin-top: -5px;" :value="$t('adm.adm_fhlb')"
                 @click="isTree=false"/>
        </p>
        <el-tree :data="allList" node-key="id" :props="defaultProps" @node-drag-start="handleDragStart"
                 @node-drag-enter="handleDragEnter" @node-drag-leave="handleDragLeave" @node-drag-over="handleDragOver"
                 @node-drag-end="handleDragEnd" @node-drop="handleDrop" draggable :allow-drop="allowDrop"
                 :allow-drag="allowDrag">
					<span class="TreeSpan" slot-scope="{ node, data }">
					 	<i v-show="data.DType==1" class="iconfont icon-bumen"></i>
					 	<img v-show="data.DType==2" v-if="!data.Images" src="../../assets/img/default_head_img.jpg">
                        <img v-show="data.DType==2" v-else :src="data.Images" :onerror='defaultImg'/>
					 	{{node.label}}<span v-show="data.DType==2"
                                style="background: #E95252; font-size: 12px; height: 16px; line-height: 16px; color:#fff; padding: 0 4px; border-radius: 4px; display: inline-block; margin-left: 5px;">{{data.PostName}}</span>
					 	<span class="spanIcon" v-if="data.DType==1">
					 		<el-tooltip class="item" effect="dark" :content="$t('adm.adm_addzibumen')" placement="top">
					 			<i class="iconfont icon-tianjia"
                   @click="treeLayerShow=true;treeLayerShowUser=false,resetForm('addMsg'),addTreeData(data)"></i>
							</el-tooltip>
							<el-tooltip class="item" effect="dark" :content="$t('adm.adm_addyuangong')" placement="top">
					 			<i class="iconfont icon-tianjiayuangong"
                   @click="treeLayerShow=false,treeLayerShowUser=true,resetForm('addMsg1'),addTreeUerData(data)"></i>
							</el-tooltip>
					 		<el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top">
					 			<i class="iconfont icon-xiugai"
                   @click="treeLayerShow=true,treeLayerShowUser=false,treeLayerTitle='部门信息编辑',resetForm('addMsg'),updateData(data.DepartmentID)"></i>
							</el-tooltip>
							<el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top">
								<i class="iconfont icon-shanchu" @click='deleteDeparment(data.DepartmentID)'></i>
						    </el-tooltip>
					 	</span>
					<span class="spanIcon" v-if="data.DType==2">
					 		<el-tooltip class="item" effect="dark" :content="$t('adm.adm_edityuangong')" placement="top">
					 			<i class="iconfont icon-xiugai"
                   @click="treeLayerShow=false,treeLayerShowUser=true,treeLayerUserTitle='修改员工信息',resetForm('addMsg1'),updateDataUser(data)"></i>
							</el-tooltip>
					 	</span>
					</span>
        </el-tree>
      </div>
      <div class="departmentTreeLayer" v-show="treeLayerShowUser">
        <p>{{treeLayerUserTitle}}</p>
        <el-form :model="addMsg1" :rules="rules1" ref="addMsg1" label-width="90px">
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item :label="$t('system.table_company')" prop="RB_Branch_id">
                <el-select filterable v-model='addMsg1.RB_Branch_id' @change='layerLinkageDepartment' :placeholder="$t('pub.unlimitedSel')">
                  <el-option v-for='item in companyList' :label='item.BName' :value='item.Id' :key="item.Id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_Department')" prop="RB_Department_Id">
                <el-select filterable v-model='addMsg1.RB_Department_Id' @change='layerLinkagePost' :placeholder="$t('pub.unlimitedSel')">
                  <el-option v-for='item in layerDepartMentList' :label='item.DepartmentName' :value='item.DepartmentID' :key="item.DepartmentID">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_Post')" prop="RB_Post_Id">
                <el-select filterable v-model='addMsg1.RB_Post_Id' :placeholder="$t('pub.unlimitedSel')">
                  <el-option v-for='item in layerPostList' :label='item.PostName' :value='item.PostId' :key="item.PostId">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('system.query_name')" prop="EmName">
                <el-input maxlength='20' type="text" v-model="addMsg1.EmName"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item :label="$t('system.table_IDcard')" prop="EmCard">
                <el-input type="text" v-model="addMsg1.EmCard" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('leader.leader_Sex')" prop="EmSex">
                <el-select filterable v-model='addMsg1.EmSex' :placeholder="$t('pub.unlimitedSel')">
                  <el-option :label="$t('pub.man')" value='0'></el-option>
                  <el-option :label="$t('pub.woman')" value='1'></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('adm.adm_xueli')" prop="EmEducation">
                <el-input maxlength='20' type="text" v-model="addMsg1.EmEducation"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="入职时间" prop="EmEntry">
                <el-date-picker value-format="yyyy-MM-dd" v-model='addMsg1.EmEntry' type="date"></el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item label="离职时间" prop="EmLeave">
                <el-date-picker value-format="yyyy-MM-dd" v-model='addMsg1.EmLeave' type="date"
                                disabled></el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_address')" prop="EmAddress">
                <el-input maxlength='50' type="text" v-model="addMsg1.EmAddress"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('pub.mbPhoneNum')" prop="EmMobile">
                <el-input type="text" v-model="addMsg1.EmMobile" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('pub.telphone')" prop="EmTel">
                <el-input maxlength='20' type="text" v-model="addMsg1.EmTel"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item label="QQ" prop="EmQQ">
                <el-input type="text" v-model="addMsg1.EmQQ" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="生日" prop="EmBirthday">
                <el-date-picker value-format="yyyy-MM-dd" v-model='addMsg1.EmBirthday' type="date"></el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('system.table_acc')" prop="EmAccount">
                <el-input type="text" v-model="addMsg1.EmAccount" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="密码" prop="EmPassword">
                <el-input type="password" v-model="addMsg1.EmPassword" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <input type="button" :value="$t('pub.cancelBtn')" class="hollowFixedBtn"
                     @click="resetForm('addMsg1'),treeLayerShowUser=false"></input>
              <input type="button" class="normalBtn" :value="$t('pub.saveBtn')" @click="submitForm1('addMsg1')"></input>
              <button v-if='isleaveBtn' class="normalBtn" @click="setIsLeave(leaveId)">{{leaveBtn}}</button>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <div class="departmentTreeLayer" v-show="treeLayerShow">
        <p>
          {{treeLayerTitle}}
        </p>
        <el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="100px">
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_company')" prop="RB_Branch_Id">
                <el-select filterable clearable v-model='addMsg.RB_Branch_Id' :placeholder="$t('pub.unlimitedSel')"
                           @change='getDeparmentTierByBranch'>
                  <el-option v-for='item in companyList' :label='item.BName' :value='item.Id' :key="item.Id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_department')" prop="DepartmentName">
                <el-input type="text" maxlength='20' v-model="addMsg.DepartmentName"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_departmentLevel')" prop="Tier">
                <el-select v-model="addMsg.Tier" @change='getParentDeparment'>
                  <el-option v-for='item in layerTierList' :label='item.name' :value='item.id' :key="item.id"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_parentdepartment')" prop="ParentId">
                <el-select filterable v-model='addMsg.ParentId' :placeholder="$t('pub.pleaseSel')">
                  <el-option v-for='item in layerDepartmentList' :label='item.DepartmentName' :value='item.DepartmentID' :key="item.DepartmentID">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_leader')" prop="DepartmentManager">
                <el-select filterable clearable v-model='addMsg.ManagerIdArr' :placeholder="$t('pub.pleaseSel')" multiple>
                  <el-option v-for='item in employeeList' :label='item.EmName' :value='item.EmployeeId' :key="item.EmployeeId">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item :label="$t('admin.admin_dphone')" prop="DepartmentTel">
                <el-input type="text" v-model="addMsg.DepartmentTel" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="部门排序" prop="Sort">
                <el-input type="text" v-model="addMsg.Sort" :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label='是否领队' prop="IsLeader">
                <el-switch v-model="addMsg.IsLeader" active-value="1" inactive-value="0"></el-switch>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="绑定岗位" prop="PostIdArr">
                <el-select filterable class='w400 multiple_input' multiple v-model='addMsg.PostIdArr'
                           :placeholder="$t('pub.pleaseSel')">
                  <el-option v-for='item in postList' :label='item.PostName' :value='item.PostId' :key="item.PostId">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="12">
              <button class="hollowFixedBtn" @click="treeLayerShow = false,resetForm('addMsg')">
                {{$t('pub.cancelBtn')}}
              </button>
              <button class="normalBtn" type="primary" @click="submitForm('addMsg')">{{$t('pub.saveBtn')}}</button>
            </el-col>
            <el-col :span="12">
            </el-col>
          </el-row>
        </el-form>
      </div>

    </div>
    <table class="singeRowTable" border="0" cellspacing="0" cellpadding="0" v-loading='loading' v-show="!isTree">
      <tr>
        <th width="200">{{$t('admin.admin_company')}}</th>
        <th width="200">{{$t('admin.admin_department')}}</th>
        <th>{{$t('admin.admin_departmentLevel')}}</th>
        <th>{{$t('admin.admin_leader')}}</th>
        <th>{{$t('admin.admin_dphone')}}</th>
        <th width="300">绑定岗位</th>
        <th>排序</th>
        <th>{{$t('admin.admin_operate')}}</th>
      </tr>
      <tr v-for="(item,index) in DataList">
        <td>{{item.RB_Branch_Name}}</td>
        <td>{{item.DepartmentName}}</td>
        <td>{{item.Tier}}级</td>
        <td>{{item.DepartmentManagerName}}</td>
        <td>{{item.DepartmentTel}}</td>
        <td>{{item.PostName}}</td>
        <td>{{item.Sort}}</td>
        <td>
          <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top">
            <el-button type="primary" icon="el-icon-edit" circle
                       @click="outerVisible = true,dialogTitle='修改部门信息',updateData(item.DepartmentID)"></el-button>
          </el-tooltip>
          <el-tooltip class="item" effect="dark" :content="$t('pub.delete')" placement="top">
            <el-button type="danger" icon="el-icon-delete" @click='deleteDeparment(item.DepartmentID)'
                       circle></el-button>
          </el-tooltip>
        </td>
      </tr>
    </table>
    <el-pagination v-show="!isTree" background @current-change="handleCurrentChange" :current-page.sync="currentPage"
                   layout="total,prev, pager, next, jumper" :page-size=msg.pageSize :total=total>
    </el-pagination>
    <el-dialog custom-class='w800' :title="dialogTitle" :visible.sync="outerVisible" center
               :before-close="closeChangeMachie">
      <el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="100px">
        <table class="layerNoIcon">
          <tr>
            <td>
              <el-form-item :label="$t('admin.admin_company')" prop="RB_Branch_Id">
                <el-select class='w200' filterable clearable v-model='addMsg.RB_Branch_Id' :placeholder="$t('pub.unlimitedSel')"
                           @change='getDeparmentTierByBranch'>
                  <el-option v-for='item in layercompanyList' :label='item.BName' :value='item.Id' :key="item.Id">
                  </el-option>
                </el-select>
              </el-form-item>
            </td>
            <td>
              <el-form-item :label="$t('admin.admin_department')" prop="DepartmentName">
                <el-input class='w200' type="text" maxlength='20' v-model="addMsg.DepartmentName"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>

            </td>
          </tr>
          <tr>
            <td>
              <el-form-item :label="$t('admin.admin_departmentLevel')" prop="Tier">
                <el-select class='w200' v-model="addMsg.Tier" @change='getParentDeparment'>
                  <el-option v-for='item in layerTierList' :label='item.name' :value='item.id' :key="item.id"></el-option>
                </el-select>
              </el-form-item>
            </td>
            <td>
              <el-form-item :label="$t('admin.admin_parentdepartment')" prop="ParentId">
                <el-select filterable class='w200' v-model='addMsg.ParentId' :placeholder="$t('pub.pleaseSel')">
                  <el-option v-for='item in layerDepartmentList' :label='item.DepartmentName' :value='item.DepartmentID' :key="item.DepartmentID">
                  </el-option>
                </el-select>
              </el-form-item>
            </td>
          </tr>
          <tr>
            <td>
              <el-form-item :label="$t('admin.admin_leader')" prop="DepartmentManager">
                <el-select filterable class='w200 multiple_input' clearable v-model='addMsg.ManagerIdArr'
                           :placeholder="$t('pub.pleaseSel')" multiple>
                  <el-option v-for='item in employeeList' :label='item.EmName' :value='item.EmployeeId' :key="item.EmployeeId">
                  </el-option>
                </el-select>
              </el-form-item>
            </td>
            <td>
              <el-form-item :label="$t('admin.admin_dphone')" prop="DepartmentTel">
                <el-input class='w200' type="text" v-model="addMsg.DepartmentTel"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </td>
          </tr>
          <tr>
            <td>
              <el-form-item :label="$t('admin.admin_departsort')" prop="Sort">
                <el-input class='w200' type="text" v-model="addMsg.Sort"
                          :placeholder="$t('pub.pleaseImport')"></el-input>
              </el-form-item>
            </td>
            <td>
              <el-form-item class='w400' :label="$t('admin.admin_isleader')" prop="IsLeader">
                <el-switch v-model="addMsg.IsLeader" active-value="1" inactive-value="0"></el-switch>
              </el-form-item>
            </td>
          </tr>
          <tr>
            <td colspan="2">
              <el-form-item :label="$t('admin.admin_Bindingposition')" prop="PostIdArr">
                <el-select filterable class='w500 multiple_input' multiple v-model='addMsg.PostIdArr'
                           :placeholder="$t('pub.pleaseSel')">
                  <el-option v-for='item in postList' :label='item.PostName' :value='item.PostId' :key="item.PostId">
                  </el-option>
                </el-select>
              </el-form-item>
            </td>
          </tr>
        </table>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <button class="hollowFixedBtn" @click="outerVisible = false,resetForm('addMsg')">{{$t('pub.cancelBtn')}}
        </button> &nbsp;
        <button class="normalBtn" type="primary" @click="submitForm('addMsg')">{{$t('pub.saveBtn')}}</button>
      </div>
    </el-dialog>

  </div>
</template>

<script>
  export default {
    data() {
      let validateParentDepartment = (rule, value, callback) => {
        if (this.addMsg.Tier != '1' && value == '') {
          return callback(new Error('请选择上级层级'));
        } else {
          callback();
        }
      }
      return {
        leaveBtn: '',
        leaveId: '',
        isleaveBtn: false,
        layerDepartMentList: [],
        layerPostList: [],
        treeLayerTitle: '',
        treeLayerUserTitle: '',
        treeLayerShow: false,
        treeLayerShowUser: false,
        //树形
        defaultProps: {
          children: 'ChildList',
          label: 'DepartmentName',
        },
        isTree: false,
        loading: true,
        //分页
        total: 0,
        pageSize: '',
        currentPage: 1,
        //弹窗
        outerVisible: false,
        dialogTitle: '',
        rules: { //表单验证
          RB_Branch_Id: [{
            required: true,
            message: this.$t('rule.company'),
            trigger: 'change'
          }],
          DepartmentName: [{
            required: true,
            message: this.$t('rule.qsrbmmingchen'),
            trigger: 'blur'
          }],
          Tier: [{
            required: true,
            message: this.$t('rule.qxzbmcengji'),
            trigger: 'change'
          }],
          ParentId: [{
            validator: validateParentDepartment,
            trigger: 'change'
          }],
          DepartmentManager: [{
            required: false,
            message: this.$t('rule.qxzfuzeren'),
            trigger: 'change'
          }],
          PostIdArr: [{
            required: true,
            message: this.$t('rule.qsrbdgangwei'),
            trigger: 'change'
          }],
          DepartmentTel: [{
            pattern: /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/,
            message: this.$t('rule.qsrzqdbmdianhua')
          }],
          Sort: [{
            required: true,
            pattern: /^(-|\+)?\d+$/,
            message: this.$t('rule.qszhengshu')
          }],
          IsLeader: [{
            required: false,
            trigger: 'change'
          }],

        },
        addMsg1: {
          EmName: '',
          EmSex: '0',
          EmCard: '',
          EmBirthday: '',
          EmEducation: '',
          EmEntry: '',
          EmLeave: '',
          EmAddress: '',
          EmMobile: '',
          EmTel: '',
          EmQQ: '',
          EmPhoto: '',
          EmAccount: '',
          EmPassword: '',
          RB_Group_id: '',
          RB_Branch_id: '',
          RB_Department_Id: '',
          RB_Post_Id: '',
        },
        rules1: {
          RB_Branch_id: [{
            required: true,
            message: this.$t('rule.company'),
            trigger: 'change'
          }],
          RB_Department_Id: [{
            required: true,
            message: this.$t('tips.qxzbumen'),
            trigger: 'change'
          }],
          RB_Post_Id: [{
            required: true,
            message: this.$t('tips.qxzgangwei'),
            trigger: 'change'
          }],
          EmName: [{
            required: true,
            message: this.$t('rule.qsrname'),
            trigger: 'blur'
          }],
          EmEntry: [{
            required: true,
            message: '请选择入职时间',
            trigger: 'blur'
          }],
          EmAccount: [{
            required: true,
            message:  this.$t('login.login_account'),
            trigger: 'blur'
          },
            {
              pattern: /^[a-zA-Z0-9]{4,18}$/,
              message: '账号为6-18位字母数字组成'
            }
          ],
          EmPassword: [{
            required: true,
            message: this.$t('login.login_password'),
            trigger: 'blur'
          }],
          EmQQ: [{
            pattern: /^\d{5,11}$/,
            message: '请输入正确的qq'
          }],
          EmMobile: [{
            pattern: /^(0|86|17951)?(13[0-9]|15[012356789]|17[012356789]|18[0-9]|19[0-9]|14[57])[0-9]{8}$/,
            message: this.$t('rule.qsrtelphone'),
          }],
          EmCard: [{
            pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
            message: this.$t('rule.qsrIdnum'),
          }],
        },
        //请求数据
        departmentMsg: {
          ParentId: '-1',
          RB_Group_Id: '0',
          RB_Branch_Id: '-1',
          Status: '0',
          Tier: '0',
        },
        layerDepartmentMsg: {
          BranchId: '',
          Tier: ''
        },
        msg: {
          pageIndex: 1,
          pageSize: 15,
          ParentId: '0',
          Tier: '0',
          RB_Branch_Id: '-1',
          DepartmentName: '',
          IsParentCompany: 2
        },
        companyMsg: {
          RB_Group_Id: '0',
          Status: 0,
        },
        postMsg: {
          RB_Group_Id: '',
        },
        employeeMsg: {
          BranchId: '-1',
          IsLeave: 0
        },
        addMsg: {
          DepartmentID: '0',
          DepartmentName: '',
          DepartmentManager: '',
          DepartmentTel: '',
          RB_Branch_Id: '',
          RB_Group_Id: '0',
          ParentId: '',
          Tier: '',
          Status: '0',
          Sort: '',
          PostIdArr: [],
          IsLeader: '0',
          ManagerIds: '',//部门负责人
          ManagerIdArr: []//数组
        },
        getDepartmentMsg: {
          RB_Group_Id: '0',
          RB_Branch_Id: '-1',
          Status: '0',
        },
        getPostMsg: {
          RB_Group_Id: '0',
          RB_Branch_Id: '-1',
          RB_Department_Id: '0',
        },
        layerTierMsg: {
          BranchId: '-1'
        },
        dragMsg: {
          IsSort: 1,
          Tier: '',
          Sort: '',
          ParentId: '',
          DepartmentID: '',
        },
        defaultImg: 'this.src="' + require("../../assets/img/default_head_img.jpg") + '"',
        //返回数据
        DataList: [],
        companyList: [],
        layercompanyList: [],
        departmentList: [],
        layerDepartmentList: [],
        postList: [],
        employeeList: [],
        tierList: [],
        layerTierList: [],
        allList: []

      }
    },
    mounted() {
      let userInfo = this.getLocalStorage();
      this.addMsg1.RB_Group_id = this.postMsg.RB_Group_Id = this.companyMsg.RB_Group_Id = this.departmentMsg.RB_Group_Id = this.addMsg.RB_Group_Id = userInfo.RB_Group_id; //集团
      this.companyMsg.RB_Branch_Id = userInfo.RB_Branch_id; //公司
      this.msg.RB_Branch_Id = userInfo.RB_Branch_id; //公司
      this.msg.IsParentCompany = userInfo.IsParentCompany; //是否为总公司

      this.getList();
      this.getCompany();
      this.getDepartment();
      this.getEmployee();
      this.getPost()
      this.getTier()
      this.getAllDepartment()
    },
    filters: {
      //			tierFormat(value){
      //				if(value=='1')
      //				return '一级'
      //				if(value=='2')
      //				return '二级'
      //				if(value=='3')
      //				return '三级'
      //				if(value=='4')
      //				return '四级'
      //				if(value=='5')
      //				return '五级'
      //			}
    },
    methods: {
      setIsLeave(Id) {
        let myDate = new Date();
        let _year = myDate.getFullYear();
        let _month = myDate.getMonth() >= 9 ? myDate.getMonth() + 1 : '0' + (myDate.getMonth() + 1);
        let _date = myDate.getDate() > 9 ? myDate.getDate() : '0' + myDate.getDate();
        let _time = _year + '-' + _month + '-' + _date;
        this.apipost('admin_post_EmployeeInOrOut', {
          Id: Id,
          Time: _time,
        }, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message)
            this.getList();
            this.getAllDepartment()
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {
        })
      },
      layerLinkageDepartment() { //弹窗联动部门
        this.addMsg1.RB_Department_Id = '';
        this.addMsg1.RB_Post_Id = '',
          this.getDepartmentMsg.RB_Branch_Id = this.addMsg1.RB_Branch_id;
        this.getDerpartMent();
      },
      layerLinkagePost() { //弹窗联动岗位
        this.addMsg1.RB_Post_Id = '',
          this.getPostMsg.RB_Branch_Id = this.addMsg1.RB_Branch_id;
        this.getPostMsg.RB_Department_Id = this.addMsg1.RB_Department_Id
        this.getPost1()

      },
      getPost1() { //岗位
        this.apipost('admin_get_PostGetList', this.getPostMsg, res => {
          if (res.data.resultCode == 1) {
            this.layerPostList = res.data.data;
          } else {
          }
        }, err => {
        })
      },
      getDerpartMent() { //获取部门
        this.apipost('admin_get_DepartmentGetList', this.getDepartmentMsg, res => {
          if (res.data.resultCode == 1) {
            this.layerDepartMentList = res.data.data;
          } else {
          }
        }, err => {
        })
      },
      handleDragStart(node, ev) {
        // console.log('drag start', node);
      },
      handleDragEnter(draggingNode, dropNode, ev) {
        //  console.log('tree drag enter: ', dropNode.label);
      },
      handleDragLeave(draggingNode, dropNode, ev) {
        // console.log('tree drag leave: ', dropNode.label);
      },
      handleDragOver(draggingNode, dropNode, ev) {
        //  console.log('tree drag over: ', dropNode.label);
      },
      handleDragEnd(draggingNode, dropNode, dropType, ev) {
        //  console.log('tree drag end: ', dropNode && dropNode.label, dropType);
        // console.log(2222)
      },
      handleDrop(node, node1, inner) {
        if (inner == 'inner') {
          this.dragMsg.Tier = node1.data.Tier + 1
          this.dragMsg.Sort = node.data.Sort
          this.dragMsg.ParentId = node1.data.DepartmentID
          this.dragMsg.DepartmentID = node.data.DepartmentID
        }
        if (inner == 'before') {
          this.dragMsg.Tier = node1.data.Tier
          this.dragMsg.Sort = node1.data.Sort - 1
          this.dragMsg.ParentId = node1.data.ParentId
          this.dragMsg.DepartmentID = node.data.DepartmentID
        }
        if (inner == 'after') {
          this.dragMsg.Tier = node1.data.Tier
          this.dragMsg.Sort = node1.data.Sort + 1
          this.dragMsg.ParentId = node1.data.ParentId
          this.dragMsg.DepartmentID = node.data.DepartmentID
        }
        this.apipost('admin_post_DepartmentSet', this.dragMsg, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.getList()
            this.getAllDepartment()
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {
        })
      },

      allowDrop(draggingNode, dropNode, type) {
        return dropNode.data.DType === 1
      },
      allowDrag(draggingNode) {
        return draggingNode.data.DType === 1
      },
      getAllDepartment() {
        this.apipost('user_get_GetGroupDepartmentTreeList', {}, res => {
          if (res.data.resultCode == 1) {
            this.allList = res.data.data
            //console.log(this.allList)
          }
        }, err => {
        })
      },
      getTier() {
        this.apipost('app_get_GetDepartmentTier', {}, res => {
          if (res.data.resultCode == 1) {
            this.layerTierList = []
            for (let i = res.data.data.StartNum; i <= res.data.data.EndNum; i++) {
              this.tierList.push({
                id: i,
                name: i + '级'
              })
            }
          } else {
          }
        }, err => {
        })
      },
      getlayerTier() {
        this.apipost('app_get_GetDepartmentTier', this.layerTierMsg, res => {
          if (res.data.resultCode == 1) {
            this.layerTierList = []
            for (let i = res.data.data.StartNum; i <= res.data.data.EndNum; i++) {
              this.layerTierList.push({
                id: i,
                name: i + '级'
              })
            }
          } else {
          }
        }, err => {
        })
      },
      getDeparmentTierByBranch() {
        this.layerTierMsg.BranchId = this.employeeMsg.BranchId = this.layerDepartmentMsg.BranchId = this.addMsg.RB_Branch_Id
        this.addMsg.DepartmentManager = ''
        this.getLayerParentDepartment()
        this.getEmployee()
        this.getlayerTier()
      },
      getParentDeparment() {
        this.addMsg.ParentId = '';
        if (this.addMsg.Tier == 1) {
          this.layerDepartmentList = null;
        } else {
          this.layerDepartmentMsg.Tier = this.addMsg.Tier;
          this.getLayerParentDepartment();
        }
      },
      getList() { //获取数据
        this.loading = true
        this.treeLayerShow = false
        this.treeLayerShowUser = false
        this.apipost('admin_get_DepartmentGetPageList', this.msg, res => {
          if (res.data.resultCode == 1) {
            this.DataList = res.data.data.pageData;
            this.total = res.data.data.count;
            this.loading = false
          } else {
          }
        }, err => {
        })
      },
      getCompany() { //公司
        this.dialogTitle=this.$t('adm.adm_xzbumen');
        this.apipost('admin_get_BranchGetList', this.companyMsg, res => {
          if (this.outerVisible) {
            this.layercompanyList = res.data.data
          } else {
            this.companyList = res.data.data
          }
        }, err => {
        })
      },
      getDepartment() { //获取上级部门
        this.apipost('admin_get_DepartmentGetList', this.departmentMsg, res => {
          if (res.data.resultCode == 1) {
            this.departmentList = res.data.data
          }
        }, err => {
        })
      },
      getLayerParentDepartment() {
        this.apipost('app_get_GetDepartmentCascade', this.layerDepartmentMsg, res => {
          if (res.data.resultCode == 1) {
            this.layerDepartmentList = res.data.data
          }
        }, err => {
        })
      },
      getPost() { //获取岗位
        this.apipost('admin_get_PostGetList', this.postMsg, res => {
          if (res.data.resultCode == 1) {
            this.postList = res.data.data
          }
        }, err => {
        })
      },
      getEmployee() { //员工
        this.apipost('admin_get_EmployeeGetList', this.employeeMsg, res => {
          if (res.data.resultCode == 1) {
            this.employeeList = res.data.data;
          } else {
          }
        }, err => {
        })
      },
      addData1() {
        this.apipost('admin_post_EmployeeOperate', this.addMsg1, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.getList();
            this.getAllDepartment()
            this.resetForm('addMsg1');
          } else {
            this.$message.error(res.data.message)
          }

        }, err => {
        })

      },
      submitForm1(addMsg) { //提交创建、修改表单
        this.$refs[addMsg].validate((valid) => {
          if (valid) {
            this.addData1()
          } else {
            return false;
          }
        });
      },
      resetForm(formName) { //弹出框取消 初始化谈框内表单
        this.$refs[formName].resetFields();
        // this.addMsg1.EmployeeId='0'
      },
      addData() { //新增数据
        if (this.addMsg.ManagerIdArr.length > 0) {
          this.addMsg.ManagerIds = this.addMsg.ManagerIdArr.join(",");
          this.addMsg.DepartmentManager = String(this.addMsg.ManagerIdArr[0]);
        } else {
          this.addMsg.ManagerIds = ''
          this.addMsg.DepartmentManager = 0
        }
        this.apipost('admin_post_DepartmentSet', this.addMsg, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.outerVisible = false;
            this.treeLayerShow = false
            this.getList()
            this.getAllDepartment()
            this.resetForm('addMsg');

          } else {
            this.$message.error(res.data.message)
          }
        }, err => {
        })
      },
      addTreeData(obj) {
        this.treeLayerTitle=this.$t('adm.adm_addbumen');
        this.getCompany()
        this.layerDepartmentMsg.BranchId = this.layerTierMsg.BranchId = this.addMsg.RB_Branch_Id = obj.RB_Branch_Id
        this.layerDepartmentMsg.Tier = obj.Tier + 1;
        this.getlayerTier()
        this.getLayerParentDepartment()
        this.addMsg.Tier = obj.Tier + 1
        this.addMsg.ParentId = obj.DepartmentID

      },
      addTreeUerData(obj) {
        this.isleaveBtn = false;
        this.treeLayerUserTitle=this.$t('adm.adm_addyuangong');
        this.getCompany()
        this.getDepartmentMsg.RB_Branch_Id = this.addMsg1.RB_Branch_id = obj.RB_Branch_Id
        this.getDerpartMent();
        this.getPostMsg.RB_Department_Id = this.addMsg1.RB_Department_Id = obj.DepartmentID
        this.getPost1()
      },
      updateData(id) {
        this.getCompany();
        this.addMsg.DepartmentID = id
        this.apipost('admin_get_DepartmentGet', {
          DepartmentID: id
        }, res => {
          if (res.data.resultCode == 1) {
            this.layerDepartmentMsg.BranchId = this.layerTierMsg.BranchId = this.addMsg.RB_Branch_Id = res.data.data.RB_Branch_Id
            this.addMsg.DepartmentName = res.data.data.DepartmentName;
            this.addMsg.ParentId = res.data.data.ParentId.toString();
            this.addMsg.DepartmentManager = res.data.data.DepartmentManager == "0" ? '' : res.data.data.DepartmentManager;
            this.addMsg.DepartmentTel = res.data.data.DepartmentTel;
            this.addMsg.Sort = res.data.data.Sort;
            this.addMsg.ManagerIds = res.data.data.ManagerIds;
            this.addMsg.ManagerIdArr = res.data.data.ManagerIdArr;
            this.addMsg.IsLeader = res.data.data.IsLeader.toString();
            this.layerDepartmentMsg.Tier = this.addMsg.Tier = res.data.data.Tier;
            this.getlayerTier()
            this.getLayerParentDepartment()
            if (res.data.data.PostIdStr != '') {
              this.addMsg.PostIdArr = res.data.data.PostIdStr
            } else {
              this.addMsg.PostIdArr = []
            }
            if (res.data.data.Tier == 1) {
              this.addMsg.ParentId = '';
              this.layerDepartmentList = null;
            } else {
              this.addMsg.ParentId = res.data.data.ParentId;
              this.departmentMsg.Tier = res.data.data.Tier - 1;
              this.getDepartment();
            }

          } else {
            this.$message.error(res.data.message)
          }
        }, err => {
        })
      },
      updateDataUser(obj) {
        this.leaveId = obj.DepartmentID
        this.isleaveBtn = true;
        this.apipost('admin_get_EmployeeGet', {
          Id: obj.DepartmentID
        }, res => {
          if (res.data.resultCode == 1) {
            this.getDepartmentMsg.RB_Branch_Id = res.data.data.RB_Branch_id
            this.getPostMsg.RB_Department_Id = res.data.data.RB_Department_Id;
            this.getDerpartMent();
            this.getPost1();
            this.addMsg1 = res.data.data;
            if (res.data.data.IsLeave == 0) {
              this.leaveBtn = '设为离职';
            } else {
              this.leaveBtn = '设为在职';
            }
            this.addMsg1.EmSex = res.data.data.EmSex.toString();
          }
        }, err => {
        })

      },
      deleteDeparment(id) {
        this.$confirm(this.$t('tips.tips_deletealldepart'), this.$t('tips.tips'), {
          confirmButtonText:this.$t('pub.sureBtn'),
          cancelButtonText: this.$t('pub.cancelBtn'),
          type: 'warning'
        }).then(() => {
          this.apipost('admin_post_DepartmentRemove', {
            DepartmentID: id
          }, res => {
            if (res.data.resultCode == 1) {
              this.$message.success(this.$t('tips.shanchuchenggong'))
              this.getList();
              this.getAllDepartment()
            }
          }, err => {
          })

        }).catch(() => {
          this.$message.info('已取消删除!')
        });
      },
      handleCurrentChange(val) {
        this.msg.pageIndex = val;
        this.getList();
      },
      resetPageIndex() {
        this.msg.pageIndex = 1;
        this.currentPage = 1
      },
      submitForm(addMsg) { //提交创建、修改表单
        this.$refs[addMsg].validate((valid) => {
          if (valid) {
            this.addData()
          } else {
            return false;
          }
        });
      },
      closeChangeMachie(done) { //弹出框关闭初始化弹框内表单
        done();
        this.resetForm('addMsg');
      },
      resetForm(formName) { //弹出框取消 初始化谈框内表单
        this.$refs[formName].resetFields();
        this.addMsg.DepartmentID = 0
        this.addMsg1.EmployeeId = '0'
        this.addMsg1.EmPhoto = ''
//			 	this.layerDepartmentMsg.Tier=''
//			 	this.layerTierList=[]
//			 	this.layerDepartmentList=[]
      }
    }
  }
</script>