UNPKG

@ecomplus/storefront-app

Version:

Vue.js ecommerce app with cart, checkout and account pages

99 lines (87 loc) 2.14 kB
import { i19active, i19inactive, i19FinancialStatus, i19FulfillmentStatus, i19OrderStatus } from '@ecomplus/i18n' import { i18n, formatDate, formatMoney } from '@ecomplus/utils' import ecomPassport from '@ecomplus/passport-client' import APagination from '#components/APagination.vue' import EcOrderInfo from './../EcOrderInfo.vue' export default { name: 'EcOrdersList', components: { EcOrderInfo, APagination }, props: { mergeDictionary: { type: Object, default: () => {} }, ecomPassport: { type: Object, default: () => ecomPassport }, ordersListParams: { type: String, default: '' }, isSubscriptions: Boolean }, data () { return { updateInterval: null, orders: [], totalOrders: 0, currentPage: 1, pageSize: 10 } }, computed: { i19active: () => i18n(i19active), i19inactive: () => i18n(i19inactive) }, methods: { formatDate, formatMoney, i19FinancialStatus: prop => i18n(i19FinancialStatus)[prop], i19FulfillmentStatus: prop => i18n(i19FulfillmentStatus)[prop], i19OrderStatus: prop => i18n(i19OrderStatus)[prop], updateOrders () { return this.ecomPassport.fetchOrdersList((this.currentPage - 1) * this.pageSize) .then(result => { this.orders = result }) .catch(console.error) } }, created () { const startInterval = () => { this.updateInterval = setInterval(this.updateOrders, 7000) } if (this.ecomPassport.checkAuthorization()) { this.ecomPassport.requestApi(`/orders.json?${this.ordersListParams}`) .then(({ data }) => { const { result } = data this.ecomPassport.setCustomer({ orders: result }) this.updateOrders() this.totalOrders = result.length }) .catch(this.updateOrders) .finally(startInterval) } else { this.updateOrders() startInterval() } }, watch: { currentPage () { this.updateOrders() } }, beforeDestroy () { clearInterval(this.updateInterval) } }