zhengyiming
8 天以前 92921431668181fb6d3387368c751ccc40aba8cf
src/views/DataBoard/hooks/index.ts
New file
@@ -0,0 +1,197 @@
import { useQuery } from '@tanstack/vue-query';
import { useIntervalFn } from '@vueuse/core';
import * as dataBoardServices from '@/services/api/DataBoard';
export function useIntervalValue<T>(initValue: T) {
  const value = ref(initValue);
  const preValue = ref(initValue);
  useIntervalFn(() => {
    value.value = 0;
    setTimeout(() => {
      value.value = preValue.value;
    }, 500);
  }, 30000);
  function changeValue(_value: T) {
    value.value = _value;
    preValue.value = _value;
  }
  return { value, changeValue };
}
export function useGetDataBoardOverview() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardOverview'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardOverview(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardOverviewOutput),
  });
  return {
    detail,
  };
}
export function useGetDataBoardNewCustomerCount() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardNewCustomerCount'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardNewCustomerCount(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardNewCustomerCountOutput),
  });
  return {
    detail,
  };
}
export function useGetDataBoardNewBountyApplyCount() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardNewBountyApplyCount'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardNewBountyApplyCount(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardNewBountyApplyCountOutput),
  });
  return {
    detail,
  };
}
export function useGetDataBoardNewBountyReleaseAmountCount() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardNewBountyReleaseAmountCount'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardNewBountyReleaseAmountCount(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardNewBountyReleaseAmountCountOutput),
  });
  return {
    detail,
  };
}
export function useGetDataBoardNewBountyUseAmountCount() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardNewBountyUseAmountCount'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardNewBountyUseAmountCount(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardNewBountyUseAmountCountOutput),
  });
  return {
    detail,
  };
}
export function useGetDataBoardNewInsurePeopleCount() {
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardNewInsurePeopleCount'],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardNewInsurePeopleCount(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardNewInsurePeopleCountOutput),
  });
  return {
    detail,
  };
}
type UseGetDataBoardBountyUseAmountRankOptions = {
  take: number;
};
export function useGetDataBoardBountyUseAmountRank(
  options: UseGetDataBoardBountyUseAmountRankOptions
) {
  const { take } = options;
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardBountyUseAmountRank', take],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardBountyUseAmountRank(
        { take: take },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardBountyUseAmountRankOutput),
  });
  const bountyUseAmountRankList = computed(() =>
    detail.value.items?.map((x) => ({
      name: x.enterpriseName,
      value: x.amount,
    }))
  );
  return {
    bountyUseAmountRankList,
  };
}
export function useGetDataBoardInsurePeopleCountRank(
  options: UseGetDataBoardBountyUseAmountRankOptions
) {
  const { take } = options;
  const { data: detail, isLoading } = useQuery({
    queryKey: ['dataBoardServices/getDataBoardInsurePeopleCountRank', take],
    queryFn: async () => {
      return await dataBoardServices.getDataBoardInsurePeopleCountRank(
        { take: take },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetDataBoardInsurePeopleCountRankOutput),
  });
  const insurePeopleCountRankList = computed(() =>
    detail.value.items?.map((x) => ({
      name: x.enterpriseName,
      value: x.count,
    }))
  );
  return {
    insurePeopleCountRankList,
  };
}