{"version":3,"file":"upload-image.vue2.mjs","sources":["../../../../../../packages/components/upload-image/src/upload-image.vue"],"sourcesContent":["<template>\r\n  <div :class=\"bem.b()\">\r\n    <div :class=\"bem.m('preview-box')\">\r\n      <a-spin size=\"small\" :spinning=\"imgLoading\">\r\n        <a-upload\r\n          v-model:file-list=\"fileList\"\r\n          v-bind=\"getBindValue\"\r\n          :accept=\"computedAccept\"\r\n          :show-upload-list=\"false\"\r\n          :max-count=\"maxCount\"\r\n          :multiple=\"computedMultiple\"\r\n          :before-upload=\"beforeUpload\"\r\n          :custom-request=\"customRequest\"\r\n          :class=\"[bem.m('upload'), bem.is(getBorderType)]\"\r\n          :style=\"{\r\n            width: getSizeStyle(width + 2),\r\n            height: getSizeStyle(height + 2),\r\n            borderRadius: borderRadius,\r\n          }\"\r\n          list-type=\"picture-card\"\r\n          @dragenter.capture=\"handleDragEvent\"\r\n          @dragover.capture=\"handleDragEvent\"\r\n          @drop.capture=\"handleDragEvent\"\r\n        >\r\n          <ll-image\r\n            v-if=\"innerValue.length > 0\"\r\n            v-bind=\"getImgBindValue\"\r\n            :preview=\"{ visible: false }\"\r\n            :width=\"getSizeStyle(width)\"\r\n            :height=\"getSizeStyle(height)\"\r\n            border-radius=\"0\"\r\n            :src=\"innerValue[0]\"\r\n            :is-show-border=\"false\"\r\n          >\r\n            <template #previewMaskContent>\r\n              <div :class=\"bem.m('preview-mask')\">\r\n                <ll-icon\r\n                  v-if=\"isPreview\"\r\n                  :icon-name=\"`icon-pwd-look`\"\r\n                  :class=\"bem.e('image-icon')\"\r\n                  @click.stop=\"imageVisible = true\"\r\n                />\r\n\r\n                <ll-icon\r\n                  v-if=\"isDelete\"\r\n                  :icon-name=\"`icon-delete`\"\r\n                  :class=\"bem.e('image-icon')\"\r\n                  @click.stop=\"handleRemoveImage\"\r\n                />\r\n                <div></div>\r\n              </div>\r\n            </template>\r\n          </ll-image>\r\n\r\n          <!-- 无图片时展示图标 -->\r\n          <div v-else-if=\"!$slots.iconRender\" :class=\"bem.e('upload-content')\">\r\n            <ll-icon\r\n              :icon-name=\"uploadIcon || 'icon-add'\"\r\n              :size=\"uploadIconSize\"\r\n            />\r\n            <!-- 上传标题 -->\r\n            <div v-if=\"uploadTitle\" :class=\"bem.m('upload-title')\">\r\n              {{ uploadTitle }}\r\n            </div>\r\n            <!-- 上传提示 -->\r\n            <div v-if=\"computedTip\" :class=\"bem.m('upload-tip')\">\r\n              {{ computedTip }}\r\n            </div>\r\n          </div>\r\n          <slot v-else name=\"iconRender\"> </slot>\r\n        </a-upload>\r\n      </a-spin>\r\n    </div>\r\n\r\n    <!-- 预览展示 -->\r\n    <div style=\"display: none\">\r\n      <a-image-preview-group\r\n        :preview=\"{\r\n          visible: imageVisible,\r\n          onVisibleChange: (vis: boolean) => (imageVisible = vis),\r\n        }\"\r\n      >\r\n        <a-image v-for=\"item in innerValue\" :key=\"item\" :src=\"item\" />\r\n      </a-image-preview-group>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport {\r\n  createNamespace,\r\n  fileToBase64,\r\n  formatFileSize,\r\n  matchAcceptType,\r\n} from '@ll-plus/utils'\r\nimport { Form, message } from 'ant-design-vue'\r\nimport { computed, ref, useAttrs, watch } from 'vue'\r\nimport { uploadImageEmits, uploadImageProps } from './upload-image'\r\n\r\nimport type {\r\n  FileType,\r\n  UploadProps,\r\n} from 'ant-design-vue/es/upload/interface.d.ts'\r\nimport { omit } from 'lodash-es'\r\nimport { imageProps } from '../../image'\r\nimport { watermarkProps } from '../../watermark'\r\n\r\n//1.Init props/emits/bem/attrs\r\n\r\ndefineOptions({ name: 'LlUploadImage' })\r\n\r\nconst props = defineProps(uploadImageProps)\r\n\r\nconst emits = defineEmits(uploadImageEmits)\r\n\r\nconst bem = createNamespace('upload-image')\r\n\r\nconst attrs = useAttrs()\r\n\r\nconst fileList = ref([])\r\n\r\nconst imageVisible = ref(false)\r\n\r\nconst innerValue = ref<string[]>(\r\n  Array.isArray(props.value)\r\n    ? [...props.value]\r\n    : props.value\r\n      ? [props.value]\r\n      : [],\r\n)\r\n\r\nconst formItemContext = Form.useInjectFormItemContext()\r\n\r\n// 获取绑定给上传组件的属性\r\nconst getBindValue = computed(() => ({\r\n  ...omit({ ...attrs }, [...Object.keys(imageProps)]),\r\n}))\r\n\r\n// 获取绑定给图片组件的属性\r\nconst getImgBindValue = computed(() => {\r\n  const imagePropKeys = Object.keys({ ...imageProps, ...watermarkProps })\r\n  return Object.fromEntries(\r\n    Object.entries(attrs).filter(([key]) => imagePropKeys.includes(key)),\r\n  )\r\n})\r\n\r\n// 尺寸样式处理函数\r\nfunction getSizeStyle(size: any) {\r\n  // 处理数字类型\r\n  if (typeof size === 'number') {\r\n    return `${size}px`\r\n  }\r\n  // 处理字符串类型\r\n  if (typeof size === 'string') {\r\n    return size\r\n  }\r\n  // 处理其他情况\r\n  return undefined\r\n}\r\n\r\n// 在捕获阶段阻止拖拽事件\r\nconst handleDragEvent = (e: DragEvent) => {\r\n  if (!props.isDrag) {\r\n    e.preventDefault()\r\n    e.stopPropagation()\r\n  }\r\n}\r\n\r\nconst getBorderType = computed(() => {\r\n  switch (props.borderType) {\r\n    // 虚线\r\n    case 'dashed':\r\n      return 'dashed'\r\n    // 实线\r\n    case 'solid':\r\n      return 'solid'\r\n    // 点线\r\n    case 'dotted':\r\n      return 'dotted'\r\n    default:\r\n      return ''\r\n  }\r\n})\r\n\r\nconst computedAccept = computed(() => {\r\n  return props.accept\r\n})\r\n\r\nconst computedTip = computed(() => {\r\n  return typeof props.uploadTip === 'string'\r\n    ? props.uploadTip\r\n    : props.uploadTip\r\n      ? `支持${computedAccept.value}格式，不超过${formatFileSize(\r\n          props.imgSize * 1024 * 1024,\r\n        )}。`\r\n      : ''\r\n})\r\n\r\nconst computedMultiple = computed(() => props.maxCount > 1)\r\n\r\nconst beforeUpload = async (file: FileType, FileList: FileType[]) => {\r\n  const isType = matchAcceptType(file, computedAccept.value)\r\n\r\n  // 将文件大小从字节转换为MB\r\n  const fileSizeInMB = file.size / (1024 * 1024)\r\n\r\n  // 如果props.imgSize为0，表示无大小限制\r\n  const isSize = props.imgSize === 0 ? true : fileSizeInMB <= props.imgSize\r\n\r\n  if (!isType) {\r\n    message.error(`${file.name} 需要为${computedAccept.value}格式。`)\r\n    return false\r\n  }\r\n\r\n  if (!isSize) {\r\n    // 使用格式化函数显示限制大小\r\n    message.error(\r\n      `${file.name} 文件不得大于${formatFileSize(\r\n        props.imgSize * 1024 * 1024,\r\n      )}。`,\r\n    )\r\n    return false\r\n  }\r\n\r\n  return isType && isSize && props.beforeUpload?.(file, FileList)\r\n}\r\n\r\nconst customRequest: UploadProps['customRequest'] = async (res: any) => {\r\n  const fileUrl = (await fileToBase64(res.file)) as string\r\n  if (props.useBase64) {\r\n    props.maxCount === 1\r\n      ? (innerValue.value = [fileUrl])\r\n      : innerValue.value.push(fileUrl)\r\n  }\r\n  try {\r\n    props.customRequest?.(res, fileUrl)\r\n  } catch (error) {\r\n    innerValue.value.splice(innerValue.value.length - 1, 1)\r\n    message.error('上传失败')\r\n  }\r\n}\r\n\r\n// 移除图片\r\nconst handleRemoveImage = async () => {\r\n  const index = innerValue.value.length - 1\r\n  innerValue.value.splice(index, 1)\r\n\r\n  setValue()\r\n}\r\n\r\nconst setValue = () => {\r\n  const value =\r\n    props.maxCount === 1\r\n      ? innerValue.value.length\r\n        ? innerValue.value[0]\r\n        : ''\r\n      : innerValue.value\r\n  emits('update:value', value)\r\n  emits('change', value)\r\n  formItemContext.onFieldChange()\r\n}\r\n\r\nwatch(\r\n  () => props.value,\r\n  (newVal) => {\r\n    if (newVal !== innerValue.value) {\r\n      innerValue.value = Array.isArray(newVal)\r\n        ? [...newVal]\r\n        : newVal\r\n          ? [newVal]\r\n          : []\r\n    }\r\n  },\r\n)\r\n\r\nwatch(\r\n  innerValue,\r\n  () => {\r\n    setValue()\r\n  },\r\n  {\r\n    deep: true,\r\n  },\r\n)\r\n</script>\r\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","imgLoading","_mergeProps","maxCount","width","height","borderRadius","_createBlock","isPreview","isDelete","$slots","_Fragment","_createCommentVNode","uploadIcon","uploadIconSize","uploadTitle","_renderSlot","_renderList"],"mappings":"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"}