|
@@ -0,0 +1,74 @@
|
|
|
+<template>
|
|
|
+ <fs-page class="fs-page-custom">
|
|
|
+ <fs-crud ref="crudRef" v-bind="crudBinding">
|
|
|
+ <template #search-left>
|
|
|
+ <DateRangePicker v-model="dateRange"></DateRangePicker>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-for="field of Object.keys(BaseColumn)" #[`cell_${field}`]="scope">
|
|
|
+ <DataCompare
|
|
|
+ :field="field"
|
|
|
+ :value="scope.row[field]"
|
|
|
+ :prev-val="scope.row[`prev${field}`]"
|
|
|
+ :gap-val="scope.row[`gap${field}`]"
|
|
|
+ :date-range="dateRange"
|
|
|
+ :show-compare="showCompare"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template #toolbar-left>
|
|
|
+ <div class="campare-switch">
|
|
|
+ <span>数据对比 </span>
|
|
|
+ <el-switch v-model="showCompare" size="small" />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template #cell_resolvedExpression="scope">
|
|
|
+ <p v-for="[key, val] of Object.entries(scope.row.resolvedExpression)">
|
|
|
+ {{ TargetExpressionEnum.find((item) => item.value === key)?.label }}:{{ val }}
|
|
|
+ </p>
|
|
|
+ </template>
|
|
|
+ </fs-crud>
|
|
|
+ </fs-page>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { ref, onMounted, computed, watch, onBeforeMount } from 'vue'
|
|
|
+import { useFs, FsPage } from '@fast-crud/fast-crud'
|
|
|
+import { createCrudOptions } from './crud'
|
|
|
+// import { useShopInfo } from '/@/stores/shopInfo'
|
|
|
+import { usePublicData } from '/@/stores/publicData'
|
|
|
+import { storeToRefs } from 'pinia'
|
|
|
+import { LocationQueryValue } from 'vue-router'
|
|
|
+import { BaseColumn } from '/@/views/adManage/utils/commonTabColumn.js'
|
|
|
+import DataCompare from '/@/components/dataCompare/index.vue'
|
|
|
+import DateRangePicker from '/@/components/DateRangePicker/index.vue'
|
|
|
+import { TargetExpressionEnum } from '/@/views/adManage/utils/enum'
|
|
|
+
|
|
|
+interface Props {
|
|
|
+ adGroupId: LocationQueryValue | LocationQueryValue[]
|
|
|
+}
|
|
|
+const props = defineProps<Props>()
|
|
|
+// const shopInfo = useShopInfo()
|
|
|
+const publicData = usePublicData()
|
|
|
+const { dateRange } = storeToRefs(publicData)
|
|
|
+// const { profile } = storeToRefs(shopInfo)
|
|
|
+const queryParams = ref({
|
|
|
+ adGroupId: props.adGroupId,
|
|
|
+ dateRange,
|
|
|
+})
|
|
|
+const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context: queryParams })
|
|
|
+const showCompare = ref(false)
|
|
|
+
|
|
|
+onMounted(async () => {
|
|
|
+ crudExpose.doRefresh()
|
|
|
+})
|
|
|
+watch(
|
|
|
+ queryParams,
|
|
|
+ async () => {
|
|
|
+ crudExpose.doRefresh()
|
|
|
+ },
|
|
|
+ { deep: true }
|
|
|
+)
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|