基质喷涂
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.

115 lines
4.4 KiB

  1. <template>
  2. <div class="wrapper grid grid-cols-[auto_150px_auto] gap-x-3 gap-y-4 text-base">
  3. <slot></slot>
  4. <span class="self-center text-right text-primary font-medium">喷涂路线</span>
  5. <div class="flex items-center gap-x-4 col-span-2">
  6. <img :src="selectCraft.routeType === 1 ? route_v : route_v2" alt="icon" @click="sprayDirection('v')" />
  7. <img :src="selectCraft.routeType === 1 ? route_h2 : route_h" alt="icon" @click="sprayDirection('h')" />
  8. </div>
  9. <span class="self-center text-right text-primary font-medium">Z轴高度</span>
  10. <input
  11. type="number"
  12. v-model.number="selectCraft.height"
  13. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  14. <span class="self-center text-primary font-medium">毫米</span>
  15. <span class="self-center text-right text-primary font-medium">氮气流速</span>
  16. <input
  17. type="number"
  18. v-model.number="selectCraft.nitrogenFlowVelocity"
  19. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  20. <span class="self-center text-primary font-medium">毫米/每秒</span>
  21. <span class="self-center text-right text-primary font-medium">氮气气压</span>
  22. <input
  23. type="number"
  24. v-model.number="selectCraft.nitrogenAirPressure"
  25. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  26. <span class="self-center text-primary font-medium">MPa0.35</span>
  27. <span class="self-center text-right text-primary font-medium">基质流速</span>
  28. <input
  29. type="number"
  30. v-model.number="selectCraft.matrixFlowVelocity"
  31. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  32. <span class="self-center text-primary font-medium">ul/min</span>
  33. <span class="self-center text-right text-primary font-medium">是否加电</span>
  34. <div class="flex items-center justify-between">
  35. <div :class="selectCraft.needPower ? 'true' : 'false'" @click="needPower(true)"></div>
  36. <div :class="selectCraft.needPower ? 'false' : 'true'" @click="needPower(false)"></div>
  37. <input
  38. type="number"
  39. v-model.number="selectCraft.voltage"
  40. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center w-[54px]" />
  41. </div>
  42. <span class="self-center text-primary font-medium">V</span>
  43. <span class="self-center text-right text-primary font-medium">移动速度</span>
  44. <input
  45. type="number"
  46. v-model.number="selectCraft.movementSpeed"
  47. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  48. <span class="self-center text-primary font-medium">毫米/每秒</span>
  49. <span class="self-center text-right text-primary font-medium">行间距</span>
  50. <input
  51. type="number"
  52. v-model.number="selectCraft.space"
  53. class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
  54. <span class="self-center text-primary font-medium">毫米</span>
  55. <div class="col-span-3 flex justify-center items-center">
  56. <button class="btn-dark px-10 py-2 text-base" @click="onSaveClick">{{ saveTitle || "保存" }}</button>
  57. </div>
  58. </div>
  59. </template>
  60. <script setup lang="ts">
  61. import { checkSprayParamValid, type WorkType } from "@/services/globalCmd/cmdTypes";
  62. import { ref, watch } from "vue";
  63. import route_v from "@/assets/route_vertical.png";
  64. import route_v2 from "@/assets/route_vertical2.png";
  65. import route_h from "@/assets/route_horizontal.png";
  66. import route_h2 from "@/assets/route_horizontal2.png";
  67. import { ElMessage } from "element-plus";
  68. const props = defineProps<{
  69. sprayParam: Partial<WorkType>;
  70. saveTitle?: string;
  71. }>();
  72. const emit = defineEmits<{
  73. (e: "save", param: WorkType): void;
  74. }>();
  75. const selectCraft = ref(props.sprayParam);
  76. defineExpose({
  77. sprayParam: selectCraft,
  78. });
  79. function needPower(need: boolean) {
  80. selectCraft.value.needPower = need;
  81. }
  82. function sprayDirection(direction: "h" | "v") {
  83. selectCraft.value.routeType = direction === "h" ? 1 : 2;
  84. }
  85. function onSaveClick() {
  86. const check = checkSprayParamValid(selectCraft.value);
  87. if (!check[0]) {
  88. ElMessage.error(check[1]);
  89. return;
  90. }
  91. if (!selectCraft.value.needPower) {
  92. selectCraft.value.voltage = 0;
  93. }
  94. emit("save", selectCraft.value as WorkType);
  95. }
  96. watch(
  97. () => props.sprayParam,
  98. p => {
  99. selectCraft.value = p;
  100. }
  101. );
  102. </script>