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
80
81
82
83
84
85
| import { ref } from 'vue'
|
| export type TodoStatus = '待处理' | '已处理'
|
| export interface TodoRecord {
| id: number
| content: string
| owner: string
| status: TodoStatus
| creator: string
| createdAt: string
| operatedAt: string
| handleRemark: string
| }
|
| export interface TodoPayload {
| content: string
| owner: string
| creator: string
| }
|
| const STORAGE_KEY = 'battery_detection_todos_v1'
|
| const seedRecords: TodoRecord[] = [
| { id: 7012, content: '复核高温循环测试的壳体温度异常', owner: '张工', status: '待处理', creator: 'Admin', createdAt: '2026-08-06 09:18', operatedAt: '2026-08-06 09:18', handleRemark: '' },
| { id: 7011, content: '确认检测柜 A-03 通道校准结果', owner: '李工', status: '待处理', creator: 'Admin', createdAt: '2026-08-06 08:52', operatedAt: '2026-08-06 08:52', handleRemark: '' },
| { id: 7010, content: '补充 SP2 化成报表测试方法说明', owner: '王工', status: '已处理', creator: '李工', createdAt: '2026-08-05 16:44', operatedAt: '2026-08-06 08:36', handleRemark: '测试方法已补充并提交复核。' },
| { id: 7009, content: '复核低温充放电测试修订数据', owner: '周工', status: '待处理', creator: '王工', createdAt: '2026-08-05 15:20', operatedAt: '2026-08-05 15:20', handleRemark: '' },
| { id: 7008, content: '处理采集器 COL-08 离线告警', owner: '陈工', status: '已处理', creator: 'Admin', createdAt: '2026-08-05 13:08', operatedAt: '2026-08-05 14:16', handleRemark: '重新连接通信线并恢复采集。' },
| { id: 7007, content: '确认容量一致性测试的复测样品', owner: '赵工', status: '待处理', creator: '李工', createdAt: '2026-08-05 11:42', operatedAt: '2026-08-05 11:42', handleRemark: '' },
| { id: 7006, content: '整理首充容量标定拼接报表', owner: '王工', status: '已处理', creator: 'Admin', createdAt: '2026-08-04 17:35', operatedAt: '2026-08-05 10:12', handleRemark: '拼接报表已保存。' },
| { id: 7005, content: '检查 3C 倍率放电测试温升数据', owner: '张工', status: '待处理', creator: 'Admin', createdAt: '2026-08-04 15:26', operatedAt: '2026-08-04 15:26', handleRemark: '' },
| { id: 7004, content: '更新高温 A 批电池组字段模板', owner: '李工', status: '已处理', creator: '周工', createdAt: '2026-08-04 11:10', operatedAt: '2026-08-04 14:28', handleRemark: '字段模板已更新。' },
| { id: 7003, content: '复核过充安全边界测试结论', owner: '陈工', status: '已处理', creator: 'Admin', createdAt: '2026-08-03 16:48', operatedAt: '2026-08-04 09:05', handleRemark: '保护响应符合预期。' },
| { id: 7002, content: '补录低温启动测试环境参数', owner: '赵工', status: '待处理', creator: '王工', createdAt: '2026-08-03 13:24', operatedAt: '2026-08-03 13:24', handleRemark: '' },
| { id: 7001, content: '归档七月检测柜维护记录', owner: '周工', status: '已处理', creator: 'Admin', createdAt: '2026-08-01 09:30', operatedAt: '2026-08-02 16:40', handleRemark: '维护记录已归档。' },
| ]
|
| function loadRecords() {
| try {
| const stored = localStorage.getItem(STORAGE_KEY)
| if (stored) return JSON.parse(stored) as TodoRecord[]
| } catch {
| localStorage.removeItem(STORAGE_KEY)
| }
| return seedRecords
| }
|
| const records = ref<TodoRecord[]>(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 useTodos() {
| function createTodo(payload: TodoPayload) {
| const id = Math.max(7000, ...records.value.map(item => item.id)) + 1
| const timestamp = nowString()
| records.value.unshift({ ...payload, id, status: '待处理', createdAt: timestamp, operatedAt: timestamp, handleRemark: '' })
| persist()
| }
|
| function handleTodo(id: number, remark: string) {
| const target = records.value.find(item => item.id === id)
| if (!target || target.status === '已处理') return false
| target.status = '已处理'
| target.handleRemark = remark
| target.operatedAt = nowString()
| persist()
| return true
| }
|
| function removeTodo(id: number) {
| records.value = records.value.filter(item => item.id !== id)
| persist()
| }
|
| return { records, createTodo, handleTodo, removeTodo }
| }
|
|