feat: 系统功能更新 - 添加错误统计、数据初始化、订单调度等功能
This commit is contained in:
@@ -26,6 +26,10 @@
|
||||
<el-icon><Document /></el-icon>
|
||||
<span>{{ $t('nav.tasks') }}</span>
|
||||
</div>
|
||||
<div v-if="isAdminMode" class="nav-item" @click="goToErrorStats">
|
||||
<el-icon><Warning /></el-icon>
|
||||
<span>错误统计</span>
|
||||
</div>
|
||||
<div v-if="isAdminMode" class="nav-item" @click="goToSettings">
|
||||
<el-icon><Setting /></el-icon>
|
||||
<span>{{ $t('nav.systemSettings') }}</span>
|
||||
@@ -218,7 +222,20 @@
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="label">{{ $t('orders.status') }}:</span>
|
||||
<span class="status-tag" :class="getStatusClass(currentOrderDetail.status)">
|
||||
<el-select
|
||||
v-if="isAdminMode"
|
||||
v-model="editingStatus"
|
||||
size="small"
|
||||
style="width: 120px;"
|
||||
@change="handleStatusChange"
|
||||
>
|
||||
<el-option label="待支付" value="PENDING" />
|
||||
<el-option label="已支付" value="PAID" />
|
||||
<el-option label="已完成" value="COMPLETED" />
|
||||
<el-option label="已取消" value="CANCELLED" />
|
||||
<el-option label="已退款" value="REFUNDED" />
|
||||
</el-select>
|
||||
<span v-else class="status-tag" :class="getStatusClass(currentOrderDetail.status)">
|
||||
{{ getStatusText(currentOrderDetail.status) }}
|
||||
</span>
|
||||
</div>
|
||||
@@ -300,9 +317,10 @@ import {
|
||||
Delete,
|
||||
CreditCard,
|
||||
Wallet,
|
||||
Loading
|
||||
Loading,
|
||||
Warning
|
||||
} from '@element-plus/icons-vue'
|
||||
import { getOrders, getAdminOrders, getOrderStats, deleteOrder as deleteOrderAPI, deleteOrders } from '@/api/orders'
|
||||
import { getOrders, getAdminOrders, getOrderStats, deleteOrder as deleteOrderAPI, deleteOrders, updateOrderStatus } from '@/api/orders'
|
||||
import LanguageSwitcher from '@/components/LanguageSwitcher.vue'
|
||||
|
||||
const router = useRouter()
|
||||
@@ -348,6 +366,10 @@ const goToTasks = () => {
|
||||
router.push('/generate-task-record')
|
||||
}
|
||||
|
||||
const goToErrorStats = () => {
|
||||
router.push('/admin/error-statistics')
|
||||
}
|
||||
|
||||
const goToSettings = () => {
|
||||
router.push('/system-settings')
|
||||
}
|
||||
@@ -502,12 +524,40 @@ const goToPage = (page) => {
|
||||
// 订单详情弹窗相关
|
||||
const orderDetailVisible = ref(false)
|
||||
const currentOrderDetail = ref(null)
|
||||
const editingStatus = ref('')
|
||||
|
||||
const viewOrder = async (order) => {
|
||||
currentOrderDetail.value = order
|
||||
editingStatus.value = order.status || 'PENDING'
|
||||
orderDetailVisible.value = true
|
||||
}
|
||||
|
||||
// 修改订单状态
|
||||
const handleStatusChange = async (newStatus) => {
|
||||
if (!currentOrderDetail.value) return
|
||||
|
||||
try {
|
||||
const response = await updateOrderStatus(currentOrderDetail.value.id, newStatus)
|
||||
if (response.data?.success) {
|
||||
// 更新当前详情
|
||||
currentOrderDetail.value.status = newStatus
|
||||
// 更新列表中的订单
|
||||
const orderIndex = orders.value.findIndex(o => o.id === currentOrderDetail.value.id)
|
||||
if (orderIndex > -1) {
|
||||
orders.value[orderIndex].status = newStatus
|
||||
}
|
||||
ElMessage.success('订单状态更新成功')
|
||||
} else {
|
||||
ElMessage.error(response.data?.message || '更新失败')
|
||||
editingStatus.value = currentOrderDetail.value.status // 恢复原状态
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('更新订单状态失败:', error)
|
||||
ElMessage.error('更新订单状态失败')
|
||||
editingStatus.value = currentOrderDetail.value.status // 恢复原状态
|
||||
}
|
||||
}
|
||||
|
||||
const deleteOrder = async (order) => {
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
@@ -1010,6 +1060,10 @@ const fetchSystemStats = async () => {
|
||||
background: #6366f1;
|
||||
}
|
||||
|
||||
.status-tag.refunded {
|
||||
background: #f97316;
|
||||
}
|
||||
|
||||
.action-link {
|
||||
margin-right: 12px;
|
||||
font-size: 14px;
|
||||
|
||||
Reference in New Issue
Block a user