xia 4 rokov pred
rodič
commit
75abc186b4

+ 12 - 1
src/api/index.ts

@@ -14,7 +14,8 @@ import {
   ADPlanItem,
   deliveryPlanItem,
   IPlatform,
-  adPlanLog
+  adPlanLog,
+  adPlanCount
 } from "@/types/api";
 
 /**
@@ -234,4 +235,14 @@ export const opertaroLog = (
  */
 export const getAddStatus = (): AxiosPromise<any> => {
   return axios("/ad/adStatus");
+};
+
+//广告计划字段
+export const getAdplanTable = (): AxiosPromise<Array<{desc:string;name:string}>> => {
+  return axios("/ad/adStatFields");
+};
+
+//广告计划字段
+export const getAdplanData = (ids:string): AxiosPromise<any> => {
+  return axios("/ad/adStats", { params: {ad_ids: ids} });
 };

+ 3 - 0
src/components/tool-bar/index.vue

@@ -65,6 +65,9 @@ const ToolBar = defineComponent({
       loading.value = true;
       emit("update:loading", loading.value);
       emit("confirm", fields.value);
+      setTimeout(()=>{
+        loading.value = false;
+      },2000)
     };
 
     return { fields, showPickerSlots, loading, onConfirm };

+ 13 - 0
src/types/api.d.ts

@@ -272,3 +272,16 @@ export interface adPlanLog {
   create_time: string;
   opt_ip: string;
 }
+
+
+export interface adPlanCount {
+  email:string;
+  account_name:string;
+  ad_id:string;
+  ad_name: string;
+  register_num: number;
+  recharge_amount: number;
+  pay_num: string;
+  second_pay_num: number;
+  [key:string]: string;
+}

+ 1 - 1
src/views/_pageOptions/table-put.ts

@@ -362,7 +362,7 @@ export const TableColumnOfPutAdPlan = [
 
 export const ALLCloumnList = [
   {
-    title: "计划名称",
+    title: "计划名称(或ID)",
     dataIndex: "ad_name",
     width: 150,
   },

+ 84 - 0
src/views/put/put-ad-count.vue

@@ -0,0 +1,84 @@
+<template>
+  <div class="page-wrap page-wrap-put-books">
+    <a-table
+      :columns="columns"
+      :data-source="list"
+      rowKey="id"
+      :pagination="false"
+      :scroll="{ x: 3000 }"
+    >
+    </a-table>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, reactive, toRefs, ref } from "vue";
+
+import ToolBar from "@/components/tool-bar/index.vue";
+import moment from "moment";
+
+import { getAdplanData, getAdplanTable } from "@/api";
+import usePagination from "@/hooks/usePagination";
+
+import { adPlanCount } from "@/types/api";
+import useApp from "@/hooks/useApp";
+
+const PutCount = defineComponent({
+  components: {
+    ToolBar,
+  },
+  props: {
+    ids: String,
+  },
+  setup(props: any) {
+    const { router } = useApp();
+    let list: any[] = [];
+
+    const state = reactive({
+      list: ref<adPlanCount[]>([]),
+      columns: list,
+      picker: [],
+      inSearching: false,
+    });
+
+    const onSearch = async (fields: Record<string, string>) => {
+      try {
+        const { picker } = state;
+        const { data } = await getAdplanData(props.ids);
+        state.list = data.list;
+      } catch (e) {
+      } finally {
+        state.inSearching = false;
+      }
+    };
+    getAdplanTable().then((res) => {
+      let columns: any[] = [];
+      res.data.map((item: { desc: string; name: string }) => {
+        let lolumnItem: {
+          title: string;
+          dataIndex: string;
+          slots?: any;
+          width?: string | number;
+        } = {
+          title: item.desc,
+          dataIndex: item.name,
+          width: 150,
+        };
+        columns.push(lolumnItem);
+      });
+      state.columns = [];
+      state.columns.push(...columns);
+    });
+    getAdplanData(props.ids).then((res) => {
+      state.list = res.data;
+    });
+
+    return { ...toRefs(state), onSearch };
+  },
+  methods: {
+    moment,
+  },
+});
+
+export default PutCount;
+</script>

+ 55 - 51
src/views/put/put-ad-plan.vue

@@ -2,21 +2,10 @@
   <div class="page-wrap page-wrap-account">
     <tool-bar
       :text="['account_name', 'email', 'ad_name', 'campaign_name']"
-      :label="['账户名', '邮箱', '计划名称', '广告组名称']"
+      :label="['账户名', '邮箱', '计划名称(或ID)', '广告组名称']"
       v-model:loading="inSearching"
       @confirm="onSearch"
     >
-      <!-- <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"
-        />
-      </template> -->
       <div class="tool-bar-item" v-if="optionList.length > 0">
         <p class="label">计划状态</p>
         <a-select class="full-width" v-model:value="currentSelect">
@@ -40,9 +29,9 @@
           format="YYYY/MM/DD"
         />
       </div>
-      <a-button type="primary">
-      回本数据
-    </a-button>
+      <a-button type="primary" @click="openBackDrawer">
+        回本数据
+      </a-button>
     </div>
     <a-table
       :columns="columns"
@@ -90,6 +79,14 @@
     >
       <put-data></put-data>
     </a-drawer>
+    <a-drawer
+      title="回本数据"
+      placement="right"
+      :closable="false"
+      v-model:visible="visible1"
+    >
+      <put-count :ids="ids"></put-count>
+    </a-drawer>
   </div>
 </template>
 
@@ -98,9 +95,10 @@ import { defineComponent, reactive, toRefs, ref, unref } from "vue";
 import moment from "moment";
 import ToolBar from "@/components/tool-bar/index.vue";
 import PutData from "@/views/put/put-log.vue";
+import PutCount from "@/views/put/put-ad-count.vue";
 import EditableCell from "@/components/edit-cell/index.vue";
 import usePagination from "@/hooks/usePagination";
-import {picker} from "@/helper/config/range";
+import { picker } from "@/helper/config/range";
 
 import {
   TableColumnOfPutAdPlan,
@@ -123,6 +121,7 @@ const PutAdPlan = defineComponent({
     ToolBar,
     EditableCell,
     PutData,
+    PutCount,
   },
   setup() {
     let { loading, meta, tablePageOptions } = usePagination();
@@ -136,43 +135,36 @@ const PutAdPlan = defineComponent({
       currentSelect: "AD_STATUS_DELIVERY_OK",
       picker: [],
       visible: false,
-      pickerFilter: [],
+      visible1: false,
+      pickerFilter: [moment(), moment()],
       tablePageOptions,
       columns: list,
+      ids: "",
       optionList: opList,
       defaultColumns: TableColumnOfPutAdPlan,
       fields: {},
-      rangePick:picker
+      rangePick: picker,
     });
     getAddStatus().then((res) => {
+      res.data.unshift({
+        name: "",
+        desc: "不限",
+      });
       state.optionList = res.data;
     });
     const onSearch = async (fields: Record<string, string>) => {
       try {
         const { email, account_name, ad_name, status, campaign_name } = fields;
-
-        const { pickerFilter } = state;
-        let [begin_dates, end_dates] = pickerFilter;
-        let begin_date = moment(begin_dates).format("YYYY-MM-DD");
-        let end_date = moment(end_dates).format("YYYY-MM-DD");
-
-        const { data } = await getADPlanlist({
+        state.fields = fields;
+        const data = {
           email,
           account_name,
           ad_name,
-          begin_date,
-          end_date,
           status: state.currentSelect,
           campaign_name,
           page: 1,
-        });
-        let newList: any[] = data.list.map((item) => {
-          item.enable = item.is_enable == 1 ? true : false;
-          return item;
-        });
-        state.list = newList;
-        meta.value = data.meta;
-        state.fields = fields;
+        };
+        getData(data);
       } catch (e) {
         console.log(e);
       } finally {
@@ -184,13 +176,22 @@ const PutAdPlan = defineComponent({
       onSearch(state.fields);
     };
 
-    getADPlanlist().then((res) => {
-      let newList: any[] = res.data.list.map((item) => {
-        item.enable = item.is_enable == 1 ? true : false;
-        return item;
+    const getData = (query?: any) => {
+      const { pickerFilter } = state;
+      let [begin_dates, end_dates] = pickerFilter;
+      let begin_date = moment(begin_dates).format("YYYY-MM-DD");
+      let end_date = moment(end_dates).format("YYYY-MM-DD");
+      let data = Object.assign({ page: 1,status:'AD_STATUS_DELIVERY_OK',...state.fields},query || {}, {begin_date, end_date,status: state.currentSelect});
+      getADPlanlist(data).then((res) => {
+        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;
+        state.inSearching = false;
       });
-      state.list = newList;
-    });
+    };
 
     getCustomColumn().then((res) => {
       let columns: any[] = [];
@@ -228,16 +229,11 @@ const PutAdPlan = defineComponent({
 
     const handleTableChange = (pagination: PageOptions) => {
       const { current, pageSize, total } = pagination;
-      getADPlanlist({ page: current }).then((res) => {
-        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;
-      });
+      getData({ page: current });
     };
 
+    getData();
+
     return { ...toRefs(state), handleTableChange, onSearch, switchDate };
   },
   methods: {
@@ -280,6 +276,14 @@ const PutAdPlan = defineComponent({
         this.$message.success("修改广告状态成功!");
       });
     },
+    openBackDrawer() {
+      let ids = "";
+      this.list.map((item: ADPlanItem) => {
+        ids = ids + `,${item.ad_id}`;
+      });
+      this.ids = ids.substring(1);
+      this.visible1 = true;
+    },
   },
 });
 
@@ -295,7 +299,7 @@ export default PutAdPlan;
 .ant-drawer-content-wrapper {
   width: 80vw !important;
 }
-.item-right{
-  margin-right:10px;
+.item-right {
+  margin-right: 10px;
 }
 </style>