From 0c385c8031858f44393ec80e7545d93fb7213046 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Sat, 26 Jul 2025 20:37:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=A7=E8=A1=8C=E5=B7=A5=E8=89=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/home.ts | 2 +- src/app.vue | 5 +- src/components/home/CleanSolution/index.vue | 5 +- src/components/home/DrainSolution/index.vue | 9 +- src/components/home/DrainWasteSolution/index.vue | 5 +- src/components/home/FillSolution/index.vue | 5 +- src/components/home/selectCraft/index.vue | 138 +++++++++++++ src/main.ts | 2 +- src/stores/systemStore.ts | 239 +---------------------- src/types/home.d.ts | 8 +- src/types/system.d.ts | 65 +++--- src/views/home/index.vue | 176 ++++++++++++----- 12 files changed, 344 insertions(+), 315 deletions(-) create mode 100644 src/components/home/selectCraft/index.vue diff --git a/src/apis/home.ts b/src/apis/home.ts index 291a15c..04a2b77 100644 --- a/src/apis/home.ts +++ b/src/apis/home.ts @@ -2,7 +2,7 @@ import http from 'libs/http' const baseUrl = '/tasks/' export const setTargetTemperature = (params: Home.SetTargetTemperatureParams): Promise => http.post('/heat/target-temperature', params) -export const trayTube = (params: Home.TrayTubeParams): Promise => http.post('/tray/tube', params) +export const trayTube = (params: Home.TrayTubeParams[]): Promise => http.put('/tube/set-tube-exist', params) export const addTask = (params: Task.TaskAdd): Promise => http.post(baseUrl, params) export const stopTask = (): Promise => http.post(`${baseUrl}stop`) export const getTask = (id: number): Promise => http.get(`${baseUrl}${id}`) diff --git a/src/app.vue b/src/app.vue index bfbad0c..ea00dc0 100644 --- a/src/app.vue +++ b/src/app.vue @@ -1,4 +1,5 @@ diff --git a/src/components/home/DrainSolution/index.vue b/src/components/home/DrainSolution/index.vue index 4caea1a..85bd751 100644 --- a/src/components/home/DrainSolution/index.vue +++ b/src/components/home/DrainSolution/index.vue @@ -73,14 +73,16 @@ const checked = ref() diff --git a/src/components/home/DrainWasteSolution/index.vue b/src/components/home/DrainWasteSolution/index.vue index 9e1fee1..d792c0d 100644 --- a/src/components/home/DrainWasteSolution/index.vue +++ b/src/components/home/DrainWasteSolution/index.vue @@ -38,7 +38,7 @@ const drain_waste_solution_stop = async () => { diff --git a/src/components/home/FillSolution/index.vue b/src/components/home/FillSolution/index.vue index 96ddc07..f54ddae 100644 --- a/src/components/home/FillSolution/index.vue +++ b/src/components/home/FillSolution/index.vue @@ -73,7 +73,7 @@ const checked = ref() diff --git a/src/components/home/selectCraft/index.vue b/src/components/home/selectCraft/index.vue new file mode 100644 index 0000000..346bb50 --- /dev/null +++ b/src/components/home/selectCraft/index.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/main.ts b/src/main.ts index 4879421..bcc90fd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue' import FtButton from 'components/common/FTButton/index.vue' import FtChart from 'components/common/FTChart/index.vue' -import FtDatetime from 'components/common/FTDatetime/index.vue' +import FtDatetime from 'components/common/FTDateTime/index.vue' import FtDialog from 'components/common/FTDialog/index.vue' import FtStream from 'components/common/FTStream/index.vue' import FtTable from 'components/common/FTTable/index.vue' diff --git a/src/stores/systemStore.ts b/src/stores/systemStore.ts index 12a97c8..05a1ae7 100644 --- a/src/stores/systemStore.ts +++ b/src/stores/systemStore.ts @@ -6,237 +6,18 @@ import router from '@/router' export const useSystemStore = defineStore('system', { state: (): System.SystemStore => ({ systemStatus: { - virtual: false, - initComplete: true, - selfTest: true, - emergencyStop: false, + craftsPaused: true, // 当前设备是否暂停 + trayExist1: true, // 托盘1是否存在 + trayExist2: true, // 托盘2是否存在 + virtual: true, // 虚拟模式 + initComplete: true, // 初始化状态 + selfTest: true, // 自检状态 + emergencyStop: true, // 是否是急停状态 currentUser: { }, - currentTasks: null, - doorModule: { - open: false, - }, - transferModule: { - idle: true, - trayStatus: false, - }, - solutionModule: { - idle: true, - feedAreaTrayStatus: false, - pumping: false, - valveState: { - state: 1, - }, - solutionContainer: [ - { - containerCode: 1, - type: 'solution', - empty: false, - full: false, - filledSolution: false, - }, - { - containerCode: 2, - type: 'solution', - empty: false, - full: false, - filledSolution: false, - }, - { - containerCode: 3, - type: 'solution', - empty: false, - full: false, - filledSolution: false, - }, - { - containerCode: 4, - type: 'solution', - empty: false, - full: false, - filledSolution: false, - }, - ], - }, - heatModule: [ - { - moduleCode: 'heat_module_01', - enable: true, - trayStatus: true, - heatingType: 'heating', - fanOpen: false, - targetTemperature: 0, - temperature: 0, - startHeatTime: 1749126403564, - targetTime: 1800, - }, - { - moduleCode: 'heat_module_02', - enable: true, - trayStatus: true, - heatingType: 'stop', - fanOpen: true, - dryTemperature: 0, - annealTemperature: 0, - heatTemperature: 0, - targetTemperature: 0, - temperature: 0, - }, - { - moduleCode: 'heat_module_03', - enable: true, - trayStatus: true, - heatingType: 'drying', - fanOpen: false, - dryTemperature: 0, - annealTemperature: 0, - heatTemperature: 0, - targetTemperature: 0, - temperature: 0, - }, - { - moduleCode: 'heat_module_04', - enable: true, - trayStatus: true, - heatingType: 'annealing', - fanOpen: false, - dryTemperature: 0, - annealTemperature: 0, - heatTemperature: 0, - targetTemperature: 0, - temperature: 0, - }, - ], - trays: [ - { - uuid: '22', - heatModuleCode: 'heat_module_01', - inFeedArea: false, - inSolutionPositon: false, - inHeatModule: true, - useArm: true, - tubes: [ - { - columnNum: 1, - addSolution: true, - exists: true, - }, - { - columnNum: 2, - addSolution: true, - exists: true, - }, - { - columnNum: 3, - addSolution: true, - exists: false, - }, - { - columnNum: 4, - addSolution: true, - exists: true, - }, - { - columnNum: 5, - addSolution: true, - exists: true, - }, - ], - crafts: { - craft: { - id: 1, - name: '菱锌矿硫酸溶解法', - steps: '[{"name":"加液","method":"addLiquid","params":{"addLiquidList":[{"containerId":1,"volume":3},{"containerId":4,"volume":4},{"containerId":3,"volume":5}],"description":["添加硫酸-3ml; ","添加氢氟酸-4ml; ","添加硝酸-5ml; "]}},{"name":"加热","method":"startHeating","params":{"temperature":4,"second":123,"description":"加热: 4度, 保持2分3秒","minutes":2,"seconds":3}},{"name":"摇匀","method":"shaking","params":{"second":122,"seconds":2,"minutes":2,"description":"摇匀: 122秒"}},{"name":"拍照","method":"takePhoto","params":{"description":"拍照"}}]', - }, - state: 'RUNNING', - currentIndex: 1, - }, - }, - { - uuid: '3', - heatModuleCode: 'heat_module_02', - inFeedArea: false, - inSolutionPositon: true, - inHeatModule: false, - tubes: [ - { - columnNum: 1, - addSolution: true, - exists: true, - }, - { - columnNum: 2, - addSolution: true, - exists: true, - }, - { - columnNum: 3, - addSolution: true, - exists: false, - }, - { - columnNum: 4, - addSolution: true, - exists: true, - }, - { - columnNum: 5, - addSolution: true, - exists: true, - }, - ], - // crafts: { - // craft: { - // id: 1, - // name: '菱锌矿硫酸溶解法', - // steps: '[{"name":"加液","method":"addLiquid","params":{"addLiquidList":[{"containerId":1,"volume":3},{"containerId":4,"volume":4},{"containerId":3,"volume":5}],"description":["添加硫酸-3ml; ","添加氢氟酸-4ml; ","添加硝酸-5ml; "]}},{"name":"加热","method":"startHeating","params":{"temperature":4,"second":123,"description":"加热: 4度, 保持2分3秒","minutes":2,"seconds":3}},{"name":"摇匀","method":"shaking","params":{"second":122,"seconds":2,"minutes":2,"description":"摇匀: 122秒"}},{"name":"拍照","method":"takePhoto","params":{"description":"拍照"}}]', - // }, - // state: 'RUNNING', - // currentIndex: 1, - // }, - }, - { - uuid: '5', - heatModuleCode: 'heat_module_03', - inFeedArea: false, - inSolutionPositon: false, - inHeatModule: true, - tubes: [ - { - columnNum: 1, - addSolution: true, - exists: true, - }, - ], - // crafts: { - // craft: { - // id: 1, - // name: '菱锌矿硫酸溶解法', - // steps: '[{"name":"加液","method":"addLiquid","params":{"addLiquidList":[{"containerId":1,"volume":3},{"containerId":4,"volume":4},{"containerId":3,"volume":5}],"description":["添加硫酸-3ml; ","添加氢氟酸-4ml; ","添加硝酸-5ml; "]}},{"name":"加热","method":"startHeating","params":{"temperature":4,"second":123,"description":"加热: 4度, 保持2分3秒","minutes":2,"seconds":3}},{"name":"摇匀","method":"shaking","params":{"second":122,"seconds":2,"minutes":2,"description":"摇匀: 122秒"}},{"name":"拍照","method":"takePhoto","params":{"description":"拍照"}}]', - // }, - // state: 'RUNNING', - // currentIndex: 1, - // }, - }, - { - uuid: '5', - heatModuleCode: 'heat_module_04', - inFeedArea: false, - inSolutionPositon: false, - inHeatModule: true, - tubes: [ - ], - // crafts: { - // craft: { - // id: 1, - // name: '菱锌矿硫酸溶解法', - // steps: '[{"name":"加液","method":"addLiquid","params":{"addLiquidList":[{"containerId":1,"volume":3},{"containerId":4,"volume":4},{"containerId":3,"volume":5}],"description":["添加硫酸-3ml; ","添加氢氟酸-4ml; ","添加硝酸-5ml; "]}},{"name":"加热","method":"startHeating","params":{"temperature":4,"second":123,"description":"加热: 4度, 保持2分3秒","minutes":2,"seconds":3}},{"name":"摇匀","method":"shaking","params":{"second":122,"seconds":2,"minutes":2,"description":"摇匀: 122秒"}},{"name":"拍照","method":"takePhoto","params":{"description":"拍照"}}]', - // }, - // state: 'RUNNING', - // currentIndex: 1, - // }, - }, - ], + titrationModule: [], + heatModuleState: [], + trayTubeState: [], }, errCraftList: [], loginForm: { diff --git a/src/types/home.d.ts b/src/types/home.d.ts index 34cf20a..b0d1e82 100644 --- a/src/types/home.d.ts +++ b/src/types/home.d.ts @@ -21,12 +21,8 @@ declare namespace Home { heatTemperature: number | undefined } interface TrayTubeParams { - trayUuid?: string - tubes: { - columnNum: number - addSolution?: boolean - exists: boolean - }[] + tubeNum: number + tubeExist: boolean } } diff --git a/src/types/system.d.ts b/src/types/system.d.ts index 3041565..339a248 100644 --- a/src/types/system.d.ts +++ b/src/types/system.d.ts @@ -18,32 +18,47 @@ declare namespace System { time: string } interface SystemStatus { - virtual: boolean - initComplete: boolean - selfTest: boolean - emergencyStop: boolean - currentUser: User.User | null - currentTasks: Task.Task[] | null - doorModule: { - open: boolean - actionable?: boolean - } - transferModule: { - idle: boolean - trayStatus: boolean - } - solutionModule: { - idle: boolean - feedAreaTrayStatus: boolean - pumping: boolean - valveState: { - state: number - } - solutionContainer: SolutionContainer[] + craftsPaused: boolean // 当前设备是否暂停 + trayExist1: boolean // 托盘1是否存在 + trayExist2: boolean // 托盘2是否存在 + virtual: boolean // 虚拟模式 + initComplete: boolean // 初始化状态 + selfTest: boolean // 自检状态 + emergencyStop: boolean // 是否是急停状态 + currentUser: User.User + titrationModule: { + moduleCode: 'MODULE_1' | 'MODULE_2' // 滴定模块code + tubeExist: boolean // 是否存在试管 + }[] + heatModuleState: + { + moduleCode: 'MODULE_1' | 'MODULE_2' // 加热模块code + tubeExist: boolean // 是否存在试管 + open: boolean // 是否启动加热 + temperature: number // 加热器当前温度 + targetTemperature: number // 加热器目标温度 + targetTime: number // 加热器目标加热时间,单位秒 + startHeatTime: string // 开始加热的时间 + }[] + + trayTubeState: + { + tubeNum: number // 试管编号 + tubeExist: boolean // 是否存在试管 + volume: number // 体积 double + result: number // 结果 double + craftsName: string // 配置的工艺名称 + craftsId: number // 配置的工艺ID + queueNum: number // 当前试管工艺队列的编号 int + titrationModuleCodes: + { + moduleCode: 'MODULE_1' | 'MODULE_2' // 滴定模块code + tubeExist: boolean // 是否存在试管 + }[] + + titrationStatus: 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' + }[] - } - heatModule: HeatArea[] - trays?: Tray[] } interface Tray { uuid: string diff --git a/src/views/home/index.vue b/src/views/home/index.vue index fa74c2e..431d28d 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -1,12 +1,15 @@