From 8d973d050ba66a497ca763f9670aab457a74e2b1 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 29 八月 2025 13:49:41 +0800
Subject: [PATCH] feat: 签约

---
 apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue                         |    2 
 apps/cMiniApp/src/hooks/authentication.ts                                                  |   34 +-----
 apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue                   |   16 ++
 packages/services/apiV2/enterpriseEmployee.ts                                              |   51 ++++++++++
 apps/cMiniApp/src/subpackages/authentication/authenticationResult/authenticationResult.vue |    1 
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue                      |    2 
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue          |   13 ++
 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue                                |   13 +-
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue                    |    4 
 apps/cMiniApp/src/subpackages/authentication/authenticationResult/InnerPage.vue            |   23 +---
 packages/services/apiV2/typings.d.ts                                                       |   98 +++++++++++++++++++
 packages/services/apiV2/enterprise.ts                                                      |   15 +++
 packages/constants/apiEnum.ts                                                              |   18 +++
 packages/constants/enterpriseEmployee.ts                                                   |    3 
 14 files changed, 230 insertions(+), 63 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
index b915d25..1755a66 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
@@ -38,7 +38,9 @@
           @click="goToSign"
           v-if="
             enterpriseEmployeeInfo.userSignContractStatus === EnumTaskUserSignContractStatus.Wait ||
-            enterpriseEmployeeInfo.userSignContractStatus === EnumTaskUserSignContractStatus.Refuse
+            enterpriseEmployeeInfo.userSignContractStatus ===
+              EnumTaskUserSignContractStatus.Refuse ||
+            !enterpriseEmployeeInfo.userSignContractStatus
           "
           >绛剧害</PageFooterBtn
         >
@@ -51,6 +53,7 @@
 import Taro from '@tarojs/taro';
 import { EnumTaskUserSignContractStatus } from '@12333/constants';
 import { useGetEnterpriseEmployee, useUserResume } from '@12333/hooks';
+import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
 import { Message } from '@12333/utils';
 
 defineOptions({
@@ -77,6 +80,14 @@
 async function handleUnsign() {
   try {
     await Message.confirm({ message: '纭畾瑕佽В绾﹀悧锛�' });
+    let params: API.StopElectronSignCommand = {
+      id: enterpriseEmployeeInfo.value?.id,
+    };
+    let res = await enterpriseEmployeeServices.stopElectronSign(params);
+    if (res) {
+      Message.success('瑙g害鎴愬姛');
+      refetch();
+    }
   } catch (error) {}
 }
 </script>
diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
index 46982c2..4cfbfce 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
@@ -10,7 +10,7 @@
   >
     <ProTabPane :title="`宸茬绾" :pane-key="EnumTaskUserSignContractStatus.Pass"></ProTabPane>
     <ProTabPane :title="`寰呯绾" :pane-key="EnumTaskUserSignContractStatus.Wait"></ProTabPane>
-    <ProTabPane :title="`宸茶В绾" :pane-key="EnumTaskUserSignContractStatus.Refuse"></ProTabPane>
+    <ProTabPane :title="`宸茶В绾" :pane-key="EnumTaskUserSignContractStatus.Stop"></ProTabPane>
   </ProTabs>
   <InfiniteLoading
     scrollViewClassName="common-infinite-scroll-list home-list"
@@ -49,7 +49,7 @@
           <nut-button
             v-else-if="
               Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Wait ||
-              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Refuse
+              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Stop
             "
             type="primary"
             @click.stop="goFlexJobSign(item)"
diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
index 30a32f4..53c37f2 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
@@ -74,7 +74,7 @@
     });
   },
   {
-    queryKey: ['flexWorkerServices/getFlexTaskByArrange'],
+    queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
   }
 );
 
diff --git a/apps/cMiniApp/src/hooks/authentication.ts b/apps/cMiniApp/src/hooks/authentication.ts
index 4b3638a..dfa4a32 100644
--- a/apps/cMiniApp/src/hooks/authentication.ts
+++ b/apps/cMiniApp/src/hooks/authentication.ts
@@ -1,11 +1,11 @@
-import * as userServices from '@12333/services/api/User';
+import * as electronSignServices from '@12333/services/apiV2/electronSign';
 import { useQuery, useQueryClient } from '@tanstack/vue-query';
 import { getUserCertificationFrontStatusAdapter } from '@12333/utils';
 import { UserCertificationFrontStatus } from '@12333/constants';
 import { useUser } from './user';
 
 type UseMyCertificationAuditInfoOptions = {
-  onSuccess?: (data: API.MyCertificationAuditDto) => void;
+  onSuccess?: (data: API.GetPersonalUserRealResultQueryResult) => void;
 };
 
 export function useMyCertificationAuditInfo(options: UseMyCertificationAuditInfoOptions = {}) {
@@ -16,15 +16,12 @@
   const queryClient = useQueryClient();
 
   const { data, isLoading } = useQuery({
-    queryKey: ['userServices/getMyCertificationAuditInfo'],
+    queryKey: ['electronSignServices/getPersonalUserRealResult'],
     queryFn: async () => {
-      return await userServices.getMyCertificationAuditInfo({ showLoading: false });
+      return await electronSignServices.getPersonalUserRealResult({}, { showLoading: false });
     },
-    placeholderData: () => null as API.MyCertificationAuditDto,
+    placeholderData: () => null as API.GetPersonalUserRealResultQueryResult,
     select(data) {
-      if (data) {
-        data.frontStatus = getUserCertificationFrontStatusAdapter(data.status, data.auditStatus);
-      }
       return data;
     },
     onSuccess(data) {
@@ -32,40 +29,23 @@
     },
   });
 
-  /**
-   * 鏄惁鏈夊鏍稿崟
-   */
-  const hasAduit = computed(() => {
-    return data && !!data.value?.currentUserCertificationAuditId;
-  });
-
-  const isCertified = computed(
-    () => data?.value?.frontStatus === UserCertificationFrontStatus.Certified
-  );
-  const isExpired = computed(
-    () => data?.value?.frontStatus === UserCertificationFrontStatus.Expired
-  );
-
   function invalidateCertificationAuditInfo() {
     updateUserInfo();
     return queryClient.invalidateQueries({
-      queryKey: ['userServices/getMyCertificationAuditInfo'],
+      queryKey: ['electronSignServices/getPersonalUserRealResult'],
     });
   }
 
   function ensureCertificationAuditInfo() {
     return queryClient.ensureQueryData({
-      queryKey: ['userServices/getMyCertificationAuditInfo'],
+      queryKey: ['electronSignServices/getPersonalUserRealResult'],
     });
   }
 
   return {
     myCertificationAuditInfo: data,
     isLoading,
-    hasAduit,
     invalidateCertificationAuditInfo,
-    isCertified,
-    isExpired,
     ensureCertificationAuditInfo,
   };
 }
diff --git a/apps/cMiniApp/src/subpackages/authentication/authenticationResult/InnerPage.vue b/apps/cMiniApp/src/subpackages/authentication/authenticationResult/InnerPage.vue
index b6f78a2..f2abe5b 100644
--- a/apps/cMiniApp/src/subpackages/authentication/authenticationResult/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/authentication/authenticationResult/InnerPage.vue
@@ -1,15 +1,9 @@
 <template>
   <LoadingLayout :loading="isLoading">
-    <div
-      class="result-wrapper"
-      v-if="myCertificationAuditInfo?.frontStatus === UserCertificationFrontStatus.NotCertified"
-    >
+    <!-- <div class="result-wrapper" v-if="!myCertificationAuditInfo?.isReal">
       <div class="result-title">鏈璇�</div>
-    </div>
-    <div
-      class="result-wrapper"
-      v-else-if="myCertificationAuditInfo?.frontStatus === UserCertificationFrontStatus.Certified"
-    >
+    </div> -->
+    <div class="result-wrapper" v-if="myCertificationAuditInfo?.isReal">
       <img class="result-icon" :src="IconSuccess" />
       <div class="result-title">璁よ瘉鎴愬姛</div>
       <div class="result-subtitle">鎮ㄧ殑瀹炲悕宸茶璇佹垚鍔�</div>
@@ -17,14 +11,13 @@
         >杩斿洖涓汉涓績</PageFooterBtn
       >
     </div>
-    <div
-      class="result-wrapper"
-      v-else-if="myCertificationAuditInfo?.frontStatus === UserCertificationFrontStatus.Rejected"
-    >
+    <div class="result-wrapper" v-else>
       <img class="result-icon" :src="IconError" />
       <div class="result-title">璁よ瘉澶辫触</div>
       <div class="result-subtitle">鎮ㄧ殑瀹炲悕璁よ瘉澶辫触</div>
-      <div class="result-subtitle">澶辫触鍘熷洜锛歿{ myCertificationAuditInfo?.auditNote ?? '' }}</div>
+      <div class="result-subtitle">
+        澶辫触鍘熷洜锛歿{ myCertificationAuditInfo?.realFailMessage ?? '' }}
+      </div>
       <PageFooterBtn type="primary" class="result-btn" @click="goBack()"
         >閲嶆柊鎻愪氦璁よ瘉</PageFooterBtn
       >
@@ -34,11 +27,9 @@
 
 <script setup lang="ts">
 import { useMyCertificationAuditInfo, useSwitchTab } from '@/hooks';
-import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
 import IconSuccess from '@/assets/authentication/icon-result-success.png';
 import IconError from '@/assets/authentication/icon-result-error.png';
-import { UserCertificationFrontStatus } from '@12333/constants';
 
 defineOptions({
   name: 'InnerPage',
diff --git a/apps/cMiniApp/src/subpackages/authentication/authenticationResult/authenticationResult.vue b/apps/cMiniApp/src/subpackages/authentication/authenticationResult/authenticationResult.vue
index c473484..46cfd6b 100644
--- a/apps/cMiniApp/src/subpackages/authentication/authenticationResult/authenticationResult.vue
+++ b/apps/cMiniApp/src/subpackages/authentication/authenticationResult/authenticationResult.vue
@@ -4,7 +4,6 @@
     class="authenticationResult-page-wrapper"
     hasBorder
     :backFn="handleBack"
-    developing
   >
     <InnerPage />
   </PageLayout>
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
index 6009d62..0153c1f 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
@@ -10,7 +10,7 @@
   >
     <ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane>
     <ProTabPane :title="`寰呯绾" :pane-key="EnumTaskUserSignContractStatus.Wait"></ProTabPane>
-    <ProTabPane :title="`鐢熸晥涓璥" :pane-key="EnumTaskUserSignContractStatus.Effect"></ProTabPane>
+    <ProTabPane :title="`鐢熸晥涓璥" :pane-key="EnumTaskUserSignContractStatus.Pass"></ProTabPane>
     <ProTabPane :title="`宸茬粓姝" :pane-key="EnumTaskUserSignContractStatus.Stop"></ProTabPane>
   </ProTabs>
   <InfiniteLoading
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
index 38af6bf..2d3090e 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
@@ -83,6 +83,7 @@
   name: 'InnerPage',
 });
 
+const { userDetail } = useUser();
 const router = Taro.useRouter();
 const id = router.params?.id;
 const code = router.params?.code;
@@ -93,7 +94,7 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['enterpriseEmployeeServices/getTaskInfo', id, code],
+  queryKey: ['enterpriseEmployeeServices/getPersonalUserElectronSign', id, code],
   queryFn: async () => {
     return await enterpriseEmployeeServices.getPersonalUserElectronSign(
       { id: id, code: code },
@@ -115,7 +116,18 @@
   });
 }
 
-const goToSign = useAccessReal(() => {});
+const goToSign = useAccessReal(async () => {
+  try {
+    let params: API.PersonalUserElectronSignCommand = {
+      id: id,
+    };
+    let res = await enterpriseEmployeeServices.personalUserElectronSign(params);
+    if (res) {
+      const encodedUrl = encodeURIComponent(res.signContractLongUrl);
+      Taro.navigateTo({ url: `${RouterPath.extraPage}?url=${encodedUrl}` });
+    }
+  } catch (error) {}
+});
 </script>
 
 <style lang="scss">
diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index 58fd1fc..96d7728 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -159,6 +159,7 @@
 import { useQuery } from '@tanstack/vue-query';
 import * as taskServices from '@12333/services/apiV2/task';
 import * as taskUserServices from '@12333/services/apiV2/taskUser';
+import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
 import { useToggle } from 'senin-mini/hooks';
 import { TaskPrice, TaskDetailWelfareItem } from '@12333/components';
 import IconAttention from '@/assets/task/icon-attention.png';
@@ -192,7 +193,7 @@
 /**
  * TODO 缂哄皯 鎶曡瘔涓炬姤鎺ュ彛
  */
-
+const { userDetail } = useUser();
 const router = Taro.useRouter();
 const id = router.params?.id ?? '';
 const from = router.params?.from ?? '';
@@ -281,11 +282,11 @@
     url: `${RouterPath.taskSubmitCheck}?id=${id}`,
   });
 }
-function handleSign() {
-  // Taro.navigateTo({
-  //   url: `${RouterPath}?id=${id}`,
-  // });
-}
+const handleSign = useAccessReal(() => {
+  Taro.navigateTo({
+    url: `${RouterPath.mineAgreementSignDetail}?id=${detail.value?.enterpriseEmployeeId}`,
+  });
+});
 
 function goMap() {
   Taro.openLocation({
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index bd799b6..e4382ec 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -71,6 +71,22 @@
   AlipaySign = 20,
 }
 
+/** 浼佷笟鐢ㄩ噺鎵h垂鐘舵�� */
+export enum EnumEnterpriseCostStatus {
+  /**鎵h垂鎴愬姛 */
+  Success = 10,
+  /**鎵h垂澶辫触 */
+  Fail = 20,
+}
+
+/** 浼佷笟鐢ㄩ噺绫诲瀷 */
+export enum EnumEnterpriseCostType {
+  /**鐭俊 */
+  SMS = 10,
+  /**鐢靛瓙绛� */
+  ElectronSign = 20,
+}
+
 /** 浼佷笟瀹炲悕鏂瑰紡 */
 export enum EnumEnterpriseRealMethod {
   /**浼佷笟涓夎绱� */
@@ -331,8 +347,6 @@
   Pass = 20,
   /**宸叉嫆绛� */
   Refuse = 30,
-  /**鐢熸晥涓� */
-  Effect = 40,
   /**宸茬粓姝� */
   Stop = 50,
 }
diff --git a/packages/constants/enterpriseEmployee.ts b/packages/constants/enterpriseEmployee.ts
index 3049b07..3e2de51 100644
--- a/packages/constants/enterpriseEmployee.ts
+++ b/packages/constants/enterpriseEmployee.ts
@@ -23,6 +23,5 @@
   [EnumTaskUserSignContractStatus.Wait]: '寰呯绾�',
   [EnumTaskUserSignContractStatus.Pass]: '宸茬绾�',
   [EnumTaskUserSignContractStatus.Refuse]: '宸叉嫆绛�',
-  [EnumTaskUserSignContractStatus.Effect]: '鐢熸晥涓�',
-  [EnumTaskUserSignContractStatus.Stop]: '宸茬粓姝�',
+  [EnumTaskUserSignContractStatus.Stop]: '宸茶В绾�',
 };
diff --git a/packages/services/apiV2/enterprise.ts b/packages/services/apiV2/enterprise.ts
index 084e76e..868563d 100644
--- a/packages/services/apiV2/enterprise.ts
+++ b/packages/services/apiV2/enterprise.ts
@@ -80,6 +80,21 @@
   });
 }
 
+/** 淇濆瓨浼佷笟璐圭敤 POST /api/user/enterprise/saveEnterpriseCost */
+export async function saveEnterpriseCost(
+  body: API.SaveEnterpriseCostCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/enterprise/saveEnterpriseCost', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 璁剧疆浼佷笟鐢靛瓙绛鹃厤缃� PUT /api/user/enterprise/setEnterpriseElectronSignSetting */
 export async function setEnterpriseElectronSignSetting(
   body: API.SetEnterpriseElectronSignSettingCommand,
diff --git a/packages/services/apiV2/enterpriseEmployee.ts b/packages/services/apiV2/enterpriseEmployee.ts
index 41ba82d..dbf7f68 100644
--- a/packages/services/apiV2/enterpriseEmployee.ts
+++ b/packages/services/apiV2/enterpriseEmployee.ts
@@ -17,6 +17,24 @@
   });
 }
 
+/** 浼佷笟鐢ㄦ埛绛剧害 POST /api/user/enterpriseEmployee/enterpriseUserElectronSign */
+export async function enterpriseUserElectronSign(
+  body: API.EnterpriseUserElectronSignCommand,
+  options?: API.RequestConfig
+) {
+  return request<API.EnterpriseUserElectronSignCommandResult>(
+    '/api/user/enterpriseEmployee/enterpriseUserElectronSign',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鏌ヨ鐏靛伐璇︽儏 GET /api/user/enterpriseEmployee/getEnterpriseEmployee */
 export async function getEnterpriseEmployee(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
@@ -121,3 +139,36 @@
     ...(options || {}),
   });
 }
+
+/** 涓汉鐢ㄦ埛绛剧害 POST /api/user/enterpriseEmployee/personalUserElectronSign */
+export async function personalUserElectronSign(
+  body: API.PersonalUserElectronSignCommand,
+  options?: API.RequestConfig
+) {
+  return request<API.PersonalUserElectronSignCommandResult>(
+    '/api/user/enterpriseEmployee/personalUserElectronSign',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鐏靛伐瑙g害 POST /api/user/enterpriseEmployee/stopElectronSign */
+export async function stopElectronSign(
+  body: API.StopElectronSignCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/enterpriseEmployee/stopElectronSign', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index 0b8e9b4..c677790 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -389,6 +389,18 @@
     data?: any;
   }
 
+  interface EnterpriseUserElectronSignCommand {
+    /** 鐏靛伐Id */
+    id?: string;
+  }
+
+  interface EnterpriseUserElectronSignCommandResult {
+    /** 绛剧讲鍚堝悓鐭摼鎺� */
+    signContractShortUrl?: string;
+    /** 绛剧讲鍚堝悓闀块摼鎺� */
+    signContractLongUrl?: string;
+  }
+
   enum EnumBillingMethod {
     /**鎸夋湀 */
     Month = 10,
@@ -449,6 +461,20 @@
     BestSign = 10,
     /**鏀粯瀹濅俊浠荤 */
     AlipaySign = 20,
+  }
+
+  enum EnumEnterpriseCostStatus {
+    /**鎵h垂鎴愬姛 */
+    Success = 10,
+    /**鎵h垂澶辫触 */
+    Fail = 20,
+  }
+
+  enum EnumEnterpriseCostType {
+    /**鐭俊 */
+    SMS = 10,
+    /**鐢靛瓙绛� */
+    ElectronSign = 20,
   }
 
   enum EnumEnterpriseRealMethod {
@@ -687,8 +713,6 @@
     Pass = 20,
     /**宸叉嫆绛� */
     Refuse = 30,
-    /**鐢熸晥涓� */
-    Effect = 40,
     /**宸茬粓姝� */
     Stop = 50,
   }
@@ -750,6 +774,24 @@
     errorCode?: string;
     /** 鏁版嵁 */
     data?: boolean;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultEnterpriseUserElectronSignCommandResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: EnterpriseUserElectronSignCommandResult;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -1961,6 +2003,24 @@
     timestamp?: number;
   }
 
+  interface FriendlyResultPersonalUserElectronSignCommandResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: PersonalUserElectronSignCommandResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
   interface FriendlyResultString {
     /** 璺熻釜Id */
     traceId?: string;
@@ -2182,6 +2242,8 @@
     /** 鎻愪氦Id */
     id?: string;
     enterpriseEmployeeUser?: GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser;
+    /** 楠屾敹鏃堕棿 */
+    date?: string;
     /** 鎻愪氦鏃堕棿 */
     createdTime?: string;
     /** 楠屾敹鐓х墖 */
@@ -2206,6 +2268,8 @@
   interface GetCheckReceiveTaskUserSubmitsQueryResultItem {
     /** 鎻愪氦Id */
     id?: string;
+    /** 楠屾敹鏃堕棿 */
+    date?: string;
     /** 鎻愪氦鏃堕棿 */
     createdTime?: string;
     /** 楠屾敹鐓х墖 */
@@ -3564,6 +3628,8 @@
     status?: EnumTaskStatus;
     releaseStatus?: EnumTaskReleaseStatus;
     hireStatus?: EnumTaskUserHireStatus;
+    /** 鐏靛伐Id */
+    enterpriseEmployeeId?: string;
     applyButton?: GetTaskInfoQueryResultApplyButton;
     hireButton?: GetTaskInfoQueryResultHireButton;
   }
@@ -4147,6 +4213,18 @@
     clientType?: EnumClientType;
   }
 
+  interface PersonalUserElectronSignCommand {
+    /** 鐏靛伐Id */
+    id?: string;
+  }
+
+  interface PersonalUserElectronSignCommandResult {
+    /** 绛剧讲鍚堝悓鐭摼鎺� */
+    signContractShortUrl?: string;
+    /** 绛剧讲鍚堝悓闀块摼鎺� */
+    signContractLongUrl?: string;
+  }
+
   interface PersonalUserFaceRealCommand {
     /** 濮撳悕 */
     name: string;
@@ -4299,6 +4377,17 @@
     password?: string;
     /** Id */
     id?: string;
+  }
+
+  interface SaveEnterpriseCostCommand {
+    /** 浼佷笟Id */
+    enterpriseId?: string;
+    type?: EnumEnterpriseCostType;
+    /** 鍚堝悓妯℃澘Id */
+    contractTemplateId?: string;
+    /** 鐏靛伐鍚堝悓Id */
+    enterpriseEmployeeContractId?: string;
+    status?: EnumEnterpriseCostStatus;
   }
 
   interface SaveMenuButtonCommand {
@@ -4673,6 +4762,11 @@
     clientType?: EnumClientType;
   }
 
+  interface StopElectronSignCommand {
+    /** 鐏靛伐Id */
+    id?: string;
+  }
+
   interface SubmitCheckReceiveTaskCommand {
     /** 浠诲姟Id */
     taskInfoId?: string;

--
Gitblit v1.9.1