From 5d3a77e794884a9a5aa733be3dbefcded183dac0 Mon Sep 17 00:00:00 2001 From: hoon7566 Date: Tue, 22 Mar 2022 16:13:09 +0900 Subject: [PATCH] =?UTF-8?q?feat(owner-vue):=20owner=20vue=20=EB=8C=80?= =?UTF-8?q?=EC=8B=9C=EB=B3=B4=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - owner vue 대시보드 개발 --- .../domain/order/dto/DashBoardDto.java | 58 +++++++ owner-vue/package.json | 2 + owner-vue/src/js/CustomChart.js | 11 ++ owner-vue/src/views/HomeDashBoard.vue | 161 +++++++++++++----- owner-vue/src/views/Layout/Sidebar.vue | 2 +- 5 files changed, 194 insertions(+), 40 deletions(-) create mode 100644 order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/DashBoardDto.java create mode 100644 owner-vue/src/js/CustomChart.js diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/DashBoardDto.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/DashBoardDto.java new file mode 100644 index 0000000..55c370e --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/DashBoardDto.java @@ -0,0 +1,58 @@ +package com.justpickup.orderservice.domain.order.dto; + +import lombok.*; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class DashBoardDto { + + //일일 판매금액 + private Long salesAmount=0L; + private BestSellItem bestSellItem; + List sellAmountAWeeks; + + public static DashBoardDto of(List orderPrices , DashBoardDto.BestSellItem bestSellItem , List sellAmountAWeeks){ + DashBoardDto dashBoardDto = new DashBoardDto(); + orderPrices.forEach(orderPrice -> dashBoardDto.salesAmount+=orderPrice.getOrderPrice()); + dashBoardDto.bestSellItem = bestSellItem; + dashBoardDto.sellAmountAWeeks = sellAmountAWeeks; + + return dashBoardDto; + } + + + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class OrderPrice{ + Long orderPrice; + } + + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class BestSellItem{ + Long itemId; + String itemName; + Long sumCounts; + + public void setItemName(String itemName) { + this.itemName = itemName; + } + } + + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class SellAmountAWeek{ + Object sellDate; + Long sellAmount; + } +} diff --git a/owner-vue/package.json b/owner-vue/package.json index 8562565..7e66f3e 100644 --- a/owner-vue/package.json +++ b/owner-vue/package.json @@ -10,9 +10,11 @@ "dependencies": { "@mdi/js": "^6.5.95", "axios": "^0.26.0", + "chart.js": "^2.9.4", "core-js": "^3.6.5", "moment": "^2.29.1", "vue": "^2.6.11", + "vue-chartjs": "^3.5.1", "vue-daum-postcode": "^0.10.0", "vue-router": "^3.2.0", "vuedraggable": "^2.24.3", diff --git a/owner-vue/src/js/CustomChart.js b/owner-vue/src/js/CustomChart.js new file mode 100644 index 0000000..28c9b55 --- /dev/null +++ b/owner-vue/src/js/CustomChart.js @@ -0,0 +1,11 @@ +// CustomChart.js +import { Line, mixins } from 'vue-chartjs' + +export default { + extends: Line, + mixins: [mixins.reactiveProp], + props:['chartData', 'options'], + mounted () { + this.renderChart(this.chartData, this.options) + } +} \ No newline at end of file diff --git a/owner-vue/src/views/HomeDashBoard.vue b/owner-vue/src/views/HomeDashBoard.vue index 7d96b3d..698f68f 100644 --- a/owner-vue/src/views/HomeDashBoard.vue +++ b/owner-vue/src/views/HomeDashBoard.vue @@ -4,51 +4,70 @@ - - + +
- {{ item.title }}
- 00~00 +
{{ salesAmount.title }}
- - {{item.amount}} - -
- + +

{{salesAmount.data | currency}}원

+ + + mdi-currency-usd + + +
+ +
+
- - + + + +
+
{{ bestSellItem.title }}
+
+ +

{{bestSellItem.data.itemName}} {{ bestSellItem.data.sumCounts }}개

+ + + mdi-coffee + + +
+
- + mdi-currency-usd - 판매금액 + {{ sellAmountAWeeks.title }} - + @@ -59,26 +78,90 @@ diff --git a/owner-vue/src/views/Layout/Sidebar.vue b/owner-vue/src/views/Layout/Sidebar.vue index 75ede1b..713eccc 100644 --- a/owner-vue/src/views/Layout/Sidebar.vue +++ b/owner-vue/src/views/Layout/Sidebar.vue @@ -29,7 +29,7 @@ export default { props: ["drawer"], data() { return { - drawer_sidebar:false, + drawer_sidebar:null, links: [ {name: "지난 주문", url: "/prev-order", icon: "mdi-clipboard-check-outline"}, {name: "카테고리", url: "/category", icon: "mdi-shape-outline"},