zhangwencui
2 天以前 a2002ba0e8aa2a0e4eee61b5205748d8f6e454fc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import type { Ref } from 'vue';
 
import { computed, ref } from 'vue';
 
import { getFileNameFromUrl, getFileType } from '@vben/utils';
 
export function useFilePreview() {
  const visible = ref(false);
  const fileUrl = ref('');
  const fileName = ref('');
 
  const fileType = computed(() => getFileType(fileName.value || fileUrl.value));
 
  function openPreview(url: string, name?: string) {
    fileUrl.value = url;
    fileName.value = name || getFileNameFromUrl(url);
    visible.value = true;
  }
 
  function closePreview() {
    visible.value = false;
  }
 
  return {
    closePreview,
    openPreview,
    previewState: {
      fileUrl: fileUrl as Ref<string>,
      fileName: fileName as Ref<string>,
      fileType,
      visible: visible as Ref<boolean>,
    },
  };
}