|
@@ -3,12 +3,19 @@
|
|
<tool-bar
|
|
<tool-bar
|
|
:text="['account_name', 'email', 'ad_name', 'campaign_name']"
|
|
:text="['account_name', 'email', 'ad_name', 'campaign_name']"
|
|
:label="['账户名', '邮箱', '计划名称', '广告组名称']"
|
|
:label="['账户名', '邮箱', '计划名称', '广告组名称']"
|
|
- v-model:loading="inSearching"
|
|
|
|
|
|
+ v-model:loading="inSearching"
|
|
@confirm="onSearch"
|
|
@confirm="onSearch"
|
|
>
|
|
>
|
|
<template #picker>
|
|
<template #picker>
|
|
- <p class="label" >日期</p>
|
|
|
|
- <a-range-picker v-model:value="picker" :ranges="{ 本周: [moment(), moment().endOf('week')], '本月': [moment(), moment().endOf('month')] }" format="YYYY/MM/DD" />
|
|
|
|
|
|
+ <p class="label">日期</p>
|
|
|
|
+ <a-range-picker
|
|
|
|
+ v-model:value="picker"
|
|
|
|
+ :ranges="{
|
|
|
|
+ 本周: [moment(), moment().endOf('week')],
|
|
|
|
+ 本月: [moment(), moment().endOf('month')],
|
|
|
|
+ }"
|
|
|
|
+ format="YYYY/MM/DD"
|
|
|
|
+ />
|
|
</template>
|
|
</template>
|
|
<!-- <div class="tool-bar-item">
|
|
<!-- <div class="tool-bar-item">
|
|
<p class="label">计划状态</p>
|
|
<p class="label">计划状态</p>
|
|
@@ -24,28 +31,57 @@
|
|
:loading="loading.value"
|
|
:loading="loading.value"
|
|
@change="handleTableChange"
|
|
@change="handleTableChange"
|
|
rowKey="id"
|
|
rowKey="id"
|
|
- :scroll="{ x: 2500 }"
|
|
|
|
- ></a-table>
|
|
|
|
|
|
+ :scroll="{ x: 1500 }"
|
|
|
|
+ >
|
|
|
|
+ <template #switch="{ text, record }">
|
|
|
|
+ <a-switch v-model:checked="record.enable" @change="switchMethod(record)" />
|
|
|
|
+ </template>
|
|
|
|
+ <template #external_url="{ text, record }">
|
|
|
|
+ <p @click="onGo(record)"><a>前往落地页链接</a></p>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <template #cpa_bid="{ text, record }">
|
|
|
|
+ <editable-cell
|
|
|
|
+ :text="text"
|
|
|
|
+ @change="(val) => onCellChange(record, 'cpa_bid', val)"
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <template #budget="{ text, record }">
|
|
|
|
+ <editable-cell
|
|
|
|
+ :text="text"
|
|
|
|
+ @change="(val) => onCellChange(record, 'budget', val)"
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+ </a-table>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
<script lang="ts">
|
|
-import { defineComponent, reactive, toRefs, ref ,unref} from "vue";
|
|
|
|
-import moment from 'moment';
|
|
|
|
|
|
+import { defineComponent, reactive, toRefs, ref, unref } from "vue";
|
|
|
|
+import moment from "moment";
|
|
import ToolBar from "@/components/tool-bar/index.vue";
|
|
import ToolBar from "@/components/tool-bar/index.vue";
|
|
|
|
+import EditableCell from "@/components/edit-cell/index.vue";
|
|
import usePagination from "@/hooks/usePagination";
|
|
import usePagination from "@/hooks/usePagination";
|
|
import {
|
|
import {
|
|
TableColumnOfPutAdPlan,
|
|
TableColumnOfPutAdPlan,
|
|
ALLCloumnList,
|
|
ALLCloumnList,
|
|
} from "../_pageOptions/table-put";
|
|
} from "../_pageOptions/table-put";
|
|
|
|
|
|
-import { getADPlanlist, getCustomColumn } from "@/api";
|
|
|
|
|
|
+import {
|
|
|
|
+ getADPlanlist,
|
|
|
|
+ getCustomColumn,
|
|
|
|
+ adChangeMoney,
|
|
|
|
+ adChangeCrem,
|
|
|
|
+ statusChange
|
|
|
|
+} from "@/api";
|
|
|
|
|
|
import { ADPlanItem, PageOptions } from "@/types/api";
|
|
import { ADPlanItem, PageOptions } from "@/types/api";
|
|
|
|
|
|
const PutAdPlan = defineComponent({
|
|
const PutAdPlan = defineComponent({
|
|
components: {
|
|
components: {
|
|
ToolBar,
|
|
ToolBar,
|
|
|
|
+ EditableCell,
|
|
},
|
|
},
|
|
setup() {
|
|
setup() {
|
|
let { loading, meta, tablePageOptions } = usePagination();
|
|
let { loading, meta, tablePageOptions } = usePagination();
|
|
@@ -54,24 +90,18 @@ const PutAdPlan = defineComponent({
|
|
list: ref<ADPlanItem[]>([]),
|
|
list: ref<ADPlanItem[]>([]),
|
|
inSearching: false,
|
|
inSearching: false,
|
|
loading,
|
|
loading,
|
|
- picker:[],
|
|
|
|
|
|
+ picker: [],
|
|
tablePageOptions,
|
|
tablePageOptions,
|
|
columns: TableColumnOfPutAdPlan,
|
|
columns: TableColumnOfPutAdPlan,
|
|
});
|
|
});
|
|
|
|
|
|
const onSearch = async (fields: Record<string, string>) => {
|
|
const onSearch = async (fields: Record<string, string>) => {
|
|
try {
|
|
try {
|
|
- const {
|
|
|
|
- email,
|
|
|
|
- account_name,
|
|
|
|
- ad_name,
|
|
|
|
- status,
|
|
|
|
- campaign_name,
|
|
|
|
- } = fields;
|
|
|
|
- const {picker} = state;
|
|
|
|
- let [begin_dates,end_dates] = picker;
|
|
|
|
- let begin_date = moment(begin_dates).format('YYYY-MM-DD');
|
|
|
|
- let end_date = moment(end_dates).format('YYYY-MM-DD');
|
|
|
|
|
|
+ const { email, account_name, ad_name, status, campaign_name } = fields;
|
|
|
|
+ const { picker } = state;
|
|
|
|
+ let [begin_dates, end_dates] = picker;
|
|
|
|
+ let begin_date = moment(begin_dates).format("YYYY-MM-DD");
|
|
|
|
+ let end_date = moment(end_dates).format("YYYY-MM-DD");
|
|
const { data } = await getADPlanlist({
|
|
const { data } = await getADPlanlist({
|
|
email,
|
|
email,
|
|
account_name,
|
|
account_name,
|
|
@@ -82,7 +112,11 @@ const PutAdPlan = defineComponent({
|
|
campaign_name,
|
|
campaign_name,
|
|
page: 1,
|
|
page: 1,
|
|
});
|
|
});
|
|
- state.list = data.list;
|
|
|
|
|
|
+ let newList: any[] = data.list.map((item) => {
|
|
|
|
+ item.enable = item.is_enable == 1 ? true : false;
|
|
|
|
+ return item;
|
|
|
|
+ });
|
|
|
|
+ state.list = newList;
|
|
meta.value = data.meta;
|
|
meta.value = data.meta;
|
|
} catch (e) {
|
|
} catch (e) {
|
|
console.log(e);
|
|
console.log(e);
|
|
@@ -91,16 +125,32 @@ const PutAdPlan = defineComponent({
|
|
}
|
|
}
|
|
};
|
|
};
|
|
getADPlanlist().then((res) => {
|
|
getADPlanlist().then((res) => {
|
|
- state.list = res.data.list;
|
|
|
|
|
|
+ let newList: any[] = res.data.list.map((item) => {
|
|
|
|
+ item.enable = item.is_enable == 1 ? true : false;
|
|
|
|
+ return item;
|
|
|
|
+ });
|
|
|
|
+ state.list = newList;
|
|
});
|
|
});
|
|
|
|
|
|
getCustomColumn().then((res) => {
|
|
getCustomColumn().then((res) => {
|
|
let columns: any[] = [];
|
|
let columns: any[] = [];
|
|
res.data.map((item: { desc: string; name: string }) => {
|
|
res.data.map((item: { desc: string; name: string }) => {
|
|
- let lolumnItem = {
|
|
|
|
|
|
+ let lolumnItem: {
|
|
|
|
+ title: string;
|
|
|
|
+ dataIndex: string;
|
|
|
|
+ slots?: any;
|
|
|
|
+ width?: string | number;
|
|
|
|
+ } = {
|
|
title: item.desc,
|
|
title: item.desc,
|
|
dataIndex: item.name,
|
|
dataIndex: item.name,
|
|
};
|
|
};
|
|
|
|
+ if (item.name == "external_url") {
|
|
|
|
+ lolumnItem.slots = { customRender: "external_url" };
|
|
|
|
+ }
|
|
|
|
+ if (item.name == "cpa_bid" || item.name == "budget") {
|
|
|
|
+ lolumnItem.slots = { customRender: item.name };
|
|
|
|
+ }
|
|
|
|
+
|
|
columns.push(lolumnItem);
|
|
columns.push(lolumnItem);
|
|
});
|
|
});
|
|
state.columns.push(...columns);
|
|
state.columns.push(...columns);
|
|
@@ -109,15 +159,51 @@ const PutAdPlan = defineComponent({
|
|
const handleTableChange = (pagination: PageOptions) => {
|
|
const handleTableChange = (pagination: PageOptions) => {
|
|
const { current, pageSize, total } = pagination;
|
|
const { current, pageSize, total } = pagination;
|
|
getADPlanlist({ page: current }).then((res) => {
|
|
getADPlanlist({ page: current }).then((res) => {
|
|
- state.list = res.data.list;
|
|
|
|
|
|
+ let newList: any[] = res.data.list.map((item) => {
|
|
|
|
+ item.enable = item.is_enable == 1 ? true : false;
|
|
|
|
+ return item;
|
|
|
|
+ });
|
|
|
|
+ state.list = newList;
|
|
meta.value = res.data.meta;
|
|
meta.value = res.data.meta;
|
|
});
|
|
});
|
|
};
|
|
};
|
|
- return { ...toRefs(state), handleTableChange,onSearch };
|
|
|
|
|
|
+ return { ...toRefs(state), handleTableChange, onSearch };
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ moment,
|
|
|
|
+ onGo(record: any) {
|
|
|
|
+ window.open(record.external_url);
|
|
|
|
+ },
|
|
|
|
+ onCellChange(record: any, dataIndex: string, value: string) {
|
|
|
|
+ console.log(record);
|
|
|
|
+ let ad_id = record.ad_id;
|
|
|
|
+ if (dataIndex == "cpa_bid") {
|
|
|
|
+ adChangeCrem({ ad_id, bid: value })
|
|
|
|
+ .then((res) => {
|
|
|
|
+ location.reload();
|
|
|
|
+ })
|
|
|
|
+ .catch((e) => {
|
|
|
|
+ location.reload();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (dataIndex == "budget") {
|
|
|
|
+ adChangeMoney({ ad_id, budget: value })
|
|
|
|
+ .then((res) => {
|
|
|
|
+ location.reload();
|
|
|
|
+ })
|
|
|
|
+ .catch((e) => {
|
|
|
|
+ location.reload();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ switchMethod(record:any){
|
|
|
|
+ console.log(record);
|
|
|
|
+ let ad_id = record.ad_id;
|
|
|
|
+ statusChange({ ad_id, status: record.enable?'enable':'disable' }).then(res=>{
|
|
|
|
+ this.$message.error('修改广告状态成功!');
|
|
|
|
+ })
|
|
|
|
+ }
|
|
},
|
|
},
|
|
- methods:{
|
|
|
|
- moment,
|
|
|
|
- }
|
|
|
|
});
|
|
});
|
|
|
|
|
|
export default PutAdPlan;
|
|
export default PutAdPlan;
|