From 7faf1532a00bb886860ea5150cf80939b0b69f81 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 20 十月 2025 16:32:22 +0800
Subject: [PATCH] fix: bug

---
 src/views/FlexJobManage/FlexJobManage.vue |   44 ++++++++++++++
 src/services/api/enterpriseEmployee.ts    |   18 ++++++
 src/services/api/typings.d.ts             |   57 +++++++++++++++++++
 src/views/UserManage/UserManageList.vue   |   33 ++++++++++
 4 files changed, 150 insertions(+), 2 deletions(-)

diff --git a/src/services/api/enterpriseEmployee.ts b/src/services/api/enterpriseEmployee.ts
index 286ed8a..622e474 100644
--- a/src/services/api/enterpriseEmployee.ts
+++ b/src/services/api/enterpriseEmployee.ts
@@ -2,6 +2,24 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
+/** 浼佷笟鎵归噺绛剧害鍚堝悓 POST /api/user/enterpriseEmployee/batchEnterpriseSignContract */
+export async function batchEnterpriseSignContract(
+  body: API.BatchEnterpriseSignContractCommand,
+  options?: API.RequestConfig
+) {
+  return request<API.BatchEnterpriseSignContractCommandResult>(
+    '/api/user/enterpriseEmployee/batchEnterpriseSignContract',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 缂栬緫鐏靛伐淇℃伅 POST /api/user/enterpriseEmployee/editEnterpriseEmployee */
 export async function editEnterpriseEmployee(
   body: API.EditEnterpriseEmployeeCommand,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index b417c8a..26fed29 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -398,6 +398,29 @@
     address?: string;
   }
 
+  interface BatchEnterpriseSignContractCommand {
+    /** 鐏靛伐Id */
+    ids?: string[];
+  }
+
+  interface BatchEnterpriseSignContractCommandResult {
+    /** 绛剧害鎴愬姛鐏靛伐Id */
+    successIds?: string[];
+    /** 绛剧害澶辫触鐨勭伒宸ヤ俊鎭� */
+    errors?: BatchEnterpriseSignContractCommandResultError[];
+  }
+
+  interface BatchEnterpriseSignContractCommandResultError {
+    /** 濮撳悕 */
+    name?: string;
+    /** 鎵嬫満鍙� */
+    contactPhoneNumber?: string;
+    /** 韬唤璇佸彿 */
+    identity?: string;
+    /** 閿欒娑堟伅 */
+    errorMessages?: string;
+  }
+
   interface BindWxmpUserInfoCommand {
     /** 璁块棶浠ょ墝 */
     accessToken: string;
@@ -446,6 +469,10 @@
   interface CheckReceiveTaskCommand {
     /** 鎻愪氦Id */
     id?: string;
+    /** 浠诲姟浜哄憳Id */
+    taskInfoUserId?: string;
+    /** 鏃ユ湡 */
+    date?: string;
     /** 绛惧埌鏃堕棿 */
     checkInTime?: string;
     /** 绛惧嚭鏃堕棿 */
@@ -1354,6 +1381,24 @@
   interface ExportTaskSettlementOrderRostersCommand {
     /** 缁撶畻璁㈠崟Id */
     id?: string;
+  }
+
+  interface FriendlyResultBatchEnterpriseSignContractCommandResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: BatchEnterpriseSignContractCommandResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
   }
 
   interface FriendlyResultBoolean {
@@ -3829,6 +3874,12 @@
     bindProperty?: string;
     /** 鏄惁蹇呭~ */
     required?: boolean;
+    /** 鍧愭爣X */
+    x?: number;
+    /** 鍧愭爣Y */
+    y?: number;
+    /** 椤电爜 */
+    page?: number;
   }
 
   type GetCurrentLogierMenusQuery = Record<string, any>;
@@ -6995,6 +7046,12 @@
     bindProperty?: string;
     /** 鏄惁蹇呭~ */
     required?: boolean;
+    /** 鍧愭爣X */
+    x?: number;
+    /** 鍧愭爣Y */
+    y?: number;
+    /** 椤电爜 */
+    page?: number;
   }
 
   interface SaveDictionaryCategoryCommand {
diff --git a/src/views/FlexJobManage/FlexJobManage.vue b/src/views/FlexJobManage/FlexJobManage.vue
index d27bffd..907e336 100644
--- a/src/views/FlexJobManage/FlexJobManage.vue
+++ b/src/views/FlexJobManage/FlexJobManage.vue
@@ -84,6 +84,7 @@
           <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>
         </template>
       </ProTableQueryFilterBar>
       <ProTableV2
@@ -512,6 +513,49 @@
   }
 }
 
+function handleEnterpriseBatchSign() {
+  const selectionRows = getSelectionRows();
+  if (selectionRows) {
+    const hasSigned = selectionRows?.some(
+      (x) =>
+        !(
+          x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+          x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
+        )
+    );
+    if (hasSigned) {
+      Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸蹭紒涓氱绾︺�佹湭褰曠敤浜哄憳鎴栨湭绛剧害瀹屾垚浜哄憳');
+      return;
+    }
+    const ids = selectionRows.map((x) => x.id);
+    handleBatchEnterpriseSign(ids);
+  }
+}
+
+async function handleBatchEnterpriseSign(ids: string[]) {
+  try {
+    let res = await enterpriseEmployeeServices.batchEnterpriseSignContract({ ids: ids });
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+      if (res?.errors?.length > 0) {
+        Message.tipMessage('瀛樺湪绛剧害澶辫触鐨勭伒宸ヤ俊鎭暟鎹紝鏄惁瀵煎嚭锛�').then(() => {
+          XLSXUtils.exportToXLSX({
+            workbookDataList: res.errors,
+            fileName: '绛剧害澶辫触鐏靛伐淇℃伅',
+            workbookHeaderMap: {
+              name: '濮撳悕',
+              contactPhoneNumber: '鎵嬫満鍙�',
+              identity: '韬唤璇佸彿',
+              errorMessage: '閿欒淇℃伅',
+            },
+          });
+        });
+      }
+    }
+  } catch (error) {}
+}
+
 async function signContract() {
   try {
     let params: API.InviteElectronSignCommand = {
diff --git a/src/views/UserManage/UserManageList.vue b/src/views/UserManage/UserManageList.vue
index 17fec99..10d42bb 100644
--- a/src/views/UserManage/UserManageList.vue
+++ b/src/views/UserManage/UserManageList.vue
@@ -22,6 +22,16 @@
         :columns="UserManageColumns"
         :operationBtns="operationBtns"
       >
+        <template #status="{ row }">
+          <FieldSwitch
+            v-model="row.status"
+            active-text="鍚敤"
+            :active-value="EnumUserStatus.Normal"
+            inactive-text="绂佺敤"
+            :inactive-value="EnumUserStatus.Disabled"
+            :before-change="() => setUserInfoStatus(row)"
+          />
+        </template>
       </ProTableV2>
     </AppContainer>
     <AddOrEditUserDialog v-bind="dialogProps" />
@@ -43,10 +53,11 @@
   useTable,
   useFormDialog,
   defineOperationBtns,
+  FieldSwitch,
 } from '@bole-core/components';
 import * as userServices from '@/services/api/user';
 import { UserManageColumns } from './constants';
-import { EnumUserStatusText } from '@/constants';
+import { EnumUserStatus, EnumUserStatusText } from '@/constants';
 import { ModelValueType } from 'element-plus';
 import { Message } from '@bole-core/core';
 import AddOrEditUserDialog from './components/AddOrEditUserDialog.vue';
@@ -141,7 +152,7 @@
         formatter: (role: API.GetOperationUserInfosQueryResultItem) =>
           role.roles?.length > 0 ? role.roles.map((x) => x.name).join(',') : '',
       },
-      status: { type: 'enum', valueEnum: EnumUserStatusText },
+      // status: { type: 'enum', valueEnum: EnumUserStatusText },
     },
   }
 );
@@ -257,6 +268,24 @@
   });
 }
 
+async function setUserInfoStatus(row: API.GetOperationUserInfosQueryResultItem) {
+  try {
+    await Message.tipMessage(
+      `纭瑕�${row.status === EnumUserStatus.Normal ? '绂佺敤' : '鍚敤'}璇ョ敤鎴峰悧锛焋
+    );
+    const res = await userServices.setUserInfoStatus({
+      ids: [row.id],
+      status:
+        row.status === EnumUserStatus.Normal ? EnumUserStatus.Disabled : EnumUserStatus.Normal,
+    });
+    if (res) {
+      getList(paginationState.pageIndex);
+      Message.successMessage(`鎿嶄綔鎴愬姛`);
+      return !!res;
+    }
+  } catch (error) {}
+}
+
 async function resetPassword() {
   try {
     let params: API.ResetUserPasswordsCommand = {

--
Gitblit v1.9.1