From ffe106598cb2def7e7e905695f5d6893eddcf3fd Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 27 十月 2025 19:35:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-auto-sign'

---
 .eslintrc-auto-import.json                                      |    1 
 src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue |   47 ++++++++++++++++++++++-
 src/views/ProtocolManage/EditTemplate.vue                       |   14 +++++++
 auto-imports.d.ts                                               |    2 +
 src/constants/electronSign.ts                                   |    3 +
 5 files changed, 64 insertions(+), 3 deletions(-)

diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 2b8d5a5..f11224d 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -5,6 +5,7 @@
     "AppType": true,
     "AreaType": true,
     "AuthorizeType": true,
+    "AutoSignPowerAttorneyTempUrl": true,
     "BooleanOptions": true,
     "CategoryCode": true,
     "CertificateTypeCodeEnum": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index fb65a3e..1eeca58 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -11,6 +11,7 @@
   const AppType: typeof import('./src/constants/app')['AppType']
   const AreaType: typeof import('./src/constants/enum')['AreaType']
   const AuthorizeType: typeof import('./src/constants/enum')['AuthorizeType']
+  const AutoSignPowerAttorneyTempUrl: typeof import('./src/constants/electronSign')['AutoSignPowerAttorneyTempUrl']
   const BooleanOptions: typeof import('./src/constants/enum')['BooleanOptions']
   const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
   const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
@@ -371,6 +372,7 @@
     readonly AppType: UnwrapRef<typeof import('./src/constants/app')['AppType']>
     readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
     readonly AuthorizeType: UnwrapRef<typeof import('./src/constants/enum')['AuthorizeType']>
+    readonly AutoSignPowerAttorneyTempUrl: UnwrapRef<typeof import('./src/constants/electronSign')['AutoSignPowerAttorneyTempUrl']>
     readonly BooleanOptions: UnwrapRef<typeof import('./src/constants/enum')['BooleanOptions']>
     readonly CategoryCode: UnwrapRef<typeof import('./src/constants/dic')['CategoryCode']>
     readonly CertificateTypeCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['CertificateTypeCodeEnum']>
diff --git a/src/constants/electronSign.ts b/src/constants/electronSign.ts
index 65a05cc..dd8ae10 100644
--- a/src/constants/electronSign.ts
+++ b/src/constants/electronSign.ts
@@ -1,4 +1,5 @@
 import { EnumContractTemplateValueRecorder } from './apiEnum';
+import { TempFolderPath } from './enum';
 
 export const EnumContractTemplateStatusText = {
   [EnumContractTemplateStatus.Wait]: '寰呭埗鐗�',
@@ -31,3 +32,5 @@
   [EnumContractTemplateValueRecorder.Creator]: '鍙戜欢浜�',
   [EnumContractTemplateValueRecorder.Signer]: '绛剧讲浜�',
 };
+
+export const AutoSignPowerAttorneyTempUrl = `https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E3%80%90%E5%85%AC%E5%AF%B9%E5%85%AC%E3%80%91%E7%94%B5%E5%AD%90%E7%AD%BE%E5%90%8D%E6%8E%88%E6%9D%83%E4%B9%A6%EF%BC%88%E4%BB%A3%E4%B8%BA%E7%AD%BE%E7%BD%B2%26%E8%87%AA%E5%8A%A8%E7%AD%BE%EF%BC%89-V4-20220315.docx`;
diff --git a/src/views/ProtocolManage/EditTemplate.vue b/src/views/ProtocolManage/EditTemplate.vue
index 0154140..16a8129 100644
--- a/src/views/ProtocolManage/EditTemplate.vue
+++ b/src/views/ProtocolManage/EditTemplate.vue
@@ -181,6 +181,10 @@
         showDownloadBtn: false,
         formatter: (row: API.GetEnterpriseContractTemplatesQueryResultItem) => setOSSLink(row.file),
       },
+      isAutoSign: {
+        formatter: (row: API.GetEnterpriseContractTemplatesQueryResultItem) =>
+          row.isAutoSign ? '鏄�' : '鍚�',
+      },
     },
   }
 );
@@ -198,6 +202,8 @@
     isEnterpriseUserCreated: false,
     templateEditData: '',
     enterpriseId: '',
+    isAutoSign: false,
+    autoSignPowerAttorneyUrl: [] as UploadUserFile[],
   },
   closeAfterConfirm: false,
 });
@@ -215,6 +221,8 @@
         access: row.access,
         isEnterpriseUserCreated: detail.isEnterpriseUserCreated,
         templateEditData: detail.templateEditData,
+        isAutoSign: detail.isAutoSign ?? false,
+        autoSignPowerAttorneyUrl: convertApi2FormUrlOnlyOne(detail.autoSignPowerAttorneyUrl),
         enterpriseId: enterpriseId,
       });
     } else {
@@ -234,6 +242,7 @@
       code: editForm.code,
       access: editForm.access,
       templateId: editForm.templateId,
+      autoSignPowerAttorneyUrl: editForm.autoSignPowerAttorneyUrl?.[0]?.path ?? '',
       templateEditData: JSON.stringify(
         pdfToImage.map(
           (x) =>
@@ -245,6 +254,11 @@
         )
       ),
     };
+    if (editForm.access === EnumElectronSignAccess.BestSign) {
+      params.isAutoSign = editForm.isAutoSign;
+    } else {
+      params.isAutoSign = false;
+    }
     if (isEdit) {
       params.id = editForm.id;
     }
diff --git a/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue b/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
index 6e0f397..04d7d16 100644
--- a/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
+++ b/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
@@ -55,6 +55,28 @@
           accept="pdf"
         ></ProFormUpload>
       </ProFormItemV2>
+      <ProFormItemV2
+        label="鑷姩绛剧害锛�"
+        prop="isAutoSign"
+        required
+        v-if="form.access === EnumElectronSignAccess.BestSign"
+      >
+        <ProFormSwitch v-model="form.isAutoSign"></ProFormSwitch>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="涓婁紶鎺堟潈涔︼細"
+        prop="autoSignPowerAttorneyUrl"
+        :check-rules="form.isAutoSign && [{ message: '璇蜂笂浼犵鎺堟潈涔�', type: 'upload' }]"
+        :required="form.isAutoSign"
+      >
+        <ProFormUpload
+          v-model:file-url="form.autoSignPowerAttorneyUrl"
+          :limit="1"
+          :limitFileSize="10"
+          accept="pdf,doc,docx,png,jpg,jpeg"
+        ></ProFormUpload>
+        <el-button type="primary" link @click="handleDownload">涓嬭浇妯℃澘</el-button>
+      </ProFormItemV2>
     </ProForm>
     <template #footer>
       <span class="dialog-footer">
@@ -73,10 +95,15 @@
   ProFormText,
   ProFormUpload,
   ProFormSelect,
+  ProFormSwitch,
 } from '@bole-core/components';
-import { filterCN, filterNumbersFromString } from '@/utils';
-import { FormInstance } from 'element-plus';
-import { EnumElectronSignAccessText } from '@/constants';
+import { filterCN, filterNumbersFromString, downloadFileByUrl } from '@/utils';
+import { FormInstance, FormRules } from 'element-plus';
+import {
+  EnumElectronSignAccessText,
+  EnumElectronSignAccess,
+  AutoSignPowerAttorneyTempUrl,
+} from '@/constants';
 import * as electronSignServices from '@/services/api/electronSign';
 import { Message } from '@bole-core/core';
 
@@ -96,6 +123,8 @@
   access: EnumElectronSignAccess;
   isEnterpriseUserCreated: boolean;
   enterpriseId: string;
+  isAutoSign: boolean;
+  autoSignPowerAttorneyUrl: UploadUserFile[];
 };
 
 const form = defineModel<Form>('form');
@@ -105,6 +134,14 @@
   (e: 'onCancel'): void;
 }>();
 
+watch(
+  () => form.value.isAutoSign,
+  () => {
+    if (form.value.isAutoSign && dialogForm.value) {
+      dialogForm.value.clearValidate('autoSignPowerAttorneyUrl');
+    }
+  }
+);
 const { enabledElectronSignSettings } = useEnabledElectronSignSettings({
   enterpriseId: computed(() => form.value.enterpriseId),
   all: true,
@@ -122,6 +159,10 @@
   } catch (error) {}
 }
 
+function handleDownload() {
+  downloadFileByUrl(AutoSignPowerAttorneyTempUrl, '鑷姩绛炬巿鏉冧功妯℃澘');
+}
+
 const dialogForm = ref<FormInstance>();
 
 function onDialogClose() {

--
Gitblit v1.9.1