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.
 
 
 
 
 

109 lines
2.3 KiB

<script setup lang="ts">
import { getPointList, updatePoint } from 'apis/point'
import { getPoint } from 'apis/system'
import { onMounted, ref } from 'vue'
const emits = defineEmits(['ok', 'cancel'])
const pointList = ref<Point.Point[]>([])
onMounted(async () => {
pointList.value = await getPointList()
})
const form = ref<Point.UpdateParams>({})
const formRef = ref()
const rules = {
id: [
{ required: true, message: '请选择名称', trigger: 'change' },
],
position: [
{ required: true, message: '请输入坐标', trigger: 'blur' },
],
}
const okHandle = async () => {
try {
const valid = await formRef.value.validate()
if (!valid) {
return
}
await updatePoint(form.value!)
emits('ok')
}
catch (error) {
console.log(error)
}
}
const cancel = () => {
emits('cancel')
}
const motor = [
{
name: '转运机械臂三维点',
code: 'Transfer',
},
{
name: 'X轴电机',
code: 'XSV',
},
{
name: 'Z轴电机',
code: 'ZM',
},
{
name: '门电机',
code: 'DoorM',
},
{
name: '加液臂电机',
code: 'LiquidM',
},
]
const selectChange = async (val: string) => {
form.value!.position = await getPoint(val)
}
</script>
<template>
<FtDialog visible title="保存坐标" width="40%" :ok-handle="okHandle" @cancel="cancel">
<el-form ref="formRef" label-width="auto" :model="form" :rules="rules">
<el-form-item label="选择电机">
<el-select v-model="form.type" clearable placeholder="请选择电机" @change="selectChange">
<el-option
v-for="item in motor"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="当前坐标" prop="position">
<el-input v-model="form.position" />
</el-form-item>
<el-form-item label="名称" prop="id">
<el-select v-model="form.id" placeholder="请选择名称">
<el-option
v-for="item in pointList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
</FtDialog>
</template>
<style scoped lang="scss">
.item-box {
display: flex;
align-items: center;
justify-content: space-between;
padding: 5px;
}
</style>