feat: fix stock check and add admin order status update
Build and Push Docker Image / build-and-push (push) Successful in 1m3s
Build and Push Docker Image / deploy (push) Successful in 10s

This commit is contained in:
nuyue
2026-07-17 05:26:30 +08:00
parent 5669782e2d
commit 9107affb85
4 changed files with 100 additions and 7 deletions
+1
View File
@@ -152,6 +152,7 @@ export const adminApi = {
getOrderById: (id: number) => api.get(`/admin/orders/${id}`),
exportOrders: () => api.get('/admin/orders/export'),
processRefund: (id: number, data: any) => api.put(`/admin/orders/${id}/refund`, data),
updateOrderStatus: (id: number, data: any) => api.put(`/admin/orders/${id}/status`, data),
getSuppliers: () => api.get('/admin/suppliers'),
createSupplier: (data: any) => api.post('/admin/suppliers', data),
+41 -1
View File
@@ -48,13 +48,33 @@
</div>
<div class="detail-item">
<span class="label">状态</span>
<span class="value"><el-tag>{{ statusText(currentOrder.status) }}</el-tag></span>
<span class="value">
<el-select v-model="editStatus" size="small" style="width: 120px">
<el-option label="待支付" value="pending_payment" />
<el-option label="待确认" value="pending_confirm" />
<el-option label="待发货" value="pending_ship" />
<el-option label="已发货" value="shipped" />
<el-option label="已完成" value="completed" />
<el-option label="退款中" value="refunding" />
<el-option label="已退款" value="refunded" />
<el-option label="已取消" value="cancelled" />
</el-select>
</span>
</div>
<div class="detail-item">
<span class="label">快递单号</span>
<span class="value">
<el-input v-model="editTrackingNumber" size="small" style="width: 200px" placeholder="输入快递单号" />
</span>
</div>
<div class="detail-item">
<span class="label">创建时间</span>
<span class="value">{{ formatDate(currentOrder.created_at) }}</span>
</div>
</div>
<div style="margin-top: 12px">
<el-button type="primary" size="small" @click="saveStatus">保存修改</el-button>
</div>
</div>
<div class="detail-section" v-if="currentOrder.shipping_address">
@@ -170,6 +190,8 @@ const paginatedOrders = computed(() => {
const detailVisible = ref(false)
const currentOrder = ref<any>(null)
const editStatus = ref('')
const editTrackingNumber = ref('')
const statusMap: Record<string, string> = {
pending_payment: '待支付', pending_confirm: '待确认', pending_ship: '待发货',
@@ -201,12 +223,30 @@ async function viewDetail(row: any) {
try {
const res: any = await adminApi.getOrderById(row.id)
currentOrder.value = res.data
editStatus.value = res.data.status
editTrackingNumber.value = res.data.tracking_number || ''
detailVisible.value = true
} catch {
ElMessage.error('获取订单详情失败')
}
}
async function saveStatus() {
if (!currentOrder.value) return
try {
await adminApi.updateOrderStatus(currentOrder.value.id, {
status: editStatus.value,
tracking_number: editTrackingNumber.value
})
ElMessage.success('订单状态已更新')
const res: any = await adminApi.getOrderById(currentOrder.value.id)
currentOrder.value = res.data
await fetchOrders()
} catch {
ElMessage.error('更新失败')
}
}
async function processRefund(id: number, status: string) {
await adminApi.processRefund(id, { status })
ElMessage.success('已处理')