Alan
2021-02-19 6c0b67172bc799fa4d3f9891ce9da5261a3de43f
Merge remote-tracking branch 'origin/master'
12个文件已修改
4165 ■■■■■ 已修改文件
src/settings.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/myUtil.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/Informationinput.vue 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/inemployees.vue 1198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/outemployess.vue 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/search.vue 495 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/selectuser.vue 245 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/yunpan/fujian.vue 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/yunpan/uploadfj.vue 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/yunpan/zhishou.vue 1301 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/settings.js
@@ -21,6 +21,8 @@
    // tx-manager控制台
    txUrl: 'http://localhost:8501/admin/index.html#/login',
    // 文件上传地址
    filesUploadUrl: 'http://120.24.23.155:8301/hr/filesUpload'
    filesUploadUrl: 'http://120.24.23.155:8301/hr/filesUpload',
    // 个人文件上传地址
    uploadSinglePath: 'http://120.24.23.155:8301/hr/empAccessory'
  }
}
src/utils/myUtil.js
@@ -29,3 +29,25 @@
  }
  return { birth: birth, sex: sex, age: age }
}
/**
 * 计算工龄
 * @param {*} entryDate 入职日期
 */
export function calculateSeniority(val) {
  // eslint-disable-next-line eqeqeq
  if (val.length === 0) {
    return 0
  }
  var myDate = new Date()
  var month = myDate.getMonth() + 1
  var day = myDate.getDate()
  var entryDate = new Date(val)
  var age = myDate.getFullYear() - entryDate.getFullYear()
  if (entryDate.getMonth < month || entryDate.getMonth === month && entryDate.getDay <= day) {
    age++
  }
  if (age <= 0) {
    age = 0
  }
  return age
}
src/utils/request.js
@@ -8,7 +8,7 @@
import 'nprogress/nprogress.css'
// 请求超时时间,10s
const requestTimeOut = 10 * 1000
const requestTimeOut = 20 * 1000
const success = 200
// 更换令牌的时间区间
const checkRegion = 5 * 60 * 1000
src/views/dashboard/index.vue
@@ -65,14 +65,14 @@
          <p>超龄员工人数</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showXzyg('离职员工总数','6')">
          <p class="card-number">{{ this.total.lzyg }}</p>
          <p>离职员工总数</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showXzyg('辞职申请人数','7')">
          <p class="card-number">{{ this.total.czyg }}</p>
@@ -97,8 +97,6 @@
          <p>公司辞退人数</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showht('有效合同','11')">
          <p class="card-number">{{ this.total.yxht }}</p>
@@ -111,6 +109,9 @@
          <p>到期合同</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showht('新签合同','13')">
          <p class="card-number">{{ this.total.xinqht }}</p>
@@ -129,8 +130,6 @@
          <p>解除合同</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showcq('出勤人数','1')">
          <p class="card-number">{{ this.total.cqrs }}</p>
@@ -149,6 +148,9 @@
          <p>员工体验</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showcq('员工加班','2')">
          <p class="card-number">{{ this.total.ygjb }}</p>
@@ -161,8 +163,6 @@
          <p>员工旷工</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showlz('劳资案件','1')">
          <p class="card-number">{{ this.total.lzaj }}</p>
@@ -187,14 +187,15 @@
          <p>社保申请</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showsyj('失业金案件','3')">
          <p class="card-number">{{ this.total.syj }}</p>
          <p>失业金案件</p>
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="4">
        <el-card shadow="always" class="card-info" @click.native="showXzyg('身份证到期','11')">
          <p class="card-number">{{ this.total.sfz }}</p>
@@ -213,7 +214,6 @@
          <p>不良记录</p>
        </el-card>
      </el-col>
    </el-row>
    <on-the-job-user
      ref="jobUser"
src/views/user/Informationinput.vue
@@ -439,13 +439,13 @@
      <el-form ref="empBaseInfoForm" :model="empBaseInfoForm" :rules="rules" label-position="right" label-width="120px">
        <el-row>
          <el-col :span="12">
            <el-form-item label="档案号">
            <el-form-item label="档案号" prop="archivesNumb">
              <el-input v-model="empBaseInfoForm.archivesNumb" />
            </el-form-item>
            <el-form-item label="员工编号" prop="empNumb">
              <el-input v-model="empBaseInfoForm.empNumb" />
            </el-form-item>
            <el-form-item label="身份证号码">
            <el-form-item label="身份证号码" prop="certificateNumb">
              <el-input
                v-model="empBaseInfoForm.certificateNumb"
                @input="generateUserInfo(0,empBaseInfoForm.certificateNumb)"
@@ -457,7 +457,7 @@
                <el-option label="临时工" value="2" />
              </el-select>
            </el-form-item>
            <el-form-item label="民族">
            <el-form-item label="民族" prop="nation">
              <el-select v-model="empBaseInfoForm.nation" placeholder="请选择民族">
                <el-option label="汉族" value="01" />
                <el-option label="蒙古族" value="02" />
@@ -519,7 +519,7 @@
                <el-option label="外国民族" value="98" />
              </el-select>
            </el-form-item>
            <el-form-item label="婚姻状态">
            <el-form-item label="婚姻状态" prop="marriage">
              <el-select v-model="empBaseInfoForm.marriage" placeholder="请选择婚姻状态">
                <el-option label="未婚" value="1" />
                <el-option label="已婚" value="2" />
@@ -529,10 +529,10 @@
                <el-option label="其它" value="9" />
              </el-select>
            </el-form-item>
            <el-form-item label="身高(cm)">
            <el-form-item label="身高(cm)" prop="stature">
              <el-input v-model="empBaseInfoForm.stature" />
            </el-form-item>
            <el-form-item label="政治面貌">
            <el-form-item label="政治面貌" prop="politics">
              <el-select v-model="empBaseInfoForm.politics" placeholder="请选择政治面貌">
                <el-option label="中共党员" value="01" />
                <el-option label="预备党员" value="02" />
@@ -549,7 +549,7 @@
                <el-option label="群众" value="13" />
              </el-select>
            </el-form-item>
            <el-form-item label="最高学历">
            <el-form-item label="最高学历" prop="education">
              <el-select v-model="empBaseInfoForm.education" placeholder="请选择最高学历">
                <el-option label="博士" value="10" />
                <el-option label="硕士" value="11" />
@@ -563,7 +563,7 @@
                <el-option label="无学历" value="91" />
              </el-select>
            </el-form-item>
            <el-form-item label="籍贯">
            <el-form-item label="籍贯" prop="nativePlaceName">
              <el-autocomplete
                v-model="empBaseInfoForm.nativePlaceName"
                class="inline-input"
@@ -572,19 +572,19 @@
                @select="placeNameSelect"
              />
            </el-form-item>
            <el-form-item label="现住址">
            <el-form-item label="现住址" prop="currentAddress">
              <el-input v-model="empBaseInfoForm.currentAddress" />
            </el-form-item>
            <el-form-item label="电话号码">
            <el-form-item label="电话号码" prop="telePhone">
              <el-input v-model="empBaseInfoForm.telePhone" />
            </el-form-item>
            <el-form-item label="招聘介绍人">
            <el-form-item label="招聘介绍人" prop="introducer">
              <el-input v-model="empBaseInfoForm.introducer" />
            </el-form-item>
            <el-form-item label="银行名称">
            <el-form-item label="银行名称" prop="bankName">
              <el-input v-model="empBaseInfoForm.bankName" />
            </el-form-item>
            <el-form-item label="保险类型">
            <el-form-item label="保险类型" prop="insuranceType">
              <el-select v-model="empBaseInfoForm.insuranceType" placeholder="请选择保险类型">
                <el-option label="(深户)五险一档" value="1" />
                <el-option label="(非深户)五险一档" value="2" />
@@ -593,10 +593,10 @@
                <el-option label="(非深户)四险一档" value="5" />
              </el-select>
            </el-form-item>
            <el-form-item label="家庭成员及关系">
            <el-form-item label="家庭成员及关系" prop="family">
              <el-input v-model="empBaseInfoForm.family" />
            </el-form-item>
            <el-form-item label="紧急联系电话">
            <el-form-item label="紧急联系电话" prop="urgencyPhone">
              <el-input v-model="empBaseInfoForm.urgencyPhone" />
            </el-form-item>
          </el-col>
@@ -629,13 +629,18 @@
                <el-option label="女" value="2" />
              </el-select>
            </el-form-item>
            <el-form-item label="身份证有效期">
              <el-input v-model="empBaseInfoForm.certificateValidity" />
            <el-form-item label="身份证有效期" prop="certificateValidity">
              <el-date-picker
                v-model="empBaseInfoForm.certificateValidity"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="年龄">
            <el-form-item label="年龄" prop="age">
              <el-input v-model="empBaseInfoForm.age" />
            </el-form-item>
            <el-form-item label="出生日期">
            <el-form-item label="出生日期" prop="birthdate">
              <el-date-picker
                v-model="empBaseInfoForm.birthdate"
                type="date"
@@ -643,45 +648,46 @@
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="入职日期">
            <el-form-item label="入职日期" prop="entryDate">
              <el-date-picker
                v-model="empBaseInfoForm.entryDate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
                @input="calculateSeniority"
              />
            </el-form-item>
            <el-form-item label="入司工龄">
            <el-form-item label="入司工龄" prop="seniority">
              <el-input v-model="empBaseInfoForm.seniority" />
            </el-form-item>
            <el-form-item label="户籍地址">
            <el-form-item label="户籍地址" prop="censusAddress">
              <el-input v-model="empBaseInfoForm.censusAddress" />
            </el-form-item>
            <el-form-item label="保安员证号">
            <el-form-item label="保安员证号" prop="guardNumb">
              <el-input v-model="empBaseInfoForm.guardNumb" />
            </el-form-item>
            <el-form-item label="保安员回执">
            <el-form-item label="保安员回执" prop="returnReceipt">
              <el-input v-model="empBaseInfoForm.returnReceipt" />
            </el-form-item>
            <el-form-item label="档案情况">
            <el-form-item label="档案情况" prop="archivesStatus">
              <el-select v-model="empBaseInfoForm.archivesStatus" placeholder="请选择档案情况">
                <el-option label="未移交" value="0" />
                <el-option label="已移交" value="1" />
              </el-select>
            </el-form-item>
            <el-form-item label="银行账号">
            <el-form-item label="银行账号" prop="bankNumb">
              <el-input v-model="empBaseInfoForm.bankNumb" />
            </el-form-item>
            <el-form-item label="社保电脑号">
            <el-form-item label="社保电脑号" prop="socialNumb">
              <el-input v-model="empBaseInfoForm.socialNumb" />
            </el-form-item>
            <el-form-item label="员工手册">
            <el-form-item label="员工手册" prop="handbookStatus">
              <el-select v-model="empBaseInfoForm.handbookStatus" placeholder="请选择员工手册">
                <el-option label="未发" value="0" />
                <el-option label="已发" value="1" />
              </el-select>
            </el-form-item>
            <el-form-item label="工作证">
            <el-form-item label="工作证" prop="empCardStatus">
              <el-select v-model="empBaseInfoForm.empCardStatus" placeholder="请选择工作证">
                <el-option label="未发" value="0" />
                <el-option label="已发" value="1" />
@@ -689,7 +695,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="相关证件">
            <el-form-item label="相关证件" prop="certificateList">
              <el-select v-model="empBaseInfoForm.certificateList" placeholder="请选择相关证件">
                <el-option label="高中毕业证" value="1" />
                <el-option label="专科毕业证" value="2" />
@@ -1812,7 +1818,7 @@
  </div>
</template>
<script>
import { toCardGetUserInfo } from '@/utils/myUtil'
import { calculateSeniority, toCardGetUserInfo } from '@/utils/myUtil'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import Pagination from '@/components/Pagination'
@@ -1847,13 +1853,23 @@
        certificateNumb: [{ required: true, message: '请输入身份证号', trigger: 'blur' }],
        jobName: [{ required: true, message: '请选择岗位', trigger: 'change' }],
        nativePlaceName: [{ required: true, message: '请选择籍贯', trigger: 'change' }],
        bankName: [{ required: true, message: '请输入银行名称', trigger: 'blur' }],
        bankName: [{ required: true, message: '请输入银行名称', trigger: 'blur' }, { max: 36, message: '长度不超过36个字符', trigger: 'blur' }],
        insuranceType: [{ required: true, message: '请选择保险类型', trigger: 'change' }],
        entryDate: [{ required: true, message: '请选择入职日期', trigger: 'change' }],
        seniority: [{ required: true, message: '请输入入司工龄', trigger: 'blur' }],
        archivesStatus: [{ required: true, message: '请选择档案情况', trigger: 'change' }],
        bankNumb: [{ required: true, message: '请输入银行账号', trigger: 'blur' }],
        empType: [{ required: true, message: '请选择员工类型', trigger: 'change' }]
        bankNumb: [{ required: true, message: '请输入银行账号', trigger: 'blur' }, { max: 32, message: '长度不超过32个字符', trigger: 'blur' }],
        empType: [{ required: true, message: '请选择员工类型', trigger: 'change' }],
        censusAddress: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        currentAddress: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        guardNumb: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        telePhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }],
        returnReceipt: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        introducer: [{ max: 32, message: '长度不超过32个字符', trigger: 'blur' }],
        socialNumb: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        family: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        certificateValidity: [{ required: true, message: '请选择身份证有效期', trigger: 'change' }],
        urgencyPhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }]
      },
      workExperienceRules: {
        empName: [{ required: true, message: '请选择员工', trigger: 'blur' }],
@@ -2171,6 +2187,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      laborTroubleForm: {
@@ -2197,6 +2214,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      occupationalForm: {
@@ -2243,6 +2261,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      accidentCasesForm: {
@@ -2280,6 +2299,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      insuranceForm: {
@@ -2305,6 +2325,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      unemploymentForm: {
@@ -2328,6 +2349,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      resignForm: {
@@ -2350,6 +2372,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      leaveInfoForm: {
@@ -2375,6 +2398,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      contractInfoForm: {
@@ -2400,6 +2424,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      dimissionAttendForm: {
@@ -2426,6 +2451,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      },
      physicalExamForm: {
@@ -2453,6 +2479,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      workExperienceForm: {
@@ -2475,6 +2502,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      empBaseInfoForm: {
@@ -2524,6 +2552,7 @@
        modifyTime: '',
        modifier: '',
        delFlag: '',
        empStatus: 0,
        version: ''
      },
      badRecordForm: {
@@ -2546,6 +2575,7 @@
        modifier: '',
        delFlag: '',
        version: '',
        empStatus: 0,
        remark: ''
      }
    }
@@ -4863,6 +4893,9 @@
          this.empBaseInfoForm.sex = userinfo.sex
          break
      }
    },
    calculateSeniority(val) {
      this.empBaseInfoForm.seniority = calculateSeniority(val)
    }
  }
}
src/views/user/inemployees.vue
@@ -14,26 +14,35 @@
        </el-row>
        <el-row>
          <el-col :span="3">员工编号:
            <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
          </el-col>
          <el-col :span="3">姓名:
            <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
          </el-col>
          <el-col :span="3">身份证号:
            <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
          <el-col :span="4">身份证号:
            <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
          </el-col>
          <el-col :span="3">护卫点:
            <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
          </el-col>
          <el-col :span="3">入职日期:从
            <el-input v-model="queryParams.entryDateBegin" placeholder="请输入内容" style="width:80px" />
          <el-col :span="8">入职日期:
            <el-date-picker
              v-model="queryParams.entryDateStr"
              size="small"
              type="daterange"
              align="right"
              unlink-panels
              range-separator="至"
              value-format="yyyy-MM-dd"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions"
              style="width: 400px;"
            />
          </el-col>
          <el-col :span="3">到
            <el-input v-model="queryParams.entryDateEnd" placeholder="请输入内容" style="width:80px" />
          </el-col>
          <el-col :span="6">
            <el-button type="primary" @click="search">查询</el-button>
            <el-button type="danger">重置</el-button>
          <el-col :span="3">
            <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
            <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
          </el-col>
        </el-row>
        <el-row>
@@ -43,90 +52,107 @@
                <tr>
                  <td>性别:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">男性</el-radio>
                      <el-radio :label="9">女性</el-radio>
                    <el-radio-group v-model="queryParams.sex">
                      <el-radio label="">全部</el-radio>
                      <el-radio label="1">男性</el-radio>
                      <el-radio label="2">女性</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>最高学历:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">初中</el-radio>
                      <el-radio :label="9">高中</el-radio>
                      <el-radio :label="9">大专</el-radio>
                      <el-radio :label="9">本科</el-radio>
                      <el-radio :label="9">硕士</el-radio>
                      <el-radio :label="9">博士</el-radio>
                    <el-radio-group v-model="queryParams.education">
                      <el-radio label="">全部</el-radio>
                      <el-radio label="91">无学历</el-radio>
                      <el-radio label="81">小学</el-radio>
                      <el-radio label="71">初中</el-radio>
                      <el-radio label="61">高中</el-radio>
                      <el-radio label="42">中技</el-radio>
                      <el-radio label="41">中专</el-radio>
                      <el-radio label="31">大学专科</el-radio>
                      <el-radio label="21">大学本科</el-radio>
                      <el-radio label="11">硕士</el-radio>
                      <el-radio label="10">博士</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>政治面貌:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">党员</el-radio>
                      <el-radio :label="9">团员</el-radio>
                      <el-radio :label="9">群众</el-radio>
                    <el-radio-group v-model="queryParams.politics">
                      <el-radio label="">全部</el-radio>
                      <el-radio label="01">中共党员</el-radio>
                      <el-radio label="02">预备党员</el-radio>
                      <el-radio label="03">共青团员</el-radio>
                      <el-radio label="04">民革会员</el-radio>
                      <el-radio label="05">民盟盟员</el-radio>
                      <el-radio label="06">民建会员</el-radio>
                      <el-radio label="07">民进会员</el-radio>
                      <el-radio label="08">农工党员</el-radio>
                      <el-radio label="09">致公党员</el-radio>
                      <el-radio label="10">九三社员</el-radio>
                      <el-radio label="11">台盟盟员</el-radio>
                      <el-radio label="12">民主人士</el-radio>
                      <el-radio label="13">群众</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>年龄:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">18-29</el-radio>
                      <el-radio :label="9">30-39</el-radio>
                      <el-radio :label="9">40-49</el-radio>
                      <el-radio :label="9">50-59</el-radio>
                      <el-radio :label="9">60-69</el-radio>
                      <el-radio :label="9">69及以上</el-radio>
                    <el-radio-group v-model="queryParams.ageStr">
                      <el-radio label="">全部</el-radio>
                      <el-radio label="18-29">18-29</el-radio>
                      <el-radio label="30-39">30-39</el-radio>
                      <el-radio label="40-49">40-49</el-radio>
                      <el-radio label="50-59">50-59</el-radio>
                      <el-radio label="60-69">60-69</el-radio>
                      <el-radio label="69-999">69及以上</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>档案情况:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">已移交</el-radio>
                      <el-radio :label="9">未移交</el-radio>
                    <el-radio-group v-model="queryParams.archivesStatus">
                      <el-radio label="">全部</el-radio>
                      <el-radio label="0">已移交</el-radio>
                      <el-radio label="1">未移交</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>保险类型:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">深户(五险一档)</el-radio>
                      <el-radio :label="6">非深户(五险一档)</el-radio>
                      <el-radio :label="6">非深户(五险二档)</el-radio>
                      <el-radio :label="6">非深户(五险三档)</el-radio>
                      <el-radio :label="6">非深户(四险三档)</el-radio>
                    <el-radio-group v-model="queryParams.insuranceType">
                      <el-radio label="">全部</el-radio>
                      <el-radio :label="1">深户(五险一档)</el-radio>
                      <el-radio :label="2">非深户(五险一档)</el-radio>
                      <el-radio :label="3">非深户(五险二档)</el-radio>
                      <el-radio :label="4">非深户(五险三档)</el-radio>
                      <el-radio :label="5">非深户(四险三档)</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>员工状态:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">在职</el-radio>
                    <el-radio-group v-model="queryParams.empStatus">
                      <el-radio label="">全部</el-radio>
                      <el-radio :label="1">在职</el-radio>
                      <el-radio :label="2">正常离职</el-radio>
                      <el-radio :label="3">自动离职</el-radio>
                      <el-radio :label="4">公司辞退</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td>员工手册:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">未发</el-radio>
                    <el-radio-group v-model="queryParams.handbookStatus">
                      <el-radio label="3">全部</el-radio>
                      <el-radio :label="0">未发</el-radio>
                      <el-radio :label="9">已发</el-radio>
                    </el-radio-group>
                  </td>
@@ -134,10 +160,10 @@
                <tr>
                  <td>工作证:</td>
                  <td>
                    <el-radio-group v-model="radio">
                      <el-radio :label="3">全部</el-radio>
                      <el-radio :label="6">未发</el-radio>
                      <el-radio :label="9">已发</el-radio>
                    <el-radio-group v-model="queryParams.empCardStatus">
                      <el-radio label="">全部</el-radio>
                      <el-radio :label="0">未发</el-radio>
                      <el-radio :label="1">已发</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
@@ -150,7 +176,7 @@
        <el-main>
          <el-row>
            <el-col :span="24">
              <el-button type="danger" @click="showXzyg">新增员工</el-button>
              <el-button type="danger" @click="showXzyg(0)">新增员工</el-button>
              <el-button type="primary" @click="delEmp">删除员工</el-button>
              <el-button type="danger" @click="showYgdg(0)">员工调岗</el-button>
              <el-button type="danger" @click="showDryg(0)">导入员工</el-button>
@@ -175,7 +201,7 @@
            <el-table-column prop="sexName" label="性别" width="50" />
            <el-table-column prop="age" label="年龄" />
            <el-table-column prop="educationName" label="最高学历" width="100" />
            <el-table-column prop="censusAddress" label="籍贯" />
            <el-table-column prop="nativePlaceName" label="籍贯" />
            <el-table-column prop="telePhone" label="联系电话" />
            <el-table-column prop="entryDate" label="入职日期" width="100" />
            <el-table-column prop="delFlag" label="员工状态">
@@ -195,16 +221,22 @@
      </el-container>
    </el-container>
    <el-dialog title="新增员工" :visible.sync="dialogShowXzyg" width="50%">
      <el-form ref="empBaseInfoForm" :model="empBaseInfoForm" :rules="rules" label-position="right" label-width="120px">
      <el-form
        ref="empBaseInfoForm"
        :model="empBaseInfoForm"
        :rules="empBaseInfoRules"
        label-position="right"
        label-width="120px"
      >
        <el-row>
          <el-col :span="12">
            <el-form-item label="档案号">
            <el-form-item label="档案号" prop="archivesNumb">
              <el-input v-model="empBaseInfoForm.archivesNumb" />
            </el-form-item>
            <el-form-item label="员工编号" prop="empNumb">
              <el-input v-model="empBaseInfoForm.empNumb" />
            </el-form-item>
            <el-form-item label="身份证号码">
            <el-form-item label="身份证号码" prop="certificateNumb">
              <el-input
                v-model="empBaseInfoForm.certificateNumb"
                @input="generateUserInfo(0,empBaseInfoForm.certificateNumb)"
@@ -216,7 +248,7 @@
                <el-option label="临时工" value="2" />
              </el-select>
            </el-form-item>
            <el-form-item label="民族">
            <el-form-item label="民族" prop="nation">
              <el-select v-model="empBaseInfoForm.nation" placeholder="请选择民族">
                <el-option label="汉族" value="01" />
                <el-option label="蒙古族" value="02" />
@@ -278,7 +310,7 @@
                <el-option label="外国民族" value="98" />
              </el-select>
            </el-form-item>
            <el-form-item label="婚姻状态">
            <el-form-item label="婚姻状态" prop="marriage">
              <el-select v-model="empBaseInfoForm.marriage" placeholder="请选择婚姻状态">
                <el-option label="未婚" value="1" />
                <el-option label="已婚" value="2" />
@@ -288,10 +320,10 @@
                <el-option label="其它" value="9" />
              </el-select>
            </el-form-item>
            <el-form-item label="身高(cm)">
            <el-form-item label="身高(cm)" prop="stature">
              <el-input v-model="empBaseInfoForm.stature" />
            </el-form-item>
            <el-form-item label="政治面貌">
            <el-form-item label="政治面貌" prop="politics">
              <el-select v-model="empBaseInfoForm.politics" placeholder="请选择政治面貌">
                <el-option label="中共党员" value="01" />
                <el-option label="预备党员" value="02" />
@@ -308,7 +340,7 @@
                <el-option label="群众" value="13" />
              </el-select>
            </el-form-item>
            <el-form-item label="最高学历">
            <el-form-item label="最高学历" prop="education">
              <el-select v-model="empBaseInfoForm.education" placeholder="请选择最高学历">
                <el-option label="博士" value="10" />
                <el-option label="硕士" value="11" />
@@ -322,28 +354,28 @@
                <el-option label="无学历" value="91" />
              </el-select>
            </el-form-item>
            <el-form-item label="籍贯">
            <el-form-item label="籍贯" prop="nativePlaceName">
              <el-autocomplete
                v-model="empBaseInfoForm.nativePlaceName"
                class="inline-input"
                :fetch-suggestions="querySearch"
                placeholder="请输入籍贯"
                placeholder="请选择籍贯"
                @select="placeNameSelect"
              />
            </el-form-item>
            <el-form-item label="现住址">
            <el-form-item label="现住址" prop="currentAddress">
              <el-input v-model="empBaseInfoForm.currentAddress" />
            </el-form-item>
            <el-form-item label="电话号码">
            <el-form-item label="电话号码" prop="telePhone">
              <el-input v-model="empBaseInfoForm.telePhone" />
            </el-form-item>
            <el-form-item label="招聘介绍人">
            <el-form-item label="招聘介绍人" prop="introducer">
              <el-input v-model="empBaseInfoForm.introducer" />
            </el-form-item>
            <el-form-item label="银行名称">
            <el-form-item label="银行名称" prop="bankName">
              <el-input v-model="empBaseInfoForm.bankName" />
            </el-form-item>
            <el-form-item label="保险类型">
            <el-form-item label="保险类型" prop="insuranceType">
              <el-select v-model="empBaseInfoForm.insuranceType" placeholder="请选择保险类型">
                <el-option label="(深户)五险一档" value="1" />
                <el-option label="(非深户)五险一档" value="2" />
@@ -352,10 +384,10 @@
                <el-option label="(非深户)四险一档" value="5" />
              </el-select>
            </el-form-item>
            <el-form-item label="家庭成员及关系">
            <el-form-item label="家庭成员及关系" prop="family">
              <el-input v-model="empBaseInfoForm.family" />
            </el-form-item>
            <el-form-item label="紧急联系电话">
            <el-form-item label="紧急联系电话" prop="urgencyPhone">
              <el-input v-model="empBaseInfoForm.urgencyPhone" />
            </el-form-item>
          </el-col>
@@ -388,13 +420,18 @@
                <el-option label="女" value="2" />
              </el-select>
            </el-form-item>
            <el-form-item label="身份证有效期">
              <el-input v-model="empBaseInfoForm.certificateValidity" />
            <el-form-item label="身份证有效期" prop="certificateValidity">
              <el-date-picker
                v-model="empBaseInfoForm.certificateValidity"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="年龄">
            <el-form-item label="年龄" prop="age">
              <el-input v-model="empBaseInfoForm.age" />
            </el-form-item>
            <el-form-item label="出生日期">
            <el-form-item label="出生日期" prop="birthdate">
              <el-date-picker
                v-model="empBaseInfoForm.birthdate"
                type="date"
@@ -402,36 +439,37 @@
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="入职日期">
            <el-form-item label="入职日期" prop="entryDate">
              <el-date-picker
                v-model="empBaseInfoForm.entryDate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
                @input="calculateSeniority"
              />
            </el-form-item>
            <el-form-item label="入司工龄">
            <el-form-item label="入司工龄" prop="seniority">
              <el-input v-model="empBaseInfoForm.seniority" />
            </el-form-item>
            <el-form-item label="户籍地址">
            <el-form-item label="户籍地址" prop="censusAddress">
              <el-input v-model="empBaseInfoForm.censusAddress" />
            </el-form-item>
            <el-form-item label="保安员证号">
            <el-form-item label="保安员证号" prop="guardNumb">
              <el-input v-model="empBaseInfoForm.guardNumb" />
            </el-form-item>
            <el-form-item label="保安员回执">
            <el-form-item label="保安员回执" prop="returnReceipt">
              <el-input v-model="empBaseInfoForm.returnReceipt" />
            </el-form-item>
            <el-form-item label="档案情况">
            <el-form-item label="档案情况" prop="archivesStatus">
              <el-select v-model="empBaseInfoForm.archivesStatus" placeholder="请选择档案情况">
                <el-option label="未移交" value="0" />
                <el-option label="已移交" value="1" />
              </el-select>
            </el-form-item>
            <el-form-item label="银行账号">
            <el-form-item label="银行账号" prop="bankNumb">
              <el-input v-model="empBaseInfoForm.bankNumb" />
            </el-form-item>
            <el-form-item label="社保电脑号">
            <el-form-item label="社保电脑号" prop="socialNumb">
              <el-input v-model="empBaseInfoForm.socialNumb" />
            </el-form-item>
            <el-form-item label="员工手册">
@@ -440,7 +478,7 @@
                <el-option label="已发" value="1" />
              </el-select>
            </el-form-item>
            <el-form-item label="工作证">
            <el-form-item label="工作证" prop="empCardStatus">
              <el-select v-model="empBaseInfoForm.empCardStatus" placeholder="请选择工作证">
                <el-option label="未发" value="0" />
                <el-option label="已发" value="1" />
@@ -448,7 +486,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="相关证件">
            <el-form-item label="相关证件" prop="certificateList">
              <el-select v-model="empBaseInfoForm.certificateList" placeholder="请选择相关证件">
                <el-option label="高中毕业证" value="1" />
                <el-option label="专科毕业证" value="2" />
@@ -1141,14 +1179,13 @@
        </el-container>
      </div>
    </el-dialog>
    <el-dialog title="员工调岗" :visible.sync="dialogShowYgdg" width="50%">
      <el-form :model="ygdgForm" label-position="right" label-width="120px">
      <el-form ref="ygdgForm" :model="ygdgForm" :rules="ygdgRules" label-position="right" label-width="120px">
        <el-row>
          <el-col span="24">
            <el-form-item label="调岗人员">
              <input v-model="ygdgForm.dgryIds" type="hidden">
              <el-input v-model="ygdgForm.dgryNames" type="textarea" />
              <input v-model="ygdgForm.empIds" type="hidden">
              <el-input v-model="ygdgForm.empNames" type="textarea" />
            </el-form-item>
            <el-form-item label="现部门(护卫点)" required message="请选择护卫点" prop="deptId">
              <treeselect
@@ -1158,40 +1195,41 @@
                :clear-value-text="$t('common.clear')"
                placeholder="请选择部门(护卫点)"
                style="width:100%"
                @select="deptNameSelect"
              />
            </el-form-item>
            <el-form-item label="现岗位" prop="jobName">
            <el-form-item label="现岗位" prop="jobId">
              <el-autocomplete
                v-model="ygdgForm.jobName"
                v-model="ygdgForm.newJobName"
                class="inline-input"
                :fetch-suggestions="querySearchJob"
                placeholder="请输入岗位"
                @select="jobNameSelect"
              />
            </el-form-item>
            <el-form-item label="调岗类型" prop="region">
              <el-select v-model="ygdgForm.dglx" placeholder="请选择">
            <el-form-item label="调岗类型" prop="changeType">
              <el-select v-model="ygdgForm.changeType" placeholder="请选择">
                <el-option label="升职" value="2" />
                <el-option label="调动" value="3" />
              </el-select>
            </el-form-item>
            <el-form-item label="调岗日期">
            <el-form-item label="调岗日期" prop="changeDate">
              <el-date-picker
                v-model="ygdgForm.dgrq"
                v-model="ygdgForm.changeDate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="理由描述">
              <el-input v-model="ygdgForm.lyms" type="textarea" />
            <el-form-item label="理由描述" prop="changeReason">
              <el-input v-model="ygdgForm.changeReason" type="textarea" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="showYgdg(1)">取 消</el-button>
        <el-button type="primary" @click="showYgdg(2)">确 定</el-button>
        <el-button @click="showYgdg(1,'')">取 消</el-button>
        <el-button type="primary" @click="showYgdg(2,'ygdgForm')">确 定</el-button>
      </div>
    </el-dialog>
    <el-dialog title="导入员工信息" :visible.sync="dialogShowDryg" width="50%">
@@ -1199,14 +1237,16 @@
        <el-row>
          <el-col span="24">
            <el-form-item label="员工模板下载" prop="region">
              <a href="#" style="color: #3A8EE6;">员工信息.xlxs</a>
              <a href="/员工信息.xls" target="_blank" style="color: #3A8EE6;">员工信息.xlxs</a>
              <span style="margin-left: 100px;">点击下载</span>
            </el-form-item>
            <el-form-item label="导入员工">
              <el-upload
                ref="upload"
                class="upload-demo"
                action="https://jsonplaceholder.typicode.com/posts/"
                action="hr/empBaseInfo/importEmp"
                accept=".xls, .xlsx, .excel"
                :headers="headers()"
                :file-list="fileList"
                :auto-upload="false"
              >
@@ -1222,11 +1262,11 @@
      </div>
    </el-dialog>
    <el-dialog title="关闭档案" :visible.sync="dialogShowGbda" width="50%">
      <el-form :model="gbdaForm" label-position="right" label-width="120px">
      <el-form ref="gbdaForm" :model="gbdaForm" :rules="gbdaRules" label-position="right" label-width="120px">
        <el-row>
          <el-col span="24">
            <el-form-item label="离职类型" prop="region">
              <el-radio-group v-model="gbdaForm.lzlx">
            <el-form-item label="离职类型" prop="dimissionType">
              <el-radio-group v-model="gbdaForm.dimissionType">
                <el-radio :label="1">正常离职</el-radio>
                <el-radio :label="2">自动离职</el-radio>
                <el-radio :label="3">公司劝退</el-radio>
@@ -1234,127 +1274,211 @@
                <el-radio :label="5">试用期内</el-radio>
              </el-radio-group>
            </el-form-item>
            <el-form-item label="关闭日期">
          </el-col>
          <el-col span="12">
            <el-form-item label="自离天数" prop="selfLeaveDay">
              <el-input v-model="gbdaForm.selfLeaveDay" onkeyup="value=value.replace(/[^0-9.]/g,'')" />
            </el-form-item>
          </el-col>
          <el-col span="12">
            <el-form-item label="报告人" prop="reporter">
              <el-input v-model="gbdaForm.reporter" />
            </el-form-item>
          </el-col>
          <el-col span="24">
            <el-form-item label="关闭日期" prop="dimissionDate">
              <el-date-picker
                v-model="gbdaForm.gbrq"
                v-model="gbdaForm.dimissionDate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="备注说明">
              <el-input v-model="gbdaForm.bzsm" type="textarea" :rows="4" />
            <el-form-item label="备注说明" prop="remark">
              <el-input v-model="gbdaForm.remark" type="textarea" :rows="4" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="showGbda(1)">取 消</el-button>
        <el-button type="primary" @click="showGbda(2)">确 定</el-button>
        <el-button @click="showGbda(1,'')">取 消</el-button>
        <el-button type="primary" @click="showGbda(2,'gbdaForm')">确 定</el-button>
      </div>
    </el-dialog>
    <el-dialog title="导出员工    请勾选需要导出的字段" :visible.sync="dialogShowDcyg" width="40%">
      <table id="dcygTable" width="100%">
        <tr>
          <td colspan="6" style="text-align: left;"><el-checkbox /> 全部字段</td>
          <td colspan="6" style="text-align: left;">
            <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange" />
            全部字段
          </td>
        </tr>
        <tr>
          <td>档案号</td>
          <td><el-checkbox /></td>
          <td>姓名</td>
          <td><el-checkbox /></td>
          <td>性别</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>部门(护卫点)</td>
          <td><el-checkbox /></td>
          <td>所属岗位</td>
          <td><el-checkbox /></td>
          <td>员工类别</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>民族</td>
          <td><el-checkbox /></td>
          <td>身份证号码</td>
          <td><el-checkbox /></td>
          <td>年龄</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>婚姻状况</td>
          <td><el-checkbox /></td>
          <td>身份证有效期</td>
          <td><el-checkbox /></td>
          <td>身高</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>政治面貌</td>
          <td><el-checkbox /></td>
          <td>出生日期</td>
          <td><el-checkbox /></td>
          <td>最高学历</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>籍贯</td>
          <td><el-checkbox /></td>
          <td>户籍地址</td>
          <td><el-checkbox /></td>
          <td>户籍地址</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>保安员证号</td>
          <td><el-checkbox /></td>
          <td>保安员回执</td>
          <td><el-checkbox /></td>
          <td>档案情况</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>银行名称</td>
          <td><el-checkbox /></td>
          <td>银行账号</td>
          <td><el-checkbox /></td>
          <td>电话号码</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>入职日期</td>
          <td><el-checkbox /></td>
          <td>保险类型</td>
          <td><el-checkbox /></td>
          <td>社保电脑号</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>招聘介绍人</td>
          <td><el-checkbox /></td>
          <td>入司工龄</td>
          <td><el-checkbox /></td>
          <td>工作证</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>相关证件</td>
          <td><el-checkbox /></td>
          <td>紧急联系电话</td>
          <td><el-checkbox /></td>
          <td>员工手册</td>
          <td><el-checkbox /></td>
        </tr>
        <tr>
          <td>家庭成员及关系</td>
          <td><el-checkbox /></td>
          <td />
          <td />
          <td />
          <td />
        </tr>
        <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
          <tr>
            <td>档案号</td>
            <td>
              <el-checkbox label="archivesNumb"><span /></el-checkbox>
            </td>
            <td>姓名</td>
            <td>
              <el-checkbox label="empName"><span /></el-checkbox>
            </td>
            <td>性别</td>
            <td>
              <el-checkbox label="sex"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>部门(护卫点)</td>
            <td>
              <el-checkbox label="deptName"><span /></el-checkbox>
            </td>
            <td>所属岗位</td>
            <td>
              <el-checkbox label="jobName"><span /></el-checkbox>
            </td>
            <td>员工类别</td>
            <td>
              <el-checkbox label="empType"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>民族</td>
            <td>
              <el-checkbox label="nation"><span /></el-checkbox>
            </td>
            <td>身份证号码</td>
            <td>
              <el-checkbox label="certificateNumb"><span /></el-checkbox>
            </td>
            <td>年龄</td>
            <td>
              <el-checkbox label="age"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>婚姻状况</td>
            <td>
              <el-checkbox label="marriage"><span /></el-checkbox>
            </td>
            <td>身份证有效期</td>
            <td>
              <el-checkbox label="certificateValidity"><span /></el-checkbox>
            </td>
            <td>身高</td>
            <td>
              <el-checkbox label="stature"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>政治面貌</td>
            <td>
              <el-checkbox label="politics"><span /></el-checkbox>
            </td>
            <td>出生日期</td>
            <td>
              <el-checkbox label="birthdate"><span /></el-checkbox>
            </td>
            <td>最高学历</td>
            <td>
              <el-checkbox label="education"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>籍贯</td>
            <td>
              <el-checkbox label="nativePlace"><span /></el-checkbox>
            </td>
            <td>户籍地址</td>
            <td>
              <el-checkbox label="censusAddress"><span /></el-checkbox>
            </td>
            <td>现住址</td>
            <td>
              <el-checkbox label="currentAddress"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>保安员证号</td>
            <td>
              <el-checkbox label="guardNumb"><span /></el-checkbox>
            </td>
            <td>保安员回执</td>
            <td>
              <el-checkbox label="returnReceipt"><span /></el-checkbox>
            </td>
            <td>档案情况</td>
            <td>
              <el-checkbox label="archivesStatus"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>银行名称</td>
            <td>
              <el-checkbox label="bankName"><span /></el-checkbox>
            </td>
            <td>银行账号</td>
            <td>
              <el-checkbox label="bankNumb"><span /></el-checkbox>
            </td>
            <td>电话号码</td>
            <td>
              <el-checkbox label="telePhone"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>入职日期</td>
            <td>
              <el-checkbox label="entryDate"><span /></el-checkbox>
            </td>
            <td>保险类型</td>
            <td>
              <el-checkbox label="insuranceType"><span /></el-checkbox>
            </td>
            <td>社保电脑号</td>
            <td>
              <el-checkbox label="socialNumb"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>招聘介绍人</td>
            <td>
              <el-checkbox label="introducer"><span /></el-checkbox>
            </td>
            <td>入司工龄</td>
            <td>
              <el-checkbox label="seniority"><span /></el-checkbox>
            </td>
            <td>工作证</td>
            <td>
              <el-checkbox label="empCardStatus"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>相关证件</td>
            <td>
              <el-checkbox label="certificateList"><span /></el-checkbox>
            </td>
            <td>紧急联系电话</td>
            <td>
              <el-checkbox label="urgencyPhone"><span /></el-checkbox>
            </td>
            <td>员工手册</td>
            <td>
              <el-checkbox label="handbookStatus"><span /></el-checkbox>
            </td>
          </tr>
          <tr>
            <td>家庭成员及关系</td>
            <td>
              <el-checkbox label="family"><span /></el-checkbox>
            </td>
            <td />
            <td />
            <td />
            <td />
          </tr>
        </el-checkbox-group>
      </table>
      <div slot="footer" class="dialog-footer">
        <el-button @click="showDcyg(1)">取 消</el-button>
@@ -1364,9 +1488,12 @@
  </div>
</template>
<script>
import { getToken } from '@/utils/auth'
import Pagination from '@/components/Pagination'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { calculateSeniority, toCardGetUserInfo } from '@/utils/myUtil'
export default {
  components: {
    Pagination, Treeselect
@@ -1374,77 +1501,168 @@
  data() {
    return {
      total: 0, // 总数量
      queryParams: {}, // 查询参数
      queryParams: {
        empNumb: ''
      }, // 查询参数
      sort: {}, // 排序
      pagination: { // 分页参数
        size: 5,
        size: 20,
        num: 1
      },
      empBaseInfoForm: {},
      empBaseInfoForm: {
        empId: '',
        customerId: '',
        archivesNumb: '',
        deptId: '',
        deptName: '',
        empNumb: '',
        empName: '',
        sex: '1',
        JobId: '',
        jobName: '',
        empType: '1',
        certificateType: '',
        certificateNumb: '',
        nation: '01',
        certificateValidity: '',
        marriage: '1',
        age: '',
        stature: '',
        birthdate: '',
        politics: '13',
        entryDate: '',
        education: '61',
        seniority: '',
        nativePlace: '',
        nativePlaceName: '',
        censusAddress: '',
        currentAddress: '',
        guardNumb: '',
        telePhone: '',
        returnReceipt: '',
        introducer: '',
        archivesStatus: '0',
        bankName: '',
        bankNumb: '',
        InsuranceType: '',
        socialNumb: '',
        family: '',
        handbookStatus: '0',
        urgencyPhone: '',
        empCardStatus: '0',
        certificateList: '',
        createTime: '',
        creator: '',
        modifyTime: '',
        modifier: '',
        delFlag: '0',
        empStatus: 0,
        version: ''
      },
      ygdgForm: {},
      gbdaForm: {},
      gbdaForm: {
        dgryIds: '',
        dimissionType: '1',
        dimissionDate: new Date(),
        remark: ''
      },
      depts: [],
      fileList: [],
      rules: {
        archivesNumb: [{ required: true, message: '请输入档案号', trigger: 'blur' }],
      empBaseInfoRules: {
        archivesNumb: [{ required: true, message: '请输入档案号', trigger: 'blur' }, {
          max: 20,
          message: this.$t('rules.noMoreThan20'),
          trigger: 'blur'
        }],
        empName: [{ required: true, message: '请输入员工姓名', trigger: 'blur' },
          { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }],
          { min: 2, max: 32, message: '长度不超过32个字符', trigger: 'blur' }],
        empNumb: [{ required: true, message: '请输入员工编号', trigger: 'blur' },
          { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }],
          { min: 2, max: 20, message: this.$t('rules.noMoreThan20'), trigger: 'blur' }],
        deptName: [
          { required: true, message: '请选择护卫点', trigger: 'input' }
        ],
        certificateNumb: [{ required: true, message: '请输入身份证号', trigger: 'blur' }],
        certificateNumb: [{ required: true, message: '请输入身份证号', trigger: 'blur' }, {
          min: 15,
          max: 18,
          message: '身份证长度为15-18位',
          trigger: 'blur'
        }],
        jobName: [{ required: true, message: '请选择岗位', trigger: 'change' }],
        nativePlaceName: [{ required: true, message: '请选择籍贯', trigger: 'change' }],
        bankName: [{ required: true, message: '请输入银行名称', trigger: 'blur' }],
        bankName: [{ required: true, message: '请输入银行名称', trigger: 'blur' }, {
          max: 36,
          message: '长度不超过36个字符',
          trigger: 'blur'
        }],
        insuranceType: [{ required: true, message: '请选择保险类型', trigger: 'change' }],
        entryDate: [{ required: true, message: '请选择入职日期', trigger: 'change' }],
        seniority: [{ required: true, message: '请输入入司工龄', trigger: 'blur' }],
        archivesStatus: [{ required: true, message: '请选择档案情况', trigger: 'change' }],
        bankNumb: [{ required: true, message: '请输入银行账号', trigger: 'blur' }],
        bankNumb: [{ required: true, message: '请输入银行账号', trigger: 'blur' }, {
          max: 32,
          message: '长度不超过32个字符',
          trigger: 'blur'
        }],
        empType: [{ required: true, message: '请选择员工类型', trigger: 'change' }],
        workUnit: [{ required: true, message: '请输入工作单位', trigger: 'blur' }],
        beginDate: [{ required: true, message: '请选择开始日期', trigger: 'change' }],
        endDate: [{ required: true, message: '请选择结束日期', trigger: 'change' }],
        hospital: [{ required: true, message: '请输入体检医院', trigger: 'blur' }],
        physicalExamDate: [{ required: true, message: '请选择体检日期', trigger: 'change' }],
        conclusion: [{ required: true, message: '请输入体检结论', trigger: 'blur' }],
        signingDate: [{ required: true, message: '请选择合同签订日期', trigger: 'change' }],
        contractStatus: [{ required: true, message: '请选择合同状态', trigger: 'change' }],
        attendMonth: [{ required: true, message: '请选择出勤月份', trigger: 'change' }],
        deduct: [{ required: true, message: '请输入代扣填款项', trigger: 'blur' }],
        attendDays: [{ required: true, message: '请输入出勤天数', trigger: 'blur' }],
        beginTime: [{ required: true, message: '请选择请假开始时间', trigger: 'change' }],
        leaveType: [{ required: true, message: '请选择请假类型', trigger: 'change' }],
        reporter: [{ required: true, message: '请输入报备人', trigger: 'blur' }],
        endTime: [{ required: true, message: '请选择请假结束时间', trigger: 'change' }],
        applayDate: [{ required: true, message: '请选择申请日期', trigger: 'change' }],
        reason: [{ required: true, message: '请输入辞职事由', trigger: 'blur' }],
        applayReason: [{ required: true, message: '请输入申报事由', trigger: 'blur' }],
        insuranceGaers: [{ required: true, message: '请选择社保档位', trigger: 'change' }],
        applayStatus: [{ required: true, message: '请选择申请状态', trigger: 'change' }],
        proposer: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
        injuredTime: [{ required: true, message: '请选择受伤时间', trigger: 'blur' }],
        injuredPart: [{ required: true, message: '请输入受伤部位', trigger: 'blur' }],
        injuredDescribe: [{ required: true, message: '请输入受伤经过描述', trigger: 'blur' }],
        hospitalName: [{ required: true, message: '请输入就诊医院', trigger: 'blur' }],
        hospitalizatioFlag: [{ required: true, message: '请选择是否住院', trigger: 'blur' }],
        innsureFee: [{ required: true, message: '请输入保险赔付费用', trigger: 'blur' }],
        settleDate: [{ required: true, message: '请选择案结时间', trigger: 'change' }],
        expensesFee: [{ required: true, message: '请输入医疗总费用', trigger: 'blur' }],
        settleStatus: [{ required: true, message: '请选择结案状态', trigger: 'change' }],
        injuredAddress: [{ required: true, message: '请输入受伤地点', trigger: 'blur' }],
        compensated: [{ required: true, message: '请输入已赔付医药费用', trigger: 'blur' }],
        companyCompensation: [{ required: true, message: '请输入公司赔偿总费用', trigger: 'blur' }],
        arbitrationDate: [{ required: true, message: '请选择仲裁日期', trigger: 'change' }],
        arbitrationReason: [{ required: true, message: '请输入仲裁事由', trigger: 'blur' }],
        arbitrationStatus: [{ required: true, message: '请选择结案状态', trigger: 'change' }],
        badDate: [{ required: true, message: '请选择不良记录日期', trigger: 'change' }],
        badContent: [{ required: true, message: '请输入不良记录描述', trigger: 'blur' }],
        remarkDate: [{ required: true, message: '请选择备注日期', trigger: 'change' }],
        remarkContent: [{ required: true, message: '请输入备注内容', trigger: 'blur' }]
        censusAddress: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        currentAddress: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        guardNumb: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        telePhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }],
        returnReceipt: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        introducer: [{ max: 32, message: '长度不超过32个字符', trigger: 'blur' }],
        socialNumb: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
        family: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        certificateValidity: [{ required: true, message: '请选择身份证有效期', trigger: 'change' }],
        urgencyPhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }]
      },
      gbdaRules: {
        dimissionType: [{ required: true, message: '请选择离职类型', trigger: 'change' }],
        dimissionDate: [{ required: true, message: '请选择关闭日期', trigger: 'change' }],
        selfLeaveDay: [{ required: true, validator: this.validSelfLeaveDay }],
        reporter: [{ required: true, validator: this.validReporter }],
        remark: [{ max: 500, message: '长度不超过500个字符', trigger: 'blur' }]
      },
      ygdgRules: {
        changeType: [{ required: true, message: '请选择调岗类型', trigger: 'change' }],
        changeDate: [{ required: true, message: '请选择调岗日期', trigger: 'change' }],
        jobId: [{ required: true, message: '请选择现岗位', trigger: 'change' }],
        deptId: [{ required: true, message: '请选择现部门', trigger: 'change' }],
        changeReason: [{ max: 500, message: '长度不超过500个字符', trigger: 'blur' }]
      },
      restaurants: [{ value: '北京市', code: '110000' },
        { value: '天津市', code: '120000' },
        { value: '河北省', code: '130000' },
        { value: '山西省', code: '140000' },
        { value: '内蒙古自治区', code: '150000' },
        { value: '辽宁省', code: '210000' },
        { value: '吉林省', code: '220000' },
        { value: '黑龙江省', code: '230000' },
        { value: '上海市', code: '310000' },
        { value: '江苏省', code: '320000' },
        { value: '浙江省', code: '330000' },
        { value: '安徽省', code: '340000' },
        { value: '福建省', code: '350000' },
        { value: '江西省', code: '360000' },
        { value: '山东省', code: '370000' },
        { value: '河南省', code: '410000' },
        { value: '湖北省', code: '420000' },
        { value: '湖南省', code: '430000' },
        { value: '广东省', code: '440000' },
        { value: '广西壮族自治区', code: '450000' },
        { value: '海南省', code: '460000' },
        { value: '重庆市', code: '500000' },
        { value: '四川省', code: '510000' },
        { value: '贵州省', code: '520000' },
        { value: '云南省', code: '530000' },
        { value: '西藏自治区', code: '540000' },
        { value: '陕西省', code: '610000' },
        { value: '甘肃省', code: '620000' },
        { value: '青海省', code: '630000' },
        { value: '宁夏回族自治区', code: '640000' },
        { value: '新疆维吾尔自治区', code: '650000' },
        { value: '台湾省', code: '710000' },
        { value: '香港特别行政区', code: '810000' },
        { value: '澳门特别行政区', code: '820000' }],
      restaurJob: [{ value: '总经理', code: '2942725270000031' },
        { value: '总秘', code: '2942725270000032' },
        { value: '总助', code: '2942725270000033' },
@@ -1480,6 +1698,11 @@
      dialogShowYgdg: false,
      dialogShowDryg: false,
      dialogShowGbda: false,
      exportUrl: '',
      checkAll: false,
      isIndeterminate: false,
      cityOptions: ['sex', 'empName', 'archivesNumb', 'deptName', 'jobName', 'empType', 'nation', 'certificateNumb', 'age', 'marriage', 'certificateValidity', 'stature', 'politics', 'birthdate', 'education', 'nativePlace', 'censusAddress', 'currentAddress', 'guardNumb', 'returnReceipt', 'archivesStatus', 'bankName', 'bankNumb', 'telePhone', 'entryDate', 'insuranceType', 'socialNumb', 'introducer', 'seniority', 'empCardStatus', 'certificateList', 'urgencyPhone', 'handbookStatus', 'family'],
      checkedCities: [],
      tableData: []
    }
  },
@@ -1488,6 +1711,12 @@
    this.initDept()
  },
  methods: {
    resetSearch() {
      this.queryParams = {
        empNumb: ''
      }
      this.search()
    },
    // 翻页方法
    search() {
      this.fetch({
@@ -1500,6 +1729,7 @@
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      params.delFlag = 0
      params.empStatus = 0
      this.$get('hr/empBaseInfo/list', {
        ...params
      }).then((r) => {
@@ -1545,6 +1775,108 @@
        this.advancedQueryShow = true
      }
    },
    calculateSeniority(val) {
      this.empBaseInfoForm.seniority = calculateSeniority(val)
    },
    cleanEmpBase() {
      this.empBaseInfoForm.empId = ''
      this.empBaseInfoForm.customerId = ''
      this.empBaseInfoForm.archivesNumb = ''
      this.empBaseInfoForm.deptId = ''
      this.empBaseInfoForm.deptName = ''
      this.empBaseInfoForm.empNumb = ''
      this.empBaseInfoForm.empName = ''
      this.empBaseInfoForm.sex = ''
      this.empBaseInfoForm.JobId = ''
      this.empBaseInfoForm.jobName = ''
      this.empBaseInfoForm.empType = ''
      this.empBaseInfoForm.certificateType = ''
      this.empBaseInfoForm.certificateNumb = ''
      this.empBaseInfoForm.nation = ''
      this.empBaseInfoForm.certificateValidity = ''
      this.empBaseInfoForm.marriage = ''
      this.empBaseInfoForm.age = ''
      this.empBaseInfoForm.stature = ''
      this.empBaseInfoForm.birthdate = ''
      this.empBaseInfoForm.politics = ''
      this.empBaseInfoForm.entryDate = ''
      this.empBaseInfoForm.education = ''
      this.empBaseInfoForm.seniority = ''
      this.empBaseInfoForm.nativePlace = ''
      this.empBaseInfoForm.nativePlaceName = ''
      this.empBaseInfoForm.censusAddress = ''
      this.empBaseInfoForm.currentAddress = ''
      this.empBaseInfoForm.guardNumb = ''
      this.empBaseInfoForm.telePhone = ''
      this.empBaseInfoForm.returnReceipt = ''
      this.empBaseInfoForm.introducer = ''
      this.empBaseInfoForm.archivesStatus = ''
      this.empBaseInfoForm.bankName = ''
      this.empBaseInfoForm.bankNumb = ''
      this.empBaseInfoForm.InsuranceType = ''
      this.empBaseInfoForm.socialNumb = ''
      this.empBaseInfoForm.family = ''
      this.empBaseInfoForm.handbookStatus = ''
      this.empBaseInfoForm.urgencyPhone = ''
      this.empBaseInfoForm.empCardStatus = ''
      this.empBaseInfoForm.certificateList = ''
      this.empBaseInfoForm.createTime = ''
      this.empBaseInfoForm.creator = ''
      this.empBaseInfoForm.modifyTime = ''
      this.empBaseInfoForm.modifier = ''
      this.empBaseInfoForm.delFlag = ''
      this.empBaseInfoForm.version = ''
    },
    editEmpBase(row) {
      this.isAdd = false
      this.empBaseInfoForm.empId = row.empId
      this.empBaseInfoForm.customerId = row.customerId
      this.empBaseInfoForm.archivesNumb = row.archivesNumb
      this.empBaseInfoForm.deptId = row.deptId
      this.empBaseInfoForm.deptName = row.deptName
      this.empBaseInfoForm.empNumb = row.empNumb
      this.empBaseInfoForm.empName = row.empName
      this.empBaseInfoForm.sex = row.sex
      this.empBaseInfoForm.JobId = row.JobId
      this.empBaseInfoForm.jobName = row.jobName
      this.empBaseInfoForm.empType = row.empType
      this.empBaseInfoForm.certificateType = row.certificateType
      this.empBaseInfoForm.certificateNumb = row.certificateNumb
      this.empBaseInfoForm.nation = row.nation
      this.empBaseInfoForm.certificateValidity = row.certificateValidity
      this.empBaseInfoForm.marriage = row.marriage
      this.empBaseInfoForm.age = row.age
      this.empBaseInfoForm.stature = row.stature
      this.empBaseInfoForm.birthdate = row.birthdate
      this.empBaseInfoForm.politics = row.politics
      this.empBaseInfoForm.entryDate = row.entryDate
      this.empBaseInfoForm.education = row.education
      this.empBaseInfoForm.seniority = row.seniority
      this.empBaseInfoForm.nativePlace = row.nativePlace
      this.empBaseInfoForm.censusAddress = row.censusAddress
      this.empBaseInfoForm.currentAddress = row.currentAddress
      this.empBaseInfoForm.guardNumb = row.guardNumb
      this.empBaseInfoForm.telePhone = row.telePhone
      this.empBaseInfoForm.returnReceipt = row.returnReceipt
      this.empBaseInfoForm.introducer = row.introducer
      this.empBaseInfoForm.archivesStatus = row.archivesStatus
      this.empBaseInfoForm.bankName = row.bankName
      this.empBaseInfoForm.bankNumb = row.bankNumb
      this.empBaseInfoForm.InsuranceType = row.InsuranceType
      this.empBaseInfoForm.socialNumb = row.socialNumb
      this.empBaseInfoForm.family = row.family
      this.empBaseInfoForm.handbookStatus = row.handbookStatus
      this.empBaseInfoForm.urgencyPhone = row.urgencyPhone
      this.empBaseInfoForm.empCardStatus = row.empCardStatus
      this.empBaseInfoForm.certificateList = row.certificateList
      this.empBaseInfoForm.createTime = row.createTime
      this.empBaseInfoForm.creator = row.creator
      this.empBaseInfoForm.modifyTime = row.modifyTime
      this.empBaseInfoForm.modifier = row.modifier
      this.empBaseInfoForm.delFlag = row.delFlag
      this.empBaseInfoForm.version = row.version
      this.showXzyg(1)
    },
    putEmpBase(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
@@ -1556,7 +1888,6 @@
                type: 'success'
              })
              this.cleanEmpBase()
              this.selectEmpBase()
            })
          } else {
            this.$put('hr/empBaseInfo', { ...this.empBaseInfoForm }).then(() => {
@@ -1566,10 +1897,10 @@
              })
              this.$emit('success')
              this.cleanEmpBase()
              this.selectEmpBase()
            })
          }
          this.dialogIsShow()
          this.fetch()
          this.showXzyg()
        }
      })
    },
@@ -1584,7 +1915,7 @@
                type: 'success'
              })
              this.cleanEmpBase()
              this.selectEmpBase()
              this.fetch()
            })
          }
        }
@@ -1615,12 +1946,26 @@
    showEmpInfo() {
      this.dialogTableVisible = true
    },
    showXzyg() {
    showXzyg(val) {
      if (val === 0) {
        this.isAdd = true
      }
      if (!this.dialogShowXzyg) {
        // this.isAdd = true
        this.dialogShowXzyg = true
      } else {
        // this.isAdd = false
        this.dialogShowXzyg = false
      }
    },
    handleCheckAllChange(val) {
      this.checkedCities = val ? this.cityOptions : []
      this.isIndeterminate = false
    },
    handleCheckedCitiesChange(value) {
      const checkedCount = value.length
      this.checkAll = checkedCount === this.cityOptions.length
      this.isIndeterminate = checkedCount > 0 && checkedCount < this.cityOptions.length
    },
    showDcyg(operate) {
      switch (operate) {
@@ -1630,9 +1975,18 @@
        case 1:
          this.dialogShowDcyg = false
          break
        case 2:
          var params = { exportField: this.checkedCities.join(',') }
          this.$download('hr/empBaseInfo/export', { ...params }, '在职员工列表.xls').then(() => {
            this.$message({
              message: '下载成功!',
              type: 'success'
            })
          })
          break
      }
    },
    showYgdg(operate) {
    showYgdg(operate, formName) {
      switch (operate) {
        case 0:
          var selection = this.$refs.multipleTable.store.states.selection
@@ -1642,16 +1996,22 @@
              type: 'error'
            })
          } else {
            var empIds = []
            var ids = []
            var names = []
            var deptNames = []
            var jobNames = []
            for (var i = 0; i < selection.length; i++) {
              var data = selection[i]
              empIds.push(data.empId)
              ids.push(data.empId)
              names.push(data.empName)
              deptNames.push(data.deptName)
              jobNames.push(data.jobName)
            }
            this.ygdgForm = {
              dgryIds: empIds.join(','),
              dgryNames: names.join(',')
              empIds: ids.join(','),
              empNames: names.join(','),
              oldDeptNames: deptNames.join(','),
              oldJobNames: jobNames.join(',')
            }
            this.dialogShowYgdg = true
          }
@@ -1660,15 +2020,41 @@
          this.dialogShowYgdg = false
          break
        case 2:
          this.$post('hr/empBaseInfo', { ...this.ygdgForm }).then(() => {
            this.dialogShowYgdg = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
          this.$refs[formName].validate((valid) => {
            if (valid) {
              this.$post('hr/empBaseInfo/jobChange', { ...this.ygdgForm }).then(() => {
                this.dialogShowYgdg = false
                this.$message({
                  message: this.$t('员工调岗成功'),
                  type: 'success'
                })
                this.fetch({
                  ...this.queryParams,
                  ...this.sort
                })
              })
            }
          })
          break
      }
    },
    querySearch(queryString, cb) {
      var restaurants = this.restaurants
      var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants
      // 调用 callback 返回建议列表的数据
      cb(results)
    },
    createFilter(queryString) {
      return (restaurant) => {
        return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
      }
    },
    placeNameSelect(item) {
      this.empBaseInfoForm.nativePlaceName = item.value
      this.empBaseInfoForm.nativePlace = item.code
    },
    deptNameSelect(node) {
      this.ygdgForm.newDeptName = node.label
    },
    querySearchJob(queryString, cb) {
      const restaurants = this.restaurJob
@@ -1677,8 +2063,20 @@
      cb(results)
    },
    jobNameSelect(item) {
      this.ygdgForm.jobName = item.value
      this.ygdgForm.JobId = item.code
      this.empBaseInfoForm.jobName = item.value
      this.empBaseInfoForm.JobId = item.code
      this.ygdgForm.newJobName = item.value
      this.ygdgForm.jobId = item.code
    },
    generateUserInfo(index, val) {
      var userinfo = toCardGetUserInfo(val)
      if (userinfo === null) {
        return
      }
      this.empBaseInfoForm.age = userinfo.age
      this.empBaseInfoForm.birthdate = userinfo.birth
      this.empBaseInfoForm.sex = userinfo.sex
    },
    showDryg(operate) {
      switch (operate) {
@@ -1693,7 +2091,35 @@
          break
      }
    },
    showGbda(operate) {
    validSelfLeaveDay(rule, value, callback) {
      const type = this.gbdaForm.dimissionType
      if (type === 2) {
        if (!value) {
          callback(new Error('自动离职时自离天数不能为空!'))
        } else {
          callback()
        }
      } else {
        callback()
      }
    },
    validReporter(rule, value, callback) {
      const type = this.gbdaForm.dimissionType
      if (type === 2) {
        if (!value) {
          callback(new Error('自动离职时报告人不能为空!'))
        } else {
          if (value.length > 32) {
            callback(new Error('自动离职时报告人最多32个字符!'))
          } else {
            callback()
          }
        }
      } else {
        callback()
      }
    },
    showGbda(operate, formName) {
      switch (operate) {
        case 0:
          var selection = this.$refs.multipleTable.store.states.selection
@@ -1703,16 +2129,26 @@
              type: 'error'
            })
          } else {
            var empIds = []
            var ids = []
            var names = []
            var dates = []
            for (var i = 0; i < selection.length; i++) {
              var data = selection[i]
              empIds.push(data.empId)
              ids.push(data.empId)
              names.push(data.empName)
              dates.push(data.entryDate)
            }
            const nowDate = new Date()
            const year = nowDate.getFullYear()
            const month = nowDate.getMonth() + 1
            const day = nowDate.getDate()
            this.gbdaForm = {
              dgryIds: empIds.join(','),
              dgryNames: names.join(',')
              empIds: ids.join(','),
              dgryNames: names.join(','),
              entryDates: dates.join(','),
              dimissionType: '1',
              dimissionDate: year + '-' + month + '-' + day,
              remark: ''
            }
            this.dialogShowGbda = true
          }
@@ -1721,12 +2157,20 @@
          this.dialogShowGbda = false
          break
        case 2:
          this.$post('hr/empBaseInfo', { ...this.gbdaForm }).then(() => {
            this.dialogShowGbda = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
          this.$refs[formName].validate((valid) => {
            if (valid) {
              this.$post('hr/empBaseInfo/dimission', { ...this.gbdaForm }).then(() => {
                this.dialogShowGbda = false
                this.$message({
                  message: this.$t('员工档案关闭成功'),
                  type: 'success'
                })
                this.fetch({
                  ...this.queryParams,
                  ...this.sort
                })
              })
            }
          })
          break
      }
@@ -1747,92 +2191,116 @@
          message: '已取消'
        })
      })
    },
    downloadExcel() {
      debugger
      this.$download('../../assets/excel/员工信息.xls', { }, '在职员工列表.xls').then(() => {
        this.$message({
          message: '下载成功!',
          type: 'success'
        })
      })
    },
    headers() {
      const token = getToken()
      if (token) {
        return {
          Authorization: 'bearer ' + token
        }
      } else {
        return null
      }
    }
  }
}
</script>
<style lang="scss" scoped>
  .el-main {
    height: 600px;
  }
  .el-autocomplete {
    width: 100%;
  }
  .el-select {
    width: 100%;
  }
  .el-aside {
    padding: 20px;
    background: #f3f5f8;
    height: 600px;
.el-main {
  height: 600px;
}
    .el-tree {
      height: 100%;
    }
  }
.el-autocomplete {
  width: 100%;
}
  #searchTable {
    margin-top: 10px;
    border-collapse: collapse;
    width: 100%;
  }
.el-select {
  width: 100%;
}
  #searchTable td,
  #searchTable th {
    border: 1px solid #cad9ea;
    color: #666;
    height: 30px;
  }
.el-aside {
  padding: 20px;
  background: #f3f5f8;
  height: 600px;
  #ygxq table {
    border-collapse: collapse;
    margin: 0 auto;
    text-align: center;
    width: 100%;
    margin-top: 20px;
  .el-tree {
    height: 100%;
  }
}
  #ygxq table td,
  #ygxq table th {
    border: 1px solid #DDDCDC;
    color: #666;
    height: 30px;
  }
#searchTable {
  margin-top: 10px;
  border-collapse: collapse;
  width: 100%;
}
  #ygxq table thead th {
    background-color: #CCE8EB;
    width: 100px;
  }
#searchTable td,
#searchTable th {
  border: 1px solid #cad9ea;
  color: #666;
  height: 30px;
}
  #ygxq table tr:nth-child(odd) {
    background: #fff;
  }
#ygxq table {
  border-collapse: collapse;
  margin: 0 auto;
  text-align: center;
  width: 100%;
  margin-top: 20px;
}
  #ygxq table tr:nth-child(even) {
    background: #F5FAFA;
  }
#ygxq table td,
#ygxq table th {
  border: 1px solid #DDDCDC;
  color: #666;
  height: 30px;
}
  .tdTitle {
    font-size: 14px;
    font-weight: 700;
    text-align: left;
  }
#ygxq table thead th {
  background-color: #CCE8EB;
  width: 100px;
}
  .link_button {
    color: #169BD5;
  }
#ygxq table tr:nth-child(odd) {
  background: #fff;
}
  .del_button {
    color: #D9001B;
  }
#ygxq table tr:nth-child(even) {
  background: #F5FAFA;
}
  #dcygTable{
    border-collapse: collapse;
  }
  #dcygTable td{
    width: 130px;
    text-align: center;
    border: 1px solid darkgray;
    height: 30px;
  }
.tdTitle {
  font-size: 14px;
  font-weight: 700;
  text-align: left;
}
.link_button {
  color: #169BD5;
}
.del_button {
  color: #D9001B;
}
#dcygTable {
  border-collapse: collapse;
}
#dcygTable td {
  width: 130px;
  text-align: center;
  border: 1px solid darkgray;
  height: 30px;
  font-size:15px;
}
</style>
src/views/user/outemployess.vue
@@ -14,32 +14,52 @@
        </el-row>
        <el-row>
          <el-col :span="3">员工编号:
            <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
          </el-col>
          <el-col :span="3">姓名:
            <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
          </el-col>
          <el-col :span="3">身份证号:
            <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
          <el-col :span="4">身份证号:
            <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
          </el-col>
          <el-col :span="3">护卫点:
            <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
          </el-col>
          <el-col :span="2.5">入职日期:从
            <el-input v-model="queryParams.entryDateBegin" placeholder="请输入内容" style="width:80px" />
          <el-col :span="8">入职日期:
            <el-date-picker
              v-model="queryParams.entryDateStr"
              size="small"
              type="daterange"
              align="right"
              unlink-panels
              range-separator="至"
              value-format="yyyy-MM-dd"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions"
              style="width: 400px;"
            />
          </el-col>
          <el-col :span="1.5">到
            <el-input v-model="queryParams.entryDateEnd" placeholder="请输入内容" style="width:80px" />
          </el-col>
          <el-col :span="2.5">离职日期:从
            <el-input v-model="queryParams.attendMonthStart" placeholder="请输入内容" style="width:80px" />
          </el-col>
          <el-col :span="1.5">到
            <el-input v-model="queryParams.attendMonthEnd" placeholder="请输入内容" style="width:80px" />
        </el-row>
        <el-row>
          <el-col :span="8">离职日期:
            <el-date-picker
              v-model="queryParams.dimissionDateStr"
              size="small"
              type="daterange"
              align="right"
              unlink-panels
              range-separator="至"
              value-format="yyyy-MM-dd"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions"
              style="width: 400px;"
            />
          </el-col>
          <el-col :span="3">
            <el-button type="primary">查询</el-button>
            <el-button type="danger">重置</el-button>
            <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
            <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
          </el-col>
        </el-row>
        <div v-show="advancedQueryShow">
@@ -50,83 +70,98 @@
                  <tr>
                    <td>性别:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">男性</el-radio>
                        <el-radio :label="9">女性</el-radio>
                      <el-radio-group v-model="queryParams.sex">
                        <el-radio label="">全部</el-radio>
                        <el-radio label="1">男性</el-radio>
                        <el-radio label="2">女性</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>最高学历:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">初中</el-radio>
                        <el-radio :label="9">高中</el-radio>
                        <el-radio :label="9">大专</el-radio>
                        <el-radio :label="9">本科</el-radio>
                        <el-radio :label="9">硕士</el-radio>
                        <el-radio :label="9">博士</el-radio>
                      <el-radio-group v-model="queryParams.education">
                        <el-radio label="">全部</el-radio>
                        <el-radio label="91">无学历</el-radio>
                        <el-radio label="81">小学</el-radio>
                        <el-radio label="71">初中</el-radio>
                        <el-radio label="61">高中</el-radio>
                        <el-radio label="42">中技</el-radio>
                        <el-radio label="41">中专</el-radio>
                        <el-radio label="31">大学专科</el-radio>
                        <el-radio label="21">大学本科</el-radio>
                        <el-radio label="11">硕士</el-radio>
                        <el-radio label="10">博士</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>政治面貌:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">党员</el-radio>
                        <el-radio :label="9">团员</el-radio>
                        <el-radio :label="9">群众</el-radio>
                      <el-radio-group v-model="queryParams.politics">
                        <el-radio label="">全部</el-radio>
                        <el-radio label="01">中共党员</el-radio>
                        <el-radio label="02">预备党员</el-radio>
                        <el-radio label="03">共青团员</el-radio>
                        <el-radio label="04">民革会员</el-radio>
                        <el-radio label="05">民盟盟员</el-radio>
                        <el-radio label="06">民建会员</el-radio>
                        <el-radio label="07">民进会员</el-radio>
                        <el-radio label="08">农工党员</el-radio>
                        <el-radio label="09">致公党员</el-radio>
                        <el-radio label="10">九三社员</el-radio>
                        <el-radio label="11">台盟盟员</el-radio>
                        <el-radio label="12">民主人士</el-radio>
                        <el-radio label="13">群众</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>年龄:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">18-29</el-radio>
                        <el-radio :label="9">30-39</el-radio>
                        <el-radio :label="9">40-49</el-radio>
                        <el-radio :label="9">50-59</el-radio>
                        <el-radio :label="9">60-69</el-radio>
                        <el-radio :label="9">69及以上</el-radio>
                      <el-radio-group v-model="queryParams.ageStr">
                        <el-radio label="">全部</el-radio>
                        <el-radio label="18-29">18-29</el-radio>
                        <el-radio label="30-39">30-39</el-radio>
                        <el-radio label="40-49">40-49</el-radio>
                        <el-radio label="50-59">50-59</el-radio>
                        <el-radio label="60-69">60-69</el-radio>
                        <el-radio label="69-999">69及以上</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>档案情况:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">已移交</el-radio>
                        <el-radio :label="9">未移交</el-radio>
                      <el-radio-group v-model="queryParams.archivesStatus">
                        <el-radio label="">全部</el-radio>
                        <el-radio label="0">已移交</el-radio>
                        <el-radio label="1">未移交</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>保险类型:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">深户(五险一档)</el-radio>
                        <el-radio :label="6">非深户(五险一档)</el-radio>
                        <el-radio :label="6">非深户(五险二档)</el-radio>
                        <el-radio :label="6">非深户(五险三档)</el-radio>
                        <el-radio :label="6">非深户(四险三档)</el-radio>
                      <el-radio-group v-model="queryParams.insuranceType">
                        <el-radio label="">全部</el-radio>
                        <el-radio :label="1">深户(五险一档)</el-radio>
                        <el-radio :label="2">非深户(五险一档)</el-radio>
                        <el-radio :label="3">非深户(五险二档)</el-radio>
                        <el-radio :label="4">非深户(五险三档)</el-radio>
                        <el-radio :label="5">非深户(四险三档)</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
                  <tr>
                    <td>员工状态:</td>
                    <td>
                      <el-radio-group v-model="radio">
                        <el-radio :label="3">全部</el-radio>
                        <el-radio :label="6">正常离职</el-radio>
                        <el-radio :label="6">自离</el-radio>
                        <el-radio :label="6">公司辞退</el-radio>
                      <el-radio-group v-model="queryParams.empStatus">
                        <el-radio label="">全部</el-radio>
                        <el-radio :label="1">在职</el-radio>
                        <el-radio :label="2">正常离职</el-radio>
                        <el-radio :label="3">自动离职</el-radio>
                        <el-radio :label="4">公司辞退</el-radio>
                      </el-radio-group>
                    </td>
                  </tr>
@@ -901,13 +936,15 @@
  data() {
    return {
      total: 0, // 总数量
      queryParams: {}, // 查询参数
      queryParams: {
        empNumb: ''
      }, // 查询参数
      sort: {}, // 排序
      pagination: { // 分页参数
        size: 5,
        num: 1
      },
      headerHeight: '70px',
      headerHeight: '100px',
      advancedQueryShow: false,
      dialogTableVisible: false,
      dialogShowDkda: false,
@@ -921,6 +958,12 @@
    this.fetch()
  },
  methods: {
    resetSearch() {
      this.queryParams = {
        empNumb: ''
      }
      this.search()
    },
    // 翻页方法
    search() {
      this.queryParams.empName = this.queryParams.empNumb
@@ -934,7 +977,8 @@
      var that = this
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      params.delFlag = 1
      params.delFlag = 0
      params.empStatus = 1
      this.$get('hr/empBaseInfo/list', {
        ...params
      }).then((r) => {
@@ -955,10 +999,10 @@
    },
    advancedQueryShowMethods() {
      if (this.advancedQueryShow) {
        this.headerHeight = '70px'
        this.headerHeight = '100px'
        this.advancedQueryShow = false
      } else {
        this.headerHeight = '300px'
        this.headerHeight = '330px'
        this.advancedQueryShow = true
      }
    },
@@ -1066,9 +1110,6 @@
    background: #f3f5f8;
    height: 600px;
    .el-tree {
      height: 100%;
    }
  }
  #searchTable {
src/views/user/search.vue
@@ -62,7 +62,7 @@
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="8">入职日期:
            <el-col :span="9">入职日期:
              <el-date-picker
                v-model="queryParams.entryDateStr"
                size="small"
@@ -79,7 +79,7 @@
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">离职日期:
            <el-col :span="9">离职日期:
              <el-date-picker
                v-model="queryParams.dimissionDateStr"
                size="small"
@@ -631,27 +631,36 @@
        <div v-show="showArr[6].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">辞职申请日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">辞职申请日期:
              <el-date-picker
                v-model="queryParams.applayDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <el-table ref="resignTable" :data="resignData" style="width: 100%;height: 70%;">
@@ -675,27 +684,36 @@
        <div v-show="showArr[7].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3.5">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">失业金领取日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">失业金领取日期:
              <el-date-picker
                v-model="queryParams.applayDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <el-table ref="unemploymentTable" :data="unemploymentData" style="width: 100%;height: 70%;">
@@ -720,50 +738,59 @@
        <div v-show="showArr[8].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">入职日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">入职日期:
              <el-date-picker
                v-model="queryParams.applayDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <table class="searchTable">
            <tr>
              <td>社保档位:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.insuranceGaers">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">深户(五险一档)</el-radio>
                  <el-radio :label="6">非深户(五险一档)</el-radio>
                  <el-radio :label="6">非深户(五险二档)</el-radio>
                  <el-radio :label="6">非深户(五险三档)</el-radio>
                  <el-radio :label="6">非深户(四险三档)</el-radio>
                  <el-radio :label="1">深户(五险一档)</el-radio>
                  <el-radio :label="2">非深户(五险一档)</el-radio>
                  <el-radio :label="3">非深户(五险二档)</el-radio>
                  <el-radio :label="4">非深户(五险三档)</el-radio>
                  <el-radio :label="5">非深户(四险三档)</el-radio>
                </el-radio-group>
              </td>
            </tr>
            <tr>
              <td>是否已报告:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.reportStatus">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">已报告</el-radio>
                  <el-radio :label="6">未报告</el-radio>
                  <el-radio :label="0">已报告</el-radio>
                  <el-radio :label="1">未报告</el-radio>
                </el-radio-group>
              </td>
            </tr>
@@ -804,53 +831,71 @@
        <div v-show="showArr[9].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">受伤日期:
              <el-date-picker
                v-model="queryParams.injuredTimeStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">受伤日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">人事处理时间:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="9">人事处理时间:
              <el-date-picker
                v-model="queryParams.hrDoDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <table class="searchTable">
            <tr>
              <td>是否住院:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.hospitalizatioFlag">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">是</el-radio>
                  <el-radio :label="6">否</el-radio>
                  <el-radio :label="1">是</el-radio>
                  <el-radio :label="0">否</el-radio>
                </el-radio-group>
              </td>
            </tr>
            <tr>
              <td>案结状态:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.settleStatus">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">已结案</el-radio>
                  <el-radio :label="6">未结案</el-radio>
                  <el-radio :label="1">已结案</el-radio>
                  <el-radio :label="0">未结案</el-radio>
                </el-radio-group>
              </td>
            </tr>
@@ -898,53 +943,71 @@
        <div v-show="showArr[10].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">受伤日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">人事处理时间:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="9">受伤日期:
              <el-date-picker
                v-model="queryParams.injuredTimeStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="9">人事处理时间:
              <el-date-picker
                v-model="queryParams.hrDoDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <table class="searchTable">
            <tr>
              <td>是否住院:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.hospitalizatioFlag">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">是</el-radio>
                  <el-radio :label="6">否</el-radio>
                  <el-radio :label="1">是</el-radio>
                  <el-radio :label="0">否</el-radio>
                </el-radio-group>
              </td>
            </tr>
            <tr>
              <td>案结状态:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.settleStatus">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">已结案</el-radio>
                  <el-radio :label="6">未结案</el-radio>
                  <el-radio :label="1">已结案</el-radio>
                  <el-radio :label="0">未结案</el-radio>
                </el-radio-group>
              </td>
            </tr>
@@ -992,53 +1055,71 @@
        <div v-show="showArr[11].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">仲裁日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="2.5">案结日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">仲裁日期:
              <el-date-picker
                v-model="queryParams.arbitrationDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="9">案结日期:
              <el-date-picker
                v-model="queryParams.settleDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="4">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <table class="searchTable">
            <tr>
              <td>仲裁类型:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.arbitrationType">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">劳资纠纷</el-radio>
                  <el-radio :label="6">劳资纠纷</el-radio>
                  <el-radio :label="0">劳资纠纷</el-radio>
                  <el-radio :label="1">劳资纠纷</el-radio>
                </el-radio-group>
              </td>
            </tr>
            <tr>
              <td>案结状态:</td>
              <td>仲裁状态:</td>
              <td>
                <el-radio-group v-model="radio">
                <el-radio-group v-model="queryParams.arbitrationStatus">
                  <el-radio label="">全部</el-radio>
                  <el-radio :label="6">已结案</el-radio>
                  <el-radio :label="6">未结案</el-radio>
                  <el-radio :label="1">已结案</el-radio>
                  <el-radio :label="0">未结案</el-radio>
                </el-radio-group>
              </td>
            </tr>
@@ -1081,27 +1162,36 @@
        <div v-show="showArr[12].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3.5">失业金领取日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">不良记录日期:
              <el-date-picker
                v-model="queryParams.badDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="3.5">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <el-table ref="badRecordTable" :data="badRecordData" style="width: 100%;height: 70%;">
@@ -1126,27 +1216,36 @@
        <div v-show="showArr[13].show">
          <el-row>
            <el-col :span="4">员工编号:
              <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="4">部门(护卫点):
              <el-input v-model="queryParams.deptName" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="3.5">备注日期:从
              <el-input v-model="queryParams.applayDateDateStart" placeholder="请输入内容" style="width:80px" />
            </el-col>
            <el-col :span="1.5">到
              <el-input v-model="queryParams.applayDateDateEnd" placeholder="请输入内容" style="width:80px" />
            <el-col :span="3">员工编号:
              <el-input v-model="queryParams.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryParams.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryParams.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryParams.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="9">备注日期:
              <el-date-picker
                v-model="queryParams.remarkDateStr"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                style="width: 400px;"
              />
            </el-col>
            <el-col :span="3.5">
              <el-button type="primary">查询</el-button>
              <el-button type="danger">重置</el-button>
              <el-button size="mini" class="hr-but-all" type="primary" @click="search">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetSearch">重置</el-button>
            </el-col>
          </el-row>
          <el-table ref="remarkInfoTable" :data="remarkInfoData" style="width: 100%;height: 70%;">
src/views/user/selectuser.vue
@@ -1,139 +1,142 @@
<template>
  <div id="mainDiv">
    <el-header :height="headerHeight">
      <el-row>
<template>
  <div id="mainDiv">
    <el-header :height="headerHeight">
      <el-row>
        <el-col :span="8">
          <el-input v-model="queryParams.empNumb" placeholder="请输入内容" style="width:200px" />
          <el-button type="primary" @click="search">查询</el-button>
        </el-col>
      </el-row>
    </el-header>
    <el-main>
        </el-col>
      </el-row>
    </el-header>
    <el-main>
      <el-table
        ref="multipleTable"
        :data="list"
        row-key="prop1"
        width="50%"
        @selection-change="handleSelectionChange"
        @selection-change="handleSelectionChange"
        @row-dblclick="rowDblclick"
      >
        <el-table-column type="selection" :reserve-selection="false" width="55" />
        <el-table-column v-if="show" prop="empId" label="员工Id" />
        <el-table-column prop="empNumb" label="员工编号" />
        <el-table-column prop="empName" label="姓名" />
        <el-table-column prop="certificateNumb" label="身份证号码" width="180" />
        <el-table-column v-if="show" prop="deptId" label="部门Id" />
        <el-table-column prop="deptName" label="护卫点" />
        <el-table-column v-if="show" prop="jobId" label="岗位Id" />
        <el-table-column prop="jobName" label="岗位" />
        <el-table-column prop="empTypeName" label="员工类别" />
        <el-table-column prop="sexName" label="性别" width="50" />
      </el-table>
      <!--
          page.sync 当前页
          limit.sync 每页显示数量 只能是5,10,20,30,50
          pagination 翻页的事件
           -->
      >
        <el-table-column type="selection" :reserve-selection="false" width="55" />
        <el-table-column v-if="show" prop="empId" label="员工Id" />
        <el-table-column prop="empNumb" label="员工编号" />
        <el-table-column prop="empName" label="姓名" />
        <el-table-column prop="certificateNumb" label="身份证号码" width="180" />
        <el-table-column v-if="show" prop="deptId" label="部门Id" />
        <el-table-column prop="deptName" label="护卫点" />
        <el-table-column v-if="show" prop="jobId" label="岗位Id" />
        <el-table-column prop="jobName" label="岗位" />
        <el-table-column prop="empTypeName" label="员工类别" />
        <el-table-column prop="sexName" label="性别" width="50" />
      </el-table>
      <!--
          page.sync 当前页
          limit.sync 每页显示数量 只能是5,10,20,30,50
          pagination 翻页的事件
           -->
      <pagination
        v-show="total>0"
        :total="total"
        :page.sync="pagination.num"
        :limit.sync="pagination.size"
        :limit.sync="pagination.size"
        @pagination="search"
      />
      <el-button type="primary" @click="sureChoose">确定</el-button>
      <el-button type="danger" @click="cancleChoose">取消</el-button>
    </el-main>
  </div>
</template>
<script>
// 引用翻页组件
import Pagination from '@/components/Pagination'
export default {
  components: {
    Pagination
  },
  props: {
    multipleselect: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      show: false,
      headerHeight: '70px',
      deptTree: [],
      selection: [],
      multipleSelection: [],
      total: 0, // 总数量
      queryParams: {}, // 查询参数
      sort: {}, // 排序
      pagination: { // 分页参数
        size: 5,
        num: 1
      },
      list: [], // 给table显示的数据
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    }
  },
  mounted() {
    this.search()
  },
  methods: {
    // 翻页方法
      />
      <el-button type="primary" @click="sureChoose">确定</el-button>
      <el-button type="danger" @click="cancleChoose">取消</el-button>
    </el-main>
  </div>
</template>
<script>
// 引用翻页组件
import Pagination from '@/components/Pagination'
export default {
  components: {
    Pagination
  },
  props: {
    multipleselect: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      show: false,
      headerHeight: '70px',
      deptTree: [],
      selection: [],
      multipleSelection: [],
      total: 0, // 总数量
      queryParams: {
        empNumb: ''
      }, // 查询参数
      sort: {}, // 排序
      pagination: { // 分页参数
        size: 20,
        num: 1
      },
      list: [], // 给table显示的数据
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    }
  },
  mounted() {
    this.search()
  },
  methods: {
    // 翻页方法
    search() {
      this.queryParams.empName = this.queryParams.empNumb
      this.queryParams.deptName = this.queryParams.empNumb
      this.fetch({
        ...this.queryParams,
        ...this.sort
      })
    },
    fetch(params = {}) {
      var that = this
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      this.$get('hr/empBaseInfo/list', {
        ...params
      }).then((r) => {
        const data = r.data.data
        that.total = data.total
        that.list = data.rows
      })
    },
      this.queryParams.deptName = this.queryParams.empNumb
      this.queryParams.delFlag = 0
      this.fetch({
        ...this.queryParams,
        ...this.sort
      })
    },
    fetch(params = {}) {
      var that = this
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      this.$get('hr/empBaseInfo/list', {
        ...params
      }).then((r) => {
        const data = r.data.data
        that.total = data.total
        that.list = data.rows
      })
    },
    handleSelectionChange(selection) {
      if (!this.multipleselect) {
        if (selection.length > 1) {
          this.$refs.multipleTable.clearSelection()
          this.$refs.multipleTable.toggleRowSelection(selection.pop())
        }
      }
      this.multipleSelection = selection
    },
    sureChoose() {
      this.$emit('selectedUser', this.multipleSelection)
      this.$refs.multipleTable.clearSelection()
    },
    cancleChoose() {
      this.$emit('cancleChooseUser')
      this.$refs.multipleTable.clearSelection()
    },
    rowDblclick(row, column, event) {
      this.$refs.multipleTable.toggleRowSelection(row, true)
    }
  }
}
</script>
<style lang="scss" scoped>
  .link_button {
    color: #169BD5;
  }
  .del_button {
    color: #D9001B;
  }
      if (!this.multipleselect) {
        if (selection.length > 1) {
          this.$refs.multipleTable.clearSelection()
          this.$refs.multipleTable.toggleRowSelection(selection.pop())
        }
      }
      this.multipleSelection = selection
    },
    sureChoose() {
      this.$emit('selectedUser', this.multipleSelection)
      this.$refs.multipleTable.clearSelection()
    },
    cancleChoose() {
      this.$emit('cancleChooseUser')
      this.$refs.multipleTable.clearSelection()
    },
    rowDblclick(row, column, event) {
      this.$refs.multipleTable.toggleRowSelection(row, true)
    }
  }
}
</script>
<style lang="scss" scoped>
  .link_button {
    color: #169BD5;
  }
  .del_button {
    color: #D9001B;
  }
</style>
src/views/yunpan/fujian.vue
@@ -146,22 +146,123 @@
        </el-form>
        <el-row style="margin: 10px;">
          <el-col :span="24">
            <el-button class="hr-but-all" type="danger">新建标签</el-button>
            <el-button type="primary">删除标签</el-button>
            <el-popconfirm title="是否删除所选择的附件?">
              <el-button slot="reference" class="hr-but-all" type="danger" @click="delfj()">删除附件</el-button>
            <el-button class="hr-but-all" type="danger" @click="dialogFormVisible = true">新建标签</el-button>
            <el-popconfirm title="是否删除标签?" @onConfirm="deldialogFormVisible = true">
              <el-button slot="reference" class="hr-but" type="danger">删除标签</el-button>
            </el-popconfirm>
            <el-button class="hr-but-all" type="danger" @click="downloadfj()">下载附件</el-button>
            <el-button class="hr-but-all" type="danger" @click="dialogShow()">附件管理</el-button>
            <el-dialog title="附件管理" :visible.sync="dialogShowUploadfj" :fullscreen="true">
              <uploadfj @cancleChooseUser="cancleChooseUser()" />
            <el-button class="hr-but-all" type="danger" @click="downloaddialogFormVisible = true">下载附件</el-button>
            <el-dialog
              title="新建标签"
              :visible.sync="dialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="labelform" :model="labelform" :rules="rules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelname"
                >
                  <el-input v-model="labelform.labelname" autocomplete="off" />
                </el-form-item>
                <el-form-item
                  label="标签code:"
                  :label-width="formLabelWidth"
                  prop="labelcode"
                >
                  <el-input v-model="labelform.labelcode" autocomplete="off" />
                </el-form-item>
                <el-form-item label="标签排序:" :label-width="formLabelWidth" prop="sort">
                  <el-input-number
                    v-model="labelform.sort"
                    :min="0"
                    :max="100"
                    label="排序"
                  />
                </el-form-item></el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="dialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="addlabel('labelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="删除标签"
              :visible.sync="deldialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="deldialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="dellabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="下载附件"
              :visible.sync="downloaddialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      key="-1"
                      value="-1"
                      label="全部"
                    />
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="downloaddialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="downloadlabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
          </el-col>
        </el-row>
      </el-header>
      <el-dialog title="附件管理" :visible.sync="dialogShowUploadfj" :fullscreen="true">
        <uploadfj v-if="dialogShowUploadfj" :rowitem="rowitem" @cancleChooseUser="cancleChooseUser()" />
      </el-dialog>
      <el-container>
        <el-main>
          <el-table :data="tableData" class="fj-table" style="width: 100%;height: 480px;color: #000;">
          <el-table ref="empAccessoryTable" :data="tableData" class="fj-table" style="width: 100%;height: 480px;color: #000;">
            <el-table-column
              type="selection"
              width="55"
@@ -171,7 +272,7 @@
                <el-button
                  type="text"
                  size="small"
                  @click.native.prevent="deleteRow(scope.$index, tableData)"
                  @click.native.prevent="dialogShow(scope.$index, scope.row)"
                >
                  上传
                </el-button>
@@ -181,112 +282,15 @@
            <el-table-column prop="certificateNumb" label="身份证号" width="180" />
            <el-table-column prop="deptName" label="护卫点(部门)" width="180" />
            <el-table-column prop="jobName" label="岗位" width="100" />
            <el-table-column prop="jljt" label="记录截图">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.jljt }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="zp" label="照片">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.zp }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="ldht" label="劳动合同">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.ldht }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="sfz" label="身份证">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.sfz }}</el-link>
              </template>
            </el-table-column>
            <template v-for="(col) in labelData">
              <el-table-column :key="col.labelid" :prop="col.labelcode" :label="col.labelname">
                <template slot-scope="scope">
                  <el-link type="primary"> {{ scope.row[col.labelcode] }}</el-link>
                </template>
              </el-table-column>
            </template>
            <el-table-column prop="rzb" label="入职表">
              <template slot-scope="scope">
                <el-link type="primary">
                  {{ scope.row.rzb }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="tjb" label="体检表">
              <template slot-scope="scope">
                <el-link type="primary">
                  {{ scope.row.tjb }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="hz" label="回执">
              <template slot-scope="scope">
                <el-link type="primary">
                  {{ scope.row.hz }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="yhk" label="银行卡">
              <template slot-scope="scope">
                <el-link type="primary">
                  {{ scope.row.yhk }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="xgzj" label="相关证件">
              <template slot-scope="scope">
                <el-link type="primary">
                  {{ scope.row.xgzj }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="xght" label="相关合同">
              <template slot-scope="scope">
                <el-link type="primary">{{ scope.row.xght }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="qj" label="请假">
              <template slot-scope="scope">
                <el-link type="primary">{{ scope.row.qj }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="cf" label="处罚">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.cf }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="czsq" label="辞职申请">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.czsq }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="lzsx" label="离职手续">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.lzsx }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="zl" label="自离">
              <template slot-scope="scope">
                <el-link type="primary">   {{ scope.row.zl }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="sb" label="社保">
              <template slot-scope="scope">
                <el-link type="primary">{{ scope.row.sb }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="syj" label="失业金">
              <template slot-scope="scope">
                <el-link type="primary">  {{ scope.row.syj }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="ywx" label="意外险">
              <template slot-scope="scope">
                <el-link type="primary">{{ scope.row.ywx }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="gs" label="工伤">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.gs }}</el-link>
              </template>
            </el-table-column>
            <el-table-column prop="lz" label="劳资">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row.lz }}</el-link>
              </template>
            </el-table-column></el-table>
          </el-table>
          <pagination
            v-show="total>0"
            :total="total"
@@ -308,6 +312,31 @@
  },
  data() {
    return {
      downloaddialogFormVisible: false,
      deldialogFormVisible: false,
      formLabelWidth: '100px',
      dialogFormVisible: false,
      labelform: {
        labelname: '',
        labelid: '',
        labelcode: '',
        empIds: '',
        sort: 0
      },
      rules: {
        labelname: [
          { required: true, message: '请输入标签名称', trigger: 'blur' },
          { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
        ],
        labelcode: [
          { required: true, message: '请输入标签code', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 20 个字符', trigger: 'blur' }
        ],
        sort: [{ required: true, message: '请输入排序', type: 'number', trigger: 'blur' }]
      },
      delrules: {
        labelid: [{ required: true, message: '请选择标签', trigger: 'change' }]
      },
      dialogShowUploadfj: false,
      empName: '',
      queryform: {
@@ -363,23 +392,83 @@
        ]
      },
      tableData: [],
      labelData: [],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
      },
      rowitem: {}
    }
  },
  mounted() {
    this.initLabel()
    this.fetch()
  },
  methods: {
    delfj() {
    downloadlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          var selected = this.$refs.empAccessoryTable.selection
          if (selected.length < 1) {
            this.$message({
              message: '请选择数据!',
              type: 'warning'
            })
            return
          }
          const empIds = []
          selected.forEach((j) => {
            empIds.push(j.empId)
          })
          this.labelform.empIds = empIds
          this.$download('hr/empAccessory/singledownload', { ...this.labelform }, '附件_' + new Date().getTime() + '.zip').then(() => {
            this.downloaddialogFormVisible = false
            this.$message({
              message: this.$t('下载成功'),
              type: 'success'
            })
          })
        }
      })
    },
    downloadfj() {
    dellabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$delete('hr/label', { ...this.labelform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.deleteSuccess'),
              type: 'success'
            })
            this.deldialogFormVisible = false
            // 初始加载
            this.initLabel()
            this.fetch()
          })
        }
      })
    },
    dialogShow() {
    addlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$post('hr/label', { ...this.labelform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
            this.labelform.labelname = ''
            this.labelform.sort = 0
            this.labelform.labelcode = ''
            // 初始加载
            this.initLabel()
            this.fetch()
          })
        }
      })
    },
    dialogShow(index, tableData) {
      this.rowitem = tableData
      this.dialogShowUploadfj = true
    },
    cancleChooseUser() {
@@ -434,6 +523,11 @@
        this.tableData = data.rows
      })
    },
    initLabel() {
      this.$get('hr/label').then((r) => {
        this.labelData = r.data.data
      })
    },
    advancedQueryShowMethods() {
      if (this.advancedQueryShow) {
        this.headerHeight = '70px'
@@ -445,9 +539,6 @@
    },
    showEmpInfo() {
      this.dialogTableVisible = true
    },
    deleteRow(index, rows) {
      rows.splice(index, 1)
    }
  }
}
@@ -457,8 +548,14 @@
    margin-top: 10px;
    height: 600px;
}
.el-input-number {
    width: 100%;
}
</style>
<style lang="scss">
.add-lable {
    text-align: initial;
}
.input-empName .el-input-group__append{
      padding: 0 15px 0 0;
}
src/views/yunpan/uploadfj.vue
@@ -1,7 +1,25 @@
<template>
  <div class="zs-main">
    <el-row class="search-title">
      <el-col :span="18" class="title">
        <div class="zs-title">上传附件</div>
      </el-col>
      <el-col :span="6" class="search">
        <el-input
          v-model="fileName"
          maxlength="20"
          minlength="1"
          clearable
          placeholder="请输入文件名"
          show-word-limit
          style="width:200px"
        />
        <el-button type="primary" @click="findFileByFileName()">查询</el-button>
      </el-col>
    </el-row>
    <el-container style="background-color: #fff;">
      <el-aside width="210px" style="background-color: #fff;text-align: center;">
        <h4>{{ rowitem.empName }}:{{ rowitem.deptName }}</h4>
        <el-timeline>
          <el-timeline-item
            v-for="(activity, index) in activities"
@@ -49,9 +67,43 @@
                size="mini"
                @click="delFile()"
              >删除</el-button>
              <el-popconfirm title="是否移动附件?" @onConfirm="mvdialogFormVisible = true">
                <el-button slot="reference" class="hr-but" type="danger">移动</el-button>
              </el-popconfirm>
            </el-col>
          </el-row>
        </el-header>
        <el-dialog
          title="移动文件"
          :visible.sync="mvdialogFormVisible"
          width="25%"
          class="add-label"
          append-to-body
        >
          <el-form ref="mvlabelfrom" :model="labelfrom" :rules="mvrules">
            <el-form-item
              label="目录名称:"
              :label-width="formLabelWidth"
              prop="labelid"
            >
              <el-select v-model="labelfrom.labelid" placeholder="请选择移动的标签">
                <el-option
                  v-for="item in activities"
                  :key="item.id"
                  :value="item.id"
                  :label="item.timestamp"
                />
              </el-select>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="mvdialogFormVisible = false">取 消</el-button>
            <el-button
              type="primary"
              @click="mvlabel('mvlabelfrom')"
            >确 定</el-button>
          </div>
        </el-dialog>
        <el-main style="background-color: #fff;">
          <el-row v-for="(data, index) in filesUploadData" :key="index">
            <template v-for="(node, nodeIndex) in data.node">
@@ -73,7 +125,7 @@
                <el-card shadow="never">
                  <el-upload
                    class="avatar-uploader"
                    :action="filesUploadUrl"
                    :action="uploadSinglePath"
                    :show-file-list="false"
                    :before-upload="beforeAvatarUpload"
                    :headers="headers()"
@@ -101,78 +153,70 @@
import { pages } from '@/settings'
export default {
  props: {
    rowitem: {
      type: Object,
      required: true
    }
  },
  data() {
    return {
      filesUploadUrl: pages.filesUploadUrl,
      fileDate: {
        folderid: 0
      mvrules: {
        labelid: [{ required: true, message: '请选择标签', trigger: 'change' }]
      },
      folderform: {
        foldername: '',
        sort: 0
      mvdialogFormVisible: false,
      uploadSinglePath: pages.uploadSinglePath,
      labelfrom: {
        labelid: '',
        empId: this.rowitem.empId
      },
      fileDate: {
        labelid: 0,
        empId: this.rowitem.empId
      },
      formLabelWidth: '100px',
      beforeIndex: 0,
      fileName: '',
      checkedArr: [],
      checkAll: false,
      activities: [{
        timestamp: '记录截图',
        color: '#a32c30'
      }, {
        timestamp: '照片'
      }, {
        timestamp: '劳动合同'
      }, {
        timestamp: '身份证'
      }, {
        timestamp: '入职表'
      }, {
        timestamp: '体检表'
      }, {
        timestamp: '回执'
      }, {
        timestamp: '银行卡'
      }, {
        timestamp: '相关证件'
      }, {
        timestamp: '相关合同'
      }, {
        timestamp: '请假'
      }, {
        timestamp: '处罚'
      }, {
        timestamp: '辞职申请'
      }, {
        timestamp: '离职手续'
      }, {
        timestamp: '自离'
      }, {
        timestamp: '社保'
      }, {
        timestamp: '失业金'
      }, {
        timestamp: '意外险'
      }, {
        timestamp: '工伤'
      }, {
        timestamp: '劳资'
      }],
      activities: [],
      filesUploadData: [],
      updateNum: 0
    }
  },
  mounted() {
    this.initlabel()
  },
  methods: {
    async initlabel() {
      await this.$get('hr/label').then(r => {
        this.activities = []
        this.beforeIndex = 0
        r.data.data.forEach((v, i) => {
          if (i === 0) {
            this.activities.push({
              timestamp: v.labelname,
              id: v.labelid,
              color: '#a32c30'
            })
          } else {
            this.activities.push({ timestamp: v.labelname, id: v.labelid })
          }
        })
      })
      var params = { labelid: this.activities[this.beforeIndex].id,
        filesname: this.fileName,
        empid: this.rowitem.empId }
      this.initFile(params)
    },
    initFile(params) {
      var node = { node: [] }
      // 文件列表置为空
      this.filesUploadData = []
      this.checkedArr = []
      this.$get('hr/filesUpload', { ...params }).then(r => {
      this.$get('hr/empAccessory', { ...params }).then(r => {
        r.data.data.forEach((v, i) => {
          this.checkedArr.push({ isChecked: false, filesid: v.filesid })
          this.checkedArr.push({ isChecked: false, accessoryid: v.accessoryid })
          // 一行8个 等于8就换行
          if (i % 8 === 0 && i !== 0) {
            this.filesUploadData.push(node)
@@ -218,18 +262,12 @@
      // 将修改好的数组放回去
      this.activities = list
      this.checkAll = false
      var params
      if (this.fileName === '') {
        // 生成查询文件的条件
        params = { folderid: this.activities[index].id }
      } else {
        // 生成查询文件的条件
        params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
      // 生成查询文件的条件
      var params = {
        labelid: this.activities[this.beforeIndex].id,
        filesname: this.fileName,
        empid: this.rowitem.empId
      }
      this.initFile(params)
    },
    clickCard(index) {
@@ -299,7 +337,7 @@
      }
    },
    beforeAvatarUpload(file) {
      this.fileDate.folderid = this.activities[this.beforeIndex].id
      this.fileDate.labelid = this.activities[this.beforeIndex].id
      const isLt50M = file.size / 1024 / 1024 < 50
      if (!isLt50M) {
        this.$message.error('上传文件不能超过 50MB!')
@@ -327,8 +365,9 @@
        this.updateNum = 0
        // 生成查询文件的条件
        var params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
          labelid: this.activities[this.beforeIndex].id,
          filesname: this.fileName,
          empid: this.rowitem.empId
        }
        this.initFile(params)
      }
@@ -344,7 +383,7 @@
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
          checke.push(v.accessoryid)
        }
      })
      if (checke.length <= 0) {
@@ -354,8 +393,8 @@
        })
      } else {
        // 生成查询文件的条件
        var params = { fileids: checke.join(',') }
        this.$download('hr/filesUpload/download', { ...params }, new Date().getTime() + '.zip').then(() => {
        var params = { accessoryids: checke.join(',') }
        this.$download('hr/empAccessory/download', { ...params }, this.activities[this.beforeIndex].timestamp + '.zip').then(() => {
          this.$message({
            message: '下载成功!',
            type: 'success'
@@ -367,24 +406,82 @@
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
          checke.push(v.accessoryid)
        }
      })
      // 生成查询文件的条件
      var params = { fileids: checke.join(',') }
      this.$delete('hr/filesUpload', { ...params }).then(() => {
      if (checke.length <= 0) {
        this.$message({
          message: '删除成功!',
          type: 'success'
          message: '请选择需要删除的文件!',
          type: 'warning'
        })
        // 生成查询文件的条件
        var initFileParams = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
      } else {
      // 生成查询文件的条件
        var params = { accessoryids: checke.join(',') }
        this.$delete('hr/empAccessory', { ...params }).then(() => {
          this.$message({
            message: '删除成功!',
            type: 'success'
          })
          // 生成查询文件的条件
          var initFileParams = {
            labelid: this.activities[this.beforeIndex].id,
            filesname: this.fileName,
            empid: this.rowitem.empId
          }
        this.initFile(initFileParams)
          this.initFile(initFileParams)
        })
      }
    },
    findFileByFileName() {
      // 生成查询文件的条件
      var params = {
        filesname: this.fileName,
        empid: this.rowitem.empId
      }
      this.initFile(params)
    },
    mvlabel(formName) {
      if (this.labelfrom.labelid === this.activities[this.beforeIndex].id) {
        this.$message({
          message: '文件在同一目录!',
          type: 'warning'
        })
        return
      }
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.accessoryid)
        }
      })
      if (checke.length <= 0) {
        this.$message({
          message: '请选择需要移动的文件!',
          type: 'warning'
        })
      } else {
        this.$refs[formName].validate(valid => {
          if (valid) {
            // 生成查询文件的条件
            var params = { accessoryids: checke.join(','), labelid: this.labelfrom.labelid, empId: this.labelfrom.empId }
            this.$post('hr/empAccessory/mvFiles', { ...params }).then(() => {
              this.$message({
                message: '移动成功!',
                type: 'success'
              })
              this.mvdialogFormVisible = false
              // 生成查询文件的条件
              var initFileParams = {
                labelid: this.activities[this.beforeIndex].id,
                filesname: this.fileName,
                empid: this.rowitem.empId
              }
              this.initFile(initFileParams)
            })
          }
        })
      }
    }
  }
}
src/views/yunpan/zhishou.vue
@@ -1,606 +1,695 @@
<template>
  <div class="zs-main">
    <el-row class="search-title">
      <el-col :span="18" class="title">
        <div class="zs-title">云盘智搜</div>
      </el-col>
      <el-col :span="6" class="search">
        <el-input
          v-model="fileName"
          maxlength="20"
          minlength="1"
          clearable
          placeholder="请输入文件名"
          show-word-limit
          style="width:200px"
        />
        <el-button type="primary" @click="findFileByFileName()">查询</el-button>
      </el-col>
    </el-row>
    <el-container style="background-color: #fff;">
      <el-aside width="210px" style="background-color: #fff;text-align: center;">
        <el-button class="add-folder-but" @click="dialogFormVisible = true">新增</el-button>
        <el-popconfirm title="是否删除此目录?">
          <el-button class="add-folder-but" @click="delFolder()">删除</el-button>
        </el-popconfirm>
        <el-dialog
          title="新增文件夹"
          :visible.sync="dialogFormVisible"
          width="25%"
          class="add-folder"
        >
          <el-form ref="folderform" :model="folderform" :rules="rules">
            <el-form-item
              label="文件夹名称:"
              :label-width="formLabelWidth"
              prop="foldername"
            >
              <el-input v-model="folderform.foldername" autocomplete="off" />
            </el-form-item>
            <el-form-item label="文件夹排序:" :label-width="formLabelWidth" prop="sort">
              <el-input-number
                v-model="folderform.sort"
                :min="0"
                :max="100"
                label="排序"
              />
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisible = false">取 消</el-button>
            <el-button
              type="primary"
              @click="addFolderForm('folderform')"
            >确 定</el-button>
          </div>
        </el-dialog>
        <el-timeline>
          <el-timeline-item
            v-for="(activity, index) in activities"
            :key="index"
            :icon="activity.icon"
            :type="activity.type"
            :color="activity.color"
            :size="activity.size"
            placement="bottom"
          >
            <span
              style="position: relative; top: -5px;"
              @click="clickTimeline(index, activity.id)"
            >
              {{ activity.timestamp }}</span>
          </el-timeline-item>
        </el-timeline>
      </el-aside>
      <el-container>
        <el-header class="text-header">
          <el-row><el-col :span="24">
            <i
              class="el-icon-bell"
              style=" color: #a32c30; margin-right: 10px;"
            />提示:文件不要超过10个,单个文件大小不超过50M,单击或者拖动文件到下面区域,支持单个或批量文件的上传。</el-col>
          </el-row>
          <el-row style="background-color: rgba(0,0,0,0.2);">
            <el-col :span="19">
              <el-checkbox
                v-model="checkAll"
                class="myRedCheckBox"
                style="color: #000; margin-left: 20px;"
                @change="checkAllMethods()"
              >全选</el-checkbox></el-col>
            <el-col :span="5">
              <el-button
                type="primary"
                icon="el-icon-download"
                size="mini"
                @click="download()"
              >下载</el-button>
              <el-button
                type="primary"
                icon="el-icon-search"
                size="mini"
                @click="delFile()"
              >删除</el-button>
            </el-col>
          </el-row>
        </el-header>
        <el-main style="background-color: #fff;">
          <el-row v-for="(data, index) in filesUploadData" :key="index">
            <template v-for="(node, nodeIndex) in data.node">
              <el-col v-if="node.isUpload === false" :key="node.filesid" :span="3">
                <el-card
                  shadow="never"
                  @click.native="clickCard(index * 8 + nodeIndex)"
                >
                  <img
                    :src="showFileImg(node.filesformat)"
                    class="uploading-image"
                  >
                  <div style="padding-top: 14px;">
                    <el-checkbox v-model="checkedArr[index * 8 + nodeIndex].isChecked" class="myRedCheckBox">{{ node.filesname }}</el-checkbox>
                  </div>
                </el-card>
              </el-col>
              <el-col v-if="node.isUpload" :key="node.filesid" :span="3">
                <el-card shadow="never">
                  <el-upload
                    class="avatar-uploader"
                    :action="filesUploadUrl"
                    :show-file-list="false"
                    :before-upload="beforeAvatarUpload"
                    :headers="headers()"
                    :data="fileDate"
                    :on-success="handleAvatarSuccess"
                    :on-error="handleAvatarError"
                    :multiple="true"
                    :limit="10"
                    drag
                  >
                    <i class="el-icon-upload" />
                  </el-upload>
                </el-card>
              </el-col>
            </template>
          </el-row>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
import { getToken } from '@/utils/auth'
import { pages } from '@/settings'
export default {
  data() {
    return {
      filesUploadUrl: pages.filesUploadUrl,
      fileDate: {
        folderid: 0
      },
      dialogFormVisible: false,
      folderform: {
        foldername: '',
        sort: 0
      },
      rules: {
        foldername: [
          { required: true, message: '请输入文件夹名称', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
        ],
        sort: [{ required: true, message: '请输入排序', type: 'number', trigger: 'blur' }]
      },
      formLabelWidth: '100px',
      beforeIndex: 0,
      fileName: '',
      checkedArr: [],
      checkAll: false,
      activities: [],
      filesUploadData: [],
      updateNum: 0
    }
  },
  mounted() {
    // 初始加载
    this.initFolder()
  },
  methods: {
    async initFolder() {
      await this.$get('hr/folder').then(r => {
        this.activities = []
        this.beforeIndex = 0
        r.data.data.forEach((v, i) => {
          if (i === 0) {
            this.activities.push({
              timestamp: v.foldername,
              id: v.folderid,
              color: '#a32c30'
            })
          } else {
            this.activities.push({ timestamp: v.foldername, id: v.folderid })
          }
        })
      })
      var params = { folderid: this.activities[0].id }
      this.initFile(params)
    },
    initFile(params) {
      var node = { node: [] }
      // 文件列表置为空
      this.filesUploadData = []
      this.checkedArr = []
      this.$get('hr/filesUpload', { ...params }).then(r => {
        r.data.data.forEach((v, i) => {
          this.checkedArr.push({ isChecked: false, filesid: v.filesid })
          // 一行8个 等于8就换行
          if (i % 8 === 0 && i !== 0) {
            this.filesUploadData.push(node)
            node = { node: [] }
          }
          // 添加一个新的元素判断是否是上传用的
          this.$set(v, 'isUpload', false)
          // 添加
          node.node.push(v)
          // 如果是最后一个元素,需要手动丢到列表里面去
          if (i === r.data.data.length - 1) {
            this.filesUploadData.push(node)
          }
        })
        // 如果列表为空,增加一个上传的
        if (this.filesUploadData.length === 0) {
          this.filesUploadData.push({ node: [{ isUpload: true }] })
        } else {
          // 如果不为空,但是这一行刚好满8个了,就将数组,新增一个对象
          if (this.filesUploadData[this.filesUploadData.length - 1].node.length === 8) {
            this.filesUploadData.push({ node: [{ isUpload: true }] })
          } else {
            // 新增一个上传
            this.filesUploadData[this.filesUploadData.length - 1].node.push({
              isUpload: true
            })
          }
        }
      })
    },
    clickTimeline(index, id) {
      // 不这样操作的不会响应式更新
      // 赋值到新的列表
      var list = this.activities
      // 将之前的数组置为空
      this.activities = []
      // 删除之前下标的颜色
      delete list[this.beforeIndex].color
      // 将新下标存储起来
      this.beforeIndex = index
      // 将新下标修改颜色
      list[index]['color'] = '#a32c30'
      // 将修改好的数组放回去
      this.activities = list
      this.checkAll = false
      var params
      if (this.fileName === '') {
        // 生成查询文件的条件
        params = { folderid: this.activities[index].id }
      } else {
        // 生成查询文件的条件
        params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
      }
      this.initFile(params)
    },
    clickCard(index) {
      if (this.checkedArr[index].isChecked) {
        this.$set(this.checkedArr[index], 'isChecked', false)
      } else {
        this.$set(this.checkedArr[index], 'isChecked', true)
      }
    },
    checkAllMethods() {
      if (this.checkAll) {
        this.checkedArr.forEach((v, i) => {
          this.$set(v, 'isChecked', true)
        })
      } else {
        this.checkedArr.forEach((v, i) => {
          this.$set(v, 'isChecked', false)
        })
      }
    },
    findFileByFileName() {
      // 生成查询文件的条件
      var params = {
        folderid: this.activities[this.beforeIndex].id,
        filesname: this.fileName
      }
      this.initFile(params)
    },
    addFolderForm(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$post('hr/folder', { ...this.folderform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
            this.folderform.fileName = ''
            this.folderform.sort = 0
            // 初始加载
            this.initFolder()
          })
        }
      })
    },
    delFolder() {
      // 生成查询文件的条件
      var params = { folderid: this.activities[this.beforeIndex].id }
      this.$delete('hr/folder', { ...params }).then(() => {
        this.dialogFormVisible = false
        this.$message({
          message: this.$t('tips.deleteSuccess'),
          type: 'success'
        })
        // 初始加载
        this.initFolder()
      })
    },
    showFileImg(type) {
      switch (type) {
        case 'txt':
          return require('../../assets/uploading/txt.png')
        case 'apk':
          return require('../../assets/uploading/apk.png')
        case 'csv':
          return require('../../assets/uploading/csv.png')
        case 'excel':
          return require('../../assets/uploading/excel.png')
        case 'exe':
          return require('../../assets/uploading/exe.png')
        case 'folder':
          return require('../../assets/uploading/folder.png')
        case 'gif':
          return require('../../assets/uploading/gif.png')
        case 'html':
          return require('../../assets/uploading/html.png')
        case 'json':
          return require('../../assets/uploading/json.png')
        case 'mp3':
          return require('../../assets/uploading/mp3.png')
        case 'mp4':
          return require('../../assets/uploading/mp4.png')
        case 'pdf':
          return require('../../assets/uploading/pdf.png')
        case 'pic':
          return require('../../assets/uploading/pic.png')
        case 'ppt':
          return require('../../assets/uploading/ppt.png')
        case 'rar':
          return require('../../assets/uploading/rar.png')
        case 'svg':
          return require('../../assets/uploading/svg.png')
        case 'webpage':
          return require('../../assets/uploading/webpage.png')
        case 'word':
          return require('../../assets/uploading/word.png')
        case 'zip':
          return require('../../assets/uploading/zip.png')
        case 'jpg':
          return require('../../assets/uploading/jpg.png')
        case 'png':
          return require('../../assets/uploading/png.png')
        default:
          return require('../../assets/uploading/unknown.png')
      }
    },
    beforeAvatarUpload(file) {
      this.fileDate.folderid = this.activities[this.beforeIndex].id
      const isLt50M = file.size / 1024 / 1024 < 50
      if (!isLt50M) {
        this.$message.error('上传文件不能超过 50MB!')
      }
      return isLt50M
    },
    headers() {
      const token = getToken()
      if (token) {
        return {
          Authorization: 'bearer ' + token
        }
      } else {
        return null
      }
    },
    handleAvatarSuccess(response, file, fileList) {
      this.$notify({
        title: '成功',
        message: '上传成功!',
        type: 'success'
      })
      this.updateNum++
      if (this.updateNum === fileList.length) {
        this.updateNum = 0
        // 生成查询文件的条件
        var params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
        this.initFile(params)
      }
    },
    handleAvatarError() {
      this.updateNum = 0
      this.$notify.error({
        title: '失败',
        message: '上传失败,请联系管理员!'
      })
    },
    download() {
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
        }
      })
      if (checke.length <= 0) {
        this.$message({
          message: '请选择需要下载的文件!',
          type: 'warning'
        })
      } else {
        // 生成查询文件的条件
        var params = { fileids: checke.join(',') }
        this.$download('hr/filesUpload/download', { ...params }, new Date().getTime() + '.zip').then(() => {
          this.$message({
            message: '下载成功!',
            type: 'success'
          })
        })
      }
    },
    delFile() {
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
        }
      })
      // 生成查询文件的条件
      var params = { fileids: checke.join(',') }
      this.$delete('hr/filesUpload', { ...params }).then(() => {
        this.$message({
          message: '删除成功!',
          type: 'success'
        })
        // 生成查询文件的条件
        var initFileParams = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
        this.initFile(initFileParams)
      })
    }
  }
}
</script>
<style lang="scss">
.clearfix:before,
.clearfix:after {
    display: table;
    content: '';
}
.clearfix:after {
    clear: both;
}
.add-folder {
    text-align: initial;
}
.zs-main {
    .search-title {
        height: 50px;
        .search {
            position: relative;
            top: 50%;
            transform: translateY(-50%);
        }
        .title {
            position: relative;
            top: 40%;
            transform: translateY(-50%);
        }
        .zs-title {
            border-left: 4px solid #a32c30;
            padding-left: 10px;
            font-size: 16px;
        }
    }
    .add-folder-but {
        background: #fff !important;
        color: #a32c30 !important;
        margin-bottom: 20px;
    }
    padding: 0 15px 0 15px;
    .text-header {
        line-height: 60px;
    }
    .uploading-image {
        width: 100%;
        height: 100%;
        display: block;
    }
}
.el-timeline-item__timestamp {
    font-size: 15px;
    color: #000;
}
/* 设置带边框的checkbox,选中后边框的颜色 */
.myRedCheckBox.is-bordered.is-checked {
    border-color: #a32c30;
}
/* 设置选中后的文字颜色 */
.myRedCheckBox .el-checkbox__input.is-checked + .el-checkbox__label {
    color: #a32c30;
}
/* 设置选中后对勾框的边框和背景颜色 */
.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner,
.myRedCheckBox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
    border-color: #a32c30;
    background-color: #a32c30;
}
/* 设置checkbox获得焦点后,对勾框的边框颜色 */
.myRedCheckBox .el-checkbox__input.is-focus .el-checkbox__inner {
    border-color: #a32c30;
}
/* 设置鼠标经过对勾框,对勾框边框的颜色 */
.myRedCheckBox .el-checkbox__inner:hover {
    border-color: #a32c30;
}
.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
}
.avatar-uploader .el-upload:hover {
    border-color: #409eff;
}
.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
}
.avatar {
    width: 178px;
    height: 178px;
    display: block;
}
.avatar-uploader .el-upload-dragger .el-icon-upload {
    margin: 20px 0 16px;
}
.avatar-uploader .el-upload-dragger {
    border: none;
    width: 100px;
    height: 100px;
}
</style>
<style lang="scss" scoped>
.el-main {
    margin-top: 2%;
}
.app-main {
    background-color: #ffffff;
}
.el-button,
.el-button--primary {
    background: #a32c30;
    border-color: #a32c30;
    color: #fff;
    outline: none;
}
.zs-main .text-header {
    line-height: 40px;
}
.el-card {
    border: none;
}
.el-input-number {
    width: 100%;
}
</style>
<template>
  <div class="zs-main">
    <el-row class="search-title">
      <el-col :span="18" class="title">
        <div class="zs-title">云盘智搜</div>
      </el-col>
      <el-col :span="6" class="search">
        <el-input
          v-model="fileName"
          maxlength="20"
          minlength="1"
          clearable
          placeholder="请输入文件名"
          show-word-limit
          style="width:200px"
        />
        <el-button type="primary" @click="findFileByFileName()">查询</el-button>
      </el-col>
    </el-row>
    <el-container style="background-color: #fff;">
      <el-aside width="210px" style="background-color: #fff;text-align: center;">
        <el-button class="add-folder-but" @click="dialogFormVisible = true">新增</el-button>
        <el-popconfirm title="是否删除目录?" @onConfirm="delFolder()">
          <el-button slot="reference" class="hr-but-all" type="danger">删除</el-button>
        </el-popconfirm>
        <el-dialog
          title="新增文件夹"
          :visible.sync="dialogFormVisible"
          width="25%"
          class="add-folder"
        >
          <el-form ref="folderform" :model="folderform" :rules="rules">
            <el-form-item
              label="文件夹名称:"
              :label-width="formLabelWidth"
              prop="foldername"
            >
              <el-input v-model="folderform.foldername" autocomplete="off" />
            </el-form-item>
            <el-form-item label="文件夹排序:" :label-width="formLabelWidth" prop="sort">
              <el-input-number
                v-model="folderform.sort"
                :min="0"
                :max="100"
                label="排序"
              />
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisible = false">取 消</el-button>
            <el-button
              type="primary"
              @click="addFolderForm('folderform')"
            >确 定</el-button>
          </div>
        </el-dialog>
        <el-timeline>
          <el-timeline-item
            v-for="(activity, index) in activities"
            :key="index"
            :icon="activity.icon"
            :type="activity.type"
            :color="activity.color"
            :size="activity.size"
            placement="bottom"
          >
            <span
              style="position: relative; top: -5px;"
              @click="clickTimeline(index, activity.id)"
            >
              {{ activity.timestamp }}</span>
          </el-timeline-item>
        </el-timeline>
      </el-aside>
      <el-container>
        <el-header class="text-header">
          <el-row><el-col :span="24">
            <i
              class="el-icon-bell"
              style=" color: #a32c30; margin-right: 10px;"
            />提示:文件不要超过10个,单个文件大小不超过50M,单击或者拖动文件到下面区域,支持单个或批量文件的上传。</el-col>
          </el-row>
          <el-row style="background-color: rgba(0,0,0,0.2);">
            <el-col :span="19">
              <el-checkbox
                v-model="checkAll"
                class="myRedCheckBox"
                style="color: #000; margin-left: 20px;"
                @change="checkAllMethods()"
              >全选</el-checkbox></el-col>
            <el-col :span="5">
              <el-button
                type="primary"
                icon="el-icon-download"
                size="mini"
                @click="download()"
              >下载</el-button>
              <el-button
                type="primary"
                icon="el-icon-search"
                size="mini"
                @click="delFile()"
              >删除</el-button>
              <el-popconfirm title="是否移动文件?" @onConfirm="mvdialogFormVisible = true">
                <el-button slot="reference" class="hr-but" type="danger">移动</el-button>
              </el-popconfirm>
            </el-col>
          </el-row>
        </el-header>
        <el-dialog
          title="移动文件"
          :visible.sync="mvdialogFormVisible"
          width="25%"
          class="add-label"
        >
          <el-form ref="mvfolderform" :model="folderform" :rules="mvrules">
            <el-form-item
              label="目录名称:"
              :label-width="formLabelWidth"
              prop="folderid"
            >
              <el-select v-model="folderform.folderid" placeholder="请选择移动的目录">
                <el-option
                  v-for="item in activities"
                  :key="item.id"
                  :value="item.id"
                  :label="item.timestamp"
                />
              </el-select>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="mvdialogFormVisible = false">取 消</el-button>
            <el-button
              type="primary"
              @click="mvfolder('mvfolderform')"
            >确 定</el-button>
          </div>
        </el-dialog>
        <el-main style="background-color: #fff;">
          <el-row v-for="(data, index) in filesUploadData" :key="index">
            <template v-for="(node, nodeIndex) in data.node">
              <el-col v-if="node.isUpload === false" :key="node.filesid" :span="3">
                <el-card
                  shadow="never"
                  @click.native="clickCard(index * 8 + nodeIndex)"
                >
                  <img
                    :src="showFileImg(node.filesformat)"
                    class="uploading-image"
                  >
                  <div style="padding-top: 14px;">
                    <el-checkbox v-model="checkedArr[index * 8 + nodeIndex].isChecked" class="myRedCheckBox">{{ node.filesname }}</el-checkbox>
                  </div>
                </el-card>
              </el-col>
              <el-col v-if="node.isUpload" :key="node.filesid" :span="3">
                <el-card shadow="never">
                  <el-upload
                    class="avatar-uploader"
                    :action="filesUploadUrl"
                    :show-file-list="false"
                    :before-upload="beforeAvatarUpload"
                    :headers="headers()"
                    :data="fileDate"
                    :on-success="handleAvatarSuccess"
                    :on-error="handleAvatarError"
                    :multiple="true"
                    :limit="10"
                    drag
                  >
                    <i class="el-icon-upload" />
                  </el-upload>
                </el-card>
              </el-col>
            </template>
          </el-row>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
import { getToken } from '@/utils/auth'
import { pages } from '@/settings'
export default {
  data() {
    return {
      mvrules: {
        folderid: [{ required: true, message: '请选择目录', trigger: 'change' }]
      },
      filesUploadUrl: pages.filesUploadUrl,
      fileDate: {
        folderid: 0
      },
      mvdialogFormVisible: false,
      dialogDelVisible: false,
      dialogFormVisible: false,
      folderform: {
        folderid: '',
        foldername: '',
        sort: 0
      },
      rules: {
        foldername: [
          { required: true, message: '请输入文件夹名称', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
        ],
        sort: [{ required: true, message: '请输入排序', type: 'number', trigger: 'blur' }]
      },
      formLabelWidth: '100px',
      beforeIndex: 0,
      fileName: '',
      checkedArr: [],
      checkAll: false,
      activities: [],
      filesUploadData: [],
      updateNum: 0
    }
  },
  mounted() {
    // 初始加载
    this.initFolder()
  },
  methods: {
    async initFolder() {
      await this.$get('hr/folder').then(r => {
        this.activities = []
        this.beforeIndex = 0
        r.data.data.forEach((v, i) => {
          if (i === 0) {
            this.activities.push({
              timestamp: v.foldername,
              id: v.folderid,
              color: '#a32c30'
            })
          } else {
            this.activities.push({ timestamp: v.foldername, id: v.folderid })
          }
        })
      })
      var params = { folderid: this.activities[0].id }
      this.initFile(params)
    },
    initFile(params) {
      var node = { node: [] }
      // 文件列表置为空
      this.filesUploadData = []
      this.checkedArr = []
      this.$get('hr/filesUpload', { ...params }).then(r => {
        r.data.data.forEach((v, i) => {
          this.checkedArr.push({ isChecked: false, filesid: v.filesid })
          // 一行8个 等于8就换行
          if (i % 8 === 0 && i !== 0) {
            this.filesUploadData.push(node)
            node = { node: [] }
          }
          // 添加一个新的元素判断是否是上传用的
          this.$set(v, 'isUpload', false)
          // 添加
          node.node.push(v)
          // 如果是最后一个元素,需要手动丢到列表里面去
          if (i === r.data.data.length - 1) {
            this.filesUploadData.push(node)
          }
        })
        // 如果列表为空,增加一个上传的
        if (this.filesUploadData.length === 0) {
          this.filesUploadData.push({ node: [{ isUpload: true }] })
        } else {
          // 如果不为空,但是这一行刚好满8个了,就将数组,新增一个对象
          if (this.filesUploadData[this.filesUploadData.length - 1].node.length === 8) {
            this.filesUploadData.push({ node: [{ isUpload: true }] })
          } else {
            // 新增一个上传
            this.filesUploadData[this.filesUploadData.length - 1].node.push({
              isUpload: true
            })
          }
        }
      })
    },
    clickTimeline(index, id) {
      // 不这样操作的不会响应式更新
      // 赋值到新的列表
      var list = this.activities
      // 将之前的数组置为空
      this.activities = []
      // 删除之前下标的颜色
      delete list[this.beforeIndex].color
      // 将新下标存储起来
      this.beforeIndex = index
      // 将新下标修改颜色
      list[index]['color'] = '#a32c30'
      // 将修改好的数组放回去
      this.activities = list
      this.checkAll = false
      var params
      if (this.fileName === '') {
        // 生成查询文件的条件
        params = { folderid: this.activities[index].id }
      } else {
        // 生成查询文件的条件
        params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
      }
      this.initFile(params)
    },
    clickCard(index) {
      if (this.checkedArr[index].isChecked) {
        this.$set(this.checkedArr[index], 'isChecked', false)
      } else {
        this.$set(this.checkedArr[index], 'isChecked', true)
      }
    },
    checkAllMethods() {
      if (this.checkAll) {
        this.checkedArr.forEach((v, i) => {
          this.$set(v, 'isChecked', true)
        })
      } else {
        this.checkedArr.forEach((v, i) => {
          this.$set(v, 'isChecked', false)
        })
      }
    },
    findFileByFileName() {
      // 生成查询文件的条件
      var params = {
        folderid: this.activities[this.beforeIndex].id,
        filesname: this.fileName
      }
      this.initFile(params)
    },
    addFolderForm(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$post('hr/folder', { ...this.folderform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
            this.folderform.filename = ''
            this.folderform.sort = 0
            // 初始加载
            this.initFolder()
          })
        }
      })
    },
    delFolder() {
      // 生成查询文件的条件
      var params = { folderid: this.activities[this.beforeIndex].id }
      this.$delete('hr/folder', { ...params }).then(() => {
        this.dialogFormVisible = false
        this.$message({
          message: this.$t('tips.deleteSuccess'),
          type: 'success'
        })
        this.dialogDelVisible = false
        // 初始加载
        this.initFolder()
      })
    },
    showFileImg(type) {
      switch (type) {
        case 'txt':
          return require('../../assets/uploading/txt.png')
        case 'apk':
          return require('../../assets/uploading/apk.png')
        case 'csv':
          return require('../../assets/uploading/csv.png')
        case 'excel':
          return require('../../assets/uploading/excel.png')
        case 'exe':
          return require('../../assets/uploading/exe.png')
        case 'folder':
          return require('../../assets/uploading/folder.png')
        case 'gif':
          return require('../../assets/uploading/gif.png')
        case 'html':
          return require('../../assets/uploading/html.png')
        case 'json':
          return require('../../assets/uploading/json.png')
        case 'mp3':
          return require('../../assets/uploading/mp3.png')
        case 'mp4':
          return require('../../assets/uploading/mp4.png')
        case 'pdf':
          return require('../../assets/uploading/pdf.png')
        case 'pic':
          return require('../../assets/uploading/pic.png')
        case 'ppt':
          return require('../../assets/uploading/ppt.png')
        case 'rar':
          return require('../../assets/uploading/rar.png')
        case 'svg':
          return require('../../assets/uploading/svg.png')
        case 'webpage':
          return require('../../assets/uploading/webpage.png')
        case 'word':
          return require('../../assets/uploading/word.png')
        case 'zip':
          return require('../../assets/uploading/zip.png')
        case 'jpg':
          return require('../../assets/uploading/jpg.png')
        case 'png':
          return require('../../assets/uploading/png.png')
        default:
          return require('../../assets/uploading/unknown.png')
      }
    },
    beforeAvatarUpload(file) {
      this.fileDate.folderid = this.activities[this.beforeIndex].id
      const isLt50M = file.size / 1024 / 1024 < 50
      if (!isLt50M) {
        this.$message.error('上传文件不能超过 50MB!')
      }
      return isLt50M
    },
    headers() {
      const token = getToken()
      if (token) {
        return {
          Authorization: 'bearer ' + token
        }
      } else {
        return null
      }
    },
    handleAvatarSuccess(response, file, fileList) {
      this.$notify({
        title: '成功',
        message: '上传成功!',
        type: 'success'
      })
      this.updateNum++
      if (this.updateNum === fileList.length) {
        this.updateNum = 0
        // 生成查询文件的条件
        var params = {
          folderid: this.activities[this.beforeIndex].id,
          filesname: this.fileName
        }
        this.initFile(params)
      }
    },
    handleAvatarError() {
      this.updateNum = 0
      this.$notify.error({
        title: '失败',
        message: '上传失败,请联系管理员!'
      })
    },
    download() {
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
        }
      })
      if (checke.length <= 0) {
        this.$message({
          message: '请选择需要下载的文件!',
          type: 'warning'
        })
      } else {
        // 生成查询文件的条件
        var params = { fileids: checke.join(',') }
        this.$download('hr/filesUpload/download', { ...params }, this.activities[this.beforeIndex].timestamp + '.zip').then(() => {
          this.$message({
            message: '下载成功!',
            type: 'success'
          })
        })
      }
    },
    delFile() {
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
        }
      })
      if (checke.length <= 0) {
        this.$message({
          message: '请选择需要删除的文件!',
          type: 'warning'
        })
      } else {
      // 生成查询文件的条件
        var params = { fileids: checke.join(',') }
        this.$delete('hr/filesUpload', { ...params }).then(() => {
          this.$message({
            message: '删除成功!',
            type: 'success'
          })
          // 生成查询文件的条件
          var initFileParams = {
            folderid: this.activities[this.beforeIndex].id,
            filesname: this.fileName
          }
          this.initFile(initFileParams)
        })
      }
    },
    mvfolder(formName) {
      if (this.folderform.folderid === this.activities[this.beforeIndex].id) {
        this.$message({
          message: '文件在同一目录!',
          type: 'warning'
        })
        return
      }
      var checke = []
      this.checkedArr.forEach((v, i) => {
        if (v.isChecked) {
          checke.push(v.filesid)
        }
      })
      if (checke.length <= 0) {
        this.$message({
          message: '请选择需要移动的文件!',
          type: 'warning'
        })
      } else {
        this.$refs[formName].validate(valid => {
          if (valid) {
            // 生成查询文件的条件
            var params = { fileids: checke.join(','), folderid: this.folderform.folderid }
            this.$post('hr/filesUpload/mvFiles', { ...params }).then(() => {
              this.$message({
                message: '移动成功!',
                type: 'success'
              })
              this.mvdialogFormVisible = false
              // 生成查询文件的条件
              var initFileParams = {
                folderid: this.activities[this.beforeIndex].id,
                filesname: this.fileName
              }
              this.initFile(initFileParams)
            })
          }
        })
      }
    }
  }
}
</script>
<style lang="scss">
.clearfix:before,
.clearfix:after {
    display: table;
    content: '';
}
.clearfix:after {
    clear: both;
}
.add-folder {
    text-align: initial;
}
.zs-main {
    .search-title {
        height: 50px;
        .search {
            position: relative;
            top: 50%;
            transform: translateY(-50%);
        }
        .title {
            position: relative;
            top: 40%;
            transform: translateY(-50%);
        }
        .zs-title {
            border-left: 4px solid #a32c30;
            padding-left: 10px;
            font-size: 16px;
        }
    }
    .add-folder-but {
        background: #fff !important;
        color: #a32c30 !important;
        margin-bottom: 20px;
    }
    padding: 0 15px 0 15px;
    .text-header {
        line-height: 60px;
    }
    .uploading-image {
        width: 100%;
        height: 100%;
        display: block;
    }
}
.el-timeline-item__timestamp {
    font-size: 15px;
    color: #000;
}
/* 设置带边框的checkbox,选中后边框的颜色 */
.myRedCheckBox.is-bordered.is-checked {
    border-color: #a32c30;
}
/* 设置选中后的文字颜色 */
.myRedCheckBox .el-checkbox__input.is-checked + .el-checkbox__label {
    color: #a32c30;
}
/* 设置选中后对勾框的边框和背景颜色 */
.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner,
.myRedCheckBox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
    border-color: #a32c30;
    background-color: #a32c30;
}
/* 设置checkbox获得焦点后,对勾框的边框颜色 */
.myRedCheckBox .el-checkbox__input.is-focus .el-checkbox__inner {
    border-color: #a32c30;
}
/* 设置鼠标经过对勾框,对勾框边框的颜色 */
.myRedCheckBox .el-checkbox__inner:hover {
    border-color: #a32c30;
}
.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
}
.avatar-uploader .el-upload:hover {
    border-color: #409eff;
}
.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
}
.avatar {
    width: 178px;
    height: 178px;
    display: block;
}
.avatar-uploader .el-upload-dragger .el-icon-upload {
    margin: 20px 0 16px;
}
.avatar-uploader .el-upload-dragger {
    border: none;
    width: 100px;
    height: 100px;
}
</style>
<style lang="scss" scoped>
.el-main {
    margin-top: 2%;
}
.app-main {
    background-color: #ffffff;
}
.el-button,
.el-button--primary {
    background: #a32c30;
    border-color: #a32c30;
    color: #fff;
    outline: none;
}
.zs-main .text-header {
    line-height: 40px;
}
.el-card {
    border: none;
}
.el-input-number {
    width: 100%;
}
</style>