From d01af540b961aaaa17f68e70374f78a6695219cc Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 17 十一月 2025 10:25:32 +0800
Subject: [PATCH] fix: bug
---
src/views/FlexJobManage/components/AddInternalStaffDialog.vue | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 219 insertions(+), 0 deletions(-)
diff --git a/src/views/FlexJobManage/components/AddInternalStaffDialog.vue b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
new file mode 100644
index 0000000..5939095
--- /dev/null
+++ b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
@@ -0,0 +1,219 @@
+<template>
+ <ProDialog
+ title="鏂板缓鐏靛伐"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ :width="900"
+ >
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="濮撳悕锛�" prop="name" :check-rules="[{ message: '璇疯緭鍏ュ鍚�' }]">
+ <ProFormText placeholder="璇疯緭鍏ュ鍚�" v-model.trim="form.name"></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鏈嶅姟鍗忚锛�" prop="contractUrl">
+ <ProFormUpload
+ v-model:file-url="form.contractUrl"
+ :limit="1"
+ :limitFileSize="10"
+ accept="jpg/jpeg,png,pdf"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="韬唤璇佸彿锛�"
+ prop="identity"
+ :check-rules="[{ message: '璇疯緭鍏ヨ韩浠借瘉鍙�', type: 'idCard' }]"
+ >
+ <ProFormText
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"
+ v-model.trim="form.identity"
+ @blur="handleCalculateAge"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鍗忚鏃堕棿:" prop="contractTime">
+ <ProFormDatePicker
+ v-model="form.contractTime"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="璧峰鏃ユ湡"
+ end-placeholder="缁堟鏃ユ湡"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鎵嬫満鍙凤細"
+ prop="contactPhoneNumber"
+ :check-rules="[{ message: '璇疯緭鍏ユ墜鏈哄彿', type: 'phone' }]"
+ >
+ <ProFormText
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ v-model.trim="form.contactPhoneNumber"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12"> </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鎬у埆锛�"
+ prop="gender"
+ required
+ :check-rules="[{ message: '璇烽�夋嫨鎬у埆' }]"
+ >
+ <ProFormRadio
+ v-model="form.gender"
+ :value-enum="EnumUserGenderTextForPerson"
+ :buttonStyle="false"
+ ></ProFormRadio>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12"> </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="骞撮緞锛�"
+ prop="age"
+ :check-rules="[{ message: '璇疯緭鍏ュ勾榫�', type: 'number' }]"
+ >
+ <ProFormInputNumber
+ v-model="form.age"
+ :controls="false"
+ :min="0"
+ :max="9999"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ unit="宀�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormItemV2
+ label="韬唤璇佹闈細"
+ prop="identityImg"
+ :check-rules="[{ message: '璇蜂笂浼犺韩浠借瘉姝i潰', type: 'upload' }]"
+ >
+ <ProFormImageUpload
+ v-model:file-url="form.identityImg"
+ :limitFileSize="10"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="韬唤璇佸弽闈細"
+ prop="identityBackImg"
+ :check-rules="[{ message: '璇蜂笂浼犺韩浠借瘉鍙嶉潰', type: 'upload' }]"
+ >
+ <ProFormImageUpload
+ v-model:file-url="form.identityBackImg"
+ :limitFileSize="10"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">鎻愪氦</el-button>
+ <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance, ModelValueType } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ UploadUserFile,
+ ProFormCol,
+ ProFormColItem,
+ ProFormImageUpload,
+ ProFormRadio,
+ ProFormUpload,
+ ProFormInputNumber,
+ ProFormDatePicker,
+} from '@bole-core/components';
+import { calculateAge, deepClone, format } from '@/utils';
+import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
+import { BoleRegExp } from '@bole-core/core';
+
+defineOptions({
+ name: 'AddInternalStaffDialog',
+});
+
+type Form = {
+ title?: string;
+ id: string;
+ name: string;
+ identity: string;
+ contactPhoneNumber: string;
+ gender: EnumUserGender;
+ age: number;
+ identityImg: UploadUserFile[];
+ identityBackImg: UploadUserFile[];
+ contractUrl: UploadUserFile[];
+ regiterTime: string;
+ userRealTime: string;
+ userSignContractTime: string;
+
+ contractTime: ModelValueType;
+};
+
+const visible = defineModel({ type: Boolean });
+
+const form = defineModel<Form>('form');
+let defaultForm: Form = null;
+
+watch(
+ visible,
+ (visible) => {
+ if (visible) {
+ defaultForm = deepClone(unref(form));
+ }
+ },
+ {
+ immediate: true,
+ }
+);
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+
+function handleReset() {
+ form.value = { ...defaultForm };
+}
+
+function handleCalculateAge() {
+ form.value.age = calculateAge(form.value.identity);
+}
+</script>
--
Gitblit v1.9.1