| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | import { useReducer } from 'react'import { channel_analysis_select,pitcher_channel,channel_analysis_select_daily,ad_rank,bookOverview, bookRank, bookTrend, bossSummary,    getAccApi, channelActive, getUserApi, channelAgainOrderTrend, channelOrderTrend, channelOverview, channelStatChannel, imageRank,     Params, pitcherOverview, pitcherTrend, getRechargeHisApi, getRechargeHisYaerApi, channelOrderTrendPay, setPayApi, recoveryQueryapi, getOsoRoiApi } from '@/services/dataStatistics/dataCenter'import { useAjax } from '@/Hook/useAjax'type State = {    tableDate?: string,//table搜索单日期值    channel?: string,//table搜索公众号名称    channels?: string[],// 多选公众号    tableId?: string,//table搜索公众号ID    date_range?: string,//table搜索公众号n天    start?: string,//开始时间    end?: string,//结束时间    start15?: string,//开始时间    end15?: string,//结束时间    cost_time_start?: string,//消耗开始时间    cost_time_end?: string,//结束时间    order_time_start?: string,//订单开始时间    order_time_end?: string,//结束时间    cost_year?: string, // 消耗所在年(格式:2021)    order_month?: string, // 订单所在月份  (格式:2021-11)    pitcher?: string,//投手名称    book?: any,//table搜索书名    dataSource?: any[]//table数据    loding?: boolean//请求    order_by?: string//排序字段    order?: 'asc' | 'desc',//升序降序    location?: 'MP' | 'GDT',//投放位置老    type?: 'MP' | 'GDT',//投放位置新    targetKeys?: any[],//    platform?:string,//书城    selectedKeys?: any[],//    tableValue?: '1' | '2',    stage?: string,//期数    tabKey?: string,    st?:string,//充值开始    et?:string,//充值结束    is_video?: number,    is_pitcher_self?: boolean,}export type Action = {    type: 'tableDate' | 'channel'| 'channels' | 'isVideo' | 'tableId' | 'book' | 'date_range' | 'tableDateArr' | 'tableDateArr15' | 'isPitcherSelf' | 'depleteDateDateArr' | 'orderDateDateArr' | 'costYear' | 'orderMonth' | 'tabKey' | 'init' | 'setState' | 'dataSource',    params?: State}export function reducer(state: State, action: Action) {    let { type, params } = action    let newState = JSON.parse(JSON.stringify(state))    switch (type) {        case 'tableDate':            return { ...state, tableDate: params?.tableDate }        case 'channel':            return { ...state, channel: params?.channel }        case 'costYear':            return { ...state, cost_year: params?.cost_year }        case 'orderMonth':            return { ...state, order_month: params?.order_month }        case 'isPitcherSelf':            return { ...state, is_pitcher_self: params?.is_pitcher_self }        case 'channels':            return { ...state, channels: params?.channels }        case 'isVideo':            return { ...state, is_video: params?.is_video }        case 'tableId':            return { ...state, tableId: params?.tableId }        case 'book':            return { ...state, book: params?.book }        case 'date_range':            return { ...state, date_range: params?.date_range }        case 'tableDateArr':            return { ...state, start: params?.start, end: params?.end }        case 'tableDateArr15':            return { ...state, start15: params?.start15, end15: params?.end15 }        case 'depleteDateDateArr':            return { ...state, cost_time_start: params?.start, cost_time_end: params?.end }        case 'orderDateDateArr':            return { ...state, order_time_start: params?.start, order_time_end: params?.end }        case 'dataSource':            return { ...state, dataSource: params?.dataSource }        case 'tabKey':            return { ...state, tabKey: params?.tabKey }        case 'setState':            Object.keys(params as State).forEach((key: string) => {                newState[key] = (params as State)[key]            })            return newState        case 'init':            return {}        default:            return state;    }}const initData: State = {    date_range:'7'}export default function useTableData() {    const [state, dispatch] = useReducer(reducer, initData)    /**广告投放详细数据 */    const getChannelOverview = useAjax((params: Params) => channelOverview(params), { formatResult: true })    /**今日消耗排行榜 */    const getBookRank = useAjax((params: Params) => bookRank(params), { formatResult: true })    /**公众号付费趋势表 */    const getChannelOrderTrend = useAjax((params: Params) => channelOrderTrend(params), { formatResult: true })    /**公众号付费趋势(含赔付金) */    const getChannelOrderTrendPay = useAjax((params: Params) => channelOrderTrendPay(params), { formatResult: true })    /** 公众号7日复重趋势*/    const getChannelAgainOrderTrend = useAjax((params: Params) => channelAgainOrderTrend(params), { formatResult: true })    /**公众号付费粉丝激活数据 */    const getChannelActive = useAjax((params: Params) => channelActive(params), { formatResult: true })    /**公众号汇总 */    const getChannelStatChannel = useAjax((params: Params) => channelStatChannel(params), { formatResult: true })    /**投手付费趋势 */    const getPitcherTrend = useAjax((params: Params) => pitcherTrend(params), { formatResult: true })    /**投手回收查询 */    const getRecoveryQuery = useAjax((params: Params) => recoveryQueryapi(params), { formatResult: true })    /**公众号回收查询 */    const getOsoRoi = useAjax((params: Params) => getOsoRoiApi(params), { formatResult: true })     /**投手总数据 */    const getPitcherOverview = useAjax((params: Params) => pitcherOverview(params), { formatResult: true })     /**充值历史 */    const getRechargeHis = useAjax((params: Params) => getRechargeHisApi(params), { formatResult: true })     /**充值历史(年) */    const getRechargeHisYaer = useAjax((params: Params) => getRechargeHisYaerApi(params), { formatResult: true })    /**小说付费趋势 */    const getBookTrend = useAjax((params: Params) => bookTrend(params), { formatResult: true })    /**小说总数据 */    /**小说付总数据 */    const getBookOverview = useAjax((params: Params) => bookOverview(params), { formatResult: true })    /**整体概况 */    const getBossSummary = useAjax((params: Params) => bossSummary(params), { formatResult: true })    /**素材库 */    const getImageRank = useAjax((params: Params) => imageRank(params), { formatResult: true })    /**素材消耗排行榜 */    const getAdrank = useAjax((params: Params) => ad_rank(params), { formatResult: true })    /** 搜索公众号 */    const getAccAjax = useAjax((params: Params) => getAccApi(params), { formatResult: true })    /** 获取拥有用户 */    const getUserAjax = useAjax((params: Params) => getUserApi(params), { formatResult: true })    /** 投手投放号 */    const getPitcherChannel = useAjax((params: Params) => pitcher_channel(params), { formatResult: true })    /** 公众号用户充值查询 */    const getChannelAnalysis = useAjax((params: Params) => channel_analysis_select(params), { formatResult: true })      /** 公众号用户充值查询详情 */    const getChannelAnalysisDetails = useAjax((params: Params) => channel_analysis_select_daily(params), { formatResult: true })      /** 设置赔付金 */    const setPay = useAjax((params: { date: string, channel: string, pay: number }) => setPayApi(params), { formatResult: true })    return {        state,        dispatch,        getChannelOverview,        getChannelOrderTrend,        getChannelOrderTrendPay,        getChannelAgainOrderTrend,        getChannelActive,        getChannelStatChannel,        getPitcherTrend,        getRecoveryQuery,        getBookRank,        getBookTrend,        getBookOverview,        getPitcherOverview,        getRechargeHis,        getBossSummary,        getImageRank,        getAdrank,        getAccAjax,        getRechargeHisYaer,        getUserAjax,        getPitcherChannel,        getChannelAnalysis,        getChannelAnalysisDetails,        setPay,        getOsoRoi    }}
 |