feat(信息录入与在职员工): 工龄处理
1.公用工具增加了计算工龄的方法
2.基本信息录入与在职员工增加的工龄通过入职日期计算
| | |
| | | } |
| | | 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 |
| | | } |
| | |
| | | <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)" |
| | |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | @input="calculateSeniority" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="入司工龄" prop="seniority"> |
| | |
| | | </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' |
| | |
| | | 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' }], |
| | |
| | | this.empBaseInfoForm.sex = userinfo.sex |
| | | break |
| | | } |
| | | }, |
| | | calculateSeniority(val) { |
| | | this.empBaseInfoForm.seniority = calculateSeniority(val) |
| | | } |
| | | } |
| | | } |
| | |
| | | </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"> |
| | |
| | | <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)" |
| | |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | @input="calculateSeniority" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="入司工龄" prop="seniority"> |
| | |
| | | <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 /> |
| | |
| | | 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 |
| | |
| | | queryParams: {}, // 查询参数 |
| | | sort: {}, // 排序 |
| | | pagination: { // 分页参数 |
| | | size: 5, |
| | | size: 20, |
| | | num: 1 |
| | | }, |
| | | empBaseInfoForm: {}, |
| | |
| | | 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' }, |
| | |
| | | this.headerHeight = '350px' |
| | | this.advancedQueryShow = true |
| | | } |
| | | }, |
| | | calculateSeniority(val) { |
| | | this.empBaseInfoForm.seniority = calculateSeniority(val) |
| | | }, |
| | | putEmpBase(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | |
| | | } |
| | | </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> |