chore: init bj_power monorepo (dashboard/mes/wms/wms_client/workstation), clear subproject git metadata and align naming to folder names

This commit is contained in:
SunYF
2026-08-27 10:09:54 +08:00
commit 1f0ee844a4
408 changed files with 102201 additions and 0 deletions
+125
View File
@@ -0,0 +1,125 @@
import { create } from 'zustand';
import api from '../api/client';
import type {
OverviewData, EquipmentItem, ProgressItem,
AlarmItem, TrendItem, SamplingOverview, SamplingTrendItem,
InspectionOverview, InspectionTrendItem,
DevStatus, CncDisplay, WasherPoint, CncHistoryPoint,
CncOeeItem, WasherOeeItem,
} from '../types';
interface DashboardState {
// Page 1: Overview
overview: OverviewData | null;
equipment: EquipmentItem[];
progress: ProgressItem[];
alarms: AlarmItem[];
trends: TrendItem[];
samplingOverview: SamplingOverview | null;
samplingTrends: SamplingTrendItem[];
inspectionOverview: InspectionOverview | null;
inspectionTrends: InspectionTrendItem[];
loading: boolean;
// Page 2: Machine Monitor
devStatus: DevStatus[];
cncLatest: CncDisplay[];
washerLatest: WasherPoint[];
cncHistory: CncHistoryPoint[];
cncOee: CncOeeItem[];
washerOee: WasherOeeItem[];
monitorLoading: boolean;
fetchAll: () => Promise<void>;
refresh: () => Promise<void>;
fetchMonitor: () => Promise<void>;
refreshMonitor: () => Promise<void>;
}
export const useStore = create<DashboardState>((set) => ({
// Page 1 state
overview: null,
equipment: [],
progress: [],
alarms: [],
trends: [],
samplingOverview: null,
samplingTrends: [],
inspectionOverview: null,
inspectionTrends: [],
loading: false,
// Page 2 state
devStatus: [],
cncLatest: [],
washerLatest: [],
cncHistory: [],
cncOee: [],
washerOee: [],
monitorLoading: false,
fetchAll: async () => {
set({ loading: true });
try {
const [overview, equipment, progress, alarms, trends, cncLatest, samplingOverview, samplingTrends, inspectionOverview, inspectionTrends] =
await Promise.all([
api.get('/overview').then(r => r.data),
api.get('/equipment-status').then(r => r.data),
api.get('/production-progress').then(r => r.data),
api.get('/alarms').then(r => r.data),
api.get('/trends').then(r => r.data),
api.get('/cnc-latest').then(r => r.data),
api.get('/sampling-overview').then(r => r.data),
api.get('/sampling-trends').then(r => r.data),
api.get('/inspection-overview').then(r => r.data),
api.get('/inspection-trends').then(r => r.data),
]);
set({ overview, equipment, progress, alarms, trends, cncLatest, samplingOverview, samplingTrends, inspectionOverview, inspectionTrends, loading: false });
} catch {
set({ loading: false });
}
},
refresh: async () => {
try {
const [overview, equipment, alarms, cncLatest, samplingOverview, inspectionOverview] = await Promise.all([
api.get('/overview').then(r => r.data),
api.get('/equipment-status').then(r => r.data),
api.get('/alarms').then(r => r.data),
api.get('/cnc-latest').then(r => r.data),
api.get('/sampling-overview').then(r => r.data),
api.get('/inspection-overview').then(r => r.data),
]);
set({ overview, equipment, alarms, cncLatest, samplingOverview, inspectionOverview });
} catch { /* ignore */ }
},
fetchMonitor: async () => {
set({ monitorLoading: true });
try {
const [devStatus, cncLatest, washerLatest, cncOee, washerOee] = await Promise.all([
api.get('/device-status').then(r => r.data),
api.get('/cnc-latest').then(r => r.data),
api.get('/washer-latest').then(r => r.data),
api.get('/cnc-oee').then(r => r.data),
api.get('/washer-oee').then(r => r.data),
]);
set({ devStatus, cncLatest, washerLatest, cncOee, washerOee, monitorLoading: false });
} catch {
set({ monitorLoading: false });
}
},
refreshMonitor: async () => {
try {
const [devStatus, cncLatest, washerLatest, cncOee, washerOee] = await Promise.all([
api.get('/device-status').then(r => r.data),
api.get('/cnc-latest').then(r => r.data),
api.get('/washer-latest').then(r => r.data),
api.get('/cnc-oee').then(r => r.data),
api.get('/washer-oee').then(r => r.data),
]);
set({ devStatus, cncLatest, washerLatest, cncOee, washerOee });
} catch { /* ignore */ }
},
}));