feat: 增强上下文菜单操作反馈,添加操作结果提示消息和操作名称映射功能

This commit is contained in:
xudan 2025-09-11 14:38:52 +08:00
parent 1dbb3888d5
commit fe1ef44e9d
2 changed files with 68 additions and 26 deletions

View File

@ -51,6 +51,7 @@
</template>
<script setup lang="ts">
import { message } from 'ant-design-vue';
import { computed, defineAsyncComponent, ref } from 'vue';
import type { RobotInfo } from '../../apis/robot';
@ -132,10 +133,62 @@ const handleOpenChange = (open: boolean) => {
//
const handleActionComplete = (data: any) => {
console.log('菜单操作完成:', data);
//
if (data.success) {
const actionName = getActionDisplayName(data.action);
message.success(`${actionName}操作成功`);
} else {
const actionName = getActionDisplayName(data.action);
message.error(`${actionName}操作失败`);
}
emit('actionComplete', data);
//
};
/**
* 获取操作显示名称
* @param action 操作类型
* @returns 显示名称
*/
const getActionDisplayName = (action: string): string => {
const actionMap: Record<string, string> = {
//
'seize_control': '抢占控制权',
'enable_orders': '可接单',
'disable_orders': '不可接单',
'pause': '暂停',
'resume': '继续',
'go_charge': '前往充电',
'go_dock': '前往停靠',
'navigate': '路径导航',
'start': '启动',
'stop': '停止',
'reset': '重置',
'diagnose': '诊断',
'update': '更新',
'custom_image': '自定义图片',
//
'lock': '锁定',
'unlock': '解锁',
'disable': '禁用',
'enable': '启用',
'occupy': '占用',
'release': '释放',
'set_empty_tray': '设置空托盘',
'clear_empty_tray': '清除空托盘',
//
'refresh': '刷新',
'view_info': '查看信息',
'settings': '设置',
};
return actionMap[action] || action;
};
//
const handleCustomImage = (data: { robotInfo: RobotInfo }) => {
console.log('打开自定义图片设置:', data.robotInfo);

View File

@ -1,4 +1,3 @@
import { message } from '../utils/message';
import type { StorageLocationInfo } from './storageApi';
import { batchUpdateStorageLocationStatus } from './storageApi';
@ -20,8 +19,7 @@ export class StorageActionService {
const layerName = location.name;
if (!layerName) {
message.error(`库位 ${location.name} 缺少必要信息,无法执行操作`);
return;
throw new Error(`库位 ${location.name} 缺少必要信息,无法执行操作`);
}
// 准备请求参数
@ -39,22 +37,19 @@ export class StorageActionService {
// 调用API
const result = await batchUpdateStorageLocationStatus(requestParams);
// 处理结果
// 处理结果 - 不在这里显示提示由context-menu统一处理
if (result.data) {
const { failed_count } = result.data;
if (failed_count === 0) {
message.success(`库位 ${location.name} ${actionName}成功`);
} else {
message.error(`库位 ${location.name} ${actionName}失败`);
if (failed_count !== 0) {
// 失败,抛出错误让上层处理
throw new Error(`${actionName}操作失败`);
}
} else {
// 如果没有详细结果数据,显示简单成功消息
message.success(`库位 ${location.name} ${actionName}成功`);
}
} catch (error) {
console.error(`库位${actionName}失败:`, error);
message.error(`库位 ${location.name} ${actionName}失败`);
// 重新抛出错误,让上层处理提示
throw error;
}
}
@ -74,12 +69,11 @@ export class StorageActionService {
const validLocations = locations.filter(loc => loc.layer_name || loc.id || loc.name);
if (validLocations.length === 0) {
message.error('没有有效的库位可以操作');
return;
throw new Error('没有有效的库位可以操作');
}
if (validLocations.length !== locations.length) {
message.warning(`部分库位缺少必要信息,将跳过 ${locations.length - validLocations.length} 个库位`);
console.warn(`部分库位缺少必要信息,将跳过 ${locations.length - validLocations.length} 个库位`);
}
// 准备请求参数
@ -97,24 +91,19 @@ export class StorageActionService {
// 调用API
const result = await batchUpdateStorageLocationStatus(requestParams);
// 处理结果
// 处理结果 - 不在这里显示提示由context-menu统一处理
if (result.data) {
const { total_count, success_count, failed_count } = result.data;
if (failed_count === 0) {
message.success(`批量${actionName}完成:总计 ${total_count} 个库位,全部成功`);
} else if (success_count > 0) {
message.warning(`批量${actionName}完成:成功 ${success_count} 个,失败 ${failed_count}`);
} else {
message.error(`批量${actionName}失败:${failed_count} 个库位操作失败`);
if (failed_count !== 0) {
// 失败,抛出错误让上层处理
throw new Error(`批量${actionName}失败:${failed_count} 个库位操作失败`);
}
} else {
// 如果没有详细结果数据,显示简单成功消息
message.success(`批量${actionName}成功`);
}
} catch (error) {
console.error(`批量${actionName}失败:`, error);
message.error(`批量${actionName}失败`);
// 重新抛出错误,让上层处理提示
throw error;
}
}
}