yeg
2026-09-08 f1b8fedbe35bf8fa5e697c31cf49bff5c8d2d7de
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 }
}