| <template> | 
|   <ProDialog | 
|     :title="form.title" | 
|     v-model="visible" | 
|     destroy-on-close | 
|     draggable | 
|     @close="onDialogClose" | 
|   > | 
|     <ProForm :model="form" ref="dialogForm" label-width="120px"> | 
|       <ProFormItemV2 | 
|         label="模板ID:" | 
|         prop="templateId" | 
|         :check-rules="[{ message: '请输入模板ID' }]" | 
|       > | 
|         <ProFormText | 
|           placeholder="请输入模板ID" | 
|           v-model.trim="form.templateId" | 
|           :formatter="filterCN" | 
|         ></ProFormText> | 
|       </ProFormItemV2> | 
|       <ProFormItemV2 label="通道:" prop="access" :check-rules="[{ message: '请选择电子签通道' }]"> | 
|         <ProFormSelect | 
|           placeholder="请选择电子签通道" | 
|           v-model="form.access" | 
|           :value-enum="enabledElectronSignSettings" | 
|           enum-value-key="access" | 
|           enum-label-key="accessName" | 
|         ></ProFormSelect> | 
|       </ProFormItemV2> | 
|       <ProFormItemV2 label="业务编码:" prop="code" :check-rules="[{ message: '请输入业务编码' }]"> | 
|         <ProFormText | 
|           placeholder="请输入业务编码" | 
|           v-model.trim="form.code" | 
|           :maxlength="5" | 
|           :formatter="filterNumbersFromString" | 
|         ></ProFormText> | 
|       </ProFormItemV2> | 
|       <ProFormItemV2 label="模板名称:" prop="name" :check-rules="[{ message: '请输入模板名称' }]"> | 
|         <ProFormText | 
|           placeholder="请输入模板名称" | 
|           v-model.trim="form.name" | 
|           :maxlength="32" | 
|           :disabled="form.isEnterpriseUserCreated" | 
|         ></ProFormText> | 
|       </ProFormItemV2> | 
|       <ProFormItemV2 | 
|         label="上传模板:" | 
|         prop="file" | 
|         :check-rules="[{ message: '请上传模板', type: 'upload' }]" | 
|       > | 
|         <ProFormUpload | 
|           v-model:file-url="form.file" | 
|           :limit="1" | 
|           :limitFileSize="10" | 
|           accept="pdf" | 
|         ></ProFormUpload> | 
|       </ProFormItemV2> | 
|     </ProForm> | 
|     <template #footer> | 
|       <span class="dialog-footer"> | 
|         <el-button type="primary" @click="handleConfirm">确 定</el-button> | 
|       </span> | 
|     </template> | 
|   </ProDialog> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { | 
|   ProDialog, | 
|   UploadUserFile, | 
|   ProForm, | 
|   ProFormItemV2, | 
|   ProFormText, | 
|   ProFormUpload, | 
|   ProFormSelect, | 
| } from '@bole-core/components'; | 
| import { filterCN, filterNumbersFromString } from '@/utils'; | 
| import { FormInstance } from 'element-plus'; | 
| import { EnumElectronSignAccessText } from '@/constants'; | 
|   | 
| defineOptions({ | 
|   name: 'AddOrEditTemplateDialog', | 
| }); | 
|   | 
| const visible = defineModel({ type: Boolean }); | 
|   | 
| type Form = { | 
|   title?: string; | 
|   id: string; | 
|   templateId: string; | 
|   name: string; | 
|   code: string; | 
|   file: UploadUserFile[]; | 
|   access: EnumElectronSignAccess; | 
|   isEnterpriseUserCreated: boolean; | 
|   enterpriseId: string; | 
| }; | 
|   | 
| const form = defineModel<Form>('form'); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'onConfirm'): void; | 
|   (e: 'onCancel'): void; | 
| }>(); | 
|   | 
| const { enabledElectronSignSettings } = useEnabledElectronSignSettings({ | 
|   enterpriseId: computed(() => form.value.enterpriseId), | 
|   all: true, | 
| }); | 
|   | 
| const dialogForm = ref<FormInstance>(); | 
|   | 
| function onDialogClose() { | 
|   if (!dialogForm.value) return; | 
|   dialogForm.value.resetFields(); | 
| } | 
|   | 
| function handleConfirm() { | 
|   if (!dialogForm.value) return; | 
|   dialogForm.value.validate((valid) => { | 
|     if (valid) { | 
|       emit('onConfirm'); | 
|     } else { | 
|       return; | 
|     } | 
|   }); | 
| } | 
| </script> |