log-dialog.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <ele-modal v-model="visible" title="操作日志" width="860px">
  3. <el-table v-loading="loading" :data="tableData" border stripe>
  4. <el-table-column prop="operatorName" label="操作员" width="140" />
  5. <el-table-column prop="createTime" label="操作时间" width="180" />
  6. <el-table-column prop="content" label="描述" min-width="280" />
  7. </el-table>
  8. <div class="pager">
  9. <el-pagination
  10. background
  11. layout="total, sizes, prev, pager, next"
  12. :total="total"
  13. v-model:current-page="pageNum"
  14. v-model:page-size="pageSize"
  15. :page-sizes="[10, 20, 50]"
  16. @current-change="loadList"
  17. @size-change="handleSizeChange"
  18. />
  19. </div>
  20. <template #footer>
  21. <el-button type="primary" @click="visible = false">关闭</el-button>
  22. </template>
  23. </ele-modal>
  24. </template>
  25. <script setup>
  26. import { ref } from 'vue';
  27. import { ElMessage } from 'element-plus';
  28. import { getTaskLogs } from '@/api/priceWorkbench';
  29. const visible = ref(false);
  30. const loading = ref(false);
  31. const tableData = ref([]);
  32. const total = ref(0);
  33. const pageNum = ref(1);
  34. const pageSize = ref(10);
  35. const taskId = ref(null);
  36. const loadList = async () => {
  37. if (!taskId.value) return;
  38. loading.value = true;
  39. try {
  40. const res = await getTaskLogs(taskId.value, {
  41. pageNum: pageNum.value,
  42. pageSize: pageSize.value
  43. });
  44. tableData.value = res.rows || [];
  45. total.value = res.total || 0;
  46. } catch (e) {
  47. tableData.value = [];
  48. total.value = 0;
  49. ElMessage.error(e.message);
  50. } finally {
  51. loading.value = false;
  52. }
  53. };
  54. const handleSizeChange = () => {
  55. pageNum.value = 1;
  56. loadList();
  57. };
  58. const handleOpen = (row) => {
  59. taskId.value = row.id;
  60. pageNum.value = 1;
  61. visible.value = true;
  62. loadList();
  63. };
  64. defineExpose({ handleOpen });
  65. </script>
  66. <style scoped>
  67. .pager {
  68. display: flex;
  69. justify-content: flex-end;
  70. margin-top: 12px;
  71. }
  72. </style>