|
@@ -5,7 +5,7 @@
|
|
|
* @Author: xinyan
|
|
|
*/
|
|
|
import { computed, onMounted, reactive, ref, toRefs, watch } from 'vue';
|
|
|
-import { getAdGroupList, getRelationCampaign } from '/@/views/efTools/automation/api';
|
|
|
+import { getAdGroupList, getRelationCampaign, updateAdCampaign } from '/@/views/efTools/automation/api';
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
import { useShopInfo } from '/@/stores/shopInfo';
|
|
|
import { ElMessage } from 'element-plus';
|
|
@@ -26,14 +26,13 @@ const props = defineProps({
|
|
|
required: true,
|
|
|
},
|
|
|
});
|
|
|
-const emits = defineEmits(['update:modelValue']);
|
|
|
+const emits = defineEmits(['update:modelValue', 'confirmSuccess']);
|
|
|
const shopInfo = useShopInfo();
|
|
|
const { profile } = storeToRefs(shopInfo);
|
|
|
const { templateId } = toRefs(props);
|
|
|
-// const { activeModel } = toRefs(props);
|
|
|
-const activeModel = ref('specified');
|
|
|
+const { activeModel } = toRefs(props);
|
|
|
|
|
|
-const dialogVisible = ref(true);
|
|
|
+const dialogVisible = ref(false);
|
|
|
const targetRuleDialogVisible = ref(false);
|
|
|
|
|
|
// 定向规则
|
|
@@ -190,6 +189,7 @@ function updateSelectedAds() {
|
|
|
campaignGroupInfo: ad.campaignGroupInfo.filter(group => group.isSelected),
|
|
|
page: currentPage.value
|
|
|
}));
|
|
|
+ console.log('selectedAds.value', selectedAds.value);
|
|
|
}
|
|
|
|
|
|
// 树形结构的表格选择变化
|
|
@@ -242,7 +242,9 @@ function handleSelectTarget(row) {
|
|
|
campaignType: parent.campaignType,
|
|
|
campaignId: parent.campaignId,
|
|
|
adGroupId: row.adGroupId,
|
|
|
- isSelected: row.isSelected || false, // 同步 isSelected 状态
|
|
|
+ isSelected: row.isSelected || false,
|
|
|
+ keywordInfo: row.keywordInfo || [],
|
|
|
+ campaignTargetInfo: row.campaignTargetInfo || [],
|
|
|
};
|
|
|
targetRuleDialogVisible.value = true;
|
|
|
}
|
|
@@ -320,32 +322,59 @@ function cancel() {
|
|
|
dialogVisible.value = false;
|
|
|
}
|
|
|
|
|
|
-//TODO: 确认按钮-商品
|
|
|
+//TODO: 确认按钮-adGroupInfo
|
|
|
async function confirm() {
|
|
|
const campaignItems = selectedAds.value.map(ad => ({
|
|
|
campaignId: ad.campaignId,
|
|
|
campaignType: ad.campaignType
|
|
|
}));
|
|
|
- const adGroupInfo = [];
|
|
|
- const campaignTargetInfo = [
|
|
|
- { targetId: '492707808377423', adGroup_id: '448117369011017', bid: 0.45 },
|
|
|
- ];
|
|
|
|
|
|
- const campaignInfo = selectedTargetedRow.value.keywordInfo.map(keyword => ({
|
|
|
- keywordId: keyword.keywordId,
|
|
|
- adGroup_id: keyword.adGroup_id,
|
|
|
- bid: keyword.bid
|
|
|
- }));
|
|
|
+ let campaignKeywordInfo = [];
|
|
|
+ let campaignTargetInfo = [];
|
|
|
+
|
|
|
+ selectedAds.value.forEach(campaign => {
|
|
|
+ campaign.campaignGroupInfo.forEach(group => {
|
|
|
+ if (group.keywordInfo && group.keywordInfo.length > 0) {
|
|
|
+ campaignKeywordInfo = campaignKeywordInfo.concat(
|
|
|
+ group.keywordInfo.map(keyword => ({
|
|
|
+ keywordId: keyword.keywordId,
|
|
|
+ adGroup_id: group.adGroupId,
|
|
|
+ bid: keyword.bid
|
|
|
+ }))
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (group.campaignTargetInfo && group.campaignTargetInfo.length > 0) {
|
|
|
+ campaignTargetInfo = campaignTargetInfo.concat(
|
|
|
+ group.campaignTargetInfo.map(target => ({
|
|
|
+ targetId: target.targetId,
|
|
|
+ adGroup_id: group.adGroupId,
|
|
|
+ bid: target.bid
|
|
|
+ }))
|
|
|
+ );
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
|
|
|
const requestData = {
|
|
|
profileId: profile.value.profile_id,
|
|
|
templateId: templateId.value,
|
|
|
- campaignItems,
|
|
|
- adGroupInfo,
|
|
|
+ campaignItems: campaignItems,
|
|
|
+ adGroupInfo: [],
|
|
|
campaignTargetInfo,
|
|
|
- campaignInfo
|
|
|
+ campaignKeywordInfo
|
|
|
};
|
|
|
- console.log('requestData', requestData);
|
|
|
+ console.log('requestData',requestData);
|
|
|
+ try {
|
|
|
+ const response = await updateAdCampaign(requestData);
|
|
|
+ if (response.code === 2000) {
|
|
|
+ dialogVisible.value = false;
|
|
|
+ emits('confirmSuccess');
|
|
|
+ ElMessage({ message: '创建成功', type: 'success', });
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('API error:', error);
|
|
|
+ ElMessage({ message: '创建失败', type: 'error', });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 获取广告组下拉框
|