PresetCover.vue 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <el-dialog :visible="visible" width="800px" @close="dialogClose">
  3. <div class="preset-cover">
  4. <div v-for="{ file_id, file_url } in coverList" :key="file_id">
  5. <el-image :src="file_url" @click="$emit('selectCover', file_url, file_id)" />
  6. </div>
  7. </div>
  8. </el-dialog>
  9. </template>
  10. <script>
  11. export default {
  12. name: 'PresetCover'
  13. };
  14. </script>
  15. <script setup>
  16. import { ref } from 'vue';
  17. import { GetFileResource } from '@/api/app';
  18. defineProps({
  19. visible: {
  20. default: false,
  21. type: Boolean
  22. }
  23. });
  24. const emits = defineEmits(['selectCover', 'dialogClose']);
  25. let coverList = ref([]);
  26. GetFileResource({
  27. resource_key_list: [
  28. 'TRC_LB_BROWN',
  29. 'TRC_LB_GREEN',
  30. 'TRC_LB_PURPLE',
  31. 'TRC_ZB_BLUE',
  32. 'TRC_ZB_GREEN',
  33. 'TRC_ZB_YELLOW',
  34. 'TRC_KC_BLUE',
  35. 'TRC_KC_GREEN',
  36. 'TRC_KC_PURPLE'
  37. ]
  38. }).then(({ file_list }) => {
  39. coverList.value = file_list;
  40. });
  41. function dialogClose() {
  42. emits('dialogClose');
  43. }
  44. </script>
  45. <style lang="scss" scoped>
  46. .preset-cover {
  47. display: flex;
  48. flex-wrap: wrap;
  49. gap: 24px;
  50. justify-content: center;
  51. margin-bottom: 24px;
  52. .el-image {
  53. width: 213.33px;
  54. height: 120px;
  55. cursor: pointer;
  56. }
  57. }
  58. </style>