|
@@ -1427,7 +1427,7 @@
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
<el-button @click="dialog.Pythonshow = false">检查</el-button>
|
|
|
- <el-button type="primary">
|
|
|
+ <el-button type="primary" @click="pythonSubmit(); dialog.Pythonshow = false">
|
|
|
保存
|
|
|
</el-button>
|
|
|
</div>
|
|
@@ -1541,19 +1541,19 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="upper" label="上限值">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input type="text" v-model="row.upper" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
+ <el-input type="text" v-model.Number="row.upper" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="lower" label="下限值">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model.Number="row.lower" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
+ <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="reference" label="基准值" width="100">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model.Number="row.reference" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
+ <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -1579,7 +1579,7 @@
|
|
|
<el-input v-model="row.name" @change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="con" label="约束关系">
|
|
|
+ <!-- <el-table-column prop="con" label="约束关系">
|
|
|
<template v-slot="scope">
|
|
|
<el-select class="no-border " v-model.number="scope.row.con" :suffix-icon="CaretBottom"
|
|
|
placeholder="请选择">
|
|
@@ -1589,10 +1589,24 @@
|
|
|
</el-select>
|
|
|
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
+ </el-table-column> -->
|
|
|
<el-table-column prop="reference" label="约束基准值">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model.Number="row.reference" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
+ <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
+ @change="handleEdit(row)" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="upper" label="上限值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model.Number="row.upper"
|
|
|
+
|
|
|
+ oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
+ @change="handleEdit(row)" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="lower" label="下限值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model.Number="row.lower" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -1644,12 +1658,11 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="weight" label="权重系数">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-model.number="row.weight" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
+ <el-input v-model.Number="row.weight" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="scaling" label="数据缩放">
|
|
|
- <!-- :label="scope.row.s?'采用':'不采用'" -->
|
|
|
+ <!-- <el-table-column prop="scaling" label="数据缩放">
|
|
|
<template v-slot="scope">
|
|
|
<el-checkbox :false-label="0" :true-label="1" v-model="scope.row.scaling" />
|
|
|
|
|
@@ -1660,6 +1673,12 @@
|
|
|
<el-input v-model.number="row.factor" oninput="value=value.replace(/^|[^0-9]/g,'')"
|
|
|
@change="handleEdit(row)" />
|
|
|
</template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column prop="reference" label="约束基准值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model.Number="row.reference" oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1')"
|
|
|
+ @change="handleEdit(row)" />
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="remark" label="说明">
|
|
|
<template #default="{ row }">
|
|
@@ -1833,7 +1852,7 @@ let times = ref({
|
|
|
lockReconnect: false, //是否真正建立连接
|
|
|
timeout: 28 * 1000, //30秒一次心跳
|
|
|
timeoutObj: null, //心跳倒计时
|
|
|
- serverTimeout0bj: null, //
|
|
|
+ serverTimeoutObj: null, //
|
|
|
timeoutnum: null, //断开重连倒计时
|
|
|
})
|
|
|
let input3=ref()
|
|
@@ -2221,7 +2240,7 @@ const optiongroup = [
|
|
|
},
|
|
|
]
|
|
|
const eloptimize = ref([])
|
|
|
-let tableData = ref([])
|
|
|
+const tableData = ref([])
|
|
|
const designtable = ref([])
|
|
|
const tasktable = ref([
|
|
|
// {
|
|
@@ -2414,6 +2433,7 @@ const optimizerfalse = (val) => {
|
|
|
activeadf.value='代理优化器';
|
|
|
}else if(val == 'Python'){
|
|
|
dialog.value.Pythonshow = true;
|
|
|
+ initPython();
|
|
|
}
|
|
|
else {
|
|
|
dialog.value.optimizer = false;
|
|
@@ -2429,6 +2449,7 @@ const optimizerfalse = (val) => {
|
|
|
|
|
|
}
|
|
|
|
|
|
+// 优化器窗口初始化
|
|
|
const initoptimize = () => {
|
|
|
console.log('优化器chushihua');
|
|
|
const params1 = {
|
|
@@ -2466,6 +2487,34 @@ const initoptimize = () => {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+// Python窗口初始化
|
|
|
+const initPython = () => {
|
|
|
+ console.log('Pythonchushihua');
|
|
|
+ const param = {
|
|
|
+ transCode:'MDO0036',
|
|
|
+ pid: pid.value,
|
|
|
+ }
|
|
|
+ request(param).then((res) => {
|
|
|
+ console.log('Python:', res);
|
|
|
+ }).catch((err) => {
|
|
|
+ console.error('请求失败:', err);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// Python确认按钮提交
|
|
|
+const pythonSubmit = () => {
|
|
|
+ console.log('Python确认按钮提交');
|
|
|
+ const param = {
|
|
|
+ transCode:'MDO0037',
|
|
|
+ pid: pid.value,
|
|
|
+ code: textarea1.value,
|
|
|
+ }
|
|
|
+ request(param).then((res) => {
|
|
|
+ console.log('Python确认按钮提交:', res);
|
|
|
+ }).catch((err) => {
|
|
|
+ console.error('请求失败:', err);
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
// 模块选择
|
|
|
const clickgeometry = (e, index, key, name) => {
|
|
@@ -2474,6 +2523,8 @@ const clickgeometry = (e, index, key, name) => {
|
|
|
tabactive.value = name;
|
|
|
dialogbolen();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
const dialogbolen = () => {
|
|
|
switch (tabactive.value) {
|
|
|
case "新建任务":
|
|
@@ -2739,7 +2790,7 @@ const modelgroup=()=>{
|
|
|
}
|
|
|
//新增
|
|
|
const onAddItem = () => {
|
|
|
- let tablevalnum = Number(tableval.value)
|
|
|
+ let tablevalnum = Number(tableval.value) > 1 ? Number(tableval.value) : 1
|
|
|
|
|
|
if (activeIndex2.value == 0) {
|
|
|
for (let i = 0; i < tablevalnum; i++) {
|
|
@@ -2757,7 +2808,9 @@ const onAddItem = () => {
|
|
|
tableData.value.push({
|
|
|
name: `g${i + 1}`,
|
|
|
con: -1,
|
|
|
- reference: ''
|
|
|
+ reference: null,
|
|
|
+ upper: 0,
|
|
|
+ lower: 0,
|
|
|
|
|
|
})
|
|
|
}
|
|
@@ -2769,6 +2822,7 @@ const onAddItem = () => {
|
|
|
weight: 0,
|
|
|
scaling: 0,
|
|
|
factor: 0,
|
|
|
+ reference: null,
|
|
|
remark: '',
|
|
|
})
|
|
|
|
|
@@ -2832,17 +2886,17 @@ const getissue = () => {
|
|
|
item.lower = Number(item.lower); // 将属性转换为数字
|
|
|
item.upper = Number(item.upper);
|
|
|
item.reference = Number(item.reference);
|
|
|
- //console.log(index);
|
|
|
+
|
|
|
|
|
|
treeitem.value = {
|
|
|
id: "1-1-1-" + index,
|
|
|
label: item.name,
|
|
|
img: f21,
|
|
|
}
|
|
|
- console.log(Sidebarref.value.datatree[0].children[0].children[0].children)
|
|
|
+ // console.log(Sidebarref.value.datatree[0].children[0].children[0].children)
|
|
|
childernarr.forEach((item,index)=>{
|
|
|
if(item.label=='设计变量'){
|
|
|
- let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem.value);
|
|
|
+ let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem.value);
|
|
|
}
|
|
|
})
|
|
|
return item;
|
|
@@ -2859,7 +2913,6 @@ const getissue = () => {
|
|
|
}
|
|
|
//约束条件查询
|
|
|
const getyueshu = () => {
|
|
|
-
|
|
|
const params = {
|
|
|
transCode: 'MDO0023',
|
|
|
pid: pid.value,
|
|
@@ -2879,35 +2932,44 @@ const getyueshu = () => {
|
|
|
if (!result) {
|
|
|
Sidebarref.value.datatree[0].children[0].children.push(item2);
|
|
|
}
|
|
|
- Sidebarref.value.datatree[0].children[0].children.forEach((item,index)=>{
|
|
|
- if(item.label=='约束条件'){
|
|
|
- Sidebarref.value.datatree[0].children[0].children[index].children=[];
|
|
|
+ Sidebarref.value.datatree[0].children[0].children.forEach((item, index) => {
|
|
|
+ if (item.label == '约束条件') {
|
|
|
+ Sidebarref.value.datatree[0].children[0].children[index].children = [];
|
|
|
}
|
|
|
- })
|
|
|
- let childernarr=Sidebarref.value.datatree[0].children[0].children
|
|
|
+ });
|
|
|
+
|
|
|
+ let childernarr = Sidebarref.value.datatree[0].children[0].children;
|
|
|
res.rows = res.rows.map((item, index) => {
|
|
|
- item.con = Number(item.con); // 将id属性转换为数字
|
|
|
+ // 确保转换为数字
|
|
|
+ item.con = Number(item.con);
|
|
|
item.reference = Number(item.reference);
|
|
|
+ item.upper = Number(item.upper); // 添加对 upper 的处理
|
|
|
+ item.lower = Number(item.lower); // 添加对 lower 的处理
|
|
|
+ console.log('item:', item);
|
|
|
+
|
|
|
treeitem2.value = {
|
|
|
id: "1-2-2-" + index,
|
|
|
label: item.name,
|
|
|
img: f21,
|
|
|
}
|
|
|
-
|
|
|
- childernarr.forEach((item,index)=>{
|
|
|
- if(item.label=='约束条件'){
|
|
|
- let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem2.value);
|
|
|
- }
|
|
|
- })
|
|
|
+
|
|
|
+ childernarr.forEach((item, index) => {
|
|
|
+ if (item.label == '约束条件') {
|
|
|
+ let addnode = Sidebarref.value.datatree[0].children[0].children[index].children.push(treeitem2.value);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
return item;
|
|
|
- })
|
|
|
- tableData.value = res.rows;
|
|
|
+ });
|
|
|
+
|
|
|
+ tableData.value = res.rows; // 更新表格数据
|
|
|
}
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
- ElMessage.error(err.returnMsg)
|
|
|
+ ElMessage.error(err.returnMsg);
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
//目标函数查询
|
|
|
const getmub = () => {
|
|
|
const params = {
|
|
@@ -2938,8 +3000,10 @@ const getmub = () => {
|
|
|
res.rows = res.rows.map((item, index) => {
|
|
|
item.optdir = Number(item.optdir); // 将id属性转换为数字
|
|
|
item.weight = Number(item.weight);
|
|
|
- item.scaling = Number(item.scaling);
|
|
|
- item.factor = Number(item.factor);
|
|
|
+ // item.scaling = Number(item.scaling);
|
|
|
+ // item.factor = Number(item.factor);
|
|
|
+ item.reference = Number(item.reference);
|
|
|
+
|
|
|
treeitem3.value = {
|
|
|
id: "1-3-3-" + index,
|
|
|
label: item.name,
|
|
@@ -2994,25 +3058,40 @@ const getarr = (name, arrays) => {
|
|
|
name += valuesWithSemiColons + ';';
|
|
|
|
|
|
}
|
|
|
- console.log(name)
|
|
|
+ console.log('conlist',name)
|
|
|
return name;
|
|
|
}
|
|
|
+
|
|
|
+const convertToStringArray = (result,Data) => {
|
|
|
+ result = Data.map(row => {
|
|
|
+ // 获取每一列的数据,排除带有 'id' 的字段
|
|
|
+ return Object.keys(row)
|
|
|
+ .filter(key => !key.includes('id')) // 过滤掉包含 'id' 的字段
|
|
|
+ .map(key => row[key] || ' ') // 获取每个字段的值,空值替换为 ' '
|
|
|
+ .join(','); // 将每个字段的值用逗号连接
|
|
|
+ }).join(';');
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
//保存优化问题
|
|
|
const onokItem = () => {
|
|
|
console.log(activeIndex2.value);
|
|
|
if (activeIndex2.value == 0) {
|
|
|
svarlist.value = '';
|
|
|
- svarlist.value = getarr(svarlist.value, designtable.value)
|
|
|
+ console.log("designtable:",designtable.value)
|
|
|
+ svarlist.value = convertToStringArray(svarlist.value, designtable.value)
|
|
|
devise();
|
|
|
|
|
|
} else if (activeIndex2.value == 1) {
|
|
|
conlist.value = '';
|
|
|
- conlist.value = getarr(conlist.value, tableData.value)
|
|
|
+ console.log("tabledata:",tableData.value)
|
|
|
+ conlist.value = convertToStringArray(conlist.value, tableData.value)
|
|
|
restrain();
|
|
|
|
|
|
} else if (activeIndex2.value == 2) {
|
|
|
funlist.value = '';
|
|
|
- funlist.value = getarr(funlist.value, eloptimize.value)
|
|
|
+ console.log("eloptimize:",eloptimize.value)
|
|
|
+ funlist.value = convertToStringArray(funlist.value, eloptimize.value)
|
|
|
funlistaa();
|
|
|
|
|
|
}
|
|
@@ -3056,7 +3135,6 @@ const restrain = () => {
|
|
|
ElMessage.error(err.returnMsg)
|
|
|
})
|
|
|
}
|
|
|
-//进度条percentage
|
|
|
//优化目标接口
|
|
|
const funlistaa = () => {
|
|
|
const params = {
|
|
@@ -3295,7 +3373,8 @@ const logsget = () => {
|
|
|
}
|
|
|
request(params)
|
|
|
.then((res) => {
|
|
|
- logs.value = res.logs;
|
|
|
+ // 去除空行
|
|
|
+ logs.value = res.logs.split('\n').filter(line => line.trim() !== '').join('\n');
|
|
|
const results = extractBracesContent(logs.value);
|
|
|
for (let i = 0; i < results.length; i++) {
|
|
|
arrobj.value.push(results[i]);
|
|
@@ -3396,8 +3475,9 @@ const websocketonmessage = (res) => {
|
|
|
|
|
|
}
|
|
|
if (res.data.indexOf('msg=heartChec') == -1) {
|
|
|
-
|
|
|
- logs.value = logs.value + '"\n"' + res.data;
|
|
|
+ // 去除空行
|
|
|
+ const cleanedLog = res.data.split('\n').filter(line => line.trim() !== '').join('\n');
|
|
|
+ logs.value = logs.value + '\n' + cleanedLog;
|
|
|
let textarea = document.getElementById("textarea_id");
|
|
|
textarea.scrollTop = textarea.scrollHeight;
|
|
|
}
|