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/FlexJobContractManage.vue |  178 ++++++++++++++++++----------------------------------------
 1 files changed, 56 insertions(+), 122 deletions(-)

diff --git a/src/views/FlexJobManage/FlexJobContractManage.vue b/src/views/FlexJobManage/FlexJobContractManage.vue
index f12bbf1..0aea8c5 100644
--- a/src/views/FlexJobManage/FlexJobContractManage.vue
+++ b/src/views/FlexJobManage/FlexJobContractManage.vue
@@ -23,7 +23,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <FieldDatePicker
-              v-model="extraParamState.signContractTime"
+              v-model="extraParamState.userSignContractTime"
               type="daterange"
               range-separator="~"
               start-placeholder="璧峰鏃ユ湡"
@@ -60,15 +60,35 @@
           <!-- <el-button @click="handleDownloadTemplate()" type="primary" link>妯℃澘涓嬭浇</el-button> -->
           <!-- <el-button @click="handleBatchImportAdd()" type="primary">鎵归噺瀵煎叆</el-button> -->
           <!-- <el-button @click="handleStaffInfoAdd()" type="primary">鏂板缓</el-button> -->
-          <el-button @click="handleBatchUnSign()" type="primary">鎵归噺瑙g害</el-button>
-          <el-button @click="handleSendShotMessage()" type="primary">鐭俊鍙戦��</el-button>
-          <el-button @click="handleBatchSign()" type="primary">鎵归噺绛剧害</el-button>
-          <!-- <el-button @click="handleEnterpriseBatchSign()" type="primary">鎵归噺浼佷笟绛剧害</el-button> -->
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')"
+            @click="handleBatchUnSign()"
+            type="primary"
+            >鎵归噺瑙g害</el-button
+          >
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'sendShotMessageBtn')"
+            @click="handleSendShotMessage()"
+            type="primary"
+            >鐭俊鍙戦��</el-button
+          >
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'batchSignBtn')"
+            @click="handleBatchSign()"
+            type="primary"
+            >鎵归噺绛剧害</el-button
+          >
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'batchEnterpriseSignBtn')"
+            @click="handleEnterpriseBatchSign()"
+            type="primary"
+            >鎵归噺浼佷笟绛剧害</el-button
+          >
         </template>
       </ProTableQueryFilterBar>
       <ProTableV2
         v-bind="proTableProps"
-        :columns="FlexJobContractManageColumns"
+        :columns="column"
         :operationBtns="operationBtns"
         show-column-check
         ref="proTable"
@@ -78,7 +98,7 @@
       >
       </ProTableV2>
     </AppContainer>
-    <StaffInfoDialog v-bind="dialogStaffInfoProps" />
+    <!-- <StaffInfoDialog v-bind="dialogStaffInfoProps" /> -->
     <StaffDetailInfoDialog v-bind="dialogStaffDetailProps" />
     <BatchImportDialog
       v-bind="dialogBatchImportProps"
@@ -100,18 +120,15 @@
   QueryFilterItem,
   useTable,
   FieldDatePicker,
-  FieldRadio,
   FieldSelect,
-  defineOperationBtns,
   useFormDialog,
   UploadUserFile,
   XLSXUtils,
 } from '@bole-core/components';
-import { FlexJobContractManageColumns } from './constants';
 import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
 import { Message } from '@bole-core/core';
 import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
-import StaffInfoDialog from './components/StaffInfoDialog.vue';
+// import StaffInfoDialog from './components/StaffInfoDialog.vue';
 import BatchImportDialog from './components/BatchImportDialog.vue';
 import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
 import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue';
@@ -119,36 +136,25 @@
 import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
 import { ModelValueType } from 'element-plus';
 import _ from 'lodash';
+import { getEnterpriseEmployeesHooks } from './hooks';
 
 defineOptions({
   name: 'FlexJobContractManage',
 });
 
-const operationBtns = defineOperationBtns([
-  // {
-  //   data: {
-  //     enCode: 'editBtn',
-  //     name: '缂栬緫',
-  //   },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  // editBtn: {
   //   emits: {
   //     onClick: (role) => openDialog(role),
   //   },
   // },
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+  detailBtn: {
     emits: {
       onClick: (role: API.GetEnterpriseEmployeesQueryResultItem) =>
         handleStaffDetailEdit({ id: role.id, tabType: 'info' }),
     },
   },
-  {
-    data: {
-      enCode: 'enterpriseSignBtn',
-      name: '浼佷笟绛剧害',
-    },
+  enterpriseSignBtn: {
     emits: {
       onClick: (role) => handleEnterpriseSign(role),
     },
@@ -160,27 +166,19 @@
         ),
     },
   },
-  {
-    data: {
-      enCode: 'inviteSignBtn',
-      name: '閭�璇风绾�',
-    },
+  inviteSignBtn: {
     emits: {
       onClick: (role) => handleInviteSign(role),
     },
     extraProps: {
       hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
         !(
-          row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass &&
-          row.hireStatus === EnumTaskUserHireStatus.Pass
+          row.source === EnumEnterpriseEmployeeSource.Internal &&
+          row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass
         ),
     },
   },
-  {
-    data: {
-      enCode: 'unSignBtn',
-      name: '瑙g害',
-    },
+  unSignBtn: {
     emits: {
       onClick: (role) => handleUnSign(role),
     },
@@ -192,17 +190,17 @@
         ),
     },
   },
-  // {
-  //   data: {
-  //     enCode: 'delBtn',
-  //     name: '鍒犻櫎',
-  //   },
-  //   props: { type: 'danger' },
-  //   emits: {
-  //     onClick: (role) => handleDelete(role),
-  //   },
-  // },
-]);
+  delBtn: {
+    props: { type: 'danger' },
+    emits: {
+      onClick: (role) => handleDelete(role),
+    },
+  },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 
@@ -217,75 +215,8 @@
   state.loading = false;
 });
 
-const {
-  getDataSource: getList,
-  proTableProps,
-  paginationState,
-  extraParamState,
-  reset,
-} = useTable(
-  async ({ pageIndex, pageSize }, extraParamState) => {
-    try {
-      let params: API.GetEnterpriseEmployeesQuery = {
-        pageModel: {
-          rows: pageSize,
-          page: pageIndex,
-          orderInput: extraParamState.orderInput,
-        },
-        keywords: extraParamState.searchWord,
-        createdTimeStart: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
-        createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
-        signContractTimeStart: format(
-          extraParamState.signContractTime?.[0] ?? '',
-          'YYYY-MM-DD 00:00:00'
-        ),
-        signContractTimeEnd: format(
-          extraParamState.signContractTime?.[1] ?? '',
-          'YYYY-MM-DD 23:59:59'
-        ),
-        hireStatus: extraParamState.hireStatus,
-        isReal: extraParamState.isReal,
-        userSignContractStatus: extraParamState.userSignContractStatus,
-        enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus,
-      };
-
-      let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params, {
-        showLoading: !state.loading,
-      });
-      return res;
-    } catch (error) {
-      console.log('error: ', error);
-    }
-  },
-  {
-    defaultExtraParams: {
-      searchWord: '',
-      orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
-      createdTime: [] as unknown as ModelValueType,
-      signContractTime: [] as unknown as ModelValueType,
-      hireStatus: '' as any as EnumTaskUserHireStatus,
-      isReal: null as any as boolean,
-      userSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
-      enterpriseSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
-    },
-    queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployees'],
-    columnsRenderProps: {
-      gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson },
-      hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
-      userIsReal: {
-        formatter: (row: API.GetEnterpriseEmployeesQueryResultItem) => {
-          return row.userIsReal ? '宸插疄鍚�' : '鏈疄鍚�';
-        },
-      },
-      userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
-      hireTime: { type: 'date' },
-      userRealTime: { type: 'date' },
-      userSignContractTime: { type: 'date' },
-      enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
-      enterpriseSignContractTime: { type: 'date' },
-    },
-  }
-);
+const { getList, proTableProps, paginationState, extraParamState, reset } =
+  getEnterpriseEmployeesHooks();
 
 const proTable = ref<InstanceType<typeof ProTableV2>>();
 
@@ -423,7 +354,10 @@
   try {
     const selectionRows = getSelectionRows();
     if (selectionRows) {
-      if (
+      if (selectionRows.some((x) => x.source === EnumEnterpriseEmployeeSource.External)) {
+        Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈澶栭儴浜哄憳');
+        return;
+      } else if (
         selectionRows.some((x) => x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass)
       ) {
         await Message.tipMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸茬绾﹀畬鎴愪汉鍛橈紝纭瑕佺户缁彂閫佺煭淇¢�氱煡鍚楋紵');
@@ -481,10 +415,10 @@
       (x) =>
         x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
         x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
-        x.hireStatus === EnumTaskUserHireStatus.Wait
+        x.source === EnumEnterpriseEmployeeSource.External
     );
     if (hasSigned) {
-      Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸茬绾﹀畬鎴愭垨鏈綍鐢ㄤ汉鍛�');
+      Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸茬绾﹀畬鎴愭垨澶栭儴浜哄憳');
       return;
     }
     handleSignAdd({

--
Gitblit v1.9.1