index.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <template>
  2. <div class="siteManage-main powerScore">
  3. <el-form :model="ruleForm" :rules="rules" ref="formInfo" label-width="137px" class="demo-ruleForm">
  4. <div class="el-form-item blockTitle">电能质量各要素权重</div>
  5. <div></div>
  6. <el-form-item label="功率因数(100%)" prop="powerFactorOne" label-width="130px">
  7. <el-input v-model="ruleForm.powerFactorOne"></el-input>
  8. </el-form-item>
  9. <el-form-item label="电压合格率(%)" prop="voltageQualified" label-width="130px">
  10. <el-input v-model="ruleForm.voltageQualified"></el-input>
  11. </el-form-item>
  12. <el-form-item label="负载率(%)" prop="loadRate" label-width="130px">
  13. <el-input v-model="ruleForm.loadRate"></el-input>
  14. </el-form-item>
  15. <el-form-item label="电流平衡度(%):" prop="currentBalance" label-width="130px">
  16. <el-input v-model="ruleForm.currentBalance"></el-input>
  17. </el-form-item>
  18. <el-form-item label="电压平衡度(%):" prop="voltageBalance" label-width="130px">
  19. <el-input v-model="ruleForm.voltageBalance"></el-input>
  20. </el-form-item>
  21. <el-form-item label="谐波畸变率(%)" prop="thdu" label-width="130px">
  22. <el-input v-model="ruleForm.thdu"></el-input>
  23. </el-form-item>
  24. <div class="el-form-item blockTitle">功率因素</div>
  25. <el-form-item label="功率因数" prop="powerFactorTwo" label-width="130px">
  26. <el-input v-model="ruleForm.powerFactorTwo"></el-input>
  27. </el-form-item>
  28. <el-form-item>
  29. <el-button type="primary" @click="submitForm('ruleForm')" :disabled="isDisable">
  30. 保存
  31. </el-button>
  32. </el-form-item>
  33. </el-form>
  34. </div>
  35. </template>
  36. <script setup>
  37. /*----------------------------------依赖引入-----------------------------------*/
  38. import { useStore } from 'vuex'
  39. import { ElMessage, ElNotification } from 'element-plus'
  40. import { ref, onMounted, watch, getCurrentInstance, reactive, toRefs, nextTick } from 'vue'
  41. /*----------------------------------接口引入-----------------------------------*/
  42. import * as api from '@/api/siteManage/powerScore'
  43. /*----------------------------------组件引入-----------------------------------*/
  44. /*----------------------------------store引入-----------------------------------*/
  45. /*----------------------------------公共方法引入-----------------------------------*/
  46. /*----------------------------------公共变量-----------------------------------*/
  47. const store = useStore()
  48. const props = defineProps({
  49. siteId: Number,
  50. activeName: String,
  51. }) //数据双向绑定
  52. const emit = defineEmits([]);
  53. const { proxy } = getCurrentInstance();
  54. /*----------------------------------变量声明-----------------------------------*/
  55. const formInfo = ref(null)
  56. const state = reactive({
  57. ruleForm: {},
  58. rules: {
  59. powerFactorOne: [
  60. { required: true, message: '请输入功率因数', trigger: 'blur' },
  61. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  62. ],
  63. voltageQualified: [
  64. { required: true, message: '请输入电压合格率', trigger: 'blur' },
  65. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  66. ],
  67. loadRate: [
  68. { required: true, message: '请输入负载率', trigger: 'blur' },
  69. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  70. ],
  71. currentBalance: [
  72. { required: true, message: '请输入电流平衡度', trigger: 'blur' },
  73. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  74. ],
  75. voltageBalance: [
  76. { required: true, message: '请输入电压平衡度', trigger: 'blur' },
  77. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  78. ],
  79. thdu: [
  80. { required: true, message: '请输入谐波畸变率', trigger: 'blur' },
  81. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  82. ],
  83. powerFactorTwo: [
  84. { required: true, message: '请输入功率因数', trigger: 'blur' },
  85. { pattern: /^\d+(\.\d{1,2})?$/, message: '请输入数字,可保留两位小数' }
  86. ],
  87. },
  88. isDisable: false,
  89. formStatus: ""
  90. })
  91. const { ruleForm, rules, isDisable, formStatus } = toRefs(state)
  92. //评分配置详情查询
  93. function powerQualityList() {
  94. api
  95. .powerQualityList({
  96. siteId: props.siteId,
  97. })
  98. .then((requset) => {
  99. if (requset.status === 'SUCCESS') {
  100. if (requset.data[0]) {
  101. formStatus.value = 'update'
  102. ruleForm.value = requset.data[0]
  103. } else {
  104. formStatus.value = 'add'
  105. ruleForm.value = {}
  106. }
  107. } else {
  108. ElMessage.error(requset.msg)
  109. }
  110. })
  111. }
  112. function resetForm() {
  113. formInfo.value.clearValidate()
  114. }
  115. //表单提交
  116. function submitForm() {
  117. ruleForm.value.siteId = props.siteId
  118. formInfo.value.validate((valid) => {
  119. if (valid) {
  120. isDisable.value = true
  121. if (formStatus.value == 'add') {
  122. //新增
  123. api.powerQualityAdd(ruleForm.value).then((requset) => {
  124. if (requset.status === 'SUCCESS') {
  125. ElMessage.success({
  126. message: '新增成功',
  127. type: 'success',
  128. })
  129. setTimeout(() => {
  130. isDisable.value = false
  131. }, 5000)
  132. } else {
  133. ElMessage.error(requset.msg)
  134. }
  135. })
  136. } else {
  137. //修改
  138. api.powerQualityUpdate(ruleForm.value).then((requset) => {
  139. if (requset.status === 'SUCCESS') {
  140. ElMessage.success({
  141. message: '修改成功',
  142. type: 'success',
  143. })
  144. setTimeout(() => {
  145. isDisable.value = false
  146. }, 5000)
  147. } else {
  148. ElMessage.error(requset.msg)
  149. }
  150. })
  151. }
  152. } else {
  153. console.log('error submit!!')
  154. return false
  155. }
  156. })
  157. }
  158. watch(
  159. () => props.activeName,
  160. (newVal) => {
  161. if (newVal == 'six' && props.siteId) {
  162. resetForm()
  163. powerQualityList()
  164. }
  165. }
  166. )
  167. onMounted(() => {
  168. if (store.state.goUrl == 6) {
  169. resetForm()
  170. powerQualityList()
  171. }
  172. })
  173. </script>