index.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <fs-page class="fs-page-custom" v-loading='loading'>
  3. <fs-crud ref="crudRef" v-bind="crudBinding">
  4. <template #search-left>
  5. <DateRangePicker v-model="dateRange"></DateRangePicker>
  6. </template>
  7. <template v-for="field of Object.keys(BaseColumn)" #[`cell_${field}`]="scope">
  8. <DataCompare
  9. :field="field"
  10. :value="scope.row[field]"
  11. :prev-val="scope.row[`prev${field}`]"
  12. :gap-val="scope.row[`gap${field}`]"
  13. :date-range="dateRange"
  14. :show-compare="showCompare"/>
  15. </template>
  16. <template #toolbar-left>
  17. <div>
  18. <span>数据对比 </span>
  19. <el-switch v-model="showCompare" size="small" />
  20. </div>
  21. </template>
  22. </fs-crud>
  23. </fs-page>
  24. </template>
  25. <script lang="ts" setup>
  26. import {onMounted, ref, watch} from 'vue'
  27. import {FsPage, useFs} from '@fast-crud/fast-crud'
  28. import {createCrudOptions} from './crud'
  29. import {usePublicData} from '/@/stores/publicData'
  30. import {storeToRefs} from 'pinia'
  31. import DateRangePicker from '/@/components/DateRangePicker/index.vue'
  32. import {BaseColumn} from '/@/views/adManage/utils/commonTabColumn.js'
  33. import {LocationQueryValue} from 'vue-router'
  34. import DataCompare from '/@/components/dataCompare/index.vue'
  35. defineOptions({
  36. name: "Placement"
  37. })
  38. const publicData = usePublicData()
  39. const { dateRange } = storeToRefs(publicData)
  40. interface Props {
  41. campaignId: LocationQueryValue | LocationQueryValue[]
  42. }
  43. const props = defineProps<Props>()
  44. // const loading = ref(true)
  45. const showCompare = ref(false)
  46. const queryParams = ref({
  47. campaignId: props.campaignId,
  48. dateRange
  49. })
  50. const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context: queryParams })
  51. onMounted(async () => {
  52. crudExpose.doRefresh()
  53. })
  54. watch(
  55. dateRange,
  56. async () => crudExpose.doRefresh()
  57. )
  58. </script>
  59. <style scoped>
  60. .red {
  61. color: red;
  62. }
  63. .green {
  64. color: #1cbc0e;
  65. }
  66. </style>