You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
264 lines
6.2 KiB
264 lines
6.2 KiB
<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>
|