<!-- 存为模板弹窗对话框 -->
<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>