From 336441bd3d811427f957654f12936c4cab9b4c1a Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 28 十一月 2025 16:42:00 +0800
Subject: [PATCH] fix: bug

---
 src/views/FlexJobManage/FlexJobManage.vue |  140 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 105 insertions(+), 35 deletions(-)

diff --git a/src/views/FlexJobManage/FlexJobManage.vue b/src/views/FlexJobManage/FlexJobManage.vue
index b626354..98bdc03 100644
--- a/src/views/FlexJobManage/FlexJobManage.vue
+++ b/src/views/FlexJobManage/FlexJobManage.vue
@@ -27,11 +27,10 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="鐏靛伐鏉ユ簮">
             <FieldRadio
-              v-model="extraParamState.isReal"
-              :value-enum="[]"
+              v-model="extraParamState.source"
+              :value-enum="EnumEnterpriseEmployeeSourceText"
               buttonStyle
               showAllBtn
-              :all-btn-value="null"
               @change="getList()"
             />
           </QueryFilterItem>
@@ -79,7 +78,7 @@
           </QueryFilterItem> -->
           <QueryFilterItem>
             <FieldDatePicker
-              v-model="extraParamState.createdTime"
+              v-model="extraParamState.userRealTime"
               type="daterange"
               range-separator="~"
               start-placeholder="璧峰鏃ユ湡"
@@ -120,11 +119,11 @@
             :limit="1"
             accept="xlsx,xls"
           >
-            <el-button text type="primary" class="pro-table-operation-btn">鎵归噺瀵煎叆</el-button>
+            <el-button type="primary" class="pro-table-operation-btn">鎵归噺瀵煎叆</el-button>
           </BlFileUpload>
           <el-button
             v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
-            @click="handleStaffInfoAdd()"
+            @click="handleInternalStaffAdd()"
             type="primary"
             >鏂板缓</el-button
           >
@@ -174,6 +173,7 @@
     />
     <SendShotMessageDialog v-bind="dialogShotMessageProps" />
     <SignDialog v-bind="dialogSignProps" />
+    <AddInternalStaffDialog v-bind="dialogAddInternalStaffProps" />
   </LoadingLayout>
 </template>
 
@@ -195,13 +195,23 @@
   XLSXUtils,
   BlFileUpload,
 } from '@bole-core/components';
-import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
+import {
+  EnumTaskUserHireStatusText,
+  EnumTaskUserSignContractStatusText,
+  EnumEnterpriseEmployeeSourceText,
+} from '@/constants';
 import { Message } from '@bole-core/core';
-import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
+import {
+  convertApi2FormUrlOnlyOne,
+  downloadFileByUrl,
+  format,
+  hiddenIDNumberForEnd4,
+} from '@/utils';
 import StaffInfoDialog from './components/StaffInfoDialog.vue';
 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';
@@ -215,7 +225,11 @@
 const operationBtnMap: Record<string, OperationBtnType> = {
   editBtn: {
     emits: {
-      onClick: (role) => openDialog(role),
+      onClick: (role) => openInternalDialog(role),
+    },
+    extraProps: {
+      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+        row.source === EnumEnterpriseEmployeeSource.External,
     },
   },
   detailBtn: {
@@ -304,7 +318,7 @@
   handleAdd: handleStaffInfoAdd,
   editForm: staffInfoEditForm,
 } = useFormDialog({
-  onConfirm: addEnterpriseEmployee,
+  onConfirm: editEnterpriseEmployee,
   defaultFormParams: {
     id: '',
     name: '',
@@ -318,7 +332,6 @@
     regiterTime: '',
     userRealTime: '',
     userSignContractTime: '',
-    contractTime: [] as unknown as ModelValueType,
     isDetail: false,
   },
 });
@@ -342,31 +355,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 +665,85 @@
     state.flexjobUrl = [] as UploadUserFile[];
   }
 }
+
+const {
+  dialogProps: dialogAddInternalStaffProps,
+  handleAdd: handleInternalStaffAdd,
+  handleEdit: handleInternalStaffEdit,
+  editForm: internalStaffEditForm,
+  dialogState: internalDialogState,
+} = useFormDialog({
+  onConfirm: addEnterpriseEmployee,
+  defaultFormParams: {
+    id: '',
+    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,
+  },
+  closeAfterConfirm: false,
+});
+
+async function openInternalDialog(row: API.GetEnterpriseEmployeesQueryResultItem) {
+  try {
+    let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({ id: row.id });
+    handleInternalStaffEdit({
+      id: row.id,
+      name: row.name,
+      identity: row.identity,
+      contactPhoneNumber: row.contactPhoneNumber,
+      gender: detail.gender,
+      age: detail.age ?? null,
+      identityImg: convertApi2FormUrlOnlyOne(detail.identityImg),
+      identityBackImg: convertApi2FormUrlOnlyOne(detail.identityBackImg),
+      contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, {
+        fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '鍚堝悓',
+      }),
+      regiterTime: detail.applyTime ?? '',
+      userRealTime: row.userRealTime ?? '',
+      userSignContractTime: row.userSignContractTime ?? '',
+      contractTime: [row.contractBegin, row.contractEnd],
+    });
+  } catch (error) {}
+}
+
+async function addEnterpriseEmployee() {
+  try {
+    const isEdit = !!internalStaffEditForm.id;
+    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;
+    if (isEdit) {
+      (params as API.EditEnterpriseEmployeeCommand).id = internalStaffEditForm.id;
+      res = await enterpriseEmployeeServices.editEnterpriseEmployee(params);
+    } else {
+      res = await enterpriseEmployeeServices.addEnterpriseEmployee(params);
+    }
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+      internalDialogState.dialogVisible = false;
+    }
+  } catch (error) {
+    internalDialogState.dialogVisible = true;
+  }
+}
 </script>

--
Gitblit v1.9.1