From a589e8e0f15b368069164fffed0e36becab92cb6 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 03 十二月 2025 09:01:59 +0800
Subject: [PATCH] fix: 谢绝

---
 src/views/EmploymentManage/EmploymentSignList.vue |  195 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 135 insertions(+), 60 deletions(-)

diff --git a/src/views/EmploymentManage/EmploymentSignList.vue b/src/views/EmploymentManage/EmploymentSignList.vue
index 79703e5..ce8b10e 100644
--- a/src/views/EmploymentManage/EmploymentSignList.vue
+++ b/src/views/EmploymentManage/EmploymentSignList.vue
@@ -5,11 +5,8 @@
         <template #query>
           <QueryFilterItem tip-content="褰曠敤鐘舵��">
             <FieldRadio
-              v-model="extraParamState.flexEnterpriseSettingStatus"
-              :value-enum="[
-                { label: '宸插綍鐢�', value: 1 },
-                { label: '寰呭綍鐢�', value: 0 },
-              ]"
+              v-model="extraParamState.hireStatus"
+              :value-enum="EnumTaskUserHireStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -19,7 +16,7 @@
             <SearchInput
               v-model="extraParamState.searchWord"
               style="width: 250px"
-              placeholder="浠诲姟鍚嶇О"
+              placeholder="濮撳悕/韬唤璇佸彿/鐢佃瘽"
               @on-click-search="getList"
               @keyup.enter="getList()"
             >
@@ -27,13 +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>
 
@@ -46,74 +41,60 @@
   AppContainer,
   QueryFilterItem,
   useTable,
-  FieldDatePicker,
   FieldRadio,
-  defineOperationBtns,
+  useFormDialog,
+  UploadUserFile,
 } from '@bole-core/components';
-import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
-import { EmploymentSignColumns } from './constants/columns';
-import { OrderInputType, Message } from '@bole-core/core';
-import { useGlobalEventContext } from '@/hooks';
-import { FlexEnterpriseSettingStatus } from '@/constants';
+import { Message } from '@bole-core/core';
+import { EnumUserGender, EnumTaskUserHireStatusText } from '@/constants';
 import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue';
+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) => handleRecruit(role),
+      onClick: (role) => setTaskUserHire(role.id, EnumTaskUserHireStatus.Pass),
     },
     extraProps: {
-      hide: (row) => false,
+      hide: (row: API.GetTaskUsersQueryResultItem) =>
+        row.hireStatus === EnumTaskUserHireStatus.Pass,
     },
   },
-  {
-    data: {
-      enCode: 'refuseBtn',
-      name: '璋㈢粷',
-    },
+  refuseBtn: {
     emits: {
-      onClick: (role) => handleRefuse(role),
+      onClick: (role) => openRefuseDialog(role),
     },
     extraProps: {
-      hide: (row) => false,
+      hide: (row: API.GetTaskUsersQueryResultItem) =>
+        row.hireStatus !== EnumTaskUserHireStatus.Wait,
     },
   },
-]);
+};
+
+const { column, operationBtns } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
-
+const route = useRoute();
+const id = route.params.id as string;
 const BaseState = {
   loading: true,
 };
 
 const state = reactive({ ...BaseState });
-
-const eventContext = useGlobalEventContext();
-
-eventContext.addEvent('employment:add', () => {
-  getList();
-});
-
-eventContext.addEvent('employment:edit', () => {
-  getList(paginationState.pageIndex);
-});
 
 onMounted(async () => {
   await getList();
@@ -129,17 +110,18 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetFlexEnterpriseInput = {
+      let params: API.GetTaskUsersQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus,
-        searchWord: extraParamState.searchWord,
+        id: id,
+        keywords: extraParamState.searchWord,
+        hireStatus: extraParamState.hireStatus,
       };
 
-      let res = await flexEnterpriseServices.getFlexEnterpriseList(params, {
+      let res = await taskUserServices.getTaskUsers(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -150,14 +132,107 @@
   {
     defaultExtraParams: {
       searchWord: '',
-      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
-      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+      hireStatus: '' as any as EnumTaskUserHireStatus,
     },
-    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
-    columnsRenderProps: {},
+    queryKey: ['taskUserServices/getTaskUsers'],
+    columnsRenderProps: {
+      gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson },
+      hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
+      identity: {
+        formatter: (row: API.GetTaskUsersQueryResultItem) => {
+          return hiddenIDNumberForEnd4(row.identity);
+        },
+      },
+    },
   }
 );
 
-function handleRecruit(row) {}
-function handleRefuse(row) {}
+const {
+  dialogProps: dialogStaffInfoProps,
+  handleEdit: handleStaffInfoEdit,
+  editForm: staffInfoEditForm,
+} = useFormDialog({
+  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: '',
+    isDetail: false,
+  },
+});
+
+async function openDialog(row: API.GetTaskUsersQueryResultItem) {
+  try {
+    let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({
+      id: row.enterpriseEmployeeId,
+    });
+    handleStaffInfoEdit({
+      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: detail.userRealTime ?? '',
+      userSignContractTime: detail.userSignContractTime ?? '',
+      isDetail: true,
+    });
+  } catch (error) {}
+}
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: handleRefuse,
+  defaultFormParams: {
+    id: '',
+    remark: '',
+  },
+});
+
+async function openRefuseDialog(row: API.GetTaskUsersQueryResultItem) {
+  try {
+    await Message.tipMessage(`纭瑕佽阿缁濆悧锛焋);
+    handleAdd({
+      id: row.id,
+    });
+  } catch (error) {}
+}
+
+async function handleRefuse() {
+  setTaskUserHire(editForm.id, EnumTaskUserHireStatus.Refuse, editForm.remark);
+}
+
+async function setTaskUserHire(id: string, hireStatus: EnumTaskUserHireStatus, remark?: string) {
+  try {
+    if (hireStatus === EnumTaskUserHireStatus.Pass) {
+      await Message.tipMessage(
+        `纭瑕�${hireStatus === EnumTaskUserHireStatus.Pass ? '褰曠敤' : '璋㈢粷'}鍚楋紵`
+      );
+    }
+    let params: API.SetTaskUserHireCommand = {
+      id: id,
+      hireStatus: hireStatus,
+      hireRemark: remark,
+    };
+    let res = await taskUserServices.setTaskUserHire(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>

--
Gitblit v1.9.1