| | |
| | | </span> |
| | | </template> |
| | | |
| | | <!-- 第一行:合同开始 / 合同结束 / 试用期 / 转正 --> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="工号" prop="jobNo"> |
| | | <el-input |
| | | v-model="form.jobNo" |
| | | placeholder="请输入" |
| | | clearable |
| | | maxlength="20" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="员工类型" prop="staffType"> |
| | | <el-select |
| | | v-model="form.staffType" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%" |
| | | > |
| | | <el-option label="正式员工" value="official" /> |
| | | <el-option label="试用员工" value="probation" /> |
| | | <el-option label="实习生" value="intern" /> |
| | | <el-option label="兼职" value="part_time" /> |
| | | <el-option label="劳务/外包" value="outsourcing" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="入职日期" prop="entryDate"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="入职日期" prop="contractStartTime"> |
| | | <el-date-picker |
| | | v-model="form.entryDate" |
| | | v-model="form.contractStartTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | clearable |
| | | @change="calculateContractTerm" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-col :span="6"> |
| | | <el-form-item |
| | | label="合同结束日期" |
| | | prop="contractEndTime" |
| | | required |
| | | :rules="[ |
| | | { |
| | | required: true, |
| | | message: '请选择合同结束日期', |
| | | trigger: 'change', |
| | | }, |
| | | ]" |
| | | > |
| | | <el-date-picker |
| | | v-model="form.contractEndTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | clearable |
| | | @change="calculateContractTerm" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="试用期(月)" prop="probationPeriod"> |
| | | <el-input-number |
| | | v-model="form.probationPeriod" |
| | | v-model="form.proTerm" |
| | | :min="0" |
| | | :max="24" |
| | | :precision="0" |
| | |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label="转正日期" prop="regularDate"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="转正日期" prop="positiveDate"> |
| | | <el-date-picker |
| | | v-model="form.regularDate" |
| | | v-model="form.positiveDate" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 第二行:部门 / 岗位 / 基本工资 --> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="部门" prop="sysDeptId"> |
| | |
| | | :render-after-expand="false" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="直接上级" prop="directLeader"> |
| | | <el-input |
| | | v-model="form.directLeader" |
| | | placeholder="请输入" |
| | | clearable |
| | | maxlength="50" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="24"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="职级" prop="jobLevel"> |
| | | <el-input |
| | | v-model="form.jobLevel" |
| | | placeholder="请输入" |
| | | clearable |
| | | maxlength="10" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="基本工资" prop="basicSalary"> |
| | | <el-input-number |
| | | v-model="form.basicSalary" |
| | |
| | | }); |
| | | |
| | | const { form, postOptions, deptOptions } = toRefs(props); |
| | | |
| | | // 计算合同年限 |
| | | const calculateContractTerm = () => { |
| | | if (form.value.contractStartTime && form.value.contractEndTime) { |
| | | const startDate = new Date(form.value.contractStartTime); |
| | | const endDate = new Date(form.value.contractEndTime); |
| | | |
| | | if (endDate > startDate) { |
| | | // 计算年份差 |
| | | const yearDiff = endDate.getFullYear() - startDate.getFullYear(); |
| | | const monthDiff = endDate.getMonth() - startDate.getMonth(); |
| | | const dayDiff = endDate.getDate() - startDate.getDate(); |
| | | |
| | | let years = yearDiff; |
| | | |
| | | // 如果结束日期的月日小于开始日期的月日,则减去1年 |
| | | if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) { |
| | | years = yearDiff - 1; |
| | | } |
| | | |
| | | form.value.contractTerm = Math.max(0, years); |
| | | } else { |
| | | form.value.contractTerm = 0; |
| | | } |
| | | } else { |
| | | form.value.contractTerm = 0; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |