index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <template>
  2. <doc-alert title="ERP 手册(功能开启)" url="https://doc.iocoder.cn/erp/build/" />
  3. <div class="flex flex-col">
  4. <!-- 销售/采购的全局统计 -->
  5. <el-row :gutter="16" class="row">
  6. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  7. <SummaryCard title="今日销售" :value="saleSummary?.todayPrice" />
  8. </el-col>
  9. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  10. <SummaryCard title="昨日销售" :value="saleSummary?.yesterdayPrice" />
  11. </el-col>
  12. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  13. <SummaryCard title="今日采购" :value="purchaseSummary?.todayPrice" />
  14. </el-col>
  15. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  16. <SummaryCard title="昨日采购" :value="purchaseSummary?.yesterdayPrice" />
  17. </el-col>
  18. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  19. <SummaryCard title="本月销售" :value="saleSummary?.monthPrice" />
  20. </el-col>
  21. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  22. <SummaryCard title="今年销售" :value="saleSummary?.yearPrice" />
  23. </el-col>
  24. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  25. <SummaryCard title="本月采购" :value="purchaseSummary?.monthPrice" />
  26. </el-col>
  27. <el-col :md="6" :sm="12" :xs="24" :loading="loading">
  28. <SummaryCard title="今年采购" :value="purchaseSummary?.yearPrice" />
  29. </el-col>
  30. </el-row>
  31. <!-- 销售/采购的时段统计 -->
  32. <el-row :gutter="16" class="row">
  33. <!-- 销售统计 -->
  34. <el-col :md="12" :sm="12" :xs="24" :loading="loading">
  35. <TimeSummaryChart title="销售统计" :value="saleTimeSummaryList" />
  36. </el-col>
  37. <!-- 采购统计 -->
  38. <el-col :md="12" :sm="12" :xs="24" :loading="loading">
  39. <TimeSummaryChart title="采购统计" :value="purchaseTimeSummaryList" />
  40. </el-col>
  41. </el-row>
  42. </div>
  43. </template>
  44. <script lang="ts" setup>
  45. import SummaryCard from './components/SummaryCard.vue'
  46. import TimeSummaryChart from './components/TimeSummaryChart.vue'
  47. import {
  48. ErpSaleSummaryRespVO,
  49. ErpSaleTimeSummaryRespVO,
  50. SaleStatisticsApi
  51. } from '@/api/erp/statistics/sale'
  52. import {
  53. ErpPurchaseSummaryRespVO,
  54. ErpPurchaseTimeSummaryRespVO,
  55. PurchaseStatisticsApi
  56. } from '@/api/erp/statistics/purchase'
  57. /** 商城首页 */
  58. defineOptions({ name: 'ErpHome' })
  59. const loading = ref(true) // 加载中
  60. /** 获得销售统计 */
  61. const saleSummary = ref<ErpSaleSummaryRespVO>() // 销售概况统计
  62. const saleTimeSummaryList = ref<ErpSaleTimeSummaryRespVO[]>() // 销售时段统计
  63. const getSaleSummary = async () => {
  64. saleSummary.value = await SaleStatisticsApi.getSaleSummary()
  65. saleTimeSummaryList.value = await SaleStatisticsApi.getSaleTimeSummary()
  66. }
  67. /** 获得采购统计 */
  68. const purchaseSummary = ref<ErpPurchaseSummaryRespVO>() // 采购概况统计
  69. const purchaseTimeSummaryList = ref<ErpPurchaseTimeSummaryRespVO[]>() // 采购时段统计
  70. const getPurchaseSummary = async () => {
  71. purchaseSummary.value = await PurchaseStatisticsApi.getPurchaseSummary()
  72. purchaseTimeSummaryList.value = await PurchaseStatisticsApi.getPurchaseTimeSummary()
  73. }
  74. /** 初始化 **/
  75. onMounted(async () => {
  76. loading.value = true
  77. await Promise.all([getSaleSummary(), getPurchaseSummary()])
  78. loading.value = false
  79. })
  80. </script>
  81. <style lang="scss" scoped>
  82. .row {
  83. .el-col {
  84. margin-bottom: 1rem;
  85. }
  86. }
  87. </style>