feat: 重构质量管理和设备巡检模块

质量管理: 由平铺记录改为任务制工作流(qc_task/qc_task_item/qc_defect三表)
设备巡检: 由点位+记录改为巡检模板制(eqp_checklist/item/record/detail四表)
前端: Quality.vue 支持任务列表+检验项详情+缺陷记录双Tab
前端: Inspection.vue 支持模板管理+项目维护+巡检记录+明细查看

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 16:29:02 +08:00
parent 6ae24cb14d
commit b461f0d2f8
11 changed files with 1645 additions and 749 deletions

View File

@@ -1,37 +1,88 @@
from pydantic import BaseModel
from typing import Optional
from typing import Optional, List
from datetime import datetime
class InspectionLocationCreate(BaseModel):
code: str
name: str
description: Optional[str] = None
class EqpChecklistItemCreate(BaseModel):
item_name: str
item_standard: Optional[str] = None
sort_order: int = 0
class InspectionLocationOut(InspectionLocationCreate):
class EqpChecklistItemOut(EqpChecklistItemCreate):
id: int
checklist_id: int
created_at: datetime
class Config:
from_attributes = True
class InspectionRecordCreate(BaseModel):
location_id: int
class EqpChecklistCreate(BaseModel):
name: str
description: Optional[str] = None
equipment_code: Optional[str] = None
equipment_name: Optional[str] = None
scan_code: Optional[str] = None
inspector: str
result: str = "normal"
period: str = "daily"
items: Optional[List[EqpChecklistItemCreate]] = None
class EqpChecklistUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
equipment_code: Optional[str] = None
equipment_name: Optional[str] = None
period: Optional[str] = None
is_active: Optional[bool] = None
class EqpChecklistOut(BaseModel):
id: int
name: str
description: Optional[str]
equipment_code: Optional[str]
equipment_name: Optional[str]
period: str
is_active: bool
created_at: datetime
class Config:
from_attributes = True
class EqpInspectionDetailCreate(BaseModel):
checklist_item_id: Optional[int] = None
item_name: str
actual_value: Optional[str] = None
is_ok: bool = True
notes: Optional[str] = None
class InspectionRecordOut(InspectionRecordCreate):
class EqpInspectionDetailOut(EqpInspectionDetailCreate):
id: int
location_name: Optional[str] = None
record_id: int
created_at: datetime
class Config:
from_attributes = True
class EqpInspectionRecordCreate(BaseModel):
checklist_id: int
inspector: str
inspect_time: datetime
status: str = "ok"
overall_result: Optional[str] = None
remark: Optional[str] = None
details: Optional[List[EqpInspectionDetailCreate]] = None
class EqpInspectionRecordOut(BaseModel):
id: int
checklist_id: int
checklist_name: Optional[str]
inspector: str
inspect_time: datetime
status: str
overall_result: Optional[str]
remark: Optional[str]
created_at: datetime
class Config:
from_attributes = True