中核反馈bug修改

This commit is contained in:
limengnan 2026-08-04 15:58:26 +08:00
parent ae8a71ad78
commit 77bfb3df65
15 changed files with 378 additions and 125 deletions

View File

@ -14,7 +14,7 @@
v-model:current-page="currentPage" v-model:page-size="pageSize" @current-change="pagechange" /> v-model:current-page="currentPage" v-model:page-size="pageSize" @current-change="pagechange" />
<div <div
style="display: flex; display: -webkit-flex; align-items: center;-webkit-align-items: center; margin-left: 10px; " :style="{ fontSize: appStore.size === 'default' ? '14px' : '16px' }"> style="display: flex; display: -webkit-flex; align-items: center;-webkit-align-items: center; margin-left: 10px; " :style="{ fontSize: appStore.size === 'default' ? '14px' : '16px' }">
<div>前往</div><el-input v-model="inputgo" style="width:40px;margin-left:5px ; " @blur="sizechange($event)" <div>前往</div><el-input-number :controls="false" v-model="inputgo" style="width:60px;margin-left:5px ; " @blur="sizechange($event)"
@keyup.enter="sizechange($event)" /> @keyup.enter="sizechange($event)" />
<div style="margin-left:5px ; "></div> <div style="margin-left:5px ; "></div>
</div> </div>
@ -22,7 +22,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, PropType, defineEmits, computed ,onMounted} from 'vue' import { ref, PropType, computed ,onMounted} from 'vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useAppStore } from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
const appStore = useAppStore(); const appStore = useAppStore();
@ -104,19 +104,22 @@ function pagechange(val: any) {
emit('pagination'); emit('pagination');
} }
function sizechange(event: any) { function sizechange(event: any) {
if (event.target.value.length !== 0) { emit('update:current',inputgo.value);
if (event.target.value > Math.ceil(props.total / props.size) ) { emit('pagination');
ElMessage({
message: '请输入正确的页数',
type: 'warning',
})
}else{ // if (event.target.value.length !== 0) {
emit('update:current', event.target.value); // if (event.target.value > Math.ceil(props.total / props.size) ) {
emit('pagination'); // ElMessage({
// message: '',
// type: 'warning',
// })
} // }else{
} // debugger
// }
// }
} }

View File

@ -1,11 +1,5 @@
<template> <template>
<div class="cursor-pointer w-[40px] h-[50px] leading-[50px] text-center" style="display: flex;display: -webkit-flex; align-items: center; -webkit-align-items: center; justify-content: center;-webkit-justify-content: center;"> <div class="cursor-pointer w-[40px] h-[50px] leading-[50px] text-center" style="display: flex;display: -webkit-flex; align-items: center; -webkit-align-items: center; justify-content: center;-webkit-justify-content: center;">
<!-- <svg-icon
:icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
@click="toggle"
/> -->
<!-- {{ isFullscreen }}
<img :src="isFullscreen ? '@/assets/MenuIcon/top_qp.png' : '@/assets/MenuIcon/top_qp1.png'" alt=""> -->
<img v-if="isFullscreen" src="@/assets/MenuIcon/top_qp1.png" alt="" @click="toggle" style="width:16px;height: 16px;"> <img v-if="isFullscreen" src="@/assets/MenuIcon/top_qp1.png" alt="" @click="toggle" style="width:16px;height: 16px;">
<img v-else src="@/assets/MenuIcon/top_qp.png" alt="" @click="toggle" style="width:16px;height: 16px;"> <img v-else src="@/assets/MenuIcon/top_qp.png" alt="" @click="toggle" style="width:16px;height: 16px;">
</div> </div>

View File

@ -191,9 +191,37 @@ const validator1 = (rule: any, value: any, callback: any) => { // 校验数字
} }
} }
const validateCode = (rule: any, value: any, callback: any) => {
if (value.length > 20) {
callback(new Error('设备编码最多20个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('设备名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const rules = ref({ const rules = ref({
name: [{ required: true, message: "请输入设备名称", trigger: "blur" }], code: [
code: [{ required: true, message: "请输入设备编码", trigger: "blur" }], { required: true, message: '请输入设备编码', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
],
name: [
{ required: true, message: '请输入设备名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
volume: [ volume: [
{ {
validator: validator1, validator: validator1,

View File

@ -66,7 +66,7 @@ if(deviceTypetype.value == ''){
onMounted(() => { onMounted(() => {
deviceTypetype.value = props.deviceInfo.type deviceTypetype.value = props.deviceInfo.type
if(props.changesettingsData != null && props.changesettingsData.length > 0){ if(props.changesettingsData != null && props.changesettingsData.length > 0){
tableData.value = props.changesettingsData tableData.value = JSON.parse(JSON.stringify(props.changesettingsData))
}else{ }else{
getInit(props.materialInfo); getInit(props.materialInfo);
} }

View File

@ -39,7 +39,6 @@ const selectedDevice:any = ref({}) // 选中患者
function confirmClick(formEl: any) { function confirmClick(formEl: any) {
formEl.validate((valid: any) => { formEl.validate((valid: any) => {
debugger
if (valid) { if (valid) {
const params = { const params = {
...info.value, ...info.value,
@ -93,10 +92,34 @@ const validator1 = (rule: any, value: any, callback: any) => { // 校验数字
callback(); callback();
} }
} }
const validateCode = (rule: any, value: any, callback: any) => {
if (value.length > 20) {
callback(new Error('设备编码最多20个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('设备名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const rules = ref({ const rules = ref({
name: [{ required: true, message: "请输入设备名称", trigger: "blur" }], code: [
code: [{ required: true, message: "请输入设备编码", trigger: "blur" }], { required: true, message: '请输入设备编码', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
],
name: [
{ required: true, message: '请输入设备名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
volume: [ volume: [
{ {
validator: validator1, validator: validator1,

View File

@ -1691,13 +1691,20 @@ function dialogCopy(){
const loading = ref(false) const loading = ref(false)
const confirmCopyClick = async ()=>{ const confirmCopyClick = async ()=>{
if(copyDeviceInfo.value.name == ''){ if(copyDeviceInfo.value.name == '' || copyDeviceInfo.value.name.trim() == ''){
ElMessage({ ElMessage({
type: "warning", type: "warning",
message: "请输入新设备名称", message: "请输入新设备名称",
}); });
return return
} }
if(copyDeviceInfo.value.name.length > 100){
ElMessage({
type: "warning",
message: "设备名称最多100个字符",
});
return
}
loading.value = true loading.value = true
copyNodeInfo.value.store.data.attrs.label.text = copyDeviceInfo.value.name copyNodeInfo.value.store.data.attrs.label.text = copyDeviceInfo.value.name
copyNodeInfo.value.store.data.deviceInfo.name = copyDeviceInfo.value.name copyNodeInfo.value.store.data.deviceInfo.name = copyDeviceInfo.value.name
@ -1757,9 +1764,17 @@ const confirmCopyClick = async ()=>{
const result:any = await addDevices(deviceInfo); const result:any = await addDevices(deviceInfo);
if(result == false || result == undefined){ if(result == false || result == undefined){
loading.value = false loading.value = false
ElMessage({
type: "error",
message: "复制失败",
});
return
}
if(result.code == 1){
loading.value = false
ElMessage({ ElMessage({
type: "success", type: "error",
message: "复制失败", message: result.msg,
}); });
return return
} }
@ -1768,10 +1783,10 @@ const confirmCopyClick = async ()=>{
if(results == false || results == undefined){ if(results == false || results == undefined){
loading.value = false loading.value = false
ElMessage({ ElMessage({
type: "success", type: "error",
message: "复制失败", message: results.msg,
}); });
return return
} }
} }
isLock.value = true isLock.value = true

View File

@ -182,9 +182,29 @@ const validator3 = (rule: any, value: any, callback: any) => {
callback(); callback();
} }
} }
//
function handleBlur() {
if(infoForm.value != null){
infoForm.value.validateField(['ePu238', 'ePu239', 'ePu240', 'ePu241', 'ePu242']);
}
}
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('物料数据名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
// //
const rules = ref({ const rules = ref({
name: [{ required: true, message: "请输入物料数据名称", trigger: "blur" }], name: [
{ required: true, message: '请输入物料数据名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
uConcentration: [ uConcentration: [
{ {
validator: validator1, validator: validator1,
@ -504,24 +524,24 @@ function delIconBase(){
<el-input v-model="info.puo2Density" style="width: 100%" placeholder="" @input="handleNumberInput('puo2Density')"></el-input> <el-input v-model="info.puo2Density" style="width: 100%" placeholder="" @input="handleNumberInput('puo2Density')"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-238占比" prop="ePu238"> <el-form-item label="PU-238占比" prop="ePu238">
<el-input v-model="info.ePu238" style="width: 100%" placeholder="" @input="handleNumberInput('ePu238')"></el-input> <el-input v-model="info.ePu238" style="width: 100%" placeholder="" @input="handleNumberInput('ePu238')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="materialmodel_dialog_display"> <div class="materialmodel_dialog_display">
<el-form-item label="PU-239占比" prop="ePu239"> <el-form-item label="PU-239占比" prop="ePu239">
<el-input v-model="info.ePu239" style="width: 100%" placeholder="" @input="handleNumberInput('ePu239')"></el-input> <el-input v-model="info.ePu239" style="width: 100%" placeholder="" @input="handleNumberInput('ePu239')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-240占比" prop="ePu240"> <el-form-item label="PU-240占比" prop="ePu240">
<el-input v-model="info.ePu240" style="width: 100%" placeholder="" @input="handleNumberInput('ePu240')"></el-input> <el-input v-model="info.ePu240" style="width: 100%" placeholder="" @input="handleNumberInput('ePu240')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="materialmodel_dialog_display"> <div class="materialmodel_dialog_display">
<el-form-item label="PU-241占比" prop="ePu241"> <el-form-item label="PU-241占比" prop="ePu241">
<el-input v-model="info.ePu241" style="width: 100%" placeholder="" @input="handleNumberInput('ePu241')"></el-input> <el-input v-model="info.ePu241" style="width: 100%" placeholder="" @input="handleNumberInput('ePu241')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-242占比" prop="ePu242"> <el-form-item label="PU-242占比" prop="ePu242">
<el-input v-model="info.ePu242" style="width: 100%" placeholder="" @input="handleNumberInput('ePu242')"></el-input> <el-input v-model="info.ePu242" style="width: 100%" placeholder="" @input="handleNumberInput('ePu242')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>

View File

@ -18,6 +18,18 @@ import { useUserStore } from '@/store/modules/user';
import { useSettingsStore } from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import { useFullscreen } from '@vueuse/core';
const { isFullscreen, toggle } = useFullscreen();
const tooltipRef = ref();
const handleScreenfullClick = () => {
// tooltip
if (tooltipRef.value) {
tooltipRef.value.hide();
}
//
toggle();
};
const url = import.meta.env.VITE_APP_BASE_API; const url = import.meta.env.VITE_APP_BASE_API;
const username = Cookies.get('username'); const username = Cookies.get('username');
@ -67,8 +79,11 @@ onBeforeUnmount(()=>{
<div v-if="settingsStore.layout === 'left'" class="flex justify-start"> <div v-if="settingsStore.layout === 'left'" class="flex justify-start">
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
<!-- 全屏 --> <!-- 全屏 -->
<el-tooltip content="全屏缩放" effect="dark" placement="bottom"> <el-tooltip ref="tooltipRef" content="全屏缩放" effect="dark" placement="bottom">
<screenfull id="screenfull" /> <div class="cursor-pointer w-[40px] h-[50px] leading-[50px] text-center" style="display: flex;display: -webkit-flex; align-items: center; -webkit-align-items: center; justify-content: center;-webkit-justify-content: center;">
<img v-if="isFullscreen" src="@/assets/MenuIcon/top_qp1.png" alt="" @click="handleScreenfullClick" style="width:16px;height: 16px;">
<img v-else src="@/assets/MenuIcon/top_qp.png" alt="" @click="handleScreenfullClick" style="width:16px;height: 16px;">
</div>
</el-tooltip> </el-tooltip>
<!--语言选择--> <!--语言选择-->
<!-- <lang-select /> --> <!-- <lang-select /> -->

View File

@ -276,14 +276,13 @@ function confirmClick(formEl: any) {
size: JSON.stringify(info.value.size), size: JSON.stringify(info.value.size),
} }
addCriticalData(params).then((res:any) => { addCriticalData(params).then((res:any) => {
if(res === true){ if(res.code == '0'){
gettableData();
dialogVisible.value = false;
}else{
ElMessage({ ElMessage({
type: "error", type: "success",
message: '新增失败', message: '修改成功',
}); });
gettableData();
dialogVisible.value = false;
} }
}); });
@ -293,14 +292,13 @@ function confirmClick(formEl: any) {
size: JSON.stringify(info.value.size), size: JSON.stringify(info.value.size),
} }
updateCriticalData(params).then((res:any) => { updateCriticalData(params).then((res:any) => {
if(res === true){ if(res.code == '0'){
ElMessage({
type: "success",
message: '修改成功',
});
gettableData(); gettableData();
dialogVisible.value = false; dialogVisible.value = false;
}else{
ElMessage({
type: "error",
message: '修改失败',
});
} }
}); });
} else { } else {

View File

@ -92,8 +92,10 @@ function menuInit() {
function handleMenu(row:any) { function handleMenu(row:any) {
queryParams.value.type = row.itemCode queryParams.value.type = row.itemCode
input.value = ""
sourceTempData.value = sizeSchemaInfo.value[queryParams.value.type].fields sourceTempData.value = sizeSchemaInfo.value[queryParams.value.type].fields
gettableData() gettableData()
} }
const infoForm = ref(); const infoForm = ref();
@ -154,9 +156,16 @@ function confirmClick(formEl: any) {
...info.value, ...info.value,
size: JSON.stringify( info.value.size) size: JSON.stringify( info.value.size)
} }
addDevices(params).then((res) => { addDevices(params).then((res:any) => {
gettableData(); if(res.code == '0'){
dialogVisible.value = false; ElMessage({
type: "success",
message: '新增成功',
});
gettableData();
dialogVisible.value = false;
}
}); });
} else if (info.value.deviceId) { } else if (info.value.deviceId) {
const params = { const params = {
@ -164,9 +173,15 @@ function confirmClick(formEl: any) {
...info.value, ...info.value,
size: JSON.stringify( info.value.size) size: JSON.stringify( info.value.size)
} }
updateDevices(params).then((res) => { updateDevices(params).then((res:any) => {
gettableData(); if(res.code == '0'){
dialogVisible.value = false; ElMessage({
type: "success",
message: '修改成功',
});
gettableData();
dialogVisible.value = false;
}
}); });
} else { } else {
return false; return false;
@ -193,10 +208,34 @@ const validator1 = (rule: any, value: any, callback: any) => { // 校验数字
callback(); callback();
} }
} }
const validateCode = (rule: any, value: any, callback: any) => {
if (value.length > 20) {
callback(new Error('设备编码最多20个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('设备名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const rulesInfo = ref({ const rulesInfo = ref({
name: [{ required: true, message: "请输入设备名称", trigger: "blur" }], code: [
code: [{ required: true, message: "请输入设备编码", trigger: "blur" }], { required: true, message: '请输入设备编码', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
],
name: [
{ required: true, message: '请输入设备名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
volume: [ volume: [
{ {
validator: validator1, validator: validator1,

View File

@ -134,9 +134,15 @@ function confirmClick(formEl: any) {
...info.value, ...info.value,
customAttrs: JSON.stringify( customAttrsData.value) customAttrs: JSON.stringify( customAttrsData.value)
} }
addMaterials(params).then((res) => { addMaterials(params).then((res:any) => {
gettableData(); if(res.code == '0'){
dialogVisible.value = false; ElMessage({
type: "success",
message: '修改成功',
});
gettableData();
dialogVisible.value = false;
}
}); });
} else if (info.value.materialId) { } else if (info.value.materialId) {
const params = { const params = {
@ -144,9 +150,15 @@ function confirmClick(formEl: any) {
...info.value, ...info.value,
customAttrs: JSON.stringify( customAttrsData.value) customAttrs: JSON.stringify( customAttrsData.value)
} }
updateMaterials(params).then((res) => { updateMaterials(params).then((res:any) => {
gettableData(); if(res.code == '0'){
dialogVisible.value = false; ElMessage({
type: "success",
message: '修改成功',
});
gettableData();
dialogVisible.value = false;
}
}); });
} else { } else {
return false; return false;
@ -224,9 +236,27 @@ const validator3 = (rule: any, value: any, callback: any) => {
callback(); callback();
} }
} }
//
function handleBlur() {
if(infoForm.value != null){
infoForm.value.validateField(['ePu238', 'ePu239', 'ePu240', 'ePu241', 'ePu242']);
}
}
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('物料数据名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
// //
const rules = ref({ const rules = ref({
name: [{ required: true, message: "请输入物料数据名称", trigger: "blur" }], name: [
{ required: true, message: '请输入物料数据名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
uConcentration: [ uConcentration: [
{ {
validator: validator1, validator: validator1,
@ -560,24 +590,24 @@ function downloadFile(obj :any, name :any, suffix :any) {
<el-input v-model="info.puo2Density" style="width: 100%" placeholder="" @input="handleNumberInput('puo2Density')"></el-input> <el-input v-model="info.puo2Density" style="width: 100%" placeholder="" @input="handleNumberInput('puo2Density')"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-238占比" prop="ePu238"> <el-form-item label="PU-238占比" prop="ePu238">
<el-input v-model="info.ePu238" style="width: 100%" placeholder="" @input="handleNumberInput('ePu238')"></el-input> <el-input v-model="info.ePu238" style="width: 100%" placeholder="" @input="handleNumberInput('ePu238')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="Materials_dialog_display"> <div class="Materials_dialog_display">
<el-form-item label="PU-239占比" prop="ePu239"> <el-form-item label="PU-239占比" prop="ePu239">
<el-input v-model="info.ePu239" style="width: 100%" placeholder="" @input="handleNumberInput('ePu239')"></el-input> <el-input v-model="info.ePu239" style="width: 100%" placeholder="" @input="handleNumberInput('ePu239')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-240占比" prop="ePu240"> <el-form-item label="PU-240占比" prop="ePu240">
<el-input v-model="info.ePu240" style="width: 100%" placeholder="" @input="handleNumberInput('ePu240')"></el-input> <el-input v-model="info.ePu240" style="width: 100%" placeholder="" @input="handleNumberInput('ePu240')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="Materials_dialog_display"> <div class="Materials_dialog_display">
<el-form-item label="PU-241占比" prop="ePu241"> <el-form-item label="PU-241占比" prop="ePu241">
<el-input v-model="info.ePu241" style="width: 100%" placeholder="" @input="handleNumberInput('ePu241')"></el-input> <el-input v-model="info.ePu241" style="width: 100%" placeholder="" @input="handleNumberInput('ePu241')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="PU-242占比" prop="ePu242"> <el-form-item label="PU-242占比" prop="ePu242">
<el-input v-model="info.ePu242" style="width: 100%" placeholder="" @input="handleNumberInput('ePu242')"></el-input> <el-input v-model="info.ePu242" style="width: 100%" placeholder="" @input="handleNumberInput('ePu242')" @blur="handleBlur"></el-input>
</el-form-item> </el-form-item>
</div> </div>

View File

@ -145,10 +145,36 @@ function handleClose() {
dialogPermissionVisible.value = false; dialogPermissionVisible.value = false;
if (infoForm.value != null) infoForm.value.resetFields(); if (infoForm.value != null) infoForm.value.resetFields();
} }
const validateCode = (rule: any, value: any, callback: any) => {
if (value.length > 20) {
callback(new Error('项目编码最多20个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('项目名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
// //
const rules = ref({ const rules = ref({
name: [{ required: true, message: "请输入项目名称", trigger: "blur" }], name: [
code: [{ required: true, message: "请输入项目编码", trigger: "blur" }], { required: true, message: '请输入项目名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
code: [
{ required: true, message: '请输入项目编码', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
]
}); });
// //
function editClick(row: any) { // function editClick(row: any) { //

View File

@ -32,10 +32,40 @@ const info: any = ref({
code: "", code: "",
description: "", description: "",
}); });
const validateNotEmpty = (rule: any, value: any, callback: any) => {
if (value.length > 100) {
callback(new Error('事故情景名称最多100个字符'));
}else if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
} else {
callback();
}
};
const validateKeffThreshold = (rule: any, value: any, callback: any) => {
if (value < 0) {
callback(new Error('keff阈值不能小于0'));
return;
} else if (value > 1) {
callback(new Error('keff阈值不能大于1'));
return;
} else {
callback();
}
};
const rules = ref({ // const rules = ref({ //
name: [{ required: true, message: "请输入事故情景名称", trigger: "blur" }], name: [
{ required: true, message: '请输入事故情景名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
algorithmType: [{ required: true, message: "请选择算法类型", trigger: "change" }], algorithmType: [{ required: true, message: "请选择算法类型", trigger: "change" }],
keffThreshold: [{ required: true, message: "请输入keff阈值", trigger: "blur" }], keffThreshold: [
{ required: true, message: '请输入keff阈值', trigger: 'blur' },
{ validator: validateKeffThreshold, trigger: 'blur' }
],
}); });
function handleScenarioClose(){ function handleScenarioClose(){
emit("closeCreatescenario",false) emit("closeCreatescenario",false)

View File

@ -122,10 +122,37 @@ function handleClose() {
if (infoForm.value != null) infoForm.value.resetFields(); if (infoForm.value != null) infoForm.value.resetFields();
} }
// //
const rules = ref({ const validateNotEmpty = (rule: any, value: any, callback: any) => {
name: [{ required: true, message: "请输入事故情景名称", trigger: "blur" }], if (!value || value.trim() === '') {
callback(new Error('不能为空或仅含空格'));
}if (value.length > 100) {
callback(new Error('事故情景名称最多100个字符'));
}else {
callback();
}
};
const validateKeffThreshold = (rule: any, value: any, callback: any) => {
if (value < 0) {
callback(new Error('keff阈值不能小于0'));
return;
} else if (value > 1) {
callback(new Error('keff阈值不能大于1'));
return;
} else {
callback();
}
};
const rules = ref({ //
name: [
{ required: true, message: '请输入事故情景名称', trigger: 'blur' },
{ validator: validateNotEmpty, trigger: 'blur' }
],
algorithmType: [{ required: true, message: "请选择算法类型", trigger: "change" }], algorithmType: [{ required: true, message: "请选择算法类型", trigger: "change" }],
keffThreshold: [{ required: true, message: "请输入keff阈值", trigger: "blur" }], keffThreshold: [
{ required: true, message: '请输入keff阈值', trigger: 'blur' },
{ validator: validateKeffThreshold, trigger: 'blur' }
],
}); });
// //
function editClick(row: any,type: string) { function editClick(row: any,type: string) {
@ -259,42 +286,44 @@ function submitClick(){
}); });
return return
} }
infoForm.value.validate((valid: any) => {
const data:any = { if (!valid) {
projectId: props.projectInfo.projectId, return false
name: info.value.name,
algorithmType: info.value.algorithmType,
description: info.value.description,
keffThreshold: info.value.keffThreshold,
};
let device_algo_config:any = []
let isTrue:any = false
deviceData.value.forEach((item: any) => {
if(item.algorithmType !=null && item.algorithmType != ''){
device_algo_config.push({
deviceId: item.deviceId,
algorithmType: item.algorithmType,
algorithmModelId: item.algorithmModelId,
})
isTrue = true
} }
}) const data:any = {
if(isTrue == true){ projectId: props.projectInfo.projectId,
data.deviceAlgoConfig = JSON.stringify(device_algo_config) name: info.value.name,
} scenarioId: info.value.scenarioId,
algorithmType: info.value.algorithmType,
description: info.value.description,
keffThreshold: info.value.keffThreshold,
updateScenarios(data).then((res:any) => { };
if (res == true) { let device_algo_config:any = []
ElMessage({ let isTrue:any = false
type: "success", deviceData.value.forEach((item: any) => {
message: "保存成功", if(item.algorithmType !=null && item.algorithmType != ''){
}); device_algo_config.push({
dialogEditVisible.value = false; deviceId: item.deviceId,
gettableData(); algorithmType: item.algorithmType,
algorithmModelId: item.algorithmModelId,
})
isTrue = true
}
})
if(isTrue == true){
data.deviceAlgoConfig = JSON.stringify(device_algo_config)
} }
}) updateScenarios(data).then((res:any) => {
if (res == true) {
ElMessage({
type: "success",
message: "保存成功",
});
dialogEditVisible.value = false;
gettableData();
}
})
});
} }
const algorithmModelsData = ref<any>([]) const algorithmModelsData = ref<any>([])
onMounted(() => { onMounted(() => {
@ -628,11 +657,12 @@ function handlefailDetail(row:any){
<div style="width: 100%;padding-top: 40px;"> <div style="width: 100%;padding-top: 40px;">
<div v-for="(item,index) in deviceData" :key="item.deviceId" style="display: flex;align-items: center;margin-bottom: 10px;"> <div v-for="(item,index) in deviceData" :key="item.deviceId" style="display: flex;align-items: center;margin-bottom: 10px;">
<div style="width: 150px;text-align: right;padding-right: 10px;">{{item.deviceName}}</div> <div style="width: 150px;text-align: right;padding-right: 10px;">{{item.deviceName}}</div>
<el-select v-model="item.algorithmType" placeholder="请选择" style="width:300px;margin-right: 10px;" clearable <el-select v-model="item.algorithmType" placeholder="请选择" style="width:300px;margin-right: 10px;"
clearable :disabled="title == '查看事故情景'"
@change="changeSonAlgorithmType(item.algorithmType,item.deviceType,index)"> @change="changeSonAlgorithmType(item.algorithmType,item.deviceType,index)">
<el-option v-for="item in algorithmTypeData" :key="item.algorithmType" :label="item.name" :value="item.algorithmType" /> <el-option v-for="item in algorithmTypeData" :key="item.algorithmType" :label="item.name" :value="item.algorithmType" />
</el-select> </el-select>
<el-select v-model="item.algorithmModelId" placeholder="请选择" style="width:180px;" > <el-select v-model="item.algorithmModelId" placeholder="请选择" style="width:180px;" :disabled="title == '查看事故情景'" >
<el-option v-for="items in item.algorithmModelsData" :key="items.algorithmModelId" :label="items.versionTag" :value="items.algorithmModelId" /> <el-option v-for="items in item.algorithmModelsData" :key="items.algorithmModelId" :label="items.versionTag" :value="items.algorithmModelId" />
</el-select> </el-select>
</div> </div>
@ -655,7 +685,7 @@ function handlefailDetail(row:any){
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: right;"> <div style="text-align: right;">
<el-button @click="handleClose">取消</el-button> <el-button @click="handleClose" v-if="title == '修改事故情景'">取消</el-button>
<el-button type="primary" @click="submitClick" v-if="title == '修改事故情景'">确定</el-button> <el-button type="primary" @click="submitClick" v-if="title == '修改事故情景'">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>

View File

@ -152,16 +152,18 @@ function savePass(formEl: any){
id: info.value.id, id: info.value.id,
password: encrypt(pass.value.newPassword) password: encrypt(pass.value.newPassword)
} }
updatePassword(params).then((res) => { updatePassword(params).then((res: any) => {
userStore.logout().then(() => { if(res.code == 0) {
tagsViewStore.delAllViews(); userStore.logout().then(() => {
}).then(() => { tagsViewStore.delAllViews();
router.push(`/login`); }).then(() => {
}); router.push(`/login`);
ElMessage({ });
type: 'success', ElMessage({
message: '修改成功,请重新登录', type: 'success',
}) message: '修改成功,请重新登录',
})
}
}) })
} }
}) })