feat: 增强上下文菜单操作反馈,添加操作结果提示消息和操作名称映射功能
This commit is contained in:
parent
1dbb3888d5
commit
fe1ef44e9d
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user