|
@@ -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>
|