{"version":3,"file":"file-upload.mjs","sources":["../../../../../../packages/components/file-upload/src/file-upload.vue"],"sourcesContent":["<template>\n  <div :class=\"`${PREFIX.toLowerCase()}-file-upload`\">\n    <hl-upload\n      :class=\"listType==='text'?'custom-file-upload':''\"\n      :headers=\"{authorization: token}\"\n      :action=\"fileService\"\n      :list-type=\"listType\"\n      :accept=\"accept\"\n      :limit=\"limit\"\n      :file-list=\"fileList\"\n      :multiple=\"multiple\"\n      :disabled=\"disabled\"\n      :show-file-list=\"showFileList\"\n      :on-preview=\"handlePictureCardPreview\"\n      :on-remove=\"handleRemove\"\n      :on-success=\"handleSuccess\"\n      :on-exceed=\"handleExceed\"\n    >\n      <!--图片上传-->\n      <hl-icon v-if=\"listType==='card'\"><two-upload /></hl-icon>\n      <!--文件上传-->\n      <hl-button v-if=\"listType==='text'&&!disabled\" type=\"primary\" icon-position=\"left\">\n        {{ textButton }}\n        <template #icon>\n          <hl-icon><two-upload /></hl-icon>\n        </template>\n      </hl-button>\n    </hl-upload>\n    <hl-dialog v-model=\"dialogVisible\" title=\"查看图片\" width=\"50%\" :append-to-body=\"true\">\n      <hl-thumb :src=\"dialogImageUrl\" class=\"full\" />\n    </hl-dialog>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, PropType } from 'vue'\nimport { HlMessage } from 'hongluan-ui'\nimport { TwoUpload } from '@hongluan-ui/icons'\nimport { fileSizeLimit, FileList } from './types'\nimport { PREFIX } from '@fx-front-framework/utils'\n\nexport default defineComponent({\n  name: 'FileUpload',\n  components: { TwoUpload },\n  props: {\n    token: {\n      type: String,\n      default: '',\n    },\n    textButton: {\n      type: String,\n      default: '点击上传',\n    },\n    showFileList: {\n      type: Boolean,\n      default: true,\n    },\n    listType: {\n      type: String,\n      default: 'text',\n    },\n    accept: {\n      type: String,\n      default: '.*',\n    },\n    limit: {\n      type: Number,\n    },\n    multiple: {\n      type: Boolean,\n      default: false,\n    },\n    // 文件上传后的列表id数组字符串\n    ids: {\n      type: String,\n      default: '',\n    },\n    // 用于回显\n    getFileList: {\n      type: Function as PropType<(...args: any) => void>,\n      default: () => ({}),\n    },\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n    // 文件上传路径,API地址\n    fileService: {\n      type: String,\n      default: '',\n    },\n    // 文件大小\n    fileSizeLimit: {\n      type: Object,\n      default: () => ({\n        video: 100, // 视频100M\n        image: 5, // 图片5M\n      }),\n    },\n  },\n  emits: ['handleSuccess', 'update:ids'],\n  setup (props, { emit }) {\n    const fileList = ref<FileList[]>([])\n\n    // 初始化文件数据方法\n    const initData = () => {\n      if (props.ids) {\n        props.getFileList({\n          ids: props.ids,\n          setFileList: setFileList,\n        })\n      }\n    }\n    onMounted(() => {\n      initData()\n    })\n\n    const setFileList = (list: FileList[]) => {\n      fileList.value = list\n    }\n\n    const dialogImageUrl = ref('')\n    const dialogVisible = ref(false)\n\n    // 删除文件\n    const handleRemove = (file: any, newFileList: any) => {\n      fileList.value = newFileList\n      emit('handleSuccess', fileList.value)\n      emit('update:ids', fileList.value.map(item => { return item.id }).join(','))\n    }\n\n    // 文件预览\n    const handlePictureCardPreview = (file: { url: string; }) => {\n      // 判断图片还是文件\n      const fileName = file.url.split('/')[file.url.split('/').length - 1]\n\n      if (/\\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(fileName)) {\n        dialogImageUrl.value = file.url\n        dialogVisible.value = true\n      } else {\n        // 简单处理下载，浏览器不能在线预览则调用下载\n        window.open(file.url)\n      }\n    }\n\n    // 图片上传前的校验\n    const handelBeforeUpload = (file: File) => {\n      dialogImageUrl.value = ''\n      const fileSizeLimit: fileSizeLimit = props.fileSizeLimit\n      const type = file.type.split('/')[0]\n      if (file.size > fileSizeLimit[type] * 1024 * 1024) {\n        HlMessage.warning(\n          type === 'video'\n            ? `视频文件不能超过 ${fileSizeLimit[type]} MB`\n            : `图片文件不能超过 ${fileSizeLimit[type]} MB`,\n        )\n        return false\n      }\n      return true\n    }\n\n    // 文件限制提示\n    const handleExceed = (files: string | any[], newFileList: string | any[]) => {\n      HlMessage.warning(\n        `当前限制选择 ${props.limit} 个文件，本次选择了 ${files.length} 个文件，共选择了 ${files.length + newFileList.length} 个文件`,\n      )\n    }\n\n    // 上传成功\n    const handleSuccess = (res: any) => {\n      if (+res.code === 0) {\n        console.log(res.data)\n        // 普通上传\n        if (props.showFileList) {\n          fileList.value.push({\n            ...res.data,\n            name: res.data.originalName,\n          })\n          emit('handleSuccess', fileList.value)\n          emit('update:ids', fileList.value.map(item => { return item.id }).join(','))\n        } else {\n          // 导入上传\n          emit('handleSuccess', res)\n        }\n      } else {\n        emit('handleSuccess', res)\n      }\n    }\n    return {\n      dialogImageUrl,\n      dialogVisible,\n      handleRemove,\n      handlePictureCardPreview,\n      handelBeforeUpload,\n      handleSuccess,\n      handleExceed,\n      fileList,\n      setFileList,\n      PREFIX,\n    }\n  },\n})\n</script>\n"],"names":["fileSizeLimit","_createElementBlock","_normalizeClass","_createVNode","_createCommentVNode","_createBlock","_withCtx","_openBlock","_createTextVNode","_toDisplayString"],"mappings":"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"}