addOrEditTemplateTask.vue 3.7 KB

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