SevenDay.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import { ref, onMounted } from "vue";
  2. import { getSevenDayApi } from "@/api/ShopContent.ts";
  3. import { getTimeVal, oneDay } from "@/util/tools.ts";
  4. export function SevenDay(businessId: any = '', dayNum: number = 7, showMounted: boolean = true) {
  5. let DefaultData = [];
  6. const getSevenDayTime = () => {
  7. DefaultData = [];
  8. const Today = getTimeVal();
  9. for (let i = 0; i < dayNum; i++) {
  10. const t = getTimeVal({ time: Today - (oneDay * i), format: 'MMDD' });
  11. DefaultData.unshift(t)
  12. }
  13. }
  14. // 近七日交易趋势
  15. const DealTrendData = ref(null);
  16. const DealTrendVo = [
  17. {
  18. name: '总交易额',
  19. data: [],
  20. color: '#E36868',
  21. gradientStart: '#E36868',
  22. gradientEnd: '#E36868'
  23. },
  24. {
  25. name: '预估结算',
  26. data: [],
  27. color: '#5CBD76',
  28. gradientStart: '#5CBD76',
  29. gradientEnd: '#5CBD76'
  30. },
  31. {
  32. name: '让利金额',
  33. data: [],
  34. color: '#6295F2',
  35. gradientStart: '#6295F2',
  36. gradientEnd: '#6295F2'
  37. }
  38. ]
  39. const getDealTrend = (item : any) => {
  40. DealTrendVo[0].data.push(item.actualReceivePayment || 0)
  41. DealTrendVo[1].data.push(item.todaySettlement || 0)
  42. DealTrendVo[2].data.push(item.businessShouldSubsidy || 0)
  43. };
  44. // 近七日订单趋势
  45. const OrderTrendData = ref(null);
  46. const OrderTrendVo = [
  47. {
  48. name: '在线买单',
  49. data: [],
  50. color: '#E36868',
  51. gradientStart: '#E36868',
  52. gradientEnd: '#E36868'
  53. },
  54. {
  55. name: '线上商城订单',
  56. data: [],
  57. color: '#6295F2',
  58. gradientStart: '#6295F2',
  59. gradientEnd: '#6295F2'
  60. }
  61. ]
  62. const getOrderTrend = (item : any) => {
  63. OrderTrendVo[0].data.push(item.onlineOrderNum || 0)
  64. OrderTrendVo[1].data.push(item.shopOrderNum || 0)
  65. };
  66. const getLineChart = async (businessIds: any) => {
  67. getSevenDayTime();
  68. try {
  69. let id = businessIds || businessId;
  70. const Parmas = { businessId: id, dayNum };
  71. // console.log(Parmas)
  72. const { data } = await getSevenDayApi(Parmas);
  73. const MapData = DefaultData.map(el => {
  74. const item = data.find(r => getTimeVal({ time: r.dayValue, format: 'MMDD' }) === el)
  75. if (item) return item
  76. else return {
  77. dayValue: el
  78. };
  79. })
  80. MapData.forEach(item => {
  81. getDealTrend(item);
  82. getOrderTrend(item)
  83. })
  84. DealTrendData.value = {
  85. categories: DefaultData,
  86. series: DealTrendVo
  87. };
  88. OrderTrendData.value = {
  89. categories: DefaultData,
  90. series: OrderTrendVo
  91. }
  92. } catch (error) {
  93. }
  94. };
  95. onMounted(() => {
  96. if (showMounted) {
  97. getLineChart();
  98. }
  99. })
  100. return {
  101. OrderTrendData,
  102. DealTrendData,
  103. getLineChart
  104. }
  105. }