上传组件新增拖动排序属性

This commit is contained in:
RuoYi 2025-04-30 10:28:59 +08:00
parent baf2f6f46b
commit e852fdb687
2 changed files with 49 additions and 4 deletions

View File

@ -43,6 +43,7 @@
<script> <script>
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Sortable from 'sortablejs'
export default { export default {
name: "FileUpload", name: "FileUpload",
@ -82,6 +83,11 @@ export default {
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false default: false
},
//
drag: {
type: Boolean,
default: true
} }
}, },
data() { data() {
@ -93,7 +99,22 @@ export default {
headers: { headers: {
Authorization: "Bearer " + getToken(), Authorization: "Bearer " + getToken(),
}, },
fileList: [], fileList: []
}
},
mounted() {
if (this.drag) {
this.$nextTick(() => {
const element = document.querySelector('.upload-file-list')
Sortable.create(element, {
ghostClass: 'file-upload-darg',
onEnd: (evt) => {
const movedItem = this.fileList.splice(evt.oldIndex, 1)[0]
this.fileList.splice(evt.newIndex, 0, movedItem)
this.$emit("input", this.listToString(this.fileList))
}
})
})
} }
}, },
watch: { watch: {
@ -216,6 +237,10 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.file-upload-darg {
opacity: 0.5;
background: #c8ebfb;
}
.upload-file-uploader { .upload-file-uploader {
margin-bottom: 5px; margin-bottom: 5px;
} }

View File

@ -46,6 +46,7 @@
<script> <script>
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import { isExternal } from "@/utils/validate" import { isExternal } from "@/utils/validate"
import Sortable from 'sortablejs'
export default { export default {
props: { props: {
@ -62,22 +63,27 @@ export default {
// //
limit: { limit: {
type: Number, type: Number,
default: 5, default: 5
}, },
// (MB) // (MB)
fileSize: { fileSize: {
type: Number, type: Number,
default: 5, default: 5
}, },
// , ['png', 'jpg', 'jpeg'] // , ['png', 'jpg', 'jpeg']
fileType: { fileType: {
type: Array, type: Array,
default: () => ["png", "jpg", "jpeg"], default: () => ["png", "jpg", "jpeg"]
}, },
// //
isShowTip: { isShowTip: {
type: Boolean, type: Boolean,
default: true default: true
},
//
drag: {
type: Boolean,
default: true
} }
}, },
data() { data() {
@ -95,6 +101,20 @@ export default {
fileList: [] fileList: []
} }
}, },
mounted() {
if (this.drag) {
this.$nextTick(() => {
const element = document.querySelector('.el-upload-list')
Sortable.create(element, {
onEnd: (evt) => {
const movedItem = this.fileList.splice(evt.oldIndex, 1)[0]
this.fileList.splice(evt.newIndex, 0, movedItem)
this.$emit("input", this.listToString(this.fileList))
}
})
})
}
},
watch: { watch: {
value: { value: {
handler(val) { handler(val) {