dialogComponent.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <transition name="dialog-fade">
  3. <el-dialog
  4. v-if="showDialog"
  5. :title="dialogTitle"
  6. class="dialog-component"
  7. :visible.sync="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="stationName">
  19. <el-input v-model="formInfo.stationName"></el-input>
  20. </el-form-item>
  21. <el-form-item label="台区编号:" prop="stationCode">
  22. <el-input v-model="formInfo.stationCode"></el-input>
  23. </el-form-item>
  24. <el-form-item label="台区地址:" prop="stationAddress">
  25. <el-input v-model="formInfo.stationAddress"></el-input>
  26. </el-form-item>
  27. <el-form-item label="站点列表:" prop="siteList">
  28. <el-select
  29. v-model="formInfo.siteList"
  30. multiple
  31. filterable
  32. collapse-tags
  33. placeholder="请选择"
  34. >
  35. <el-option
  36. v-for="item in options"
  37. :key="item.value"
  38. :label="item.label"
  39. :value="item.value"
  40. >
  41. </el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="已勾选:" prop="done">
  45. <el-input v-model="formInfo.done" style="width: 200px"></el-input>
  46. 个站点
  47. </el-form-item>
  48. <el-form-item label="共挂载:" prop="guaZai">
  49. <el-input v-model="formInfo.guaZai" style="width: 200px"></el-input>
  50. 个设备
  51. </el-form-item>
  52. <br />
  53. <br />
  54. <br />
  55. <div style="text-align: right">
  56. <el-button @click="closeDialog(0)">取消</el-button>
  57. <el-button type="primary" @click="submitForm('formInfo')"
  58. >保存</el-button
  59. >
  60. </div>
  61. </el-form>
  62. </el-dialog>
  63. </transition>
  64. </template>
  65. <script>
  66. export default {
  67. name: "DialogComponent",
  68. props: {
  69. dialogTitle: {
  70. type: String,
  71. default: "新增",
  72. },
  73. itemInfo: {
  74. type: Object,
  75. default: function () {
  76. return {};
  77. },
  78. },
  79. },
  80. data() {
  81. return {
  82. showDialog: false,
  83. formInfo: JSON.parse(JSON.stringify(this.itemInfo)),
  84. options: [
  85. {
  86. value: "选项1",
  87. label: "站点一",
  88. },
  89. {
  90. value: "选项2",
  91. label: "站点二",
  92. },
  93. {
  94. value: "选项3",
  95. label: "站点三",
  96. },
  97. {
  98. value: "选项4",
  99. label: "站点四",
  100. },
  101. {
  102. value: "选项5",
  103. label: "站点五",
  104. },
  105. ],
  106. rules: {
  107. stationName: [
  108. // required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
  109. { required: true, message: "请输入台区名称", trigger: "blur" },
  110. {
  111. min: 3,
  112. max: 6,
  113. message: "用户名长度在 3 到 6 个字符",
  114. trigger: "blur",
  115. },
  116. ],
  117. stationCode: [
  118. { required: true, message: "请输入台区编号", trigger: "blur" },
  119. {
  120. min: 3,
  121. max: 6,
  122. message: "用户名长度在 3 到 6 个字符",
  123. trigger: "blur",
  124. },
  125. ],
  126. stationAddress: [
  127. { required: true, message: "请输入台区地址", trigger: "blur" },
  128. {
  129. min: 3,
  130. max: 6,
  131. message: "用户名长度在 3 到 6 个字符",
  132. trigger: "blur",
  133. },
  134. ],
  135. siteList: [
  136. { required: true, message: '请选择站点列表', trigger: 'change'}
  137. ],
  138. done: [
  139. { required: true, message: "请输入已选站点个数", trigger: "blur" },
  140. { trigger: "blur" },
  141. ],
  142. guaZai: [
  143. { required: true, message: "请输入挂载设备个数", trigger: "blur" },
  144. { trigger: "blur" },
  145. ],
  146. },
  147. };
  148. },
  149. methods: {
  150. roleValid(rule, value, callback) {
  151. if (value.length === 0) {
  152. callback(new Error("角色不能为空"));
  153. } else {
  154. callback();
  155. }
  156. },
  157. // onSelectedDrug(event) {
  158. // this.siteList = event;
  159. // console.log(this.siteList);
  160. // },
  161. // 保存操作
  162. submitForm(formName) {
  163. const that = this;
  164. const params = Object.assign(that.formInfo, {});
  165. that.$refs[formName].validate((valid) => {
  166. if (valid) {
  167. // 走保存请求
  168. that.$message({
  169. message: "操作成功!",
  170. type: "success",
  171. });
  172. that.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. </style>