dialogComponent.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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" label-width="150px">
  19. <el-input v-model="formInfo.watchName"></el-input>
  20. </el-form-item>
  21. <el-form-item label="开始停电时间:" prop="watchCode" label-width="150px">
  22. <el-input v-model="formInfo.watchCode"></el-input >
  23. </el-form-item>
  24. <el-form-item label="结束停电时间:" prop="routeAddress" label-width="150px">
  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="提交时间:" prop="ratedVoltage" label-width="150px">
  42. <el-input v-model="formInfo.ratedVoltage"></el-input>
  43. </el-form-item>
  44. <el-form-item label="提交人:" prop="stationAddress" label-width="150px">
  45. <el-input v-model="formInfo.ratedCurrent"></el-input>
  46. </el-form-item>
  47. <el-form-item label="状态:" prop="fzlMx" label-width="150px">
  48. <el-input v-model="formInfo.fzlMx"></el-input>
  49. </el-form-item>
  50. <br />
  51. <br />
  52. <br />
  53. <div style="text-align: right">
  54. <el-button @click="closeDialog(0)">取消</el-button>
  55. <el-button type="primary" @click="submitForm('formInfo')"
  56. >保存</el-button
  57. >
  58. </div>
  59. </el-form>
  60. </el-dialog>
  61. </transition>
  62. </template>
  63. <script>
  64. export default {
  65. name: "DialogComponent",
  66. props: {
  67. dialogTitle: {
  68. type: String,
  69. default: "新增",
  70. },
  71. itemInfo: {
  72. type: Object,
  73. default: function () {
  74. return {};
  75. },
  76. },
  77. },
  78. data() {
  79. return {
  80. checked: true,
  81. showDialog: false,
  82. formInfo: JSON.parse(JSON.stringify(this.itemInfo)),
  83. options: [
  84. {
  85. value: "选项1",
  86. label: "站点一",
  87. },
  88. {
  89. value: "选项2",
  90. label: "站点二",
  91. },
  92. {
  93. value: "选项3",
  94. label: "站点三",
  95. },
  96. {
  97. value: "选项4",
  98. label: "站点四",
  99. },
  100. {
  101. value: "选项5",
  102. label: "站点五",
  103. },
  104. ],
  105. rules: {
  106. watchName: [
  107. // required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
  108. { required: true, message: "请输入站点名称", trigger: "blur" },
  109. {
  110. min: 3,
  111. max: 6,
  112. message: "用户名长度在 3 到 6 个字符",
  113. trigger: "blur",
  114. },
  115. ],
  116. watchCode: [
  117. { required: true, message: "请输入开始停电时间", trigger: "blur" },
  118. {
  119. min: 3,
  120. max: 6,
  121. message: "用户名长度在 3 到 6 个字符",
  122. trigger: "blur",
  123. },
  124. ],
  125. routeAddress: [
  126. { required: true, message: "请选则结束停电时间", trigger: "change" },
  127. ],
  128. ratedVoltage: [
  129. { required: true, message: '请选择站点列表', trigger: 'change'}
  130. ],
  131. ratedCurrent: [
  132. { required: true, message: "请输入已选站点个数", trigger: "blur" },
  133. { trigger: "blur" },
  134. ],
  135. fzlMx: [
  136. { required: true, message: "请输入挂载设备个数", trigger: "blur" },
  137. { trigger: "blur" },
  138. ],
  139. },
  140. };
  141. },
  142. methods: {
  143. roleValid(rule, value, callback) {
  144. if (value.length === 0) {
  145. callback(new Error("角色不能为空"));
  146. } else {
  147. callback();
  148. }
  149. },
  150. // onSelectedDrug(event) {
  151. // this.routeAddress = event;
  152. // console.log(this.routeAddress);
  153. // },
  154. // 保存操作
  155. submitForm(formName) {
  156. const params = Object.assign(this.formInfo, {});
  157. this.$refs[formName].validate((valid) => {
  158. if (valid) {
  159. // 走保存请求
  160. this.$message({
  161. message: "操作成功!",
  162. type: "success",
  163. });
  164. this.closeDialog(1);
  165. } else {
  166. return false;
  167. }
  168. });
  169. },
  170. // 关闭弹框
  171. closeDialog(flag) {
  172. this.$refs["formInfo"].resetFields();
  173. this.showDialog = false;
  174. this.$emit("closeDialog", flag);
  175. },
  176. },
  177. };
  178. </script>
  179. <style scoped lang="scss">
  180. .el-input,
  181. .el-select {
  182. width: 240px;
  183. }
  184. // label样式
  185. .el-form-item__label {
  186. width: 150px
  187. }
  188. .el-form-item__content {
  189. margin-left: 150px
  190. }
  191. </style>