diff --git a/web/main.js b/web/main.js index 9eb5165..81ebfbf 100644 --- a/web/main.js +++ b/web/main.js @@ -328,13 +328,22 @@ const app = createApp({ * 加载分销商列表 */ const loadResellers = async () => { - const id = state.exportForm.creatorId; - if (!id) { + const { creatorId, creatorIds } = state.exportForm; + let ids = []; + + if (creatorId) { + ids = [Number(creatorId)]; + } else if (creatorIds?.length) { + ids = creatorIds.map(Number); + } + + if (!ids.length) { resellerOptions.value = []; return; } + try { - resellerOptions.value = await Api.fetchResellers([id]); + resellerOptions.value = await Api.fetchResellers(ids); } catch (error) { console.error('加载分销商列表失败:', error); resellerOptions.value = []; @@ -393,7 +402,10 @@ const app = createApp({ }; // ==================== 导出相关计算属性 ==================== - const hasCreators = Vue.computed(() => !!state.exportForm.creatorId); + const hasCreators = Vue.computed(() => { + const { creatorId, creatorIds } = state.exportForm; + return !!(creatorId || (creatorIds?.length > 0)); + }); const hasReseller = Vue.computed(() => !!state.exportForm.resellerId); const hasPlan = Vue.computed(() => !!state.exportForm.planId); const hasKeyBatch = Vue.computed(() => !!state.exportForm.keyBatchId); @@ -657,9 +669,15 @@ const app = createApp({ const userId = Api.getUserId(); if (userId) { const parts = String(userId).split(',').map(s => s.trim()).filter(Boolean); - state.exportForm.creatorIds = parts.length > 1 - ? parts.map(Number) - : [Number(userId)]; + if (parts.length === 1) { + // 单个用户 ID,同时设置 creatorId 和 creatorIds + state.exportForm.creatorId = Number(parts[0]); + state.exportForm.creatorIds = [Number(parts[0])]; + } else { + // 多个用户 ID,只设置 creatorIds + state.exportForm.creatorId = null; + state.exportForm.creatorIds = parts.map(Number); + } } } @@ -698,7 +716,7 @@ const app = createApp({ showMessage('估算中', 'info'); try { - const { tplId, dateRange, datasource, file_format, planId, resellerId, voucherChannelActivityId, creatorIds, creatorIdsRaw, ymtCreatorId, ymtMerchantId, ymtActivityId } = state.exportForm; + const { tplId, dateRange, datasource, file_format, planId, resellerId, voucherChannelActivityId, creatorId, creatorIds, creatorIdsRaw, ymtCreatorId, ymtMerchantId, ymtActivityId } = state.exportForm; const filters = {}; const typeValue = exportType.value; diff --git a/web/modules/state.js b/web/modules/state.js index 8b16bde..3427f30 100644 --- a/web/modules/state.js +++ b/web/modules/state.js @@ -47,6 +47,7 @@ const createExportFormState = () => ({ file_format: 'xlsx', dateRange: [], // 营销系统筛选条件 + creatorId: null, creatorIds: [], creatorIdsRaw: '', resellerId: null,