message_management.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. <template>
  2. <div class="body-wrapper">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane label="配置消息" name="配置消息">
  5. <div class="form-div">
  6. <el-form label-position="left" label-width="100px" :model="formLabelAlign">
  7. <el-form-item label="标题:">
  8. <el-input v-model="formLabelAlign.messageTitle"></el-input>
  9. </el-form-item>
  10. <el-form-item label="内容:">
  11. <el-input type="textarea"
  12. :rows="4"
  13. v-model="formLabelAlign.messageArea"></el-input>
  14. </el-form-item>
  15. </el-form>
  16. <span slot="footer" class="dialog-footer">
  17. <el-button type="primary" @click="handleConfirm">推送消息</el-button>
  18. </span>
  19. </div>
  20. </el-tab-pane>
  21. <el-tab-pane label="通知消息" name="通知消息">
  22. <el-form class="form-wrapper" :inline="true" :model="formInline2" style="margin-bottom: 20px;">
  23. <el-row>
  24. <el-col :span="8">
  25. <el-form-item label="报警信息:">
  26. <el-input v-model="formInline2.alarmMessage" placeholder="请输入"></el-input>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="8">
  30. <el-form-item>
  31. <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
  32. </el-form-item>
  33. </el-col>
  34. </el-row>
  35. </el-form>
  36. <el-table :data="tableData2">
  37. <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
  38. </el-table-column>
  39. <el-table-column
  40. label="操作"
  41. width="200">
  42. <div slot-scope="scope">
  43. <el-button @click="handleDetail2(scope.row)" type="primary" size="mini">查看详情</el-button>
  44. </div>
  45. </el-table-column>
  46. </el-table>
  47. <div class="table-pagination">
  48. <el-pagination layout="prev, pager, next" :total="total2" @current-change="handlePageChange2"
  49. :current-page.sync="pageNum2" :page-size.sync="pageSize2">
  50. </el-pagination>
  51. </div>
  52. <el-dialog
  53. :title="title2"
  54. :visible.sync="dialogVisible2"
  55. width="45%"
  56. custom-class="audit-dialog">
  57. <div class="form-div">
  58. <el-form disabled label-position="left" label-width="110px" :model="formLabelAlign2">
  59. <el-form-item label="报警信息">
  60. <el-input v-model="formLabelAlign2.alarmMessage"></el-input>
  61. </el-form-item>
  62. <el-form-item label="车牌号">
  63. <el-input v-model="formLabelAlign2.plateNo"></el-input>
  64. </el-form-item>
  65. <el-form-item label="报警时间">
  66. <el-input v-model="formLabelAlign2.alarmTime"></el-input>
  67. </el-form-item>
  68. </el-form>
  69. </div>
  70. </el-dialog>
  71. </el-tab-pane>
  72. <el-tab-pane label="设备报警消息" name="设备报警消息">
  73. <el-form class="form-wrapper" :inline="true" :model="formInline3" style="margin-bottom: 20px;">
  74. <el-row>
  75. <el-col :span="8">
  76. <el-form-item label="设备报警:">
  77. <el-input v-model="formInline3.alertInfo" placeholder="请输入"></el-input>
  78. </el-form-item>
  79. </el-col>
  80. <el-col :span="8">
  81. <el-form-item>
  82. <el-button type="primary" class="query-btn" @click="onSubmit3">查询</el-button>
  83. </el-form-item>
  84. </el-col>
  85. </el-row>
  86. </el-form>
  87. <el-table :data="tableData3">
  88. <el-table-column v-for="(item, index) in columns3" :key="index" :label="item.label" :prop="item.key">
  89. </el-table-column>
  90. <el-table-column
  91. label="详情"
  92. width="200">
  93. <div slot-scope="scope">
  94. <el-button @click="handleDetail3(scope.row)" type="primary" size="mini">查看详情</el-button>
  95. </div>
  96. </el-table-column>
  97. <el-table-column
  98. label="操作"
  99. width="200">
  100. <template slot-scope="scope" style="display: inline-block">
  101. <el-popconfirm title="确定删除吗?" @confirm="deleteRow3(scope.row)">
  102. <el-button type="danger" slot="reference">删除</el-button>
  103. </el-popconfirm>
  104. </template>
  105. </el-table-column>
  106. </el-table>
  107. <div class="table-pagination">
  108. <el-pagination layout="prev, pager, next" :total="total3" @current-change="handlePageChange3"
  109. :current-page.sync="pageNum3" :page-size.sync="pageSize3">
  110. </el-pagination>
  111. </div>
  112. <el-dialog
  113. :title="title3"
  114. :visible.sync="dialogVisible3"
  115. width="45%"
  116. custom-class="audit-dialog">
  117. <div class="form-div">
  118. <el-form disabled label-position="left" label-width="100px" :model="formLabelAlign3">
  119. <el-form-item label="设备报警">
  120. <el-input v-model="formLabelAlign3.alertInfo"></el-input>
  121. </el-form-item>
  122. <el-form-item label="状态">
  123. <el-input v-model="formLabelAlign3.readFlag"></el-input>
  124. </el-form-item>
  125. </el-form>
  126. </div>
  127. </el-dialog>
  128. </el-tab-pane>
  129. <el-tab-pane label="监控车辆报警消息" name="监控车辆报警消息">
  130. <el-form class="form-wrapper" :inline="true" :model="formInline4" style="margin-bottom: 20px;">
  131. <el-row>
  132. <el-col :span="8">
  133. <el-form-item label="设备报警:">
  134. <el-input v-model="formInline4.equipmentAlarm" placeholder="请输入"></el-input>
  135. </el-form-item>
  136. </el-col>
  137. <el-col :span="8">
  138. <el-form-item label="设备ID:">
  139. <el-input v-model="formInline4.equipmentID" placeholder="请输入"></el-input>
  140. </el-form-item>
  141. </el-col>
  142. <el-col :span="8">
  143. <el-form-item>
  144. <el-button type="primary" class="query-btn" @click="onSubmit4">查询</el-button>
  145. </el-form-item>
  146. </el-col>
  147. </el-row>
  148. </el-form>
  149. <el-table :data="tableData4">
  150. <el-table-column v-for="(item, index) in columns4" :key="index" :label="item.label" :prop="item.key">
  151. </el-table-column>
  152. <el-table-column
  153. label="操作"
  154. width="200">
  155. <div slot-scope="scope">
  156. <el-button @click="handleDetail4(scope.row)" type="primary" size="mini">查看详情</el-button>
  157. </div>
  158. </el-table-column>
  159. </el-table>
  160. <div class="table-pagination">
  161. <el-pagination layout="prev, pager, next" :total="total4" @current-change="handlePageChange4"
  162. :current-page.sync="pageNum4" :page-size.sync="pageSize4">
  163. </el-pagination>
  164. </div>
  165. <el-dialog
  166. :title="title4"
  167. :visible.sync="dialogVisible4"
  168. width="45%"
  169. custom-class="audit-dialog">
  170. <div class="form-div">
  171. <el-form disabled label-position="left" label-width="100px" :model="formLabelAlign4">
  172. <el-form-item label="设备报警">
  173. <el-input v-model="formLabelAlign4.alertInfo"></el-input>
  174. </el-form-item>
  175. <el-form-item label="设备ID">
  176. <el-input v-model="formLabelAlign4.deviceId"></el-input>
  177. </el-form-item>
  178. <el-form-item label="报警时间">
  179. <el-date-picker
  180. v-model="formLabelAlign4.createTime"
  181. type="date">
  182. </el-date-picker>
  183. </el-form-item>
  184. </el-form>
  185. </div>
  186. </el-dialog>
  187. </el-tab-pane>
  188. </el-tabs>
  189. </div>
  190. </template>
  191. <script>
  192. import api from "@/api/audit.js";
  193. import api_l from "@/api/article_liao.js";
  194. export default {
  195. components: {},
  196. data() {
  197. return {
  198. activeName: '配置消息',
  199. formLabelAlign: {
  200. id: '',
  201. messageTitle: '',
  202. messageArea: '',
  203. },
  204. columns2: [
  205. {
  206. label: '报警信息',
  207. key: 'alarmMessage'
  208. },
  209. {
  210. label: '车牌号',
  211. key: 'plateNo'
  212. },
  213. {
  214. label: '报警时间',
  215. key: 'alarmTime'
  216. },
  217. ],
  218. tableData2: [{alarmMessage: 'sasa1'}],
  219. total2: 0,
  220. pageSize2: 10,
  221. pageNum2: 1,
  222. formInline2: {
  223. alarmMessage: '',
  224. },
  225. title2: '',
  226. dialogVisible2: false,
  227. formLabelAlign2: {
  228. id: '',
  229. alarmMessage: '',
  230. plateNo: '',
  231. alarmTime: '',
  232. },
  233. columns3: [
  234. {
  235. label: '设备报警',
  236. key: 'alertInfo'
  237. },
  238. {
  239. label: '详情',
  240. key: 'alertDetail'
  241. },
  242. {
  243. label: '状态',
  244. key: 'readFlag'
  245. },
  246. ],
  247. tableData3: [],
  248. total3: 0,
  249. pageSize3: 10,
  250. pageNum3: 1,
  251. formInline3: {
  252. alertInfo: '',
  253. },
  254. title3: '',
  255. dialogVisible3: false,
  256. formLabelAlign3: {
  257. id: '',
  258. readFlag: '',
  259. alertInfo:'',
  260. },
  261. columns4: [
  262. {
  263. label: '设备报警',
  264. key: 'alertInfo'
  265. },
  266. {
  267. label: '设备ID',
  268. key: 'deviceId'
  269. },
  270. {
  271. label: '报警时间',
  272. key: 'createTime'
  273. },
  274. ],
  275. tableData4: [{equipmentAlarm: 'sasa1111',alarmTime:'2023'}],
  276. total4: 0,
  277. pageSize4: 10,
  278. pageNum4: 1,
  279. formInline4: {
  280. plateNo: '',
  281. deviceId: '',
  282. },
  283. title4: '',
  284. dialogVisible4: false,
  285. formLabelAlign4: {
  286. id: '',
  287. equipmentAlarm: '',
  288. equipmentID: '',
  289. alarmTime: '',
  290. },
  291. }
  292. },
  293. mounted() {
  294. // this.getTableData1()
  295. // this.getTableData2()
  296. this.getTableData3()
  297. this.getTableData4()
  298. },
  299. watch: {},
  300. methods: {
  301. handleConfirm() {
  302. api_l.optMessageManagementPushAdd({msgTitle: this.formLabelAlign.msgTitle,msgContent:this.formLabelAlign.messageArea}).then(res => {
  303. if (res.code === 200) {
  304. this.$message({
  305. message: '添加成功!',
  306. type: 'success'
  307. })
  308. this.formLabelAlign.messageTitle=''
  309. this.formLabelAlign.messageArea=''
  310. }
  311. })
  312. },
  313. onSubmit2() {
  314. this.pageNum2 = 1
  315. this.getTableData2()
  316. },
  317. handleDetail2(row) {
  318. this.formLabelAlign2 = {...row}
  319. this.dialogVisible2 = true
  320. },
  321. handleDetail3(row) {
  322. this.formLabelAlign3 = {...row}
  323. this.dialogVisible3 = true
  324. },
  325. handleDetail4(row) {
  326. this.formLabelAlign4 = {...row}
  327. this.dialogVisible4 = true
  328. },
  329. onSubmit3() {
  330. this.pageNum3 = 1
  331. api_l.optMessageManagementDevicePage({searchKey: this.formLabelAlign3.equipmentAlarm}).then(res => {
  332. this.tableData3 = res.data.records
  333. })
  334. },
  335. handleAdd3() {
  336. this.title3 = '添加'
  337. this.formLabelAlign3.tollCollector = ''
  338. this.formLabelAlign3.workingDate = ''
  339. this.formLabelAlign3.inCarNumber = ''
  340. this.formLabelAlign3.outCarNumber = ''
  341. this.dialogVisible3 = true
  342. },
  343. handleEdit3(row) {
  344. this.title3 = '修改'
  345. this.formLabelAlign3 = {...row}
  346. this.dialogVisible3 = true
  347. },
  348. deleteRow3(record) {
  349. api_l.optMessageManagementDeviceDelete([{id: record.id}]).then(res => {
  350. if (res.code === 200) {
  351. this.$message({type: 'success', message: '删除成功!'})
  352. this.getTableData3()
  353. }
  354. })
  355. },
  356. handleConfirm3() {
  357. if (this.title3 === '修改') {
  358. api.addWhiteIp({ipAddr: this.formLabelAlign3.ipAddr, id: this.formLabelAlign3.id}).then(res => {
  359. if (res.code === 200) {
  360. this.dialogVisible3 = false
  361. this.$message({
  362. message: '修改成功!',
  363. type: 'success'
  364. })
  365. this.getTableData3()
  366. }
  367. })
  368. } else {
  369. api.addWhiteIp({ipAddr: this.formLabelAlign3.ipAddr}).then(res => {
  370. if (res.code === 200) {
  371. this.dialogVisible3 = false
  372. this.$message({
  373. message: '添加成功!',
  374. type: 'success'
  375. })
  376. this.getTableData3()
  377. }
  378. })
  379. }
  380. },
  381. onSubmit4() {
  382. this.pageNum4 = 1
  383. this.getTableData4()
  384. },
  385. handleAdd4() {
  386. this.title4 = '添加'
  387. this.formLabelAlign4.tollCollector = ''
  388. this.formLabelAlign4.plateNo = ''
  389. this.formLabelAlign4.releaseTime = ''
  390. this.formLabelAlign4.releaseReason = ''
  391. this.dialogVisible4 = true
  392. },
  393. handleEdit4(row) {
  394. this.title4 = '修改'
  395. this.formLabelAlign4 = {...row}
  396. this.dialogVisible4 = true
  397. },
  398. deleteRow4(record) {
  399. api.deleteWhiteIp({id: record.id}).then(res => {
  400. if (res.code === 200) {
  401. this.$message({type: 'success', message: '删除成功!'})
  402. this.getTableData4()
  403. }
  404. })
  405. },
  406. handleConfirm4() {
  407. if (this.title4 === '修改') {
  408. api.addWhiteIp({ipAddr: this.formLabelAlign4.ipAddr, id: this.formLabelAlign4.id}).then(res => {
  409. if (res.code === 200) {
  410. this.dialogVisible4 = false
  411. this.$message({
  412. message: '修改成功!',
  413. type: 'success'
  414. })
  415. this.getTableData4()
  416. }
  417. })
  418. } else {
  419. api.addWhiteIp({ipAddr: this.formLabelAlign4.ipAddr}).then(res => {
  420. if (res.code === 200) {
  421. this.dialogVisible4 = false
  422. this.$message({
  423. message: '添加成功!',
  424. type: 'success'
  425. })
  426. this.getTableData4()
  427. }
  428. })
  429. }
  430. },
  431. handlePageChange2() {
  432. this.getTableData2()
  433. },
  434. getTableData2() {
  435. const {pageNum2, pageSize2} = this
  436. api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
  437. this.tableData2 = res.data.records || []
  438. this.total2 = res.data.total
  439. })
  440. },
  441. handlePageChange3() {
  442. this.getTableData3()
  443. },
  444. getTableData3() {
  445. const {pageNum3, pageSize3} = this
  446. api_l.optMessageManagementDevicePage({current: pageNum3, size: pageSize3}).then(res => {
  447. this.tableData3 = res.data.records
  448. this.total3 = res.data.total
  449. })
  450. },
  451. handlePageChange4() {
  452. this.getTableData4()
  453. },
  454. getTableData4() {
  455. const {pageNum4, pageSize4} = this
  456. api_l.optMessageManagementVehiclePage({current: pageNum4, size: pageSize4, ...this.formInline4}).then(res => {
  457. this.tableData4 = res.data.records
  458. this.total4 = res.data.total
  459. })
  460. },
  461. }
  462. }
  463. </script>
  464. <style lang="scss" scoped>
  465. .body-wrapper {
  466. padding: 20px;
  467. .button-block {
  468. text-align: right;
  469. margin-bottom: 20px;
  470. }
  471. .table-pagination {
  472. text-align: right;
  473. }
  474. .search-card {
  475. margin-bottom: 20px;
  476. text-align: center;
  477. .input-wrapper {
  478. width: 36%;
  479. }
  480. }
  481. .audit-dialog {
  482. .mg-bt {
  483. margin-bottom: 24px;
  484. }
  485. .label {
  486. text-align: right;
  487. }
  488. .form-div {
  489. /deep/ .el-input__inner {
  490. height: 35px;
  491. width: 90%;
  492. border: 1px solid #a6a5a5;
  493. }
  494. }
  495. }
  496. }
  497. </style>