index.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <template>
  2. <div class="logs">
  3. <div class="form-wrapper">
  4. <div class="search-wrapper">
  5. <el-select
  6. v-model="value"
  7. style="margin-right: 10px"
  8. clearable
  9. size="mini"
  10. placeholder="类型"
  11. >
  12. <el-option
  13. v-for="item in options"
  14. :key="item.value"
  15. :label="item.label"
  16. :value="item.value"
  17. :disabled="item.disabled"
  18. />
  19. </el-select>
  20. <el-input
  21. v-model="input"
  22. clearable
  23. size="mini"
  24. placeholder="名称检索"
  25. style="width: 200px; margin-right: 10px"
  26. />
  27. </div>
  28. <div class="btns">
  29. <el-button round size="mini" class="buttons" @click="search"
  30. >搜 索</el-button
  31. >
  32. </div>
  33. </div>
  34. <div class="table-wrapper">
  35. <div class="leftContent">
  36. <span>{{ pageTitle }}</span>
  37. </div>
  38. <el-table
  39. :data="tableData"
  40. stripe
  41. style="width: 100%; height: calc(100% - 70px)"
  42. >
  43. <el-table-column
  44. prop="ruleName"
  45. label="规则名称"
  46. width="300"
  47. align="left"
  48. />
  49. <el-table-column
  50. prop="ruleType"
  51. label="规则类型"
  52. width="120"
  53. align="left"
  54. />
  55. <el-table-column
  56. prop="stationName"
  57. label="场站名称"
  58. width="140"
  59. align="left"
  60. />
  61. <el-table-column
  62. prop="modelId"
  63. label="风机型号"
  64. width="200"
  65. align="left"
  66. />
  67. <el-table-column label="更改内容" show-overflow-tooltip align="left">
  68. <template #default="scope">
  69. <div v-if="scope.row.infoList.length">
  70. <div v-for="item in scope.row.infoList" :key="item">
  71. {{ item.fieldName }} :更改前: {{ item.beforValue }}
  72. <el-divider direction="vertical" /> 更改后:
  73. {{ item.afterValue }}
  74. </div>
  75. </div>
  76. <div v-else>--</div>
  77. </template>
  78. </el-table-column>
  79. <el-table-column
  80. prop="updateTimeName"
  81. label="操作时间"
  82. width="150"
  83. align="center"
  84. />
  85. <el-table-column
  86. prop="updateType"
  87. label="操作类型"
  88. width="100"
  89. align="center"
  90. />
  91. <el-table-column
  92. prop="updateUser"
  93. label="操作人"
  94. width="100"
  95. align="center"
  96. />
  97. </el-table>
  98. <div class="pagination">
  99. <el-pagination
  100. layout="total,sizes, prev, pager, next"
  101. :hide-on-single-page="false"
  102. :current-page="query.page"
  103. :page-size="query.limit"
  104. :page-sizes="[22, 50, 100, 200, 500]"
  105. :total="query.pageTotal"
  106. @current-change="handlePageChange"
  107. @size-change="
  108. (value) => {
  109. query.limit = value;
  110. query.page = 1;
  111. logsList();
  112. }
  113. "
  114. ></el-pagination>
  115. </div>
  116. </div>
  117. </div>
  118. </template>
  119. <script setup>
  120. import { ref, onMounted, reactive, nextTick, watch, computed } from "vue";
  121. import { ElMessage, ElMessageBox } from "element-plus";
  122. import { fetchruleventLogs } from "@/api/zhbj/index.js";
  123. import dayjs from "dayjs";
  124. onMounted(() => {
  125. logsList();
  126. });
  127. const pageTitle = "规则修改日志";
  128. const query = reactive({
  129. page: 1,
  130. limit: 22,
  131. pageTotal: 0,
  132. });
  133. let tableData = ref([]);
  134. let input = ref("");
  135. let value = ref("");
  136. let options = ref([
  137. {
  138. label: "自定义报警",
  139. value: "自定义报警",
  140. },
  141. {
  142. label: "风机报警",
  143. value: "风机报警",
  144. },
  145. {
  146. label: "升压站报警",
  147. value: "升压站报警",
  148. },
  149. ]);
  150. //
  151. const search = () => {
  152. logsList();
  153. };
  154. const logsList = async () => {
  155. const { data } = await fetchruleventLogs(
  156. query.page,
  157. query.limit,
  158. input.value,
  159. value.value
  160. );
  161. if (data) {
  162. data.records.forEach((ele) => {
  163. ele.updateTimeName = dayjs(ele.updateTime).format("YYYY-MM-DD:HH:mm:ss");
  164. });
  165. query.pageTotal = data.total;
  166. tableData.value = data.records;
  167. }
  168. };
  169. // 分页导航
  170. const handlePageChange = (val) => {
  171. query.page = val;
  172. logsList();
  173. };
  174. </script>
  175. <style lang="less" scoped>
  176. .logs {
  177. height: 100%;
  178. padding: 20px;
  179. .form-wrapper {
  180. display: flex;
  181. padding-top: 10px;
  182. padding-bottom: 10px;
  183. .search-wrapper::v-deep {
  184. display: flex;
  185. align-items: center;
  186. font-size: 14px;
  187. font-family: Microsoft YaHei;
  188. font-weight: 400;
  189. color: #b3b3b3;
  190. .search-item {
  191. margin-right: 10px;
  192. max-width: 190px;
  193. }
  194. }
  195. .btns {
  196. display: flex;
  197. align-items: center;
  198. }
  199. .buttons {
  200. background-color: rgba(5, 187, 76, 0.2);
  201. border: 1px solid #3b6c53;
  202. color: #b3b3b3;
  203. font-size: 14px;
  204. &:hover {
  205. background-color: rgba(5, 187, 76, 0.5);
  206. color: #ffffff;
  207. }
  208. }
  209. }
  210. }
  211. .table-wrapper {
  212. height: calc(100% - 48px);
  213. width: 100%;
  214. .leftContent {
  215. width: 242px;
  216. height: 41px;
  217. display: flex;
  218. align-items: center;
  219. background: url("~@/assets/imgs/title_left_bg.png") no-repeat;
  220. span {
  221. font-size: 16px;
  222. font-family: Microsoft YaHei;
  223. font-weight: 400;
  224. color: #05bb4c;
  225. margin-left: 25px;
  226. }
  227. }
  228. .el-table::v-deep {
  229. .el-table__body-wrapper {
  230. height: calc(100% - 45px) !important;
  231. }
  232. }
  233. .pagination-wrapper ::v-deep {
  234. text-align: right;
  235. margin-top: 10px;
  236. }
  237. }
  238. </style>