<script lang="ts" setup>
import {onMounted, ref, watch} from 'vue'
import {FsPage, useFs} from '@fast-crud/fast-crud'
import {createCrudOptions} from './crud'
import {useRouter} from 'vue-router'
import DataTendencyChart from '/@/views/adManage/sb/chartComponents/dataTendency.vue'
import {useShopInfo} from '/@/stores/shopInfo'
import AdStructChart from './chartComponents/adStruct.vue'
import {getCardData, getLineData, getLineMonthData, getLineWeekData} from '../campaigns/api'
import {usePublicData} from '/@/stores/publicData'
import {storeToRefs} from 'pinia'
import {SbBaseColumn} from '/@/views/adManage/utils/commonTabColumn'
import DataCompare from '/@/components/dataCompare/index.vue'


const tabActiveName = ref('dataTendency')
const shopInfo = useShopInfo()
const publicData = usePublicData()
const {dateRange} = storeToRefs(publicData)
const {profile} = storeToRefs(shopInfo)
const queryParams = ref({
  profileId: profile.value.profile_id,
  dateRange
})
const {crudBinding, crudRef, crudExpose} =  useFs({createCrudOptions, context: queryParams})
const router = useRouter()
const showCompare = ref(false)
const jumpGroup = (row: any) => {
  router.push({
    name: 'CampaignDetail',
    query: {id: row.id, campaignId: row.campaignId, tagsViewName: row.campaignName},
  })
}

onMounted(() => {
  crudExpose.doRefresh()
})

watch(queryParams, () => {
  crudExpose.doRefresh()
}, { deep: true })

</script>

<template>
  <fs-page class="fs-page-custom">
    <fs-crud ref="crudRef" v-bind="crudBinding">
      <template #header-middle>
        <el-tabs v-model="tabActiveName" class="chart-tabs" type="border-card">
          <el-tab-pane label="数据趋势" name="dataTendency">
            <DataTendencyChart
                v-if="tabActiveName === 'dataTendency'"
                :query="queryParams"
                :fetchCard="getCardData"
                :fetch-line-month="getLineMonthData"
                :fetch-line-week="getLineWeekData"
                :fetchLine="getLineData">
            </DataTendencyChart>
          </el-tab-pane>
          <el-tab-pane label="广告结构" name="adStruct">
            <AdStructChart v-if="tabActiveName === 'adStruct'"/>
          </el-tab-pane>
          <el-tab-pane label="散点视图" name="scatterView" :lazy="true"></el-tab-pane>
        </el-tabs>
      </template>
      <template #cell_campaignName="scope">
        <el-tooltip  effect="dark" :content="scope.row.campaignName" placement="top">
          <el-link type="primary" :underline="false" @click="jumpGroup(scope.row)">
            <div class="en-text">{{ scope.row.campaignName }}</div>
          </el-link>
        </el-tooltip>
      </template>
      <template #cell_MissedImpressions="scope">
        {{ scope.row.MissedImpressionsLower ?? '0' }} ~ {{ scope.row.MissedImpressionsUpper ?? '0' }}
      </template>
      <template #cell_MissedClicks="scope">
        {{ scope.row.MissedClicksLower ?? '0' }} ~ {{ scope.row.MissedClicksUpper ?? '0' }}
      </template>
      <template #cell_MissedSales="scope">
        {{ scope.row.MissedSalesLower ?? '0' }} ~ {{ scope.row.MissedSalesUpper ?? '0' }}
      </template>

      <template v-for="field of Object.keys(SbBaseColumn)" #[`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>
    </fs-crud>
  </fs-page>
</template>

<style lang="scss" scoped>
.chart-tabs {
  margin: 5px 0;

  .el-tabs__nav {
    padding-left: 0 !important;
  }
}
.campare-switch {
  flex: none;
}

::v-deep(.el-table__footer-wrapper td.el-table__cell:nth-child(n+2):nth-child(-n+4) .cell) {
  display: none;
}

.en-text {
  max-width: 100%;
  font-size: 13px;
  font-weight: 420;
  word-break: break-word;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}
::v-deep(.el-table__footer-wrapper) {
  border: 0;
}
::v-deep(.el-table .el-table__footer-wrapper .cell) {
  font-weight: 600;
}

.text-range {
  color: #808184;
}
</style>
