From ea419e5d4d95728a5654b0cb4bb3fb7634e2660a Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 24 十月 2025 15:55:28 +0800
Subject: [PATCH] fix: 自动签配置

---
 src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue |   99 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 79 insertions(+), 20 deletions(-)

diff --git a/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue b/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
index 2bc2f6d..04d7d16 100644
--- a/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
+++ b/src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
@@ -18,25 +18,19 @@
           :formatter="filterCN"
         ></ProFormText>
       </ProFormItemV2>
-      <ProFormItemV2
-        label="閫氶亾锛�"
-        prop="templateId"
-        :check-rules="[{ message: '璇烽�夋嫨鐢靛瓙绛鹃�氶亾' }]"
-      >
+      <ProFormItemV2 label="閫氶亾锛�" prop="access" :check-rules="[{ message: '璇烽�夋嫨鐢靛瓙绛鹃�氶亾' }]">
         <ProFormSelect
           placeholder="璇烽�夋嫨鐢靛瓙绛鹃�氶亾"
-          v-model="form.templateId"
-          :value-enum="[{ label: 1, value: '鏀粯瀹�' }]"
+          v-model="form.access"
+          :value-enum="enabledElectronSignSettings"
+          enum-value-key="access"
+          enum-label-key="accessName"
         ></ProFormSelect>
       </ProFormItemV2>
-      <ProFormItemV2
-        label="涓氬姟缂栫爜锛�"
-        prop="bussinessCode"
-        :check-rules="[{ message: '璇疯緭鍏ヤ笟鍔$紪鐮�' }]"
-      >
+      <ProFormItemV2 label="涓氬姟缂栫爜锛�" prop="code" :check-rules="[{ message: '璇疯緭鍏ヤ笟鍔$紪鐮�' }]">
         <ProFormText
           placeholder="璇疯緭鍏ヤ笟鍔$紪鐮�"
-          v-model.trim="form.bussinessCode"
+          v-model.trim="form.code"
           :maxlength="5"
           :formatter="filterNumbersFromString"
         ></ProFormText>
@@ -45,20 +39,43 @@
         <ProFormText
           placeholder="璇疯緭鍏ユā鏉垮悕绉�"
           v-model.trim="form.name"
-          :maxlength="15"
+          :maxlength="32"
+          :disabled="form.isEnterpriseUserCreated"
         ></ProFormText>
       </ProFormItemV2>
       <ProFormItemV2
         label="涓婁紶妯℃澘锛�"
-        prop="templateFileUrl"
+        prop="file"
         :check-rules="[{ message: '璇蜂笂浼犳ā鏉�', type: 'upload' }]"
       >
         <ProFormUpload
-          v-model:file-url="form.templateFileUrl"
+          v-model:file-url="form.file"
           :limit="1"
           :limitFileSize="10"
           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>
@@ -78,9 +95,17 @@
   ProFormText,
   ProFormUpload,
   ProFormSelect,
+  ProFormSwitch,
 } from '@bole-core/components';
-import { filterCN, filterNumbersFromString } from '@/utils';
-import { FormInstance } from 'element-plus';
+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';
 
 defineOptions({
   name: 'AddOrEditTemplateDialog',
@@ -93,8 +118,13 @@
   id: string;
   templateId: string;
   name: string;
-  bussinessCode: string;
-  templateFileUrl: UploadUserFile[];
+  code: string;
+  file: UploadUserFile[];
+  access: EnumElectronSignAccess;
+  isEnterpriseUserCreated: boolean;
+  enterpriseId: string;
+  isAutoSign: boolean;
+  autoSignPowerAttorneyUrl: UploadUserFile[];
 };
 
 const form = defineModel<Form>('form');
@@ -104,6 +134,35 @@
   (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,
+});
+
+async function handleCodeBlur() {
+  try {
+    let params: API.CheckContractTemplateCommand = {
+      id: form.value?.id,
+    };
+    let res = await electronSignServices.checkContractTemplate(params);
+    if (res) {
+      Message.warnMessage('涓氬姟缂栫爜宸插瓨鍦�,璇烽噸鏂拌緭鍏�');
+    }
+  } catch (error) {}
+}
+
+function handleDownload() {
+  downloadFileByUrl(AutoSignPowerAttorneyTempUrl, '鑷姩绛炬巿鏉冧功妯℃澘');
+}
+
 const dialogForm = ref<FormInstance>();
 
 function onDialogClose() {

--
Gitblit v1.9.1