diff --git a/backend/cmd/server/VERSION b/backend/cmd/server/VERSION index 4af62ef6ed..f928a8a494 100644 --- a/backend/cmd/server/VERSION +++ b/backend/cmd/server/VERSION @@ -1 +1 @@ -0.1.108.143 +0.1.108.144 diff --git a/frontend/src/components/payment/OrderTable.vue b/frontend/src/components/payment/OrderTable.vue new file mode 100644 index 0000000000..73a2ddd94b --- /dev/null +++ b/frontend/src/components/payment/OrderTable.vue @@ -0,0 +1,71 @@ + + + + #{{ value }} + + + {{ value }} + + + + {{ value || row.user_name || '#' + row.user_id }} + ({{ row.user_notes }}) + + + + + ${{ value.toFixed(2) }} + (${{ row.pay_amount.toFixed(2) }}) + + + + {{ t('payment.methods.' + value, value) }} + + + + + + {{ formatDate(value) }} + + + + + + + + diff --git a/frontend/src/views/admin/orders/AdminOrdersView.vue b/frontend/src/views/admin/orders/AdminOrdersView.vue index 6d2db6c93c..b6a902e183 100644 --- a/frontend/src/views/admin/orders/AdminOrdersView.vue +++ b/frontend/src/views/admin/orders/AdminOrdersView.vue @@ -19,33 +19,8 @@ - - #{{ value }} - - {{ value }} - - - - {{ value || row.user_name || '#' + row.user_id }} - ({{ row.user_notes }}) - - - - - ${{ value.toFixed(2) }} - ({{ t('payment.orders.payAmount') }}: ${{ row.pay_amount.toFixed(2) }}) - - - - - - - {{ t('payment.methods.' + value, value) }} - - - {{ formatDateTime(value) }} - - + + @@ -76,7 +51,7 @@ - + @@ -143,15 +118,14 @@ import { useAppStore } from '@/stores/app' import { adminPaymentAPI } from '@/api/admin/payment' import { extractApiErrorMessage } from '@/utils/apiError' import type { PaymentOrder } from '@/types/payment' -import type { Column } from '@/components/common/types' import AppLayout from '@/components/layout/AppLayout.vue' -import DataTable from '@/components/common/DataTable.vue' import Pagination from '@/components/common/Pagination.vue' import BaseDialog from '@/components/common/BaseDialog.vue' import Select from '@/components/common/Select.vue' import Icon from '@/components/icons/Icon.vue' import AdminRefundDialog from '@/components/admin/payment/AdminRefundDialog.vue' import OrderStatusBadge from '@/components/payment/OrderStatusBadge.vue' +import OrderTable from '@/components/payment/OrderTable.vue' interface AuditLog { id: number @@ -225,12 +199,6 @@ const orderTypeFilterOptions = computed(() => [ { value: 'subscription', label: t('payment.admin.subscriptionOrder') }, ]) -const orderColumns = computed((): Column[] => [ - { key: 'id', label: 'ID' }, { key: 'out_trade_no', label: t('payment.orders.orderNo') }, { key: 'user_email', label: t('payment.admin.colUser') }, { key: 'amount', label: t('payment.orders.amount') }, - { key: 'payment_type', label: t('payment.orders.paymentMethod') }, { key: 'status', label: t('payment.orders.status') }, - { key: 'created_at', label: t('payment.orders.createdAt') }, { key: 'actions', label: t('common.actions') }, -]) - async function showOrderDetail(order: PaymentOrder) { selectedOrder.value = order orderAuditLogs.value = [] diff --git a/frontend/src/views/user/UserOrdersView.vue b/frontend/src/views/user/UserOrdersView.vue index fc0c2fc235..51aacf7dc5 100644 --- a/frontend/src/views/user/UserOrdersView.vue +++ b/frontend/src/views/user/UserOrdersView.vue @@ -15,29 +15,8 @@ - - - #{{ value }} - - - {{ value }} - - - - ${{ value.toFixed(2) }} - (${{ row.pay_amount.toFixed(2) }}) - - - - {{ t('payment.methods.' + value, value) }} - - - - - - {{ formatDate(value) }} - - + + @@ -49,7 +28,7 @@ - + [ { value: 'REFUNDED', label: t('payment.status.refunded') }, ]) -const columns = computed((): Column[] => [ - { key: 'id', label: t('payment.orders.orderId') }, - { key: 'out_trade_no', label: t('payment.orders.orderNo') }, - { key: 'amount', label: t('payment.orders.amount') }, - { key: 'payment_type', label: t('payment.orders.paymentMethod') }, - { key: 'status', label: t('payment.orders.status') }, - { key: 'created_at', label: t('payment.orders.createdAt') }, - { key: 'actions', label: t('common.actions') }, -]) - -function formatDate(dateStr: string) { return new Date(dateStr).toLocaleString() } - async function fetchOrders() { loading.value = true try {