模拟结果添加显示设置,修改模拟计算状态,修改模型训练bug
This commit is contained in:
parent
9c7eebdb8e
commit
2e34b85c38
@ -1697,7 +1697,7 @@ function getName(code:any) {
|
|||||||
return name = "外径cm";
|
return name = "外径cm";
|
||||||
break;
|
break;
|
||||||
case 'volume':
|
case 'volume':
|
||||||
return name = "体积(单位:L)";
|
return name = "容量(单位:L)";
|
||||||
break;
|
break;
|
||||||
case 'flow_rate':
|
case 'flow_rate':
|
||||||
return name = "流量(单位:m3/h)";
|
return name = "流量(单位:m3/h)";
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import echartsimg from '@/assets/x6/charts.png'
|
|||||||
|
|
||||||
import TableModels from './tableModel.vue';
|
import TableModels from './tableModel.vue';
|
||||||
import EchartsModels from './echartsModel.vue';
|
import EchartsModels from './echartsModel.vue';
|
||||||
|
const selectedData = ref<any>([])
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const emit = defineEmits([ 'closeAntvx6']);
|
const emit = defineEmits([ 'closeAntvx6']);
|
||||||
@ -73,11 +73,8 @@ function getScenarioResults(){
|
|||||||
const element = scenarioResults.value[key];
|
const element = scenarioResults.value[key];
|
||||||
sliderValues.value = []
|
sliderValues.value = []
|
||||||
for(let i = 0;i<customImageData.value.length;i++){
|
for(let i = 0;i<customImageData.value.length;i++){
|
||||||
|
|
||||||
if(key == customImageData.value[i].id){
|
if(key == customImageData.value[i].id){
|
||||||
|
|
||||||
customImageData.value[i].scenarioResults = element
|
customImageData.value[i].scenarioResults = element
|
||||||
|
|
||||||
for(let j = 0;j<element.length;j++){
|
for(let j = 0;j<element.length;j++){
|
||||||
tempSliderValues.push(element[j].step)
|
tempSliderValues.push(element[j].step)
|
||||||
sliderMarks.value[j] = element[j].step + ''
|
sliderMarks.value[j] = element[j].step + ''
|
||||||
@ -85,34 +82,13 @@ function getScenarioResults(){
|
|||||||
sliderIndex.value = customImageData.value[i].scenarioResults.length - 1
|
sliderIndex.value = customImageData.value[i].scenarioResults.length - 1
|
||||||
selecteTime.value = customImageData.value[i].scenarioResults[sliderIndex.value].step
|
selecteTime.value = customImageData.value[i].scenarioResults[sliderIndex.value].step
|
||||||
sliderValues.value = tempSliderValues
|
sliderValues.value = tempSliderValues
|
||||||
addAttrText(customImageData.value[i],sliderIndex.value)
|
addAttrText(customImageData.value[i],sliderIndex.value,selectedData.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function addAttrText(item:any,index:any){
|
function addAttrText(item:any,index:any,useData:any){
|
||||||
// graph.addNode({
|
|
||||||
// shape: 'rect-text',
|
|
||||||
// x: item.position.x ,
|
|
||||||
// y: item.position.y + 150,
|
|
||||||
// width: 100,
|
|
||||||
// height: 40,
|
|
||||||
// attrs: {
|
|
||||||
// body: {
|
|
||||||
// stroke: 'transparent',
|
|
||||||
// fill: 'transparent',
|
|
||||||
// strokeWidth: 1,
|
|
||||||
// },
|
|
||||||
// label: {
|
|
||||||
// textAnchor: 'left',
|
|
||||||
// refX: 0,
|
|
||||||
// text: item.deviceInfo.name,
|
|
||||||
// fill: '#363636',
|
|
||||||
// fontSize: 16,
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// })
|
|
||||||
if(item.scenarioResults[index] == null){
|
if(item.scenarioResults[index] == null){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -187,8 +163,9 @@ function addAttrText(item:any,index:any){
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
appendAttrText(item,tempData)
|
appendAttrText(item,tempData,useData)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getName(code:any) {
|
function getName(code:any) {
|
||||||
let name = ''
|
let name = ''
|
||||||
switch (code) {
|
switch (code) {
|
||||||
@ -251,12 +228,15 @@ function getName(code:any) {
|
|||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
function appendAttrText(item:any,data:any){
|
function appendAttrText(item:any,data:any,useData:any){
|
||||||
|
if(useData.length == 0){
|
||||||
|
return
|
||||||
|
}
|
||||||
if(isDisplay.value == false){
|
if(isDisplay.value == false){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
const result = data.filter((item:any) => useData.includes(item.name));
|
||||||
for(let i = 0;i<data.length;i++){
|
for(let i = 0;i<result.length;i++){
|
||||||
graph.addNode({
|
graph.addNode({
|
||||||
shape: 'rect-text',
|
shape: 'rect-text',
|
||||||
x: item.position.x,
|
x: item.position.x,
|
||||||
@ -273,7 +253,7 @@ function appendAttrText(item:any,data:any){
|
|||||||
label: {
|
label: {
|
||||||
textAnchor: 'left',
|
textAnchor: 'left',
|
||||||
refX: 0,
|
refX: 0,
|
||||||
text: getName(data[i].name) + ':' + data[i].value,
|
text: getName(result[i].name) + ':' + result[i].value,
|
||||||
textWrap: {
|
textWrap: {
|
||||||
width: 250,
|
width: 250,
|
||||||
height: 30,
|
height: 30,
|
||||||
@ -689,7 +669,7 @@ function isDisplayClick(){
|
|||||||
if (!Object.hasOwn(scenarioResults.value, key)) continue;
|
if (!Object.hasOwn(scenarioResults.value, key)) continue;
|
||||||
for(let i = 0;i<customImageData.value.length;i++){
|
for(let i = 0;i<customImageData.value.length;i++){
|
||||||
if(key == customImageData.value[i].id){
|
if(key == customImageData.value[i].id){
|
||||||
addAttrText(customImageData.value[i],sliderIndex.value)
|
addAttrText(customImageData.value[i],sliderIndex.value,selectedData.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -714,7 +694,7 @@ function refreshClick(value:any){
|
|||||||
if(key == customImageData.value[i].id){
|
if(key == customImageData.value[i].id){
|
||||||
const targetIndex = customImageData.value[i].scenarioResults.findIndex((item:any) => item.step === value);
|
const targetIndex = customImageData.value[i].scenarioResults.findIndex((item:any) => item.step === value);
|
||||||
sliderIndex.value = targetIndex
|
sliderIndex.value = targetIndex
|
||||||
addAttrText(customImageData.value[i],targetIndex)
|
addAttrText(customImageData.value[i],targetIndex,selectedData.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -739,24 +719,125 @@ function handleTimeChange(value:any){ // 时间改变
|
|||||||
|
|
||||||
let sliderMarks:any =ref({
|
let sliderMarks:any =ref({
|
||||||
})
|
})
|
||||||
|
const isAttributeDialog = ref(false)
|
||||||
|
const deviceList = ref<any>([{
|
||||||
|
code:'diameter',
|
||||||
|
checked:false,
|
||||||
|
name:'直径'
|
||||||
|
},{
|
||||||
|
code:'height',
|
||||||
|
checked:false,
|
||||||
|
name:'高度',
|
||||||
|
},{
|
||||||
|
code:'volume',
|
||||||
|
checked:false,
|
||||||
|
name:'容量'
|
||||||
|
},{
|
||||||
|
code:'flow_rate',
|
||||||
|
checked:false,
|
||||||
|
name:'流量'
|
||||||
|
},{
|
||||||
|
code:'pulse_speed',
|
||||||
|
checked:false,
|
||||||
|
name:'脉冲速度',
|
||||||
|
}])
|
||||||
|
const materialList = ref<any>([{
|
||||||
|
code:'u_concentration',
|
||||||
|
checked:false,
|
||||||
|
name:'铀浓度'
|
||||||
|
},{
|
||||||
|
code:'uo2_density',
|
||||||
|
checked:false,
|
||||||
|
name:'氧化铀密度',
|
||||||
|
},{
|
||||||
|
code:'u_enrichment',
|
||||||
|
checked:false,
|
||||||
|
name:'铀富集度'
|
||||||
|
},{
|
||||||
|
code:'pu_concentration',
|
||||||
|
checked:false,
|
||||||
|
name:'钚浓度'
|
||||||
|
},{
|
||||||
|
code:'puo2_density',
|
||||||
|
checked:false,
|
||||||
|
name:'氧化钚密度',
|
||||||
|
},{
|
||||||
|
code:'pu_isotope',
|
||||||
|
checked:false,
|
||||||
|
name:'钚同位素比例'
|
||||||
|
},{
|
||||||
|
code:'hno3_acidity',
|
||||||
|
checked:false,
|
||||||
|
name:'草酸浓度',
|
||||||
|
},{
|
||||||
|
code:'organic_ratio',
|
||||||
|
checked:false,
|
||||||
|
name:'有机相比例'
|
||||||
|
},{
|
||||||
|
code:'moisture_content',
|
||||||
|
checked:false,
|
||||||
|
name:'含水率'
|
||||||
|
}])
|
||||||
|
function ChangesettingsClick(){
|
||||||
|
deviceList.value.forEach( (item:any) => {
|
||||||
|
item.checked = false
|
||||||
|
if (selectedData.value.includes(item.code)) {
|
||||||
|
item.checked = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
materialList.value.forEach((item:any) => {
|
||||||
|
item.checked = false
|
||||||
|
if (selectedData.value.includes(item.code)) {
|
||||||
|
item.checked = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
isAttributeDialog.value = true
|
||||||
|
}
|
||||||
|
function dialogAttributeDialog(){ // 关闭变动设置弹窗
|
||||||
|
isAttributeDialog.value = false;
|
||||||
|
}
|
||||||
|
const isTab = ref(0)
|
||||||
|
function changeShowTab(index:any){
|
||||||
|
isTab.value = index
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function confirmClick(){
|
||||||
|
let tempData:any = []
|
||||||
|
for(let i = 0;i<deviceList.value.length;i++){
|
||||||
|
if(deviceList.value[i].checked){
|
||||||
|
tempData.push(deviceList.value[i].code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(let i = 0;i<materialList.value.length;i++){
|
||||||
|
if(materialList.value[i].checked){
|
||||||
|
tempData.push(materialList.value[i].code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectedData.value = tempData
|
||||||
|
let tempGraph:any = graph.toJSON().cells
|
||||||
|
for(let i = 0;i<tempGraph.length;i++){
|
||||||
|
if(tempGraph[i].shape == 'rect-text' || tempGraph[i].shape == 'image-node'){
|
||||||
|
graph.removeCell(tempGraph[i].id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isDisplay.value = true
|
||||||
|
for (const key in scenarioResults.value) {
|
||||||
|
if (!Object.hasOwn(scenarioResults.value, key)) continue;
|
||||||
|
for(let i = 0;i<customImageData.value.length;i++){
|
||||||
|
if(key == customImageData.value[i].id){
|
||||||
|
addAttrText(customImageData.value[i],sliderIndex.value,selectedData.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isAttributeDialog.value = false
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="antvx6-layout" @click="isMenuShow = false">
|
<div class="antvx6-layout" @click="isMenuShow = false">
|
||||||
<div class="antvx6-header">
|
<div class="antvx6-header">
|
||||||
<div class="header-left-box">
|
<div class="header-left-box">
|
||||||
<!-- <div class="return-icon-box" @click="closeAntvx6" title="返回工作台">
|
|
||||||
<img src="@/assets/x6/return.png" alt="图标" style="cursor: pointer;">
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
<!-- <div class="project-name">{{ projectInfo.name }}</div> -->
|
|
||||||
<!-- <div class="return-icon-box" @click="analysisAdd" title="新增模拟分析">
|
|
||||||
<img src="@/assets/x6/add.png" alt="图标" style="cursor: pointer;">
|
|
||||||
</div>
|
|
||||||
<div class="return-icon-box" @click="simulationClick" title="历史模拟分析">
|
|
||||||
<img src="@/assets/x6/history.png" alt="图标" style="cursor: pointer;">
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="header-content-box">
|
<div class="header-content-box">
|
||||||
<div class="operation-icon-box" @click="bigClick">
|
<div class="operation-icon-box" @click="bigClick">
|
||||||
@ -768,7 +849,7 @@ let sliderMarks:any =ref({
|
|||||||
<div class="operation-icon-text">缩小</div>
|
<div class="operation-icon-text">缩小</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="operation-icon-box" @click="isDisplayClick">
|
<div class="operation-icon-box" @click="isDisplayClick">
|
||||||
<img v-if="isDisplay" src="@/assets/x6/display.png">
|
<img v-if="!isDisplay" src="@/assets/x6/display.png">
|
||||||
<img v-else src="@/assets/x6/hide.png">
|
<img v-else src="@/assets/x6/hide.png">
|
||||||
<div class="operation-icon-text">显示</div>
|
<div class="operation-icon-text">显示</div>
|
||||||
</div>
|
</div>
|
||||||
@ -784,6 +865,7 @@ let sliderMarks:any =ref({
|
|||||||
<img src="@/assets/x6/del.png" alt="图标" title="删除" style="cursor: pointer;"
|
<img src="@/assets/x6/del.png" alt="图标" title="删除" style="cursor: pointer;"
|
||||||
@click="deleteNode"> -->
|
@click="deleteNode"> -->
|
||||||
</div>
|
</div>
|
||||||
|
<div class="viewx6-DisplaySettingsButton" @click="ChangesettingsClick">显示设置</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="isTableModel" :close-on-click-modal="false" :modal="false" draggable :before-close="dialogTableModel" title="设备分析列表" append-to-body width="1430px">
|
<el-dialog v-model="isTableModel" :close-on-click-modal="false" :modal="false" draggable :before-close="dialogTableModel" title="设备分析列表" append-to-body width="1430px">
|
||||||
<TableModels v-if="isTableModel" :deviceId="deviceId" :scenarioId="scenarioId"/>
|
<TableModels v-if="isTableModel" :deviceId="deviceId" :scenarioId="scenarioId"/>
|
||||||
@ -792,13 +874,52 @@ let sliderMarks:any =ref({
|
|||||||
<el-dialog v-model="isEchartsModel" :close-on-click-modal="false" :modal="false" draggable :before-close="dialogEchartsModel" title="设备分析图像" append-to-body width="1430px">
|
<el-dialog v-model="isEchartsModel" :close-on-click-modal="false" :modal="false" draggable :before-close="dialogEchartsModel" title="设备分析图像" append-to-body width="1430px">
|
||||||
<EchartsModels v-if="isEchartsModel" :deviceId="deviceId" :scenarioId="scenarioId"/>
|
<EchartsModels v-if="isEchartsModel" :deviceId="deviceId" :scenarioId="scenarioId"/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="isAttributeDialog" :close-on-click-modal="false" :modal="false" draggable
|
||||||
|
:before-close="dialogAttributeDialog" title="显示设置" append-to-body width="780px">
|
||||||
|
<div style="position: relative; display: flex; margin-bottom: 0px; border-bottom: 1px solid #e5e5e5;padding-bottom: 5px;padding-top: 10px;padding-left: 10px;">
|
||||||
|
<div @click="changeShowTab(0)" class="adddevice_navigation_left" :class="{'adddevice_navigation_activeleft':isTab == 0}">设备信息</div>
|
||||||
|
<div @click="changeShowTab(1)" class="adddevice_navigation_right" :class="{'adddevice_navigation_activeright':isTab == 1}">物料信息</div>
|
||||||
|
</div>
|
||||||
|
<div style="width: 100%; height: calc(100vh - 300px);overflow: auto;">
|
||||||
|
<div class="deviceList-box" v-if="isTab == 0">
|
||||||
|
<div v-for="(item,index) in deviceList" :key="index" class="deviceList-li">
|
||||||
|
<el-checkbox v-model="item.checked" :label="item.name"></el-checkbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="deviceList-box" v-if="isTab == 1">
|
||||||
|
<div v-for="(item,index) in materialList" :key="index" class="deviceList-li">
|
||||||
|
<el-checkbox v-model="item.checked" :label="item.name"></el-checkbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="dialog-footer"
|
||||||
|
style="display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;">
|
||||||
|
<el-button @click="dialogAttributeDialog">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmClick">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
style="width: 100%;position: absolute;bottom: 20px;z-index: 10; display: flex; justify-content: center;">
|
style="width: 100%;position: absolute;bottom: 20px;z-index: 10; display: flex; justify-content: center;">
|
||||||
<el-slider v-if="sliderValues.length>0" v-model="selecteTime" :format-tooltip="formatTooltip"
|
<!-- <el-slider v-if="sliderValues.length>0" v-model="selecteTime" :format-tooltip="formatTooltip"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="sliderValues.length - 1"
|
:max="sliderValues.length - 1"
|
||||||
:step="1"
|
:step="1"
|
||||||
:marks="sliderMarks"
|
:marks="sliderMarks"
|
||||||
|
show-stops size="large"
|
||||||
|
@change="handleTimeChange"
|
||||||
|
style="width: 80%;"
|
||||||
|
/> -->
|
||||||
|
|
||||||
|
<el-slider v-if="sliderValues.length>0" v-model="selecteTime" :format-tooltip="formatTooltip"
|
||||||
|
:min="0"
|
||||||
|
:max="sliderValues.length - 1"
|
||||||
|
:step="1"
|
||||||
|
|
||||||
show-stops size="large"
|
show-stops size="large"
|
||||||
@change="handleTimeChange"
|
@change="handleTimeChange"
|
||||||
style="width: 80%;"
|
style="width: 80%;"
|
||||||
@ -1114,7 +1235,50 @@ let sliderMarks:any =ref({
|
|||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
color: rgb(80, 80, 80);
|
color: rgb(80, 80, 80);
|
||||||
}
|
}
|
||||||
|
.viewx6-DisplaySettingsButton{
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
top: 20px;
|
||||||
|
z-index: 10;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #282828;
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.deviceList-box{
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid rgba(240, 241, 242, 1);
|
||||||
|
margin-top: 20px;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
.deviceList-li{
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-left: 15px;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: '微软雅黑';
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
color: #505050;
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-top: 1px solid rgba(240, 241, 242, 1);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<style >
|
<style >
|
||||||
.custom-image-node {
|
.custom-image-node {
|
||||||
|
|||||||
@ -208,7 +208,7 @@ function confirmClick(formEl: any) {
|
|||||||
let derive = false
|
let derive = false
|
||||||
let tempDerivedRules = ""
|
let tempDerivedRules = ""
|
||||||
if(derivedRulesData.value.length != 0){
|
if(derivedRulesData.value.length != 0){
|
||||||
infoTemp.derive = true
|
derive = true
|
||||||
tempDerivedRules = JSON.stringify(derivedRulesData.value.map((element:any) => ({
|
tempDerivedRules = JSON.stringify(derivedRulesData.value.map((element:any) => ({
|
||||||
name: element.name,
|
name: element.name,
|
||||||
expr: element.expr,
|
expr: element.expr,
|
||||||
@ -301,26 +301,27 @@ function viewClick(row: any) {
|
|||||||
|
|
||||||
//删除训练任务
|
//删除训练任务
|
||||||
function delAloneClick(row: any) {
|
function delAloneClick(row: any) {
|
||||||
ElMessageBox.confirm("确定删除此训练任务吗?", "删除提示", {
|
ElMessageBox.confirm("确定删除此训练任务吗?", "删除提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning",
|
type: "warning",
|
||||||
}) .then(() => {
|
}) .then(() => {
|
||||||
let params = {
|
let params = {
|
||||||
id: row.taskId
|
id: row.taskId
|
||||||
};
|
};
|
||||||
deleteAlgorithms(params).then(() => {
|
deleteAlgorithms(params).then((res:any) => {
|
||||||
|
if(res.code == '0'){
|
||||||
gettableData();
|
gettableData();
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: "success",
|
type: "success",
|
||||||
message: "删除成功",
|
message: "删除成功",
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
})
|
|
||||||
|
});
|
||||||
}
|
})
|
||||||
|
|
||||||
|
}
|
||||||
function dateFormat(row: any) {
|
function dateFormat(row: any) {
|
||||||
const daterc = row;
|
const daterc = row;
|
||||||
if (daterc != null) {
|
if (daterc != null) {
|
||||||
@ -347,10 +348,9 @@ onMounted(() => {
|
|||||||
|
|
||||||
|
|
||||||
// webSocket = new WebSocket(webSocketUrl + '/websocket/' + userStore.Token);
|
// webSocket = new WebSocket(webSocketUrl + '/websocket/' + userStore.Token);
|
||||||
const socket = new SockJS(webSocketUrl + '/ws/train');
|
const socket = new SockJS(apiUrl + '/ws/train');
|
||||||
const stompClient = Stomp.over(socket);
|
const stompClient = Stomp.over(socket);
|
||||||
stompClient.connect({}, (frame:any) => {
|
stompClient.connect({}, (frame:any) => {
|
||||||
console.log('✅ 连接成功!');
|
|
||||||
stompClient.subscribe('/topic/train-status/all', (message:any) => {
|
stompClient.subscribe('/topic/train-status/all', (message:any) => {
|
||||||
let data:any = {}
|
let data:any = {}
|
||||||
if(message.body != null){
|
if(message.body != null){
|
||||||
@ -750,6 +750,21 @@ function revokeExpression(){
|
|||||||
<el-radio v-for="item in columnsData" :key="item" :label="item">{{item}}</el-radio>
|
<el-radio v-for="item in columnsData" :key="item" :label="item">{{item}}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="衍生列" style="width: 100%;" v-if="columnsData.length > 0">
|
||||||
|
<div>
|
||||||
|
<div style="display: flex;align-items: center;margin-bottom: 10px;">
|
||||||
|
<img src="@/assets/add.png" alt="" style="width: 35px;height: 35px;cursor: pointer;" title="新增衍生列" @click="addDerivedRules">
|
||||||
|
<span style="font-weight: bold;padding-left: 20px; color: red;">示例:volume : diameter*height</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;align-items: center; width: 100%;margin-bottom: 10px;" v-for="(item,index) in derivedRulesData" :key="index">
|
||||||
|
<el-input v-model="item.name" style="width: 200px" placeholder="衍生列名称"></el-input>
|
||||||
|
<span style="padding: 0px 10px;">:</span>
|
||||||
|
<div class="derivedRulesData-expr" @click="selectExpression(index)" v-if="item.expr"> {{item.expr}} </div>
|
||||||
|
<div class="derivedRulesData-expr" @click="selectExpression(index)" style="cursor: pointer;color: #c2c2c2;" v-else="item.expr">表达式</div>
|
||||||
|
<img src="@/assets/del.png" alt="" style="width: 35px;height: 35px;cursor: pointer;margin-left: 10px;" @click="dellDerivedRules(index)">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
<el-form-item label="算法类型" prop="algorithmType" style="width: 100%;" >
|
<el-form-item label="算法类型" prop="algorithmType" style="width: 100%;" >
|
||||||
@ -789,24 +804,7 @@ function revokeExpression(){
|
|||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="衍生列" style="width: 100%;" v-if="columnsData.length > 0">
|
|
||||||
<div>
|
|
||||||
<div style="display: flex;align-items: center;margin-bottom: 10px;">
|
|
||||||
<img src="@/assets/add.png" alt="" style="width: 35px;height: 35px;cursor: pointer;" title="新增衍生列" @click="addDerivedRules">
|
|
||||||
<span style="font-weight: bold;padding-left: 20px; color: red;">示例:volume : diameter*height</span>
|
|
||||||
</div>
|
|
||||||
<div style="display: flex;align-items: center; width: 100%;margin-bottom: 10px;" v-for="(item,index) in derivedRulesData" :key="index">
|
|
||||||
<el-input v-model="item.name" style="width: 200px" placeholder="衍生列名称"></el-input>
|
|
||||||
<span style="padding: 0px 10px;">:</span>
|
|
||||||
<div class="derivedRulesData-expr" @click="selectExpression(index)" v-if="item.expr"> {{item.expr}} </div>
|
|
||||||
<div class="derivedRulesData-expr" @click="selectExpression(index)" style="cursor: pointer;color: #c2c2c2;" v-else="item.expr">表达式</div>
|
|
||||||
<img src="@/assets/del.png" alt="" style="width: 35px;height: 35px;cursor: pointer;margin-left: 10px;" @click="dellDerivedRules(index)">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span class="dialog-footer"
|
<span class="dialog-footer"
|
||||||
|
|||||||
@ -129,14 +129,6 @@ function editClick(row: any,type: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dialogEditVisible.value = true;
|
dialogEditVisible.value = true;
|
||||||
}
|
}
|
||||||
const isEdit = ref(false);
|
const isEdit = ref(false);
|
||||||
@ -292,17 +284,28 @@ function closeCreatescenario(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function confirmationAnalysis(row: any) {
|
function confirmationAnalysis(row: any) {
|
||||||
|
let text = "确定对"+ row.name +"故情景分析进行模拟吗?"
|
||||||
ElMessageBox.confirm("确定对"+ row.name +"故情景分析进行模拟吗?", "确认模拟", {
|
if(row.status == 2){
|
||||||
|
text = "重新模拟将清空当前情景的历史推理结果,是否继续?"
|
||||||
|
}
|
||||||
|
if(row.status == 3){
|
||||||
|
text = "重新模拟将清空当前情景的历史推理结果,是否继续?"
|
||||||
|
}
|
||||||
|
ElMessageBox.confirm(text, "确认模拟", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning",
|
type: "warning",
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
let params = {
|
let params:any = {
|
||||||
projectId: row.projectId,
|
projectId: row.projectId,
|
||||||
scenarioId: row.scenarioId,
|
scenarioId: row.scenarioId,
|
||||||
|
clearResult: false,
|
||||||
};
|
};
|
||||||
|
if(row.status == 2){
|
||||||
|
params.clearResult = true
|
||||||
|
}
|
||||||
|
|
||||||
simRun(params).then((res:any) => {
|
simRun(params).then((res:any) => {
|
||||||
if (res.code == '0') {
|
if (res.code == '0') {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
@ -442,6 +445,34 @@ function downloadFile(obj :any, name :any, suffix :any) {
|
|||||||
downloadFile(response, '全部设备结果数据' , 'xlsx')
|
downloadFile(response, '全部设备结果数据' , 'xlsx')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function handlefailDetail(row:any){
|
||||||
|
ElMessageBox.confirm(row.failDetail, "确认查看", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
}).then(() => {
|
||||||
|
let params = {
|
||||||
|
projectId: row.projectId,
|
||||||
|
scenarioId: row.scenarioId,
|
||||||
|
clearResult: false,
|
||||||
|
};
|
||||||
|
simRun(params).then((res:any) => {
|
||||||
|
if (res.code == '0') {
|
||||||
|
ElMessage({
|
||||||
|
message: '模拟计算成功',
|
||||||
|
type: 'success',
|
||||||
|
})
|
||||||
|
gettableData();
|
||||||
|
}else{
|
||||||
|
ElMessage({
|
||||||
|
message: '模拟计算失败',
|
||||||
|
type: 'error',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -481,6 +512,7 @@ function downloadFile(obj :any, name :any, suffix :any) {
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.status == 0" style="color: #0099FF;">初始创建</span>
|
<span v-if="scope.row.status == 0" style="color: #0099FF;">初始创建</span>
|
||||||
<span v-else-if="scope.row.status == 1" style="color: #FF9900;">进行中</span>
|
<span v-else-if="scope.row.status == 1" style="color: #FF9900;">进行中</span>
|
||||||
|
<span v-else-if="scope.row.status == 3" style="color: #ff0000;cursor: pointer;" @click="handlefailDetail(scope.row)">失败</span>
|
||||||
<span v-else style="color: #009933;">已完成</span>
|
<span v-else style="color: #009933;">已完成</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -488,11 +520,9 @@ function downloadFile(obj :any, name :any, suffix :any) {
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span
|
<span
|
||||||
style="display: flex;display: -webkit-flex; justify-content: space-around;-webkit-justify-content: space-around; ">
|
style="display: flex;display: -webkit-flex; justify-content: space-around;-webkit-justify-content: space-around; ">
|
||||||
|
|
||||||
<img src="@/assets/table/edit.png" alt="" title="修改"
|
<img src="@/assets/table/edit.png" alt="" title="修改"
|
||||||
v-if="scope.row.status == 0 && (props.projectInfo.visibility == 'PUBLIC' || username == props.projectInfo.creator || username == 'admin')"
|
v-if="scope.row.status == 0 && (props.projectInfo.visibility == 'PUBLIC' || username == props.projectInfo.creator || username == 'admin')"
|
||||||
@click="editClick(scope.row,'修改')" style="cursor: pointer; ">
|
@click="editClick(scope.row,'修改')" style="cursor: pointer; ">
|
||||||
|
|
||||||
<img src="@/assets/table/view.png" alt="" title="查看" v-else @click="editClick(scope.row,'查看')" style="cursor: pointer; ">
|
<img src="@/assets/table/view.png" alt="" title="查看" v-else @click="editClick(scope.row,'查看')" style="cursor: pointer; ">
|
||||||
|
|
||||||
<img src="@/assets/table/shifa.png" alt="" title="始发事件"
|
<img src="@/assets/table/shifa.png" alt="" title="始发事件"
|
||||||
@ -504,9 +534,9 @@ function downloadFile(obj :any, name :any, suffix :any) {
|
|||||||
|
|
||||||
|
|
||||||
<img src="@/assets/table/moni.png" alt="" title="模拟计算"
|
<img src="@/assets/table/moni.png" alt="" title="模拟计算"
|
||||||
v-if="(scope.row.status == 0|| scope.row.status == 1) && (props.projectInfo.visibility == 'PUBLIC' || username == props.projectInfo.creator || username == 'admin')"
|
v-if="(props.projectInfo.visibility == 'PUBLIC' || username == props.projectInfo.creator || username == 'admin')"
|
||||||
@click="confirmationAnalysis(scope.row)" style="cursor: pointer; ">
|
@click="confirmationAnalysis(scope.row)" style="cursor: pointer; ">
|
||||||
<img src="@/assets/table/moni_disabled.png" alt="" title="查看始发事件" v-else>
|
<!-- <img src="@/assets/table/moni_disabled.png" alt="" title="查看始发事件" v-else> -->
|
||||||
|
|
||||||
<img src="@/assets/table/result.png" alt="" title="计算结果" v-if="scope.row.status == 2"
|
<img src="@/assets/table/result.png" alt="" title="计算结果" v-if="scope.row.status == 2"
|
||||||
@click="resultClick(scope.row)" style="cursor: pointer; ">
|
@click="resultClick(scope.row)" style="cursor: pointer; ">
|
||||||
|
|||||||
@ -27,11 +27,13 @@ export default ({ mode }: ConfigEnv): UserConfig => {
|
|||||||
// 线上API地址
|
// 线上API地址
|
||||||
// target: 'http://192.168.1.166:8090/',
|
// target: 'http://192.168.1.166:8090/',
|
||||||
// 本地API地址
|
// 本地API地址
|
||||||
target: 'http://192.168.1.76:8090',
|
target: 'http://192.168.1.166:8090',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
|
ws: true,
|
||||||
rewrite: path =>
|
rewrite: path =>
|
||||||
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
|
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
|
||||||
}
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user