From 2d186e743eb24fd44fba02e2146e55273a66f153 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 12 十一月 2025 17:53:47 +0800
Subject: [PATCH] feat: 1.3.0.2

---
 src/views/EmploymentManage/EmploymentSignList.vue             |    9 +
 src/views/FlexJobManage/FlexJobManage.vue                     |   75 ++++++---
 src/views/FlexJobManage/components/AddInternalStaffDialog.vue |  222 +++++++++++++++++++++++++++++++
 src/views/EmploymentManage/components/CheckManageDialog.vue   |    9 +
 src/views/FlexJobManage/components/StaffInfoDialog.vue        |   55 +++----
 src/services/api/typings.d.ts                                 |   18 ++
 src/views/EmploymentManage/TaskManageList.vue                 |   12 +
 src/views/EmploymentManage/CheckReceiveTaskDetail.vue         |    7 
 src/views/EmploymentManage/EmploymentManageArrange.vue        |    6 
 9 files changed, 346 insertions(+), 67 deletions(-)

diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 113f2ac..c354538 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -3901,6 +3901,7 @@
   }
 
   interface GetArrangeTaskUsersQueryResult {
+    objectData?: GetArrangeTaskUsersQueryResultObjectData;
     pageModel?: PagedListQueryResultPageModel;
     /** 鏁版嵁 */
     data?: GetArrangeTaskUsersQueryResultItem[];
@@ -3938,6 +3939,11 @@
     /** 宸ヤ綔缁忛獙 */
     workExperience?: string;
     arrangeStatus?: EnumTaskUserArrangeStatus;
+  }
+
+  interface GetArrangeTaskUsersQueryResultObjectData {
+    /** 鏄惁鍐呴儴浠诲姟 */
+    isInternal?: boolean;
   }
 
   interface GetBankOcrCommand {
@@ -4053,6 +4059,8 @@
   interface GetCheckReceiveTaskQueryResultObjectData {
     /** 渚涘簲鍟咺d */
     supplierEnterpriseId?: string;
+    /** 鏄惁鍐呴儴浠诲姟 */
+    isInternal?: boolean;
     /** 闇�姹備汉鏁� */
     needPeopleNumber?: number;
     /** 浠诲姟鍚嶇О */
@@ -4324,6 +4332,8 @@
     addressName?: string;
     /** 楠屾敹鏂瑰紡 */
     checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
+    /** 鏄惁鍐呴儴浠诲姟 */
+    isInternal?: boolean;
   }
 
   interface GetCodeUrlQueryResult {
@@ -7060,6 +7070,8 @@
     id?: string;
     /** 渚涘簲鍟咺d */
     supplierEnterpriseId?: string;
+    /** 鏄惁鍐呴儴浠诲姟 */
+    isInternal?: boolean;
     /** 渚涘簲鍟� */
     supplierEnterpriseName?: string;
     /** 渚涘簲鍟嗚处鍙� */
@@ -7170,6 +7182,7 @@
   }
 
   interface GetTaskUsersQueryResult {
+    objectData?: GetTaskUsersQueryResultObjectData;
     pageModel?: PagedListQueryResultPageModel;
     /** 鏁版嵁 */
     data?: GetTaskUsersQueryResultItem[];
@@ -7211,6 +7224,11 @@
     hireStatus?: EnumTaskUserHireStatus;
   }
 
+  interface GetTaskUsersQueryResultObjectData {
+    /** 鏄惁鍐呴儴浠诲姟 */
+    isInternal?: boolean;
+  }
+
   interface GetThreeResourceLogsQuery {
     /** 鍒涘缓鏃堕棿-璧峰 */
     createdTimeBegin?: string;
diff --git a/src/views/EmploymentManage/CheckReceiveTaskDetail.vue b/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
index c0e74fa..8eaa267 100644
--- a/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
+++ b/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
@@ -59,13 +59,11 @@
   ProFormCol,
   ProFormColItem,
   ProFormItemV2,
-  ProTableQueryFilterBar,
 } from '@bole-core/components';
 import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
 import * as taskServices from '@/services/api/task';
 import { useQuery } from '@tanstack/vue-query';
 import { OrderUtils } from '@/utils';
-import { EnumBillingMethodUnitText, EnumBillingMethod, EnumBillingMethodText } from '@/constants';
 import dayjs from 'dayjs';
 import CheckManageDialog from './components/CheckManageDialog.vue';
 import ManualCheckManageDialog from './components/ManualCheckManageDialog.vue';
@@ -105,6 +103,8 @@
 const BaseState = {
   loading: true,
   checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
+
+  isInternal: false,
 };
 
 const state = reactive({ ...BaseState });
@@ -141,6 +141,7 @@
         showLoading: !state.loading,
       });
       state.checkReceiveMethods = res.objectData?.checkReceiveMethods;
+      state.isInternal = res.objectData?.isInternal;
       return res;
     } catch (error) {}
   },
@@ -166,6 +167,7 @@
   handleEdit({
     id: row.id,
     checkReceiveMethods: state.checkReceiveMethods,
+    isInternal: state.isInternal,
     isDetail,
   });
 }
@@ -174,6 +176,7 @@
   defaultFormParams: {
     id: '',
     checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
+    isInternal: false,
     isDetail: false,
   },
 });
diff --git a/src/views/EmploymentManage/EmploymentManageArrange.vue b/src/views/EmploymentManage/EmploymentManageArrange.vue
index 573d5d4..42bd81d 100644
--- a/src/views/EmploymentManage/EmploymentManageArrange.vue
+++ b/src/views/EmploymentManage/EmploymentManageArrange.vue
@@ -69,7 +69,7 @@
     },
     extraProps: {
       hide: (row: API.GetArrangeTaskUsersQueryResultItem) =>
-        row.arrangeStatus === EnumTaskUserArrangeStatus.Complete,
+        row.arrangeStatus === EnumTaskUserArrangeStatus.Complete || !state.isInternal,
     },
   },
 };
@@ -84,6 +84,7 @@
 
 const BaseState = {
   loading: true,
+  isInternal: false,
 };
 
 const state = reactive({ ...BaseState });
@@ -117,6 +118,9 @@
       let res = await taskUserServices.getArrangeTaskUsers(params, {
         showLoading: !state.loading,
       });
+      if (res) {
+        state.isInternal = res.objectData?.isInternal;
+      }
       return res;
     } catch (error) {
       console.log('error: ', error);
diff --git a/src/views/EmploymentManage/EmploymentSignList.vue b/src/views/EmploymentManage/EmploymentSignList.vue
index 9ef4fb9..b88a032 100644
--- a/src/views/EmploymentManage/EmploymentSignList.vue
+++ b/src/views/EmploymentManage/EmploymentSignList.vue
@@ -67,7 +67,7 @@
     },
     extraProps: {
       hide: (row: API.GetTaskUsersQueryResultItem) =>
-        row.hireStatus === EnumTaskUserHireStatus.Pass,
+        row.hireStatus === EnumTaskUserHireStatus.Pass || !state.isInternal,
     },
   },
   refuseBtn: {
@@ -76,7 +76,7 @@
     },
     extraProps: {
       hide: (row: API.GetTaskUsersQueryResultItem) =>
-        row.hireStatus !== EnumTaskUserHireStatus.Wait,
+        row.hireStatus !== EnumTaskUserHireStatus.Wait || !state.isInternal,
     },
   },
 };
@@ -90,6 +90,8 @@
 const id = route.params.id as string;
 const BaseState = {
   loading: true,
+
+  isInternal: false,
 };
 
 const state = reactive({ ...BaseState });
@@ -122,6 +124,9 @@
       let res = await taskUserServices.getTaskUsers(params, {
         showLoading: !state.loading,
       });
+      if (res) {
+        state.isInternal = res.objectData?.isInternal;
+      }
       return res;
     } catch (error) {
       console.log('error: ', error);
diff --git a/src/views/EmploymentManage/TaskManageList.vue b/src/views/EmploymentManage/TaskManageList.vue
index d602103..14aeb74 100644
--- a/src/views/EmploymentManage/TaskManageList.vue
+++ b/src/views/EmploymentManage/TaskManageList.vue
@@ -53,9 +53,10 @@
       </ProTableQueryFilterBar>
       <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
         <template #userCount="{ row }">
-          <el-button link type="primary" @click="goSignList(row)">{{
+          <el-button v-if="row.isInternal" link type="primary" @click="goSignList(row)">{{
             row.userCount || 0
           }}</el-button>
+          <span v-else>{{ row.userCount || 0 }}</span>
         </template>
       </ProTableV2>
     </AppContainer>
@@ -94,7 +95,8 @@
       onClick: (role) => goAddOrEdit(role),
     },
     extraProps: {
-      hide: (row: API.GetTaskInfosQueryResultItem) => row.status === EnumTaskStatus.Complete,
+      hide: (row: API.GetTaskInfosQueryResultItem) =>
+        row.status === EnumTaskStatus.Complete || !row.isInternal,
     },
   },
   detailBtn: {
@@ -109,7 +111,7 @@
     },
     extraProps: {
       hide: (row: API.GetTaskInfosQueryResultItem) =>
-        row.releaseStatus === EnumTaskReleaseStatus.InProcess,
+        row.releaseStatus === EnumTaskReleaseStatus.InProcess || !row.isInternal,
     },
   },
   unPublishBtn: {
@@ -119,7 +121,7 @@
     },
     extraProps: {
       hide: (row: API.GetTaskInfosQueryResultItem) =>
-        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
+        row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
     },
   },
   arrangeBtn: {
@@ -128,7 +130,7 @@
     },
     extraProps: {
       hide: (row: API.GetTaskInfosQueryResultItem) =>
-        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
+        row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
     },
   },
 };
diff --git a/src/views/EmploymentManage/components/CheckManageDialog.vue b/src/views/EmploymentManage/components/CheckManageDialog.vue
index 689f0fa..c0b155b 100644
--- a/src/views/EmploymentManage/components/CheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -39,6 +39,7 @@
 type Form = {
   id: string;
   checkReceiveMethods: EnumTaskCheckReceiveMethod[];
+  isInternal: boolean;
   isDetail: boolean;
 };
 
@@ -157,7 +158,9 @@
         !(
           row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
           row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
-        ) || form.value.isDetail,
+        ) ||
+        form.value.isDetail ||
+        !form.value.isInternal,
     },
   },
   {
@@ -173,7 +176,9 @@
         !(
           row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
           row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
-        ) || form.value.isDetail,
+        ) ||
+        form.value.isDetail ||
+        !form.value.isInternal,
     },
   },
   {
diff --git a/src/views/FlexJobManage/FlexJobManage.vue b/src/views/FlexJobManage/FlexJobManage.vue
index da5ec98..b723cbc 100644
--- a/src/views/FlexJobManage/FlexJobManage.vue
+++ b/src/views/FlexJobManage/FlexJobManage.vue
@@ -124,7 +124,7 @@
           </BlFileUpload>
           <el-button
             v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
-            @click="handleStaffInfoAdd()"
+            @click="handleInternalStaffAdd()"
             type="primary"
             >鏂板缓</el-button
           >
@@ -174,6 +174,7 @@
     />
     <SendShotMessageDialog v-bind="dialogShotMessageProps" />
     <SignDialog v-bind="dialogSignProps" />
+    <AddInternalStaffDialog v-bind="dialogAddInternalStaffProps" />
   </LoadingLayout>
 </template>
 
@@ -202,6 +203,7 @@
 import BatchImportDialog from './components/BatchImportDialog.vue';
 import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
 import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue';
+import AddInternalStaffDialog from './components/AddInternalStaffDialog.vue';
 import SignDialog from './components/SignDialog.vue';
 import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
 import { ModelValueType } from 'element-plus';
@@ -304,7 +306,7 @@
   handleAdd: handleStaffInfoAdd,
   editForm: staffInfoEditForm,
 } = useFormDialog({
-  onConfirm: addEnterpriseEmployee,
+  onConfirm: editEnterpriseEmployee,
   defaultFormParams: {
     id: '',
     name: '',
@@ -318,7 +320,6 @@
     regiterTime: '',
     userRealTime: '',
     userSignContractTime: '',
-    contractTime: [] as unknown as ModelValueType,
     isDetail: false,
   },
 });
@@ -342,31 +343,7 @@
       userRealTime: row.userRealTime ?? '',
       userSignContractTime: row.userSignContractTime ?? '',
       isDetail: isDetail,
-
-      contractTime: [row.contractBegin, row.contractEnd],
     });
-  } catch (error) {}
-}
-
-async function addEnterpriseEmployee() {
-  try {
-    let params: API.AddEnterpriseEmployeeCommand = {
-      name: staffInfoEditForm.name,
-      identity: staffInfoEditForm.identity,
-      contactPhoneNumber: staffInfoEditForm.contactPhoneNumber,
-      gender: staffInfoEditForm.gender,
-      age: staffInfoEditForm.age,
-      identityImg: staffInfoEditForm.identityImg[0]?.path ?? '',
-      identityBackImg: staffInfoEditForm.identityBackImg[0]?.path ?? '',
-      contractUrl: staffInfoEditForm.contractUrl[0]?.path ?? '',
-      contractBegin: format(staffInfoEditForm.contractTime[0], 'YYYY-MM-DD 00:00:00'),
-      contractEnd: format(staffInfoEditForm.contractTime[1], 'YYYY-MM-DD 23:59:59'),
-    };
-    let res = await enterpriseEmployeeServices.addEnterpriseEmployee(params);
-    if (res) {
-      Message.successMessage('鎿嶄綔鎴愬姛');
-      getList(paginationState.pageIndex);
-    }
   } catch (error) {}
 }
 
@@ -676,4 +653,48 @@
     state.flexjobUrl = [] as UploadUserFile[];
   }
 }
+
+const {
+  dialogProps: dialogAddInternalStaffProps,
+  handleAdd: handleInternalStaffAdd,
+  editForm: internalStaffEditForm,
+} = useFormDialog({
+  onConfirm: addEnterpriseEmployee,
+  defaultFormParams: {
+    name: '',
+    identity: '',
+    contactPhoneNumber: '',
+    gender: EnumUserGender.Male,
+    age: null as any as number,
+    identityImg: [] as UploadUserFile[],
+    identityBackImg: [] as UploadUserFile[],
+    contractUrl: [] as UploadUserFile[],
+    regiterTime: '',
+    userRealTime: '',
+    userSignContractTime: '',
+    contractTime: [] as unknown as ModelValueType,
+  },
+});
+
+async function addEnterpriseEmployee() {
+  try {
+    let params: API.AddEnterpriseEmployeeCommand = {
+      name: internalStaffEditForm.name,
+      identity: internalStaffEditForm.identity,
+      contactPhoneNumber: internalStaffEditForm.contactPhoneNumber,
+      gender: internalStaffEditForm.gender,
+      age: internalStaffEditForm.age,
+      identityImg: internalStaffEditForm.identityImg[0]?.path ?? '',
+      identityBackImg: internalStaffEditForm.identityBackImg[0]?.path ?? '',
+      contractUrl: internalStaffEditForm.contractUrl[0]?.path ?? '',
+      contractBegin: format(internalStaffEditForm.contractTime[0], 'YYYY-MM-DD 00:00:00'),
+      contractEnd: format(internalStaffEditForm.contractTime[1], 'YYYY-MM-DD 23:59:59'),
+    };
+    let res = await enterpriseEmployeeServices.addEnterpriseEmployee(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>
diff --git a/src/views/FlexJobManage/components/AddInternalStaffDialog.vue b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
new file mode 100644
index 0000000..8d16ddd
--- /dev/null
+++ b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
@@ -0,0 +1,222 @@
+<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"
+            :check-rules="[{ message: '璇烽�夋嫨鍗忚鏃堕棿', type: 'array' }]"
+          >
+            <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;
+  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>
diff --git a/src/views/FlexJobManage/components/StaffInfoDialog.vue b/src/views/FlexJobManage/components/StaffInfoDialog.vue
index 94309b3..0dd52d5 100644
--- a/src/views/FlexJobManage/components/StaffInfoDialog.vue
+++ b/src/views/FlexJobManage/components/StaffInfoDialog.vue
@@ -15,13 +15,8 @@
           </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 v-if="form.isDetail" label="鎶ュ悕鏃堕棿锛�" prop="regiterTime">
+            <div>{{ format(form.regiterTime, 'YYYY-MM-DD HH:mm') }}</div>
           </ProFormItemV2>
         </ProFormColItem>
         <ProFormColItem :span="12">
@@ -38,18 +33,8 @@
           </ProFormItemV2>
         </ProFormColItem>
         <ProFormColItem :span="12">
-          <ProFormItemV2
-            label="鍗忚鏃堕棿:"
-            prop="contractTime"
-            :check-rules="[{ message: '璇烽�夋嫨鍗忚鏃堕棿', type: 'array' }]"
-          >
-            <ProFormDatePicker
-              v-model="form.contractTime"
-              type="daterange"
-              range-separator="鑷�"
-              start-placeholder="璧峰鏃ユ湡"
-              end-placeholder="缁堟鏃ユ湡"
-            ></ProFormDatePicker>
+          <ProFormItemV2 v-if="form.isDetail" label="瀹炲悕鏃堕棿锛�" prop="userRealTime">
+            <div>{{ format(form.userRealTime, 'YYYY-MM-DD HH:mm') }}</div>
           </ProFormItemV2>
         </ProFormColItem>
         <ProFormColItem :span="12">
@@ -64,7 +49,11 @@
             ></ProFormText>
           </ProFormItemV2>
         </ProFormColItem>
-        <ProFormColItem :span="12"> </ProFormColItem>
+        <ProFormColItem :span="12">
+          <ProFormItemV2 v-if="form.isDetail" label="绛剧害鏃堕棿锛�" prop="userSignContractTime">
+            <div>{{ format(form.userSignContractTime, 'YYYY-MM-DD HH:mm') }}</div>
+          </ProFormItemV2>
+        </ProFormColItem>
         <ProFormColItem :span="12">
           <ProFormItemV2
             label="鎬у埆锛�"
@@ -79,7 +68,16 @@
             ></ProFormRadio>
           </ProFormItemV2>
         </ProFormColItem>
-        <ProFormColItem :span="12"> </ProFormColItem>
+        <ProFormColItem :span="12">
+          <ProFormItemV2 v-if="form.isDetail" 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="骞撮緞锛�"
@@ -92,8 +90,12 @@
               :min="0"
               :max="9999"
               placeholder="璇疯緭鍏ュ勾榫�"
-              unit="宀�"
-            />
+            >
+              <template #readContent>
+                <span v-if="form.age">{{ form.age }}宀�</span>
+                <span v-else></span>
+              </template>
+            </ProFormInputNumber>
           </ProFormItemV2>
         </ProFormColItem>
       </ProFormCol>
@@ -127,7 +129,7 @@
         <el-button v-if="form.isDetail" @click="emit('onCancel')">鍏抽棴</el-button>
         <template v-else>
           <el-button type="primary" @click="handleConfirm">鎻愪氦</el-button>
-          <!-- <el-button @click="handleReset">閲嶇疆</el-button> -->
+          <el-button @click="handleReset">閲嶇疆</el-button>
           <el-button @click="emit('onCancel')">鍙栨秷</el-button>
         </template>
       </span>
@@ -136,7 +138,7 @@
 </template>
 
 <script setup lang="ts">
-import { FormInstance, ModelValueType } from 'element-plus';
+import { FormInstance } from 'element-plus';
 import {
   ProDialog,
   ProForm,
@@ -149,7 +151,6 @@
   ProFormRadio,
   ProFormUpload,
   ProFormInputNumber,
-  ProFormDatePicker,
 } from '@bole-core/components';
 import { calculateAge, deepClone, format } from '@/utils';
 import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
@@ -174,8 +175,6 @@
   userRealTime: string;
   userSignContractTime: string;
   isDetail: boolean;
-
-  contractTime: ModelValueType;
 };
 
 const visible = defineModel({ type: Boolean });

--
Gitblit v1.9.1