From d5dae013d54e1e74390669a88241f6b8d4c1ec18 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 21 八月 2025 10:32:52 +0800
Subject: [PATCH] fix: 签约

---
 src/views/ProtocolManage/EditTemplate.vue |  142 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 110 insertions(+), 32 deletions(-)

diff --git a/src/views/ProtocolManage/EditTemplate.vue b/src/views/ProtocolManage/EditTemplate.vue
index 1faf700..257d4a3 100644
--- a/src/views/ProtocolManage/EditTemplate.vue
+++ b/src/views/ProtocolManage/EditTemplate.vue
@@ -6,10 +6,7 @@
           <QueryFilterItem>
             <FieldRadio
               v-model="extraParamState.status"
-              :value-enum="[
-                { value: 1, label: '寰呭埗鐗�' },
-                { value: 2, label: '宸插畬鎴�' },
-              ]"
+              :value-enum="EnumContractTemplateStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -17,7 +14,7 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="瀹㈡埛涓婁紶鏃堕棿">
             <FieldDatePicker
-              v-model="extraParamState.beginDate"
+              v-model="extraParamState.createdTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -28,7 +25,7 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="鍒剁増鏃堕棿">
             <FieldDatePicker
-              v-model="extraParamState.beginDate"
+              v-model="extraParamState.completedTime"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -55,6 +52,7 @@
       </ProTableV2>
     </AppContainer>
     <AddOrEditTemplateDialog v-bind="dialogProps" />
+    <OperateHistoryLogDialog v-bind="logDialogProps" />
   </LoadingLayout>
 </template>
 
@@ -75,9 +73,11 @@
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
 import { ModelValueType } from 'element-plus';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as electronSignServices from '@/services/api/electronSign';
 import AddOrEditTemplateDialog from './components/AddOrEditTemplateDialog.vue';
-import { Message } from '@bole-core/core';
+import { downloadFileByUrl, Message } from '@bole-core/core';
+import { convertApi2FormUrlOnlyOne, format, setOSSLink } from '@/utils';
+import { EnumContractTemplateStatus, EnumContractTemplateStatusText } from '@/constants';
 
 defineOptions({
   name: 'EditTemplate',
@@ -96,13 +96,14 @@
   },
   delBtn: {
     emits: { onClick: (role) => handleDelete(role) },
+    props: { type: 'danger' },
     extraProps: {
       hide: (row) => false,
     },
   },
 
   logBtn: {
-    emits: { onClick: (role) => openLogDialog(role) },
+    emits: { onClick: (role) => openLogDialog(role.id) },
   },
 };
 
@@ -110,7 +111,8 @@
   operationBtnMap,
 });
 
-const router = useRouter();
+const route = useRoute();
+const enterpriseId = route.params?.id as string;
 const BaseState = {
   loading: true,
 };
@@ -131,15 +133,21 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetEnterprisesQuery = {
+      let params: API.GetEnterpriseContractTemplatesQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        // searchKeys: extraParamState.keyword,
+        keywords: extraParamState.keyword,
+        status: extraParamState.status,
+        createdTimeBegin: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        completedTimeBegin: format(extraParamState.completedTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        completedTimeEnd: format(extraParamState.completedTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        enterpriseId: enterpriseId,
       };
-      let res = await enterpriseServices.getEnterprises(params, {
+      let res = await electronSignServices.getEnterpriseContractTemplates(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -148,12 +156,22 @@
   {
     defaultExtraParams: {
       keyword: '',
-      status: '' as any as boolean,
-      beginDate: [] as unknown as ModelValueType,
-      endDate: [] as unknown as ModelValueType,
-      orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
+      status: '' as any as EnumContractTemplateStatus,
+      createdTime: [] as unknown as ModelValueType,
+      completedTime: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
     },
-    columnsRenderProps: {},
+    columnsRenderProps: {
+      createdTime: { type: 'date' },
+      completedTime: { type: 'date' },
+      status: { type: 'enum', valueEnum: EnumContractTemplateStatusText },
+      access: { type: 'enum', valueEnum: EnumElectronSignAccessText },
+      file: {
+        type: 'url',
+        showDownloadBtn: false,
+        formatter: (row: API.GetEnterpriseContractTemplatesQueryResultItem) => setOSSLink(row.file),
+      },
+    },
   }
 );
 
@@ -163,34 +181,94 @@
     id: '',
     templateId: '',
     name: '',
-    bussinessCode: '',
-    templateFileUrl: [] as UploadUserFile[],
+    code: '',
+    file: [] as UploadUserFile[],
+    access: '' as any as EnumElectronSignAccess,
     title: '鏂板妯℃澘',
   },
 });
 
-function openDialog(row?) {
+function openDialog(row?: API.GetEnterpriseContractTemplatesQueryResultItem) {
   if (row) {
     handleEdit({
-      id: '',
-      name: '',
-      bussinessCode: '',
-      templateId: '',
-      templateFileUrl: [] as UploadUserFile[],
+      id: row.id,
+      templateId: row.templateId,
+      name: row.name,
+      code: row.code,
+      file: convertApi2FormUrlOnlyOne(row.file),
+      access: row.access,
     });
   } else {
     handleAdd();
   }
 }
 
-async function handleAddOrEdit() {}
-
-function handleDownload(row) {}
-async function handleDelete(row) {
+async function handleAddOrEdit() {
   try {
-    await Message.deleteMessage();
+    let isEdit = !!editForm.id;
+    let params: API.SaveContractTemplateCommand = {
+      name: editForm.name,
+      file: editForm.file[0]?.path ?? '',
+      enterpriseId: enterpriseId,
+      code: editForm.code,
+      access: editForm.access,
+      templateId: editForm.templateId,
+      // values: [
+      //   {
+      //     id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
+      //     type: 10,
+      //     recorder: 10,
+      //     userType: 10,
+      //     label: 'string',
+      //     name: 'string',
+      //     required: true,
+      //   },
+      // ],
+    };
+    if (isEdit) {
+      params.id = editForm.id;
+    }
+    let res = await electronSignServices.saveContractTemplate(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList();
+    }
   } catch (error) {}
 }
 
-function openLogDialog(row) {}
+function handleDownload(row: API.GetEnterpriseContractTemplatesQueryResultItem) {
+  downloadFileByUrl(setOSSLink(row.file), '妯℃澘');
+}
+async function handleDelete(row: API.GetEnterpriseContractTemplatesQueryResultItem) {
+  try {
+    await Message.deleteMessage();
+    let res = await electronSignServices.setIsDisabledContractTemplate({
+      ids: [row.id],
+      isDisabled: true,
+    });
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
+
+const { openLogDialog, logDialogProps } = useOpenLogDialog({
+  service: async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterpriseContractTemplateLogsQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        id: extraParamState.id,
+      };
+      let res = await electronSignServices.getEnterpriseContractTemplateLogs(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+});
 </script>

--
Gitblit v1.9.1