From 22c919b848d23a928aec08f7e539057d335b6332 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Wed, 9 Jul 2025 16:10:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E8=84=9A=E6=9C=AC=20/=20?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E8=84=9A=E6=9C=AC=20/=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=20/=20=E6=8B=89=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/script/LCCScript.ts | 70 +++++++++----------------------- src/editor/widgets/script/ScriptView.vue | 35 +++++++++++----- src/types/LCC.d.ts | 11 +++-- 3 files changed, 50 insertions(+), 66 deletions(-) diff --git a/src/core/script/LCCScript.ts b/src/core/script/LCCScript.ts index 6d3453f..bc53c17 100644 --- a/src/core/script/LCCScript.ts +++ b/src/core/script/LCCScript.ts @@ -92,17 +92,34 @@ export default class LCCScript implements LCC { }) } - saveAndSyncScripts(scriptList: { name: string; content: string }[]): Promise> { + /** + * 保存当前项目所有脚本 + * @param scriptList + */ + saveScripts(scriptList: { name: string, content: string }[]): Promise>{ if (!worldModel.state.project_uuid) { - return Promise.reject(new Error('Project UUID or Environment ID is not set.')) + return Promise.reject(new Error('Project UUID is not set.')) } - return Request.request.post('/api/workbench/LccController@saveAndSyncScripts', { + return Request.request.post('/api/workbench/LccController@saveScripts', { projectUUID: worldModel.state.project_uuid, scriptList: scriptList }) } + /** + * 同步当前项目所有脚本 + */ + syncScripts(): Promise>{ + if (!worldModel.state.project_uuid) { + return Promise.reject(new Error('Project UUID is not set.')) + } + + return Request.request.post('/api/workbench/LccController@syncScripts', { + projectUUID: worldModel.state.project_uuid, + }) + } + queryDeviceInfoList(): Promise> { return Request.request.post('/api/workbench/LccController@queryDeviceInfoList', { projectUUID: worldModel.state.project_uuid, @@ -110,53 +127,6 @@ export default class LCCScript implements LCC { }) } - // // 从后台读取所有车 - // async loadExecutor(): Promise { - // const res = await Request.request.post('/api/workbench/LccController@loadExecutor', { - // projectUuid: worldModel.state.project_uuid, - // envId: worldModel.state.runState.currentEnvId - // }) - // - // for (const row of res.data) { - // const executor_id = row.executor_id - // const payload = JSON.parse(row.virtual_executor_payload) - // // 车所在的标记位置,及方向 11_4:RIGHT - // const [wayPointId, direction] = _.split(row.virtual_location_at, ':') - // - // if (window['Model']) { - // const point = Model.find(wayPointId) - // if (!point) { - // console.error(`Waypoint with ID ${wayPointId} not found for executor ${executor_id}.`) - // continue - // } - // - // const item = _.cloneDeep(payload) - // item.id = executor_id - // item.tf[0] = _.cloneDeep(point.tf[0]) - // switch (_.toLower(direction)) { - // // right=0/left=180/up=90/down=-90 - // case 'right': - // item.tf[1][1] = 0 // 右侧 - // break - // case 'left': - // item.tf[1][1] = 180 // 左侧 - // break - // case 'down': - // item.tf[1][1] = -90 // 下方 - // break - // case 'up': - // item.tf[1][1] = 90 // 上方 - // break - // } - // if (row.virtual_floor_code === worldModel.state.catalogCode) { - // Model.createExecutor(item) - // } - // } - // } - // - // return res.data - // } - /** * 脚本打印日志 * @param from 系统(Worker)来源 diff --git a/src/editor/widgets/script/ScriptView.vue b/src/editor/widgets/script/ScriptView.vue index 70492f7..79e2c4e 100644 --- a/src/editor/widgets/script/ScriptView.vue +++ b/src/editor/widgets/script/ScriptView.vue @@ -5,13 +5,17 @@ 脚本编辑 - 保存并同步 + + 保存 + + 拉取 + 添加 - 删除 @@ -141,12 +145,22 @@ export default { this.loadFromLocal() }, methods: { - async saveAndSyncScripts() { + async saveScripts() { + system.showLoading() + try { + await LCC.saveScripts(this.scriptList) + system.msg('脚本已保存') + + } finally { + system.clearLoading() + } + }, + async syncScripts() { // 保存当前脚本索引 const originName = this.scriptList[this.scriptIndex]?.name system.showLoading() try { - const serverResponse = await LCC.saveAndSyncScripts(this.scriptList) + const serverResponse = await LCC.syncScripts() if (serverResponse.success) { this.scriptList = serverResponse.data || [] @@ -162,7 +176,7 @@ export default { this.scriptIndex = 0 } - system.msg('脚本已保存并同步到服务器') + system.msg('脚本已同步') } finally { system.clearLoading() @@ -180,15 +194,16 @@ export default { }) // this.viewport.modelManager.runScript(script) }, - localRun(script) { - this.viewport.modelManager.executestring(script.content) - }, + /** * 停止脚本 * @type {(script: CustomScript) => void} */ stopScript(script) { - this.viewport.modelManager.stopScript(script) + scriptRunner.stopScript(script) + }, + localRun(script) { + this.viewport.modelManager.executestring(script.content) }, setCodeDropper() { CodeDropper.start(this.viewport, (item) => { diff --git a/src/types/LCC.d.ts b/src/types/LCC.d.ts index af23173..1340875 100644 --- a/src/types/LCC.d.ts +++ b/src/types/LCC.d.ts @@ -39,16 +39,15 @@ declare interface LCC { deleteInv(lpn: string): Promise> /** - * 获取所有车,并放到 Model 上 + * 保存当前项目所有脚本 + * @param scriptList */ - - // loadExecutor(): Promise + saveScripts(scriptList: { name: string, content: string }[]): Promise> /** - * 保存并同步当前项目所有脚本 - * @param scriptList + * 同步当前项目所有脚本 */ - saveAndSyncScripts(scriptList: { name: string, content: string }[]): Promise> + syncScripts(): Promise> /** * 获取所有设备状态 From 1222f46319aa9764c48ed500edc6c0b2f6d73d99 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Wed, 9 Jul 2025 16:42:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=BE=E5=A4=87=20=E4=B8=8A=E7=BA=BF=20?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/widgets/monitor/MonitorView.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/editor/widgets/monitor/MonitorView.vue b/src/editor/widgets/monitor/MonitorView.vue index 869be24..fa70c88 100644 --- a/src/editor/widgets/monitor/MonitorView.vue +++ b/src/editor/widgets/monitor/MonitorView.vue @@ -27,10 +27,10 @@ 总数{{ total }}
- 上线{{ offline }} + 上线{{ online }}
- 下线{{ online }} + 下线{{ offline }}
空闲{{ idle }}