feat: 系统功能更新 - 添加错误统计、数据初始化、订单调度等功能

This commit is contained in:
AIGC Developer
2025-12-20 15:24:58 +08:00
parent 0933031b59
commit 5344148a1c
70 changed files with 3649 additions and 688 deletions

View File

@@ -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;