1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| import { ref } from 'vue'
|
| export type TestStatus = '待测试' | '检测中' | '暂停' | '检测完成' | '未知'
| export type ReceptionStatus = '未开始接收' | '接收中' | '暂停接收' | '已结束接收' | '未知'
|
| export interface TestRecord {
| id: number
| name: string
| type: string
| batteryNo: string
| batteryGroup: string
| batteryCount: number
| createdAt: string
| startedAt: string
| endedAt: string
| purpose: string
| owner: string
| remark: string
| status: TestStatus
| receptionStatus?: ReceptionStatus
| editable?: boolean
| }
|
| const STORAGE_KEY = 'battery_detection_tests_v1'
| const seedRecords: TestRecord[] = [
| { id: 1024, name: '高温循环性能测试', type: '寿命循环', batteryNo: 'SP26-214、SP26-215、SP26-216、SP26-217', batteryGroup: '高温循环 A 组', batteryCount: 8, createdAt: '2026-07-10 14:32', startedAt: '2026-07-10 14:40', endedAt: '-', purpose: '验证高温环境循环寿命', owner: '张工', remark: 'A-01 / 12通道', status: '检测中' },
| { id: 1023, name: '电芯容量一致性测试', type: '容量一致性', batteryNo: 'SP26-214、SP26-215、SP26-216', batteryGroup: '容量一致性 A 组', batteryCount: 6, createdAt: '2026-07-10 11:18', startedAt: '2026-07-10 11:30', endedAt: '-', purpose: '筛查批次容量离散度', owner: '李工', remark: '存在2项预警', status: '检测中' },
| { id: 1022, name: '低温充放电测试', type: '低温性能', batteryNo: 'LT25-01、LT25-02', batteryGroup: '低温性能组', batteryCount: 4, createdAt: '2026-07-09 16:06', startedAt: '2026-07-09 16:22', endedAt: '-', purpose: '评估-20℃放电性能', owner: '周工', remark: '人工暂停复核', status: '暂停' },
| { id: 1021, name: '电芯老化寿命测试', type: '寿命循环', batteryNo: 'SP27-1、SP27-2', batteryGroup: '老化寿命组', batteryCount: 8, createdAt: '2026-07-09 09:42', startedAt: '2026-07-09 10:00', endedAt: '-', purpose: '验证长期循环衰减', owner: '王工', remark: 'A-02 / 8通道', status: '检测中' },
| { id: 1020, name: '3C倍率放电验证', type: '倍率性能', batteryNo: 'HP26-01、HP26-02', batteryGroup: '倍率性能组', batteryCount: 4, createdAt: '2026-07-08 17:26', startedAt: '-', endedAt: '-', purpose: '验证3C持续放电能力', owner: '赵工', remark: '等待接入检测柜', status: '待测试' },
| { id: 1019, name: '常温容量复测', type: '容量一致性', batteryNo: 'SP27-1、SP27-2', batteryGroup: '容量一致性组', batteryCount: 4, createdAt: '2026-07-08 13:10', startedAt: '2026-07-08 13:24', endedAt: '2026-07-09 08:36', purpose: '复核首轮容量结果', owner: '李工', remark: '数据已归档', status: '检测完成' },
| { id: 1018, name: '过充安全边界测试', type: '安全性能', batteryNo: 'SAFE-01、SAFE-02', batteryGroup: '安全测试组', batteryCount: 2, createdAt: '2026-07-08 09:05', startedAt: '2026-07-08 09:30', endedAt: '2026-07-08 15:12', purpose: '确认过充保护阈值', owner: '陈工', remark: '安全区S-02', status: '检测完成' },
| { id: 1017, name: '低温启动能力验证', type: '低温性能', batteryNo: 'LT25-01、LT25-02', batteryGroup: '低温性能组', batteryCount: 3, createdAt: '2026-07-07 14:52', startedAt: '2026-07-07 15:10', endedAt: '2026-07-08 10:18', purpose: '验证低温工况启动能力', owner: '周工', remark: '无异常', status: '检测完成' },
| { id: 1016, name: '1C标准循环测试', type: '寿命循环', batteryNo: 'SP26-1、SP26-2', batteryGroup: '标准循环组', batteryCount: 4, createdAt: '2026-07-07 10:20', startedAt: '2026-07-07 10:42', endedAt: '2026-07-09 18:06', purpose: '建立标准循环基线', owner: '张工', remark: '循环100次', status: '检测完成' },
| { id: 1015, name: '高倍率温升测试', type: '倍率性能', batteryNo: 'HP26-01、HP26-02', batteryGroup: '倍率性能组', batteryCount: 4, createdAt: '2026-07-06 15:35', startedAt: '-', endedAt: '-', purpose: '记录高倍率放电温升', owner: '赵工', remark: '等待设备校准', status: '待测试' },
| { id: 1014, name: '批次容量抽检', type: '容量一致性', batteryNo: 'SP27-1、SP27-2', batteryGroup: '批次抽检组', batteryCount: 4, createdAt: '2026-07-06 09:12', startedAt: '2026-07-06 09:30', endedAt: '2026-07-06 17:46', purpose: '批次入库质量抽检', owner: '李工', remark: '合格率98.6%', status: '检测完成' },
| { id: 1013, name: '短路保护响应测试', type: '安全性能', batteryNo: 'SAFE-03', batteryGroup: '安全测试组', batteryCount: 1, createdAt: '2026-07-05 14:48', startedAt: '2026-07-05 15:00', endedAt: '2026-07-05 16:15', purpose: '确认短路保护响应时间', owner: '陈工', remark: '数据已复核', status: '检测完成' },
| ]
|
| function loadRecords() {
| try {
| const stored = localStorage.getItem(STORAGE_KEY)
| if (stored) return JSON.parse(stored) as TestRecord[]
| } catch {
| localStorage.removeItem(STORAGE_KEY)
| }
| return seedRecords
| }
|
| const records = ref<TestRecord[]>(loadRecords())
| function persist() { localStorage.setItem(STORAGE_KEY, JSON.stringify(records.value)) }
| function nowString() {
| const date = new Date()
| const pad = (value: number) => String(value).padStart(2, '0')
| return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`
| }
|
| export function useTests() {
| function createTest(data: Omit<TestRecord, 'id' | 'createdAt' | 'startedAt' | 'endedAt' | 'status'>) {
| const id = Math.max(1000, ...records.value.map(item => item.id)) + 1
| records.value.unshift({ ...data, id, createdAt: nowString(), startedAt: '-', endedAt: '-', status: '待测试' })
| persist()
| return id
| }
| function updateTestStatus(id: number, status: TestStatus) {
| const target = records.value.find(item => item.id === id)
| if (!target) return false
| target.status = status
| if (status === '检测中' && target.startedAt === '-') target.startedAt = nowString()
| if (status === '检测完成') target.endedAt = nowString()
| persist()
| return true
| }
| function deleteTest(id: number) {
| records.value = records.value.filter(item => item.id !== id)
| persist()
| }
| return { records, createTest, updateTestStatus, deleteTest }
| }
|
|