From 4b9f7d4751b245d3c18b138fa126056159f9bca9 Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期四, 09 一月 2025 11:14:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/DragSelect.vue | 67 +++++++++++++++++++++++++++++++++ 1 files changed, 67 insertions(+), 0 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/DragSelect.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/DragSelect.vue new file mode 100644 index 0000000..315c7b4 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/DragSelect.vue @@ -0,0 +1,67 @@ +<template> + <el-select ref="dragSelect" v-model="selectVal" v-bind="$attrs" class="drag-select" multiple v-on="$listeners" @change="changeHandler"> + <slot /> + </el-select> +</template> + +<script> +import Sortable from 'sortablejs' + +export default { + name: 'DragSelect', + props: { + value: { + type: Array, + required: true + } + }, + computed: { + selectVal: { + get() { + return [...this.value] + }, + set(val) { + this.$emit('input', [...val]) + } + } + }, + mounted() { + this.setSort() + }, + methods: { + setSort() { + const el = this.$refs.dragSelect.$el.querySelectorAll('.el-select__tags > span')[0] + this.sortable = Sortable.create(el, { + ghostClass: 'sortable-ghost', + setData: function(dataTransfer) { + dataTransfer.setData('Text', '') + }, + onEnd: evt => { + const targetRow = this.value.splice(evt.oldIndex, 1)[0] + this.value.splice(evt.newIndex, 0, targetRow) + } + }) + }, + changeHandler(val){ + this.$emit('outFileChange',val); + } + } +} +</script> + +<style lang="scss" scoped> +.drag-select { + ::v-deep { + .sortable-ghost { + opacity: .8; + color: #fff !important; + background: #42b983 !important; + } + + .el-tag { + cursor: pointer; + } + } +} +</style> + -- Gitblit v1.9.3