bug修复

This commit is contained in:
caozehui
2025-04-08 09:43:12 +08:00
parent e1a740f8bf
commit 08cffa4256
13 changed files with 368 additions and 326 deletions

View File

@@ -100,10 +100,14 @@ class RequestHttp {
// 全局错误信息拦截(防止下载文件的时候返回数据流,没有 code 直接报错) // 全局错误信息拦截(防止下载文件的时候返回数据流,没有 code 直接报错)
if (data.code && data.code !== ResultEnum.SUCCESS) { if (data.code && data.code !== ResultEnum.SUCCESS) {
if(data.message.includes('&')){ if(data.message.includes('&')){
const formattedMessage = data.message.split('&').join('<br>'); let formattedMessage = data.message.split('&').join('<br>');
if (data.message.includes(':')) {
formattedMessage = formattedMessage.replace(':', '')
}
ElMessage.error({ message: formattedMessage, dangerouslyUseHTMLString: true }); ElMessage.error({ message: formattedMessage, dangerouslyUseHTMLString: true });
return Promise.reject(data) return Promise.reject(data)
} }
ElMessage.error(data.message) ElMessage.error(data.message)
return Promise.reject(data) return Promise.reject(data)
} }

View File

@@ -68,8 +68,8 @@ export const exportPlan = (params: Device.ReqPqDevParams) => {
} }
// 下载模板 // 下载模板
export const downloadTemplate = () => { export const downloadTemplate = (params: { patternId: string }) => {
return http.download(`/adPlan/downloadTemplate`) return http.download(`/adPlan/downloadTemplate`, params)
} }
// 导入检测计划 // 导入检测计划
export const importPlan = (params: Device.ReqPqDevParams) => { export const importPlan = (params: Device.ReqPqDevParams) => {

View File

@@ -77,7 +77,7 @@ const acceptParams = (params: ExcelParameterProps) => {
// Excel 导入模板下载 // Excel 导入模板下载
const downloadTemp = () => { const downloadTemp = () => {
if (!parameter.value.tempApi) return if (!parameter.value.tempApi) return
useDownload(parameter.value.tempApi, `${parameter.value.title}模板`, {}, false) useDownload(parameter.value.tempApi, `${parameter.value.title}模板`, {'patternId':parameter.value.patternId}, false)
} }
// 文件上传 // 文件上传

View File

@@ -199,6 +199,8 @@ const displayPid = computed({
functionList.value = response.data as unknown as Function.ResFunction[] functionList.value = response.data as unknown as Function.ResFunction[]
titleType.value = sign titleType.value = sign
dialogVisible.value = true dialogVisible.value = true
rules.value.path = [{ required: true, trigger: 'blur', message: '路由地址必填!' }];
rules.value.component = [{ required: true, trigger: 'blur', message: '组件地址必填!' }];
if (formContent.value.pid ==='0') { if (formContent.value.pid ==='0') {
formContent.value.pid = ''; formContent.value.pid = '';

View File

@@ -4,8 +4,7 @@
<el-tab-pane label="预检测项目"> <el-tab-pane label="预检测项目">
<div class="form-grid"> <div class="form-grid">
<el-checkbox v-for="(item, index) in detectionOptions" v-model="item.selected" :key="index" <el-checkbox v-for="(item, index) in detectionOptions" v-model="item.selected" :key="index"
:label="item.name"></el-checkbox> :label="item.name" disabled></el-checkbox>
<!-- disabled="true" -->
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@@ -18,7 +17,7 @@
<el-step :status="step2" title="设备通讯校验"/> <el-step :status="step2" title="设备通讯校验"/>
<el-step :status="step3" title="协议校验"/> <el-step :status="step3" title="协议校验"/>
<el-step :status="step4" title="相序校验"/> <el-step :status="step4" title="相序校验"/>
<el-step :status="step5" title="检测完成"/> <el-step :status="step5" :title="ts === 'error'? '检测失败':ts === 'process'? '检测中':ts === 'success'? '检测成功':'待检测'"/>
</el-steps> </el-steps>
</div> </div>
<div class="dialog-right"> <div class="dialog-right">
@@ -258,9 +257,11 @@ watch(webMsgSend, function (newValue, oldValue) {
ElMessage.error(newValue.code) ElMessage.error(newValue.code)
step1.value = 'error' step1.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10523) { } else if (newValue.code == 10523) {
step1.value = 'error' step1.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
step1InitLog.value = [{ step1InitLog.value = [{
type: 'error', type: 'error',
log: '源连接失败!', log: '源连接失败!',
@@ -268,6 +269,7 @@ watch(webMsgSend, function (newValue, oldValue) {
} else if (newValue.code == -1) { } else if (newValue.code == -1) {
step1.value = 'error' step1.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
step1InitLog.value = [{ step1InitLog.value = [{
type: 'error', type: 'error',
log: '源未知异常!', log: '源未知异常!',
@@ -301,6 +303,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step2.value = 'error' step2.value = 'error'
// ts.value = 'error' // ts.value = 'error'
// step5.value = 'error'
} else if (newValue.code == 10551) { } else if (newValue.code == 10551) {
step2InitLog.value.push({ step2InitLog.value.push({
type: 'error', type: 'error',
@@ -308,6 +311,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step2.value = 'error' step2.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10552) { } else if (newValue.code == 10552) {
//ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!") //ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!")
step2InitLog.value = [{ step2InitLog.value = [{
@@ -316,6 +320,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}]; }];
step2.value = 'error' step2.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 25001) { } else if (newValue.code == 25001) {
activeIndex.value = 2 activeIndex.value = 2
step2.value = 'success' step2.value = 'success'
@@ -347,6 +352,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
// ts.value = 'error' // ts.value = 'error'
// step5.value = 'error'
} else if (newValue.code == 10551) { } else if (newValue.code == 10551) {
step3InitLog.value.push({ step3InitLog.value.push({
type: 'error', type: 'error',
@@ -354,6 +360,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10552) { } else if (newValue.code == 10552) {
step3.value = 'error' step3.value = 'error'
//ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!") //ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!")
@@ -362,6 +369,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!', log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!',
}]; }];
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} }
break; break;
case 'INIT_GATHER$02': case 'INIT_GATHER$02':
@@ -384,6 +392,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
// ts.value = 'error' // ts.value = 'error'
// step5.value = 'error'
} else if (newValue.code == 10551) { } else if (newValue.code == 10551) {
step3InitLog.value.push({ step3InitLog.value.push({
type: 'error', type: 'error',
@@ -391,6 +400,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10552) { } else if (newValue.code == 10552) {
step3.value = 'error' step3.value = 'error'
//ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!") //ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!")
@@ -399,6 +409,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!', log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!',
}]; }];
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} }
break; break;
case 'INIT_GATHER$03': case 'INIT_GATHER$03':
@@ -417,6 +428,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
// ts.value = 'error' // ts.value = 'error'
// step5.value = 'error'
} else if (newValue.code == 10551) { } else if (newValue.code == 10551) {
step3InitLog.value.push({ step3InitLog.value.push({
type: 'error', type: 'error',
@@ -424,6 +436,7 @@ watch(webMsgSend, function (newValue, oldValue) {
}) })
step3.value = 'error' step3.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10552) { } else if (newValue.code == 10552) {
//ElMessage.error("当前步骤已经初始化,执行自动关闭,请重新发起检测!") //ElMessage.error("当前步骤已经初始化,执行自动关闭,请重新发起检测!")
step3.value = 'error' step3.value = 'error'
@@ -432,6 +445,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!', log: '存在已经初始化步骤,执行自动关闭,请重新发起检测!',
}]; }];
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 25001) { } else if (newValue.code == 25001) {
activeIndex.value = 3 activeIndex.value = 3
step3.value = 'success' step3.value = 'success'
@@ -460,6 +474,7 @@ watch(webMsgSend, function (newValue, oldValue) {
ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!") ElMessage.error("存在已经初始化步骤,已经自动关闭,请重新发起检测!")
step4.value = 'error' step4.value = 'error'
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 10520) { } else if (newValue.code == 10520) {
step4.value = 'error' step4.value = 'error'
step4InitLog.value.push({ step4InitLog.value.push({
@@ -467,6 +482,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '解析报文异常', log: '解析报文异常',
}) })
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} }
break; break;
@@ -496,6 +512,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '相序校验未通过!', log: '相序校验未通过!',
}) })
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
} else if (newValue.code == 25001) { } else if (newValue.code == 25001) {
step4.value = 'success' step4.value = 'success'
step5.value = 'success' step5.value = 'success'
@@ -522,6 +539,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '源服务端连接失败!', log: '源服务端连接失败!',
}]; }];
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
break; break;
case "Dev": case "Dev":
step2.value = 'error' step2.value = 'error'
@@ -530,6 +548,7 @@ watch(webMsgSend, function (newValue, oldValue) {
log: '设备服务端连接失败!', log: '设备服务端连接失败!',
}]; }];
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
break; break;
} }
break; break;
@@ -542,6 +561,7 @@ watch(webMsgSend, function (newValue, oldValue) {
type: 'error', type: 'error',
}) })
ts.value = 'error' ts.value = 'error'
step5.value = 'error'
break; break;
} }

View File

@@ -958,11 +958,14 @@ const handleTest = async (val: string) => {
selectTestItemPopupRef.value?.open() selectTestItemPopupRef.value?.open()
}) })
.catch((action: Action) => { .catch((action: Action) => {
ElMessage.success('全部复检') if(action === 'cancel'){
checkStore.setReCheckType(1) ElMessage.success('全部复检')
selectTestItemPopupRef.value?.open() checkStore.setReCheckType(1)
selectTestItemPopupRef.value?.open()
}
}) })
} else { } else {
checkStore.setReCheckType(1)
selectTestItemPopupRef.value?.open() selectTestItemPopupRef.value?.open()
} }
} else if (val === '系数校准') { } else if (val === '系数校准') {

View File

@@ -299,7 +299,7 @@ watch(TestStatus, function (newValue, oldValue) {
watch(ActiveStatue, function (newValue, oldValue) { watch(ActiveStatue, function (newValue, oldValue) {
if (newValue === 'error') { if (newValue === 'error') {
// stepsActiveIndex.value = stepsTotalNum.value + 2 stepsActiveIndex.value = stepsTotalNum.value + 1
nextStepText.value = '检测失败' nextStepText.value = '检测失败'
} }
if (newValue === 'success' && stepsActiveIndex.value === stepsTotalNum.value - 1) { if (newValue === 'success' && stepsActiveIndex.value === stepsTotalNum.value - 1) {

View File

@@ -157,7 +157,9 @@ import { CirclePlus, Delete, EditPen } from '@element-plus/icons-vue'
// 使用 dayjs 库格式化 // 使用 dayjs 库格式化
import dayjs from 'dayjs' import dayjs from 'dayjs'
import MonitorTable from '@/views/machine/device/components/monitorTab.vue'; import MonitorTable from '@/views/machine/device/components/monitorTab.vue';
import {useAppSceneStore} from "@/stores/modules/mode";
const AppSceneStore = useAppSceneStore()
const MonIsShow = ref(false) const MonIsShow = ref(false)
const DevIsShow = ref(false) const DevIsShow = ref(false)
// 存储设备类型选项 // 存储设备类型选项
@@ -322,7 +324,10 @@ const rules = computed(() => {
} }
if (valid) { if (valid) {
formContent.value.createDate = dayjs(formContent.value.createDate).format('YYYY-MM-DD'); formContent.value.createDate = dayjs(formContent.value.createDate).format('YYYY-MM-DD');
formContent.value.name = formContent.value.createId if (AppSceneStore.currentScene === '1') {
formContent.value.name = formContent.value.createId
}
if (formContent.value.arrivedDate) if (formContent.value.arrivedDate)
{ {
formContent.value.arrivedDate = dayjs(formContent.value.arrivedDate).format('YYYY-MM-DD'); formContent.value.arrivedDate = dayjs(formContent.value.arrivedDate).format('YYYY-MM-DD');

View File

@@ -93,8 +93,8 @@ function useMetaInfo() {
} }
const rules: reactive<Record<string, Array<FormItemRule>>> = reactive({ const rules: reactive<Record<string, Array<FormItemRule>>> = reactive({
desc: [{required: true, message: '源参数描述必填!', trigger: 'blur'}], desc: [{required: true, message: '源参数描述必填!', trigger: 'blur'},{min: 1, max: 32, message: '长度为1~32个字符', trigger: 'blur'}],
type: [{required: true, message: '源参数类型必填!', trigger: 'blur'}], type: [{required: true, message: '源参数类型必填!', trigger: 'blur'},{min: 1, max: 32, message: '长度为1~32个字符', trigger: 'blur'}],
sort: [{required: true, message: '排序必填!', trigger: 'blur'}] sort: [{required: true, message: '排序必填!', trigger: 'blur'}]
}) })

View File

@@ -9,7 +9,7 @@
<el-input v-model="formContent.name" placeholder="请输入名称" autocomplete="off"/> <el-input v-model="formContent.name" placeholder="请输入名称" autocomplete="off"/>
</el-form-item> </el-form-item>
<el-form-item label='检测源' prop='sourceIds' :label-width='100'> <el-form-item label='检测源' prop='sourceIds' :label-width='100'>
<el-select v-model="formContent.sourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择检测源"> <el-select v-model="formContent.sourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择检测源" clearable>
<el-option <el-option
v-for="(option, index) in pqSourceArray" v-for="(option, index) in pqSourceArray"
:key="index" :key="index"
@@ -19,7 +19,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据源" prop="datasourceIds" :label-width="100"> <el-form-item label="数据源" prop="datasourceIds" :label-width="100">
<el-select v-model="formContent.datasourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择数据源" autocomplete="off"> <el-select v-model="formContent.datasourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择数据源" autocomplete="off" clearable>
<el-option <el-option
v-for="item in dictStore.getDictData(dataSourceType)" v-for="item in dictStore.getDictData(dataSourceType)"
:key="item.id" :key="item.id"
@@ -29,7 +29,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="检测脚本" prop="scriptId" :label-width="100"> <el-form-item label="检测脚本" prop="scriptId" :label-width="100">
<el-select v-model="formContent.scriptId" placeholder="请选择检测脚本" autocomplete="off" :disabled="isSelectDisabled "> <el-select v-model="formContent.scriptId" placeholder="请选择检测脚本" autocomplete="off" :disabled="isSelectDisabled" clearable>
<el-option <el-option
v-for="(option, index) in pqScriptArray" v-for="(option, index) in pqScriptArray"
:key="index" :key="index"
@@ -39,7 +39,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="误差体系" prop="errorSysId" :label-width="100"> <el-form-item label="误差体系" prop="errorSysId" :label-width="100">
<el-select v-model="formContent.errorSysId" placeholder="请选择误差体系" autocomplete="off" :disabled="isSelectDisabled"> <el-select v-model="formContent.errorSysId" placeholder="请选择误差体系" autocomplete="off" :disabled="isSelectDisabled" clearable>
<el-option <el-option
v-for="(option, index) in pqErrorArray" v-for="(option, index) in pqErrorArray"
:key="index" :key="index"

View File

@@ -93,7 +93,7 @@ const planList = ref<Plan.ResPlan[]>([]);
const getTableList = async(params: any) => { const getTableList = async(params: any) => {
let newParams = JSON.parse(JSON.stringify(params)) let newParams = JSON.parse(JSON.stringify(params))
const patternId = dictStore.getDictData('Pattern').find(item=>item.name=== modeStore.currentMode)?.id//获取数据字典中对应的id const patternId = dictStore.getDictData('Pattern').find(item=>item.name=== modeStore.currentMode)?.id//获取数据字典中对应的id
newParams.pattern = patternId newParams.patternId = patternId
try { try {
const result = await getPlanList(newParams); const result = await getPlanList(newParams);
@@ -356,7 +356,7 @@ const exportClick = () => {
ElMessageBox.confirm('确认导出检测计划?', '温馨提示', { type: 'warning' }).then(() =>{ ElMessageBox.confirm('确认导出检测计划?', '温馨提示', { type: 'warning' }).then(() =>{
const patternId = dictStore.getDictData('Pattern').find(item=>item.name=== modeStore.currentMode)?.id//获取数据字典中对应的id const patternId = dictStore.getDictData('Pattern').find(item=>item.name=== modeStore.currentMode)?.id//获取数据字典中对应的id
useDownload(exportPlan,'检测计划导出数据', {...proTable.value?.searchParam,pattern:patternId}, false,'.xlsx') useDownload(exportPlan,'检测计划导出数据', {...proTable.value?.searchParam,patternId:patternId}, false,'.xlsx')
}) })
} }

View File

@@ -1,317 +1,323 @@
<template> <template>
<div class='table-box' > <div class='table-box'>
<el-tabs type="border-card"> <el-tabs type="border-card">
<el-tab-pane label="检测相关配置"> <el-tab-pane label="检测相关配置">
<div > <div>
<el-divider >检测配置</el-divider> <el-form :model="TestConfigForm" ref='testConfigFormRef' :rules='rules'>
<el-row :gutter="24" > <el-divider>检测配置</el-divider>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label='一键检测方式' prop='autoGenerate' :label-width="140"> <el-col :span="8">
<el-select v-model="TestConfigForm.autoGenerate" clearable placeholder="请选择一键检测方式" > <el-form-item label='一键检测方式' prop='autoGenerate' :label-width="140">
<el-option label="只检测,报告后续手动生成" :value="0"></el-option> <el-select v-model="TestConfigForm.autoGenerate" clearable placeholder="请选择一键检测方式">
<el-option label="检测和生成报告同时进行" :value="1"></el-option> <el-option label="检测,报告后续手动生成" :value="0"></el-option>
</el-select> <el-option label="检测和生成报告同时进行" :value="1"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='检测最大次数' prop='maxTime' :label-width="110"> <el-col :span="8">
<el-input-number v-model='TestConfigForm.maxTime' :min='1' :max='999' /> <el-form-item label='检测最大次数' prop='maxTime' :label-width="110">
</el-form-item> <el-input-number v-model='TestConfigForm.maxTime' :min='1' :max='999'/>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='数据处理原则' prop='dataRule' :label-width="140"> <el-col :span="8">
<el-select v-model="TestConfigForm.dataRule" clearable placeholder="请选择数据处理原则" > <el-form-item label='数据处理原则' prop='dataRule' :label-width="140">
<el-option <el-select v-model="TestConfigForm.dataRule" clearable placeholder="请选择数据处理原则">
v-for="item in dictStore.getDictData('Data_Rule')" <el-option
:key="item.id" v-for="item in dictStore.getDictData('Data_Rule')"
:label="item.name" :key="item.id"
:value="item.id" :label="item.name"
/> :value="item.id"
</el-select> />
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-col>
</el-row> </el-row>
<el-form :model="RegResForm" ref='dialogFormRef' :rules='rules' > </el-form>
<el-divider >有效数据配置</el-divider> <el-form :model="RegResForm" ref='dialogFormRef' :rules='rules'>
<el-row :gutter="24" > <el-divider>有效数据配置</el-divider>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label="录波数据有效组数" prop="waveRecord" :label-width="140"> <el-col :span="8">
<el-input v-model.number='RegResForm.waveRecord' :placeholder="placeholder" :disabled="IsMode"/> <el-form-item label="录波数据有效组数" prop="waveRecord" :label-width="140">
</el-form-item> <el-input v-model.number='RegResForm.waveRecord' :placeholder="placeholder" :disabled="IsMode"/>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="实时数据有效组数" prop="realTime" :label-width="140" > <el-col :span="8">
<el-input number v-model.number='RegResForm.realTime' placeholder="请输入实时数据有效组数"/> <el-form-item label="实时数据有效组数" prop="realTime" :label-width="140">
</el-form-item> <el-input number v-model.number='RegResForm.realTime' placeholder="请输入实时数据有效组数"/>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="统计数据有效组数" prop="statistics" :label-width="140" > <el-col :span="8">
<el-input number v-model.number='RegResForm.statistics' placeholder="请输入统计数据有效组数"/> <el-form-item label="统计数据有效组数" prop="statistics" :label-width="140">
</el-form-item> <el-input number v-model.number='RegResForm.statistics' placeholder="请输入统计数据有效组数"/>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="闪变数据有效组数" prop="flicker" :label-width="140" > <el-col :span="8">
<el-input number v-model.number='RegResForm.flicker' placeholder="请输入闪变数据有效组数"/> <el-form-item label="闪变数据有效组数" prop="flicker" :label-width="140">
</el-form-item> <el-input number v-model.number='RegResForm.flicker' placeholder="请输入闪变数据有效组数"/>
</el-col> </el-form-item>
</el-row> </el-col>
</el-form> </el-row>
</div> </el-form>
<div class="dialog-footer"> </div>
<el-button type="primary" @click="submitForm()">保存配置</el-button> <div class="dialog-footer">
</div> <el-button type="primary" @click="submitForm()">保存配置</el-button>
</el-tab-pane> </div>
<el-tab-pane label="日志配置"> </el-tab-pane>
<div > <el-tab-pane label="日志配置">
<el-row :gutter="24" > <div>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label='调试日志配置' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择调试日志配置" > <el-form-item label='调试日志配置' :label-width="140">
<el-option label="开启" :value="0"></el-option> <el-select clearable placeholder="请选择调试日志配置">
<el-option label="关闭" :value="1"></el-option> <el-option label="开启" :value="0"></el-option>
</el-select> <el-option label="关闭" :value="1"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='调试日志记录等级' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择日志记录等" > <el-form-item label='调试日志记录等级' :label-width="140">
<el-option label="FATAL(致命错误)及以上" :value="0"></el-option> <el-select clearable placeholder="请选择日志记录等">
<el-option label="ERROR(一般错误)及以上" :value="1"></el-option> <el-option label="FATAL(致命错误)及以上" :value="0"></el-option>
<el-option label="WARN(警告)及以上" :value="2"></el-option> <el-option label="ERROR(一般错误)及以上" :value="1"></el-option>
<el-option label="INFO(一般信息)及以上" :value="3"></el-option> <el-option label="WARN(警告)及以上" :value="2"></el-option>
<el-option label="DEBUG(调试信息)及以上" :value="4"></el-option> <el-option label="INFO(一般信息)及以上" :value="3"></el-option>
</el-select> <el-option label="DEBUG(调试信息)及以上" :value="4"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='操作日志配置' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择操作日志配置" > <el-form-item label='操作日志配置' :label-width="140">
<el-option label="开启" :value="0"></el-option> <el-select clearable placeholder="请选择操作日志配置">
<el-option label="关闭" :value="1"></el-option> <el-option label="开启" :value="0"></el-option>
</el-select> <el-option label="关闭" :value="1"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
</div> </el-row>
<div class="dialog-footer"> </div>
<el-button type="primary">保存配置</el-button> <div class="dialog-footer">
</div> <el-button type="primary">保存配置</el-button>
</el-tab-pane> </div>
<el-tab-pane label="数据删除备份配置"> </el-tab-pane>
<div > <el-tab-pane label="数据删除备份配置">
<el-row :gutter="24" > <div>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label='原始数据备份频率' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择原始数据备份频率" > <el-form-item label='原始数据备份频率' :label-width="140">
<el-option label="每月" :value="0"></el-option> <el-select clearable placeholder="请选择原始数据备份频率">
<el-option label="每月" :value="1"></el-option> <el-option label="每月" :value="0"></el-option>
<el-option label="每" :value="1"></el-option> <el-option label="每三月" :value="1"></el-option>
<el-option label="从不" :value="1"></el-option> <el-option label="每年" :value="1"></el-option>
</el-select> <el-option label="从不" :value="1"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='原始数据备份路径' :label-width="140"> <el-col :span="8">
<el-col :span="16"> <el-form-item label='原始数据备份路径' :label-width="140">
<el-input /> <el-col :span="16">
</el-col> <el-input/>
<el-col :span="8"> </el-col>
<el-button type='primary'>立即进行备份</el-button> <el-col :span="8">
</el-col> <el-button type='primary'>立即进行备份</el-button>
</el-form-item> </el-col>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row :gutter="24" > </el-row>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label='原始数据备份时间' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择原始数据备份时间" > <el-form-item label='原始数据备份时间' :label-width="140">
<el-option label="03:00" :value="0"></el-option> <el-select clearable placeholder="请选择原始数据备份时间">
</el-select> <el-option label="03:00" :value="0"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='原始数据删除配置' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择原始数据删除配置" > <el-form-item label='原始数据删除配置' :label-width="140">
<el-option label="从不" :value="0"></el-option> <el-select clearable placeholder="请选择原始数据删除配置">
<el-option label="大于半年进行删除" :value="1"></el-option> <el-option label="从不" :value="0"></el-option>
<el-option label="大于年进行删除" :value="2"></el-option> <el-option label="大于年进行删除" :value="1"></el-option>
<el-option label="大于年进行删除" :value="3"></el-option> <el-option label="大于年进行删除" :value="2"></el-option>
<el-option label="大于年进行删除" :value="4"></el-option> <el-option label="大于年进行删除" :value="3"></el-option>
</el-select> <el-option label="大于五年进行删除" :value="4"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='原始数据删除时间' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择原始数据删除时间" > <el-form-item label='原始数据删除时间' :label-width="140">
<el-option label="05:00" :value="0"></el-option> <el-select clearable placeholder="请选择原始数据删除时间">
</el-select> <el-option label="05:00" :value="0"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row :gutter="24" > </el-row>
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label='调试日志保存策略' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择调试日志保存策略" > <el-form-item label='调试日志保存策略' :label-width="140">
<el-option label="一个月" :value="0"></el-option> <el-select clearable placeholder="请选择调试日志保存策略">
<el-option label="个月" :value="1"></el-option> <el-option label="个月" :value="0"></el-option>
<el-option label="个月" :value="2"></el-option> <el-option label="个月" :value="1"></el-option>
<el-option label="从不删除" :value="3"></el-option> <el-option label="六个月" :value="2"></el-option>
</el-select> <el-option label="从不删除" :value="3"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label='操作日志保存策略' :label-width="140"> <el-col :span="8">
<el-select clearable placeholder="请选择操作日志保存策略" > <el-form-item label='操作日志保存策略' :label-width="140">
<el-option label="三个月" :value="0"></el-option> <el-select clearable placeholder="请选择操作日志保存策略">
<el-option label="个月或大于100万条" :value="1"></el-option> <el-option label="个月" :value="0"></el-option>
<el-option label="从不" :value="2"></el-option> <el-option label="六个月或大于100万条" :value="1"></el-option>
</el-select> <el-option label="从不" :value="2"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
</div> </el-row>
<div class="dialog-footer"> </div>
<el-button type="primary">保存配置</el-button> <div class="dialog-footer">
</div> <el-button type="primary">保存配置</el-button>
</el-tab-pane> </div>
</el-tabs> </el-tab-pane>
</div> </el-tabs>
</template> </div>
</template>
<script setup lang='tsx''>
import { type Dict } from '@/api/system/dictionary/interface'
import { ProTableInstance, ColumnProps } from '@/components/ProTable/interface'
import PqPopup from '@/views/system/dictionary/dictPq/components/pqPopup.vue'
import { useDictStore } from '@/stores/modules/dict'
import { useHandleData } from '@/hooks/useHandleData'
import { computed, onMounted, reactive, Ref, ref, watch } from 'vue'
import {type Base } from '@/api/system/base/interface'
import {type VersionRegister } from '@/api/system/versionRegister/interface'
import {getTestConfig,updateTestConfig } from '@/api/system/base/index'
import {getRegRes,updateRegRes } from '@/api/system/versionRegister/index'
import { ElMessage, FormItemRule } from 'element-plus'
import { useModeStore } from '@/stores/modules/mode'; // 引入模式 store
defineOptions({
name: 'base'
})
const modeStore = useModeStore(); <script setup lang='tsx'>
const dictStore = useDictStore() import {useDictStore} from '@/stores/modules/dict'
const dialogFormRef = ref() import {computed, onMounted, Ref, ref} from 'vue'
const mode = ref() import {type Base} from '@/api/system/base/interface'
const IsMode = ref(false) import {type VersionRegister} from '@/api/system/versionRegister/interface'
const placeholder = ref() import {getTestConfig, updateTestConfig} from '@/api/system/base/index'
const TestConfigList = ref<Base.ResTestConfig>() import {getRegRes, updateRegRes} from '@/api/system/versionRegister/index'
const RegResList = ref<VersionRegister.ResSys_Reg_Res>() import {ElMessage, FormItemRule} from 'element-plus'
import {useModeStore} from '@/stores/modules/mode'; // 引入模式 store
defineOptions({
name: 'base'
})
const modeStore = useModeStore();
const dictStore = useDictStore()
const testConfigFormRef = ref()
const dialogFormRef = ref()
const mode = ref()
const IsMode = ref(false)
const placeholder = ref()
const TestConfigList = ref<Base.ResTestConfig>()
const RegResList = ref<VersionRegister.ResSys_Reg_Res>()
// 初始化时获取 // 初始化时获取
onMounted(async () => { onMounted(async () => {
mode.value =modeStore.currentMode;//pinia中获取当前是那个模块进来的 mode.value = modeStore.currentMode;//pinia中获取当前是那个模块进来的
const response = await getTestConfig() const response = await getTestConfig()
TestConfigForm.value = response.data as unknown as Base.ResTestConfig TestConfigForm.value = response.data as unknown as Base.ResTestConfig
const patternId = dictStore.getDictData('Pattern').find(item=>item.name=== mode.value)?.id//获取数据字典中对应的id const patternId = dictStore.getDictData('Pattern').find(item => item.name === mode.value)?.id//获取数据字典中对应的id
RegResForm.value.type = patternId || ''; RegResForm.value.type = patternId || '';
const response2 = await getRegRes(RegResForm.value) const response2 = await getRegRes(RegResForm.value)
RegResForm.value = response2.data as unknown as VersionRegister.ResSys_Reg_Res RegResForm.value = response2.data as unknown as VersionRegister.ResSys_Reg_Res
//只有比对式有录波 //只有比对式有录波
if(mode.value == '比对式'){ if (mode.value == '比对式') {
placeholder.value = '请输入录波数据有效组数' placeholder.value = '请输入录波数据有效组数'
IsMode.value = false IsMode.value = false
}else{ } else {
placeholder.value = '/' placeholder.value = '/'
IsMode.value = true IsMode.value = true
} }
})
const TestConfigForm = ref<Base.ResTestConfig>({
id: '',
autoGenerate: 0,
maxTime: 3,
dataRule: '',
state: 1, //状态
})
const RegResForm = ref<VersionRegister.ResSys_Reg_Res>({
id: '', //版本注册表Id
type: '', //版本类型(模拟式、数字式、比对式)
code: '', //注册码
licenseKey: '', //密钥
expireDate: '', //到期时间
waveRecord: 0,
realTime: 20,
statistics: 5,
flicker: 1,
state: 1, //状态
}) })
const RegResForm2 = ref<VersionRegister.Sys_Reg_Res>({ const TestConfigForm = ref<Base.ResTestConfig>({
id:'', id: '',
waveRecord: 0, autoGenerate: 0,
realTime: 20, maxTime: 3,
statistics: 5, dataRule: '',
flicker: 1, state: 1, //状态
}) })
// 定义弹出组件元信息 const RegResForm = ref<VersionRegister.ResSys_Reg_Res>({
const rules = computed(() =>{ id: '', //版本注册表Id
const baseRules : Ref<Record<string, Array<FormItemRule>>> = ref({ type: '', //版本类型(模拟式、数字式、比对式)
realTime :[ code: '', //注册码
{required:true,trigger:'blur',message:'实时数据有效组数必填!'}, licenseKey: '', //密钥
{ pattern: /^[0-9]\d*$/, message: '实时数据有效组数为含0的正整数', trigger: 'blur' } expireDate: '', //到期时间
], waveRecord: 0,
statistics :[ realTime: 20,
{required:true,trigger:'blur',message:'统计数据有效组数必填!'}, statistics: 5,
{ pattern: /^[0-9]\d*$/, message: '统计数据有效组数为含0的正整数', trigger: 'blur' } flicker: 1,
], state: 1, //状态
flicker :[ })
{required:true,trigger:'blur',message:'闪变数据有效组数必填!'},
{ pattern: /^[0-9]\d*$/, message: '闪变数据有效组数为含0的正整数', trigger: 'blur' } const RegResForm2 = ref<VersionRegister.Sys_Reg_Res>({
], id: '',
}); waveRecord: 0,
realTime: 20,
statistics: 5,
flicker: 1,
})
// 定义弹出组件元信息
const rules = computed(() => {
const baseRules: Ref<Record<string, Array<FormItemRule>>> = ref({
maxTime: [
{required: true, trigger: 'blur', message: '检测最大次数必填!'},
],
realTime: [
{required: true, trigger: 'blur', message: '实时数据有效组数必填!'},
{pattern: /^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})$/, message: '实时数据有效组数为1~999的正整数', trigger: 'blur'}
],
statistics: [
{required: true, trigger: 'blur', message: '统计数据有效组数必填!'},
{pattern: /^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})$/, message: '统计数据有效组数为1~999的正整数', trigger: 'blur'}
],
flicker: [
{required: true, trigger: 'blur', message: '闪变数据有效组数必填!'},
{pattern: /^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})$/, message: '闪变数据有效组数为1~999的正整数', trigger: 'blur'}
],
});
if(mode.value == '比对式'){ if (mode.value == '比对式') {
baseRules.value.waveRecord = [ baseRules.value.waveRecord = [
{required:true,trigger:'blur',message:'录波数据有效组数必填!'}, {required: true, trigger: 'blur', message: '录波数据有效组数必填!'},
{ pattern: /^[0-9]\d*$/, message: '录波数据有效组数为含0的正整数', trigger: 'blur' } {pattern: /^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})$/, message: '录波数据有效组数为1~999的正整数', trigger: 'blur'}
]; ];
}
return baseRules;
})
const submitForm = async () => {
try {
dialogFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
await updateTestConfig(TestConfigForm.value);
// 提取并传递 4 个参数
const { id,waveRecord, realTime, statistics, flicker } = RegResForm.value
RegResForm2.value = { id,waveRecord, realTime, statistics, flicker }
if(RegResForm.value.waveRecord == null){
RegResForm2.value.waveRecord = -1
}
await updateRegRes(RegResForm2.value);
ElMessage.success({ message: `保存配置成功!` })
}
})
} catch (err) {
console.error('验证过程中出现错误', err)
}
} }
</script> return baseRules;
<style scoped> })
.dialog-footer {
float: right;
} const submitForm = async () => {
</style> try {
testConfigFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
await updateTestConfig(TestConfigForm.value);
dialogFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
//await updateTestConfig(TestConfigForm.value);
// 提取并传递 4 个参数
const {id, waveRecord, realTime, statistics, flicker} = RegResForm.value
RegResForm2.value = {id, waveRecord, realTime, statistics, flicker}
if (RegResForm.value.waveRecord == null) {
RegResForm2.value.waveRecord = -1
}
await updateRegRes(RegResForm2.value);
ElMessage.success({message: `保存配置成功!`})
}
})
}
})
} catch (err) {
console.error('验证过程中出现错误', err)
}
}
</script>
<style scoped>
.dialog-footer {
float: right;
}
</style>

View File

@@ -17,6 +17,7 @@
:on-exceed="BaseHandleExceed" :on-exceed="BaseHandleExceed"
:on-remove="BaseHandleRemove" :on-remove="BaseHandleRemove"
style="width: 100% !important;" style="width: 100% !important;"
accept=".docx"
class="upload-container" class="upload-container"
> >
<el-button type="primary">选择文件</el-button> <el-button type="primary">选择文件</el-button>
@@ -33,6 +34,7 @@
:on-exceed="DataHandleExceed" :on-exceed="DataHandleExceed"
:on-remove="DataHandleRemove" :on-remove="DataHandleRemove"
style="width: 100% !important;" style="width: 100% !important;"
accept=".docx"
class="upload-container" class="upload-container"
> >
<el-button type="primary">选择文件</el-button> <el-button type="primary">选择文件</el-button>
@@ -254,7 +256,7 @@ const BaseHandleChange = async(param : UploadFile) => {
baseFileName.value = param.name; baseFileName.value = param.name;
baseFileUrl.value = URL.createObjectURL(param.raw as Blob); baseFileUrl.value = URL.createObjectURL(param.raw as Blob);
excelFormData.append('baseFile', param.raw as Blob, param.name); excelFormData.append('baseFile', param.raw as Blob, param.name);
formContent.value.baseFile = param.name; formContent.value.baseFile = param.name;
}; };