| New file |
| | |
| | | <template> |
| | | <div style="background-color: #fff;height: 100%;"> |
| | | <el-container> |
| | | <el-header :height="headerHeight"> |
| | | <el-row style="margin-bottom: 10px;"> |
| | | <el-col :span="15"> |
| | | <h3 class="bu-tian-jia-title">员工退休提醒</h3> |
| | | </el-col> |
| | | </el-row> |
| | | </el-header> |
| | | <el-main style="height: 85%;"> |
| | | <el-row style="margin: 10px 0 10px 0;"> |
| | | <el-col :span="24"> |
| | | <el-button type="primary" class="hr-but-all" @click="showDcyg(0)">导出EXCEL</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table |
| | | ref="multipleTable" |
| | | :data="contractList" |
| | | :cell-style="{padding:'7px 0','text-align':'center'}" |
| | | :header-cell-style="{'height':'5.3vh','background-color':'#e6e6e6','text-align':'center'}" |
| | | stripe |
| | | border |
| | | style="width: 100%;color: #000;" |
| | | @sort-change="changeSort" |
| | | > |
| | | <el-table-column show-overflow-tooltip fixed="left" label="操作" width="120"> |
| | | <template v-slot="scope"> |
| | | <span |
| | | style="color: #a00515;display: inline-block;width: 40%;cursor: pointer" |
| | | @click="goOn(scope.row)" |
| | | >返骋</span> |
| | | <span |
| | | style="color: #a00515;display: inline-block;width: 40%;cursor: pointer" |
| | | @click="goDismiss(scope.row)" |
| | | >解骋</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column show-overflow-tooltip prop="empNumb" label="员工编号" width="120" /> |
| | | <el-table-column show-overflow-tooltip prop="allDeptName" label="部门(护卫点)" /> |
| | | <el-table-column show-overflow-tooltip prop="jobName" label="岗位" width="100" /> |
| | | <el-table-column show-overflow-tooltip prop="empName" label="姓名" width="100" /> |
| | | <el-table-column show-overflow-tooltip prop="certificateNumb" label="身份证号码" width="160" /> |
| | | <el-table-column show-overflow-tooltip prop="birthdate" label="出生日期" width="120" /> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total>0" |
| | | style="text-align: right;width: 98%;" |
| | | :total="total" |
| | | :page.sync="pagination.num" |
| | | :limit.sync="pagination.size" |
| | | @pagination="search" |
| | | /> |
| | | </el-main> |
| | | </el-container> |
| | | <el-dialog title="退休返骋合同信息" :visible.sync="dialogShowContract" width="50%"> |
| | | <el-form |
| | | ref="contractForm" |
| | | :model="contractForm" |
| | | :rules="contractRules" |
| | | label-position="right" |
| | | label-width="120px" |
| | | > |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="姓名" prop="empName"> |
| | | <el-input v-model="contractForm.empName" /> |
| | | </el-form-item> |
| | | <el-form-item label="身份证号码" prop="certificateNumb"> |
| | | <el-input |
| | | v-model="contractForm.certificateNumb" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="性别" this-emp-base-info-form="sex"> |
| | | <el-select v-model="contractForm.sex" placeholder="请选择性别"> |
| | | <el-option |
| | | v-for="dict in sexOptions" |
| | | :key="dict.dicItemCode" |
| | | :label="dict.dicItemName" |
| | | :value="dict.dicItemCode" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="合同签订日期" prop="signingDate"> |
| | | <el-date-picker |
| | | v-model="contractForm.signingDate" |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="合同状态" prop="contractStatus"> |
| | | <el-select |
| | | v-model="contractForm.contractStatus" |
| | | placeholder="请选择合同状态" |
| | | > |
| | | <el-option |
| | | v-for="dict in contractStatusOptions" |
| | | :key="dict.dicItemCode" |
| | | :label="dict.dicItemName" |
| | | :value="dict.dicItemCode" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="合同办理人" prop="transactor"> |
| | | <el-input v-model="contractForm.transactor" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="员工编号" prop="empNumb"> |
| | | <el-input v-model="contractForm.empNumb" /> |
| | | </el-form-item> |
| | | <el-form-item label="部门(护卫点)" prop="allDeptName"> |
| | | <el-input v-model="contractForm.allDeptName" /> |
| | | </el-form-item> |
| | | <el-form-item label="岗位" prop="jobName"> |
| | | <el-input v-model="contractForm.jobName" /> |
| | | </el-form-item> |
| | | <el-form-item label="合同结束日期" prop="endDate"> |
| | | <el-date-picker |
| | | v-model="contractForm.endDate" |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="合同期限(年)" prop="contractPeriod"> |
| | | <el-input v-model="contractForm.contractPeriod" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="contractForm.remark" type="textarea" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="putContractInfo('contractForm')">保 存</el-button> |
| | | <el-button @click="dialogIsShow()">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import Pagination from '@/components/Pagination' |
| | | import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
| | | import { dateDifference } from '@/utils/myUtil' |
| | | |
| | | export default { |
| | | components: { |
| | | Pagination |
| | | }, |
| | | data() { |
| | | return { |
| | | dialog: { |
| | | isVisible: false, |
| | | title: '', |
| | | type: '' |
| | | }, |
| | | sort: {}, |
| | | // 总数量 |
| | | total: 0, |
| | | // 查询参数 |
| | | queryParams: { |
| | | baseKey: '' |
| | | }, |
| | | // 分页参数 |
| | | pagination: { |
| | | size: 15, |
| | | num: 1 |
| | | }, |
| | | headerHeight: '30px', |
| | | // 合同列表 |
| | | contractList: [], |
| | | dimissLogForm: { |
| | | empIds: '', |
| | | dgryNames: '', |
| | | entryDates: '', |
| | | dimissionType: '', |
| | | dimissionDate: '', |
| | | remark: '', |
| | | afterOperation: '', |
| | | certificateNumb: '', |
| | | deptNames: '' |
| | | }, |
| | | // 合同信息 |
| | | contractForm: { |
| | | empId: '', |
| | | empNumb: '', |
| | | empName: '', |
| | | certificateNumb: '', |
| | | sex: '', |
| | | sexName: '', |
| | | deptId: '', |
| | | deptName: '', |
| | | allDeptName: '', |
| | | JobId: '', |
| | | jobName: '', |
| | | beginDate: '', |
| | | endDate: '', |
| | | contractStatus: '', |
| | | contractPeriod: '', |
| | | transactor: '', |
| | | signingDate: '', |
| | | remark: '', |
| | | createTime: '', |
| | | creator: '', |
| | | modifyTime: '', |
| | | modifier: '', |
| | | delFlag: '', |
| | | empStatus: 0, |
| | | version: '', |
| | | diffDay: 0 |
| | | }, |
| | | sexOptions: [], |
| | | contractStatusOptions: [], |
| | | dialogShowContract: false, |
| | | contractRules: { |
| | | empName: [{ required: true, message: '请选择员工', trigger: 'change' }], |
| | | signingDate: [{ required: true, validator: this.startDate }], |
| | | contractStatus: [{ required: true, message: '请选择合同状态', trigger: 'change' }], |
| | | transactor: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }], |
| | | beginDate: [{ required: true, message: '请选择合同开始日期', trigger: 'change' }], |
| | | endDate: [{ required: true, validator: this.endDate }], |
| | | remark: [{ max: 512, message: '长度不超过512个字符', trigger: 'blur' }] |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.fetch() |
| | | this.getDicts('sex').then(response => { |
| | | this.sexOptions = response.data |
| | | }) |
| | | this.getDicts('CONTRACTSTATUS').then(response => { |
| | | this.contractStatusOptions = response.data |
| | | }) |
| | | }, |
| | | methods: { |
| | | search() { |
| | | this.queryParams.baseKey = '' |
| | | this.fetch({ |
| | | ...this.queryParams, |
| | | ...this.sort |
| | | }) |
| | | }, |
| | | fetch(params = {}) { |
| | | const that = this |
| | | params.pageSize = this.pagination.size |
| | | params.pageNum = this.pagination.num |
| | | params.delFlag = 0 |
| | | params.empStatus = 0 |
| | | |
| | | this.$get('hr/empBaseInfo/retire/alert', { |
| | | ...params |
| | | }).then((r) => { |
| | | const data = r.data.data |
| | | that.total = data.total |
| | | that.contractList = data.rows |
| | | }) |
| | | }, |
| | | changeSort(val) { |
| | | this.sort.field = val.prop |
| | | this.sort.order = val.order |
| | | this.fetch() |
| | | }, |
| | | // 续签合同 |
| | | goOn(row) { |
| | | this.initContractData(row) |
| | | this.dialogShowContract = true |
| | | }, |
| | | dialogIsShow() { |
| | | this.dialogShowContract = false |
| | | }, |
| | | // 解骋 |
| | | goDismiss(val) { |
| | | this.initDimissLogData(val) |
| | | this.$post('hr/empBaseInfo/retire/dismiss', { ...this.dimissLogForm }).then(() => { |
| | | this.buttonLoading = false |
| | | this.$message({ |
| | | message: this.$t('tips.updateSuccess'), |
| | | type: 'success' |
| | | }) |
| | | this.cleanContractData() |
| | | this.fetch() |
| | | }) |
| | | }, |
| | | // 到龄退休 |
| | | initDimissLogData(val) { |
| | | this.dimissLogForm.empIds = val.empId |
| | | this.dimissLogForm.dgryNames = val.empName |
| | | this.dimissLogForm.entryDates = val.entryDate |
| | | this.dimissLogForm.dimissionType = '7' |
| | | this.dimissLogForm.remark = '到龄退休解聘' |
| | | this.dimissLogForm.afterOperation = '1' |
| | | this.dimissLogForm.certificateNumb = val.certificateNumb |
| | | this.dimissLogForm.deptNames = val.allDeptName |
| | | }, |
| | | // 初始化续签合同信息 |
| | | initContractData(val) { |
| | | this.cleanContractData() |
| | | this.contractForm.contractId = val.contractId |
| | | this.contractForm.empId = val.empId |
| | | this.contractForm.empNumb = val.empNumb |
| | | this.contractForm.empName = val.empName |
| | | this.contractForm.certificateNumb = val.certificateNumb |
| | | this.contractForm.sex = val.sex |
| | | this.contractForm.deptId = val.deptId |
| | | this.contractForm.deptName = val.deptName |
| | | this.contractForm.allDeptName = val.allDeptName |
| | | this.contractForm.JobId = val.JobId |
| | | this.contractForm.jobName = val.jobName |
| | | this.contractForm.contractStatus = '5' |
| | | }, |
| | | // 清除续签合同信息 |
| | | cleanContractData() { |
| | | this.contractForm.contractId = '' |
| | | this.contractForm.empId = '' |
| | | this.contractForm.empNumb = '' |
| | | this.contractForm.empName = '' |
| | | this.contractForm.certificateNumb = '' |
| | | this.contractForm.sex = '' |
| | | this.contractForm.deptId = '' |
| | | this.contractForm.deptName = '' |
| | | this.contractForm.allDeptName = '' |
| | | this.contractForm.JobId = '' |
| | | this.contractForm.jobName = '' |
| | | this.contractForm.contractStatus = '' |
| | | this.contractForm.beginDate = '' |
| | | this.contractForm.endDate = '' |
| | | this.contractForm.contractPeriod = 0 |
| | | this.contractForm.remark = '' |
| | | this.contractForm.transactor = '' |
| | | }, |
| | | // 验证合同签订日期 |
| | | startDate(rule, value, callback) { |
| | | // 如果结束日期没选,cb |
| | | if (!this.contractForm.endDate) { |
| | | callback() |
| | | } else { |
| | | // 结束日期有,进行判断 |
| | | if (this.compareDate(value, this.contractForm.endDate)) { |
| | | // 如果起始在结束之前 |
| | | callback() |
| | | } else { |
| | | callback(new Error('开始日期不能在结束日期之后,请重新选择')) |
| | | } |
| | | } |
| | | }, |
| | | // 验证合同结束日期 |
| | | endDate(rule, value, callback) { |
| | | // 如果起始日期没选,cb |
| | | if (!this.contractForm.signingDate) { |
| | | callback() |
| | | } else { |
| | | // 起始日期有,进行判断 |
| | | if (this.compareDate(this.contractForm.signingDate, value)) { |
| | | // 如果起始在结束之前 |
| | | this.contractForm.contractPeriod = dateDifference(this.contractForm.signingDate, this.contractForm.endDate, 'o') |
| | | callback() |
| | | } else { |
| | | callback(new Error('结束日期不能在开始始日期之前,请重新选择')) |
| | | } |
| | | } |
| | | }, |
| | | compareDate(start, end) { |
| | | return new Date(end).getTime() > new Date(start).getTime() |
| | | }, |
| | | // 续签合同提交 |
| | | putContractInfo(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | this.$post('hr/empContractInfo/retire/rehire', { ...this.contractForm }).then(() => { |
| | | this.buttonLoading = false |
| | | this.$message({ |
| | | message: this.$t('处理成功'), |
| | | type: 'success' |
| | | }) |
| | | |
| | | this.cleanContractData() |
| | | this.fetch() |
| | | this.dialogIsShow() |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | <style lang="scss"> |
| | | .zzyg-table { |
| | | .el-table th, .el-table td { |
| | | padding: 7px 0; |
| | | } |
| | | } |
| | | |
| | | .fj-checkbox { |
| | | .el-checkbox__input.is-checked .el-checkbox__inner { |
| | | border-color: #a32c30;; |
| | | background: #a32c30;; |
| | | } |
| | | |
| | | .el-checkbox__label { |
| | | color: #000 !important; |
| | | } |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | .baseinfo .el-container { |
| | | .el-aside { |
| | | background-color: #fff; |
| | | } |
| | | |
| | | .el-main { |
| | | background-color: #fff; |
| | | } |
| | | |
| | | } |
| | | |
| | | .el-main { |
| | | height: 600px; |
| | | } |
| | | |
| | | .el-autocomplete { |
| | | width: 100%; |
| | | } |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | |
| | | .el-aside { |
| | | padding: 20px; |
| | | background: #f3f5f8; |
| | | height: 600px; |
| | | |
| | | .el-tree { |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .searchTable { |
| | | margin-top: 10px; |
| | | border-collapse: collapse; |
| | | width: 100%; |
| | | |
| | | tr { |
| | | border-bottom: 1px dashed #d9dadb; |
| | | } |
| | | |
| | | .td { |
| | | width: 90px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .td-group { |
| | | padding-left: 20px; |
| | | } |
| | | } |
| | | |
| | | .searchTable td, |
| | | .searchTable th { |
| | | color: #000; |
| | | height: 50px; |
| | | background-color: #fff; |
| | | } |
| | | |
| | | #ygxq table { |
| | | border-collapse: collapse; |
| | | margin: 0 auto; |
| | | text-align: center; |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | #ygxq table td, |
| | | #ygxq table th { |
| | | border: 1px solid #DDDCDC; |
| | | color: #666; |
| | | height: 30px; |
| | | } |
| | | |
| | | #ygxq table thead th { |
| | | background-color: #CCE8EB; |
| | | width: 100px; |
| | | } |
| | | |
| | | #ygxq table tr:nth-child(odd) { |
| | | background: #fff; |
| | | } |
| | | |
| | | #ygxq table tr:nth-child(even) { |
| | | background: #F5FAFA; |
| | | } |
| | | |
| | | .tdTitle { |
| | | font-size: 14px; |
| | | font-weight: 700; |
| | | text-align: left; |
| | | } |
| | | |
| | | .link_button { |
| | | color: #169BD5; |
| | | } |
| | | |
| | | .del_button { |
| | | color: #D9001B; |
| | | } |
| | | |
| | | #dcygTable { |
| | | border-collapse: collapse; |
| | | |
| | | tr { |
| | | width: 100%; |
| | | border-bottom: 1px dashed #ccc; |
| | | |
| | | > td:nth-child(even) { |
| | | width: 100px; |
| | | text-align: left; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | #dcygTable td { |
| | | width: 160px; |
| | | text-align: center; |
| | | height: 35px; |
| | | line-height: 35px; |
| | | font-size: 15px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .search-btn { |
| | | display: inline-block; |
| | | width: 3.64vw; |
| | | height: 3.2vh; |
| | | line-height: 3.2vh; |
| | | text-align: center; |
| | | background-color: #a00515; |
| | | color: #fff; |
| | | margin-left: 1vw; |
| | | box-sizing: border-box; |
| | | cursor: pointer; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .sup-search-btn { |
| | | display: inline-block; |
| | | width: 5.2vw; |
| | | height: 3.2vh; |
| | | line-height: 3.2vh; |
| | | text-align: center; |
| | | margin-left: 1vw; |
| | | color: #a00515; |
| | | border: 1px solid #a00515; |
| | | box-sizing: border-box; |
| | | cursor: pointer; |
| | | vertical-align: middle; |
| | | } |
| | | </style> |