fix: 取消节点style.hover.stroke

This commit is contained in:
zhanghao 2026-07-14 09:04:31 +08:00
parent 0ceb7cc233
commit c53faef9fe
21 changed files with 111 additions and 43 deletions

View File

@ -7,9 +7,10 @@ VITE_APP_ENV = 'development'
# 招商车研物联网平台/开发环境 # 招商车研物联网平台/开发环境
VITE_APP_BASE_API = '/dev-api' VITE_APP_BASE_API = '/dev-api'
VITE_API_URL = http://192.168.1.101:13080 VITE_API_URL = http://192.168.1.222:13080
VITE_WS_URL = ws://192.168.1.101:13080/ws VITE_WS_URL = ws://192.168.1.222:13080/ws
# explanation # explanation
VITE_INSPECTION_TYPE = "inspection" VITE_INSPECTION_TYPE = "inspection"
VITE_INSPECTION_ALM_DEVICEID = "huayan_arm" VITE_INSPECTION_ARM_DEVICEID = "huayan_arm"
VITE_INSPECTION_AGV_DEVICEID = "huayan_arm"

View File

@ -59,14 +59,14 @@ defineExpose({ confirmSave })
// / // /
const handleSaveSuccess = () => { const handleSaveSuccess = () => {
emitter.emit('setProperties', { id: props.data.id }) emitter.emit('setProperties', { id: props.data.id })
emitter.emit("throwAnError", { id: props.data.id, hasError: false }); emitter.emit("throwAnError", { id: props.data.id, hasError: false, type: props.data.type });
// //
emits('close') emits('close')
} }
const handleSaveError = () => { const handleSaveError = () => {
emitter.emit('setProperties', { id: props.data.id }) emitter.emit('setProperties', { id: props.data.id })
emitter.emit("throwAnError", { id: props.data.id, hasError: true }); emitter.emit("throwAnError", { id: props.data.id, hasError: true, type: props.data.type });
emits('close') emits('close')
} }

View File

@ -542,8 +542,8 @@ const initFlow = () => {
keys: ["backspace", "delete"], // keys: ["backspace", "delete"], //
callback: () => { callback: () => {
const activeElem = document.activeElement; const activeElem = document.activeElement;
if (activeElem.tagName === "INPUT" || activeElem.tagName === "TEXTAREA") { if (["INPUT", "TEXTAREA"].includes(activeElem.tagName)) {
return; // return false
} }
const { nodes, edges } = lf.getSelectElements(); const { nodes, edges } = lf.getSelectElements();
@ -555,7 +555,7 @@ const initFlow = () => {
if (hasProtectedNode) { if (hasProtectedNode) {
lf.selectElementById(null); // lf.selectElementById(null); //
return; // return false; //
} }
// //
@ -571,7 +571,7 @@ const initFlow = () => {
// //
lf.deleteEdgeByNodeId(node.id); lf.deleteEdgeByNodeId(node.id);
}); });
return; return false;
} }
if (nodes.length === 0 && edges.length > 0) { if (nodes.length === 0 && edges.length > 0) {
edges.forEach((node) => { edges.forEach((node) => {
@ -584,12 +584,12 @@ const initFlow = () => {
{ {
keys: ["ctrl+z"], // keys: ["ctrl+z"], //
callback: () => { callback: () => {
return false; return true;
}, },
}, },
{ {
keys: ["ctrl+shift+z"], keys: ["ctrl+shift+z"],
callback: () => false, callback: () => true,
}, },
], ],
}, },
@ -789,8 +789,23 @@ onMounted(() => {
emitter.on("throwAnError", (data) => { emitter.on("throwAnError", (data) => {
// //
const { id, hasError } = data; const { id, hasError, type } = data;
const element = document.getElementsByClassName(`node__container ${id}`)[0].parentElement; let element
if (type === 'loop') {
const tt = document.getElementsByClassName(`group__container ${id}`)[0];
if (tt?.parentElement) {
element = tt.parentElement;
} else {
element = tt
}
} else {
const tt = document.getElementsByClassName(`node__container ${id}`)[0]
if (tt?.parentElement) {
element = tt.parentElement;
} else {
element = tt
}
}
if (hasError) { if (hasError) {
if (!nodeErrorList.value.includes(id)) { if (!nodeErrorList.value.includes(id)) {
nodeErrorList.value.push(id); nodeErrorList.value.push(id);
@ -889,10 +904,12 @@ onUnmounted(() => {
.node__container { .node__container {
border-color: #8dc99d; border-color: #8dc99d;
// pointer-events: none;
} }
.group__container { .group__container {
border-color: #8dc99d; border-color: #8dc99d;
// pointer-events: none;
} }
} }
} }

View File

@ -181,7 +181,7 @@ class EndNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -198,7 +198,7 @@ class ServiceNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -180,7 +180,7 @@ class StartNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = 'none'; style.stroke = 'none';
style.hover.stroke = 'none'; // style.hover.stroke = 'none';
return style; return style;
} }
} }

View File

@ -198,7 +198,7 @@ class CodeNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -204,7 +204,7 @@ class CurrentLoopNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -198,7 +198,7 @@ class HttpNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -45,7 +45,6 @@ class loopBodyModel extends GroupNodeModel {
// 计算子节点的包围盒(包含所有子节点的最小矩形区域) // 计算子节点的包围盒(包含所有子节点的最小矩形区域)
getChildrenBBox() { getChildrenBBox() {
const children = this.getAllValidChildren(this.children, this.graphModel) const children = this.getAllValidChildren(this.children, this.graphModel)
console.log('children', children)
// Array.from(this.children).forEach((id) => { // Array.from(this.children).forEach((id) => {
// const node = this.graphModel.getNodeModelById(id) // const node = this.graphModel.getNodeModelById(id)
// if (node) { // if (node) {
@ -109,14 +108,16 @@ class loopBodyModel extends GroupNodeModel {
return [ return [
{ {
x: x + width / 2 , x: x + width / 2 ,
y: y + height / 2, // y: y + height / 2,
y:y,
name: "right", name: "right",
id: "".concat(this.id, "_1"), id: "".concat(this.id, "_1"),
properties: { connectionType: "source" }, properties: { connectionType: "source" },
}, },
{ {
x: x - width / 2, x: x - width / 2,
y: y + height / 2, // y: y + height / 2,
y:y,
name: "left", name: "left",
id: "".concat(this.id, "_3"), id: "".concat(this.id, "_3"),
properties: { connectionType: "target" }, properties: { connectionType: "target" },
@ -241,6 +242,13 @@ class loopBodyView extends HtmlNode {
return svgH('g', {}, anchorShapes); return svgH('g', {}, anchorShapes);
} }
getOutlineStyle() {
const style = super.getOutlineStyle();
style.stroke = "none";
// style.hover.stroke = "none";
return style;
}
/** /**
* HTML 内容设置到指定的根元素上 * HTML 内容设置到指定的根元素上
* @param rootEl 根元素 * @param rootEl 根元素

View File

@ -87,13 +87,13 @@ onUnmounted(() => {
.group__container { .group__container {
width: 100%; width: 100%;
height: 100%; height: 100%;
min-height: 420px; // min-height: 420px;
background: #fff; background: #fff;
padding: 12px; padding: 12px;
cursor: default; cursor: default;
border-radius: 12px; border-radius: 12px;
border: 2px solid white; border: 2px solid white;
box-shadow: 0 5px 15px 0#00000008; // box-shadow: 0 5px 15px 0#00000008;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: relative; position: relative;

View File

@ -198,7 +198,7 @@ class SdAgentNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -198,7 +198,7 @@ class SleepNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -176,7 +176,7 @@ class StopLoopHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -171,7 +171,7 @@ class SubEndNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -170,7 +170,7 @@ class SubStartNodeHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -303,7 +303,7 @@ class SwitchHtmlModel extends HtmlNodeModel {
getOutlineStyle() { getOutlineStyle() {
const style = super.getOutlineStyle(); const style = super.getOutlineStyle();
style.stroke = "none"; style.stroke = "none";
style.hover.stroke = "none"; // style.hover.stroke = "none";
return style; return style;
} }
} }

View File

@ -110,17 +110,52 @@
<script setup> <script setup>
import LineChart from './components/LineChart.vue'; import LineChart from './components/LineChart.vue';
import BarChart from './components/BarChart.vue'; import BarChart from './components/BarChart.vue';
import * as echarts from 'echarts';
const lineSeries = ref([ const lineSeries = ref([
{ {
name: '执行任务数', name: '执行任务数',
type: 'line', type: 'line',
data: [120, 122, 101, 114, 90, 130, 110] color: '#3e95d8',
data: [120, 122, 101, 114, 90, 130, 110],
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#3e95d8'
},
{
offset: 0.2,
color: '#d1efed'
},
{
offset: 1,
color: '#fff'
}
])
},
}, },
{ {
name: '通过率', name: '通过率',
type: 'line', type: 'line',
data: [96.5, 97.3, 92.8, 95.8, 98.7, 96.8, 97.9] color: '#5becde',
data: [96.5, 97.3, 92.8, 95.8, 98.7, 96.8, 97.9],
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#5becde'
},
{
offset: 0.3,
color: '#d1efed'
},
{
offset: 1,
color: '#fff'
}
])
},
} }
]) ])
@ -129,6 +164,7 @@ const barSeries = ref([
name: '已完成', name: '已完成',
type: 'bar', type: 'bar',
stack: 'Ad', stack: 'Ad',
color: '#53dbca',
emphasis: { emphasis: {
focus: 'series' focus: 'series'
}, },
@ -138,6 +174,7 @@ const barSeries = ref([
name: '运行中', name: '运行中',
type: 'bar', type: 'bar',
stack: 'Ad', stack: 'Ad',
color: '#5becde',
emphasis: { emphasis: {
focus: 'series' focus: 'series'
}, },
@ -147,6 +184,7 @@ const barSeries = ref([
name: '暂停中', name: '暂停中',
type: 'bar', type: 'bar',
stack: 'Ad', stack: 'Ad',
color: '#d1efed',
emphasis: { emphasis: {
focus: 'series' focus: 'series'
}, },
@ -156,6 +194,7 @@ const barSeries = ref([
name: '异常', name: '异常',
type: 'bar', type: 'bar',
stack: 'Ad', stack: 'Ad',
color: '#3e95d8',
emphasis: { emphasis: {
focus: 'series' focus: 'series'
}, },
@ -206,6 +245,7 @@ const tableList = ref([])
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
background: #fff;
.title { .title {
font-size: 16px; font-size: 16px;
@ -219,6 +259,7 @@ const tableList = ref([])
.compare { .compare {
font-size: 14px; font-size: 14px;
color: #999;
} }
} }
} }
@ -283,15 +324,15 @@ const tableList = ref([])
} }
.urgent { .urgent {
background: red; background: #51dcbe;
} }
.important { .important {
background: yellow; background: #51dcb9;
} }
.ordinary { .ordinary {
background: blue; background: #4595dc;
} }
} }
} }

View File

@ -173,7 +173,7 @@ const speed = ref(1) // 速度百分比,范围 0.1 - 5
const getPose = async (robot) => { const getPose = async (robot) => {
try { try {
const res = await getPoseApi({ const res = await getPoseApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: robot.terminalId terminalId: robot.terminalId
}) })
if (res.code === 200) { if (res.code === 200) {
@ -240,7 +240,7 @@ const move = async (axis, direction) => {
} }
speedLApi({ speedLApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: props.robot.terminalId, terminalId: props.robot.terminalId,
duration: 60, duration: 60,
acceleration: speed.value + 0.1, acceleration: speed.value + 0.1,
@ -253,7 +253,7 @@ const move = async (axis, direction) => {
*/ */
const stop = async () => { const stop = async () => {
await stopMotionApi({ await stopMotionApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: props.robot.terminalId terminalId: props.robot.terminalId
}) })
} }

View File

@ -169,7 +169,7 @@ const handlerController = (value) => {
if (value === 2) { if (value === 2) {
// 使 // 使
torqueOnApi({ torqueOnApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: activeBotData.value.terminalId terminalId: activeBotData.value.terminalId
}) })
jointControls.value = urdfViewerRef.value.jointControls jointControls.value = urdfViewerRef.value.jointControls
@ -198,7 +198,7 @@ const jointNamsMap = {
const getJointState = async (robot) => { const getJointState = async (robot) => {
try { try {
const res = await getJointStateApi({ const res = await getJointStateApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: robot.terminalId terminalId: robot.terminalId
}) })
if (res.code === 200) { if (res.code === 200) {
@ -225,7 +225,7 @@ const updateJoint = async (jointName, _dir) => {
const index = jointControls.value.findIndex(joint => joint.name === jointName) const index = jointControls.value.findIndex(joint => joint.name === jointName)
velocities[index] = jointSpeed.value * (_dir === '+' ? 1 : -1) velocities[index] = jointSpeed.value * (_dir === '+' ? 1 : -1)
const res = await speedJApi({ const res = await speedJApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: activeBotData.value.terminalId, terminalId: activeBotData.value.terminalId,
acceleration: jointSpeed.value + 0.1, acceleration: jointSpeed.value + 0.1,
duration: 60, duration: 60,
@ -238,7 +238,7 @@ const updateJoint = async (jointName, _dir) => {
*/ */
const stop = async () => { const stop = async () => {
await stopMotionApi({ await stopMotionApi({
deviceId: import.meta.env.VITE_INSPECTION_ALM_DEVICEID, deviceId: import.meta.env.VITE_INSPECTION_ARM_DEVICEID,
terminalId: activeBotData.value.terminalId terminalId: activeBotData.value.terminalId
}) })
} }

View File

@ -130,7 +130,8 @@ const getRunningTask = async () => {
taskType = '2' taskType = '2'
} }
const res = await getRunTaskList({ const res = await getRunTaskList({
taskType taskType,
statusList: ['1', '3']
}) })
if (res.code === 200) { if (res.code === 200) {
taskList.value = res.rows taskList.value = res.rows