Files
autoAiWorkSys/app/store/modules/delivery.js
张成 e17d5610f5 1
2025-12-22 16:26:59 +08:00

166 lines
6.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 投递配置状态管理
*/
export default {
namespaced: true,
state: {
deliveryStats: {
todayCount: 0,
weekCount: 0,
monthCount: 0,
totalCount: 0,
successCount: 0,
failedCount: 0,
pendingCount: 0,
interviewCount: 0,
successRate: 0,
interviewRate: 0
},
deliveryConfig: {
autoDelivery: false,
interval: 30,
minSalary: 15000,
maxSalary: 30000,
scrollPages: 3,
maxPerBatch: 10,
filterKeywords: '',
excludeKeywords: '',
startTime: '09:00',
endTime: '18:00',
workdaysOnly: true
}
},
mutations: {
SET_DELIVERY_STATS(state, stats) {
state.deliveryStats = { ...state.deliveryStats, ...stats };
},
SET_DELIVERY_CONFIG(state, config) {
state.deliveryConfig = { ...state.deliveryConfig, ...config };
},
UPDATE_DELIVERY_CONFIG(state, { key, value }) {
state.deliveryConfig[key] = value;
}
},
actions: {
updateDeliveryStats({ commit }, stats) {
commit('SET_DELIVERY_STATS', stats);
},
async loadDeliveryStats({ commit, rootState }) {
try {
const snCode = rootState.auth.snCode;
if (!snCode) {
console.warn('[Delivery Store] 没有 snCode无法加载统计数据');
return { success: false, error: '请先登录' };
}
// 动态导入 API
const applyRecordsAPI = (await import('../../api/apply_records.js')).default;
const result = await applyRecordsAPI.getStatistics(snCode);
// 后端返回格式:{ code: 0, data: {...} }
if (result && result.code === 0 && result.data) {
commit('SET_DELIVERY_STATS', result.data);
return { success: true };
} else {
const errorMsg = result?.message || '加载统计失败';
console.error('[Delivery Store] 加载统计失败:', result);
return { success: false, error: errorMsg };
}
} catch (error) {
console.error('[Delivery Store] 加载统计失败:', error);
return { success: false, error: error.message || '加载统计失败' };
}
},
updateDeliveryConfig({ commit }, { key, value }) {
commit('UPDATE_DELIVERY_CONFIG', { key, value });
},
setDeliveryConfig({ commit }, config) {
commit('SET_DELIVERY_CONFIG', config);
},
async saveDeliveryConfig({ state, rootState }) {
try {
const snCode = rootState.auth.snCode;
if (!snCode) {
return { success: false, error: '请先登录' };
}
// 将前端配置格式转换为后端格式
const deliverConfig = {
auto_delivery: state.deliveryConfig.autoDelivery || false,
interval: state.deliveryConfig.interval || 30,
min_salary: state.deliveryConfig.minSalary || 0,
max_salary: state.deliveryConfig.maxSalary || 0,
scroll_pages: state.deliveryConfig.scrollPages || 3,
max_per_batch: state.deliveryConfig.maxPerBatch || 10,
filter_keywords: state.deliveryConfig.filterKeywords || '',
exclude_keywords: state.deliveryConfig.excludeKeywords || '',
start_time: state.deliveryConfig.startTime || '09:00',
end_time: state.deliveryConfig.endTime || '18:00',
// 将布尔值转换为数字 1/0后端期望数字类型
workdays_only: state.deliveryConfig.workdaysOnly ? 1 : 0
};
// 动态导入 API
const deliveryConfigAPI = (await import('../../api/delivery_config.js')).default;
const result = await deliveryConfigAPI.saveConfig(snCode, deliverConfig);
// 后端返回格式:{ code: 0, message: 'success', data: {...} }
// 或者:{ success: true, ... }
if (result && (result.code === 0 || result.success === true)) {
return { success: true };
} else {
const errorMsg = result?.message || result?.error || '保存失败';
console.error('[Delivery Store] 保存配置失败:', result);
return { success: false, error: errorMsg };
}
} catch (error) {
console.error('[Delivery Store] 保存配置失败:', error);
return { success: false, error: error.message || '保存配置失败' };
}
},
async loadDeliveryConfig({ commit, rootState }) {
try {
const snCode = rootState.auth.snCode;
if (!snCode) {
// 如果没有登录,使用默认配置
return { success: true };
}
// 动态导入 API
const deliveryConfigAPI = (await import('../../api/delivery_config.js')).default;
const result = await deliveryConfigAPI.getConfig(snCode);
// 后端返回格式:{ code: 0, data: { deliver_config: {...} } }
if (result && result.data && result.data.deliver_config) {
const deliverConfig = result.data.deliver_config;
// 将后端格式转换为前端格式
const frontendConfig = {
autoDelivery: deliverConfig.auto_delivery || false,
interval: deliverConfig.interval || 30,
minSalary: deliverConfig.min_salary || 0,
maxSalary: deliverConfig.max_salary || 0,
scrollPages: deliverConfig.scroll_pages || 3,
maxPerBatch: deliverConfig.max_per_batch || 10,
filterKeywords: deliverConfig.filter_keywords || '',
excludeKeywords: deliverConfig.exclude_keywords || '',
startTime: deliverConfig.start_time || '09:00',
endTime: deliverConfig.end_time || '18:00',
// 将数字 1/0 转换为布尔值,前端使用布尔值
workdaysOnly: deliverConfig.workdays_only === 1 || deliverConfig.workdays_only === true
};
commit('SET_DELIVERY_CONFIG', frontendConfig);
return { success: true };
} else {
// 如果获取失败,使用默认配置
return { success: true };
}
} catch (error) {
console.error('[Delivery Store] 加载配置失败:', error);
// 如果加载失败,使用默认配置
return { success: true };
}
}
}
};