- 新增 safeLocalStorage 工具函数增强本地存储安全性 - 简化认证流程,重构用户数据结构和 token 管理 - 修复多个模块的 TypeScript 类型错误和导入问题 - 优化状态管理,重构各模块 store 结构 - 清理冗余代码,移除未使用的组件和函数 - 改进错误处理和边界情况处理 - 更新配置文件以支持最新的类型检查 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
142 lines
3.6 KiB
TypeScript
142 lines
3.6 KiB
TypeScript
import { create } from 'zustand';
|
|
|
|
// 农业资产接口
|
|
export interface AgriculturalAsset {
|
|
id: string;
|
|
name: string;
|
|
type: string;
|
|
category: string;
|
|
brand?: string | null;
|
|
model?: string | null;
|
|
serial_number?: string | null;
|
|
purchase_date?: string | null;
|
|
purchase_price?: number | null;
|
|
current_value?: number | null;
|
|
depreciation_rate?: number | null;
|
|
status: 'active' | 'maintenance' | 'retired' | 'lost';
|
|
location?: string | null;
|
|
assigned_to?: string | null;
|
|
warranty_expiry?: string | null;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
// 维护记录接口
|
|
export interface MaintenanceRecord {
|
|
id: string;
|
|
asset_id: string;
|
|
maintenance_type: string;
|
|
description?: string | null;
|
|
cost?: number | null;
|
|
performed_by?: string | null;
|
|
performed_date?: string | null;
|
|
next_maintenance_date?: string | null;
|
|
status: 'scheduled' | 'in_progress' | 'completed' | 'cancelled';
|
|
notes?: string | null;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
// 资产库存接口
|
|
export interface AssetInventory {
|
|
id: string;
|
|
asset_type: string;
|
|
name: string;
|
|
description?: string | null;
|
|
quantity: number;
|
|
unit: string;
|
|
unit_cost?: number | null;
|
|
total_value?: number | null;
|
|
reorder_level?: number | null;
|
|
location?: string | null;
|
|
supplier?: string | null;
|
|
last_updated?: string | null;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
// Asset state interface
|
|
export interface AssetState {
|
|
assets: AgriculturalAsset[];
|
|
currentAsset: AgriculturalAsset | null;
|
|
maintenanceRecords: MaintenanceRecord[];
|
|
currentMaintenance: MaintenanceRecord | null;
|
|
assetInventory: AssetInventory[];
|
|
currentInventory: AssetInventory | null;
|
|
|
|
// Actions
|
|
setAssets: (assets: AgriculturalAsset[]) => void;
|
|
setCurrentAsset: (asset: AgriculturalAsset | null) => void;
|
|
setMaintenanceRecords: (records: MaintenanceRecord[]) => void;
|
|
setCurrentMaintenance: (record: MaintenanceRecord | null) => void;
|
|
setAssetInventory: (inventory: AssetInventory[]) => void;
|
|
setCurrentInventory: (inventory: AssetInventory | null) => void;
|
|
|
|
// Getters
|
|
getAssets: () => AgriculturalAsset[];
|
|
getCurrentAsset: () => AgriculturalAsset | null;
|
|
getMaintenanceRecords: () => MaintenanceRecord[];
|
|
getCurrentMaintenance: () => MaintenanceRecord | null;
|
|
getAssetInventory: () => AssetInventory[];
|
|
getCurrentInventory: () => AssetInventory | null;
|
|
}
|
|
|
|
// Create Asset store
|
|
export const useAssetStore = create<AssetState>((set, get) => ({
|
|
assets: [],
|
|
currentAsset: null,
|
|
maintenanceRecords: [],
|
|
currentMaintenance: null,
|
|
assetInventory: [],
|
|
currentInventory: null,
|
|
|
|
setAssets: (assets: AgriculturalAsset[]) => {
|
|
set({ assets });
|
|
},
|
|
|
|
setCurrentAsset: (asset: AgriculturalAsset | null) => {
|
|
set({ currentAsset: asset });
|
|
},
|
|
|
|
setMaintenanceRecords: (records: MaintenanceRecord[]) => {
|
|
set({ maintenanceRecords: records });
|
|
},
|
|
|
|
setCurrentMaintenance: (record: MaintenanceRecord | null) => {
|
|
set({ currentMaintenance: record });
|
|
},
|
|
|
|
setAssetInventory: (inventory: AssetInventory[]) => {
|
|
set({ assetInventory: inventory });
|
|
},
|
|
|
|
setCurrentInventory: (inventory: AssetInventory | null) => {
|
|
set({ currentInventory: inventory });
|
|
},
|
|
|
|
getAssets: () => {
|
|
return get().assets;
|
|
},
|
|
|
|
getCurrentAsset: () => {
|
|
return get().currentAsset;
|
|
},
|
|
|
|
getMaintenanceRecords: () => {
|
|
return get().maintenanceRecords;
|
|
},
|
|
|
|
getCurrentMaintenance: () => {
|
|
return get().currentMaintenance;
|
|
},
|
|
|
|
getAssetInventory: () => {
|
|
return get().assetInventory;
|
|
},
|
|
|
|
getCurrentInventory: () => {
|
|
return get().currentInventory;
|
|
},
|
|
}));
|
|
|
|
export default useAssetStore; |