dataBox.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <!--
  2. * @Description: 新增/编辑弹框
  3. * @Author: 空白格
  4. * @Date: 2023-07-04 13:55:00
  5. * @LastEditors: 空白格
  6. * @LastEditTime: 2023-07-06 09:08:39
  7. * @FilePath: \cattle_webui\src\views\system\noticeMgr\Dialog\AddOrEditDialog.vue
  8. * @Copyright: Copyright (c) 2016~2023 by 空白格, All Rights Reserved.
  9. -->
  10. <template>
  11. <el-dialog
  12. :title="title"
  13. :visible.sync="open"
  14. width="700px"
  15. :close-on-click-modal="false"
  16. @close="cancel"
  17. >
  18. <div class="dialog"
  19. >
  20. <el-form
  21. v-loading="loading"
  22. :model="form"
  23. ref="form"
  24. :rules="rules"
  25. label-width="120px">
  26. <el-form-item label="设备名称:" prop="deviceName">
  27. <el-input v-if="type!=3" v-model="form.deviceName" placeholder="请输入设备名称" />
  28. <span v-else>{{ form.deviceName }}</span>
  29. </el-form-item>
  30. <el-form-item label="设备编号:" prop="deviceNo">
  31. <el-input v-if="type!=3" v-model="form.deviceNo" placeholder="请输入设备编号" />
  32. <span v-else>{{ form.deviceNo }}</span>
  33. </el-form-item>
  34. <el-form-item label="所在位置:" prop="deviceAddress">
  35. <el-input v-if="type!=3" v-model="form.deviceAddress" placeholder="请输入所在位置" />
  36. <span v-else>{{ form.deviceAddress }}</span>
  37. </el-form-item>
  38. <el-form-item label="连接IP:" prop="connectIp">
  39. <el-input v-if="type!=3" v-model="form.connectIp" placeholder="请输入连接IP" />
  40. <span v-else>{{ form.connectIp }}</span>
  41. </el-form-item>
  42. <el-form-item label="设备类型:" prop="deviceType">
  43. <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
  44. </el-form-item>
  45. </el-form>
  46. </div>
  47. <span slot="footer" class="dialog-footer">
  48. <el-button @click="cancel">关闭</el-button>
  49. <el-button
  50. type="primary"
  51. @click="submitForm"
  52. :loading="loading"
  53. element-loading-text="提交中..."
  54. v-if="type!=3"
  55. >
  56. 保存
  57. </el-button>
  58. </span>
  59. </el-dialog>
  60. </template>
  61. <script>
  62. import {
  63. saveAndAdd,
  64. saveAndEdit} from "@/api/device/pda";
  65. export default {
  66. name: "addAndEdit",
  67. dicts: ['device_sys_type'],
  68. data() {
  69. return {
  70. title: "编辑",
  71. type: 0,
  72. model: "EDIT",
  73. open: false,
  74. loading: false,
  75. form: {},
  76. rules: {
  77. deviceName: [{ required: true, message: "请输入设备名称", trigger: ["change","blur"] }],
  78. deviceNo: [
  79. { required: true, message: "请输入设备编号", trigger: ["change","blur"] },
  80. ],
  81. deviceType: [
  82. { required: true, message: "请输入设备类型", trigger: ["change","blur"] },
  83. ],
  84. deviceAddress: [
  85. { required: true, message: "请输入所在位置", trigger: ["change","blur"] },
  86. ],
  87. connectIp: [
  88. { required: true, message: "请输入连接IP", trigger: ["change","blur"] },
  89. ]
  90. },
  91. };
  92. },
  93. methods: {
  94. /**
  95. * 打开弹框
  96. * @date 2022-09-20
  97. * @param {any} obj
  98. * @returns {any}
  99. */
  100. openDialog(title, obj,type) {
  101. this.title = title;
  102. this.type = type
  103. this.open = true;
  104. if (obj){
  105. this.$nextTick(() => {
  106. this.form = Object.assign({},this.form,obj)
  107. });
  108. }else{
  109. this.$nextTick(() => {
  110. this.$refs["form"].clearValidate();
  111. this.$set(this.form,'deviceType',5)
  112. });
  113. }
  114. },
  115. /**
  116. * 保存
  117. * @date 2022-09-20
  118. * @returns {any}
  119. */
  120. submitForm() {
  121. this.$refs["form"].validate(async (valid) => {
  122. if (valid) {
  123. try {
  124. this.loading = true;
  125. if(this.form.id) {
  126. const { code } = await saveAndEdit({ ...this.form });
  127. if (code === 200) {
  128. this.$message.success("操作成功!");
  129. this.$emit("getList");
  130. this.cancel();
  131. }
  132. }else {
  133. const { code } = await saveAndAdd ({ ...this.form });
  134. if (code === 200) {
  135. this.$message.success("操作成功!");
  136. this.$emit("getList");
  137. this.cancel();
  138. }
  139. }
  140. } catch (error) {
  141. } finally {
  142. this.loading = false;
  143. }
  144. }
  145. });
  146. },
  147. /**
  148. * 重置
  149. * @date 2022-09-20
  150. * @returns {any}
  151. */
  152. reset() {
  153. this.$refs["form"].resetFields();
  154. this.form.id = undefined;
  155. },
  156. /**
  157. * 关闭弹框
  158. * @date 2022-09-20
  159. * @returns {any}
  160. */
  161. cancel() {
  162. this.reset();
  163. this.open = false;
  164. },
  165. },
  166. };
  167. </script>
  168. <style lang="scss" scoped>
  169. .dialog {
  170. padding: 0 30px;
  171. max-height: 65vh;
  172. overflow-y: auto;
  173. }
  174. </style>