国家
This commit is contained in:
@@ -41,7 +41,9 @@
|
||||
:config="config"
|
||||
:wizardStartDate.sync="wizardStartDate"
|
||||
:selectedFieldIds.sync="selectedFieldIds"
|
||||
:selectedCountryIds.sync="selectedCountryIds"
|
||||
:availableFields="availableFields"
|
||||
:availableCountries="availableCountries"
|
||||
:fieldsLoading="fieldsLoading"
|
||||
:fieldsSaving="fieldsSaving"
|
||||
:currentJournalName="currentJournalName"
|
||||
@@ -52,6 +54,7 @@
|
||||
:title="$t('autoPromotion.title')"
|
||||
@open-template-selector="showTemplateDialog = true"
|
||||
@confirm-fields="savePromotionFieldsNow"
|
||||
@confirm-countries="savePromotionCountriesNow"
|
||||
@confirm="completeInitialization"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -210,7 +213,9 @@
|
||||
:config="config"
|
||||
:wizardStartDate.sync="wizardStartDate"
|
||||
:selectedFieldIds.sync="selectedFieldIds"
|
||||
:selectedCountryIds.sync="selectedCountryIds"
|
||||
:availableFields="availableFields"
|
||||
:availableCountries="availableCountries"
|
||||
:fieldsLoading="fieldsLoading"
|
||||
:fieldsSaving="fieldsSaving"
|
||||
:currentJournalName="currentJournalName"
|
||||
@@ -221,6 +226,7 @@
|
||||
:title="$t('autoPromotion.title')"
|
||||
@open-template-selector="showTemplateDialog = true"
|
||||
@confirm-fields="savePromotionFieldsNow"
|
||||
@confirm-countries="savePromotionCountriesNow"
|
||||
@cancel="showWizardDialog = false"
|
||||
@confirm="completeInitialization"
|
||||
/>
|
||||
@@ -339,7 +345,9 @@ export default {
|
||||
templateDialogInitialTemplateId: '',
|
||||
togglingTaskId: '',
|
||||
selectedFieldIds: [],
|
||||
selectedCountryIds: [],
|
||||
availableFields: [],
|
||||
availableCountries: [],
|
||||
fieldsLoading: false,
|
||||
fieldsSaving: false,
|
||||
previewForm: {
|
||||
@@ -552,10 +560,32 @@ export default {
|
||||
if (values.length && Array.isArray(values[0])) return values[0];
|
||||
return null;
|
||||
},
|
||||
parseCountryIdsFromPromotionPayload(selectedPayload) {
|
||||
if (!selectedPayload || typeof selectedPayload !== 'object') return [];
|
||||
const raw =
|
||||
selectedPayload.country_fetch_ids != null
|
||||
? selectedPayload.country_fetch_ids
|
||||
: selectedPayload.country_ids != null
|
||||
? selectedPayload.country_ids
|
||||
: '';
|
||||
if (typeof raw === 'string' && raw.trim()) {
|
||||
return raw.split(',').map((s) => s.trim()).filter(Boolean).map(String);
|
||||
}
|
||||
return [];
|
||||
},
|
||||
journalPromotionFieldsPayload(journalId) {
|
||||
return {
|
||||
journal_id: String(journalId),
|
||||
fetch_ids: (this.selectedFieldIds || []).join(','),
|
||||
country_fetch_ids: (this.selectedCountryIds || []).join(',')
|
||||
};
|
||||
},
|
||||
async loadPromotionFields(journalId) {
|
||||
this.fieldsLoading = true;
|
||||
this.availableFields = [];
|
||||
this.availableCountries = [];
|
||||
this.selectedFieldIds = [];
|
||||
this.selectedCountryIds = [];
|
||||
try {
|
||||
const availableRes = await this.$api.post('api/email_client/getAvailableFields', { journal_id: String(journalId) });
|
||||
const availablePayload = (availableRes && availableRes.data) || availableRes || {};
|
||||
@@ -566,8 +596,10 @@ export default {
|
||||
const label = item.field || item.title || item.name || item.label || String(id);
|
||||
return { id: String(id), label };
|
||||
});
|
||||
this.availableCountries = this.availableFields.map((x) => ({ id: String(x.id), label: x.label }));
|
||||
} catch (e) {
|
||||
this.availableFields = [];
|
||||
this.availableCountries = [];
|
||||
}
|
||||
try {
|
||||
const selectedRes = await this.$api.post('api/email_client/getJournalPromotionFields', { journal_id: String(journalId) });
|
||||
@@ -580,8 +612,10 @@ export default {
|
||||
} else if (typeof selectedPayload.fetch_ids === 'string') {
|
||||
this.selectedFieldIds = selectedPayload.fetch_ids.split(',').map((s) => s.trim()).filter(Boolean);
|
||||
}
|
||||
this.selectedCountryIds = this.parseCountryIdsFromPromotionPayload(selectedPayload);
|
||||
} catch (e) {
|
||||
this.selectedFieldIds = [];
|
||||
this.selectedCountryIds = [];
|
||||
}
|
||||
this.fieldsLoading = false;
|
||||
},
|
||||
@@ -589,10 +623,10 @@ export default {
|
||||
if (!this.selectedJournalId) return;
|
||||
this.fieldsSaving = true;
|
||||
try {
|
||||
await this.$api.post('api/email_client/setJournalPromotionFields', {
|
||||
journal_id: String(this.selectedJournalId),
|
||||
fetch_ids: (this.selectedFieldIds || []).join(',')
|
||||
});
|
||||
await this.$api.post(
|
||||
'api/email_client/setJournalPromotionFields',
|
||||
this.journalPromotionFieldsPayload(this.selectedJournalId)
|
||||
);
|
||||
this.$message.success(this.$t('autoPromotion.fieldsSaved'));
|
||||
} catch (e) {
|
||||
this.$message.error(this.$t('autoPromotion.saveFailed'));
|
||||
@@ -600,6 +634,21 @@ export default {
|
||||
this.fieldsSaving = false;
|
||||
}
|
||||
},
|
||||
async savePromotionCountriesNow() {
|
||||
if (!this.selectedJournalId) return;
|
||||
this.fieldsSaving = true;
|
||||
try {
|
||||
await this.$api.post(
|
||||
'api/email_client/setJournalPromotionFields',
|
||||
this.journalPromotionFieldsPayload(this.selectedJournalId)
|
||||
);
|
||||
this.$message.success(this.$t('autoPromotion.countriesSaved'));
|
||||
} catch (e) {
|
||||
this.$message.error(this.$t('autoPromotion.saveFailed'));
|
||||
} finally {
|
||||
this.fieldsSaving = false;
|
||||
}
|
||||
},
|
||||
async openWizardDialog() {
|
||||
this.wizardStep = 0;
|
||||
if (this.config && this.config.start_date) {
|
||||
@@ -704,10 +753,10 @@ export default {
|
||||
this.showWizardDialog = false;
|
||||
this.fetchList();
|
||||
await this.$api.post(API.saveConfig, payload);
|
||||
await this.$api.post('api/email_client/setJournalPromotionFields', {
|
||||
journal_id: String(this.selectedJournalId || ''),
|
||||
fetch_ids: (this.selectedFieldIds || []).join(',')
|
||||
});
|
||||
await this.$api.post(
|
||||
'api/email_client/setJournalPromotionFields',
|
||||
this.journalPromotionFieldsPayload(this.selectedJournalId || '')
|
||||
);
|
||||
this.$message.success(this.$t('autoPromotionLogs.configUpdated'));
|
||||
} finally {
|
||||
this.saving = false;
|
||||
|
||||
Reference in New Issue
Block a user