7 changed files with 298 additions and 96 deletions
-
3src/apis/self.ts
-
264src/components/check/index.vue
-
80src/components/exit/index.vue
-
9src/views/craft/index.vue
-
14src/views/ore/index.vue
-
12src/views/solution/index.vue
-
12src/views/user/index.vue
@ -0,0 +1,3 @@ |
|||||
|
import http from 'libs/http' |
||||
|
|
||||
|
export const getSelfStatus = (): Promise<Record<string, boolean>> => http.get('/self-test/status') |
@ -0,0 +1,264 @@ |
|||||
|
<script lang="ts" setup> |
||||
|
import { getContainerList } from '@/apis/container' |
||||
|
import { getSelfStatus } from '@/apis/self' |
||||
|
import { useHomeStore } from 'stores/homeStore' |
||||
|
import { onMounted, ref, watch } from 'vue' |
||||
|
|
||||
|
interface SelfStatus { |
||||
|
name: string |
||||
|
isOrign: boolean |
||||
|
value: string |
||||
|
type: string |
||||
|
} |
||||
|
const props = defineProps({ |
||||
|
checking: Boolean, |
||||
|
}) |
||||
|
const emits = defineEmits(['update:checking']) |
||||
|
const homeStore = useHomeStore() |
||||
|
const visible = ref(props.checking) |
||||
|
const chemicalList = ref<Container.ContainerItem[]>([]) |
||||
|
watch(() => props.checking, (newVal) => { |
||||
|
visible.value = newVal |
||||
|
}) |
||||
|
onMounted(() => { |
||||
|
querySelfStatus() |
||||
|
queryContainerList() |
||||
|
}) |
||||
|
const statusMap: Record<string, Record<string, string>> = { |
||||
|
gantryXOrigin: { |
||||
|
name: '机械臂x轴', |
||||
|
value: 'x', |
||||
|
type: 'axis', |
||||
|
}, |
||||
|
gantryYOrigin: { |
||||
|
name: '机械臂y轴', |
||||
|
value: 'y', |
||||
|
type: 'axis', |
||||
|
}, |
||||
|
gantryZOrigin: { |
||||
|
name: '机械臂z轴', |
||||
|
value: 'y', |
||||
|
type: 'axis', |
||||
|
}, |
||||
|
dualRobotJoint1Origin: { |
||||
|
name: '机械臂01', |
||||
|
value: 'largeArm', |
||||
|
type: 'liquid', |
||||
|
}, |
||||
|
dualRobotJoint2Origin: { |
||||
|
name: '机械臂02', |
||||
|
value: 'smallArm', |
||||
|
type: 'liquid', |
||||
|
}, |
||||
|
capLiftingOrigin: { |
||||
|
name: '拍子电机升降', |
||||
|
value: '', |
||||
|
type: 'cap', |
||||
|
}, |
||||
|
trayLifting01Origin: { |
||||
|
name: '加热区01托盘升降', |
||||
|
value: 'heat_module_01', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
trayLifting02Origin: { |
||||
|
name: '加热区02托盘升降', |
||||
|
value: 'heat_module_01', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
trayLifting03Origin: { |
||||
|
name: '加热区03托盘升降', |
||||
|
value: 'heat_module_01', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
trayLifting04Origin: { |
||||
|
name: '加热区04托盘升降', |
||||
|
value: 'heat_module_04', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
trayLifting05Origin: { |
||||
|
name: '加热区05托盘升降', |
||||
|
value: 'heat_module_05', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
trayLifting06Origin: { |
||||
|
name: '加热区06托盘升降', |
||||
|
value: 'heat_module_06', |
||||
|
type: 'heat', |
||||
|
}, |
||||
|
} |
||||
|
const deviceStatusList = ref<SelfStatus[]>([]) |
||||
|
const querySelfStatus = () => { |
||||
|
getSelfStatus().then((res) => { |
||||
|
if (res) { |
||||
|
const list: SelfStatus[] = [] |
||||
|
Object.keys(res).forEach((item) => { |
||||
|
list.push({ |
||||
|
name: statusMap[item].name, |
||||
|
isOrign: res[item], |
||||
|
value: statusMap[item].value, |
||||
|
type: statusMap[item].type, |
||||
|
}) |
||||
|
}) |
||||
|
deviceStatusList.value = list |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
// const pumpId = ref() |
||||
|
const queryContainerList = () => { |
||||
|
getContainerList().then((res) => { |
||||
|
if (res) { |
||||
|
const list: Container.ContainerItem[] = res |
||||
|
const solutionList: Container.ContainerItem[] = [] |
||||
|
list.forEach((item, index) => { |
||||
|
// 只有8种,不会多也不会少, 多的不要 |
||||
|
if (index < 8) { |
||||
|
solutionList.push({ |
||||
|
...item, |
||||
|
solutionName: `加液泵_0${index + 1}`, |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
chemicalList.value = solutionList |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const resetOrign = (item: SelfStatus) => { |
||||
|
if (item.value === 'x' || item.value === 'y' || item.value === 'z') { |
||||
|
gantry_origin(item.value) |
||||
|
} |
||||
|
else if (item.type === 'liquied') { |
||||
|
dual_robot_joint_origin(item.value) |
||||
|
} |
||||
|
else if (item.type === 'heat') { |
||||
|
tray_lifting_origin(item.value) |
||||
|
} |
||||
|
else if (item.type === 'cap') { |
||||
|
cap_lifting_origin() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 先注释 TODO |
||||
|
// const currentPumpId = ref() |
||||
|
// const onPumpChange = (value: string) => { |
||||
|
// currentPumpId.value = value |
||||
|
// } |
||||
|
// const onPumpEmpty = () => { |
||||
|
// console.log('===currentPumpId===', currentPumpId.value) |
||||
|
// } |
||||
|
|
||||
|
let currentCommandId = '' |
||||
|
const gantry_origin = async (motor: 'x' | 'y' | 'z') => { |
||||
|
currentCommandId = Date.now().toString() |
||||
|
|
||||
|
const params = { |
||||
|
commandId: currentCommandId, |
||||
|
command: 'gantry_origin', |
||||
|
params: { |
||||
|
[motor]: true, |
||||
|
}, |
||||
|
} |
||||
|
await homeStore.sendControl(params) |
||||
|
} |
||||
|
|
||||
|
const dual_robot_joint_origin = async (arm: string) => { |
||||
|
currentCommandId = Date.now().toString() |
||||
|
const params = { |
||||
|
commandId: currentCommandId, |
||||
|
command: 'dual_robot_joint_origin', |
||||
|
params: { |
||||
|
target: [arm], |
||||
|
}, |
||||
|
} |
||||
|
await homeStore.sendControl(params) |
||||
|
} |
||||
|
|
||||
|
const cap_lifting_origin = async () => { |
||||
|
currentCommandId = Date.now().toString() |
||||
|
const params = { |
||||
|
commandId: currentCommandId, |
||||
|
command: 'cap_lifting_origin', |
||||
|
params: {}, |
||||
|
} |
||||
|
await homeStore.sendControl(params) |
||||
|
} |
||||
|
|
||||
|
const tray_lifting_origin = async (heatId: string) => { |
||||
|
currentCommandId = Date.now().toString() |
||||
|
const params = { |
||||
|
commandId: currentCommandId, |
||||
|
command: 'tray_lifting_origin', |
||||
|
params: { |
||||
|
heatId, |
||||
|
}, |
||||
|
} |
||||
|
await homeStore.sendControl(params) |
||||
|
} |
||||
|
|
||||
|
const cancel = () => { |
||||
|
emits('update:checking', false) |
||||
|
visible.value = false |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<FtDialog v-model="visible" title="设备初始化" width="50%"> |
||||
|
<div class="check-main"> |
||||
|
<div class="check-status"> |
||||
|
<h3>名称</h3> |
||||
|
<h3>是否在原点</h3> |
||||
|
<h3 style="text-align: center;"> |
||||
|
操作 |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div v-for="(item) in deviceStatusList" :key="item.name" class="check-status"> |
||||
|
<div> |
||||
|
{{ item.name }} |
||||
|
</div> |
||||
|
<div style="margin-left: 2rem;"> |
||||
|
<el-icon v-if="!item.isOrign" style="color:red;font-size: 25px;"> |
||||
|
<CloseBold /> |
||||
|
</el-icon> |
||||
|
<el-icon v-else style="color:#25be25;font-size: 25px;"> |
||||
|
<Select /> |
||||
|
</el-icon> |
||||
|
</div> |
||||
|
<div style="text-align: center;"> |
||||
|
<el-link type="primary" @click="resetOrign(item)"> |
||||
|
回原点 |
||||
|
</el-link> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div class="check-status"> |
||||
|
<div> |
||||
|
加液泵: |
||||
|
<el-select v-model="pumpId" size="small" style="width:10rem" @change="onPumpChange"> |
||||
|
<el-option v-for="item in chemicalList" :key="item.solutionId" :label="item.solutionName" :value="item.pumpId" /> |
||||
|
</el-select> |
||||
|
</div> |
||||
|
<div></div> |
||||
|
<div style="text-align: center;"> |
||||
|
<el-link type="primary" @click="onPumpEmpty()"> |
||||
|
排空 |
||||
|
</el-link> |
||||
|
</div> |
||||
|
</div> --> |
||||
|
</div> |
||||
|
<template #footer> |
||||
|
<FtButton @click="cancel"> |
||||
|
取消 |
||||
|
</FtButton> |
||||
|
</template> |
||||
|
</FtDialog> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
.check-main{ |
||||
|
height: 60vh; |
||||
|
} |
||||
|
.check-status{ |
||||
|
display: grid; |
||||
|
grid-template-columns: 2fr 1fr 1fr; |
||||
|
margin-top: 5px; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue