Element-UI Table实现拖拽
时间: 2023-12-04 22:38:19 浏览: 36
Element-UI Table组件可以通过引入Sortable.js库来实现拖拽功能。具体实现方法可以参考引用中的介绍。需要注意的是,在使用Element-UI Table组件时,一定要指定row-key属性,否则拖拽排序会出问题。如果不在Element-UI中使用,可以使用draggable组件来实现拖拽,具体实现方法可以参考引用中的介绍。
相关问题
配合element-ui实现
根据您提供的代码,您可以使用 Element UI 的 `el-upload` 组件来实现图片上传和删除功能。以下是使用 Element UI 实现该功能的示例代码:
```html
<template>
<div class="title1" style="padding-left: 10px">文字信息 (最多**六**张)</div>
<div class="imgList">
<div class="imgContent" v-if="imageUrl.length">
<div class="list" v-for="(item, index) in imageUrl" :key="index" style="margin-right: 10px">
<img style="display: inline-block; width: 108px; height: 108px" :src="item" alt />
<span class="remove" @click="removeImg(index)">
<i class="el-icon-delete"></i>
</span>
</div>
</div>
<el-upload v-show="showUpload" ref="addUpload" class="avatar-uploader" action :show-file-list="false" accept="image/jpeg, image/jpg, image/png" :auto-upload="false" :on-change="uploadMap">
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
showUpload: false, // 控制上传按钮的显示与隐藏
imageUrl: [], // 存储已上传的图片地址数组
// 其他数据和方法...
};
},
methods: {
removeImg(index) {
this.imageUrl.splice(index, 1); // 从数组中移除指定索引的图片地址
},
uploadMap(file) {
const reader = new FileReader();
reader.onload = (e) => {
const base64Data = e.target.result; // 将文件转换为 Base64 编码的数据
this.imageUrl.push(base64Data); // 将图片地址添加到数组中
};
reader.readAsDataURL(file.raw); // 以 DataURL 的形式读取文件内容
}
}
};
</script>
```
上述代码使用了 Element UI 的 `el-upload`<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [vue配合element-ui实现图片多张上传和删除](https://blog.csdn.net/weixin_44255044/article/details/114135207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [vue Element ui实现table列拖动效果](https://download.csdn.net/download/u012976879/10770752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
vue element ui table 列表拖拽
Vue 和 Element UI 都提供了一些内置的指令和组件,可以方便地实现列表拖拽功能。下面是一个简单的示例:
1. 安装 Element UI
在 Vue 项目中使用 Element UI,需要先安装 Element UI:
```
npm install element-ui -S
```
2. 引入 Element UI
在 Vue 项目的入口文件中引入 Element UI:
```javascript
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
```
3. 创建一个可拖拽的表格
使用 Element UI 的 `el-table` 组件创建一个表格,并添加 `el-table-column` 组件来定义表格的列。在每一列的 `header` 中添加 `draggable` 属性,并绑定一个事件处理函数。
```html
<template>
<div class="drag-table">
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column label="名称" prop="name" header-draggable @header-dragend="handleHeaderDragEnd"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
<el-table-column label="地址" prop="address"></el-table-column>
</el-table>
</div>
</template>
```
在 `handleHeaderDragEnd` 方法中,获取拖拽结束后的表头位置信息,并根据位置信息重新排列表格列的顺序。
```javascript
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18, address: '北京市海淀区' },
{ name: '李四', age: 20, address: '上海市浦东新区' },
{ name: '王五', age: 22, address: '广州市天河区' },
{ name: '赵六', age: 24, address: '深圳市南山区' }
]
}
},
methods: {
handleHeaderDragEnd(newWidth, oldWidth, column, event) {
const tableEl = event.target.closest('.el-table')
const headerCells = tableEl.querySelectorAll('.el-table__header-wrapper th')
const newColumns = []
Array.from(headerCells).forEach((cell, index) => {
const prop = cell.getAttribute('data-prop')
const column = this.$refs.table.store.states._columns.find(c => c.property === prop)
if (column) {
newColumns.push(column)
}
})
this.$refs.table.store.commit('setColumns', newColumns)
},
handleSortChange() {
// 排序后需要重新计算列的位置
this.$nextTick(() => {
const headerCells = this.$el.querySelectorAll('.el-table__header-wrapper th')
Array.from(headerCells).forEach((cell, index) => {
cell.setAttribute('data-index', index)
})
})
}
}
}
```
4. 添加样式
为了让表格列能够拖拽,还需要添加一些样式:
```css
.drag-table .el-table__header-wrapper th {
cursor: move;
}
.drag-table .el-table__header-wrapper th.dragging {
opacity: 0.5;
}
```
至此,我们已经完成了一个简单的可拖拽的表格。当用户拖拽表头时,表格列的位置会随之改变。需要注意的是,这个示例只实现了表头拖拽的功能,如果需要实现行拖拽的功能,可以参考 Vue 官方提供的 sortable.js 插件。