CreateDevice.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <script setup lang="ts">
  2. import { computed, reactive, ref, shallowRef } from 'vue';
  3. import UseGuidance from '@/layout/UseGuidance.vue';
  4. import BasicInformation from '@/views/create-device/BasicInformation.vue';
  5. import DetailedInformation from '@/views/create-device/DetailedInformation.vue';
  6. import GatewayParameters from '@/views/create-device/GatewayParameters.vue';
  7. import VerifyParameters from '@/views/create-device/VerifyParameters.vue';
  8. import { t } from '@/i18n';
  9. import type { EquipmentInformationForm, FormRules, RegisterGatewayForm, UseGuideStepItem } from '@/types';
  10. const equipmentInformationForm = reactive<EquipmentInformationForm>({
  11. groupId: 0,
  12. deviceData: [],
  13. deviceType: undefined,
  14. deviceName: '',
  15. brand: undefined,
  16. model: undefined,
  17. modelType: undefined,
  18. controlType: undefined,
  19. compressionLevel: undefined,
  20. voltageLevel: undefined,
  21. powerRating: '',
  22. powerUnload: '',
  23. maximumFlow: '',
  24. pressure: '',
  25. pressureMax: '',
  26. productionDate: '',
  27. productionNum: '',
  28. deviceNum: '',
  29. mainTechData: '',
  30. mountedPosition: '',
  31. department: '',
  32. respPerson: '',
  33. phone: '',
  34. serviceLife: undefined,
  35. status: '',
  36. remarks: '',
  37. devId: 0,
  38. imgUrl: '',
  39. id: undefined,
  40. });
  41. const rules = computed<FormRules<RegisterGatewayForm>>(() => {
  42. return {
  43. deviceData: [{ required: true, message: t('createDevice.pleaseEquipmentGroup'), trigger: 'change' }],
  44. deviceType: [{ required: true, message: t('createDevice.pleaseDeviceType'), trigger: 'change' }],
  45. deviceName: [{ required: true, message: t('createDevice.pleaseDeviceName'), trigger: 'change' }],
  46. brand: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  47. model: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  48. modelType: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  49. controlType: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  50. compressionLevel: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  51. voltageLevel: [{ required: true, message: t('common.plzSelect'), trigger: 'change' }],
  52. powerRating: [{ required: true, message: t('common.plzEnter'), trigger: 'change' }],
  53. powerUnload: [{ required: true, message: t('common.plzEnter'), trigger: 'change' }],
  54. maximumFlow: [{ required: true, message: t('common.plzEnter'), trigger: 'change' }],
  55. pressure: [{ required: true, message: t('common.plzEnter'), trigger: 'change' }],
  56. pressureMax: [{ required: true, message: t('common.plzEnter'), trigger: 'change' }],
  57. };
  58. });
  59. const steps = ref<UseGuideStepItem[]>([
  60. {
  61. title: t('createDevice.basicInformation'),
  62. component: shallowRef(BasicInformation),
  63. stepDescription: '描述文本',
  64. labelAlign: 'left',
  65. labelCol: { span: 5 },
  66. },
  67. {
  68. title: t('createDevice.detailedInformation'),
  69. component: shallowRef(DetailedInformation),
  70. stepDescription: '描述文本',
  71. formLayout: 'vertical',
  72. },
  73. {
  74. title: t('createDevice.selectGatewayParameters'),
  75. component: shallowRef(GatewayParameters),
  76. stepDescription: '描述文本',
  77. },
  78. {
  79. title: t('createDevice.verifyData'),
  80. component: shallowRef(VerifyParameters),
  81. stepDescription: '描述文本',
  82. nextStepButtonText: t('common.finishSetup'),
  83. isLastStep: true,
  84. },
  85. ]);
  86. </script>
  87. <template>
  88. <UseGuidance
  89. :title="$t('createDevice.createDevice')"
  90. :steps="steps"
  91. :form="equipmentInformationForm"
  92. :rules="rules"
  93. />
  94. </template>