From 36b00e2ef3b079755b4e240ede283407974086a2 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 03 十二月 2025 17:53:05 +0800
Subject: [PATCH] feat: 页面

---
 src/views/EmploymentManage/EmploymentSignList.vue |  110 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 71 insertions(+), 39 deletions(-)

diff --git a/src/views/EmploymentManage/EmploymentSignList.vue b/src/views/EmploymentManage/EmploymentSignList.vue
index 043951e..6072f08 100644
--- a/src/views/EmploymentManage/EmploymentSignList.vue
+++ b/src/views/EmploymentManage/EmploymentSignList.vue
@@ -24,14 +24,11 @@
           </QueryFilterItem>
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="EmploymentSignColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
     </AppContainer>
     <StaffInfoDialog v-bind="dialogStaffInfoProps" />
+    <RefuseDialog v-bind="dialogProps" />
   </LoadingLayout>
 </template>
 
@@ -45,59 +42,59 @@
   QueryFilterItem,
   useTable,
   FieldRadio,
-  defineOperationBtns,
   useFormDialog,
   UploadUserFile,
 } from '@bole-core/components';
-import { EmploymentSignColumns } from './constants/columns';
 import { Message } from '@bole-core/core';
 import { EnumUserGender, EnumTaskUserHireStatusText } from '@/constants';
 import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue';
-import { convertApi2FormUrlOnlyOne } from '@/utils';
+import { convertApi2FormUrlOnlyOne, hiddenIDNumberForEnd4 } from '@/utils';
 import * as taskUserServices from '@/services/api/taskUser';
 import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
+import RefuseDialog from './components/RefuseDialog.vue';
 
 defineOptions({
   name: 'EmploymentSignList',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  detailBtn: {
     emits: {
       onClick: (role) => openDialog(role),
     },
   },
-  {
-    data: {
-      enCode: 'recruitBtn',
-      name: '褰曠敤',
-    },
+  recruitBtn: {
     emits: {
-      onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Pass),
+      onClick: (role) => handleRecruit(role.id, EnumTaskUserHireStatus.Pass),
     },
     extraProps: {
       hide: (row: API.GetTaskUsersQueryResultItem) =>
         row.hireStatus === EnumTaskUserHireStatus.Pass,
     },
   },
-  {
-    data: {
-      enCode: 'refuseBtn',
-      name: '璋㈢粷',
-    },
+  cancelRecruitBtn: {
     emits: {
-      onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Refuse),
+      onClick: (role) => handleCancelRecruit(role.id, EnumTaskUserHireStatus.Cancel),
+    },
+    extraProps: {
+      hide: (row: API.GetTaskUsersQueryResultItem) =>
+        row.hireStatus !== EnumTaskUserHireStatus.Pass,
+    },
+  },
+  refuseBtn: {
+    emits: {
+      onClick: (role) => openRefuseDialog(role),
     },
     extraProps: {
       hide: (row: API.GetTaskUsersQueryResultItem) =>
         row.hireStatus !== EnumTaskUserHireStatus.Wait,
     },
   },
-]);
+};
+
+const { column, operationBtns } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 const route = useRoute();
@@ -151,6 +148,11 @@
     columnsRenderProps: {
       gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson },
       hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
+      identity: {
+        formatter: (row: API.GetTaskUsersQueryResultItem) => {
+          return hiddenIDNumberForEnd4(row.identity);
+        },
+      },
     },
   }
 );
@@ -167,8 +169,8 @@
     contactPhoneNumber: '',
     gender: EnumUserGender.Male,
     age: null as any as number,
-    idFrontUrl: [] as UploadUserFile[],
-    idBackUrl: [] as UploadUserFile[],
+    identityImg: [] as UploadUserFile[],
+    identityBackImg: [] as UploadUserFile[],
     contractUrl: [] as UploadUserFile[],
     regiterTime: '',
     userRealTime: '',
@@ -189,8 +191,8 @@
       contactPhoneNumber: row.contactPhoneNumber,
       gender: detail.gender,
       age: detail.age ?? null,
-      idFrontUrl: convertApi2FormUrlOnlyOne(detail.identityImg),
-      idBackUrl: convertApi2FormUrlOnlyOne(detail.identityBackImg),
+      identityImg: convertApi2FormUrlOnlyOne(detail.identityImg),
+      identityBackImg: convertApi2FormUrlOnlyOne(detail.identityBackImg),
       contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, {
         fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '鍚堝悓',
       }),
@@ -202,17 +204,47 @@
   } catch (error) {}
 }
 
-async function setTaskUserHire(
-  row: API.GetTaskUsersQueryResultItem,
-  hireStatus: EnumTaskUserHireStatus
-) {
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: handleRefuse,
+  defaultFormParams: {
+    id: '',
+    remark: '',
+  },
+});
+
+async function openRefuseDialog(row: API.GetTaskUsersQueryResultItem) {
   try {
-    await Message.tipMessage(
-      `纭瑕�${hireStatus === EnumTaskUserHireStatus.Pass ? '褰曠敤' : '璋㈢粷'}鍚楋紵`
-    );
-    let params: API.SetTaskUserHireCommand = {
+    await Message.tipMessage(`纭瑕佽阿缁濆悧锛焋);
+    handleAdd({
       id: row.id,
+    });
+  } catch (error) {}
+}
+
+async function handleRefuse() {
+  setTaskUserHire(editForm.id, EnumTaskUserHireStatus.Refuse, editForm.remark);
+}
+
+async function handleRecruit(id: string, hireStatus: EnumTaskUserHireStatus) {
+  try {
+    await Message.tipMessage(`纭瑕佸綍鐢ㄥ悧锛焋);
+    setTaskUserHire(id, hireStatus);
+  } catch (error) {}
+}
+
+async function handleCancelRecruit(id: string, hireStatus: EnumTaskUserHireStatus) {
+  try {
+    await Message.tipMessage(`纭瑕佸彇娑堝綍鐢ㄥ悧锛焋);
+    setTaskUserHire(id, hireStatus);
+  } catch (error) {}
+}
+
+async function setTaskUserHire(id: string, hireStatus: EnumTaskUserHireStatus, remark?: string) {
+  try {
+    let params: API.SetTaskUserHireCommand = {
+      id: id,
       hireStatus: hireStatus,
+      hireRemark: remark,
     };
     let res = await taskUserServices.setTaskUserHire(params);
     if (res) {

--
Gitblit v1.9.1