processDialog.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <template>
  2. <ele-modal
  3. :visible.sync="visible"
  4. title="处理"
  5. width="70%"
  6. append-to-body
  7. :maxable="true"
  8. @close="cancel"
  9. >
  10. <el-form
  11. ref="form"
  12. :model="form"
  13. :rules="rules"
  14. label-width="120px"
  15. class="el-form-box"
  16. >
  17. <!-- 告警详细 -->
  18. <header-title title="告警详细"></header-title>
  19. <el-row>
  20. <el-col :span="8">
  21. <el-form-item label="告警名称:">
  22. <el-input disabled v-model="form.name" placeholder=" " />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="告警级别:">
  27. <el-input
  28. disabled
  29. :value="getLevel(form.alarmLevel)"
  30. placeholder=" "
  31. />
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="8">
  35. <el-form-item label="告警设备:">
  36. <el-input disabled v-model="form.deviceName" placeholder=" " />
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="8">
  40. <el-form-item label="告警描述:">
  41. <el-input disabled v-model="form.description" placeholder=" " />
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="8">
  45. <el-form-item label="告警时间:">
  46. <el-input disabled v-model="form.alarmTime" placeholder=" " />
  47. </el-form-item>
  48. </el-col>
  49. </el-row>
  50. <!-- 告警处理意见 -->
  51. <header-title title="告警处理意见"></header-title>
  52. <el-row>
  53. <el-col :span="8">
  54. <el-form-item label="处理时间:" prop="handleTime">
  55. <el-date-picker
  56. v-model="form.handleTime"
  57. type="datetime"
  58. placeholder="时间 "
  59. style="width: 100%"
  60. format="yyyy-MM-dd HH:mm:ss"
  61. value-format="yyyy-MM-dd HH:mm:ss"
  62. :disabled="type == 'view'"
  63. ></el-date-picker>
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="8">
  67. <el-form-item label="处理方式:" prop="handleResult">
  68. <el-select
  69. v-model="form.handleResult"
  70. placeholder="请选择"
  71. :disabled="type == 'view'"
  72. style="width: 100%"
  73. >
  74. <el-option label="现场处理" :value="1"></el-option>
  75. <el-option label="远程处理" :value="2"></el-option>
  76. <el-option label="转派处理" :value="3"></el-option>
  77. </el-select>
  78. </el-form-item>
  79. </el-col>
  80. </el-row>
  81. <el-row>
  82. <el-col :span="24">
  83. <el-form-item label="处理意见:">
  84. <el-input
  85. v-model="form.remark"
  86. :disabled="type == 'view'"
  87. type="textarea"
  88. :rows="4"
  89. placeholder="请输入"
  90. ></el-input>
  91. </el-form-item>
  92. </el-col>
  93. </el-row>
  94. <el-row>
  95. <el-col :span="24">
  96. <el-form-item label="处理照片:">
  97. <fileMain
  98. v-model="form.attachmentUrl"
  99. :type="type == 'view' ? 'view' : 'add'"
  100. ></fileMain>
  101. </el-form-item>
  102. </el-col>
  103. </el-row>
  104. </el-form>
  105. <template v-slot:footer>
  106. <el-button
  107. type="primary"
  108. @click="save()"
  109. v-loading="loading"
  110. v-if="type != 'view'"
  111. >保存</el-button
  112. >
  113. <el-button @click="cancel">关闭</el-button>
  114. </template>
  115. </ele-modal>
  116. </template>
  117. <script>
  118. import dayjs from 'dayjs';
  119. import {
  120. getAlarmlogsheetById,
  121. updateAlarmlogsheet
  122. } from '@/api/warning/index.js';
  123. const defForm = {
  124. name: '',
  125. levelText: '',
  126. energyClassificationName: '',
  127. areaName: '',
  128. description: '',
  129. warningTime: '',
  130. handleTime: '',
  131. handleResult: '',
  132. remark: '',
  133. increaseDate: '',
  134. increaseUnit: 'degree',
  135. increaseDosage: '',
  136. qualitativeProcessing: 'needCheck',
  137. deviceName: '',
  138. attachmentUrl: []
  139. };
  140. export default {
  141. data() {
  142. return {
  143. visible: false,
  144. loading: false,
  145. form: { ...defForm },
  146. type: 'edit',
  147. fileList: [],
  148. rules: {
  149. handleTime: [
  150. { required: true, message: '请选择处理时间', trigger: 'change' }
  151. ],
  152. handleResult: [
  153. { required: true, message: '请选择处理方式', trigger: 'change' }
  154. ]
  155. }
  156. };
  157. },
  158. methods: {
  159. async open(row, type) {
  160. this.visible = true;
  161. this.type = type;
  162. if (row) {
  163. this.form = await getAlarmlogsheetById(row.id);
  164. if (this.type !== 'view' && !this.form.handleTime) {
  165. this.form.handleTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
  166. }
  167. }
  168. },
  169. getLevel(val) {
  170. return { 1: '轻微', 2: '中等', 3: '严重', 4: '紧急', 5: '致命' }[val];
  171. },
  172. cancel() {
  173. this.form = { ...defForm };
  174. this.visible = false;
  175. },
  176. save() {
  177. this.$refs.form.validate((valid) => {
  178. if (valid) {
  179. this.loading = true;
  180. this.form.handleUserName = this.$store.state.user.info.name;
  181. this.form.handleUserId = this.$store.state.user.info.userId;
  182. this.form.handleStatus = 2;
  183. updateAlarmlogsheet(this.form)
  184. .then((res) => {
  185. this.loading = false;
  186. this.$message.success('操作成功');
  187. this.cancel();
  188. this.$emit('reload');
  189. })
  190. .finally(() => {
  191. this.loading = false;
  192. });
  193. }
  194. });
  195. }
  196. }
  197. };
  198. </script>
  199. <style lang="scss" scoped>
  200. .el-form-box {
  201. ::v-deep .el-input.is-disabled .el-input__inner {
  202. background-color: #f5f7fa;
  203. color: #606266;
  204. }
  205. }
  206. </style>