优化日程提醒模块

This commit is contained in:
hero920103 committed 2026-09-08 22:18:36 +08:00
1 parent 3d53f03246
commit 7f3de60423
17 files changed
+1516 -270

No files matched your search

@@ -53,6 +53,38 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="学历" prop="education">
<el-select
v-model="form.education"
filterable
allow-create
default-first-option
clearable
placeholder="选择或输入"
style="width: 100%"
>
<el-option v-for="opt in educationOptions" :key="opt" :label="opt" :value="opt" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="民族" prop="nation">
<el-select
v-model="form.nation"
filterable
allow-create
default-first-option
clearable
placeholder="选择或输入"
style="width: 100%"
>
<el-option v-for="opt in nationOptions" :key="opt" :label="opt" :value="opt" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="婚姻状况" prop="marital_status">
@@ -149,7 +181,7 @@
</template>
<script setup>
import { computed, reactive, ref } from 'vue';
import { computed, reactive, ref, watch } from 'vue';
import { ElMessage } from 'element-plus';
import { createEmployeeFile, getFiledEmployeeIds, updateEmployeeFile } from '@/api/employeeFile';
import { oaOrganizationApi } from '@/api/organization';
@@ -176,10 +208,23 @@ const filedIds = ref([]);
const politicalOptions = ['群众', '中共党员', '中共预备党员', '共青团员', '民主党派', '无党派人士'];
const educationOptions = ['小学', '初中', '高中', '中专', '大专', '本科', '硕士研究生', '博士研究生', '其他'];
const nationOptions = [
'汉族', '蒙古族', '回族', '藏族', '维吾尔族', '苗族', '彝族', '壮族', '布依族', '朝鲜族',
'满族', '侗族', '瑶族', '白族', '土家族', '哈尼族', '哈萨克族', '傣族', '黎族', '傈僳族',
'佤族', '畲族', '高山族', '拉祜族', '水族', '东乡族', '纳西族', '景颇族', '柯尔克孜族', '土族',
'达斡尔族', '仫佬族', '羌族', '布朗族', '撒拉族', '毛南族', '仡佬族', '锡伯族', '阿昌族', '普米族',
'塔吉克族', '怒族', '乌孜别克族', '俄罗斯族', '鄂温克族', '德昂族', '保安族', '裕固族', '京族', '塔塔尔族',
'独龙族', '鄂伦春族', '赫哲族', '门巴族', '珞巴族', '基诺族',
];
const form = reactive({
employee_id: null,
file_no: '',
id_card: '',
education: '',
nation: '',
political_status: '',
marital_status: 0,
native_place: '',
@@ -213,10 +258,26 @@ const candidateEmployees = computed(() => {
return allEmployees.value.filter((emp) => !filed.has(Number(emp.id)));
});
/** 新建档案时选择员工,自动带出员工已有数据,避免重复录入 */
watch(
() => form.employee_id,
(id) => {
if (isEdit.value || !id) return;
const emp = allEmployees.value.find((e) => Number(e.id) === Number(id));
if (!emp) return;
if (!form.work_email && emp.email) form.work_email = emp.email;
if (!form.current_address && emp.home_address) form.current_address = emp.home_address;
if (!form.education && emp.education) form.education = emp.education;
if (!form.nation && emp.nation) form.nation = emp.nation;
}
);
const resetForm = () => {
form.employee_id = null;
form.file_no = '';
form.id_card = '';
form.education = '';
form.nation = '';
form.political_status = '';
form.marital_status = 0;
form.native_place = '';
@@ -269,6 +330,8 @@ const open = async (file = null) => {
form.employee_id = file.employee_id ? Number(file.employee_id) : null;
form.file_no = file.file_no || '';
form.id_card = file.id_card || '';
form.education = file.education || '';
form.nation = file.nation || '';
form.political_status = file.political_status || '';
form.marital_status = Number(file.marital_status ?? 0);
form.native_place = file.native_place || '';