dialogComponent-ora.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <transition name="dialog-fade">
  3. <el-dialog
  4. v-if="showDialog"
  5. :title="dialogTitle"
  6. class="dialog-component"
  7. v-model="showDialog"
  8. width="640px"
  9. @close="closeDialog(0)"
  10. >
  11. <el-form
  12. ref="formInfo"
  13. :model="formInfo"
  14. class="demo-form-inline"
  15. label-width="100px"
  16. :rules="rules"
  17. >
  18. <el-form-item label="设备名称:" prop="watchName">
  19. <el-input v-model="formInfo.watchName"></el-input>
  20. </el-form-item>
  21. <el-form-item label="设备编号:" prop="watchCode">
  22. <el-input v-model="formInfo.watchCode"></el-input>
  23. </el-form-item>
  24. <el-form-item label="回路表记地址:" prop="routeAddress">
  25. <el-select
  26. v-model="formInfo.routeAddress"
  27. multiple
  28. filterable
  29. collapse-tags
  30. placeholder="请选择"
  31. >
  32. <el-option
  33. v-for="item in options"
  34. :key="item.value"
  35. :label="item.label"
  36. :value="item.value"
  37. >
  38. </el-option>
  39. </el-select>
  40. </el-form-item>
  41. <el-form-item label="额定电压(kV):" prop="ratedVoltage">
  42. <el-input v-model="formInfo.ratedVoltage"></el-input>
  43. <div class="remarksTxt">(数值为线电压)</div>
  44. </el-form-item>
  45. <el-form-item label="额定电流(A):" prop="stationAddress">
  46. <el-input v-model="formInfo.ratedCurrent"></el-input>
  47. </el-form-item>
  48. <el-form-item label="电流负载率门限:" prop="fzlMx">
  49. <el-input v-model="formInfo.fzlMx"></el-input>
  50. <div class="remarksTxt">(0-100之间的数字)</div>
  51. </el-form-item>
  52. <el-form-item label="设备能力:" prop="ability">
  53. <el-checkbox v-model="checked">电能质量分析</el-checkbox>
  54. <div class="remarksTxt">(如果未勾选,该设备不参与电能质量分析)</div>
  55. </el-form-item>
  56. <br />
  57. <br />
  58. <br />
  59. <div style="text-align: right">
  60. <el-button @click="closeDialog(0)">取消</el-button>
  61. <el-button type="primary" @click="submitForm('formInfo')"
  62. >保存</el-button
  63. >
  64. </div>
  65. </el-form>
  66. </el-dialog>
  67. </transition>
  68. </template>
  69. <script>
  70. export default {
  71. name: "DialogComponent",
  72. props: {
  73. dialogTitle: {
  74. type: String,
  75. default: "新增",
  76. },
  77. itemInfo: {
  78. type: Object,
  79. default: function () {
  80. return {};
  81. },
  82. },
  83. },
  84. data() {
  85. return {
  86. checked: true,
  87. showDialog: false,
  88. formInfo: JSON.parse(JSON.stringify(this.itemInfo)),
  89. options: [
  90. {
  91. value: "选项1",
  92. label: "站点一",
  93. },
  94. {
  95. value: "选项2",
  96. label: "站点二",
  97. },
  98. {
  99. value: "选项3",
  100. label: "站点三",
  101. },
  102. {
  103. value: "选项4",
  104. label: "站点四",
  105. },
  106. {
  107. value: "选项5",
  108. label: "站点五",
  109. },
  110. ],
  111. rules: {
  112. watchName: [
  113. // required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
  114. { required: true, message: "请输入设备名称", trigger: "blur" },
  115. {
  116. min: 3,
  117. max: 6,
  118. message: "用户名长度在 3 到 6 个字符",
  119. trigger: "blur",
  120. },
  121. ],
  122. watchCode: [
  123. { required: true, message: "请输入设备编号", trigger: "blur" },
  124. {
  125. min: 3,
  126. max: 6,
  127. message: "用户名长度在 3 到 6 个字符",
  128. trigger: "blur",
  129. },
  130. ],
  131. routeAddress: [
  132. { required: true, message: "请选则回路表记地址", trigger: "change" },
  133. ],
  134. ratedVoltage: [
  135. { required: true, message: '请选择站点列表', trigger: 'change'}
  136. ],
  137. ratedCurrent: [
  138. { required: true, message: "请输入已选站点个数", trigger: "blur" },
  139. { trigger: "blur" },
  140. ],
  141. fzlMx: [
  142. { required: true, message: "请输入挂载设备个数", trigger: "blur" },
  143. { trigger: "blur" },
  144. ],
  145. },
  146. };
  147. },
  148. methods: {
  149. roleValid(rule, value, callback) {
  150. rule
  151. if (value.length === 0) {
  152. callback(new Error("角色不能为空"));
  153. } else {
  154. callback();
  155. }
  156. },
  157. // onSelectedDrug(event) {
  158. // this.routeAddress = event;
  159. // console.log(this.routeAddress);
  160. // },
  161. // 保存操作
  162. submitForm(formName) {
  163. const params = Object.assign(this.formInfo, {});
  164. params
  165. this.$refs[formName].validate((valid) => {
  166. if (valid) {
  167. // 走保存请求
  168. this.$message({
  169. message: "操作成功!",
  170. type: "success",
  171. });
  172. this.closeDialog(1);
  173. } else {
  174. return false;
  175. }
  176. });
  177. },
  178. // 关闭弹框
  179. closeDialog(flag) {
  180. this.$refs["formInfo"].resetFields();
  181. this.showDialog = false;
  182. this.$emit("closeDialog", flag);
  183. },
  184. },
  185. };
  186. </script>
  187. <style scoped lang="scss">
  188. .el-input,
  189. .el-select {
  190. width: 240px;
  191. }
  192. // label样式
  193. .el-form-item__label {
  194. width: 150px
  195. }
  196. .el-form-item__content {
  197. margin-left: 150px
  198. }
  199. </style>