liyongli 5 miesięcy temu
rodzic
commit
efed1644be
2 zmienionych plików z 44 dodań i 95 usunięć
  1. 1 0
      src/types/Tool.d.ts
  2. 43 95
      src/views/ReportSpaceFormsPage.vue

+ 1 - 0
src/types/Tool.d.ts

@@ -41,6 +41,7 @@ export interface Pages {
   catalogIds?: number[]
   advertiserIds?: number[]
   creativeIds?: number[]
+  slotIds?: number[]
   type?: string
 }
 

+ 43 - 95
src/views/ReportSpaceFormsPage.vue

@@ -19,64 +19,39 @@
           <el-option label="月" value="month" />
         </el-select>
       </el-form-item>
-      <el-form-item label="区域">
-        <el-select filterable clearable v-model="pages.province" style="width: 200px">
-          <el-option
-            v-for="item in provinces"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="广告主">
+      <el-form-item label="站点">
         <el-select
-          multiple
-          collapse-tags
           filterable
           clearable
-          v-model="pages.advertiserIds"
-          style="width: 200px"
-        >
-          <el-option
-            v-for="item in advertisers"
-            :key="item.advertiserId"
-            :label="item.enterpriseName"
-            :value="item.advertiserId"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="创意">
-        <el-select
           multiple
           collapse-tags
-          filterable
-          clearable
-          v-model="pages.creativeIds"
+          v-model="pages.mediaIds"
+          placeholder="站点"
           style="width: 200px"
         >
           <el-option
-            v-for="item in originalitys"
-            :key="item.creativeId"
-            :label="item.creativeName"
-            :value="item.creativeId"
+            v-for="item in SiteList"
+            :key="item.mediaId"
+            :label="item.mediaName"
+            :value="item.mediaId"
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="素材">
+      <el-form-item label="广告位">
         <el-select
-          multiple
-          collapse-tags
           filterable
           clearable
-          v-model="pages.stuffIds"
+          multiple
+          collapse-tags
+          v-model="pages.slotIds"
+          placeholder="广告位"
           style="width: 200px"
         >
           <el-option
-            v-for="item in SourceMaterials"
-            :key="item.stuffId"
-            :label="item.stuffName"
-            :value="item.stuffId"
+            v-for="item in SlotIds"
+            :key="item.slotId"
+            :label="item.slotName"
+            :value="item.slotId"
           />
         </el-select>
       </el-form-item>
@@ -104,30 +79,21 @@
 </template>
 
 <script setup lang="ts">
-import type { OriginalityItem } from '@/types/AdListPage'
-import type { Advertiser } from '@/types/Advertiser'
 import type { Pages } from '@/types/Tool'
-import type { SourceMaterialList } from '@/types/SourceMaterial'
 import type { IReportItem } from '@/types/Report'
-import {
-  getAdvertiserList,
-  getOriginalityList,
-  getMaterialList,
-  getMediaReport,
-  getMediaMonthReport,
-  getProvinceCity,
-} from '@/api/index'
+import type { SiteList } from '@/types/Site'
+import type { AsSpaceItem } from '@/types/AsSpace'
+import { getMediaReport, getMediaMonthReport, getSiteList, getAsSpaceList } from '@/api/index'
 import { formatDate } from '@/tool/index'
 import { reactive, ref } from 'vue'
 const tableData = ref<IReportItem[]>([])
 const date_ = formatDate(new Date().getTime())
+const SiteList = ref<SiteList>([])
 const pages = reactive<Pages>({
   pageNum: 1,
   pageSize: 10,
-  advertiserIds: [],
-  creativeIds: [],
-  stuffIds: [],
-  province: '',
+  mediaIds: [],
+  slotIds: [],
   datas: [
     date_.fmtYear + '-' + date_.fmtMonth + '-' + date_.fmtDay,
     date_.fmtYear + '-' + date_.fmtMonth + '-' + date_.fmtDay,
@@ -135,53 +101,30 @@ const pages = reactive<Pages>({
   total: 0,
   type: 'day',
 })
-const advertisers = ref<Advertiser[]>([])
-const originalitys = ref<OriginalityItem[]>([])
-const SourceMaterials = ref<SourceMaterialList>([])
 const loading = ref(false)
-const provinces = ref<{ label: string; value: string }[]>([])
+const SlotIds = ref<AsSpaceItem[]>([])
 
-const getList = () => {
-  getAdvertiserList({
-    pageNum: 1,
-    pageSize: 999999,
-  }).then(({ data }) => {
-    // 广告主列表
-    advertisers.value = data.records || []
-  })
-  getOriginalityList({
-    pageNum: 1,
-    pageSize: 999999,
-    keyword: '',
-  }).then(({ data }) => {
-    // 创意列表
-    originalitys.value = data.records || []
-  })
-  getMaterialList({
-    pageNum: 1,
-    pageSize: 999999,
-  }).then(({ data }) => {
-    // 素材列表
-    SourceMaterials.value = data.records || []
-  })
-  getProvinceCity().then(({ data }) => {
-    provinces.value = data.area.map((item: { name: string }) => {
-      return {
-        label: item.name,
-        value: item.name,
-      }
+const getAsSpaceListFunc = () => {
+  return new Promise((resolve) => {
+    let i = 0
+    const len = pages.mediaIds?.length || 0
+    pages.mediaIds?.map((v) => {
+      getAsSpaceList({
+        pageNum: 1,
+        pageSize: 999999,
+        mediaId: v,
+      }).then(({ data }) => {
+        SlotIds.value.push(...data.records)
+        if (i++ >= len) resolve(true)
+      })
     })
   })
 }
 
 const onSubmit = (isExport = false) => {
   const p = {
-    advertiserIds: pages.advertiserIds,
-    creativeIds: pages.creativeIds,
-    stuffIds: pages.stuffIds,
     startDate: pages.datas ? pages.datas[0] : '',
     endDate: pages.datas ? pages.datas[1] : '',
-    provinces: [pages.province || ''],
     pageNum: pages.pageNum,
     pageSize: isExport ? 999999 : pages.pageSize,
   }
@@ -218,8 +161,13 @@ const page = (val: number) => {
   onSubmit()
 }
 
-getList()
-onSubmit()
+getSiteList().then((res) => {
+  SiteList.value = res.data || []
+  pages.mediaIds = typeof SiteList.value[0].mediaId === 'number' ? [SiteList.value[0].mediaId] : []
+  getAsSpaceListFunc().then(() => {
+    onSubmit()
+  })
+})
 </script>
 
 <style></style>