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

2 weeks ago
  1. <script setup lang="ts">
  2. import { getPointList, updatePoint } from 'apis/point'
  3. import { getPoint } from 'apis/system'
  4. import { onMounted, ref } from 'vue'
  5. const emits = defineEmits(['ok', 'cancel'])
  6. const pointList = ref<Point.Point[]>([])
  7. onMounted(async () => {
  8. pointList.value = await getPointList()
  9. })
  10. const form = ref<Point.UpdateParams>({})
  11. const formRef = ref()
  12. const rules = {
  13. id: [
  14. { required: true, message: '请选择名称', trigger: 'change' },
  15. ],
  16. position: [
  17. { required: true, message: '请输入坐标', trigger: 'blur' },
  18. ],
  19. }
  20. const okHandle = async () => {
  21. try {
  22. const valid = await formRef.value.validate()
  23. if (!valid) {
  24. return
  25. }
  26. await updatePoint(form.value!)
  27. emits('ok')
  28. }
  29. catch (error) {
  30. console.log(error)
  31. }
  32. }
  33. const cancel = () => {
  34. emits('cancel')
  35. }
  36. const motor = [
  37. {
  38. name: '转运机械臂三维点',
  39. code: 'Transfer',
  40. },
  41. {
  42. name: 'X轴电机',
  43. code: 'XSV',
  44. },
  45. {
  46. name: 'Z轴电机',
  47. code: 'ZM',
  48. },
  49. {
  50. name: '门电机',
  51. code: 'DoorM',
  52. },
  53. {
  54. name: '加液臂电机',
  55. code: 'LiquidM',
  56. },
  57. ]
  58. const selectChange = async (val: string) => {
  59. form.value!.position = await getPoint(val)
  60. }
  61. </script>
  62. <template>
  63. <FtDialog visible title="保存坐标" width="40%" :ok-handle="okHandle" @cancel="cancel">
  64. <el-form ref="formRef" label-width="auto" :model="form" :rules="rules">
  65. <el-form-item label="选择电机">
  66. <el-select v-model="form.type" clearable placeholder="请选择电机" @change="selectChange">
  67. <el-option
  68. v-for="item in motor"
  69. :key="item.code"
  70. :label="item.name"
  71. :value="item.code"
  72. />
  73. </el-select>
  74. </el-form-item>
  75. <el-form-item label="当前坐标" prop="position">
  76. <el-input v-model="form.position" />
  77. </el-form-item>
  78. <el-form-item label="名称" prop="id">
  79. <el-select v-model="form.id" placeholder="请选择名称">
  80. <el-option
  81. v-for="item in pointList"
  82. :key="item.id"
  83. :label="item.name"
  84. :value="item.id"
  85. />
  86. </el-select>
  87. </el-form-item>
  88. </el-form>
  89. </FtDialog>
  90. </template>
  91. <style scoped lang="scss">
  92. .item-box {
  93. display: flex;
  94. align-items: center;
  95. justify-content: space-between;
  96. padding: 5px;
  97. }
  98. </style>