index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <el-drawer
  3. class="custom-drawer"
  4. v-model="drawer"
  5. :title="title + '报警列表'"
  6. direction="rtl"
  7. size="45%"
  8. :before-close="handleClose"
  9. >
  10. <div class="drawer-form">
  11. <div class="select-item">
  12. 开始日期:
  13. <el-date-picker
  14. v-model="begin"
  15. type="datetime"
  16. value-format="YYYY-MM-DD HH:mm:ss"
  17. placeholder="选择日期"
  18. size="mini"
  19. popper-class="date-select"
  20. >
  21. </el-date-picker>
  22. </div>
  23. <div class="select-item">
  24. 结束日期:
  25. <el-date-picker
  26. v-model="end"
  27. type="datetime"
  28. value-format="YYYY-MM-DD HH:mm:ss"
  29. placeholder="选择日期"
  30. size="mini"
  31. popper-class="date-select"
  32. >
  33. </el-date-picker>
  34. </div>
  35. <div class="btns">
  36. <el-button round size="mini" class="buttons" @click="getAlarm"
  37. >搜索</el-button
  38. >
  39. </div>
  40. </div>
  41. <div class="table-wrapper">
  42. <el-table height="100%" :data="drawerList">
  43. <el-table-column
  44. v-for="(item, index) in tableHeader"
  45. :key="index"
  46. sortable
  47. :prop="item.code"
  48. :label="item.title"
  49. align="center"
  50. :width="item.width"
  51. >
  52. <template #default="{ row }">
  53. <span v-if="item.code == 'rank'">{{ getRank(row.rank) }}</span>
  54. <span v-else-if="item.code == 'endts'">{{
  55. row.endts ? "解除" : "未解除"
  56. }}</span>
  57. <span v-else>{{ row[item.code] }}</span>
  58. </template>
  59. </el-table-column>
  60. </el-table>
  61. <el-pagination
  62. style="display: flex; justify-content: flex-end; align-items: center"
  63. @current-change="handleCurrentChange"
  64. :current-page="page.currentPage"
  65. :page-size="page.pagesize"
  66. layout="total, prev, pager, next, jumper"
  67. :total="page.total"
  68. >
  69. </el-pagination>
  70. </div>
  71. </el-drawer>
  72. </template>
  73. <script>
  74. import { GetTableData } from "@/api/zhbj/index.js";
  75. import dayjs from "dayjs";
  76. export default {
  77. name: "sbsAlarm", //
  78. components: {},
  79. props: {},
  80. data() {
  81. return {
  82. drawer: false,
  83. title: "",
  84. drawerList: [],
  85. description: "",
  86. sub: "",
  87. begin: "",
  88. end: "",
  89. page: { currentPage: 1, pagesize: 22, total: 0 },
  90. tableHeader: [
  91. { title: "时间", code: "ts", width: "160" },
  92. { title: "场站名称", code: "stationname", width: "140" },
  93. { title: "报警描述", code: "description" },
  94. // { title: "级别", code: "rank", width: "110" },
  95. { title: "是否确认", code: "confirmed", width: "110" },
  96. { title: "是否解除", code: "endts", width: "110" },
  97. ],
  98. };
  99. },
  100. watch: {
  101. "$store.state.drawer": {
  102. handler(val) {
  103. this.drawer = val;
  104. },
  105. immediate: true,
  106. },
  107. },
  108. methods: {
  109. getRank(rank) {
  110. if (rank === 1) {
  111. return "低级";
  112. } else if (rank === 2) {
  113. return "低中级";
  114. } else if (rank === 3) {
  115. return "中级";
  116. } else if (rank === 4) {
  117. return "中高级";
  118. } else if (rank === 5) {
  119. return "高级";
  120. }
  121. },
  122. // 初始化弹窗数据
  123. openDialog(wtid, wpid, type) {
  124. this.wtype = type;
  125. this.wtid = wtid;
  126. this.wpid = wpid;
  127. if (wtid && wpid) {
  128. this.getTableData();
  129. this.dialogVisible = true;
  130. }
  131. },
  132. getTableData() {
  133. GetTableData({
  134. begin: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
  135. end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  136. alarmType: this.wtype == -1 ? "windturbine" : "inverter",
  137. stationid: this.wpid,
  138. deviceid: this.wtid,
  139. pageNum: this.page.currentPage,
  140. pageSize: this.page.pagesize,
  141. description: "",
  142. }).then(({ data }) => {
  143. if (data.ls.length) {
  144. this.tableData = data.ls.map((item) => {
  145. return {
  146. ...item,
  147. confirmed: item.confirmed ? "是" : "否",
  148. ts: dayjs(item.ts).format("YYYY-MM-DD HH:mm:ss"),
  149. };
  150. });
  151. this.page.total = data.total;
  152. } else {
  153. this.tableData = [];
  154. this.page.total = 0;
  155. }
  156. });
  157. },
  158. // 取消操作
  159. cancel() {
  160. this.wtid = "";
  161. this.wpid = "";
  162. this.page.currentPage = 1;
  163. this.dialogVisible = false;
  164. },
  165. handleCurrentChange(val) {
  166. this.page.currentPage = val;
  167. this.getTableData();
  168. },
  169. },
  170. mounted() {},
  171. computed: {},
  172. };
  173. </script>
  174. <style lang="less" scoped>
  175. .el-pagination {
  176. display: flex;
  177. align-items: center;
  178. justify-content: flex-end;
  179. }
  180. </style>