最終功能演示如圖:
我們有個功能是要求這些字段可以進行排序的,我們以前是給每行加個權重字段,通過編輯權重進行排序。泰康這邊覺得直接拖拽更好點。
於是就找了 vue-slicksort 這個插件,感覺還不錯。具體API可以看 文檔 , 樣式就自己按照設計圖修改自己的就可以了
<template> <div> <SortableList v-model="items" lockAxis="y" @input="getArr"> <SortableItem v-for="(item, index) in items" :index="index" :key="index" :item="item"></SortableItem> </SortableList> </div> </template> <script>
// 引入兩個混入
import { ContainerMixin ,ElementMixin } from 'vue-slicksort' import delImg from 'assets/images/del.png' export default { name: "druggen",
// 定義兩個子組件,最好可以單獨寫 components:{ "SortableList":{ mixins: [ContainerMixin], template:` <ul class="slicksortUl"> <li class="slickHead"> <div class="slickFir">字段序號</div> <div class="slickSec">字段名</div> <div class="slickThree">操作</div> </li> <slot /> </ul>` }, "SortableItem":{ mixins: [ElementMixin], props: ['item'], data(){ return { delImg:delImg } }, template:` <li class="slicksortItem"> <div class="slickFir">字段{{index+1}}</div> <div class="slickSec">{{item}}</div> <div class="slickThree"> <img class="delImg" :src="delImg"/> </div> </li> ` } }, data() { return { items: ['等級', '職位', '成本中心', '姓名', '部門'] }; }, methods: { getArr(list){ console.log('newList is ',list) }, } }; </script> <style> </style>