{"version":3,"file":"upload-drag.vue2.mjs","sources":["../../../../../../packages/components/upload-drag/src/upload-drag.vue"],"sourcesContent":["<template>\r\n  <ll-new-modal\r\n    :class=\"bem.b()\"\r\n    title=\"上传文件\"\r\n    :open=\"visible\"\r\n    :keyboard=\"false\"\r\n    :mask-closable=\"false\"\r\n    :width=\"'900px'\"\r\n    @cancel=\"handleClickCancelBtn\"\r\n    @ok=\"handleClickOkBtn\"\r\n  >\r\n    <div :class=\"bem.e('content')\">\r\n      <a-upload-dragger\r\n        v-bind=\"attrs\"\r\n        :accept=\"props.accept\"\r\n        :multiple=\"props.multiple\"\r\n        :file-size=\"props.fileSize\"\r\n        :before-upload=\"beforeUpload\"\r\n        :custom-request=\"customRequest\"\r\n        :file-list=\"fileList\"\r\n        @reject=\"handleDragReject\"\r\n        @remove=\"handleRemove\"\r\n      >\r\n        <template #iconRender>\r\n          <ll-icon icon-name=\"icon-add\" />\r\n        </template>\r\n        <template #removeIcon>\r\n          <ll-icon icon-name=\"icon-delete\" />\r\n        </template>\r\n        <p class=\"ant-upload-drag-icon\">\r\n          <ll-icon icon-name=\"icon-add\" color=\"#1890ff\" />\r\n        </p>\r\n        <p class=\"ant-upload-text\">\r\n          将文件拖到此处，或\r\n          <a>点击上传</a>\r\n        </p>\r\n        <p class=\"ant-upload-hint\">\r\n          {{\r\n            props.tip\r\n              ? props.tip\r\n              : '支持单个或多个上传，严禁上传公司数据或其他被禁止的文件！'\r\n          }}\r\n        </p>\r\n      </a-upload-dragger>\r\n    </div>\r\n  </ll-new-modal>\r\n  <ll-button\r\n    v-if=\"!$slots.buttonContent\"\r\n    :disabled=\"props.disabled\"\r\n    @click=\"visible = true\"\r\n  >\r\n    <template #icon>\r\n      <ll-icon icon-name=\"icon-upload\" />\r\n    </template>\r\n    上传文件\r\n  </ll-button>\r\n  <ll-button\r\n    v-else\r\n    type=\"link\"\r\n    class=\"button-content-btn\"\r\n    :disabled=\"props.disabled\"\r\n    @click=\"visible = true\"\r\n  >\r\n    <slot name=\"buttonContent\" />\r\n  </ll-button>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n// import * as fileApi from '@/api/file'\r\n\r\nimport type { UploadProps } from 'ant-design-vue'\r\nimport { message } from 'ant-design-vue'\r\nimport { ref, useAttrs, watch, watchEffect } from 'vue'\r\nimport { ILlUploadDragProps } from './upload-drag'\r\n\r\nimport { createNamespace } from '@ll-plus/utils'\r\n\r\ndefineOptions({ name: 'LlUploadDrag' })\r\n\r\nconst attrs = useAttrs()\r\n\r\nconst bem = createNamespace('upload-drag')\r\n\r\nconst props = defineProps(ILlUploadDragProps)\r\nconst emits = defineEmits([\r\n  'update:value',\r\n  'customRequest',\r\n  'cancel',\r\n  'confirm',\r\n])\r\n\r\nconst visible = ref(false)\r\nconst originalFileList = ref<any[]>([])\r\n\r\nconst fileList = ref<any[]>([])\r\n\r\n// 校验文件类型是否满足\r\nconst checkFileType = (file: any) => {\r\n  if (!props.accept) return true\r\n\r\n  // 获取文件扩展名\r\n  const extension = file.name.split('.').pop()?.toLowerCase() || ''\r\n\r\n  // 获取允许的扩展名列表\r\n  const allowedExtensions = props.accept\r\n    .split(',')\r\n    .map((ext) => ext.trim().replace('.', '').toLowerCase())\r\n\r\n  // 检查扩展名是否在允许的列表中\r\n  const isValid = allowedExtensions.includes(extension)\r\n\r\n  if (!isValid) {\r\n    const allowedFormats = allowedExtensions.join('/')\r\n    message.error(`${file.name} 需要为 ${allowedFormats} 格式`)\r\n    return false\r\n  }\r\n\r\n  return true\r\n}\r\n\r\n// 校验文件大小是否满足\r\nconst checkFileSize = (file: any) => {\r\n  const isSize = !props.fileSize ? true : file.size <= props.fileSize\r\n  if (!isSize) {\r\n    message.error(`${file.name} 文件过大`)\r\n    return false\r\n  }\r\n  return true\r\n}\r\n\r\n// 上传前触发钩子函数\r\nconst beforeUpload: UploadProps['beforeUpload'] = async (file) => {\r\n  return checkFileType(file) && checkFileSize(file)\r\n}\r\n\r\n// 自定义上传函数\r\nconst customRequest: UploadProps['customRequest'] = async (res: any) => {\r\n  console.log(res)\r\n  fileList.value.push(res.file)\r\n  emits('customRequest', res)\r\n}\r\n\r\n// 移除\r\nconst handleRemove = async (e: any) => {\r\n  fileList.value = fileList.value.filter((item) => item.uid !== e.uid)\r\n}\r\n\r\n// 拖拽不符合accept的\r\nconst handleDragReject = () => {\r\n  message.error('请上传正确的文件格式')\r\n}\r\nconst handleClickCancelBtn = () => {\r\n  fileList.value = originalFileList.value\r\n  emits('update:value', originalFileList.value)\r\n  emits('cancel')\r\n  visible.value = false\r\n}\r\nconst handleClickOkBtn = () => {\r\n  emits('update:value', fileList.value)\r\n  emits('confirm')\r\n  visible.value = false\r\n}\r\n\r\nwatchEffect(() => {\r\n  if (visible.value) {\r\n    originalFileList.value = [...props.value] // 使用浅拷贝代替深拷贝\r\n  }\r\n})\r\n\r\nwatch(\r\n  () => props.value,\r\n  (arr) => {\r\n    fileList.value = arr\r\n  }\r\n)\r\n</script>\r\n"],"names":["_createVNode","_normalizeClass","_unref","_createElementVNode","_mergeProps","_toDisplayString","$slots","_createBlock","_renderSlot"],"mappings":"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"}