From 32f10392ab00b07e85c0b4229037c30af7c3f28e Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 27 一月 2026 10:42:49 +0800
Subject: [PATCH] 浪潮对接单点登录:mis调整2
---
src/views/personnelManagement/onboarding/components/formDia.vue | 147 +++++++++++++++++-------------------------------
1 files changed, 53 insertions(+), 94 deletions(-)
diff --git a/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue b/src/views/personnelManagement/onboarding/components/formDia.vue
similarity index 76%
rename from src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue
rename to src/views/personnelManagement/onboarding/components/formDia.vue
index 06eee04..515eeb8 100644
--- a/src/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue
+++ b/src/views/personnelManagement/onboarding/components/formDia.vue
@@ -29,47 +29,20 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鎴风睄浣忓潃锛�" prop="nativePlace">
+ <el-form-item label="绫嶈疮锛�" prop="nativePlace">
<el-input v-model="form.nativePlace" placeholder="璇疯緭鍏�" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="宀椾綅锛�" prop="sysPostId">
- <el-select v-model="form.sysPostId" placeholder="璇烽�夋嫨宀椾綅" clearable>
- <el-option
- v-for="item in postOptions"
- :key="item.postId"
- :label="item.postName"
- :value="item.postId"
- :disabled="item.status === '1'"
- />
- </el-select>
+ <el-form-item label="宀椾綅锛�" prop="postJob">
+ <el-input v-model="form.postJob" placeholder="璇疯緭鍏�" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鐜颁綇鍧�锛�" prop="adress">
+ <el-form-item label="瀹跺涵浣忓潃锛�" prop="adress">
<el-input v-model="form.adress" placeholder="璇疯緭鍏�" clearable/>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="閮ㄩ棬锛�" prop="sysDeptId">
- <el-tree-select
- v-model="form.sysDeptId"
- :data="deptOptions"
- :props="{ value: 'id', label: 'label', children: 'children' }"
- value-key="id"
- placeholder="璇烽�夋嫨閮ㄩ棬"
- check-strictly
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="骞撮緞锛�" prop="age">
- <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
@@ -82,6 +55,18 @@
<el-col :span="12">
<el-form-item label="涓撲笟锛�" prop="profession">
<el-input v-model="form.profession" placeholder="璇疯緭鍏�" clearable/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="韬唤璇佸彿锛�" prop="identityCard">
+ <el-input v-model="form.identityCard" placeholder="璇疯緭鍏�" clearable/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="骞撮緞锛�" prop="age">
+ <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
@@ -120,7 +105,7 @@
format="YYYY-MM-DD"
clearable
style="width: 100%"
- @change="calculateContractTerm"
+ @change="calculateContractTerm"
/>
</el-form-item>
</el-col>
@@ -134,10 +119,30 @@
format="YYYY-MM-DD"
clearable
style="width: 100%"
- @change="calculateContractTerm"
+ @change="calculateContractTerm"
/>
</el-form-item>
</el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="璇曠敤鏈燂紙鏈堬級锛�" prop="probationPeriod">
+ <el-input-number v-model="form.probationPeriod" :precision="0" :step="1" min="0" style="width: 100%"/>
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="12">
+ <el-form-item label="鍏ヨ亴鏃ユ湡锛�" prop="entryDate">
+ <el-date-picker
+ v-model="form.entryDate"
+ type="date"
+ placeholder="璇烽�夋嫨鏃ユ湡"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ clearable
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col> -->
</el-row>
</el-form>
<template #footer>
@@ -151,17 +156,13 @@
</template>
<script setup>
-import {ref, onMounted} from "vue";
-import {findPostOptions} from "@/api/system/post.js";
-import {listDept} from "@/api/system/dept.js";
-import {staffOnJobInfo, createStaffOnJob, updateStaffOnJob} from "@/api/personnelManagement/staffOnJob.js";
-import {deptTreeSelect} from "@/api/system/user.js";
+import {ref, reactive, toRefs} from "vue";
+import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
const operationType = ref('')
-const id = ref(0)
const data = reactive({
form: {
staffNo: "",
@@ -172,6 +173,7 @@
adress: "",
firstStudy: "",
profession: "",
+ identityCard: "",
age: 0,
phone: "",
emergencyContact: "",
@@ -180,8 +182,7 @@
contractStartTime: "",
contractEndTime: "",
staffState: "",
- sysPostId: undefined,
- sysDeptId: undefined,
+ probationPeriod: 3, // 榛樿璇曠敤鏈�3涓湀
},
rules: {
staffNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },],
@@ -192,6 +193,7 @@
adress: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
firstStudy: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
profession: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ identityCard: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
age: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
phone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
emergencyContact: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
@@ -200,76 +202,33 @@
contractStartTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
contractEndTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
},
- postOptions: [], // 宀椾綅閫夐」
- deptOptions: [], // 閮ㄩ棬閫夐」
});
-const { form, rules, postOptions, deptOptions } = toRefs(data);
+const { form, rules } = toRefs(data);
// 鎵撳紑寮规
const openDialog = (type, row) => {
operationType.value = type;
dialogFormVisible.value = true;
if (operationType.value === 'edit') {
- id.value = row.id
- staffOnJobInfo(id.value, {}).then(res => {
+ getStaffJoinInfo(row.id).then(res => {
form.value = {...res.data}
- if (form.value.sysPostId === 0) {
- form.value.sysPostId = undefined
- }
// 缂栬緫鏃朵篃璁$畻涓�娆″悎鍚屽勾闄�
calculateContractTerm();
})
- } else {
- form.value.id = ''
- }
-
+ }
}
-onMounted(() => {
- fetchPostOptions()
- fetchDeptOptions()
-})
-
-const fetchPostOptions = () => {
- findPostOptions().then(res => {
- postOptions.value = res.data
- })
-}
-
-// 鏌ヨ閮ㄩ棬鍒楄〃
-const fetchDeptOptions = () => {
- deptTreeSelect().then(response => {
- deptOptions.value = filterDisabledDept(JSON.parse(JSON.stringify(response.data)))
- })
-}
-
-/** 杩囨护绂佺敤鐨勯儴闂� */
-function filterDisabledDept(deptList) {
- return deptList.filter(dept => {
- if (dept.disabled) {
- return false
- }
- if (dept.children && dept.children.length) {
- dept.children = filterDisabledDept(dept.children)
- }
- return true
- })
-}
-
// 鎻愪氦浜у搧琛ㄥ崟
const submitForm = () => {
- if (!form.value.sysPostId) {
- form.value.sysPostId = 0;
- }
proxy.$refs.formRef.validate(valid => {
if (valid) {
form.value.staffState = 1
if (operationType.value === "add") {
- createStaffOnJob(form.value).then(res => {
+ staffJoinAdd(form.value).then(res => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
})
} else {
- updateStaffOnJob(id.value, form.value).then(res => {
+ staffJoinUpdate(form.value).then(res => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
})
@@ -282,20 +241,20 @@
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;
@@ -318,4 +277,4 @@
<style scoped>
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3