luoyb
2021-02-18 08b2ed711051f487e0ec6d8b3d8b96306832de3d
feat(信息录入与在职员工): 工龄处理

1.公用工具增加了计算工龄的方法
2.基本信息录入与在职员工增加的工龄通过入职日期计算
3个文件已修改
381 ■■■■■ 已修改文件
src/utils/myUtil.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/Informationinput.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/inemployees.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/views/user/Informationinput.vue
@@ -445,7 +445,7 @@
            <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)"
@@ -649,6 +649,7 @@
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
                @input="calculateSeniority"
              />
            </el-form-item>
            <el-form-item label="入司工龄" prop="seniority">
@@ -1812,7 +1813,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 +1848,22 @@
        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' }],
        urgencyPhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }]
      },
      workExperienceRules: {
        empName: [{ required: true, message: '请选择员工', trigger: 'blur' }],
@@ -4877,6 +4887,9 @@
          this.empBaseInfoForm.sex = userinfo.sex
          break
      }
    },
    calculateSeniority(val) {
      this.empBaseInfoForm.seniority = calculateSeniority(val)
    }
  }
}
src/views/user/inemployees.vue
@@ -195,7 +195,13 @@
      </el-container>
    </el-container>
    <el-dialog title="新增员工" :visible.sync="dialogShowXzyg" width="50%">
      <el-form ref="empBaseInfoForm" :model="empBaseInfoForm" :rules="empBaseInfoRules" 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="档案号" prop="archivesNumb">
@@ -204,7 +210,7 @@
            <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)"
@@ -408,6 +414,7 @@
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
                @input="calculateSeniority"
              />
            </el-form-item>
            <el-form-item label="入司工龄" prop="seniority">
@@ -1255,99 +1262,170 @@
    <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 />
            全部字段
          </td>
        </tr>
        <tr>
          <td>档案号</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>姓名</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>性别</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>部门(护卫点)</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>所属岗位</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>员工类别</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>民族</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>身份证号码</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>年龄</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>婚姻状况</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>身份证有效期</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>身高</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>政治面貌</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>出生日期</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>最高学历</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>籍贯</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>户籍地址</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>户籍地址</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>保安员证号</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>保安员回执</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>档案情况</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>银行名称</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>银行账号</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>电话号码</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>入职日期</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>保险类型</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>社保电脑号</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>招聘介绍人</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>入司工龄</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>工作证</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>相关证件</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>紧急联系电话</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td>员工手册</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
        </tr>
        <tr>
          <td>家庭成员及关系</td>
          <td><el-checkbox /></td>
          <td>
            <el-checkbox />
          </td>
          <td />
          <td />
          <td />
@@ -1365,7 +1443,8 @@
import Pagination from '@/components/Pagination'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { toCardGetUserInfo } from '@/utils/myUtil'
import { calculateSeniority, toCardGetUserInfo } from '@/utils/myUtil'
export default {
  components: {
    Pagination, Treeselect
@@ -1376,7 +1455,7 @@
      queryParams: {}, // 查询参数
      sort: {}, // 排序
      pagination: { // 分页参数
        size: 5,
        size: 20,
        num: 1
      },
      empBaseInfoForm: {},
@@ -1391,22 +1470,44 @@
          trigger: 'blur'
        }],
        empName: [{ required: true, message: '请输入员工姓名', trigger: 'blur' },
          { min: 2, max: 50, message: this.$t('rules.noMoreThan50'), trigger: 'blur' }],
          { min: 2, max: 32, message: '长度不超过32个字符', trigger: 'blur' }],
        empNumb: [{ required: true, message: '请输入员工编号', 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' }],
        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' }],
        urgencyPhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }]
      },
      restaurants: [{ value: '北京市', code: '110000' },
        { value: '天津市', code: '120000' },
@@ -1541,6 +1642,9 @@
        this.headerHeight = '350px'
        this.advancedQueryShow = true
      }
    },
    calculateSeniority(val) {
      this.empBaseInfoForm.seniority = calculateSeniority(val)
    },
    putEmpBase(formName) {
      this.$refs[formName].validate((valid) => {
@@ -1776,87 +1880,91 @@
}
</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;
}
</style>