From be028017a461af4c9745c69c4df084d4c3e6b296 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 22 十月 2025 18:08:49 +0800
Subject: [PATCH] fix: bug
---
src/views/ProtocolManage/EditTemplate.vue | 204 +++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 159 insertions(+), 45 deletions(-)
diff --git a/src/views/ProtocolManage/EditTemplate.vue b/src/views/ProtocolManage/EditTemplate.vue
index 1faf700..0154140 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,20 +73,31 @@
} 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,
+ convertPdfToImage,
+ format,
+ openLink,
+ setOSSLink,
+} from '@/utils';
+import { EnumContractTemplateStatus, EnumContractTemplateStatusText } from '@/constants';
defineOptions({
name: 'EditTemplate',
});
const operationBtnMap: Record<string, OperationBtnType> = {
- editBtn: { emits: { onClick: (role) => openDialog(role) } },
- editTemplateBtn: {
+ editBtn: {
emits: { onClick: (role) => openDialog(role) },
+ },
+ editTemplateBtn: {
+ emits: { onClick: (role) => goEditTemplate(role) },
extraProps: {
- hide: (row) => false,
+ hide: (row: API.GetEnterpriseContractTemplatesQueryResultItem) =>
+ row.status !== EnumContractTemplateStatus.Wait,
},
},
downloadBtn: {
@@ -96,13 +105,15 @@
},
delBtn: {
emits: { onClick: (role) => handleDelete(role) },
+ props: { type: 'danger' },
extraProps: {
- hide: (row) => false,
+ hide: (row: API.GetEnterpriseContractTemplatesQueryResultItem) =>
+ row.status !== EnumContractTemplateStatus.Completed,
},
},
logBtn: {
- emits: { onClick: (role) => openLogDialog(role) },
+ emits: { onClick: (role) => openLogDialog(role.id) },
},
};
@@ -110,7 +121,8 @@
operationBtnMap,
});
-const router = useRouter();
+const route = useRoute();
+const enterpriseId = route.params?.id as string;
const BaseState = {
loading: true,
};
@@ -131,15 +143,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,49 +166,145 @@
{
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),
+ },
+ },
}
);
-const { dialogProps, handleEdit, handleAdd, editForm } = useFormDialog({
+const { dialogProps, handleEdit, handleAdd, editForm, dialogState } = useFormDialog({
onConfirm: handleAddOrEdit,
defaultFormParams: {
id: '',
templateId: '',
name: '',
- bussinessCode: '',
- templateFileUrl: [] as UploadUserFile[],
+ code: '',
+ file: [] as UploadUserFile[],
+ access: '' as any as EnumElectronSignAccess,
title: '鏂板妯℃澘',
+ isEnterpriseUserCreated: false,
+ templateEditData: '',
+ enterpriseId: '',
},
+ closeAfterConfirm: false,
});
-function openDialog(row?) {
- if (row) {
- handleEdit({
- id: '',
- name: '',
- bussinessCode: '',
- templateId: '',
- templateFileUrl: [] as UploadUserFile[],
- });
- } else {
- handleAdd();
- }
-}
-
-async function handleAddOrEdit() {}
-
-function handleDownload(row) {}
-async function handleDelete(row) {
+async function openDialog(row?: API.GetEnterpriseContractTemplatesQueryResultItem) {
try {
- await Message.deleteMessage();
+ if (row) {
+ let detail = await electronSignServices.getContractTemplate({ id: row.id });
+ handleEdit({
+ id: row.id,
+ templateId: row.templateId,
+ name: row.name,
+ code: row.code,
+ file: convertApi2FormUrlOnlyOne(row.file),
+ access: row.access,
+ isEnterpriseUserCreated: detail.isEnterpriseUserCreated,
+ templateEditData: detail.templateEditData,
+ enterpriseId: enterpriseId,
+ });
+ } else {
+ handleAdd();
+ }
} catch (error) {}
}
-function openLogDialog(row) {}
+async function handleAddOrEdit() {
+ try {
+ let isEdit = !!editForm.id;
+ let pdfToImage = await convertPdfToImage(editForm.file?.[0].url);
+ let params: API.SaveContractTemplateCommand = {
+ name: editForm.name,
+ file: editForm.file[0]?.path ?? '',
+ enterpriseId: enterpriseId,
+ code: editForm.code,
+ access: editForm.access,
+ templateId: editForm.templateId,
+ templateEditData: JSON.stringify(
+ pdfToImage.map(
+ (x) =>
+ ({
+ path: x.path,
+ width: x.width,
+ height: x.height,
+ } as TemplateEditDataItem)
+ )
+ ),
+ };
+ if (isEdit) {
+ params.id = editForm.id;
+ }
+ let res = await electronSignServices.saveContractTemplate(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList();
+ dialogState.dialogVisible = false;
+ }
+ } catch (error) {
+ dialogState.dialogVisible = true;
+ }
+}
+
+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 router = useRouter();
+
+function goEditTemplate(row: API.GetEnterpriseContractTemplatesQueryResultItem) {
+ openLink(
+ router.resolve({
+ name: 'TemplateKeyEdit',
+ params: {
+ id: row.id ?? '',
+ },
+ }).fullPath
+ );
+}
+
+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