UploadList.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <div class="bookshelf-list">
  3. <el-table v-loading="loading" :data="list">
  4. <el-table-column align="center" prop="name" label="书名" width="180" />
  5. <el-table-column align="center" label="封面" #default="scope">
  6. <el-link
  7. type="primary"
  8. @click="
  9. () => {
  10. previewList = [`${baseUrl}${scope.row.thumb}`];
  11. showPreview = true;
  12. }
  13. "
  14. >{{ scope.row.thumb }}</el-link
  15. >
  16. </el-table-column>
  17. <el-table-column align="center" prop="author" label="作者" />
  18. <el-table-column align="center" prop="press" label="出版社" />
  19. <el-table-column align="center" prop="year" label="出版年份" />
  20. <el-table-column align="center" prop="storageName" label="中图法分类" />
  21. <el-table-column align="center" prop="exhibitTypeName" label="展示分类" />
  22. <el-table-column align="center" prop="num" label="ISBN编号" />
  23. <el-table-column align="center" label="审核状态" #default="scope">
  24. <p :style="{ color: STATUS[scope.row.auditStatus].color }">
  25. {{ STATUS[scope.row.auditStatus].label }}
  26. </p>
  27. </el-table-column>
  28. <el-table-column align="center" #default="scope" label="提交时间">
  29. {{ formatDate(scope.row.createTime) }}
  30. </el-table-column>
  31. <el-table-column
  32. align="center"
  33. fixed="right"
  34. #default="scope"
  35. label="操作"
  36. >
  37. <el-link type="error" @click="handleDelete(scope.row.id)">删除</el-link>
  38. </el-table-column>
  39. </el-table>
  40. </div>
  41. <el-image-viewer
  42. v-if="showPreview"
  43. :url-list="previewList"
  44. @close="showPreview = false"
  45. />
  46. </template>
  47. <script setup>
  48. import { ref, onMounted } from "vue";
  49. import { getUploadBookListApi, deleteBookApi } from "@/api";
  50. import { formatDate } from "@dage/utils";
  51. import { getBaseUrl } from "@/utils";
  52. const STATUS = [
  53. {
  54. label: "待审核",
  55. color: "var(--el-color-info)",
  56. },
  57. {
  58. label: "审核通过",
  59. color: "var(--el-color-success)",
  60. },
  61. {
  62. label: "审核不通过",
  63. color: "var(--el-color-error)",
  64. },
  65. ];
  66. const baseUrl = getBaseUrl();
  67. const loading = ref(false);
  68. const list = ref([]);
  69. const showPreview = ref(false);
  70. const previewList = ref([]);
  71. const getUploadBookList = async () => {
  72. try {
  73. loading.value = true;
  74. const data = await getUploadBookListApi();
  75. list.value = data;
  76. } finally {
  77. loading.value = false;
  78. }
  79. };
  80. const handleDelete = (id) => {
  81. ElMessageBox.confirm("确认是否删除?", "提示", {
  82. confirmButtonText: "确定",
  83. cancelButtonText: "取消",
  84. type: "warning",
  85. beforeClose: async (action, instance, done) => {
  86. if (action === "confirm") {
  87. try {
  88. instance.confirmButtonLoading = true;
  89. await deleteBookApi(id);
  90. ElMessage.success("删除成功");
  91. done();
  92. getUploadBookList();
  93. } finally {
  94. instance.confirmButtonLoading = false;
  95. }
  96. } else {
  97. done();
  98. }
  99. },
  100. });
  101. };
  102. onMounted(() => {
  103. getUploadBookList();
  104. });
  105. defineExpose({
  106. getUploadBookList,
  107. });
  108. </script>
  109. <style lang="scss" scoped>
  110. .bookshelf-list {
  111. margin: 35px -67px 0;
  112. .el-table {
  113. --el-table-header-text-color: #464646;
  114. --el-table-header-bg-color: rgba(209, 187, 158, 0.2);
  115. }
  116. }
  117. </style>