fix(owner-vue): order status 버그픽스
- order status 변경
This commit is contained in:
@@ -23,6 +23,7 @@ public class NotificationConsumer {
|
|||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
private final NotificationService notificationService;
|
private final NotificationService notificationService;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@KafkaListener(topics = "orderPlaced")
|
@KafkaListener(topics = "orderPlaced")
|
||||||
public void orderPlaced(String kafkaMessage) throws JsonProcessingException {
|
public void orderPlaced(String kafkaMessage) throws JsonProcessingException {
|
||||||
log.debug("## NotificationConsumer.orderPlaced");
|
log.debug("## NotificationConsumer.orderPlaced");
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ public enum OrderStatus {
|
|||||||
ACCEPTED("주문수락"),
|
ACCEPTED("주문수락"),
|
||||||
REJECTED("주문거절"),
|
REJECTED("주문거절"),
|
||||||
WAITING("픽업대기"),
|
WAITING("픽업대기"),
|
||||||
FINISHED("픽업완료");
|
FINISHED("픽업완료"),
|
||||||
|
FAILED("실패");
|
||||||
|
|
||||||
|
|
||||||
private String message;
|
private String message;
|
||||||
|
|
||||||
|
|||||||
@@ -83,13 +83,12 @@ public class Order extends BaseEntity {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Order setOrderStatus(OrderStatus orderStatus){
|
public void setOrderStatus(OrderStatus orderStatus){
|
||||||
this.orderStatus = orderStatus;
|
this.orderStatus = orderStatus;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void order() {
|
public void placed() {
|
||||||
this.orderStatus = OrderStatus.ORDER;
|
this.orderStatus = OrderStatus.PLACED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -104,6 +103,6 @@ public class Order extends BaseEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void fail() {
|
public void fail() {
|
||||||
this.orderStatus = OrderStatus.FAIL;
|
this.orderStatus = OrderStatus.FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,16 +20,16 @@ public class OrderListener {
|
|||||||
@PostUpdate
|
@PostUpdate
|
||||||
public void postUpdate(Order order){
|
public void postUpdate(Order order){
|
||||||
OrderStatus orderStatus = order.getOrderStatus();
|
OrderStatus orderStatus = order.getOrderStatus();
|
||||||
if (orderStatus == OrderStatus.ORDER) {
|
if (orderStatus == OrderStatus.PLACED) {
|
||||||
log.info("[OrderListener] {}", OrderStatus.ORDER.name());
|
log.info("[OrderListener] {}", OrderStatus.PLACED.name());
|
||||||
try{
|
try{
|
||||||
orderSender.orderPlaced(OrderSender.KafkaSendOrderDto.createPrimitiveField(order));
|
orderSender.orderPlaced(OrderSender.KafkaSendOrderDto.createPrimitiveField(order));
|
||||||
}catch (Exception ex){
|
}catch (Exception ex){
|
||||||
throw new OrderException(ex.getMessage());
|
throw new OrderException(ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (orderStatus == OrderStatus.PLACED) {
|
} else if (orderStatus == OrderStatus.ACCEPTED) {
|
||||||
log.info("[OrderListener] {}", OrderStatus.PLACED.name());
|
log.info("[OrderListener] {}", OrderStatus.ACCEPTED.name());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,18 @@
|
|||||||
package com.justpickup.orderservice.domain.order.entity;
|
package com.justpickup.orderservice.domain.order.entity;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
// 주문 대기 -> 주문 신청 --> 주문수락 -> 픽업대기 -> 픽업완료
|
||||||
|
// \
|
||||||
|
// ㄴ> 주문거절
|
||||||
|
@Getter
|
||||||
public enum OrderStatus {
|
public enum OrderStatus {
|
||||||
PENDING("주문대기"),
|
PENDING("주문대기(장바구니)"),
|
||||||
ORDER("주문"),
|
PLACED("주문신청"),
|
||||||
PLACED("주문수락"),
|
ACCEPTED("주문수락"),
|
||||||
REJECT("주문거절"),
|
REJECTED("주문거절"),
|
||||||
FAIL("주문실패");
|
WAITING("픽업대기"),
|
||||||
|
FINISHED("픽업완료"),
|
||||||
|
FAILED("실패");
|
||||||
|
|
||||||
private String message;
|
private String message;
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class OrderRepositoryCustom {
|
|||||||
order.orderTime.between(start, end),
|
order.orderTime.between(start, end),
|
||||||
order.storeId.eq(storeId),
|
order.storeId.eq(storeId),
|
||||||
order.orderStatus.ne(OrderStatus.PENDING),
|
order.orderStatus.ne(OrderStatus.PENDING),
|
||||||
order.orderStatus.ne(OrderStatus.FAIL)
|
order.orderStatus.ne(OrderStatus.FAILED)
|
||||||
)
|
)
|
||||||
.orderBy(order.id.desc())
|
.orderBy(order.id.desc())
|
||||||
.limit(pageSize + 1)
|
.limit(pageSize + 1)
|
||||||
|
|||||||
@@ -9,15 +9,9 @@ import com.justpickup.orderservice.domain.order.repository.OrderRepositoryCustom
|
|||||||
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
||||||
import com.justpickup.orderservice.domain.orderItem.entity.OrderItem;
|
import com.justpickup.orderservice.domain.orderItem.entity.OrderItem;
|
||||||
import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption;
|
import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption;
|
||||||
import com.justpickup.orderservice.global.client.store.GetItemsResponse;
|
import com.justpickup.orderservice.global.client.store.*;
|
||||||
import com.justpickup.orderservice.global.client.store.GetStoreResponse;
|
|
||||||
import com.justpickup.orderservice.global.client.store.StoreByUserIdResponse;
|
|
||||||
import com.justpickup.orderservice.global.client.store.StoreClient;
|
|
||||||
import com.justpickup.orderservice.global.client.user.GetCustomerResponse;
|
import com.justpickup.orderservice.global.client.user.GetCustomerResponse;
|
||||||
import com.justpickup.orderservice.global.client.user.UserClient;
|
import com.justpickup.orderservice.global.client.user.UserClient;
|
||||||
import com.justpickup.orderservice.global.client.store.GetItemResponse;
|
|
||||||
import com.justpickup.orderservice.global.client.store.GetStoreReseponse;
|
|
||||||
import com.justpickup.orderservice.global.client.store.StoreClient;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -25,12 +19,10 @@ import org.springframework.data.domain.Pageable;
|
|||||||
import org.springframework.data.domain.SliceImpl;
|
import org.springframework.data.domain.SliceImpl;
|
||||||
import org.springframework.data.support.PageableExecutionUtils;
|
import org.springframework.data.support.PageableExecutionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import javax.persistence.EntityManager;
|
import java.util.stream.Collectors;
|
||||||
import javax.persistence.PersistenceContext;
|
|
||||||
|
|
||||||
import static java.util.stream.Collectors.toList;
|
import static java.util.stream.Collectors.toList;
|
||||||
import static java.util.stream.Collectors.toMap;
|
import static java.util.stream.Collectors.toMap;
|
||||||
@@ -258,7 +250,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
public void saveOrder(Long userId) {
|
public void saveOrder(Long userId) {
|
||||||
orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING)
|
orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING)
|
||||||
.orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다."))
|
.orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다."))
|
||||||
.order();
|
.placed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class OrderController {
|
|||||||
public ResponseEntity<Result> patchOrder(@PathVariable("orderId") Long orderId,
|
public ResponseEntity<Result> patchOrder(@PathVariable("orderId") Long orderId,
|
||||||
@RequestBody PatchOrderRequest patchOrderRequest) {
|
@RequestBody PatchOrderRequest patchOrderRequest) {
|
||||||
OrderStatus orderStatus = patchOrderRequest.getOrderStatus();
|
OrderStatus orderStatus = patchOrderRequest.getOrderStatus();
|
||||||
if (orderStatus != OrderStatus.PLACED && orderStatus != OrderStatus.REJECT) {
|
if (orderStatus != OrderStatus.PLACED && orderStatus != OrderStatus.REJECTED) {
|
||||||
throw new OrderException("주문 수락, 거절 외에는 변경 불가능합니다.");
|
throw new OrderException("주문 수락, 거절 외에는 변경 불가능합니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ public class SqlCommandLineRunner implements CommandLineRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Order order = Order.of(userId, userCouponId, storeId, orderItems);
|
Order order = Order.of(userId, userCouponId, storeId, orderItems);
|
||||||
if (i % 2 == 0) order.setOrderStatus(OrderStatus.ORDER);
|
if (i % 2 == 0) order.setOrderStatus(OrderStatus.FINISHED);
|
||||||
else order.setOrderStatus(OrderStatus.REJECT);
|
else order.setOrderStatus(OrderStatus.REJECTED);
|
||||||
orders.add(order);
|
orders.add(order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class OrderOwnerApiControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_Order order = _Order.builder()
|
_Order order = _Order.builder()
|
||||||
.id(i).userId(i + 10).orderStatus(OrderStatus.ORDER)
|
.id(i).userId(i + 10).orderStatus(OrderStatus.ACCEPTED)
|
||||||
.orderTime(LocalDateTime.now()).orderItems(orderItems).storeName("가게명" + i)
|
.orderTime(LocalDateTime.now()).orderItems(orderItems).storeName("가게명" + i)
|
||||||
.build();
|
.build();
|
||||||
orders.add(order);
|
orders.add(order);
|
||||||
@@ -208,7 +208,7 @@ class OrderOwnerApiControllerTest {
|
|||||||
.id(2L)
|
.id(2L)
|
||||||
.userId(1L)
|
.userId(1L)
|
||||||
.orderItems(List.of(orderItemDto_102, orderItemDto_103))
|
.orderItems(List.of(orderItemDto_102, orderItemDto_103))
|
||||||
.orderStatus(OrderStatus.FAIL)
|
.orderStatus(OrderStatus.FAILED)
|
||||||
.orderTime(LocalDateTime.of(2022, 2, 3, 15, 0, 0))
|
.orderTime(LocalDateTime.of(2022, 2, 3, 15, 0, 0))
|
||||||
.build();
|
.build();
|
||||||
orderDto_2.changeUserName("닉네임");
|
orderDto_2.changeUserName("닉네임");
|
||||||
|
|||||||
@@ -29,29 +29,29 @@ const routes = [
|
|||||||
component: DashboardLayout,
|
component: DashboardLayout,
|
||||||
beforeEnter: authCheck,
|
beforeEnter: authCheck,
|
||||||
children: [
|
children: [
|
||||||
{
|
|
||||||
path: "/dashboard",
|
|
||||||
name: 'dashboard',
|
|
||||||
component: () => import('./../views/Dashboard')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/category',
|
path: '/category',
|
||||||
name: 'category',
|
name: 'category',
|
||||||
|
beforeEnter: authCheck,
|
||||||
component: () => import('./../views/Category')
|
component: () => import('./../views/Category')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/menu',
|
path: '/menu',
|
||||||
name: 'menu',
|
name: 'menu',
|
||||||
|
beforeEnter: authCheck,
|
||||||
component: () => import('./../views/Menu')
|
component: () => import('./../views/Menu')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/prev-order',
|
path: '/prev-order',
|
||||||
name: 'prev-order',
|
name: 'prev-order',
|
||||||
|
beforeEnter: authCheck,
|
||||||
component: () => import('./../views/PrevOrder')
|
component: () => import('./../views/PrevOrder')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/order',
|
path: '/order',
|
||||||
name: 'order',
|
name: 'order',
|
||||||
|
beforeEnter: authCheck,
|
||||||
component: () => import('./../views/Order.vue')
|
component: () => import('./../views/Order.vue')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,212 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="dashboard">
|
|
||||||
<v-subheader class="py-0 d-flex justify-space-between rounded-lg">
|
|
||||||
<h3>Dashboard</h3>
|
|
||||||
<v-btn color="success">
|
|
||||||
View Orders
|
|
||||||
</v-btn>
|
|
||||||
</v-subheader>
|
|
||||||
<br>
|
|
||||||
<v-row>
|
|
||||||
<v-col lg="7" cols="12">
|
|
||||||
<v-alert dense text type="success">
|
|
||||||
Login Successfully! Welcome to <strong>Web Burden</strong>
|
|
||||||
</v-alert>
|
|
||||||
<v-row>
|
|
||||||
<v-col lg="6" cols="12" v-for="(item,index) in activityLog" :key="index">
|
|
||||||
<v-card elevation="2" class="rounded-lg">
|
|
||||||
<v-card-text class="d-flex justify-space-between align-center">
|
|
||||||
<div>
|
|
||||||
<strong>{{ item.title }}</strong> <br>
|
|
||||||
<span>Last 3 weeks</span>
|
|
||||||
</div>
|
|
||||||
<v-avatar size="60" :color="item.color" style="border: 3px solid #444">
|
|
||||||
<span style="color: white">{{item.amount}} +</span>
|
|
||||||
</v-avatar>
|
|
||||||
</v-card-text>
|
|
||||||
<v-card-actions class="d-flex justify-space-between">
|
|
||||||
|
|
||||||
|
|
||||||
</v-card-actions>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col cols="12" lg="5">
|
|
||||||
<v-card>
|
|
||||||
<v-card-title>Activities</v-card-title>
|
|
||||||
<v-card-text class="py-0">
|
|
||||||
<v-timeline align-top dense>
|
|
||||||
<v-timeline-item color="indigo" small>
|
|
||||||
<strong>5 Minuts ago</strong>
|
|
||||||
<div class="text-caption">
|
|
||||||
You have new order please check this out
|
|
||||||
</div>
|
|
||||||
</v-timeline-item>
|
|
||||||
<v-timeline-item color="green" small>
|
|
||||||
<strong>35 Minuts ago</strong>
|
|
||||||
<div class="text-caption mb-2">
|
|
||||||
A Product has delivered!
|
|
||||||
</div>
|
|
||||||
</v-timeline-item>
|
|
||||||
|
|
||||||
<v-timeline-item color="indigo" small>
|
|
||||||
<strong>44 Minuts ago</strong>
|
|
||||||
<div class="text-caption">
|
|
||||||
You have new order please check this out
|
|
||||||
</div>
|
|
||||||
</v-timeline-item>
|
|
||||||
</v-timeline>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
<v-col>
|
|
||||||
<v-card>
|
|
||||||
<v-data-table
|
|
||||||
caption="Recent Order list"
|
|
||||||
:headers="headers"
|
|
||||||
:items="desserts"
|
|
||||||
:items-per-page="5"
|
|
||||||
class="elevation-1"
|
|
||||||
>
|
|
||||||
<template v-slot:item.action="">
|
|
||||||
<v-btn color="success" outlined small shaped >View</v-btn>
|
|
||||||
</template>
|
|
||||||
</v-data-table>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: "Dashboard",
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
activityLog: [
|
|
||||||
{title: 'Total Products', amount: 50, icon: 'mdi-account', color: 'cyan lighten-3'},
|
|
||||||
{title: 'Total Customer', amount: 3433, icon: 'mdi-account-group-outline', color: 'green darken-2'},
|
|
||||||
{title: 'Total Sale', amount: 3433, icon: 'mdi-account-group-outline', color: 'blue-grey darken-1'},
|
|
||||||
{
|
|
||||||
title: 'Pending Orders',
|
|
||||||
amount: 3433,
|
|
||||||
icon: 'mdi-account-group-outline',
|
|
||||||
color: 'deep-orange darken-1'
|
|
||||||
},
|
|
||||||
],
|
|
||||||
headers: [
|
|
||||||
{
|
|
||||||
text: 'Dessert (100g serving)',
|
|
||||||
align: 'start',
|
|
||||||
sortable: false,
|
|
||||||
value: 'name',
|
|
||||||
},
|
|
||||||
{text: 'Calories', value: 'calories'},
|
|
||||||
{text: 'Fat (g)', value: 'fat'},
|
|
||||||
{text: 'Carbs (g)', value: 'carbs'},
|
|
||||||
{text: 'Protein (g)', value: 'protein'},
|
|
||||||
{text: 'Iron (%)', value: 'iron'},
|
|
||||||
{text: 'Actions', value: 'action'},
|
|
||||||
],
|
|
||||||
desserts: [
|
|
||||||
{
|
|
||||||
name: 'Frozen Yogurt',
|
|
||||||
calories: 159,
|
|
||||||
fat: 6.0,
|
|
||||||
carbs: 24,
|
|
||||||
protein: 4.0,
|
|
||||||
iron: '1%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Ice cream sandwich',
|
|
||||||
calories: 237,
|
|
||||||
fat: 9.0,
|
|
||||||
carbs: 37,
|
|
||||||
protein: 4.3,
|
|
||||||
iron: '1%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Eclair',
|
|
||||||
calories: 262,
|
|
||||||
fat: 16.0,
|
|
||||||
carbs: 23,
|
|
||||||
protein: 6.0,
|
|
||||||
iron: '7%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Cupcake',
|
|
||||||
calories: 305,
|
|
||||||
fat: 3.7,
|
|
||||||
carbs: 67,
|
|
||||||
protein: 4.3,
|
|
||||||
iron: '8%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Gingerbread',
|
|
||||||
calories: 356,
|
|
||||||
fat: 16.0,
|
|
||||||
carbs: 49,
|
|
||||||
protein: 3.9,
|
|
||||||
iron: '16%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Jelly bean',
|
|
||||||
calories: 375,
|
|
||||||
fat: 0.0,
|
|
||||||
carbs: 94,
|
|
||||||
protein: 0.0,
|
|
||||||
iron: '0%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Lollipop',
|
|
||||||
calories: 392,
|
|
||||||
fat: 0.2,
|
|
||||||
carbs: 98,
|
|
||||||
protein: 0,
|
|
||||||
iron: '2%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Honeycomb',
|
|
||||||
calories: 408,
|
|
||||||
fat: 3.2,
|
|
||||||
carbs: 87,
|
|
||||||
protein: 6.5,
|
|
||||||
iron: '45%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Donut',
|
|
||||||
calories: 452,
|
|
||||||
fat: 25.0,
|
|
||||||
carbs: 51,
|
|
||||||
protein: 4.9,
|
|
||||||
iron: '22%',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'KitKat',
|
|
||||||
calories: 518,
|
|
||||||
fat: 26.0,
|
|
||||||
carbs: 65,
|
|
||||||
protein: 7,
|
|
||||||
iron: '6%',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onButtonClick(item) {
|
|
||||||
console.log('click on ' + item.no)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.overlap-icon {
|
|
||||||
position: absolute;
|
|
||||||
top: -33px;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 12px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- <v-navigation-drawer v-model="drawer" app> -->
|
<!-- <v-navigation-drawer v-model="drawer" app> -->
|
||||||
<v-navigation-drawer app>
|
<v-navigation-drawer
|
||||||
|
v-model="drawer"
|
||||||
|
app>
|
||||||
<v-img
|
<v-img
|
||||||
height="140"
|
height="140"
|
||||||
class="pa-4"
|
class="pa-4"
|
||||||
src="https://preview.pixlr.com/images/800wm/1439/2/1439104804.jpg"
|
src="https://preview.pixlr.com/images/800wm/1439/2/1439104804.jpg"
|
||||||
|
|
||||||
>
|
>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<v-avatar class="mb-4" color="grey darken-1" size="64">
|
<v-avatar class="mb-4" color="grey darken-1" size="64">
|
||||||
@@ -18,13 +21,13 @@
|
|||||||
</v-img>
|
</v-img>
|
||||||
<v-divider></v-divider>
|
<v-divider></v-divider>
|
||||||
<v-list>
|
<v-list>
|
||||||
<v-list-item v-for="[icon, text] in links" :key="icon" link>
|
<v-list-item v-for="(link,index) in links" :key="link.icon" link @click="clickGo(index, link.url)">
|
||||||
<v-list-item-icon>
|
<v-list-item-icon>
|
||||||
<v-icon>{{ icon }}</v-icon>
|
<v-icon>{{ link.icon }}</v-icon>
|
||||||
</v-list-item-icon>
|
</v-list-item-icon>
|
||||||
|
|
||||||
<v-list-item-content>
|
<v-list-item-content>
|
||||||
<v-list-item-title>{{ text }}</v-list-item-title>
|
<v-list-item-title>{{ link.name }}</v-list-item-title>
|
||||||
</v-list-item-content>
|
</v-list-item-content>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
@@ -38,14 +41,26 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
links: [
|
links: [
|
||||||
["mdi-microsoft-windows", "Dashboard"],
|
{name: "지난 주문", url: "/prev-order", icon: "mdi-home-outline"},
|
||||||
["mdi-account", "Profile"],
|
{name: "카테고리", url: "/category", icon: "mdi-magnify"},
|
||||||
["mdi-clipboard-list-outline", "Products"],
|
{name: "주문", url: "/order", icon: "mdi-cards-heart-outline"},
|
||||||
["mdi-card-account-details-outline", "Orders"],
|
{name: "메뉴 관리", url: "/menu", icon: "mdi-cards-heart-outline"},
|
||||||
["mdi-cog", "System Setting"],
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
clickGo: function (index, url) {
|
||||||
|
this.value = index;
|
||||||
|
this.$router.push(url);
|
||||||
|
}
|
||||||
|
},mounted() {
|
||||||
|
const path =this.$route.path
|
||||||
|
this.links.forEach((link, index) => {
|
||||||
|
if(link.url === path){
|
||||||
|
this.value = index
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user