npm install sortablejs --save
import Sortable from 'sortablejs'
//列拖拽
columnDrop() {
const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
this.sortable = Sortable.create(wrapperTr, {
animation: 180,
delay: 0,
onEnd: evt => {
const oldItem = this.dropCol[evt.oldIndex]
this.dropCol.splice(evt.oldIndex, 1)
this.dropCol.splice(evt.newIndex, 0, oldItem)
}
})
}
getDropCol(){
if(this.orders&&this.orders.hasOwnProperty('device')){
let data=JSON.parse(this.orders['device'])
return data
}
return this.getCol()
},
getCol() {
let allCols = [
{prop: "select", label: "选择"},
{prop: "index", label: "序号"},
{prop: "name", label: "设备型号"},
{prop: "cluster.name", label: "集群",type:"cluster"},
{prop: "type", label: "服务器分类"},
{prop: "sn", label: "设备序列号"},
{prop: "manageIp", label: "管理网"},
{prop: "illoIp", label: "ILLO地址"},
{prop: "period", label: "期数"},
{prop: "position", label: "机架位置"},
{prop: "publicIp", label: "公网"},
{prop: "cn2Ip", label: "CN2"},
{prop: "outIp", label: "存储外网"},
{prop: "systemVersion", label: "系统版本"},
{prop: "osVersion", label: "内核版本"},
{prop: "use", label: "用途"},
{prop: "deliveryDate", label: "交付日期",type:"date"},
{prop: "useUser", label: "申请人"},
{prop: "tag", label: "项目名称"},
{prop: "remarks", label: "备注"},
{prop: "computerPosition", label: "机房位置"},
]
if (this.cols && this.cols.hasOwnProperty('device')) {
if (this.cols['device'] === "") {
return allCols;
}
let str = this.cols['device'];
let data = this.utils.str2Arr(str);
let result=[]
result.push({prop: "select", label: "选择"})
result.push({prop: "index", label: "序号"})
data.forEach(function (item) {
allCols.forEach(function (col) {
if (col.prop === item) {
result.push(col);
}
})
})
return result;
} else {
return allCols;
}
},
注:我这里因为配合后端保存了顺序而且支持了列是否显示的功能,所以需要检索this.orders,如果不需要可以直接使用this.gelCol()
mounted() {
this.columnDrop()
this.col=this.getDropCol();
this.dropCol=this.getDropCol();
},
{{ !dropCol[index].type?scope.row[dropCol[index].prop]:getValue(scope.row,dropCol[index].type),dropCol[index].prop }}
操作菜单
硬件信息
历史变更
编辑资产
删除资产
我这里配合type来对特殊字段进行了处理,使用了getValue的方法实现的,好像也可以用v-if来做(毕竟不是专业前端,随便来了= =)
整页代码(非纯前端,有些粗糙见谅= =):
搜索
创建资产
修改显示列
添加历史变更
保存显示顺序
导入
{{ !dropCol[index].type?scope.row[dropCol[index].prop]:getValue(scope.row,dropCol[index].type),dropCol[index].prop }}
操作菜单
硬件信息
历史变更
编辑资产
删除资产
添加历史变更
{{item.message}}
XXX 提交于 {{getDateTime(item.createDate)}}