<!-- 存为模板弹窗对话框 --> <script name="SaveAsTemplateDialog" lang="ts" setup> import { ElMessage, ElMessageBox, dayjs } from 'element-plus' import type { ICustomerExamineTemplate } from './customer-examine' import type { IDictType } from '@/commonInterface/resource-interface' import { duplicateTemplateJudge, saveTemplateInfo } from '@/api/resource/examine' const showDialog = ref(false) const labCodeDict = ref<IDictType[]>([]) const groupCodeDict = ref<IDictType[]>([]) const templateInfoRef = ref() const templateInfo = ref<ICustomerExamineTemplate>({ id: '', formNo: '', formName: '要求、委托书及合同评审表', labCode: '', labCodeName: '', groupCode: '', groupCodeName: '', customerId: '', customerName: '', signUserId: '', signStatus: '', signStatusName: '', customerContent: '', measureItem: '', otherRequire: '', equipmentName: '', performanceIndex: '', measureStatus: '合格', numberOfPeople: undefined, staffCert: undefined, measureMethodName: '', measureMethodType: '', measureMethodTypeName: '', measureMethodConfirm: undefined, measureMethodControlled: undefined, approvalStatus: '', approvalStatusName: '', appealUserId: '', appealUserName: '', processId: '', taskId: '', remark: '', decisionItem: '', createUserId: '', createUserName: '', createTime: '', templateName: '', }) const templateRules = ref({ templateName: [{ required: true, message: '模板名称不能为空,请选择', trigger: 'blur' }], labCode: [{ required: true, message: '实验室不能为空,请选择', trigger: ['change', 'blur'] }], groupCode: [{ required: true, message: '部门不能为空,请选择', trigger: ['change', 'blur'] }], }) // 表单验证规则 const getLabCodeDict = async () => { if (sessionStorage.getItem('bizLabCode') !== null && sessionStorage.getItem('bizLabCode') !== undefined) { labCodeDict.value = JSON.parse(sessionStorage.getItem('bizLabCode')!) } } const getGroupCodeDict = async () => { if (sessionStorage.getItem('bizGroupCode') !== null && sessionStorage.getItem('bizGroupCode') !== undefined) { groupCodeDict.value = JSON.parse(sessionStorage.getItem('bizGroupCode')!) } } const showOrHideDialog = (show: boolean) => { if (show === true) { const examineInfo = JSON.parse(sessionStorage.getItem('examineInfo')!) templateInfo.value = { ...examineInfo, id: '', createTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'), templateName: examineInfo.equipmentName, } } else { sessionStorage.removeItem('examineInfo') } getLabCodeDict() getGroupCodeDict() showDialog.value = show } const saveTemplateHandler = async () => { templateInfoRef.value.validate((valid: boolean, fields: any) => { if (valid === true) { duplicateTemplateJudge({ groupCode: templateInfo.value.groupCode, labCode: templateInfo.value.labCode, templateName: templateInfo.value.templateName, }).then((res) => { if (res.code === 200) { console.log(res) if (res.data === '') { // 返回内容为空表示没有同名模板 saveTemplateInfo(templateInfo.value).then((saveRes) => { if (saveRes.code === 200) { ElMessage.success(`${templateInfo.value.templateName} 模板保存成功`) showDialog.value = false } else { ElMessage.error(`${templateInfo.value.templateName} 模板保存失败`) } }) } else { ElMessageBox.confirm( '存在同名模板,是否覆盖?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ).then(() => { templateInfo.value.id = res.data saveTemplateInfo(templateInfo.value).then((saveRes) => { if (saveRes.code === 200) { ElMessage.success(`${templateInfo.value.templateName} 模板保存成功`) showDialog.value = false } else { ElMessage.error(`${templateInfo.value.templateName} 模板保存失败`) } }) }) } } }) } }) } defineExpose({ showOrHideDialog, }) </script> <template> <el-dialog v-model="showDialog" title="存为模板" :append-to-body="true" :close-on-click-modal="false" top="10vh"> <el-form ref="templateInfoRef" :model="templateInfo" :rules="templateRules" label-position="right" label-width="110px" border stripe> <el-row :gutter="24"> <!-- 第一行 第一列 --> <el-col :span="18" :offset="3"> <el-form-item label="模板名称" prop="templateName"> <el-input v-model="templateInfo.templateName" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <!-- 第一行 第一列 --> <el-col :span="9" :offset="3"> <el-form-item label="实验室" prop="labCode"> <el-select v-model="templateInfo.labCode" placeholder="请选择实验室" style="width: 100%;"> <el-option v-for="dict in labCodeDict" :key="dict.id" :label="dict.name" :value="dict.value" /> </el-select> <el-input v-model="templateInfo.labCodeName" type="hidden" /> </el-form-item> </el-col> <el-col :span="9"> <el-form-item label="部门" prop="groupCode"> <el-select v-model="templateInfo.groupCode" placeholder="请选择部门" style="width: 100%;"> <el-option v-for="dict in groupCodeDict" :key="dict.id" :label="dict.name" :value="dict.value" /> </el-select> <el-input v-model="templateInfo.groupCodeName" type="hidden" /> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="9" :offset="3"> <el-form-item label="创建人"> <el-input v-model="templateInfo.createUserName" :disabled="true" /> <el-input v-model="templateInfo.createUserId" type="hidden" /> </el-form-item> </el-col> <el-col :span="9"> <el-form-item label="创建时间"> <el-input v-model="templateInfo.createTime" :disabled="true" /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="saveTemplateHandler()"> 保存 </el-button> <el-button @click="showOrHideDialog(false)">取消</el-button> </span> </template> </el-dialog> </template>