DraftTable.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template>
  2. <div class="waterfall" v-loading="props.loading">
  3. <template v-for="item in props.list" :key="item.articleId">
  4. <div class="waterfall-item" v-if="item.content && item.content.newsItem">
  5. <WxNews :articles="item.content.newsItem" />
  6. <!-- 操作按钮 -->
  7. <el-row>
  8. <el-button
  9. type="success"
  10. circle
  11. @click="emit('publish', item)"
  12. v-hasPermi="['mp:free-publish:submit']"
  13. >
  14. <Icon icon="fa:upload" />
  15. </el-button>
  16. <el-button
  17. type="primary"
  18. circle
  19. @click="emit('update', item)"
  20. v-hasPermi="['mp:draft:update']"
  21. >
  22. <Icon icon="ep:edit" />
  23. </el-button>
  24. <el-button
  25. type="danger"
  26. circle
  27. @click="emit('delete', item)"
  28. v-hasPermi="['mp:draft:delete']"
  29. >
  30. <Icon icon="ep:delete" />
  31. </el-button>
  32. </el-row>
  33. </div>
  34. </template>
  35. </div>
  36. </template>
  37. <script setup lang="ts">
  38. import WxNews from '@/views/mp/components/wx-news/main.vue'
  39. import { Article } from './types'
  40. const props = defineProps<{
  41. list: Article[]
  42. loading: boolean
  43. }>()
  44. const emit = defineEmits<{
  45. (e: 'publish', v: Article)
  46. (e: 'update', v: Article)
  47. (e: 'delete', v: Article)
  48. }>()
  49. </script>
  50. <style lang="scss" scoped>
  51. .waterfall {
  52. width: 100%;
  53. column-gap: 10px;
  54. column-count: 5;
  55. margin: 0 auto;
  56. .waterfall-item {
  57. padding: 10px;
  58. margin-bottom: 10px;
  59. break-inside: avoid;
  60. border: 1px solid #eaeaea;
  61. }
  62. }
  63. @media (min-width: 992px) and (max-width: 1300px) {
  64. .waterfall {
  65. column-count: 3;
  66. }
  67. }
  68. @media (min-width: 768px) and (max-width: 991px) {
  69. .waterfall {
  70. column-count: 2;
  71. }
  72. }
  73. @media (max-width: 767px) {
  74. .waterfall {
  75. column-count: 1;
  76. }
  77. }
  78. </style>