generateExportConfig2() {
this.store.getExportObjectivesColumns(this.periodStore.snapshot.active.periodId, 'assignee-objective-list').subscribe(() => {
this.columnsStore
.select(state => {
return state.columns;
})
.pipe(
tap(columnsData => {
let columnsKeys = [];
columnsData.forEach(item => {
columnsKeys.push(item.property_key);
});
this.exportConfig = {
title: '选择导出字段',
propertiesResolve: this.store
.getExportObjectivesColumns(this.periodStore.snapshot.active.periodId, 'assignee-objective-list')
.pipe(
map(data => {
const dataFormat = data.map(item => {
if (['number', 'name'].includes(item.key)) {
return { ...item, export_required: Is.yes };
}
return item;
});
return {
fields: [...dataFormat],
selectedKeys: ['number', ...columnsKeys],
customSelectedKeys: ['number', 'name', 'assignee', 'state', 'rate', 'due_at', 'weight', 'score']
};
})
),
showNameKey: '',
exportUrl: `${API_PREFIX}/periods/${this.periodStore.snapshot.active.periodId}/assignee-objective-list/export`,
exportUrlParams: {
view: {
period_id: this.periodStore.snapshot.active.periodId,
uid: this.periodStore.snapshot.active.followerId,
ids: this.goalsData.map(item => item._id)
}
},
propertyKey: 'property_keys',
exportRequestMethod: 'post'
};
})
)
.subscribe();
});
}
改为
generateExportConfig() {
this.store
.getExportObjectivesColumns(this.periodStore.snapshot.active.periodId, 'assignee-objective-list')
.pipe(
switchMap((data) =>
this.columnsStore.select(state => state.columns).pipe(
map(columnsData => {
const columnsKeys = columnsData.map(item => item.property_key);
const dataFormat = data.map(item => {
if (['number', 'name'].includes(item.key)) {
return {...item, export_required: Is.yes};
}
return item;
});
return {
title: '选择导出字段',
propertiesResolve: of({
fields: [...dataFormat],
selectedKeys: ['number', ...columnsKeys],
customSelectedKeys: ['number', 'name', 'assignee', 'state', 'rate', 'due_at', 'weight', 'score']
}),
showNameKey: '',
exportUrl: `${API_PREFIX}/periods/${this.periodStore.snapshot.active.periodId}/assignee-objective-list/export`,
exportUrlParams: {
view: {
period_id: this.periodStore.snapshot.active.periodId,
uid: this.periodStore.snapshot.active.followerId,
ids: this.goalsData.map(item => item._id)
}
},
propertyKey: 'property_keys',
exportRequestMethod: 'post'
};
})
)
)
)
.subscribe(config => {
this.exportConfig = config;
});
}