Files
smart-cropx-ui/src/stores/modules/asset.ts
peng 68d9d97142 refactor: 优化认证系统和组件类型安全性
- 新增 safeLocalStorage 工具函数增强本地存储安全性
- 简化认证流程,重构用户数据结构和 token 管理
- 修复多个模块的 TypeScript 类型错误和导入问题
- 优化状态管理,重构各模块 store 结构
- 清理冗余代码,移除未使用的组件和函数
- 改进错误处理和边界情况处理
- 更新配置文件以支持最新的类型检查

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 14:52:52 +08:00

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;