vue实现表格拖拽并且可编辑

逃离我推掉我的手 2021-08-28 01:28 1320阅读 1赞

1使用vuedragger

第一步安装 vuedragger

npm install vuedraggable —save 或者 npm i -S vuedraggable

第二步 组件中引用

import draggable from “vuedraggable”

第三步 初始化组件

components: {

draggable,

}

第四步 附上关键代码





{ {index+1}}





{ {item.wp_wordname}}

{ {item.wp_pdfpage}}



预览

下载



删除







//拖动中与拖动结束

getdata(evt) {

// console.log(evt.draggedContext.element.id);

},

datadragEnd(evt) {

/* console.log(“拖动前的索引 :” + evt.oldIndex);

console.log(“拖动后的索引 :” + evt.newIndex);

console.log(this.tags); */

},

第五步 重启服务

附上完整代码

  1. <template>
  2. <div class="page-body" v-loading="loading" style="margin: 30px auto 0;
  3. padding: 0 36px 0 24px;">
  4. <table id="dataTable" cellspacing=0 cellpadding=0>
  5. <thead>
  6. <tr style="background:#047bcf">
  7. <th width="110">序号</th>
  8. <th width="200">文件编号</th>
  9. <th width="200">责任者</th>
  10. <th width="200">材料名称</th>
  11. <th width="160">页数</th>
  12. <th width="160">备注</th>
  13. <th width="160">时间</th>
  14. <th width="160">操作</th>
  15. <th width="160">移动</th>
  16. </tr>
  17. </thead>
  18. <draggable v-model="tablelist" element="tbody" :move="getdata" @update="datadragEnd">
  19. <tr v-for="(item,index) in tablelist" :key="index">
  20. <td>{
  21. {index+1}}</td>
  22. <td><el-input v-model="tablelist[index].st_failNum"></el-input></td>
  23. <td><el-input v-model="tablelist[index].st_chargePeople" ></el-input></td>
  24. <td>{
  25. {item.wp_wordname}}</td>
  26. <td>{
  27. {item.wp_pdfpage}}</td>
  28. <td><el-input v-model="tablelist[index].st_note" ></el-input></td>
  29. <td> <el-date-picker
  30. v-model="tablelist[index].st_date"
  31. type="date"
  32. placeholder="选择日期"
  33. value-format="yyyyMMdd">
  34. </el-date-picker></td>
  35. <td>
  36. <td>
  37. <el-button type="text" @click="onPreview(item.wp_pdfpath)">预览</el-button>
  38. <el-button type="text" @click="onDownLoad(item.wp_pdfpath,item.wp_wordsname)">下载
  39. </el-button>
  40. <el-button type="text" @click="onDelete(index,item)">删除</el-button>
  41. </td>
  42. <td><i class="el-icon-sort"></i></td>
  43. </tr>
  44. </draggable>
  45. </table>
  46. </div>
  47. </template>
  48. <script>
  49. import draggable from "vuedraggable";
  50. import axios from "axios"
  51. export default {
  52. data() {
  53. return {
  54. tablelist: [],
  55. }
  56. },
  57. mounted(){
  58. this.onGetTableList()
  59. },
  60. methods: {
  61. //拖动中与拖动结束
  62. getdata(evt) {
  63. // console.log(evt.draggedContext.element.id);
  64. },
  65. datadragEnd(evt) {
  66. /* console.log("拖动前的索引 :" + evt.oldIndex);
  67. console.log("拖动后的索引 :" + evt.newIndex);
  68. console.log(this.tags); */
  69. },
  70. onGetTableList() {
  71. axios("url",params)
  72. .then(response => {
  73. if (response.status == 200) {
  74. if (response.data.code == 200) {
  75. let tempData = response.data;
  76. if (tempData.data) {
  77. this.tablelist = tempData.data;
  78. }
  79. } else {
  80. this.$message.error("错误信息:" + response.data.message);
  81. }
  82. } else {
  83. this.$message.error("请求失败:" + response.status);
  84. }
  85. })
  86. .catch(error => {
  87. //console.log(error);
  88. this.$message.error("异常信息:" + error);
  89. })
  90. },
  91. //假删除
  92. onDelete(index, item) {
  93. this.tablelist.splice(index, 1)
  94. },
  95. },
  96. components: {
  97. draggable,
  98. }
  99. }
  100. </script>
  101. <style scoped>
  102. </style>

发表评论

表情:
评论列表 (有 0 条评论,1320人围观)

还没有评论,来说两句吧...

相关阅读

    相关 表格宽度

    问题 普通表格的列是不能够通过用户操作改变宽度, 即动态改变列的宽度。 有时候, 有的列内容是多的,不够显示, 有的列内容是少的,不用太多宽度显示, 但是内容是动态的,