index.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <template>
  2. <div>
  3. <!-- 标题 -->
  4. <el-row>
  5. <el-col
  6. :span="24"
  7. class="first-row"
  8. >
  9. <div class="tag">冒烟告警</div>
  10. </el-col>
  11. </el-row>
  12. <!-- 分割线 -->
  13. <hr style="background-color: #CCCCCC;height: 1px;border: 0;">
  14. <div style="margin: 20px 0;"></div>
  15. <!-- 时间选择框 -->
  16. <el-row>
  17. <el-col :span="8">
  18. <el-date-picker
  19. v-model="select_datetime"
  20. type="daterange"
  21. align="center"
  22. unlink-panels
  23. range-separator="至"
  24. :start-placeholder="startTime"
  25. :end-placeholder="endTime"
  26. @change="dateChange"
  27. value-format="yyyy-MM-dd HH:mm:ss"
  28. :picker-options="pickerOptions"
  29. class="shijian_plus"
  30. >
  31. </el-date-picker>
  32. </el-col>
  33. <el-col :span="2">
  34. <div class="smoke_title">次数统计:</div>
  35. </el-col>
  36. <el-col :span="4">
  37. <div class="smoke_num">{{totalCount}}次</div>
  38. </el-col>
  39. </el-row>
  40. <div style="margin: 20px 0;"></div>
  41. <hr style="background-color: #CCCCCC;height: 1px;border: 0;">
  42. <!-- 表格区域 -->
  43. <el-row>
  44. <el-col
  45. :span="24"
  46. class="third-row"
  47. >
  48. <el-table
  49. :data="tableData"
  50. style="width: 100%;font-size: 14px;"
  51. highlight-current-row
  52. height="450"
  53. >
  54. <el-table-column
  55. prop="publishTime"
  56. label="发现时间"
  57. align="center"
  58. >
  59. </el-table-column>
  60. <el-table-column
  61. prop="publishTime"
  62. label="推送时间"
  63. align="center"
  64. >
  65. </el-table-column>
  66. <el-table-column
  67. prop="pushRecords"
  68. label="推送人员"
  69. align="center"
  70. :formatter="peopleData"
  71. >
  72. </el-table-column>
  73. <el-table-column
  74. prop="place"
  75. label="发现地点"
  76. align="center"
  77. >
  78. </el-table-column>
  79. <el-table-column
  80. label="回传图片"
  81. align="center"
  82. >
  83. <template slot-scope="{ row }">
  84. <img
  85. style="width: 82px; height: 60px"
  86. :src="row.images"
  87. />
  88. </template>
  89. </el-table-column>
  90. <el-table-column
  91. label="操作详情"
  92. align="center"
  93. >
  94. <template slot-scope="{ row }">
  95. <div v-if="row.handleStatus==='1'">
  96. <el-button
  97. type="danger"
  98. @click="handleWarn(row.id)"
  99. >未处理</el-button>
  100. </div>
  101. <div v-else>
  102. <div>{{row.handleDesc}}</div>
  103. </div>
  104. </template>
  105. </el-table-column>
  106. </el-table>
  107. </el-col>
  108. </el-row>
  109. <div style="margin: 20px 0;"></div>
  110. <!-- 分页器 -->
  111. <el-row>
  112. <div class="pagination_smoke">
  113. <el-pagination
  114. background
  115. layout="total,prev, pager, next"
  116. :total="totalCount"
  117. :page-size="pageSize"
  118. :current-page.sync="curPage"
  119. @current-change="changeCurPage"
  120. >
  121. </el-pagination>
  122. </div>
  123. </el-row>
  124. <!-- 处理警告弹窗 -->
  125. <el-dialog
  126. title="处置操作"
  127. :visible.sync="dialogVisible"
  128. width="30%"
  129. >
  130. <el-input
  131. type="textarea"
  132. :rows="5"
  133. placeholder="请输入内容"
  134. v-model="textarea"
  135. >
  136. </el-input>
  137. <div style="margin: 20px 0;"></div>
  138. <div class="button_save">
  139. <el-button
  140. type="primary"
  141. @click="handleSave"
  142. >保存</el-button>
  143. </div>
  144. </el-dialog>
  145. </div>
  146. </template>
  147. <script>
  148. export default {
  149. name: "",
  150. data() {
  151. return {
  152. select_datetime: [], // 选择的时间范围
  153. startTime: "",
  154. endTime: "",
  155. pickerOptions: {
  156. shortcuts: [
  157. {
  158. text: "最近一周",
  159. onClick(picker) {
  160. const end = new Date();
  161. const start = new Date();
  162. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  163. picker.$emit("pick", [start, end]);
  164. },
  165. },
  166. {
  167. text: "最近一个月",
  168. onClick(picker) {
  169. const end = new Date();
  170. const start = new Date();
  171. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  172. picker.$emit("pick", [start, end]);
  173. },
  174. },
  175. {
  176. text: "最近三个月",
  177. onClick(picker) {
  178. const end = new Date();
  179. const start = new Date();
  180. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  181. picker.$emit("pick", [start, end]);
  182. },
  183. },
  184. ],
  185. },
  186. curPage: 1, // 当前页
  187. pageSize: 4, // 每页记录数
  188. totalCount: null, // 总条数
  189. tableData: [], // 列表
  190. dialogVisible: false,
  191. textarea: "", // 处理内容
  192. warningId: "",
  193. };
  194. },
  195. mounted() {
  196. this.getSmokeRecord();
  197. },
  198. methods: {
  199. // 换页逻辑
  200. changeCurPage(val) {
  201. this.handleCurrentChange(val);
  202. },
  203. // 更改时间逻辑
  204. dateChange(val) {
  205. if (val) {
  206. this.startTime = val[0];
  207. this.endTime = val[1];
  208. this.handleCurrentChange(1);
  209. } else {
  210. this.startTime = "";
  211. this.endTime = "";
  212. this.handleCurrentChange(1);
  213. }
  214. },
  215. // 整理参数
  216. handleCurrentChange(val) {
  217. this.curPage = val;
  218. this.getSmokeRecord();
  219. },
  220. // 处理表格数据
  221. peopleData(row) {
  222. let peopleArr = [];
  223. row.pushRecords.forEach((item) => {
  224. peopleArr.push(item.dutyName + " ");
  225. });
  226. return peopleArr;
  227. },
  228. // 获取 冒烟警告记录列表
  229. async getSmokeRecord() {
  230. let params = {
  231. curPage: this.curPage,
  232. pageSize: this.pageSize,
  233. startTime: this.startTime,
  234. endTime: this.endTime,
  235. };
  236. let res = await this.$axios({
  237. url: "/diseaseRight/warningOfSmokeRecord/list",
  238. method: "get",
  239. params: params,
  240. });
  241. // console.log(res);
  242. if (res.status == 200) {
  243. this.tableData = res.data.data.list;
  244. this.totalCount = res.data.data.totalCount;
  245. } else {
  246. console.log("获取 冒烟警告记录列表 请求失败");
  247. }
  248. },
  249. // 处理警告
  250. handleWarn(id) {
  251. this.warningId = id;
  252. this.dialogVisible = true;
  253. },
  254. // 处理保存
  255. async handleSave() {
  256. let data = {
  257. warningId: this.warningId,
  258. handleDesc: this.textarea,
  259. };
  260. this.dialogVisible = false;
  261. let res = await this.$axios({
  262. url: "/diseaseRight/warningOfSmokeRecord/handle",
  263. method: "put",
  264. data,
  265. headers: {
  266. "Admin-Token": sessionStorage.getItem("token"),
  267. },
  268. });
  269. // console.log(res);
  270. if (res.status == 200 && res.data.success) {
  271. this.$message({
  272. showClose: true,
  273. message: "处置成功",
  274. type: "success",
  275. });
  276. } else {
  277. this.$message({
  278. showClose: true,
  279. message: "处置失败",
  280. type: "error",
  281. });
  282. }
  283. this.handleCurrentChange(this.curPage);
  284. },
  285. },
  286. };
  287. </script>
  288. <style scoped>
  289. .first-row {
  290. display: flex;
  291. justify-content: space-between;
  292. align-items: center;
  293. height: 50px;
  294. }
  295. .tag {
  296. width: 108px;
  297. height: 40px;
  298. font-size: 24px;
  299. font-family: Microsoft YaHei-3970(82674968);
  300. font-weight: bold;
  301. color: #000000;
  302. line-height: 54px;
  303. }
  304. .shijian_plus.el-date-editor--daterange {
  305. width: 250px;
  306. }
  307. .smoke_title {
  308. color: #2784c1;
  309. line-height: 200%;
  310. }
  311. .smoke_num {
  312. line-height: 200%;
  313. }
  314. .third-row {
  315. display: flex;
  316. align-items: center;
  317. justify-content: center;
  318. margin-top: 0;
  319. }
  320. .button_save {
  321. margin-left: 40%;
  322. }
  323. .pagination_smoke {
  324. text-align: center;
  325. }
  326. </style>