SetLog.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <template>
  2. <div>
  3. <div class="bigBox" v-loading="loading">
  4. <div class="titleBox">
  5. <h1 style="font-size: 18px;">操作日志管理</h1>
  6. </div>
  7. <!-- 分类查询数据 -->
  8. <div class="settingBox">
  9. <div class="manyBox">
  10. <span style="font-size: 14px;margin: 0 10px;">操作结果</span>
  11. <el-select @change="aboutChange" style="width: 160px;height: 32px;border-radius: 0%;" v-model="setAbout"
  12. clearable placeholder="操作结果">
  13. <el-option v-for="(item, index) in setAboutList" :key="item.id" :label="item.name"
  14. :value="item.code" />
  15. </el-select>
  16. </div>
  17. <div class="manyBox">
  18. <span style="font-size: 14px;margin: 0 10px;">审计分类</span>
  19. <el-select @change="audiChange" style="width: 160px;height: 32px;border-radius: 0%;" v-model="audiType"
  20. clearable placeholder="审计分类">
  21. <el-option v-for="(item, index) in audiTypeList" :key="item.id" :label="item.name"
  22. :value="item.code" />
  23. </el-select>
  24. </div>
  25. <div class="manyBox">
  26. <span style="font-size: 14px;margin: 0 10px;">操作分类</span>
  27. <el-select @change="stChange" style="width: 160px;height: 32px;border-radius: 0%;" v-model="setType"
  28. clearable placeholder="操作分类">
  29. <el-option v-for="(item, index) in setTypeList" :key="item.id" :label="item.name"
  30. :value="item.code" />
  31. </el-select>
  32. </div>
  33. <div class="manyBox">
  34. <span style="font-size: 14px;margin: 0 10px;">事件类型</span>
  35. <el-select @change="thingChange" style="width: 160px;height: 32px;border-radius: 0%;" v-model="thing"
  36. clearable placeholder="事件类型">
  37. <el-option v-for="(item, index) in thingList" :key="item.id" :label="item.name"
  38. :value="item.code" />
  39. </el-select>
  40. </div>
  41. <div class="manyBox">
  42. <el-button type="primary" @click="allSearch">
  43. <el-icon>
  44. <Search />
  45. </el-icon>查询</el-button>
  46. <el-button @click="getList(1)">
  47. <el-icon>
  48. <RefreshLeft />
  49. </el-icon>重置</el-button>
  50. </div>
  51. </div>
  52. <!-- 数据 -->
  53. <div class="mesBox">
  54. <el-table :data="logList" stripe style="width: 100%;height: calc(100vh - 260px);">
  55. <el-table-column prop="audittypename" :show-overflow-tooltip="true" label="审计分类" width="auto" />
  56. <el-table-column prop="eventtypename" label="事件类型" width="auto" />
  57. <el-table-column prop="staff" label="操作用户" width="auto" />
  58. <el-table-column prop="eventlevelname" label="事件等级" width="auto" />
  59. <el-table-column prop="logtypename" label="操作类型" width="auto" />
  60. <el-table-column prop="ip" label="操作IP" width="auto" />
  61. <el-table-column prop="insdate" label="操作时间" :show-overflow-tooltip="true" width="auto" />
  62. <el-table-column prop="optresultname" label="结果" width="auto" />
  63. <el-table-column prop="description" :show-overflow-tooltip="true" label="日志描述" width="180" />
  64. </el-table>
  65. </div>
  66. <div style="width: 100%;">
  67. <Pagination :tLength="logTotal" @getBack="getBack"></Pagination>
  68. </div>
  69. </div>
  70. </div>
  71. </template>
  72. <script>
  73. import { ref, onMounted } from 'vue';
  74. import { ElMessage } from 'element-plus';
  75. import systemRow from '@/api/systemRow'
  76. import setlog from '@/api/setlog'
  77. import Pagination from './Pagination.vue';
  78. export default {
  79. setup() {
  80. let setAbout = ref('')//操作结果value
  81. let setType = ref('')//操作分类value
  82. let audiType = ref('')//审计分类value
  83. let thing = ref('')//事件类型value
  84. let setAboutList = ref([])//操作结果列表
  85. let setTypeList = ref([])//操作分类列表
  86. let audiTypeList = ref([])//审计分类列表
  87. let thingList = ref([])//事件类型列表
  88. let logList = ref([])//操作日志列表
  89. let logTotal = ref(0)//列表总数
  90. let pages = ref(1)
  91. let sizes = ref(10)
  92. let loading = ref(false)
  93. function getSelect() {//获取所有下拉框选项
  94. systemRow.getAllRow({ pcode: "log_optresult" }).then(res => {
  95. // 操作结果
  96. if (res.data != null) {
  97. setAboutList.value = res.data
  98. } else {
  99. ElMessage({
  100. message: res.msg,
  101. type: "error"
  102. })
  103. }
  104. })
  105. systemRow.getAllRow({ pcode: 'log_opttype' }).then(res => {
  106. // 操作分类
  107. if (res.data != null) {
  108. setTypeList.value = res.data
  109. } else {
  110. ElMessage({
  111. message: res.msg,
  112. type: "error"
  113. })
  114. }
  115. })
  116. systemRow.getAllRow({ pcode: 'log_audittype' }).then(res => {
  117. // 审计分类
  118. if (res.data != null) {
  119. audiTypeList.value = res.data
  120. } else {
  121. ElMessage({
  122. message: res.msg,
  123. type: "error"
  124. })
  125. }
  126. })
  127. systemRow.getAllRow({ pcode: 'log_eventtype' }).then(res => {
  128. // 事件类型
  129. if (res.data != null) {
  130. thingList.value = res.data
  131. } else {
  132. ElMessage({
  133. message: res.msg,
  134. type: "error"
  135. })
  136. }
  137. })
  138. }
  139. function getList(num) {//获取操作日志列表
  140. if (num) {
  141. setAbout.value = ''
  142. setType.value = ''
  143. audiType.value = ''
  144. thing.value = ''
  145. loading.value = true
  146. setlog.getAllLog({ pageindex: 1, pageSize: 20, enddate: getDate(), startdate: getDate() }).then(res => {
  147. if (res.data != null) {
  148. logList.value = res.data
  149. logTotal.value = res.count
  150. loading.value = false
  151. } else {
  152. logList.value = []
  153. logTotal.value = 0
  154. loading.value = false
  155. // ElMessage({
  156. // message: res.msg,
  157. // type: "error"
  158. // })
  159. }
  160. })
  161. } else {
  162. loading.value = true
  163. setlog.getAllLog({ pageindex: 1, pageSize: 20, enddate: getDate(), startdate: getDate() }).then(res => {
  164. if (res.data != null) {
  165. logList.value = res.data
  166. logTotal.value = res.count
  167. loading.value = false
  168. } else {
  169. logList.value = []
  170. logTotal.value = 0
  171. loading.value = false
  172. }
  173. })
  174. }
  175. }
  176. function getDate() {
  177. const currentDate = new Date();
  178. const year = currentDate.getFullYear();
  179. const month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始,需要加1,并补零
  180. const day = currentDate.getDate().toString().padStart(2, '0'); // 补零
  181. const formattedDate = `${year}-${month}-${day}`;
  182. return formattedDate
  183. }
  184. function getBack(index, size) {//分页组件返回数据赋值
  185. loading.value = true
  186. pages.value = index
  187. sizes.value = size
  188. setlog.getAllLog({ pageindex: pages.value, pageSize: sizes.value, enddate: getDate(), startdate: getDate() }).then(res => {
  189. if (res.code == 0) {
  190. logList.value = res.data
  191. logTotal.value = res.count
  192. loading.value = false
  193. } else {
  194. logList.value = []
  195. logTotal.value = 0
  196. loading.value = false
  197. ElMessage({
  198. message: res.msg,
  199. type: "error"
  200. })
  201. }
  202. })
  203. }
  204. function aboutChange(e) {//操作结果change事件
  205. // loading.value = true
  206. setAbout.value = e
  207. // setlog.getAllLog({ pageindex: pages.value, pageSize: sizes.value, success: setAbout.value, enddate: getDate(), startdate: getDate() }).then(res => {
  208. // if (res.data != null) {
  209. // logList.value = res.data
  210. // logTotal.value = res.count
  211. // loading.value = false
  212. // } else {
  213. // logList.value = []
  214. // logTotal.value = 0
  215. // loading.value = false
  216. // }
  217. // })
  218. }
  219. function audiChange(e) {//审计分类change事件
  220. // loading.value = true
  221. audiType.value = e
  222. // setlog.getAllLog({ pageindex: pages.value, pageSize: sizes.value, audittype: audiType.value, enddate: getDate(), startdate: getDate() }).then(res => {
  223. // if (res.data != null) {
  224. // logList.value = res.data
  225. // logTotal.value = res.count
  226. // loading.value = false
  227. // } else {
  228. // logList.value = []
  229. // logTotal.value = 0
  230. // loading.value = false
  231. // }
  232. // })
  233. }
  234. function stChange(e) {//操作分类change事件
  235. // loading.value = true
  236. setType.value = e
  237. // setlog.getAllLog({ pageindex: pages.value, pageSize: sizes.value, opttype: setType.value, enddate: getDate(), startdate: getDate() }).then(res => {
  238. // if (res.data != null) {
  239. // logList.value = res.data
  240. // logTotal.value = res.count
  241. // loading.value = false
  242. // } else {
  243. // logList.value = []
  244. // logTotal.value = 0
  245. // loading.value = false
  246. // }
  247. // })
  248. }
  249. function thingChange(e) {//事件类型change事件
  250. // loading.value = true
  251. thing.value = e
  252. // setlog.getAllLog({ pageindex: pages.value, pageSize: sizes.value, eventtype: thing.value, enddate: getDate(), startdate: getDate() }).then(res => {
  253. // if (res.data != null) {
  254. // logList.value = res.data
  255. // logTotal.value = res.count
  256. // loading.value = false
  257. // } else {
  258. // logList.value = []
  259. // logTotal.value = 0
  260. // loading.value = false
  261. // }
  262. // })
  263. }
  264. function allSearch() {
  265. setlog.getAllLog({
  266. pageindex: pages.value,
  267. pageSize: sizes.value,
  268. eventtype: thing.value,
  269. opttype: setType.value,
  270. audittype: audiType.value,
  271. success: setAbout.value,
  272. enddate: getDate(),
  273. startdate: getDate()
  274. }).then(res => {
  275. if (res.data != null) {
  276. logList.value = res.data
  277. logTotal.value = res.count
  278. loading.value = false
  279. } else {
  280. logList.value = []
  281. loading.value = false
  282. }
  283. })
  284. }
  285. onMounted(() => {
  286. getSelect()
  287. getList()
  288. })
  289. return {
  290. setAbout,//操作结果value
  291. setAboutList,
  292. audiType,//审计分类value
  293. audiTypeList,
  294. getSelect,//获取所有下拉框选项方法
  295. setType,//操作分类value
  296. setTypeList,
  297. thing,//事件类型value
  298. thingList,
  299. getList,//获取操作日志列表
  300. logList,//操作日志列表
  301. logTotal,//列表总数
  302. getBack,//分页组件传回的方法
  303. aboutChange,//操作结果change事件
  304. audiChange,//审计分类change事件
  305. stChange,//操作分类事件
  306. thingChange,//事件类型change事件
  307. pages,//页码
  308. sizes,//条数
  309. loading,
  310. getDate,//获取日期
  311. allSearch,//查询按钮
  312. }
  313. },
  314. components: {
  315. Pagination
  316. }
  317. }
  318. </script>
  319. <style scoped>
  320. .bigBox {
  321. width: 98%;
  322. height: 100%;
  323. margin-left: 15px;
  324. margin-top: 10px;
  325. }
  326. .titleBox {
  327. width: 100%;
  328. height: 100%;
  329. text-align: center;
  330. }
  331. .settingBox {
  332. display: flex;
  333. justify-content: flex-start;
  334. align-items: center;
  335. }
  336. .manyBox {
  337. margin-right: 5px;
  338. }
  339. </style>