<style scoped>
  @import "./css/cssReset.css";

  .approval_page_layer {
    position: fixed;
    width: 100%;
    left: 0;
    top: 0;
    z-index: 99;
    height: 100%;
    background: rgba(0, 0, 0, .2);
  }

  .approval_person_set {
    width: 800px;
    height: 100%;
    transition: right .3s;
    background: #fff;
    position: absolute;
    top: 0;
    right: -800px;
    box-shadow: 4px 0px 10px rgba(0, 0, 0, 0.1)
  }

  .approval_person_set_right {
    right: 0;
  }

  .approval_person_layerContent {
    padding-left: 20px;
    overflow: hidden;
  }

  .page_addfp .approval_page_content {
    width: 680px;
    min-height: auto !important;
    overflow: hidden;
    padding: 0 20px;
    background: #fff;
    border-radius: 4px;
  }

  .approval_back_btn {
    margin: 20px 0;
  }

  .approval_page_title {
    height: 14px;
    line-height: 14px;
    padding-left: 15px;
    border-left: 3px solid #E95252;
    margin: 20px 0;
  }

  .approval_person_content {
    padding: 20px 30px;
    overflow: hidden;
    margin-bottom: 0;
  }

  .approval_person_content>span {
    font-size: 12px;
    color: #666;
    margin-right: 30px;
  }

  .approval_person_list {
    float: left;
    width: 550px;
    max-height: 400px;
    overflow: auto;
    margin-bottom: 20px;
  }

  .approval_person_content span.approval_span_type {
    float: left;
    width: 120px;
    margin-bottom: 20px;
    color: #333333;
    font-size: 14px;
  }

  span.approval_person_list_tit {
    float: left;
    color: #666666;
    font-size: 12px;
    line-height: 30px;
    padding-right: 20px;
  }

  .approval_person_set .setTitle {
    height: 48px;
    line-height: 48px;
    background: #EDEEF0;
    font-size: 16px;
    color: #333;
    text-indent: 20px;
  }

  .approval_person_layerContent {
    padding-left: 20px;
    overflow: hidden;
  }

  approval_page_title {
    height: 14px;
    line-height: 14px;
    padding-left: 15px;
    border-left: 3px solid #E95252;
    margin: 20px 0;
  }

  .approval_layer_info {
    padding: 20px 0 0 20px;
  }

  .normalMember {
    margin: 10px 0;
    width: 700px;
    max-height: 500px;
    overflow: auto
  }

  .normalMember li {
    display: inline-block;
    margin: 10px;
    padding: 5px 10px;
    background: #f8f8f8;
    border-radius: 4px;
    text-align: center;
    font-size: 14px;
    color: #333;
  }

  .approval_page_layer_bottom {
    position: absolute;
    bottom: 20px;
    padding-left: 20px;
  }

  ._info_box_top {
    padding-left: 20px;
    padding-bottom: 20px
  }

  .approval_layer_info label,
  ._info_box_top label {
    font-size: 14px
  }

  .approval_process_item_delete {
    position: absolute;
    right: 2px;
    top: -11px;
    font-size: 5px;
  }

  .approval_process_item {
    display: inline-block;
    margin: 0 5px 10px 0;
    cursor: pointer;
  }

  .approval_process_item b.bnotice {
    color: #E95252;
  }

  .approval_process_item>span {
    padding: 0 10px;
    min-width: 100px;
    height: 40px;
    line-height: 40px;
    text-align: center;
    font-size: 12px;
    background: #e7e6f3;
    border-radius: 4px;
    display: inline-block;
  }

  .padding_l88 {
    padding-left: 88px
  }

  .SpecialNodeSelectType {
    display: inline-block;
    margin-right: 15px;
    color: #606266;
  }

</style>
<template>
  <div class="page_addfp">
    <div class="approval_page_layer_none" :class="{approval_page_layer:showlayer}" @click="closeLayer">
      <div :class="{approval_person_set:true,approval_person_set_right:isTransition}" @click.stop>
        <p class="setTitle">{{$t('fnc.sprshezhi')}}</p>
        <div class="approval_person_layerContent">
          <div class="approval_page_title">{{$t('fnc.sprleibie')}}</div>
          <div class="_info_box _info_box_top">
            <label>{{$t('fnc.jdmiaoshu')}}</label>&nbsp;
            <el-input v-model="AuditDescription" class="w200" size="mini" :placeholder="$t('tips.qsrmiaoshu')"
              maxlength="6"></el-input>
          </div>
          <div v-show="!xingzhenState" class="_info_box _info_box_top">
            <label>{{$t('fnc.jddongzuo')}}</label>&nbsp;
            <el-select filterable v-model='GetNodeValue' class="w200" size="mini">
              <el-option v-for='item in GetNodeList' :label='item.Name' :value='item.ID' :key='item.ID'
                v-if="(radio==1&&item.ID!=2)||(radio==2&&item.ID!=1)">
              </el-option>
            </el-select>
          </div>
          <div v-show="xingzhenState" class="_info_box _info_box_top">
						<label>是否签名</label>&nbsp;
						<el-select filterable  v-model='GetNodeValue' class="w200" size="mini">
							<el-option label='审核人签名' :value='1'></el-option>
							<el-option label='申请人签名' :value='2'></el-option>
							<el-option label='否' :value='0'></el-option>
						</el-select>
					</div>
          <el-row v-show="GetNodeValue!=2">
            <el-col :span="10" style="padding-left: 20px;">
              <el-radio-group v-model="approvalType" @change='clearValue'>
                <el-radio :label="1">{{$t('fnc.zhuguan')}}</el-radio>
                <el-radio :label="2">{{$t('fnc.zdchengyuan')}}</el-radio>
                <el-radio :label="3">{{$t('admin.admin_Post')}}</el-radio>
              </el-radio-group>
            </el-col>
            <el-col v-show="!xingzhenState" :span="14" style="font-size:14px;">
              <label class="SpecialNodeSelectType">{{$t('fnc.tsjiedian')}}</label>
              <el-select filterable v-model='SpecialNodeSelectType' @change='changeSpecialNodeSelectType' class="w200"
                size="mini">
                <el-option v-for='item in SpecialNodeSelect' :label='item.name' :value='item.id' :key='item.id'>
                </el-option>
              </el-select>
            </el-col>
          </el-row>

          <div v-show="GetNodeValue!=2" class="approval_layer_info" v-if="approvalType==1">
            <div class="_info_box">
              <label>{{$t('fnc.fqrende')}}</label>&nbsp;
              <el-select filterable v-model='directors' class="w200" size="mini">
                <el-option v-for='item in levelList' :label='item.name' :value='item.level' :key='item.level'>
                </el-option>
              </el-select>
            </div>

          </div>
          <div class="approval_layer_info" v-if="approvalType==2">
            <div class="normalMember">
              <ul>
                <li v-for="item in showMember">{{item.EmployeeName}}</li>
              </ul>
            </div>
            <input type="button" class="normalBtn" @click="getMember()"
              :value="$t('fnc.tjchengyuan')" />
            <div style="margin: 10px 0;" v-if="showMember.length>1">
              <el-radio-group v-model="AuditWay">
                <el-radio :label="2">{{$t('fnc.huiquandetail')}}</el-radio>
                <el-radio :label="3">{{$t('fnc.huoqiandetail')}}</el-radio>
              </el-radio-group>
            </div>
          </div>
          <div class="approval_layer_info" v-if="approvalType==3">
            <div class="normalMember">
              <ul>
                <li v-for="item in showRole">{{item.DepartmentName}}</li>
              </ul>
            </div>
            <input type="button" class="normalBtn" @click="outerVisible1 = true,dialogTitle = $t('fnc.xzgangwei')"
              :value="$t('fnc.addgangweo')" />
            <div style="margin: 10px 0;">
              <el-radio-group v-model="AuditWay">
                <el-radio :label="2">{{$t('fnc.huiquandetail')}}</el-radio>
                <el-radio :label="3">{{$t('fnc.huoqiandetail')}}</el-radio>
              </el-radio-group>
            </div>
          </div>
          <div class="approval_layer_info" v-if="approvalType==4">
            <div class="normalMember">
              <ul>
                <li v-for="item in showMember">{{item.DepartmentName}}</li>
              </ul>
            </div>
            <div style="margin: 10px 0;">
              <el-radio-group v-model="AuditWay">
                <el-radio :label="2">{{$t('fnc.huiquandetail')}}</el-radio>
                <el-radio :label="3">{{$t('fnc.huoqiandetail')}}</el-radio>
              </el-radio-group>
            </div>
          </div>
          <div class="approval_layer_info"
            v-if="approvalType==5||approvalType==6||approvalType==7||approvalType==8 || approvalType==9||approvalType==10||approvalType==11">
            <div style="margin: 10px 0;">
              <el-radio-group v-model="AuditWay">
                <el-radio :label="2">{{$t('fnc.huiquandetail')}}</el-radio>
                <el-radio :label="3">{{$t('fnc.huoqiandetail')}}</el-radio>
              </el-radio-group>
            </div>
          </div>
        </div>
        <div class="approval_page_layer_bottom">
          <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="closeLayer" /> &nbsp;&nbsp;
          <input type="button" class="normalBtn" v-if='addBtn' :value="$t('pub.sureBtn')" @click="addNode" />
          <input type="button" class="normalBtn" v-if='!addBtn' :value="$t('fnc.xgjiedian')" @click="saveUpdateNode" />
        </div>
      </div>
    </div>
    <div v-loading="loading">
      <input type="button" class="hollowFixedBtn approval_back_btn" :value="$t('pub.returnBack')"
        @click="goUrl('XProcessManagement')" />
      <el-form class="_add_box clearfix" :model="addMsg" ref="addMsg" :rules="rules" label-width="100px">
        <div class="approval_page_title">{{$t('fnc.jcxinxi')}}</div>
        <el-form-item :label="$t('fnc.lcmingcheng')" prop="Name">
          <el-input v-model="addMsg.Name" class="w200" size="small" maxlength="10"></el-input>
        </el-form-item>
        <el-form-item label="校区">
          <el-select filterable multiple v-model='BranchIdS' class="w200" size="small" @change="disabledOption">
            <el-option :label='$t("fnc.jttongyong")' :value='-1' :key='-1'>
            </el-option>
            <el-option v-for='item in CompanyList' :label='item.SName' :value='item.SId' :key='item.SId'
              :disabled="item.disabled">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item v-if="xingzhenState" label="审批类型">
          <el-select filterable v-model='addMsg.PropertyType' size="small" class="w200">
            <el-option v-for='item in PropertyTypeList' :label='item.Name' :value='item.ID' :key='item.ID'>
            </el-option>
          </el-select>
        </el-form-item>
        <!-- 判断行政流程修改还是 -->
        <div v-show="!xingzhenState">
          <el-form-item :label="$t('fnc.lcleixing')">
            <el-radio v-model="radio" v-if="addMsg.TemplateType!=8" disabled="disabled" :label="1">
              {{$t('restaurant.res_income')}}</el-radio>
            <el-radio v-model="radio" v-else @change="getCostTypeList(1),CostIdS=[],accListShow=true" :label="1">
              {{$t('restaurant.res_income')}}</el-radio>
            <el-radio v-model="radio" v-if="addMsg.TemplateType!=8" disabled="disabled" :label="2">
              {{$t('restaurant.res_outcome')}}</el-radio>
            <el-radio v-model="radio" v-else @change="getCostTypeList(2),CostIdS=[],accListMsg=[],accListShow=false"
              :label="2">{{$t('restaurant.res_outcome')}}</el-radio>
            <el-radio v-model="radio" v-if="addMsg.TemplateType!=8" disabled="disabled" :label="7">
              {{$t('fnc.guazhang')}}</el-radio>
            <el-radio v-model="radio" v-else @change="getCostTypeList(2),CostIdS=[],accListMsg=[],accListShow=false"
              :label="7">{{$t('fnc.guazhang')}}</el-radio>
            <el-radio v-model="radio" v-if="addMsg.TemplateType!=8" disabled="disabled" :label="8">折让</el-radio>
            <el-radio v-model="radio" v-else @change="getCostTypeList(2),CostIdS=[],accListMsg=[],accListShow=false"
              :label="8">折让</el-radio>
          </el-form-item>
          <el-form-item :label="$t('fnc.scfujian')">
            <el-radio v-model="addMsg.IsUploadPic" :label="0">{{$t('fnc.buqiyong')}}</el-radio>
            <el-radio v-model="addMsg.IsUploadPic" :label="1">{{$t('fnc.qiyong')}}</el-radio>
          </el-form-item>
          <el-form-item :label="$t('ios.sfxianshi')">
            <el-radio @change="RadioShow" v-model="addMsg.IsShow" :label="1">{{$t('pub.yes')}}</el-radio>
            <el-radio @change="RadioShow" v-model="addMsg.IsShow" :label="2">{{$t('pub.no')}}</el-radio>
          </el-form-item>
          <el-form-item v-show="addMsg.IsShow==2" label="可显示部门">
            <el-select filterable multiple v-model='addMsg.ShowDepartmentList' class="w200"
              style="max-height:100px;overflow:hidden" size="small">
              <el-option v-for='item in DepartmentList' :label='item.DeptName' :value='item.DeptId'
                :key='item.DeptId'>
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item v-show="addMsg.IsShow==2" label="可显示人">
            <el-select filterable multiple v-model='addMsg.ShowEmployeeList' class="w200"
              style="max-height:100px;overflow:hidden" size="small">
              <el-option v-for='item in EmployeeList' :label='item.EmployeeName' :value='item.Id'
                :key='item.Id'>
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('fnc.syfeiyong')" v-if="addMsg.TemplateType==8" size="small" class="_treeselect">
            <treeselect class="w230" v-model="CostIdS" value-consists-of="LEAF_PRIORITY"
              :placeholder="$t('pub.pleaseSel')" :multiple="true" :options="CostTypeList" noChildrenText=''
              :normalizer="normalizer" />
          </el-form-item>
          <el-form-item :label="$t('fnc.syzhanghu')" v-if="accListShow">
            <el-checkbox :indeterminate="isIndeterminate" v-model="AccCheckAll" @change="handleCheckAllChangeAcc">
              {{$t('system.table_chekAll')}}</el-checkbox>
            <div style="margin: 15px 0;"></div>
            <el-checkbox-group v-model="accListMsg" @change="handleCheckedCitiesChangeAcc" text-color="#409EFF"
              fill="#409EFF">
              <el-checkbox :value="1" :label="1" :key="1">{{$t('fnc.yinhang')}}</el-checkbox>
              <el-checkbox :value="2" :label="2" :key="2">{{$t('fnc.xianjin')}}</el-checkbox>
              <el-checkbox :value="3" :label="3" :key="3">{{$t('fnc.pingtai')}}</el-checkbox>
              <el-checkbox :value="4" :label="4" :key="4">{{$t('fnc.zjinchi')}}</el-checkbox>
            </el-checkbox-group>
          </el-form-item>
        </div>
        <el-form-item label="排序">
          <el-input v-model="addMsg.Sort" class="w250" size="small" maxlength="60"></el-input>
        </el-form-item>
        <el-form-item :label="$t('fnc.mbmiaoshu')">
          <el-input v-model="addMsg.DescribeInfo" class="w450" size="small" maxlength="100"></el-input>
        </el-form-item>
        <div class="approval_page_title">{{$t('fnc.lcshezhi')}}</div>
        <div class="approval_page_content">
          <div class="approval_person_content">
            <span class="approval_span_type">{{$t('fnc.mrspliucheng')}}</span>
            <span style="float:right">
              <el-button @click="Auditshow=true" style="padding:4px" type="primary" icon="el-icon-edit"
                circle></el-button>
            </span>
            <div class="approval_person_list fl">
              <span class="approval_person_list_tit">{{$t('fnc.mrspiren')}}</span>
              <div class="padding_l88">
                <div class="approval_process_item" draggable="true" v-for="(item,index) in myAuditList"
                  @click="getItemValue(item,index),AuditDescription = item.AuditDescription">
                  <span style="position: relative;" @mouseenter="itemIndex=index" @mouseleave="itemIndex='-1'">
                    <i class="iconfont icon-user11"></i>
                    {{item.AuditDescription}}&nbsp;
                    <b class="bnotice"
                      v-if="item.AuditWay!=1">({{item.AuditWay=="2"?$t('fnc.huiqian'):$t('fnc.huoqian')}})</b>
                    <em v-if='index==itemIndex' class="iconfont icon-guanbi approval_process_item_delete"
                      @click.stop='deleteItem(item.Sort)'></em>
                  </span>
                  <i class="iconfont icon-jiantouyou"></i>
                </div>
                <input type="button" class="hollowFixedBtn" @click="addAppPerson" :value="$t('fnc.tianjia')" />
              </div>
            </div>
            <div class="approval_person_list fl">
              <span class="approval_person_list_tit">{{$t('fnc.mrcsongren')}}</span>
              <div class="padding_l88">
                <div class="approval_process_item" draggable="true" v-for="(item,index) in myAuditUserList">
                  <span style="position: relative;" @mouseenter="itemIndex1=index" @mouseleave="itemIndex1='-1'">
                    <i class="iconfont icon-user11"></i>
                    {{item.emName}}&nbsp;
                    <em v-if='index==itemIndex1' class="iconfont icon-guanbi approval_process_item_delete"
                      @click.stop='deleteUser2(index)'></em>
                  </span>
                  <i class="iconfont icon-jiantouyou"></i>
                </div>
                <input type="button" class="hollowFixedBtn" @click="addAuditUser" :value="$t('fnc.tianjia')" />
              </div>
            </div>
          </div>
        </div>
      </el-form>
      <div style="margin: 30px 0;">
        <input type="button" :value="$t('pub.cancelBtn')" class="hollowFixedBtn" @click="goUrl('XProcessManagement')" />
        <input type="button" :value="$t('pub.saveBtn')" class="normalBtn" @click="saveApproval" />
      </div>
    </div>
    <el-dialog custom-class='w700' :title="dialogTitle" :visible.sync="outerVisible" center>
      <div class="fl" style="width: 300px; margin: 0 20px;">
        <p style="margin: 0 0 10px 0;">{{$t('fnc.xuanze')}}： <el-input class='w200'
            :placeholder="$t('tips.srgjzjxguolv')" v-model="filterText">
          </el-input>
        </p>
        <el-tree class='ApprovalProcessBg' :data="memberList" show-checkbox :filter-node-method="filterNode" ref="tree"
          :props="defaultProps" :render-after-expand="false" node-key="Id" :check-on-click-node="true" @check-change="handleNodeChange">
        </el-tree>
      </div>
      <div class="fl">
        <p style="margin: 0 0 20px 0;">{{$t('fnc.yixuan')}}：</p>
        <div class="Approval_yxList">
          <li v-for="(item,index) in showMember">{{item.EmployeeName}}
            <i @click="mySetCheckedKeys(item.Id,index)" class="el-icon-circle-close showMemberIcon"></i>
          </li>
        </div>
      </div>
      <div slot="footer" class="dialog-footer">
        <button class="hollowFixedBtn" @click="outerVisible = false">{{$t('pub.cancelBtn')}}</button> &nbsp;
        <button class="normalBtn" type="primary" @click="outerVisible = false">{{$t('pub.sureBtn')}}</button>
      </div>
    </el-dialog>
    <el-dialog custom-class='w700' :title="dialogTitle" :visible.sync="outerVisible1" center>
      <div class="fl" style="width: 300px; margin: 0 20px;">
        <p style="margin: 0 0 10px 0;">{{$t('fnc.xzgangwei')}}： <el-input class='w200'
            :placeholder="$t('tips.srgjzjxguolv')" v-model="filterText1">
          </el-input>
        </p>
        <el-tree class='ApprovalProcessBg' :data="roleList" ref="treeRole" show-checkbox
          :filter-node-method="filterNode1" :props="defaultProps1" :check-on-click-node="true" :check-strictly="true" @check-change="checkedRole"
          :default-checked-keys="defaultCheckedArr" node-key="PostId">
        </el-tree>
      </div>
      <div class="fl">
        <p style="margin: 0 0 20px 0;">{{$t('fnc.yixuangangwei')}}：</p>
        <div class="Approval_yxList">
          <li v-for="(item,index) in showRole">{{item.DepartmentName}}
            <i @click="deleteRole(index)" class="el-icon-circle-close showMemberIcon"></i>
          </li>
        </div>
      </div>
      <div slot="footer" class="dialog-footer">
        <button class="hollowFixedBtn" @click="outerVisible1= false">{{$t('pub.cancelBtn')}}</button> &nbsp;
        <button class="normalBtn" type="primary" @click="outerVisible1 = false">{{$t('pub.sureBtn')}}</button>
      </div>
    </el-dialog>

    <el-dialog custom-class='w700' :title="dialogTitle" :visible.sync="outerVisible2" center>
      <div class="fl" style="width: 300px; margin: 0 20px;">
        <p style="margin: 0 0 10px 0;">{{$t('fnc.xzcsongren')}}：<el-input class='w200'
            :placeholder="$t('tips.srgjzjxguolv')" v-model="filterText2">
          </el-input>
        </p>
        <el-tree class='ApprovalProcessBg' :data="userList" show-checkbox :filter-node-method="filterNode2"
          ref="treeUser" :props="defaultProps2" :render-after-expand="false" :check-on-click-node="true" node-key="Id"
          @check-change="handleNodeChange1">
        </el-tree>
      </div>
      <div class="fl">
        <p style="margin: 0 0 20px 0;">{{$t('fnc.yixuan')}}：</p>
        <div class="Approval_yxList">
          <li v-for="(item,index) in myAuditUserList1">{{item.emName}}
            <i @click="deleteUser(index)" class="el-icon-circle-close showMemberIcon"></i>
          </li>
        </div>
      </div>
      <div slot="footer" class="dialog-footer">
        <button class="hollowFixedBtn" @click="outerVisible2 = false">{{$t('pub.cancelBtn')}}</button> &nbsp;
        <button class="normalBtn" type="primary" @click="saveAuditUser">{{$t('pub.sureBtn')}}</button>
      </div>
    </el-dialog>
    <el-dialog title="修改审批人" :visible.sync="Auditshow" width="400px">
      <div>
        <ul>
          <li v-for="(item,index) in myAuditList" :key="index+500" style="margin-bottom:10px">
            <span style="display:inline-block;width:90px">{{item.AuditDescription}}</span>
            <el-input v-model.number="item.Sort" size="mini" style="width:200px"></el-input>
          </li>
        </ul>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button size="mini" @click="Auditshow = false">取 消</el-button>
        <el-button size="mini" type="danger" @click="AuditSort">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
  import {
    getSchoolDropdown
  } from '../../api/school/index'
  import {
    getPostPage,
  } from '../../api/system/post'
  import {
    getDeptPage,
  } from '../../api/system/dept'
  import Treeselect from '@riophae/vue-treeselect'
  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  import {
    queryEmployee
  } from '../../api/users/user'

  export default {
    components: {
      Treeselect
    },
    data() {
      return {
        PropertyTypeList: [],
        xingzhenState: false,
        DepartmentList: [],
        EmployeeList: [],
        Auditshow: false,
        accListShow: true,
        TemplateId: 0,
        radio: 1,
        addMsg: {
          Id: 0,
          Name: '',
          DescribeInfo: '',
          Sort: '0',
          TemplateType: '8',
          TempLateClass: '',
          FinancialInstitutions: [],
          RB_BranchId: -1,
          IsUploadPic: 0,
          Workflow_Condition: {
            Id: 0,
            AuditList: [],
            AuditUserList: [],
          },
          IsShow: 1,
          ShowEmployeeList: [],
          ShowDepartmentList: [],
          PropertyType: '',
          TemplateSorce:2,
        },
        AuditUserList: {
          EmployeeIdName: '',
          EmployeeId: '',
          Sort: ''
        },
        getPostMsg: {
          RB_Group_Id: '0'
        },
        i: 0,
        SpecialNodeSelect: [{
            id: 4,
            name: this.$t('fnc.kjiedian')
          },
          {
            id: 5,
            name: this.$t('fnc.cnchuangkou')
          },
          {
            id: 6,
            name: this.$t('fnc.kjchuangkou')
          }
        ],
        accListMsg: [],
        SpecialNodeSelectType: '',
        AuditDescription: '',
        AuditWay: 2,
        RoleOrInitiator: '',
        BranchIdS: [],
        CostIdS: [],
        CompanyList: [],
        CostTypeList: [],
        myAuditList: [],
        levelList: [],
        showMember: [],
        memberList: [],
        memberSetCheckedKeys: [],
        memberSetCheckedUserKeys: [],
        myAuditUserList: [],
        showRole: [],
        roleList: [],
        roleSetCheckedKeys: [],
        sysUserKeys: [],
        userList: [],
        myAuditUserList1: [],
        getMsg: [],
        GetNodeList: [],
        showlayer: false,
        isTransition: false,
        addBtn: true,
        outerVisible: false,
        outerVisible1: false,
        outerVisible2: false,
        loading: false,
        dialogTitle: '',
        approvalType: 1,
        itemIndex: -1,
        itemIndex1: -1,
        GetNodeValue: 0,
        updateItemIndex: -1, //修改节点
        directors: '', // 直接主管等级
        filterText: "",
        filterText1: "",
        filterText2: "",
        DepartIDs: '0',
        defaultCheckedArr: [],
        defaultProps: {
          children: 'ChildList',
          label: 'EmployeeName',
        },
        defaultProps1: {
          // children: 'ChildList',
          label: 'PostName',
          disabled: "Disabled"
        },
        defaultProps2: {
          children: 'ChildList',
          label: 'EmployeeName',
        },
        rules: {
          Name: [{
            required: true,
            message: this.$t('rule.qsrlcmingcheng'),
            trigger: 'blur'
          }],
          TypeId: [{
            required: true,
            message: this.$t('rule.qxzzhleixing'),
            trigger: 'change'
          }],
        },
        tongyong: false,
        normalizer(node) {
          return {
            id: node.ID,
            label: node.Name,
            children: node.ChildList,
          }
        },
        WindowList: [],
        WindowID: '',
        AccCheckAll: false,
        AccList: [{
          id: 1,
          lab: this.$t('fnc.yinhang')
        }, {
          id: 2,
          lab: this.$t('fnc.xianjin')
        }, {
          id: 3,
          lab: this.$t('fnc.pingtai')
        }, {
          id: 4,
          lab: this.$t('fnc.zjinchi')
        }],
        isIndeterminate: true,
        schoolMsg:{
          pageIndex: 1,
          pageSize: 99999,
          rowsPerPage: 12,
          SName: "",
          Status: '-1'
        },
        //岗位msg
        jobMsg:{
          pageIndex: 1,
          pageSize: 12,
          rowsPerPage: 12,
          PostName: "", //岗位名称
          PostId: 0, //岗位编号
          Status: "-1",
        }
      }
    },
    watch: {
      filterText(val) {
        this.$refs.tree.filter(val);
      },
      filterText1(val) {
        this.$refs.treeRole.filter(val);
      },
      filterText2(val) {
        this.$refs.treeUser.filter(val);
      }
    },
    created() {
      let userInfo = this.getLocalStorage();
      this.TemplateId = this.$route.query.id;
      this.getPostMsg.RB_Group_Id = userInfo.Group_Id;
      this.addMsg.TemplateType = this.$route.query.isZ;
      this.DepartIDs = userInfo.DeptId;
      if (this.$route.query.id === 0) {
        if (this.$route.query.Branch_Id >= 0) {
          this.BranchIdS.push(this.$route.query.Branch_Id);
          this.addMsg.RB_BranchId = this.$route.query.Branch_Id;
        };
      }
      this.getSchool()
    },
    mounted() {
      if (this.$route.query.xingzhen) {
        this.xingzhenState = true;
        this.addMsg.TemplateSorce = 2;
        this.CostIdS.push('0')
        // this.addMsg.PropertyType="";
        this.getPropertyType();
      }
      this.getMaxDepartmentTierList();
      if (this.TemplateId != 0) {
        this.getList();
      } else {
        this.getCostTypeList(1)
      }
      this.getFinancialFlowTemplate_post_GetNodeList();
      this.getRole()
      this.getEmployeeList();
      this.getDepartment();
    },
    methods: {
      getSchool() {
        getSchoolDropdown({}).then(res => {
          this.CompanyList=res.Data;
        }).catch(() => {

        })
      },

      getPropertyType() {
        this.apipost(
          "FinancialFlowTemplate_post_GetPropertyTypeList", {},
          res => {
            if (res.data.resultCode == 1) {
              this.PropertyTypeList = res.data.data;
            }
          },
          err => {}
        );
      },
      //根据多公司获取部门
      getDepartment() {
        let msg={
          pageIndex: 1,
          pageSize: 999,
          rowsPerPage: 12,
          DeptName: "", //部门名称
          DeptId: 0, //部门编号
          Status: "-1",
          School_Id: 0,
          DeptTier: 0,
          ParentId: 0,
        }
        getDeptPage(msg).then(res => {
          this.DepartmentList=res.Data.PageData;
        }).catch(() => {
        })
      },
      RadioShow(val) {
        if (val == 1) {

          this.addMsg.ShowEmployeeList = [];
          this.addMsg.ShowDepartmentList = [];
        }
      },
      getEmployeeList() {
        queryEmployee({}).then(res => {
          if(res.Code==1){
             this.EmployeeList = res.Data;
          }
        }).catch(() => {

        })

        // this.apipost(
        //   'admin_get_EmployeeGetList', {},
        //   res => {
        //     if (res.data.resultCode == 1) {
        //       this.EmployeeList = res.data.data
        //     }
        //   },
        //   err => {}
        // )
      },
      AuditSort() {
        let sum = 0;
        let sortnum = 0;
        for (let i = 0; i < this.myAuditList.length; i++) {
          let id = this.myAuditList[i].Sort;
          sum += i + 1;
          sortnum += this.myAuditList[i].Sort;


        }
        if (sum != sortnum) {
          this.Error("请输入连续的排序！")
          return;
        }
        this.myAuditList.sort(
          this.$commonUtils.createComprisonFunction("Sort")
        );
        this.Auditshow = false;
      },
      handleCheckAllChangeAcc(val) {
        this.accListMsg = val ? [1, 2, 3, 4] : [];
        this.isIndeterminate = false;
      },
      handleCheckedCitiesChangeAcc(value) {
        let checkedCount = value.length;
        this.AccCheckAll = checkedCount === this.AccList.length;
        this.isIndeterminate = checkedCount > 0 && checkedCount < this.AccList.length;
      },
      changeSpecialNodeSelectType(i) { // 设置特殊节点值
        this.approvalType = i;
      },
      getFinancialFlowTemplate_post_GetNodeList() {
        this.apipost('FinancialFlowTemplate_post_GetNodeList', {}, res => {
          if (res.data.resultCode == 1) {
            this.GetNodeList = res.data.data
          }
        }, err => {})
      },
      getList() {
        this.loading = true
        this.apipost('FinancialFlowTemplate_post_Get', {
          ID: this.TemplateId,
          TemplateType: this.addMsg.TemplateType
        }, res => {
          if (res.data.resultCode == 1) {
            this.loading = false;
            let data = res.data.data;
            this.getMsg = data;
            this.addMsg.Id = data.Id;
            this.addMsg.Name = data.Name;
            this.addMsg.DescribeInfo = data.DescribeInfo;
            this.addMsg.Sort = data.Sort;
            this.addMsg.TempLateClass = data.TempLateClass;
            this.addMsg.IsUploadPic = data.IsUploadPic;
            this.addMsg.IsShow = data.IsShow;
            this.addMsg.ShowEmployeeList = data.ShowEmployeeList;
            this.addMsg.ShowDepartmentList = data.ShowDepartmentList;
            this.addMsg.PropertyType = data.PropertyType;

            if (data.list && data.list[0] !== -1) {
              this.accListMsg = data.list;
            }
            if (data.TempLateClass != null) {
              this.radio = data.TempLateClass;
              this.getCostTypeList(data.TempLateClass.toString())
            }
            if (data.Workflow_Condition.AuditList) {
              data.Workflow_Condition.AuditList.forEach(x => {
                if (x.AuditType == 1) {
                  x.AuditUserList = [{
                    EmployeeId: '',
                    Sort: ''
                  }];
                }
                if (x.AuditType == 3) {
                  x.AuditUserList = [{
                    EmployeeId: '',
                    Sort: ''
                  }];
                }
              })
            }
            if (data.FinanceFlowConnectType == 3) {
              this.BranchIdS.push(-1);
            } else {
              data.SuitableObjectNameList.forEach(x => {
                this.BranchIdS.push(parseInt(x));
              })
            }
            let CostIdS = data.CoseTypeList.length == 0 ? [] : JSON.parse(JSON.stringify(data.CoseTypeList));
            let arr = []
            CostIdS.forEach(x => {
              arr.push(parseInt(x))
            })
            this.CostIdS = arr;
            this.myAuditList = data.Workflow_Condition.AuditList == null ? [] : data.Workflow_Condition.AuditList
            this.myAuditList.forEach((x, index) => {
              x.Sort = index + 1
              if (x.AuditUserList != null && x.AuditType == 2) {
                x.Name = x.AuditDescription
              }
            })
            this.myAuditUserList = data.Workflow_Condition.AuditUserList == null ? [] : data.Workflow_Condition
              .AuditUserList
            this.myAuditUserList1 = JSON.parse(JSON.stringify(this.myAuditUserList))
            this.myAuditUserList1.forEach(item => {
              this.sysUserKeys.push(item.EmployeeId)
            })
            if (this.radio !== 1) {
              this.accListShow = false;
            }
            this.disabledOption();
          } else {}
        }, error => {})
      },
      disabledOption() { // 选择公司 如果选择通用则禁用其它选项
        if (this.BranchIdS.length == 0) {
          this.CompanyList.forEach(y => {
            y.disabled = false
          })
          this.tongyong = false
        } else {
          this.BranchIdS.forEach(x => {
            if (x == -1) {
              this.BranchIdS = []
              this.BranchIdS.push(-1)
              this.CompanyList.forEach(y => {
                y.disabled = true
              })
              this.tongyong = true
            }
          })
        }
      },
      disabledOption2() { // 选择费用类型 如果选择通用则禁用其它选项
        if (this.CostIdS.length == 0) {
          this.CostTypeList.forEach(y => {
            y.disabled = false
          })
        } else {
          this.CostIdS.forEach(x => {
            if (x == '0') {
              this.CostIdS = []
              this.CostIdS.push('0')
              this.CostTypeList.forEach(y => {
                y.disabled = true
              })
            }
          })
        }
      },
      saveApproval() { // 保存数据
        if (this.xingzhenState) {
          if (!this.addMsg.PropertyType || this.addMsg.PropertyType == '') {
            this.Error("请选择审批类型！");
            return;
          }
        }
        if (this.accListMsg.length === 0) {
          this.addMsg.list = [-1]
        } else {
          this.addMsg.list = this.accListMsg
        }
        this.addMsg.FinancialInstitutions=[];
        if (this.BranchIdS.length != 0) { //适用公司
          this.BranchIdS.forEach(x => {
            if (x == -1) {
              let FinancialInstitutions = {
                ID: 0,
                SuitableObjectId: '',
                Type: ''
              }
              FinancialInstitutions.SuitableObjectId = 0
              FinancialInstitutions.Type = 3
              this.addMsg.FinancialInstitutions.push(FinancialInstitutions)
            } else {
              let FinancialInstitutions = {
                ID: 0,
                SuitableObjectId: '',
                Type: ''
              }
              FinancialInstitutions.Type = 1;
              FinancialInstitutions.SuitableObjectId = x;
              this.CompanyList.forEach(y=>{
                if(x==y.SId){
                    FinancialInstitutions.SuitableObjectIdName=y.SName
                }
              })
              this.addMsg.FinancialInstitutions.push(FinancialInstitutions)
            }
          })
        } else {
          this.$message.error(this.$t('tips.qxzsygongsi'))
          return
        }
        if (this.CostIdS.length != 0) { //适用费用
          this.CostIdS.forEach(x => {
            let FinancialInstitutions = {
              ID: 0,
              SuitableObjectId: x,
              Type: 2
            }
            this.addMsg.FinancialInstitutions.push(FinancialInstitutions)
          })
        } else {
          this.$message.error(this.$t('tips.qxzsyfeiyong'))
          return
        }
        if (this.myAuditList.length != 0) {
          this.addMsg.Workflow_Condition.AuditList = this.myAuditList
        } else {
          this.$message.error(this.$t('tips.qxzspiren'))
          return
        }

        if (this.myAuditUserList.length != 0) {
          this.addMsg.Workflow_Condition.AuditUserList = this.myAuditUserList
        }
        //暂时为空
        // this.addMsg.Workflow_Condition.AuditUserList = []
        if (this.TemplateId != 0) {
          this.addMsg.Workflow_Condition.Id = this.getMsg.Workflow_Condition.Id
        }
        if (this.radio != '') {
          this.addMsg.TempLateClass = parseInt(this.radio)
        } else {
          this.$message.error(this.$t('tips.qxzliucehng'))
          return
        }
        this.loading = true;
        this.addMsg.Workflow_Condition.AuditList;
        this.apipost('FinancialFlowTemplate_post_Set', this.addMsg, res => {
          if (res.data.resultCode == 1) {
            this.loading = false;
            this.$message.success(this.$t('tips.czchenggong'))
            if (this.xingzhenState) {
              this.$router.push({
                path: 'XProcessmanagement',
                query: {
                  "type": this.addMsg.TemplateType,
                  'Branch_Id': this.$route.query.Branch_Id
                }
              })

            } else {
              this.$router.push({
                path: 'FProcessManagement',
                query: {
                  "type": this.addMsg.TemplateType,
                  'Branch_Id': this.$route.query.Branch_Id
                }
              })

            }
          } else {
            this.loading = false;
            if (this.xingzhenState) {
              this.addMsg.TemplateSorce = 2;
            }
            this.addMsg = {
              PropertyType: '',
              Id: this.addMsg.Id,
              Name: this.addMsg.Name,
              DescribeInfo: this.addMsg.DescribeInfo,
              Sort: this.addMsg.Sort,
              TemplateType: this.addMsg.TemplateType,
              TempLateClass: this.radio,
              FinancialInstitutions: [],
              RB_BranchId: this.$route.query.Branch_Id,
              Workflow_Condition: {
                Id: this.addMsg.Workflow_Condition.Id,
                AuditList: [],
                AuditUserList: [],
              },
              TemplateSorce:2,
            }
            this.$message.error(res.data.message)
            return
          }
        }, err => {})
      },
      deleteUser(index) { // 删除人员
        var arr=[];
        this.myAuditUserList1.splice(index,1);
        this.myAuditUserList1.forEach(x=>{
          arr.push(x.EmployeeId);
        })
        if(this.$refs.treeUser){
          this.$refs.treeUser.setCheckedKeys(arr);
        }
      },
      deleteUser2(index){
        this.myAuditUserList.splice(index,1);
      },
      saveAuditUser() { // 抄送人保存
        if (this.myAuditUserList1.length <= 10) {
          this.myAuditUserList = JSON.parse(JSON.stringify(this.myAuditUserList1))
          this.outerVisible2 = false
        } else {
          this.$message.error(this.$t('tips.rsbncgtr'))
          return false;
        }

      },
      handleNodeChange1(data, checked) { //抄送人操作选中
        data.IsCheck = checked;
        let res = this.$refs.treeUser.getCheckedNodes(true, true);
        this.myAuditUserList1=[];
        res.forEach((x,index)=>{
          var obj={
            sort:index+1,
            emName:x.EmployeeName,
            EmployeeId:x.Id
          }
          this.myAuditUserList1.push(obj)
        })

      },
      addAuditUser() { // 抄送人
        // let _arr = this.sysUserKeys.concat(this.memberSetCheckedUserKeys)
        // this.dialogTitle = this.$t('fnc.xzrenyuan');
        // this.outerVisible2 = true;
        // let _this = this;
        // this.apipost('WorkFlow_get_GetTempLateDepartMentEmployee', {}, res => {
        //   if (res.data.resultCode == 1) {
        //     this.userList = res.data.data
        //   }
        // }, err => {})
        this.dialogTitle = this.$t('fnc.xzrenyuan');
        this.outerVisible2 = true;
        var arr=[];
        if(this.myAuditUserList1.length>0){
          this.myAuditUserList1.forEach(x=>{
            arr.push(x.EmployeeId);
          })
          if(this.$refs.treeUser){
            this.$refs.treeUser.setCheckedKeys(arr);
          }
        }
        queryEmployee({}).then(res => {
          if(res.Code==1){
            this.userList=res.Data;
          }
        }).catch(() => {

        })

      },
      checkedRole(data, checked) { // 岗位选择+
          if(checked){
            this.$refs.treeRole.setCheckedKeys([data.PostId]);
          }
          let res = this.$refs.treeRole.getCheckedNodes(true, true);
          this.showRole=[];
          res.forEach((x,index)=>{
            var obj={
              DepartmentName:x.PostName,
              Id:x.PostId
            }
            this.showRole.push(obj)
          })
      },
      deleteRole(index) { // 删除已选岗位
        this.showRole.splice(index,1);
        var arr=[];
        this.showRole.forEach(x=>{
          arr.push(x.Id);
        })
        if(this.$refs.treeRole){
          this.$refs.treeRole.setCheckedKeys(arr);
        }
      },
      getRole() { // 选择岗位
        getPostPage(this.jobMsg).then(res => {
          if(res.Code==1){
            this.roleList = res.Data.PageData;
          }
        }).catch(() => {

        })
      },
      saveUpdateNode() {
        let AuditList = {};
        let type = this.approvalType
        if (this.AuditDescription == '') {
          return this.$message.error(this.$t('tips.qtxjdmiaoshu'))
        }
        if (type == 1) {
          AuditList.AuditType = type;
          AuditList.AuditWay = 1;
          AuditList.AuditUserList = [{
            EmployeeId: '',
            EmployeeIdName:'',
            Sort: ''
          }];
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.RoleOrInitiator = this.directors;
          AuditList.SpecialNode = this.GetNodeValue;
          if(this.GetNodeValue==2){
              this.directors=1 
          }
          if (this.directors == '') {
            return this.$message.error(this.$t('tips.qxzbmzgjibie'))
          }
          this.levelList.forEach(x => {
            if (x.level == this.directors) {
              AuditList.Name = this.AuditDescription
              AuditList.AuditDescription = this.AuditDescription
            } else return
          })
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 2) { //指定成员
          let Au = this.showMember;
          let Auu = [];
          Au.forEach((item, index) => {
            Auu.push({
              EmployeeId: item.Id,
              EmName: item.EmployeeName,
              Sort: index + 1
            })
          })
          AuditList.AuditWay = this.AuditWay;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.Name = this.AuditDescription;
          AuditList.AuditType = 2;
          AuditList.RoleOrInitiator = '';
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditUserList = Auu;
          AuditList.SpecialNode = this.GetNodeValue;
          if (Auu.length == 0) {
            this.$message.error(this.$t('tips.cybnweikong'))
            return
          } else if (Auu.length > 10) {
            this.$message.error(this.$t('tips.rsbncgtr'))
            return
          }
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 3) { //岗位
          AuditList.AuditType = 3;
          AuditList.AuditWay = this.AuditWay;
          AuditList.AuditUserList = [{
            EmployeeId: '',
            Sort: ''
          }];
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.SpecialNode = this.GetNodeValue;
          if (this.showRole.length == 0) {
            this.$message.error(this.$t('tips.qxzgangwei'))
            return
          } else {
            AuditList.RoleOrInitiator = this.showRole[0].Id;
            AuditList.RoleOrInitiatorName = this.showRole[0].DepartmentName;
            AuditList.AduitName = this.showRole[0].DepartmentName;
            AuditList.AuditDescription = this.AuditDescription;
          }
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 4) { //空节点
          AuditList.AuditType = 4;
          AuditList.AuditWay = this.AuditWay;
          AuditList.AuditUserList = [{
            EmployeeId: '0',
            Sort: ''
          }];
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.SpecialNode = this.GetNodeValue;
          AuditList.RoleOrInitiator = 0;
          AuditList.Name = '';
          AuditList.AduitName = '';
          AuditList.AuditDescription = this.AuditDescription;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 5) { //出纳
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 5;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 6) { //会计
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 6;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 7) { //线控（当团OP所在部门的负责人）
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 7;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 10) { //分公司op（当团OP所在部门的负责人）
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 10;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;

        }
        if (type == 11) { //总部线控
          AuditList.AuditType = 11;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;

        }
        if (type == 8) { //记账负责人
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 8;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        if (type == 9) { //收款出纳
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 9;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList[this.updateItemIndex] = AuditList;
        }
        this.closeLayer()
      },
      getItemValue(obj, index) {
        this.SpecialNode = obj.SpecialNode
        this.addBtn = false;
        this.updateItemIndex = index;
        this.updateItem = obj;
        this.showLayer();
        this.approvalType = obj.AuditType;
        this.GetNodeValue = obj.SpecialNode;
        if (obj.AuditType == 1) {
          this.directors = obj.RoleOrInitiator
        }
        if (obj.AuditType == 2) {
          // this.showMember = [];
          this.memberSetCheckedKeys = [];
          this.AuditWay = obj.AuditWay;
          var arr=[];
          obj.AuditUserList.forEach((item, index) => {
            this.showMember.push({
              EmployeeName: item.EmName,
              Id: item.EmployeeId
            })
            arr.push(item.EmployeeId);
            if(this.$refs.tree){
              this.$refs.tree.setCheckedKeys(arr);
            }
          })
        }
        if (obj.AuditType == 3) {
          this.AuditWay = obj.AuditWay;
          this.showRole = [];
          this.showRole.push({
            DepartmentName: obj.RoleOrInitiatorName,
            Id: obj.RoleOrInitiator
          })
          this.defaultCheckedArr.push(obj.RoleOrInitiator)
        }
        if (obj.AuditType == 4) {
          this.AuditWay = obj.AuditWay;
          this.showRole = [];
          this.showRole.push({
            DepartmentName: obj.AduitName,
            Id: obj.RoleOrInitiator
          })
          this.SpecialNodeSelectType = obj.AuditType;
        }
        if (obj.AuditType == 5 || obj.AuditType == 6 || obj.AuditType == 7 || obj.AuditType == 8 || obj.AuditType ==
          9 || obj.AuditType == 10 || obj.AuditType == 11) {
          this.AuditWay = obj.AuditWay;
          this.WindowID = obj.RoleOrInitiator;
          this.SpecialNodeSelectType = obj.AuditType;
        }
      },
      handleNodeChange(data, checked) {
        data.IsCheck = checked;
        let res = this.$refs.tree.getCheckedNodes(true, true);
        this.showMember=[];
        res.forEach(x=>{
          var obj={
            EmployeeName:x.EmployeeName,
            Id:x.Id
          }
          this.showMember.push(obj)
        })
      },
      mySetCheckedKeys(id,index) {
        var arr=[];
        this.showMember.splice(index,1);
        this.showMember.forEach(x=>{
          arr.push(x.Id);
        })
        if(this.$refs.tree){
          this.$refs.tree.setCheckedKeys(arr);
        }
      },
      getMember() { // 获取指定成员列表
        this.outerVisible = true;
        this.dialogTitle = this.$t('fnc.xzrenyuan');
        queryEmployee({}).then(res => {
          if(res.Code==1){
            this.memberList = res.Data;
          }
        }).catch(() => {

        })
        var arr=[];
        this.showMember.forEach(x=>{
          arr.push(x.Id);
        })
        if(this.$refs.tree){
          this.$refs.tree.setCheckedKeys(arr);
        }
      },
      deleteItem(sort) { // 删除已添加审批人
        this.myAuditList.splice(this.myAuditList.findIndex(item => item.Sort === sort), 1)
      },
      addNode() { // 添加节点
        let AuditList = {};
        let type = this.approvalType
        if (this.AuditDescription == '') {
          return this.$message.error('请填写节点描述！')
        }
        if (type == 1) {
          AuditList.AuditType = type;
          AuditList.AuditWay = 1;
          AuditList.AuditUserList = [{
            EmployeeId: '',
            Sort: ''
          }];
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.RoleOrInitiator = this.directors;
          AuditList.AuditDescription = '';
          AuditList.SpecialNode = this.GetNodeValue;
          if(this.GetNodeValue==2){
              this.directors=1 
          }
          if (this.directors == '') {
            return this.$message.error(this.$t('tips.qxzbmzgjibie'))
          }
          this.levelList.forEach(x => {
            if (x.level == this.directors) {
              AuditList.Name = this.AuditDescription;
              AuditList.AuditDescription = this.AuditDescription;
            } else return
          })
          this.myAuditList.push(AuditList)
        }
        if (type == 2) {
          let Au = this.showMember;
          let Auu = [];
          Au.forEach((item, index) => {
            Auu.push({
              EmployeeId: item.Id,
              EmName: item.EmployeeName,
              Sort: index + 1
            })
          })
          AuditList.AuditWay = this.AuditWay;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.Name = this.AuditDescription;
          AuditList.AuditType = type;
          AuditList.RoleOrInitiator = '';
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditUserList = Auu;
          AuditList.SpecialNode = this.GetNodeValue;
          if (Auu.length == 0) {
            this.$message.error('成员不能为空')
            return
          } else if (Auu.length > 10) {
            this.$message.error('rsbncgtr')
            return
          }
          this.myAuditList.push(AuditList);
        }
        if (type == 3) {
          AuditList.AuditType = type;
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditUserList = [{
            EmployeeId: '',
            Sort: ''
          }];
          AuditList.SpecialNode = this.GetNodeValue;
          if (this.showRole.length == 0) {
            this.$message.error(this.$t('tips.qxzbumen'))
            return
          } else {
            AuditList.RoleOrInitiator = this.showRole[0].Id;
            AuditList.RoleOrInitiatorName = this.showRole[0].DepartmentName;
            AuditList.AuditDescription = this.AuditDescription;
          }
          this.myAuditList.push(AuditList);
        }
        if (type == 4) { //空节点
          AuditList.AuditType = type;
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditUserList = [{
            EmployeeId: '0',
            Sort: ''
          }];
          AuditList.SpecialNode = this.GetNodeValue;
          AuditList.RoleOrInitiator = 0;
          AuditList.Name = '';
          AuditList.AuditDescription = this.AuditDescription;
          this.myAuditList.push(AuditList);
        }
        if (type == 5) { //出纳
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 5;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 6) { //会计
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 6;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 7) { //op
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 7;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 10) { //分公司op
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 10;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 11) { //总部线控
          AuditList.AuditType = 11;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 8) { //记账出纳
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 8;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        if (type == 9) { //收款出纳
          // if(!this.WindowID){
          // 	this.$message.error("请选择窗口！")
          // 	return
          // }
          AuditList.AuditType = 9;
          AuditList.RoleOrInitiator = '';
          AuditList.AuditWay = this.AuditWay;
          AuditList.Sort = this.myAuditList.length + 1;
          AuditList.AuditDescription = this.AuditDescription;
          AuditList.SpecialNode = this.GetNodeValue;
          this.myAuditList.push(AuditList);
        }
        this.closeLayer()
      },
      clearValue(t) { // 选择会计出纳窗口获取对应下拉
        this.SpecialNodeSelectType = ''; // 选择普通节点初始化 特殊节点 值
      },
      changeValue(value) {

      },
      getMaxDepartmentTierList() { // 获取直接主管层级
        this.apipost('admin_get_GetMaxDepartmentTier', {}, res => {
          if (res.data.resultCode == 1) {
            let data = res.data.data;
            let newList = [];
            data.forEach(x => {
              let newObj = {
                level: x,
                name: this.$t('tips.di') + x + this.$t('tips.jizhuguan'),
              }
              newList.push(newObj)
            });
            this.levelList = newList
          } else {}
        }, err => {})
      },
      getCostTypeList(type) { // 获取费用类型
        this.apipost('Financial_post_GetTreeList', {
          Type: type
        }, res => {
          if (res.data.resultCode == 1) {
            this.CostTypeList = res.data.data;
            this.CostTypeList.unshift({
              ChildList: [],
              ID: '0',
              Name: this.$t('active.cl_tongyong')
            })
          } else {}
        }, err => {})
      },
      addAppPerson() { // 添加默认审批人按钮
        this.approvalType = 1;
        this.addBtn = true;
        this.AuditDescription = '';
        this.showLayer();
        this.showMember = [];
        this.showRole = [];
        this.GetNodeValue = 0;
      },
      goUrl(path) {
        this.$router.push({
          path: '/financial/'+path,
          query: {
            "type": this.addMsg.TemplateType,
            'Branch_Id': this.$route.query.Branch_Id
          }
        })
      },
      showLayer() { // 开启弹层
        this.showlayer = true;
        this.isTransition = true;
      },
      closeLayer() { // 关闭弹层
        let _this = this;
        this.directors = ''
        setTimeout(function () {
          _this.showlayer = false;
        }, 300)
        this.showMember = [];
        this.memberSetCheckedKeys = [];
        // this.$refs.tree.setCheckedKeys(this.memberSetCheckedKeys);
        this.isTransition = false;
        this.defaultCheckedArr = [];
        this.WindowID = '';
        this.SpecialNodeSelectType = '';
      },
      filterNode(value, data) {
        if (!value) return true;
        return data.DepartmentName.indexOf(value) !== -1;
      },
      filterNode1(value, data) {
        if (!value) return true;
        return data.PostName.indexOf(value) !== -1;
      },
      filterNode2(value, data) {
        if (!value) return true;
        return data.DepartmentName.indexOf(value) !== -1;
      },
    }
  }

</script>
