edit.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <el-dialog
  3. :title="isEdit ? '修改设备' : '添加设备'"
  4. v-model="dialogVisible"
  5. width="600px"
  6. :before-close="clsoeDialog"
  7. :close-on-click-modal="false"
  8. >
  9. <el-form ref="formRef" :rules="formRules" :model="ruleForm" label-position="left" label-width="120px" style="width: 90%; margin: 0 auto">
  10. <el-form-item label="设备编码" prop="number">
  11. <el-input :disabled="isEdit" v-model="ruleForm.number" placeholder="请输入设备编码" />
  12. </el-form-item>
  13. <el-form-item label="名称">
  14. <el-input v-model="ruleForm.title" placeholder="请输入名称" />
  15. </el-form-item>
  16. <el-form-item label="设备通用地址">
  17. <el-input type="number" v-model.number="ruleForm.commonAddr" placeholder="请输入设备通用地址" />
  18. </el-form-item>
  19. <el-form-item label="mac地址">
  20. <el-input v-model="ruleForm.subCode" placeholder="请输入mac地址" />
  21. </el-form-item>
  22. <el-form-item label="模版编号">
  23. <el-select v-model="ruleForm.templateNumber" placeholder="请选择模版编号" class="width100">
  24. <el-option :label="item.title" :value="item.number" v-for="(item, index) in tableData" :key="index"></el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="产品key">
  28. <el-input v-model="ruleForm.productKey" placeholder="请输入产品key" />
  29. </el-form-item>
  30. <el-form-item label="设备key">
  31. <el-input v-model="ruleForm.deviceKey" placeholder="请输入设备key" />
  32. </el-form-item>
  33. </el-form>
  34. <template #footer>
  35. <el-button @click="clsoeDialog()"> 取 消 </el-button>
  36. <el-button :loading="btnLoading" type="primary" @click="submitData"> 保 存 </el-button>
  37. </template>
  38. </el-dialog>
  39. </template>
  40. <script lang="ts" setup>
  41. import { computed, reactive, ref } from 'vue';
  42. import api from '/@/api/ice104/index';
  43. import { useI18n } from 'vue-i18n';
  44. import { ElMessage } from 'element-plus';
  45. import { useSearch } from '/@/hooks/useCommonIce104';
  46. const { params, tableData, getList, loading } = useSearch(api.template.getAll, 'data', { title: '' });
  47. getList();
  48. const dialogVisible = ref(false);
  49. const btnLoading = ref(false);
  50. const emit = defineEmits(['updateList']);
  51. const formRef = ref();
  52. const ruleForm = ref({
  53. number: '',
  54. title: '',
  55. commonAddr: '',
  56. subCode: '',
  57. templateNumber: '',
  58. productKey: '',
  59. deviceKey: '',
  60. })
  61. const isEdit = ref(false);
  62. const formRules = computed(() => ({
  63. number: [{ required: true, trigger: 'change', message: '请输入设备编码' }],
  64. }));
  65. const submitData = async () => {
  66. formRef.value.validate((valid: boolean) => {
  67. console.log(valid)
  68. if (!valid) return
  69. btnLoading.value = true
  70. if (isEdit.value) {
  71. // 修改
  72. api.device.editItem({
  73. ...ruleForm.value,
  74. })
  75. .then(() => {
  76. ElMessage({ type: 'success', message: '修改成功' })
  77. emit('updateList')
  78. closeDialog()
  79. })
  80. .finally(() => (btnLoading.value = false))
  81. } else {
  82. // 新增
  83. api.device.addItem(ruleForm.value)
  84. .then(() => {
  85. ElMessage({ type: 'success', message: '添加成功' })
  86. emit('updateList')
  87. closeDialog()
  88. })
  89. .finally(() => (btnLoading.value = false))
  90. }
  91. })
  92. }
  93. /**
  94. * 关闭弹窗
  95. */
  96. const closeDialog = () => {
  97. dialogVisible.value = false;
  98. ruleForm.value = {
  99. id: '',
  100. number: '',
  101. title: '',
  102. commonAddr: '',
  103. subCode: '',
  104. templateNumber: '',
  105. productKey: '',
  106. deviceKey: ''
  107. }
  108. }
  109. const open = async (row: any) => {
  110. dialogVisible.value = true
  111. console.log(row)
  112. if (row && row.number.toString()) {
  113. console.log(row)
  114. ruleForm.value = row;
  115. isEdit.value = true;
  116. }else {
  117. isEdit.value = false;
  118. }
  119. }
  120. defineExpose({ open })
  121. </script>
  122. <style lang="scss" scoped>
  123. .width100 {
  124. width: 100%;
  125. }
  126. </style>