报告模版

This commit is contained in:
sjl
2025-03-24 08:56:08 +08:00
parent 403ddbfb6e
commit 834230b26a
6 changed files with 441 additions and 61 deletions

View File

@@ -54,6 +54,32 @@
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="关联报告模版" :label-width="100" prop='associateReport'>
<el-radio-group v-model="formContent.associateReport">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="模版名称" prop="reportTemplateName" :label-width="100" v-if="formContent.associateReport === 1">
<el-select v-model="formContent.reportTemplateName" placeholder="请选择报告模版" autocomplete="off" :disabled="isSelectDisabled" @change="handleReportChange">
<el-option
v-for="(option, index) in pqReportName"
:key="index"
:label="option.name"
:value="option.name"
/>
</el-select>
</el-form-item>
<el-form-item label="模版版本号" prop="reportTemplateVersion" :label-width="100" v-if="formContent.associateReport === 1">
<el-select v-model="formContent.reportTemplateVersion" placeholder="请选择报告模版版本号" autocomplete="off" :disabled="isSelectDisabled">
<el-option
v-for="(option, index) in pqReportVersion"
:key="index"
:label="option.version"
:value="option.version"
/>
</el-select>
</el-form-item>
</el-form>
</el-col>
<el-col :span="12">
@@ -93,11 +119,7 @@
import { type TestScript } from '@/api/device/interface/testScript';
import { type ErrorSystem } from '@/api/device/interface/error';
import { type Device } from '@/api/device/interface/device';
import { Loading } from '@element-plus/icons-vue/dist/types';
import { truncate } from 'lodash';
import {getPqReportAllName,getPqReportAllVersion} from '@/api/device/report/index.ts'
const dictStore = useDictStore()
// 定义弹出组件元信息
const dialogFormRef = ref()
@@ -108,6 +130,9 @@ import { truncate } from 'lodash';
const pqErrSysList=ref<ErrorSystem.ErrorSystemList[]>([])//获取指定模式下所有检测源
const pqDevList=ref<Device.ResPqDev[]>([])//获取指定模式下所有检测源
const pqReportName = ref<{ name: string }[]>([])
const pqReportVersion = ref<{ version: string}[]>([])
const pqSourceArray = ref<{ label: string; value: string; }[]>()
const pqScriptArray = ref<{ label: string; value: string; }[]>()
const pqErrorArray = ref<{ label: string; value: string; }[]>()
@@ -164,6 +189,9 @@ const filterMethod = (query: string, item: { label?: string }) => {
devIds:[],
sourceIds:'',
datasourceIds:'',
associateReport:0,
reportTemplateName:'',
reportTemplateVersion:'',
})
return { dialogVisible, titleType, formContent }
}
@@ -194,6 +222,9 @@ const filterMethod = (query: string, item: { label?: string }) => {
devIds:[],
sourceIds:'',
datasourceIds:'',
associateReport:0,
reportTemplateName:'',
reportTemplateVersion:'',
}
)
@@ -204,14 +235,27 @@ const filterMethod = (query: string, item: { label?: string }) => {
})
// 定义规则
const formRuleRef = ref<FormInstance>()
const rules: Ref<Record<string, Array<FormItemRule>>> = ref({
name: [{ required: true, message: '检测计划名称必填!', trigger: 'blur' }],
sourceIds: [{ required: true, message: '检测源必选', trigger: 'blur' }],
datasourceIds: [{ required: true, message: '数据源必选!', trigger: 'blur' }],
scriptId: [{ required: true, message: '检测脚本必选!', trigger: 'blur' }],
errorSysId: [{ required: true, message: '误差体系必选!', trigger: 'blur' }],
// 定义表单校验规则
const baseRules: Record<string, Array<FormItemRule>> = {
name: [{ required: true, message: '检测计划名称必填', trigger: 'blur' }],
sourceIds: [{ required: true, message: '检测源必选!', trigger: 'change' }],
datasourceIds: [{ required: true, message: '数据源必选!', trigger: 'change' }],
scriptId: [{ required: true, message: '检测脚本必选!', trigger: 'change' }],
errorSysId: [{ required: true, message: '误差体系必选!', trigger: 'change' }],
};
// 使用计算属性根据 scene 动态生成规则
const rules = computed(() => {
const dynamicRules = { ...baseRules };
if (formContent.associateReport === 1){//只有关联报告模版时需要展示
dynamicRules.reportTemplateName= [{ required: true, message: '报告模版名称必选!', trigger: 'change' }];
dynamicRules.reportTemplateVersion= [{ required: true, message: '报告模版版本号必选!', trigger: 'change' }];
}
return dynamicRules;
});
// 关闭弹窗
@@ -306,13 +350,23 @@ const open = async (sign: string,
if(sign == 'add')
{
console.log('add',data)
const [pqSource_Result, PqScript_Result, PqErrSys_Result,pqDevList_Result] = await Promise.all([
const [pqSource_Result, PqScript_Result, PqErrSys_Result,pqDevList_Result,pqReportName_Result] = await Promise.all([
getTestSourceList(data),
getPqScriptList(data),
getPqErrSysList(),
getUnboundPqDevList(data)
getUnboundPqDevList(data),
getPqReportAllName(),
]);
if (Array.isArray(pqReportName_Result.data)) {
pqReportName.value = pqReportName_Result.data.map(item => ({ name: item }));
} else {
pqReportName.value = [];
console.error('pqReportName_Result.data is not an array:', pqReportName_Result.data);
}
pqSourceList.value = pqSource_Result.data as TestSource.ResTestSource[];
pqScriptList.value = PqScript_Result.data as TestScript.ResTestScript[];
pqErrSysList.value = PqErrSys_Result.data as unknown as ErrorSystem.ErrorSystemList[];
@@ -321,14 +375,22 @@ const open = async (sign: string,
unboundPqDevList.value = pqDevList.value
boundPqDevList.value = [];
}else{//编辑时先给表单赋值(这会没接收被检设备),需要手动再给被检设备复制后整体表单赋值
const [pqSource_Result, PqScript_Result, PqErrSys_Result,boundPqDevList_Result, unboundPqDevList_Result] = await Promise.all([
const [pqSource_Result, PqScript_Result, PqErrSys_Result,boundPqDevList_Result, unboundPqDevList_Result,pqReportName_Result] = await Promise.all([
getTestSourceList(data),
getPqScriptList(data),
getPqErrSysList(),
getBoundPqDevList({ 'planId': data.id }),
getUnboundPqDevList(data)
getUnboundPqDevList(data),
getPqReportAllName(),
]);
if (Array.isArray(pqReportName_Result.data)) {
pqReportName.value = pqReportName_Result.data.map(item => ({ name: item }));
} else {
pqReportName.value = [];
console.error('pqReportName_Result.data is not an array:', pqReportName_Result.data);
}
pqSourceList.value = pqSource_Result.data as TestSource.ResTestSource[];
pqScriptList.value = PqScript_Result.data as TestScript.ResTestScript[];
pqErrSysList.value = PqErrSys_Result.data as unknown as ErrorSystem.ErrorSystemList[];
@@ -400,9 +462,14 @@ const dataSourceType = computed(() => {
default:
return 'Datasource_Contrast'
}
})
})
const handleReportChange = async (value: string) => {
formContent.reportTemplateVersion = ''
const response = await getPqReportAllVersion({ name: value });
pqReportVersion.value = response.data.map((item: { version: string }) => ({ version: item }));
};
// 对外映射
defineExpose({ open })