1
This commit is contained in:
81
app/store/modules/task.js
Normal file
81
app/store/modules/task.js
Normal file
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* 设备工作状态和任务统计管理
|
||||
*/
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: {
|
||||
// 设备工作状态
|
||||
displayText: null, // 服务端格式化好的显示文本
|
||||
nextExecuteTimeText: null, // 服务端格式化好的下次执行时间文本
|
||||
currentActivity: null, // 当前活动(任务或指令)
|
||||
pendingQueue: null, // 待执行队列信息
|
||||
deviceStatus: null, // 设备状态
|
||||
|
||||
// 任务统计
|
||||
taskStats: {
|
||||
todayCount: 0,
|
||||
weekCount: 0,
|
||||
monthCount: 0,
|
||||
totalCount: 0,
|
||||
completedCount: 0,
|
||||
runningCount: 0,
|
||||
pendingCount: 0,
|
||||
failedCount: 0,
|
||||
completionRate: 0
|
||||
}
|
||||
},
|
||||
mutations: {
|
||||
SET_DEVICE_WORK_STATUS(state, workStatus) {
|
||||
state.displayText = workStatus.displayText || null;
|
||||
state.nextExecuteTimeText = workStatus.pendingQueue?.nextExecuteTimeText || null;
|
||||
state.currentActivity = workStatus.currentActivity || null;
|
||||
state.pendingQueue = workStatus.pendingQueue || null;
|
||||
state.deviceStatus = workStatus.deviceStatus || null;
|
||||
|
||||
},
|
||||
CLEAR_DEVICE_WORK_STATUS(state) {
|
||||
state.displayText = null;
|
||||
state.nextExecuteTimeText = null;
|
||||
state.currentActivity = null;
|
||||
state.pendingQueue = null;
|
||||
state.deviceStatus = null;
|
||||
},
|
||||
SET_TASK_STATS(state, stats) {
|
||||
state.taskStats = { ...state.taskStats, ...stats };
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
updateDeviceWorkStatus({ commit }, workStatus) {
|
||||
commit('SET_DEVICE_WORK_STATUS', workStatus);
|
||||
},
|
||||
clearDeviceWorkStatus({ commit }) {
|
||||
commit('CLEAR_DEVICE_WORK_STATUS');
|
||||
},
|
||||
async loadTaskStats({ commit, rootState }) {
|
||||
try {
|
||||
const snCode = rootState.auth.snCode;
|
||||
if (!snCode) {
|
||||
console.warn('[Task Store] 没有 snCode,无法加载任务统计');
|
||||
return { success: false, error: '请先登录' };
|
||||
}
|
||||
|
||||
// 调用任务统计接口
|
||||
const result = await window.electronAPI.invoke('http:get', '/task/statistics', { sn_code: snCode });
|
||||
|
||||
// 后端返回格式:{ code: 0, data: {...} }
|
||||
if (result && result.code === 0 && result.data) {
|
||||
commit('SET_TASK_STATS', result.data);
|
||||
return { success: true };
|
||||
} else {
|
||||
const errorMsg = result?.message || '加载任务统计失败';
|
||||
console.error('[Task Store] 加载任务统计失败:', result);
|
||||
return { success: false, error: errorMsg };
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[Task Store] 加载任务统计失败:', error);
|
||||
return { success: false, error: error.message || '加载任务统计失败' };
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user