insert_update.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <div class="powerdialog">
  3. <el-dialog :title="dialogTitle" v-model="dialogVisible" @close="close" width="640px">
  4. <div>
  5. <el-form ref="formInfo" :model="form" class="demo-form-inline" label-width="150px" :rules="rules">
  6. <el-form-item label="设备名称:" prop="deviceName">
  7. <el-input v-model="form.deviceName"></el-input>
  8. </el-form-item>
  9. <el-form-item label="设备编号:" prop="deviceCode">
  10. <el-input v-if="dialogTitle == '修改'" v-model="form.deviceCode" disabled></el-input>
  11. <el-input v-else v-model="form.deviceCode"></el-input>
  12. </el-form-item>
  13. <el-form-item label="楼层:" prop="floor">
  14. <el-input-number v-model="form.floor" controls-position="right" :min="-10" :max="100"></el-input-number>
  15. </el-form-item>
  16. <el-form-item label="所属站点:" prop="siteId">
  17. <el-select v-model="form.siteId" :disabled="dialogTitle === '修改'" placeholder="请选择所属站点">
  18. <el-option v-for="item in store.state.siteList" :key="item.value" :label="item.siteName"
  19. :value="item.id"></el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="设备安装位置:" prop="deviceAddress">
  23. <el-input v-model="form.deviceAddress"></el-input>
  24. </el-form-item>
  25. <el-form-item label="设备类型:" prop="deviceType">
  26. <el-select v-model="form.deviceType" placeholder="请选择设备类型">
  27. <el-option v-for="item in deviceType" :key="item.value" :label="item.label" :value="item.value"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="sim卡号:" prop="sim">
  31. <el-input v-model="form.sim"></el-input>
  32. </el-form-item>
  33. <div style="text-align: right">
  34. <el-button @click="close">取消</el-button>
  35. <el-button type="primary" @click="submitForm()">保存</el-button>
  36. </div>
  37. </el-form>
  38. </div>
  39. </el-dialog>
  40. </div>
  41. </template>
  42. <script setup>
  43. /*----------------------------------依赖引入-----------------------------------*/
  44. import { useStore } from 'vuex'
  45. import { ref, onMounted, watch, getCurrentInstance, watchEffect } from 'vue'
  46. import { ElMessage } from 'element-plus'
  47. /*----------------------------------接口引入-----------------------------------*/
  48. import * as api from '@/api/deviceManage/powerEquip/communicateEquip'
  49. /*----------------------------------组件引入-----------------------------------*/
  50. /*----------------------------------store引入-----------------------------------*/
  51. /*----------------------------------公共方法引入-----------------------------------*/
  52. /*----------------------------------公共变量-----------------------------------*/
  53. const store = useStore()
  54. const props = defineProps({}) //数据双向绑定
  55. const emit = defineEmits(['handleSelect']);
  56. const { proxy } = getCurrentInstance();
  57. /*----------------------------------变量声明-----------------------------------*/
  58. const dialogTitle = ref("")
  59. const dialogVisible = ref(false)
  60. const form = ref([])
  61. const rules = {
  62. deviceCode: [
  63. { required: true, message: '设备编号不能为空', trigger: 'blur', },
  64. { min: 5, max: 25, message: '设备编号长度不能小于5大于25', trigger: 'blur', },
  65. ],
  66. deviceName: [
  67. { required: true, message: '设备名称不能为空', trigger: 'blur', },
  68. { min: 5, max: 25, message: '设备名称长度不能小于5大于25', trigger: 'blur', },
  69. ],
  70. floor: [
  71. { required: true, message: '楼层不能为空', trigger: 'blur', },
  72. ],
  73. siteId: [
  74. { required: true, message: '请选择所属站点', trigger: 'blur', },
  75. ],
  76. deviceAddress: [
  77. { required: true, message: '请输入设备安装位置', trigger: 'blur', },
  78. { min: 2, max: 50, message: '设备安装位置长度不能小于2大于50', trigger: 'blur', },
  79. ],
  80. deviceType: [
  81. { required: true, message: '请选择设备类型', trigger: 'blur', },
  82. ],
  83. }
  84. const deviceType = ref([
  85. { value: 1, label: '183用电设备', },
  86. { value: 2, label: '视频监控设备', },
  87. { value: 3, label: '171用电设备', },
  88. { value: 4, label: '173用电设备', },
  89. { value: 5, label: '158智能网关', },
  90. { value: 6, label: '其他', },
  91. ])
  92. //弹窗打开
  93. function openDialog(item) {
  94. dialogTitle.value = item.dialogTitle
  95. form.value = item.dataArray
  96. dialogVisible.value = true
  97. }
  98. //弹窗关闭
  99. function close() {
  100. proxy.$refs["formInfo"].resetFields()
  101. dialogVisible.value = false
  102. }
  103. // 保存-修改操作
  104. function submitForm() {
  105. proxy.$refs["formInfo"].validate((valid) => {
  106. if (valid) {
  107. form.value.floor == 0 ? (form.value.floor = 1) : form.value.floor
  108. if (dialogTitle.value == '新增') {
  109. api.correspondDeviceAdd(form.value).then((requset) => {
  110. if (requset.status === 'SUCCESS') {
  111. ElMessage.success({
  112. message: '新增成功',
  113. type: 'success',
  114. })
  115. emit('handleSelect', false)
  116. close()
  117. } else {
  118. ElMessage.error(requset.msg)
  119. }
  120. })
  121. } else {
  122. api.correspondDeviceUpdate(form.value).then((requset) => {
  123. if (requset.status === 'SUCCESS') {
  124. ElMessage.success({
  125. message: '修改成功',
  126. type: 'success',
  127. })
  128. emit('handleSelect', false)
  129. close()
  130. } else {
  131. ElMessage.error(requset.msg)
  132. }
  133. })
  134. }
  135. } else {
  136. console.log('error submit!!')
  137. return false
  138. }
  139. })
  140. }
  141. // 暴露变量
  142. defineExpose({
  143. openDialog,
  144. });
  145. </script>
  146. <!-- Add "scoped" attribute to limit CSS to this component only -->
  147. <style scoped lang="scss">
  148. .el-form-item:not(.user-layout .el-form-item) {
  149. margin: 0 auto 10px;
  150. }
  151. .fontText {
  152. font-size: 10px;
  153. margin-top: -5px;
  154. margin-bottom: -15px;
  155. }
  156. </style>
  157. <style>
  158. .powerdialog .el-form-item--small .el-form-item__content,
  159. .powerdialog .el-form-item--small .el-form-item__label {
  160. line-height: 40px;
  161. }
  162. </style>