From 6c0b67172bc799fa4d3f9891ce9da5261a3de43f Mon Sep 17 00:00:00 2001
From: Alan <1124498879@qq.com>
Date: 星期五, 19 二月 2021 17:45:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/user/inemployees.vue | 1198 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 833 insertions(+), 365 deletions(-)

diff --git a/src/views/user/inemployees.vue b/src/views/user/inemployees.vue
index 99d914b..4f3aaa0 100644
--- a/src/views/user/inemployees.vue
+++ b/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>

--
Gitblit v1.8.0