From 08740aaf0861ee8c11a8bf6a97a1219f7d198043 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 25 八月 2025 09:39:08 +0800
Subject: [PATCH] feat: 签约

---
 apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue                                 |   35 +-
 apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue                               |    2 
 apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue                           |   76 +++--
 apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue       |   17 +
 apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts |    3 
 packages/services/apiV2/enterpriseEmployee.ts                                                      |   51 +++
 packages/components/src/Card/SignCard.vue                                                          |    6 
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue                              |   52 +++
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue                  |   14 
 packages/components/src/Card/MineAgreementSignCard.vue                                             |   16 
 packages/services/apiV2/index.ts                                                                   |    8 
 apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue                            |   17 
 packages/services/apiV2/electronSign.ts                                                            |  118 +++++++++
 packages/services/apiV2/typings.d.ts                                                               |  331 +++++++++++++++++++++++-
 packages/constants/apiEnum.ts                                                                      |   16 +
 packages/constants/enterpriseEmployee.ts                                                           |    8 
 16 files changed, 671 insertions(+), 99 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
index b42f953..0ef1f73 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
@@ -23,10 +23,10 @@
       :taskInfoUsers="userResumeInfo.taskInfoUsers"
       :isCollapse="true"
     >
-      <!-- <template #footer>
-        <PageFooterBtn type="primary" plain>瑙g害</PageFooterBtn>
-        <PageFooterBtn type="primary">绛剧害</PageFooterBtn>
-      </template> -->
+      <template #footer>
+        <PageFooterBtn v-if="userResumeInfo" type="primary" plain>瑙g害</PageFooterBtn>
+        <PageFooterBtn type="primary" @click="goToSign">绛剧害</PageFooterBtn>
+      </template>
     </JobDetailContent>
   </LoadingLayout>
 </template>
@@ -46,6 +46,12 @@
 const { isLoading, isError, userResumeInfo, refetch } = useUserResume({
   enterpriseEmployeeId: enterpriseEmployeeId,
 });
+
+function goToSign() {
+  Taro.navigateTo({
+    url: `${RouterPath.flexJobSign}?enterpriseEmployeeId=${enterpriseEmployeeId}`,
+  });
+}
 </script>
 
 <style lang="scss">
diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
index c47dcb3..fa18638 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
@@ -34,25 +34,27 @@
         @click="goDetail(item)"
       >
         <template #footerRight>
-          <span></span>
-          <!-- <template
-            v-if="queryState.userSignContractStatus === EnumTaskUserSignContractStatus.Pass"
+          <template
+            v-if="Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Pass"
           >
             <nut-button
               class="flexJobManage-card-plain-button"
               type="default"
               plain
-              @click.stop="handleUnContract"
+              @click.stop="goDetail(item)"
               >瑙g害</nut-button
             >
             <nut-button type="primary" @click.stop="checkContract">鏌ョ湅鍚堢害</nut-button>
           </template>
           <nut-button
-            v-else-if="queryState.userSignContractStatus === EnumTaskUserSignContractStatus.Wait"
+            v-else-if="
+              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Wait ||
+              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Refuse
+            "
             type="primary"
-            @click.stop="goSignContract(item)"
+            @click.stop="goDetail(item)"
             >绛剧害</nut-button
-          > -->
+          >
         </template>
       </FlexJobCard>
     </template>
@@ -107,7 +109,6 @@
 }
 
 function checkContract() {}
-function handleUnContract() {}
 function goSignContract(item: API.GetNewestWorkerListOutput) {
   Taro.navigateTo({
     url: `${RouterPath.flexJobSign}`,
diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
index da05e70..30a32f4 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
@@ -14,49 +14,62 @@
     v-bind="infiniteLoadingProps"
   >
     <template #renderItem="{ item }">
-      <SignCard @click="handleCheck(item)" v-model:checked-id="checkedId" :id="item.id"></SignCard>
+      <SignCard
+        :templateId="item.templateId"
+        :name="item.name"
+        @click="handleCheck(item)"
+        v-model:checked-id="checkedId"
+        :id="item.id"
+      ></SignCard>
     </template>
   </InfiniteLoading>
 
   <PageFooter>
-    <PageFooterBtn type="primary">閭�璇风绾�</PageFooterBtn>
+    <PageFooterBtn type="primary" @click="handleInvite">閭�璇风绾�</PageFooterBtn>
   </PageFooter>
 </template>
 
 <script setup lang="ts">
 import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { EnumPagedListOrder } from '@12333/constants';
+import * as electronSignServices from '@12333/services/apiV2/electronSign';
+import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
 import _ from 'lodash';
-import { trim } from '@12333/utils';
+import { Message, trim } from '@12333/utils';
 import { SignCard } from '@12333/components';
+import Taro from '@tarojs/taro';
+import { goBack } from '@/utils';
 
 defineOptions({
   name: 'InnerPage',
 });
 
+const router = Taro.useRouter();
+const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? '';
+
 const searchValue = ref('');
 const queryState = reactive({
-  searchValueTrim: '',
+  keywords: '',
 });
 
 const checkedId = ref('');
 
 const handleSearch = _.debounce(function () {
-  queryState.searchValueTrim = trim(searchValue.value);
+  queryState.keywords = trim(searchValue.value);
 }, 300);
 
 const { infiniteLoadingProps } = useInfiniteLoading(
   ({ pageParam }) => {
-    let params: API.GetFlexTaskListInput = {
+    let params: API.GetEnterpriseContractTemplatesQuery = {
       pageModel: {
         rows: 20,
         page: pageParam,
-        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       },
+      keywords: queryState.keywords,
     };
 
-    return flexWorkerServices.getFlexTaskByArrange(params, {
+    return electronSignServices.getEnterpriseContractTemplates(params, {
       showLoading: false,
     });
   },
@@ -65,9 +78,26 @@
   }
 );
 
-function handleCheck(item: API.OrderInfoDto) {
+function handleCheck(item: API.GetEnterpriseContractTemplatesQueryResultItem) {
   checkedId.value = item.id;
 }
+
+async function handleInvite() {
+  try {
+    let params: API.InviteElectronSignCommand = {
+      id: enterpriseEmployeeId,
+      contractTemplateId: checkedId.value,
+    };
+    let res = await enterpriseEmployeeServices.inviteElectronSign(params);
+    if (res) {
+      Message.success('绛剧害鎴愬姛', {
+        onClosed() {
+          goBack();
+        },
+      });
+    }
+  } catch (error) {}
+}
 </script>
 
 <style lang="scss">
diff --git a/apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue b/apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue
index b6db03c..6501518 100644
--- a/apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue
+++ b/apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue
@@ -6,7 +6,7 @@
 import Taro from '@tarojs/taro';
 
 defineOptions({
-  name: 'authenticationFaRen',
+  name: 'extraPage',
 });
 
 const router = Taro.useRouter();
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
index a2a8fdd..6009d62 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
@@ -1,6 +1,6 @@
 <template>
   <ProTabs
-    v-model="queryState.mineAgreementSignType"
+    v-model="queryState.userSignContractStatus"
     name="home-tab"
     :showPaneContent="false"
     class="home-tabs"
@@ -9,17 +9,22 @@
     title-scroll
   >
     <ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane>
-    <ProTabPane :title="`寰呯绾" :pane-key="10"></ProTabPane>
-    <ProTabPane :title="`鐢熸晥涓璥" :pane-key="20"></ProTabPane>
-    <ProTabPane :title="`宸茬粓姝" :pane-key="30"></ProTabPane>
+    <ProTabPane :title="`寰呯绾" :pane-key="EnumTaskUserSignContractStatus.Wait"></ProTabPane>
+    <ProTabPane :title="`鐢熸晥涓璥" :pane-key="EnumTaskUserSignContractStatus.Effect"></ProTabPane>
+    <ProTabPane :title="`宸茬粓姝" :pane-key="EnumTaskUserSignContractStatus.Stop"></ProTabPane>
   </ProTabs>
   <InfiniteLoading
     scrollViewClassName="common-infinite-scroll-list home-list"
     v-bind="infiniteLoadingProps"
-    :key="queryState.mineAgreementSignType"
+    :key="queryState.userSignContractStatus"
   >
     <template #renderItem="{ item }">
-      <MineAgreementSignCard @click="goDetail"> </MineAgreementSignCard>
+      <MineAgreementSignCard
+        :enterpriseName="item.enterpriseName"
+        :userSignContractStatus="item.userSignContractStatus"
+        @click="goDetail(item)"
+      >
+      </MineAgreementSignCard>
     </template>
   </InfiniteLoading>
 </template>
@@ -27,10 +32,9 @@
 <script setup lang="ts">
 import { MineAgreementSignCard, ProTabs, ProTabPane } from '@12333/components';
 import { useUserStore } from '@/stores/modules/user';
-import { TaskStatus } from '@/constants';
 import { useInfiniteLoading } from '@12333/hooks';
-import { EnumPagedListOrder } from '@12333/constants';
-import * as taskServices from '@12333/services/apiV2/task';
+import { EnumPagedListOrder, EnumTaskUserSignContractStatus } from '@12333/constants';
+import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
 import Taro from '@tarojs/taro';
 
 defineOptions({
@@ -38,33 +42,34 @@
 });
 
 const queryState = reactive({
-  mineAgreementSignType: TaskStatus.All,
+  userSignContractStatus: 0 as any as EnumTaskUserSignContractStatus,
 });
 
 const userStore = useUserStore();
 
 const { infiniteLoadingProps } = useInfiniteLoading(
   ({ pageParam }) => {
-    let params: API.GetFlexTaskListInput = {
+    let params: API.GetPersonalUserElectronSignsQuery = {
       pageModel: {
         rows: 20,
         page: pageParam,
         orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
       },
+      userSignContractStatus: queryState.userSignContractStatus,
     };
 
-    return taskServices.getPersonalHireTaskInfos(params, {
+    return enterpriseEmployeeServices.getPersonalUserElectronSigns(params, {
       showLoading: false,
     });
   },
   {
-    queryKey: ['taskServices/getPersonalHireTaskInfos', queryState],
+    queryKey: ['enterpriseEmployeeServices/getPersonalUserElectronSigns', queryState],
   }
 );
 
-function goDetail() {
+function goDetail(row: API.GetPersonalUserElectronSignsQueryResultItem) {
   Taro.navigateTo({
-    url: RouterPath.mineAgreementSignDetail,
+    url: `${RouterPath.mineAgreementSignDetail}?id=${row.id}`,
   });
 }
 </script>
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
index cd161c7..38af6bf 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
@@ -6,23 +6,11 @@
           <template #content>
             <MineAgreementSignDetailItem
               label="鍗忚缂栧彿"
-              detail="QY1052511040446686047"
+              :detail="detail?.contractCode"
             ></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="鍗忚鐘舵��"
-              detail="鐢熸晥涓�/宸茬粓姝�"
-            ></MineAgreementSignDetailItem>
-            <MineAgreementSignDetailItem
-              label="璧峰鏃堕棿"
-              detail="2024.05.20"
-            ></MineAgreementSignDetailItem>
-            <MineAgreementSignDetailItem
-              label="缁堟鏃堕棿"
-              detail="2025.05.19"
-            ></MineAgreementSignDetailItem>
-            <MineAgreementSignDetailItem
-              label="鍗忚绫诲瀷"
-              detail="鍔冲姩鍚堝悓"
+              :detail="EnumTaskUserSignContractStatusText[detail?.userSignContractStatus]"
             ></MineAgreementSignDetailItem>
           </template>
         </MineAgreementSignDetailCard>
@@ -30,20 +18,19 @@
           <template #content>
             <MineAgreementSignDetailItem
               label="鍛樺伐濮撳悕"
-              detail="闃抽槼"
+              :detail="detail?.name"
             ></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="璇佷欢绫诲瀷"
-              detail="灞呮皯韬唤璇�"
+              :detail="detail?.identityType"
             ></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="璇佷欢鍙风爜"
-              detail="622429199105261913"
+              :detail="detail?.identity"
             ></MineAgreementSignDetailItem>
-            <MineAgreementSignDetailItem label="宀椾綅" detail="淇濇磥"></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="绛剧害鏃堕棿"
-              detail="2024.05.20"
+              :detail="format(detail?.userSignContractTime, 'YYYY-MM-DD')"
             ></MineAgreementSignDetailItem>
           </template>
         </MineAgreementSignDetailCard>
@@ -51,15 +38,15 @@
           <template #content>
             <MineAgreementSignDetailItem
               label="涓讳綋绫诲瀷"
-              detail="鍏徃"
+              :detail="detail?.enterpriseType"
             ></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="绛剧害涓讳綋"
-              detail="瀹佹尝浜哄姏鏃犲咖浜哄姏璧勬簮"
+              :detail="detail?.enterpriseName"
             ></MineAgreementSignDetailItem>
             <MineAgreementSignDetailItem
               label="绛剧害鏃堕棿"
-              detail="2024.05.20"
+              :detail="format(detail?.enterpriseSignContractTime, 'YYYY-MM-DD')"
             ></MineAgreementSignDetailItem>
           </template>
         </MineAgreementSignDetailCard>
@@ -67,31 +54,66 @@
           <template #content>
             <MineAgreementSignDetailItem label="鍗忚鍐呭">
               <template #detail>
-                <div class="detail-card-btn">鏌ョ湅鍗忚</div>
+                <div class="detail-card-btn" @click="checkAgreement">鏌ョ湅鍗忚</div>
               </template>
             </MineAgreementSignDetailItem>
           </template>
         </MineAgreementSignDetailCard>
       </div>
     </ContentScrollView>
-    <PageFooter>
+    <PageFooter v-if="detail?.userSignContractStatus === EnumTaskUserSignContractStatus.Wait">
       <PageFooterBtn type="primary" @click="goToSign">鍘荤绾�</PageFooterBtn>
     </PageFooter>
   </LoadingLayout>
 </template>
 
 <script setup lang="ts">
-import { useUserStore } from '@/stores/modules/user';
+import { useQuery } from '@tanstack/vue-query';
 import MineAgreementSignDetailCard from './MineAgreementSignDetailCard.vue';
 import MineAgreementSignDetailItem from './MineAgreementSignDetailItem.vue';
+import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
+import {
+  EnumTaskUserSignContractStatus,
+  EnumTaskUserSignContractStatusText,
+} from '@12333/constants';
+import { format } from '@12333/utils';
+import Taro from '@tarojs/taro';
 
 defineOptions({
   name: 'InnerPage',
 });
 
-const queryState = reactive({});
+const router = Taro.useRouter();
+const id = router.params?.id;
+const code = router.params?.code;
 
-const userStore = useUserStore();
+const {
+  isLoading,
+  isError,
+  data: detail,
+  refetch,
+} = useQuery({
+  queryKey: ['enterpriseEmployeeServices/getTaskInfo', id, code],
+  queryFn: async () => {
+    return await enterpriseEmployeeServices.getPersonalUserElectronSign(
+      { id: id, code: code },
+      {
+        showLoading: false,
+      }
+    );
+  },
+  placeholderData: () => ({} as API.GetPersonalUserElectronSignQueryResult),
+  onSuccess(data) {
+    // if (data.isExistTradeChatRecord) setTrue();
+  },
+});
+
+function checkAgreement() {
+  const encodedUrl = encodeURIComponent(detail?.value?.contractUrl);
+  Taro.navigateTo({
+    url: `${RouterPath.mineAgreementSignDetail}?url=${encodedUrl}`,
+  });
+}
 
 const goToSign = useAccessReal(() => {});
 </script>
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue
new file mode 100644
index 0000000..df4b9e5
--- /dev/null
+++ b/apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue
@@ -0,0 +1,17 @@
+<template>
+  <web-view :src="urlLink" />
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+
+defineOptions({
+  name: 'mineAgreementSignExtraPage',
+});
+
+const router = Taro.useRouter();
+
+const url = (router.params.url as string) ?? '';
+
+const urlLink = computed(() => decodeURIComponent(url));
+</script>
diff --git a/packages/components/src/Card/MineAgreementSignCard.vue b/packages/components/src/Card/MineAgreementSignCard.vue
index 8f2a7c5..43b0348 100644
--- a/packages/components/src/Card/MineAgreementSignCard.vue
+++ b/packages/components/src/Card/MineAgreementSignCard.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="task-card-wrapper">
     <div class="task-card-title-wrapper">
-      <div class="task-card-title">瀹佹尝浜哄姏鏃犲咖浜哄姏璧勬簮鏈夐檺鍏徃</div>
+      <div class="task-card-title">{{ props.enterpriseName }}</div>
     </div>
     <div class="task-card-footer">
       <div class="task-card-actions" :style="{ color: '#FF4D4F' }">
-        {{ '寰呯绾�' }}
+        {{ EnumTaskUserSignContractStatusSignText[props.userSignContractStatus] }}
       </div>
       <IconFont name="rect-right" size="12"></IconFont>
     </div>
@@ -13,14 +13,22 @@
 </template>
 
 <script setup lang="ts">
+import {
+  EnumTaskUserSignContractStatus,
+  EnumTaskUserSignContractStatusSignText,
+} from '@12333/constants';
 import { IconFont } from '@nutui/icons-vue-taro';
-import { CommonTaskCardProps } from './card';
 
 defineOptions({
   name: 'MineAgreementSignCard',
 });
 
-const props = withDefaults(defineProps<CommonTaskCardProps>(), {});
+type Props = {
+  enterpriseName: string;
+  userSignContractStatus: EnumTaskUserSignContractStatus;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
 </script>
 
 <style lang="scss">
diff --git a/packages/components/src/Card/SignCard.vue b/packages/components/src/Card/SignCard.vue
index a0e38fb..9782223 100644
--- a/packages/components/src/Card/SignCard.vue
+++ b/packages/components/src/Card/SignCard.vue
@@ -1,8 +1,8 @@
 <template>
   <div class="sign-card-wrapper">
-    <div class="sign-card-title">{{ '鍚堝悓缂栧彿锛�0293848340' }}</div>
+    <div class="sign-card-title">{{ `鍚堝悓缂栧彿锛�${props.templateId}` }}</div>
     <div class="sign-card-content">
-      <div class="sign-card-content-name">{{ 'xxxx鍔冲姟鍏徃鍚堝悓' }}</div>
+      <div class="sign-card-content-name">{{ props.name }}</div>
       <div class="sign-card-content-icon">
         <IconFont v-if="selected" name="check-checked" color="#3A71FF" size="16"></IconFont>
         <IconFont v-else name="check-normal" size="16"></IconFont>
@@ -22,6 +22,8 @@
 type Props = {
   checkedId?: string;
   id: string;
+  templateId: string;
+  name: string;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index b91d90e..bd799b6 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -159,6 +159,18 @@
   Face = 30,
 }
 
+/** 涓汉鐢ㄦ埛瀹炲悕鐘舵�� */
+export enum EnumPersonalUserRealStatus {
+  /**鏈疄鍚� */
+  UnReal = 0,
+  /**鏍¢獙涓� */
+  Checking = 10,
+  /**瀹炲悕澶辫触 */
+  Fail = 99,
+  /**宸插疄鍚� */
+  Real = 100,
+}
+
 /** 瀹炲悕閫氶亾 */
 export enum EnumRealAccess {
   /**涓婁笂绛� */
@@ -319,6 +331,10 @@
   Pass = 20,
   /**宸叉嫆绛� */
   Refuse = 30,
+  /**鐢熸晥涓� */
+  Effect = 40,
+  /**宸茬粓姝� */
+  Stop = 50,
 }
 
 /** 浠诲姟楠屾敹鐘舵�� */
diff --git a/packages/constants/enterpriseEmployee.ts b/packages/constants/enterpriseEmployee.ts
index fb0fab5..3049b07 100644
--- a/packages/constants/enterpriseEmployee.ts
+++ b/packages/constants/enterpriseEmployee.ts
@@ -18,3 +18,11 @@
   [EnumTaskUserSignContractStatus.Pass]: '宸茬绾�',
   [EnumTaskUserSignContractStatus.Refuse]: '宸茶阿缁�',
 };
+
+export const EnumTaskUserSignContractStatusSignText = {
+  [EnumTaskUserSignContractStatus.Wait]: '寰呯绾�',
+  [EnumTaskUserSignContractStatus.Pass]: '宸茬绾�',
+  [EnumTaskUserSignContractStatus.Refuse]: '宸叉嫆绛�',
+  [EnumTaskUserSignContractStatus.Effect]: '鐢熸晥涓�',
+  [EnumTaskUserSignContractStatus.Stop]: '宸茬粓姝�',
+};
diff --git a/packages/services/apiV2/electronSign.ts b/packages/services/apiV2/electronSign.ts
index b649bcb..abd2700 100644
--- a/packages/services/apiV2/electronSign.ts
+++ b/packages/services/apiV2/electronSign.ts
@@ -2,6 +2,36 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
+/** 鏍¢獙鍚堝悓妯℃槸鍚﹀彲鐢� POST /api/user/electronSign/checkContractTemplate */
+export async function checkContractTemplate(
+  body: API.CheckContractTemplateCommand,
+  options?: API.RequestConfig
+) {
+  return request<boolean>('/api/user/electronSign/checkContractTemplate', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
+/** 鏍¢獙鐢靛瓙绛鹃�氶亾鏄惁鍚敤 POST /api/user/electronSign/checkElectronSignAccessEnableds */
+export async function checkElectronSignAccessEnableds(
+  body: API.CheckElectronSignAccessEnabledsCommand,
+  options?: API.RequestConfig
+) {
+  return request<boolean>('/api/user/electronSign/checkElectronSignAccessEnableds', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鐢靛瓙绛惧洖浼� POST /api/user/electronSign/electronSignCallback */
 export async function electronSignCallback(
   body: API.ElectronSignCallbackCommand,
@@ -50,6 +80,24 @@
   );
 }
 
+/** 鏌ヨ宸插惎鐢ㄧ殑鐢靛瓙绛鹃厤缃� GET /api/user/electronSign/getEnabledElectronSignSettings */
+export async function getEnabledElectronSignSettings(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetEnabledElectronSignSettingsParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetEnabledElectronSignSettingsQueryResultItem[]>(
+    '/api/user/electronSign/getEnabledElectronSignSettings',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鏌ヨ浼佷笟鍚堝悓妯℃澘鏃ュ織鍒嗛〉鍒楄〃鏁版嵁 POST /api/user/electronSign/getEnterpriseContractTemplateLogs */
 export async function getEnterpriseContractTemplateLogs(
   body: API.GetEnterpriseContractTemplateLogsQuery,
@@ -81,6 +129,46 @@
         'Content-Type': 'application/json-patch+json',
       },
       data: body,
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ浼佷笟鍚堝悓妯℃澘閫夋嫨鍣ㄦ暟鎹� GET /api/user/electronSign/getEnterpriseContractTemplateSelect */
+export async function getEnterpriseContractTemplateSelect(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetEnterpriseContractTemplateSelectParams,
+  options?: API.RequestConfig
+) {
+  return request<API.SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[]>(
+    '/api/user/electronSign/getEnterpriseContractTemplateSelect',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+        request: undefined,
+        ...params['request'],
+      },
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ涓汉瀹炲悕缁撴灉 GET /api/user/electronSign/getPersonalUserRealResult */
+export async function getPersonalUserRealResult(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetPersonalUserRealResultParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetPersonalUserRealResultQueryResult>(
+    '/api/user/electronSign/getPersonalUserRealResult',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+        request: undefined,
+        ...params['request'],
+      },
       ...(options || {}),
     }
   );
@@ -131,6 +219,21 @@
   });
 }
 
+/** 鍚堝悓鍒剁増 POST /api/user/electronSign/saveContractTemplateValues */
+export async function saveContractTemplateValues(
+  body: API.SaveContractTemplateValuesCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/electronSign/saveContractTemplateValues', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鍙戦�佷釜浜轰笁瑕佺礌瀹炲悕鐭俊 POST /api/user/electronSign/sendPersonalUserIdentity3RealSms */
 export async function sendPersonalUserIdentity3RealSms(
   body: API.SendPersonalUserIdentity3RealSmsCommand,
@@ -160,3 +263,18 @@
     ...(options || {}),
   });
 }
+
+/** 鍚屾鐢靛瓙绛鹃厤缃� POST /api/user/electronSign/syncElectronSignSettings */
+export async function syncElectronSignSettings(
+  body: API.SyncElectronSignSettingsCommand,
+  options?: API.RequestConfig
+) {
+  return request<boolean>('/api/user/electronSign/syncElectronSignSettings', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/packages/services/apiV2/enterpriseEmployee.ts b/packages/services/apiV2/enterpriseEmployee.ts
index dfe7822..41ba82d 100644
--- a/packages/services/apiV2/enterpriseEmployee.ts
+++ b/packages/services/apiV2/enterpriseEmployee.ts
@@ -53,6 +53,42 @@
   );
 }
 
+/** 鏌ヨ涓汉鐢ㄦ埛绛剧害璇︽儏 GET /api/user/enterpriseEmployee/getPersonalUserElectronSign */
+export async function getPersonalUserElectronSign(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetPersonalUserElectronSignParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetPersonalUserElectronSignQueryResult>(
+    '/api/user/enterpriseEmployee/getPersonalUserElectronSign',
+    {
+      method: 'GET',
+      params: {
+        ...params,
+      },
+      ...(options || {}),
+    }
+  );
+}
+
+/** 鏌ヨ涓汉鐢ㄦ埛绛剧害鍒楄〃 POST /api/user/enterpriseEmployee/getPersonalUserElectronSigns */
+export async function getPersonalUserElectronSigns(
+  body: API.GetPersonalUserElectronSignsQuery,
+  options?: API.RequestConfig
+) {
+  return request<API.GetPersonalUserElectronSignsQueryResult>(
+    '/api/user/enterpriseEmployee/getPersonalUserElectronSigns',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 瀵煎叆鐏靛伐淇℃伅 POST /api/user/enterpriseEmployee/importEnterpriseEmployees */
 export async function importEnterpriseEmployees(
   body: API.ImportEnterpriseEmployeesCommand,
@@ -70,3 +106,18 @@
     }
   );
 }
+
+/** 閭�璇风伒宸ョ绾� POST /api/user/enterpriseEmployee/inviteElectronSign */
+export async function inviteElectronSign(
+  body: API.InviteElectronSignCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/enterpriseEmployee/inviteElectronSign', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index 2145001..7c7dd5e 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -5,16 +5,16 @@
 import * as enterpriseEmployee from './enterpriseEmployee';
 import * as user from './user';
 import * as role from './role';
+import * as ocrUtils from './ocrUtils';
 import * as enterprise from './enterprise';
 import * as resource from './resource';
 import * as task from './task';
 import * as dictionary from './dictionary';
+import * as electronSign from './electronSign';
 import * as userResume from './userResume';
 import * as auth from './auth';
 import * as taskCheckReceive from './taskCheckReceive';
-import * as electronSign from './electronSign';
 import * as taskUser from './taskUser';
-import * as ocrUtils from './ocrUtils';
 import * as menu from './menu';
 import * as logRecords from './logRecords';
 import * as fileUtils from './fileUtils';
@@ -22,16 +22,16 @@
   enterpriseEmployee,
   user,
   role,
+  ocrUtils,
   enterprise,
   resource,
   task,
   dictionary,
+  electronSign,
   userResume,
   auth,
   taskCheckReceive,
-  electronSign,
   taskUser,
-  ocrUtils,
   menu,
   logRecords,
   fileUtils,
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index 31ee0fb..2884491 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -66,6 +66,16 @@
     withChildren?: boolean;
   }
 
+  interface APIgetEnabledElectronSignSettingsParams {
+    /** 浼佷笟Id */
+    enterpriseId?: string;
+  }
+
+  interface APIgetEnterpriseContractTemplateSelectParams {
+    /** 鏌ヨ浼佷笟鍚堝悓妯℃澘閫夋嫨鍣ㄦ暟鎹� */
+    request?: GetEnterpriseContractTemplateSelectQuery;
+  }
+
   interface APIgetEnterpriseElectronSignSettingParams {
     /** Id */
     id?: string;
@@ -117,6 +127,18 @@
   interface APIgetPersonalLoginInfoParams {
     /** 鏌ヨ涓汉鐢ㄦ埛鐧诲綍淇℃伅 */
     request?: GetPersonalLoginInfoQuery;
+  }
+
+  interface APIgetPersonalUserElectronSignParams {
+    /** 鐏靛伐Id */
+    id?: string;
+    /** 鍚堝悓妯℃澘涓氬姟缂栫爜 */
+    code?: string;
+  }
+
+  interface APIgetPersonalUserRealResultParams {
+    /** 鏌ヨ涓汉瀹炲悕缁撴灉 */
+    request?: GetPersonalUserRealResultQuery;
   }
 
   interface APIgetResourceFieldsParams {
@@ -271,6 +293,16 @@
     phoneNumber: string;
     /** 楠岃瘉鐮� */
     verifyCode: string;
+  }
+
+  interface CheckContractTemplateCommand {
+    /** 鍚堝悓妯℃澘Id */
+    id?: string;
+  }
+
+  interface CheckElectronSignAccessEnabledsCommand {
+    /** 閫氶亾 */
+    accesses?: EnumElectronSignAccess[];
   }
 
   type CheckHealthQuery = Record<string, any>;
@@ -498,6 +530,17 @@
     Face = 30,
   }
 
+  enum EnumPersonalUserRealStatus {
+    /**鏈疄鍚� */
+    UnReal = 0,
+    /**鏍¢獙涓� */
+    Checking = 10,
+    /**瀹炲悕澶辫触 */
+    Fail = 99,
+    /**宸插疄鍚� */
+    Real = 100,
+  }
+
   enum EnumRealAccess {
     /**涓婁笂绛� */
     BestSign = 10,
@@ -644,6 +687,10 @@
     Pass = 20,
     /**宸叉嫆绛� */
     Refuse = 30,
+    /**鐢熸晥涓� */
+    Effect = 40,
+    /**宸茬粓姝� */
+    Stop = 50,
   }
 
   enum EnumTaskUserSubmitCheckReceiveStatus {
@@ -1181,6 +1228,42 @@
     timestamp?: number;
   }
 
+  interface FriendlyResultGetPersonalUserElectronSignQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetPersonalUserElectronSignQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetPersonalUserElectronSignsQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetPersonalUserElectronSignsQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
   interface FriendlyResultGetPersonalUserInfoSignContractsQueryResult {
     /** 璺熻釜Id */
     traceId?: string;
@@ -1207,6 +1290,24 @@
     /** 閿欒鐮� */
     errorCode?: string;
     data?: GetPersonalUserInfosQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetPersonalUserRealResultQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetPersonalUserRealResultQueryResult;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -1562,6 +1663,25 @@
     timestamp?: number;
   }
 
+  interface FriendlyResultListGetEnabledElectronSignSettingsQueryResultItem {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    /** 鏁版嵁 */
+    data?: GetEnabledElectronSignSettingsQueryResultItem[];
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
   interface FriendlyResultListGetMenusQueryResultItem {
     /** 璺熻釜Id */
     traceId?: string;
@@ -1685,6 +1805,25 @@
     errorCode?: string;
     /** 鏁版嵁 */
     data?: SelectOptionGuidGetDictionaryCategorySelectQueryOption[];
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultListSelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    /** 鏁版嵁 */
+    data?: SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[];
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -2150,6 +2289,12 @@
     name?: string;
     /** 妯℃澘 */
     file?: string;
+    /** 灏忕▼搴忕爜 */
+    wxmpQrCode?: string;
+    /** 鍒剁増妯℃澘鐓х墖 */
+    templateEditData?: string;
+    /** 鍒剁増鍙橀噺JSON */
+    templateJsonData?: string;
     /** 涓氬姟缂栫爜 */
     code?: string;
     access?: EnumElectronSignAccess;
@@ -2157,6 +2302,10 @@
     templateId?: string;
     /** 鍙橀噺 */
     values?: GetContractTemplateQueryResultValue[];
+    /** 鍒涘缓鎿嶄綔浜� */
+    createdUserId?: string;
+    /** 鏄惁浼佷笟鐢ㄦ埛鍒涘缓 */
+    isEnterpriseUserCreated?: boolean;
   }
 
   interface GetContractTemplateQueryResultValue {
@@ -2169,6 +2318,8 @@
     label?: string;
     /** 鍙橀噺浠g爜 */
     name?: string;
+    /** 缁戝畾瀛楁 */
+    bindProperty?: string;
     /** 鏄惁蹇呭~ */
     required?: boolean;
   }
@@ -2318,6 +2469,16 @@
     isDisabled?: boolean;
   }
 
+  interface GetEnabledElectronSignSettingsQueryResultItem {
+    access?: EnumElectronSignAccess;
+    /** 瀹炲悕璐圭敤 */
+    realVerifyCost?: number;
+    /** 绛剧害璐圭敤 */
+    signCost?: number;
+    /** 涓�鍙d环 */
+    mergeSignCost?: number;
+  }
+
   interface GetEnterpriseContractTemplateLogsQuery {
     /** 妯℃澘Id */
     id?: string;
@@ -2340,6 +2501,17 @@
     operate?: EnumDbAuditOperate;
     /** 鎿嶄綔鍐呭 */
     content?: string[];
+  }
+
+  type GetEnterpriseContractTemplateSelectQuery = Record<string, any>;
+
+  interface GetEnterpriseContractTemplateSelectQueryOption {
+    /** Id */
+    id?: string;
+    /** 妯℃澘鍚嶇О */
+    name?: string;
+    /** 妯℃澘Id */
+    templateId?: string;
   }
 
   interface GetEnterpriseContractTemplatesQuery {
@@ -2379,6 +2551,8 @@
     code?: string;
     /** 妯℃澘 */
     file?: string;
+    /** 灏忕▼搴忕爜 */
+    wxmpQrCode?: string;
     status?: EnumContractTemplateStatus;
     /** 鍒剁増鏃堕棿 */
     completedTime?: string;
@@ -2389,13 +2563,8 @@
   interface GetEnterpriseElectronSignSettingQueryResult {
     /** Id */
     id?: string;
-    realAccess?: EnumRealAccess;
-    /** 瀹炲悕璐圭敤 */
-    realVerifyCost?: number;
-    /** 绛剧害璐圭敤 */
-    signCost?: number;
-    /** 涓�鍙d环 */
-    mergeSignCost?: number;
+    /** 鐢靛瓙绛鹃�氶亾 */
+    electronSignAccesses?: EnumElectronSignAccess[];
   }
 
   interface GetEnterpriseEmployeeQueryResult {
@@ -2992,6 +3161,47 @@
     hireRefuseTaskCount?: number;
   }
 
+  interface GetPersonalUserElectronSignQueryResult {
+    /** 鍚堝悓缂栧彿 */
+    contractCode?: string;
+    userSignContractStatus?: EnumTaskUserSignContractStatus;
+    /** 绛剧害鏂逛俊鎭�-鍛樺伐-濮撳悕 */
+    name?: string;
+    /** 绛剧害鏂逛俊鎭�-鍛樺伐-璇佷欢绫诲瀷 */
+    identityType?: string;
+    /** 绛剧害鏂逛俊鎭�-鍛樺伐-璇佷欢鍙风爜 */
+    identity?: string;
+    /** 绛剧害鏂逛俊鎭�-鍛樺伐-绛剧害鏃堕棿 */
+    userSignContractTime?: string;
+    /** 绛剧害鏂逛俊鎭�-鍏徃涓讳綋-涓讳綋绫诲瀷 */
+    enterpriseType?: string;
+    /** 绛剧害鏂逛俊鎭�-鍏徃涓讳綋-绛剧害涓讳綋 */
+    enterpriseName?: string;
+    /** 绛剧害鏂逛俊鎭�-鍏徃涓讳綋-绛剧害鏃堕棿 */
+    enterpriseSignContractTime?: string;
+    /** 鍗忚鍐呭 */
+    contractUrl?: string;
+  }
+
+  interface GetPersonalUserElectronSignsQuery {
+    userSignContractStatus?: EnumTaskUserSignContractStatus;
+    pageModel?: PagedListQueryPageModel;
+  }
+
+  interface GetPersonalUserElectronSignsQueryResult {
+    pageModel?: PagedListQueryResultPageModel;
+    /** 鏁版嵁 */
+    data?: GetPersonalUserElectronSignsQueryResultItem[];
+  }
+
+  interface GetPersonalUserElectronSignsQueryResultItem {
+    /** 鐏靛伐Id */
+    id?: string;
+    /** 浼佷笟鍏ㄧО */
+    enterpriseName?: string;
+    userSignContractStatus?: EnumTaskUserSignContractStatus;
+  }
+
   interface GetPersonalUserInfoSignContractsQuery {
     /** 鐢ㄦ埛Id */
     id?: string;
@@ -3078,6 +3288,41 @@
     hireTime?: string;
     /** 鏈�杩戠绾︽椂闂� */
     signContractTime?: string;
+  }
+
+  type GetPersonalUserRealResultQuery = Record<string, any>;
+
+  interface GetPersonalUserRealResultQueryResult {
+    /** 鏄惁瀹炲悕 */
+    isReal?: boolean;
+    /** 瀹炲悕鏃堕棿 */
+    realTime?: string;
+    realMethod?: EnumUserRealMethod;
+    /** 濮撳悕 */
+    name?: string;
+    /** 鎵嬫満鍙� */
+    phoneNumber?: string;
+    /** 韬唤璇佸彿 */
+    identity?: string;
+    /** 韬唤璇佷汉鍍忛潰 */
+    identityImg?: string;
+    /** 韬唤璇佸浗寰介潰 */
+    identityBackImg?: string;
+    gender?: EnumUserGender;
+    /** 鐢熸棩 */
+    birthday?: string;
+    /** 骞撮緞 */
+    age?: number;
+    /** 閾惰鍗″彿 */
+    bankCard?: string;
+    /** 閾惰鍗$収鐗� */
+    bankCardImg?: string;
+    realAccess?: EnumRealAccess;
+    realStatus?: EnumPersonalUserRealStatus;
+    /** 瀹炲悕澶辫触娑堟伅 */
+    realFailMessage?: string;
+    /** 浜鸿劯瀹炲悕璁よ瘉鍦板潃 */
+    faceRealUrl?: string;
   }
 
   interface GetResourceFieldsQueryResultItem {
@@ -3814,6 +4059,13 @@
     identity?: string;
   }
 
+  interface InviteElectronSignCommand {
+    /** 鐏靛伐Id */
+    id?: string;
+    /** 鍚堝悓妯℃澘Id */
+    contractTemplateId?: string;
+  }
+
   interface LoginCommandCallback {
     /** 鐢ㄦ埛Id */
     id?: string;
@@ -3939,18 +4191,27 @@
     name: string;
     /** 妯℃澘 */
     file: string;
+    /** 鍒剁増妯℃澘鐓х墖 */
+    templateEditData?: string;
     /** 涓氬姟缂栫爜 */
     code?: string;
     access?: EnumElectronSignAccess;
     /** 妯℃澘Id */
     templateId?: string;
-    /** 鍙橀噺 */
-    values?: SaveContractTemplateCommandValue[];
     /** Id */
     id?: string;
   }
 
-  interface SaveContractTemplateCommandValue {
+  interface SaveContractTemplateValuesCommand {
+    /** 妯℃澘Id */
+    id: string;
+    /** 鍒剁増鍙橀噺JSON */
+    templateJsonData?: string;
+    /** 鍙橀噺 */
+    values: SaveContractTemplateValuesCommandItem[];
+  }
+
+  interface SaveContractTemplateValuesCommandItem {
     /** Id */
     id?: string;
     type?: EnumContractTemplateValueType;
@@ -3960,6 +4221,8 @@
     label?: string;
     /** 鍙橀噺浠g爜 */
     name?: string;
+    /** 缁戝畾瀛楁 */
+    bindProperty?: string;
     /** 鏄惁蹇呭~ */
     required?: boolean;
   }
@@ -4283,6 +4546,14 @@
     data?: GetDictionaryCategorySelectQueryOption;
   }
 
+  interface SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption {
+    /** 鍊� */
+    value?: string;
+    /** 鏍囩 */
+    label?: string;
+    data?: GetEnterpriseContractTemplateSelectQueryOption;
+  }
+
   interface SelectOptionStringGetDictionaryDataSelectQueryResultOption {
     /** 鍊� */
     value?: string;
@@ -4314,13 +4585,8 @@
   interface SetEnterpriseElectronSignSettingCommand {
     /** Id */
     id?: string;
-    realAccess?: EnumRealAccess;
-    /** 瀹炲悕璐圭敤 */
-    realVerifyCost?: number;
-    /** 绛剧害璐圭敤 */
-    signCost?: number;
-    /** 涓�鍙d环 */
-    mergeSignCost?: number;
+    /** 鐢靛瓙绛鹃�氶亾 */
+    electronSignAccesses?: EnumElectronSignAccess[];
   }
 
   interface SetEnterpriseSmsSettingCommand {
@@ -4415,6 +4681,23 @@
     files?: string[];
   }
 
+  interface SyncElectronSignSettingsCommand {
+    /** 椤� */
+    items?: SyncElectronSignSettingsCommandItem[];
+  }
+
+  interface SyncElectronSignSettingsCommandItem {
+    access?: EnumElectronSignAccess;
+    /** 鏄惁绂佺敤 */
+    isDisabled?: boolean;
+    /** 瀹炲悕璐圭敤 */
+    realVerifyCost?: number;
+    /** 绛剧害璐圭敤 */
+    signCost?: number;
+    /** 涓�鍙d环 */
+    mergeSignCost?: number;
+  }
+
   interface SyncEnterpriseUserCommand {
     dataSource?: EnumDataSource;
     /** 鏁版嵁鏉ユ簮Id */
@@ -4463,13 +4746,9 @@
     bankCard?: string;
     /** 鏄惁宸叉牎楠岄摱琛岃处鎴� */
     isCheckedBankCard?: boolean;
+    /** 鐢靛瓙绛鹃�氶亾 */
+    electronSignAccesses?: EnumElectronSignAccess[];
     realAccess?: EnumRealAccess;
-    /** 瀹炲悕璐圭敤 */
-    realVerifyCost?: number;
-    /** 绛剧害璐圭敤 */
-    signCost?: number;
-    /** 涓�鍙d环 */
-    mergeSignCost?: number;
     /** 鏄惁瀹炲悕 */
     isReal?: boolean;
     enterpriseAuth?: SyncEnterpriseUserCommandEnterpriseAuth;
@@ -4478,6 +4757,10 @@
   interface SyncEnterpriseUserCommandEnterpriseAuth {
     enterpriseRealMethod?: EnumEnterpriseRealMethod;
     personalRealMethod?: EnumPersonalRealMethod;
+    /** 娉曚汉濮撳悕 */
+    legalPerson?: string;
+    /** 娉曚汉韬唤璇佸彿 */
+    legalIdentity?: string;
     /** 娉曚汉鎴栫粡鍔炰汉濮撳悕 */
     name?: string;
     /** 娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿 */
@@ -4496,6 +4779,8 @@
     proxy?: boolean;
     /** 浼佷笟鎺堟潈涔� */
     proxyPowerAttorneyUrl?: string;
+    /** 绗笁鏂瑰疄鍚嶉�氶亾璐﹀彿 */
+    certAccount?: string;
   }
 
   type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;

--
Gitblit v1.9.1