Browse Source

2025-10-30

生产派工单列表支持拖拽
master
fengyuan_yang 2 months ago
parent
commit
fdc5617b40
  1. 224
      package-lock.json
  2. 2
      package.json
  3. 3
      src/api/shopOrder/shopOrder.js
  4. 275
      src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue

224
package-lock.json

@ -30,6 +30,12 @@
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
@ -41,6 +47,40 @@
"strip-ansi": "^7.0.1"
}
},
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
@ -50,6 +90,23 @@
"ansi-regex": "^6.0.1"
}
},
"strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
}
}
},
"wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@ -60,6 +117,60 @@
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
}
},
"wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
}
}
},
@ -17080,6 +17191,11 @@
"is-plain-obj": "^1.0.0"
}
},
"sortablejs": {
"version": "1.15.6",
"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.6.tgz",
"integrity": "sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A=="
},
"source-list-map": {
"version": "0.1.8",
"resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-0.1.8.tgz",
@ -17346,46 +17462,6 @@
"strip-ansi": "^3.0.0"
}
},
"string-width-cjs": {
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"string.prototype.trim": {
"version": "1.2.10",
"resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
@ -17437,23 +17513,6 @@
"ansi-regex": "^2.0.0"
}
},
"strip-ansi-cjs": {
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
}
}
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz",
@ -19980,57 +20039,6 @@
"strip-ansi": "^3.0.1"
}
},
"wrap-ansi-cjs": {
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",

2
package.json

@ -31,8 +31,8 @@
"npm": "^6.9.0",
"pubsub-js": "^1.9.3",
"qrcode": "^1.5.4",
"sass-loader": "6.0.6",
"sortablejs": "^1.15.6",
"svg-sprite-loader": "3.7.3",
"vue": "2.6.10",
"vue-cookie": "1.1.4",

3
src/api/shopOrder/shopOrder.js

@ -109,3 +109,6 @@ export const resortJobUp = data => createAPI('/scheduling/resortJobUp', 'post',
// 派工单下移
export const resortJobDown = data => createAPI('/scheduling/resortJobDown', 'post', data)
// 批量更新派工单排序号
export const batchUpdateSerialNumber = data => createAPI('/scheduling/batchUpdateSerialNumber', 'post', data)

275
src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue

@ -131,6 +131,7 @@
<script>
import Chooselist from '@/views/modules/common/Chooselist';
import column from '@/views/modules/common/column';/*动态表头*/
import Sortable from 'sortablejs'; //
/*动态表头*/
import {
@ -147,6 +148,7 @@ import {
cancelScheduleWithScheduleQuery,
resortJobUp,
resortJobDown,
batchUpdateSerialNumber,
} from "@/api/shopOrder/shopOrder.js"
export default {
@ -166,6 +168,7 @@ export default {
modelInputFlag: true,
selectList: [],
scheduleRow: {},
draggedItem: null, //
pageData: {
site: this.$store.state.user.site,
username: this.$store.state.user.name,
@ -213,13 +216,13 @@ export default {
{
userId: this.$store.state.user.name,
functionId: 6023,
serialNumber: '6023TableSScheduledSeqNo',
serialNumber: '6023TableSerialNumber',
tableId: "6023Table",
tableName: "查询生产派工单表",
columnProp: "sScheduledSeqNo",
columnProp: "serialNumber",
headerAlign: "center",
align: "right",
columnLabel: "订单优先级",
columnLabel: "序号",
columnHidden: false,
columnImage: false,
columnSortable: false,
@ -246,6 +249,24 @@ export default {
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 6023,
serialNumber: '6023TableSeqNo',
tableId: "6023Table",
tableName: "查询生产派工单表",
columnProp: "seqNo",
headerAlign: "center",
align: "left",
columnLabel: "派工单单号",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 6023,
@ -786,24 +807,6 @@ export default {
fixed: '',
columnWidth: 80
},
{
userId: this.$store.state.user.name,
functionId: 6023,
serialNumber: '6023TableSeqNo',
tableId: "6023Table",
tableName: "查询生产派工单表",
columnProp: "seqNo",
headerAlign: "center",
align: "left",
columnLabel: "派工单单号",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 6023,
@ -979,10 +982,205 @@ export default {
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 180;
//
this.initSortable();
})
},
methods: {
/*初始化拖拽排序*/
initSortable() {
const el = document.querySelector('.el-table__body-wrapper tbody');
if (!el) return;
Sortable.create(el, {
animation: 150, //
handle: 'tr', //
ghostClass: 'sortable-ghost', //
onEnd: this.handleDragEnd, //
});
},
/*拖拽结束处理*/
handleDragEnd(evt) {
const { oldIndex, newIndex } = evt;
console.log('=== 拖拽开始 ===');
console.log('oldIndex:', oldIndex, 'newIndex:', newIndex);
//
if (oldIndex === newIndex) {
return;
}
//
const movedItem = this.dataList[oldIndex];
const targetSerialNumber = this.dataList[newIndex].serialNumber;
console.log('被拖拽项:', movedItem.orderNo, '原序号:', movedItem.serialNumber);
console.log('目标位置序号:', targetSerialNumber);
//
this.draggedItem = {
site: movedItem.site,
orderNo: movedItem.orderNo,
itemNo: movedItem.itemNo,
seqNo: movedItem.seqNo, // 使 seqNo
newSerialNumber: targetSerialNumber //
};
//
this.dataList.splice(oldIndex, 1);
this.dataList.splice(newIndex, 0, movedItem);
console.log('移动后的dataList顺序:');
this.dataList.forEach((item, idx) => {
console.log(` 位置${idx}: ${item.orderNo}-工序${item.itemNo} | SeqNo:${item.seqNo} | serial_number:${item.serialNumber}`);
});
//
this.reassignSerialNumbers(oldIndex, newIndex);
},
/*重新分配序号(插入式排序)*/
reassignSerialNumbers(oldIndex, newIndex) {
// site resourceId
const groupedData = {};
this.dataList.forEach((item) => {
const key = `${item.site}_${item.sResourceID}`;
if (!groupedData[key]) {
groupedData[key] = [];
}
groupedData[key].push(item);
});
//
const updateList = [];
Object.keys(groupedData).forEach(key => {
const group = groupedData[key];
// 1
group.forEach((item, index) => {
const newSerialNumber = index + 1;
//
if (item.serialNumber !== newSerialNumber) {
console.log(`更新序号: ${item.orderNo}-工序${item.itemNo}-SeqNo${item.seqNo}${item.serialNumber} 改为 ${newSerialNumber}`);
updateList.push({
site: item.site,
orderNo: item.orderNo,
itemNo: item.itemNo,
scheduleSeqNo: item.seqNo, // 使 seqNo sScheduledSeqNo
resourceId: item.sResourceID,
serialNumber: newSerialNumber,
});
}
});
});
console.log('需要更新的记录数:', updateList.length);
console.log('更新列表:', updateList);
//
if (updateList.length > 0) {
this.saveSortOrder(updateList);
} else {
console.log('没有需要更新的记录');
}
},
/*保存排序到后端*/
saveSortOrder(updateList) {
console.log('调用后端接口,更新序号...');
console.log('请求数据:', JSON.stringify(updateList, null, 2));
batchUpdateSerialNumber(updateList).then(({data}) => {
console.log('后端响应:', data);
if (data.code === 0) {
this.$message.success('排序保存成功');
console.log('排序保存成功,准备刷新列表');
//
this.refreshAndLocate();
} else {
console.error('排序保存失败:', data.msg);
this.$message.error(data.msg || '排序保存失败');
//
this.getData();
this.draggedItem = null;
}
}).catch(error => {
console.error('后端接口调用异常:', error);
this.$message.error('排序保存失败: ' + error.message);
//
this.getData();
this.draggedItem = null;
});
},
/*刷新列表并定位到拖拽的行*/
refreshAndLocate() {
console.log('开始刷新列表并定位...');
//
this.getData().then(() => {
console.log('数据刷新完成,开始定位');
// DOM
this.$nextTick(() => {
if (this.draggedItem) {
console.log('查找拖拽项:', this.draggedItem);
//
const targetIndex = this.dataList.findIndex(item =>
item.site === this.draggedItem.site &&
item.orderNo === this.draggedItem.orderNo &&
item.itemNo === this.draggedItem.itemNo &&
item.seqNo === this.draggedItem.seqNo
);
console.log('找到目标行索引:', targetIndex);
if (targetIndex !== -1) {
const targetItem = this.dataList[targetIndex];
console.log('目标行信息:', targetItem.orderNo, '序号:', targetItem.serialNumber);
//
this.scheduleRow = targetItem;
//
this.$nextTick(() => {
const table = this.$el.querySelector('.el-table__body-wrapper');
if (table) {
const rows = table.querySelectorAll('.el-table__row');
if (rows[targetIndex]) {
//
rows[targetIndex].scrollIntoView({
behavior: 'smooth',
block: 'center'
});
//
rows[targetIndex].click();
console.log('已定位到目标行');
}
}
});
} else {
console.log('未找到目标行');
}
//
this.draggedItem = null;
}
});
}).catch(error => {
console.error('刷新数据失败:', error);
this.draggedItem = null;
});
},
getBaseData(val) {
if (this.tagNo === 24) {
this.searchData.workCenterNo = val.WorkCenterNo
@ -1019,10 +1217,24 @@ export default {
},
getData() {
searchProductionDispatchList(this.searchData).then(({data}) => {
this.dataList = data.rows
});
this.scheduleRow = null;
//
const searchDataWithTimestamp = {
...this.searchData,
_timestamp: new Date().getTime()
};
return searchProductionDispatchList(searchDataWithTimestamp).then(({data}) => {
this.dataList = data.rows;
console.log('数据加载完成,共', data.rows.length, '条记录');
// 10
console.log('前10条记录的序号:');
data.rows.slice(0, 10).forEach((item, idx) => {
console.log(` ${idx}: ${item.orderNo}-工序${item.itemNo} | SeqNo:${item.seqNo} | serial_number:${item.serialNumber} | S_ScheduledSeqNo:${item.sScheduledSeqNo}`);
});
return data.rows;
});
},
//excel
createExportData() {
@ -1266,4 +1478,19 @@ export default {
.el-textarea__inner {
padding: 5px 5px;
}
/* 拖拽排序样式 */
.sortable-ghost {
opacity: 0.4;
background: #e8f4ff !important;
}
/* 鼠标悬停时显示可拖拽的提示 */
.el-table__body-wrapper tbody tr {
cursor: move;
}
.el-table__body-wrapper tbody tr:hover {
background-color: #f5f7fa;
}
</style>
Loading…
Cancel
Save