Browse Source

feat: 调试ts类型补全

feature/three
guoapeng 3 months ago
parent
commit
bd3348f9a5
  1. 8
      src/apis/system.ts
  2. 2
      src/components/common/FTStream/index.vue
  3. 2
      src/libs/utils.ts
  4. 40
      src/stores/debugStore.ts
  5. 5
      src/stores/systemStore.ts
  6. 8
      src/types/System.d.ts
  7. 74
      src/types/debug.d.ts
  8. 25
      src/types/socket.d.ts
  9. 43
      src/views/debug/index.vue

8
src/apis/system.ts

@ -1,9 +1,9 @@
import http from 'libs/http'
export interface Params {
export interface Params<T> {
commandId: string
command: string
params: any
params: T
}
export const debugControl = (params: Params): Promise<any> => http.post('/debug/cmd', params)
export const control = (params: Params): Promise<any> => http.post('/cmd', params)
export const debugControl = <T>(params: Params<T>): Promise<any> => http.post('/debug/cmd', params)
export const control = <T>(params: Params<T>): Promise<any> => http.post('/cmd', params)

2
src/components/common/FTStream/index.vue

@ -112,7 +112,7 @@ const handleMouseUp = () => {
v-for="item in systemStore.systemList" :key="item"
:timestamp="JSON.stringify(item.content)"
>
<el-tag :type="statusMap[item.level]" class="mask-tag">
<el-tag :type="statusMap[item.level as keyof typeof statusMap]" class="mask-tag">
{{ item.title }}
</el-tag>
</el-timeline-item>

2
src/libs/utils.ts

@ -11,7 +11,7 @@ export const sendControl = async (params: any, type: 'debug' | 'control' = 'cont
systemStore.systemList = []
const cmdName = cmdNameMap[params.command as keyof typeof cmdNameMap] || params.command
await (type === 'debug' ? debugControl(params) : control(params))
await (type === 'debug' ? debugControl<any>(params) : control(params))
systemStore.updateStreamVisible(true)
FtMessage.success(`[${cmdName}]已发送`)
}

40
src/stores/debugStore.ts

@ -1,61 +1,61 @@
import { defineStore } from 'pinia'
export const useDebugStore = defineStore('debug', {
state: () => ({
state: (): Debug.DebugStore => ({
formData: {
// 加液机械臂
liquidArmData: {
largeArmAngle: 10,
smallArmAngle: 20,
largeArmRotationRate: 10,
smallArmRotationRate: 10,
largeArmAngle: undefined,
smallArmAngle: undefined,
largeArmRotationRate: undefined,
smallArmRotationRate: undefined,
},
// 加液泵
liquidPumpData: {
index: 1,
rate: 3,
index: undefined,
rate: undefined,
},
// 摇匀速度
shakeSpeed: {
rate: 10,
rate: undefined,
},
// 加热区
heatArea: {
index: 1,
heatMotorData: {
distance: 1,
rate: 10,
distance: undefined,
rate: undefined,
},
heatTemperature: {
temperature: 20,
temperature: undefined,
},
},
// 转运模组
transferModule: {
// X轴
xMotorData: {
xDimDistance: 1,
xDimRate: 10,
xDimDistance: undefined,
xDimRate: undefined,
},
// y轴
yMotorData: {
yDimDistance: 1,
yDimRate: 10,
yDimDistance: undefined,
yDimRate: undefined,
},
// z轴
zMotorData: {
zDimDistance: 1,
zDimRate: 10,
zDimDistance: undefined,
zDimRate: undefined,
},
// 夹爪
JawData: {
rate: 10,
rate: undefined,
},
},
// 拍子模组
lidData: {
rate: 10,
distance: 19,
rate: undefined,
distance: undefined,
},
},
}),

5
src/stores/systemStore.ts

@ -1,12 +1,9 @@
import { defineStore } from 'pinia'
export const useSystemStore = defineStore('system', {
state: () => ({
state: (): System.SystemStore => ({
systemStatus: {
},
systemSensor: {
humidity: 0,
},
isDebug: import.meta.env.FT_NODE_ENV === 'dev',
streamVisible: false,
systemList: [],

8
src/types/System.d.ts

@ -0,0 +1,8 @@
declare namespace System {
interface SystemStore {
systemStatus: any
systemList: Socket.NotificationData[]
streamVisible: boolean
isDebug: boolean
}
}

74
src/types/debug.d.ts

@ -0,0 +1,74 @@
declare namespace Debug {
interface DebugStore {
formData: FormData
}
interface FormData {
liquidArmData: LiquidArmData
liquidPumpData: LiquidPumpData
shakeSpeed: ShakeSpeed
heatArea: HeatArea
transferModule: TransferModule
lidData: LidData
}
interface LiquidArmData {
largeArmAngle: number | undefined
smallArmAngle: number | undefined
largeArmRotationRate: number | undefined
smallArmRotationRate: number | undefined
}
interface LiquidPumpData {
index: number | undefined
rate: number | undefined
}
interface ShakeSpeed {
rate: number | undefined
}
interface HeatMotorData {
distance: number | undefined
rate: number | undefined
}
interface HeatTemperature {
temperature: number | undefined
}
interface HeatArea {
index: number | undefined
heatMotorData: HeatMotorData
heatTemperature: HeatTemperature
}
interface XMotorData {
xDimDistance: number | undefined
xDimRate: number | undefined
}
interface YMotorData {
yDimDistance: number | undefined
yDimRate: number | undefined
}
interface ZMotorData {
zDimDistance: number | undefined
zDimRate: number | undefined
}
interface JawData {
rate: number | undefined
}
interface TransferModule {
xMotorData: XMotorData
yMotorData: YMotorData
zMotorData: ZMotorData
JawData: JawData
}
interface LidData {
rate: number | undefined
distance: number | undefined
}
}

25
src/types/socket.d.ts

@ -0,0 +1,25 @@
declare namespace Socket {
type Response = NotificationResponse | MachineStateResponse
interface NotificationResponse {
type: 'notification'
data: NotificationData
}
interface MachineStateResponse {
type: 'machineState'
data: MachineStateData
}
interface NotificationData {
commandId: string
command: string
level: string
title: string
content: string
dateTime: string
}
type MachineStateData = MachineStateBase & {
[key: string]: any
}
}

43
src/views/debug/index.vue

@ -17,7 +17,7 @@ onUnmounted(() => {
socket.unregisterCallback(receiveMessage, 'notification')
})
const receiveMessage = (data: any) => {
const receiveMessage = (data: Socket.NotificationData) => {
systemStore.pushSystemList(data)
}
@ -340,14 +340,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="距离">
<el-input v-model="debugStore.formData.heatArea.heatMotorData.distance">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.distance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
</el-input>
</el-form-item>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.heatArea.heatMotorData.rate">
<el-input v-model.number="debugStore.formData.heatArea.heatMotorData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -368,7 +368,7 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="温度">
<el-input v-model="debugStore.formData.heatArea.heatTemperature.temperature">
<el-input v-model.number="debugStore.formData.heatArea.heatTemperature.temperature" type="number" placeholder="请输入温度">
<template #append>
</template>
@ -420,14 +420,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.lidData.rate">
<el-input v-model.number="debugStore.formData.lidData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item>
<el-form-item label="距离">
<el-input v-model="debugStore.formData.lidData.distance">
<el-input v-model.number="debugStore.formData.lidData.distance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
@ -464,28 +464,28 @@ const door_stop = async () => {
<div class="card-box">
<el-form inline>
<el-form-item label="大臂速度">
<el-input v-model="debugStore.formData.liquidArmData.largeArmRotationRate">
<el-input v-model.number="debugStore.formData.liquidArmData.largeArmRotationRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item>
<el-form-item label="大臂角度">
<el-input v-model="debugStore.formData.liquidArmData.largeArmAngle">
<el-input v-model.number="debugStore.formData.liquidArmData.largeArmAngle" type="number" placeholder="请输入角度">
<template #append>
°
</template>
</el-input>
</el-form-item>
<el-form-item label="小臂速度">
<el-input v-model="debugStore.formData.liquidArmData.smallArmRotationRate">
<el-input v-model.number="debugStore.formData.liquidArmData.smallArmRotationRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item>
<el-form-item label="小臂角度">
<el-input v-model="debugStore.formData.liquidArmData.smallArmAngle">
<el-input v-model.number="debugStore.formData.liquidArmData.smallArmAngle" type="number" placeholder="请输入角度">
<template #append>
°
</template>
@ -507,14 +507,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="加液速度">
<el-input v-model="debugStore.formData.liquidPumpData.rate">
<el-input v-model.number="debugStore.formData.liquidPumpData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
</el-input>
</el-form-item>
<el-form-item label="加液泵头">
<el-select v-model="debugStore.formData.liquidPumpData.index" aria-placeholder="请选择泵头">
<el-select v-model="debugStore.formData.liquidPumpData.index" placeholder="请选择泵头">
<el-option v-for="item in 8" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
@ -540,7 +540,7 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="摇匀速度">
<el-input v-model="debugStore.formData.shakeSpeed.rate">
<el-input v-model.number="debugStore.formData.shakeSpeed.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -608,14 +608,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="距离">
<el-input v-model="debugStore.formData.transferModule.xMotorData.xDimDistance">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimDistance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
</el-input>
</el-form-item>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.transferModule.xMotorData.xDimRate">
<el-input v-model.number="debugStore.formData.transferModule.xMotorData.xDimRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -638,14 +638,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="距离">
<el-input v-model="debugStore.formData.transferModule.yMotorData.yDimDistance">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimDistance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
</el-input>
</el-form-item>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.transferModule.yMotorData.yDimRate">
<el-input v-model.number="debugStore.formData.transferModule.yMotorData.yDimRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -668,14 +668,14 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="距离">
<el-input v-model="debugStore.formData.transferModule.zMotorData.zDimDistance">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimDistance" type="number" placeholder="请输入距离">
<template #append>
mm
</template>
</el-input>
</el-form-item>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.transferModule.zMotorData.zDimRate">
<el-input v-model.number="debugStore.formData.transferModule.zMotorData.zDimRate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -698,7 +698,7 @@ const door_stop = async () => {
<div class="card-box">
<el-form>
<el-form-item label="速度">
<el-input v-model="debugStore.formData.transferModule.JawData.rate">
<el-input v-model.number="debugStore.formData.transferModule.JawData.rate" type="number" placeholder="请输入速度">
<template #append>
mm/s
</template>
@ -772,6 +772,9 @@ const door_stop = async () => {
:deep(.el-input-group__append) {
padding: 0 10px;
}
:deep(.el-card__header) {
background:rgba(0,0,0,0.03);
}
.card-header {
display: flex;

Loading…
Cancel
Save