index.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryRef" inline>
  4. <el-form-item label="主题名称:" prop="name">
  5. <el-input v-model="queryParams.name" placeholder="请输入主题名称" clearable @keyup.enter="handleQuery" />
  6. </el-form-item>
  7. <el-form-item label="主题消息:" prop="payload">
  8. <el-input v-model="queryParams.payload" placeholder="请输入主题消息" clearable @keyup.enter="handleQuery" />
  9. </el-form-item>
  10. <el-form-item label="创建时间:" style="width: 308px;">
  11. <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" start-placeholder="开始日期"
  12. end-placeholder="结束日期"></el-date-picker>
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
  16. <el-button icon="Refresh" @click="resetQuery">重置</el-button>
  17. <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
  18. v-hasPermi="['mqtt:topiclog:remove']">删除</el-button>
  19. <el-button type="warning" plain icon="Download" @click="handleExport"
  20. v-hasPermi="['mqtt:topiclog:export']">导出</el-button>
  21. </el-form-item>
  22. </el-form>
  23. <el-table v-loading="loading" :data="topiclogList" @selection-change="handleSelectionChange">
  24. <el-table-column type="selection" width="55" align="center" />
  25. <el-table-column label="ID" align="center" prop="id" />
  26. <el-table-column label="主题名称" align="center" prop="name" />
  27. <el-table-column label="主题消息" align="center" prop="payload" show-overflow-tooltip />
  28. <el-table-column label="创建时间" align="center" prop="createTime" />
  29. <el-table-column label="更新时间" align="center" prop="updateTime" />
  30. <el-table-column label="操作" align="center">
  31. <template #default="scope">
  32. <el-button link type="primary" @click="handleUpdate(scope.row)"
  33. v-hasPermi="['mqtt:topiclog:edit']">查看</el-button>
  34. <el-button link type="danger" @click="handleDelete(scope.row)"
  35. v-hasPermi="['mqtt:topiclog:remove']">删除</el-button>
  36. </template>
  37. </el-table-column>
  38. </el-table>
  39. <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
  40. @pagination="getList" />
  41. <!-- 添加或修改设备主题日志对话框 -->
  42. <el-dialog title="详情" v-model="open" width="500px" append-to-body>
  43. <el-form ref="topiclogRef" :model="form" label-width="auto" disabled>
  44. <el-form-item label="主题消息:" prop="payload">
  45. <el-input v-model="form.payload" type="textarea" />
  46. </el-form-item>
  47. <el-form-item label="主题名称:" prop="name">
  48. <el-input v-model="form.name" />
  49. </el-form-item>
  50. <el-form-item label="备注:" prop="remark">
  51. <el-input v-model="form.remark" type="textarea" />
  52. </el-form-item>
  53. </el-form>
  54. </el-dialog>
  55. </div>
  56. </template>
  57. <script setup name="Topiclog">
  58. import { listTopiclog, getTopiclog, delTopiclog } from "@/api/mqtt/topiclog";
  59. const { proxy } = getCurrentInstance();
  60. const topiclogList = ref([]);
  61. const open = ref(false);
  62. const loading = ref(true);
  63. const ids = ref([]);
  64. const single = ref(true);
  65. const multiple = ref(true);
  66. const total = ref(0);
  67. const title = ref("");
  68. const dateRange = ref([]);
  69. const data = reactive({
  70. form: {},
  71. queryParams: {
  72. pageNum: 1,
  73. pageSize: 10,
  74. payload: null,
  75. name: null,
  76. status: null,
  77. },
  78. });
  79. const { queryParams, form } = toRefs(data);
  80. /** 查询设备主题日志列表 */
  81. function getList() {
  82. loading.value = true;
  83. listTopiclog(proxy.addDateRange(queryParams.value, dateRange.value)).then(res => {
  84. loading.value = false;
  85. topiclogList.value = res.rows;
  86. total.value = res.total;
  87. });
  88. }
  89. // 表单重置
  90. function reset() {
  91. form.value = {
  92. id: null,
  93. payload: null,
  94. name: null,
  95. status: null,
  96. delFlag: null,
  97. createBy: null,
  98. createTime: null,
  99. updateBy: null,
  100. updateTime: null,
  101. remark: null
  102. };
  103. proxy.resetForm("topiclogRef");
  104. }
  105. /** 搜索按钮操作 */
  106. function handleQuery() {
  107. queryParams.value.pageNum = 1;
  108. getList();
  109. }
  110. /** 重置按钮操作 */
  111. function resetQuery() {
  112. dateRange.value = [];
  113. proxy.resetForm("queryRef");
  114. handleQuery();
  115. }
  116. // 多选框选中数据
  117. function handleSelectionChange(selection) {
  118. ids.value = selection.map(item => item.id);
  119. single.value = selection.length != 1;
  120. multiple.value = !selection.length;
  121. }
  122. /** 修改按钮操作 */
  123. function handleUpdate(row) {
  124. reset();
  125. const _id = row.id || ids.value
  126. getTopiclog(_id).then(response => {
  127. form.value = response.data;
  128. open.value = true;
  129. title.value = "修改设备主题日志";
  130. });
  131. }
  132. /** 删除按钮操作 */
  133. function handleDelete(row) {
  134. const _ids = row.id || ids.value;
  135. proxy.$modal.confirm('是否确认删除设备主题日志编号为"' + _ids + '"的数据项?').then(function () {
  136. return delTopiclog(_ids);
  137. }).then(() => {
  138. getList();
  139. proxy.$modal.msgSuccess("删除成功");
  140. }).catch(() => { });
  141. }
  142. /** 导出按钮操作 */
  143. function handleExport() {
  144. proxy.download('device/topiclog/export', {
  145. ...queryParams.value
  146. }, `topiclog_${new Date().getTime()}.xlsx`)
  147. }
  148. getList();
  149. </script>
  150. <style lang="scss" scoped>
  151. .el-table__cell {
  152. text-align: center !important;
  153. }
  154. .el-tooltip__popper[x-placement^="bottom"] .popper__arrow {
  155. border-bottom-color: white !important;
  156. }
  157. .el-tooltip__popper[x-placement^="bottom"] .popper__arrow:after {
  158. border-bottom-color: white !important;
  159. }
  160. .testtooltip {
  161. width: 50%;
  162. }
  163. </style>