可拖拽表格的难点:
(1)拖拽表格行顺序,自动进行保存顺序
解析:要根据表格行顺序进行下载,这就意味着保存与初始化传参需要按照表格拖拽后顺序
(2)下载表格传参是[1,2,3]数字形式,我们保存与初始化是对象数组,
解析:这个时候我们可以直接采取给{[1,2,3]}数组包层对象
(3)表格行选择是通过复选框,这个时候我们需要去重,避免传参重复new Set
的使用
解析: let selectedNumbers = new Set(); // 使用 Set 来存储唯一的 number 值
- 通过给el-table元素添加key属性,可以确保在数据发生变化时,Vue会重新渲染el-table组件,从而正确地更新表格的显示。
- 给el-table添加
row-key="id"
的作用是为表格的每一行指定一个唯一的key值。这个key值通常是数据源中每一条数据的唯一标识,比如id字段。
ref=“dataTable” 的用法 | |
---|---|
this.$refs.dataTable.toggleAllSelection() |
用于切换所有行的选中状态,如果当前的选中状态是全部选中,则会取消所有行的选中状态;如果当前的选中状态是部分选中或未选中,则会选中所有行。 |
this.$refs.dataTable.clearSelection() | 清空选中的行 |
this.$refs.dataTable.toggleRowSelection(rowData) | 切换某一行的选中状态 |
this.$refs.dataTable.data | 获取 el-table 的数据 |
this.$refs.dataTable.selection | 获取 el-table 的选中行数据 |
<div>
<task-suggest v-model="taskName" @id-select="taskidSel" />
</div>
<div style="margin-top:20px">
<el-table :key="rendertable" ref="dataTable" row-key="id" :data="tableData" border class="draggable-table"
style="width: 30%" @selection-change="handleSelectionChange">
<el-table-column :reserve-selection="true" type="selection"> </el-table-column>
<el-table-column prop="name" label="表名"> </el-table-column>
</el-table>
</div>
------------------------------------
import Sortable from 'sortablejs'
rendertable: "",
allSelect: [],//选中的表格行形成的数组
numberArr: [],
tableData: [
{
name: "表名1",
id: 1,//添加id为了方便区分(row-key)
number: 17//下载的参数
}