RuoYi
2025-04-30 dae8c5016c0b8894119618754acfe509123d2f91
src/components/ImageUpload/index.vue
@@ -49,6 +49,7 @@
<script setup>
import { getToken } from "@/utils/auth"
import { isExternal } from "@/utils/validate"
import Sortable from 'sortablejs'
const props = defineProps({
  modelValue: [String, Object, Array],
@@ -64,23 +65,28 @@
  // 图片数量限制
  limit: {
    type: Number,
    default: 5,
    default: 5
  },
  // 大小限制(MB)
  fileSize: {
    type: Number,
    default: 5,
    default: 5
  },
  // 文件类型, 例如['png', 'jpg', 'jpeg']
  fileType: {
    type: Array,
    default: () => ["png", "jpg", "jpeg"],
    default: () => ["png", "jpg", "jpeg"]
  },
  // 是否显示提示
  isShowTip: {
    type: Boolean,
    default: true
  },
  // 拖动排序
  drag: {
    type: Boolean,
    default: true
  }
})
const { proxy } = getCurrentInstance()
@@ -216,6 +222,22 @@
  }
  return strs != "" ? strs.substr(0, strs.length - 1) : ""
}
// 初始化拖拽排序
onMounted(() => {
  if (props.drag) {
    nextTick(() => {
      const element = document.querySelector('.el-upload-list')
      Sortable.create(element, {
        onEnd: (evt) => {
          const movedItem = fileList.value.splice(evt.oldIndex, 1)[0]
          fileList.value.splice(evt.newIndex, 0, movedItem)
          emit('update:modelValue', listToString(fileList.value))
        }
      })
    })
  }
})
</script>
<style scoped lang="scss">