orderData.ts 3.22 KB
import type { Order } from '../types/order'

const CITIES = ['南京市', '无锡市', '徐州市', '常州市', '苏州市', '南通市', '连云港市', '淮安市', '盐城市', '扬州市', '镇江市', '泰州市', '宿迁市']
const STATUSES = ['未开始', '进行中', '已完成', '无法质检'] as const
const CHEATING_REASONS = ['在家质检', '一直点击无法质检', '其他']

export const generateMockOrders = (count: number = 20): Order[] => {
    return Array.from({ length: count }).map((_, index) => {
        const isCheating = Math.random() > 0.8
        const status = STATUSES[Math.floor(Math.random() * STATUSES.length)] || '未开始'
        const city = CITIES[Math.floor(Math.random() * CITIES.length)] || '南京市'

        return {
            id: `APPLY_${Date.now()}_${index}`,
            applyId: `APP${10000 + index}`,
            workerId: `W${2000 + index}`,
            businessAccount: `1${Math.floor(Math.random() * 10000000000)}`,
            orderIds: [`ORD_${index}_1`, `ORD_${index}_2`],
            city: city,
            status: status,
            cannotQcReason: status === '无法质检' ? '用户拒绝配合' : undefined,
            startTime: '2023-10-01 10:00:00',
            endTime: status === '已完成' ? '2023-10-01 11:30:00' : undefined,
            noPhotoCount: Math.floor(Math.random() * 5),
            manualInputCount: Math.floor(Math.random() * 3),
            envAbnormalCount: Math.floor(Math.random() * 2),
            isCheating: isCheating,
            cheatingReason: isCheating ? CHEATING_REASONS[0] : undefined,
            cheatingTime: isCheating ? '2023-10-01 12:00:00' : undefined
        }
    })
}

import type { OrderDetail, QcStep, QcVideo } from '../types/order'

export const getMockOrderDetail = (id: string): OrderDetail => {
    const steps: QcStep[] = [
        { name: '工服检测', duration: '5s', result: '通过', imageUrl: 'https://placehold.co/100x100?text=Uniform', isAbnormal: 0 },
        { name: '光猫识别', duration: '12s', result: '通过', imageUrl: 'https://placehold.co/100x100?text=Modem', isAbnormal: 0 },
        { name: '机顶盒识别', duration: '8s', result: '通过', imageUrl: 'https://placehold.co/100x100?text=STB', isAbnormal: 0 },
        { name: '环境检测', duration: '15s', result: '通过', imageUrl: 'https://placehold.co/100x100?text=Env', isAbnormal: 1 }
    ]

    const videos: QcVideo[] = [
        { id: 'v1', name: '全流程录像.mp4', thumbnailUrl: 'https://placehold.co/300x200?text=Video1', videoUrl: 'https://www.w3schools.com/html/mov_bbb.mp4' },
        { id: 'v2', name: '异常复核录像.mp4', thumbnailUrl: 'https://placehold.co/300x200?text=Video2', videoUrl: 'https://www.w3schools.com/html/movie.mp4' }
    ]

    // Base random data
    const baseOrder = generateMockOrders(1)[0]
    if (!baseOrder) throw new Error('Failed to generate mock order')

    return {
        ...baseOrder,
        id: id,
        installAddress: '江苏省南京市雨花台区软件大道101号',
        orderType: '装机工单',
        deviceType: 'FTTR全光组网',
        completeTime: baseOrder.status === '已完成' ? '2023-10-01 11:30:00' : undefined,
        totalDuration: '15分30秒',
        steps: steps,
        videos: videos
    }
}