umy-ui-table 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +111 -0
- package/lib/button.js +1 -0
- package/lib/icon.js +1 -0
- package/lib/index.js +1 -0
- package/lib/locale/format.js +56 -0
- package/lib/locale/index.js +72 -0
- package/lib/locale/lang/en.js +123 -0
- package/lib/locale/lang/zh-CN.js +119 -0
- package/lib/mixins/locale.js +17 -0
- package/lib/theme-chalk/base.css +0 -0
- package/lib/theme-chalk/button.css +1 -0
- package/lib/theme-chalk/fonts/element-icons.ttf +0 -0
- package/lib/theme-chalk/fonts/element-icons.woff +0 -0
- package/lib/theme-chalk/fonts/iconfont.1785562768224.ttf +0 -0
- package/lib/theme-chalk/fonts/iconfont.1785562768224.woff +0 -0
- package/lib/theme-chalk/fonts/iconfont.1785562768224.woff2 +0 -0
- package/lib/theme-chalk/icon.css +1 -0
- package/lib/theme-chalk/index.css +1 -0
- package/lib/theme-chalk/u-table-column.css +0 -0
- package/lib/theme-chalk/u-table.css +1 -0
- package/lib/theme-chalk/ux-grid.css +1 -0
- package/lib/theme-chalk/ux-table-column.css +0 -0
- package/lib/u-table-column.js +1 -0
- package/lib/u-table.js +1 -0
- package/lib/umd/locale/en.js +139 -0
- package/lib/umd/locale/zh-CN.js +135 -0
- package/lib/umy-ui.common.js +1 -0
- package/lib/utils/svg.js +33 -0
- package/lib/utils/types.js +35 -0
- package/lib/utils/util.js +268 -0
- package/lib/ux-grid.js +1 -0
- package/lib/ux-table-column.js +1 -0
- package/package.json +117 -0
- package/packages/button/index.js +7 -0
- package/packages/button/src/button-group.vue +10 -0
- package/packages/button/src/button.vue +166 -0
- package/packages/checkbox/index.js +8 -0
- package/packages/checkbox/src/checkbox-button.vue +199 -0
- package/packages/checkbox/src/checkbox-group.vue +48 -0
- package/packages/checkbox/src/checkbox.vue +222 -0
- package/packages/checkbox-button/index.js +8 -0
- package/packages/checkbox-group/index.js +8 -0
- package/packages/icon/index.js +7 -0
- package/packages/icon/src/icon.vue +40 -0
- package/packages/input/index.js +2 -0
- package/packages/input/src/calcTextareaHeight.js +104 -0
- package/packages/input/src/input.vue +424 -0
- package/packages/option/index.js +2 -0
- package/packages/pagination/index.js +2 -0
- package/packages/pagination/src/pager.vue +163 -0
- package/packages/pagination/src/pagination.js +386 -0
- package/packages/scrollbar/index.js +8 -0
- package/packages/scrollbar/src/bar.js +92 -0
- package/packages/scrollbar/src/main.js +130 -0
- package/packages/scrollbar/src/util.js +34 -0
- package/packages/select/index.js +2 -0
- package/packages/select/src/navigation-mixin.js +54 -0
- package/packages/select/src/option-group.vue +60 -0
- package/packages/select/src/option.vue +163 -0
- package/packages/select/src/select-dropdown.vue +74 -0
- package/packages/select/src/select.vue +889 -0
- package/packages/table/index.js +8 -0
- package/packages/table/src/config.js +123 -0
- package/packages/table/src/dropdown.js +28 -0
- package/packages/table/src/filter-panel.vue +194 -0
- package/packages/table/src/layout-observer.js +68 -0
- package/packages/table/src/store/current.js +71 -0
- package/packages/table/src/store/expand.js +65 -0
- package/packages/table/src/store/helper.js +37 -0
- package/packages/table/src/store/index.js +145 -0
- package/packages/table/src/store/tree.js +208 -0
- package/packages/table/src/store/watcher.js +448 -0
- package/packages/table/src/table-body.js +493 -0
- package/packages/table/src/table-column.js +381 -0
- package/packages/table/src/table-footer.js +174 -0
- package/packages/table/src/table-header.js +537 -0
- package/packages/table/src/table-layout.js +231 -0
- package/packages/table/src/table.vue +741 -0
- package/packages/table/src/util.js +256 -0
- package/packages/tag/index.js +8 -0
- package/packages/tag/src/tag.vue +58 -0
- package/packages/tools/directives/mousewheel.js +18 -0
- package/packages/tools/directives/repeat-click.js +24 -0
- package/packages/tools/locale/format.js +46 -0
- package/packages/tools/locale/index.js +48 -0
- package/packages/tools/locale/lang/en.js +120 -0
- package/packages/tools/locale/lang/zh-CN.js +116 -0
- package/packages/tools/mixins/emitter.js +33 -0
- package/packages/tools/mixins/focus.js +9 -0
- package/packages/tools/mixins/locale.js +9 -0
- package/packages/tools/mixins/migrating.js +54 -0
- package/packages/tools/transitions/collapse-transition.js +77 -0
- package/packages/tools/utils/after-leave.js +27 -0
- package/packages/tools/utils/aria-dialog.js +90 -0
- package/packages/tools/utils/aria-utils.js +122 -0
- package/packages/tools/utils/clickoutside.js +76 -0
- package/packages/tools/utils/date-util.js +292 -0
- package/packages/tools/utils/date.js +368 -0
- package/packages/tools/utils/dom.js +227 -0
- package/packages/tools/utils/menu/aria-menubar.js +14 -0
- package/packages/tools/utils/menu/aria-menuitem.js +49 -0
- package/packages/tools/utils/menu/aria-submenu.js +59 -0
- package/packages/tools/utils/merge.js +15 -0
- package/packages/tools/utils/popper.js +1276 -0
- package/packages/tools/utils/popup/index.js +218 -0
- package/packages/tools/utils/popup/popup-manager.js +194 -0
- package/packages/tools/utils/resize-event.js +35 -0
- package/packages/tools/utils/scroll-into-view.js +27 -0
- package/packages/tools/utils/scrollbar-width.js +29 -0
- package/packages/tools/utils/shared.js +7 -0
- package/packages/tools/utils/svg.js +1 -0
- package/packages/tools/utils/types.js +28 -0
- package/packages/tools/utils/util.js +241 -0
- package/packages/tools/utils/vdom.js +5 -0
- package/packages/tools/utils/vue-popper.js +198 -0
- package/packages/tooltip/index.js +8 -0
- package/packages/tooltip/src/main.js +241 -0
- package/packages/u-table/index.js +4 -0
- package/packages/u-table/revise-el-table-mixins/index.js +10 -0
- package/packages/u-table/revise-el-table-mixins/table-extend.js +60 -0
- package/packages/u-table/revise-el-table-mixins/table.mixins.js +261 -0
- package/packages/u-table/revise-el-table-mixins/virtual-table-body-render.js +132 -0
- package/packages/u-table/src/u-table.vue +248 -0
- package/packages/u-table/u-table-mixins/index.js +483 -0
- package/packages/u-table/u-table-tree-mixins/methods.js +120 -0
- package/packages/u-table/u-table-tree-mixins/u-table-tree-mixins.js +161 -0
- package/packages/u-table-column/index.js +8 -0
- package/packages/utils/common.js +27 -0
- package/packages/ux-grid/index.js +6 -0
- package/packages/ux-grid/mixins/index.js +707 -0
- package/packages/ux-grid/src/interceptor.js +6 -0
- package/packages/ux-grid/src/ux-grid.vue +301 -0
- package/packages/ux-table-column/index.js +10 -0
- package/tools/locale/format.js +46 -0
- package/tools/locale/index.js +54 -0
- package/tools/locale/lang/en.js +120 -0
- package/tools/locale/lang/zh-CN.js +116 -0
- package/tools/mixins/locale.js +9 -0
- package/tools/utils/svg.js +1 -0
- package/tools/utils/types.js +28 -0
- package/tools/utils/util.js +241 -0
|
@@ -0,0 +1,707 @@
|
|
|
1
|
+
import { isArrayFn } from "../../utils/common";
|
|
2
|
+
export default {
|
|
3
|
+
props: {
|
|
4
|
+
beautifyTable: { default: false, type: Boolean }, // 美化表格,修改了样式
|
|
5
|
+
showDialogIcon: { default: true, type: Boolean }, // 是否显示操作字段的上下移动按钮(侧滑框)
|
|
6
|
+
moveDownIcon: { default: "", type: String }, // 下移按钮的图标(侧滑框)
|
|
7
|
+
moveUpIcon: { default: "", type: String }, // 上移按钮的图标(侧滑框)
|
|
8
|
+
showOverflow: { type: [Boolean, String], default: null },
|
|
9
|
+
showHeaderOverflow: { type: [Boolean, String], default: null },
|
|
10
|
+
showFooterOverflow: { type: [Boolean, String], default: null },
|
|
11
|
+
data: { type: Array, default: () => [] }, // 表格数据
|
|
12
|
+
columns: Array,
|
|
13
|
+
height: [String, Number],
|
|
14
|
+
maxHeight: [String, Number],
|
|
15
|
+
scrollY: {
|
|
16
|
+
type: Object,
|
|
17
|
+
default: () => {
|
|
18
|
+
return { enabled: true, gt: 100, oSize: 0 };
|
|
19
|
+
},
|
|
20
|
+
}, // 纵向虚拟滚动配置(vxe3 需显式 enabled:true,行数超过 gt 时启用)
|
|
21
|
+
scrollX: {
|
|
22
|
+
type: Object,
|
|
23
|
+
default: () => {
|
|
24
|
+
return { enabled: true, gt: 24, oSize: 0 };
|
|
25
|
+
},
|
|
26
|
+
}, // 横向虚拟滚动配置(列数超过 gt 时启用)
|
|
27
|
+
widthResize: Boolean,
|
|
28
|
+
mergeCells: Array,
|
|
29
|
+
validConfig: Object, // 校验配置项
|
|
30
|
+
rules: Object, // 校验规则配置项
|
|
31
|
+
checkboxConfig: Object, // 复选框配置项
|
|
32
|
+
expandConfig: Object, // 展开行配置项
|
|
33
|
+
editConfig: [Boolean, Object], // 编辑配置项
|
|
34
|
+
treeConfig: [Boolean, Object], // 树形结构配置项
|
|
35
|
+
sortConfig: Object, // 排序相关的配置
|
|
36
|
+
indexConfig: Object, // 序号
|
|
37
|
+
keyboardConfig: Object, // 键盘按键
|
|
38
|
+
mouseConfig: Object,
|
|
39
|
+
keepSource: Boolean,
|
|
40
|
+
dialogData: { type: Array, default: () => [] }, // 选择显示字段数组
|
|
41
|
+
stripe: { default: false, type: Boolean }, // 是否为斑马纹
|
|
42
|
+
size: { default: null, type: String }, // Table 的尺寸
|
|
43
|
+
loading: { default: false, type: Boolean }, // 是否显示加载中遮罩
|
|
44
|
+
showHeader: { default: true, type: Boolean }, // 是否显示表头
|
|
45
|
+
emptyText: { default: "暂无数据", type: String }, // 空数据时显示的文本内容
|
|
46
|
+
border: { default: true, type: [Boolean, String] }, // 是否显示纵向边框
|
|
47
|
+
showSummary: { default: false, type: Boolean }, // 是否需要合计
|
|
48
|
+
summaryMethod: Function, // 自定义的合计计算方法
|
|
49
|
+
fieldSort: { default: true, type: Boolean }, // 字段排序
|
|
50
|
+
rowKey: Boolean, // 是否需要为每一行的 VNode 设置 key 属性(非特殊情况下没必要设置)
|
|
51
|
+
columnKey: Boolean, // 是否需要为每一列的 VNode 设置 key 属性(非特殊情况下不需要使用, 常用于拖拽列)
|
|
52
|
+
rowId: String, // 自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)
|
|
53
|
+
highlightCurrentRow: { default: true, type: Boolean }, // 是否要高亮当前行
|
|
54
|
+
showAmend: { default: false, type: Boolean }, // 是否显示修改字段名按钮(侧滑框)
|
|
55
|
+
amendBtnIcon: { default: "", type: String }, // 修改字段按钮的图标(侧滑框)
|
|
56
|
+
fieldTitle: { default: "选择显示字段", type: String }, // 弹框的标题(侧滑框)
|
|
57
|
+
spanMethod: Function, // 合并行或列的计算方法
|
|
58
|
+
rowClassName: [String, Function], // 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。
|
|
59
|
+
rowStyle: [Object, Function], // 行的 style 的回调方法
|
|
60
|
+
cellClassName: [String, Function], // 行单元格的 className 的回调方法
|
|
61
|
+
cellStyle: [Object, Function], // 行单元格的 style 的回调方法
|
|
62
|
+
headerRowClassName: [String, Function], // 表头行的 className 的回调方法
|
|
63
|
+
headerRowStyle: [Object, Function], // 表头行的 style 的回调方法
|
|
64
|
+
headerCellClassName: [String, Function], // 表头单元格的 className 的回调方法
|
|
65
|
+
headerCellStyle: [Object, Function], // 表头单元格的 style 的回调方法
|
|
66
|
+
paginationShow: { default: false, type: Boolean }, // 是否需要分页器
|
|
67
|
+
total: { default: 0, type: Number }, // 总条数
|
|
68
|
+
pagerCount: { default: 5, type: Number }, // 页码按钮的数量,当总页数超过该值时会折叠
|
|
69
|
+
pageSize: { default: 10, type: Number }, // 每页条数
|
|
70
|
+
currentPage: { default: 1, type: Number }, // 当前页
|
|
71
|
+
pageSizes: { default: () => [10, 20, 30, 50], type: Array }, // 每页显示个数选择器的选项设置
|
|
72
|
+
layout: {
|
|
73
|
+
default: "total, sizes, prev, pager, next, jumper",
|
|
74
|
+
type: String,
|
|
75
|
+
}, // 分页组件布局,子组件名用逗号分隔
|
|
76
|
+
},
|
|
77
|
+
methods: {
|
|
78
|
+
// 分页器的事件
|
|
79
|
+
handleSizeChange(val) {
|
|
80
|
+
this.newPageSize = val;
|
|
81
|
+
this.$emit("handlePageSize", {
|
|
82
|
+
size: this.newPageSize,
|
|
83
|
+
page: this.newcurrentPage,
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
handleCurrentChange(val) {
|
|
87
|
+
this.newcurrentPage = val;
|
|
88
|
+
this.$emit("handlePageSize", {
|
|
89
|
+
size: this.newPageSize,
|
|
90
|
+
page: this.newcurrentPage,
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
// 打开自定义字段框
|
|
94
|
+
plDialogOpens() {
|
|
95
|
+
this._times = null;
|
|
96
|
+
// 打开时同步一次最新 dialogData(替代 deep watcher,避免每次变更都深拷贝)
|
|
97
|
+
this.newDialogData = JSON.parse(JSON.stringify(this.dialogData));
|
|
98
|
+
this.$refs.plDialog.style.width = 300 + "px";
|
|
99
|
+
this._times = setTimeout(() => {
|
|
100
|
+
this.plDialogFals = true;
|
|
101
|
+
}, 200);
|
|
102
|
+
// 创建节点(主要用来弹出menu窗口时,不让起点击外面)
|
|
103
|
+
this.aBox = document.createElement("div");
|
|
104
|
+
this.aBox.className = "modal-backdrop";
|
|
105
|
+
this.aBox.style.display = "block";
|
|
106
|
+
this.aBox.onclick = () => {
|
|
107
|
+
this.closeModal();
|
|
108
|
+
};
|
|
109
|
+
document.body.appendChild(this.aBox);
|
|
110
|
+
},
|
|
111
|
+
// 关闭自定义字段框(取消选择)
|
|
112
|
+
closeModal() {
|
|
113
|
+
this.plDialogFals = false;
|
|
114
|
+
clearTimeout(this._times);
|
|
115
|
+
this.$refs.plDialog.style.width = 0 + "px";
|
|
116
|
+
this.aBox.style.display = "none";
|
|
117
|
+
this.clearNode();
|
|
118
|
+
this.newDialogData = JSON.parse(JSON.stringify(this.dialogData));
|
|
119
|
+
},
|
|
120
|
+
// 确认按钮
|
|
121
|
+
confirmField() {
|
|
122
|
+
this.$emit("show-field", this.newDialogData);
|
|
123
|
+
this.plDialogFals = false;
|
|
124
|
+
clearTimeout(this._times);
|
|
125
|
+
this.$refs.plDialog.style.width = 0 + "px";
|
|
126
|
+
this.aBox.style.display = "none";
|
|
127
|
+
this.clearNode();
|
|
128
|
+
},
|
|
129
|
+
// 重置按钮
|
|
130
|
+
reset() {
|
|
131
|
+
this.$emit("reset", this.newDialogData);
|
|
132
|
+
this.plDialogFals = false;
|
|
133
|
+
clearTimeout(this._times);
|
|
134
|
+
this.$refs.plDialog.style.width = 0 + "px";
|
|
135
|
+
this.aBox.style.display = "none";
|
|
136
|
+
this.clearNode();
|
|
137
|
+
},
|
|
138
|
+
// 修改字段名按钮事件
|
|
139
|
+
amendField(item, index) {
|
|
140
|
+
this.$emit("amend-field", item, index);
|
|
141
|
+
},
|
|
142
|
+
// 删除节点
|
|
143
|
+
clearNode() {
|
|
144
|
+
// 删除节点
|
|
145
|
+
let parent = this.aBox ? this.aBox.parentNode : "";
|
|
146
|
+
parent && parent.removeChild(this.aBox);
|
|
147
|
+
let doms = document.getElementsByClassName("modal-backdrop");
|
|
148
|
+
if (doms.length > 0) {
|
|
149
|
+
document.body.removeChild(doms[0]);
|
|
150
|
+
}
|
|
151
|
+
this.aBox = null;
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
// 表格方法
|
|
155
|
+
|
|
156
|
+
// 合计的方法summaryMethod
|
|
157
|
+
footerMethod(param) {
|
|
158
|
+
if (typeof this.summaryMethod === "function" && this.summaryMethod) {
|
|
159
|
+
return this.summaryMethod(param);
|
|
160
|
+
} else {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
// 合并行或列的计算方法
|
|
165
|
+
arraySpanMethod(objs) {
|
|
166
|
+
// 是否有条件开启合并列
|
|
167
|
+
if (typeof this.spanMethod === "function") {
|
|
168
|
+
return this.spanMethod(objs);
|
|
169
|
+
} else {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
// 用于单选表格,设定某一行为选中行
|
|
174
|
+
setCurrentRow(row) {
|
|
175
|
+
if (row) {
|
|
176
|
+
this.$refs.singleTable.setCurrentRow(row);
|
|
177
|
+
} else {
|
|
178
|
+
this.$refs.singleTable.setCurrentRow();
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
// 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
|
|
182
|
+
toggleRowSelection(rows) {
|
|
183
|
+
if (rows && isArrayFn(rows)) {
|
|
184
|
+
this.newtoggleRowSelections(rows);
|
|
185
|
+
} else {
|
|
186
|
+
console.error("数据格式需要一个数组");
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
// 用于多选表格,切换某一行的选中状态
|
|
190
|
+
newtoggleRowSelections(datas) {
|
|
191
|
+
if (datas.length > 0 && this.$refs.singleTable) {
|
|
192
|
+
datas.forEach((item) => {
|
|
193
|
+
if (item.selected) {
|
|
194
|
+
this.$refs.singleTable.setCheckboxRow(item.row, item.selected);
|
|
195
|
+
} else if (item.selected === false) {
|
|
196
|
+
this.$refs.singleTable.setCheckboxRow(item.row, false);
|
|
197
|
+
} else if (item.selected === undefined) {
|
|
198
|
+
this.$refs.singleTable.toggleCheckboxRow(item.row);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
// 当选择项发生变化时会触发该事件(仅在有监听者时取值,避免无监听时全表扫描)
|
|
202
|
+
if (this.$listeners["selection-change"]) {
|
|
203
|
+
const data = this.$refs.singleTable.getCheckboxRecords();
|
|
204
|
+
this.$emit("selection-change", data);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
// 用于多选表格,切换所有行的选中状态
|
|
209
|
+
toggleAllSelection(checked = true) {
|
|
210
|
+
if (this.$refs.singleTable) {
|
|
211
|
+
this.$refs.singleTable.setAllCheckboxRow(checked);
|
|
212
|
+
// 当选择项发生变化时会触发该事件(仅在有监听者时取值)
|
|
213
|
+
if (this.$listeners["selection-change"]) {
|
|
214
|
+
const data = this.$refs.singleTable.getCheckboxRecords();
|
|
215
|
+
this.$emit("selection-change", data);
|
|
216
|
+
}
|
|
217
|
+
} else {
|
|
218
|
+
console.error("toggleAllSelection方法为找到,可能表格未加载完毕");
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
// 用于多选表格,清空用户的选择
|
|
222
|
+
clearSelection() {
|
|
223
|
+
if (this.$refs.singleTable) {
|
|
224
|
+
this.$refs.singleTable.clearCheckboxRow();
|
|
225
|
+
// 当选择项发生变化时会触发该事件(仅在有监听者时取值)
|
|
226
|
+
if (this.$listeners["selection-change"]) {
|
|
227
|
+
const data = this.$refs.singleTable.getCheckboxRecords();
|
|
228
|
+
this.$emit("selection-change", data);
|
|
229
|
+
}
|
|
230
|
+
} else {
|
|
231
|
+
console.error("clearSelection方法为找到,可能表格未加载完毕");
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
// 用于清空排序条件,数据会恢复成未排序的状态
|
|
235
|
+
clearSort() {
|
|
236
|
+
this.$refs.singleTable.clearSort();
|
|
237
|
+
},
|
|
238
|
+
// 不传入参数时用于清空所有过滤条件,数据会恢复成未过滤的状态
|
|
239
|
+
clearFilter(columnKey) {
|
|
240
|
+
this.$refs.singleTable.clearFilter(columnKey);
|
|
241
|
+
},
|
|
242
|
+
// 根据列明找出列
|
|
243
|
+
getColumnByField(field) {
|
|
244
|
+
return this.$refs.singleTable.getColumnByField(field);
|
|
245
|
+
},
|
|
246
|
+
// 手动对 Table 进行排序
|
|
247
|
+
sort(prop, order) {
|
|
248
|
+
this.$refs.singleTable.sort(prop, order);
|
|
249
|
+
},
|
|
250
|
+
// 对 Table 进行重新布局。当 Table 或其祖先元素由隐藏切换为显示时,可能需要调用此方法
|
|
251
|
+
doLayout() {
|
|
252
|
+
this.$refs.singleTable.recalculate();
|
|
253
|
+
},
|
|
254
|
+
// 让表格滚动条回到顶部,和左侧
|
|
255
|
+
pagingScrollTopLeft(top = 0, left = 0) {
|
|
256
|
+
this.$refs.singleTable.scrollTo(left, top);
|
|
257
|
+
},
|
|
258
|
+
// 则滚动到对应的行
|
|
259
|
+
scrollToRow(row) {
|
|
260
|
+
this.$refs.singleTable.scrollToRow(row);
|
|
261
|
+
},
|
|
262
|
+
// 设置表格数据
|
|
263
|
+
reloadData(data) {
|
|
264
|
+
return this.$refs.singleTable.reloadData(data);
|
|
265
|
+
},
|
|
266
|
+
loadData(data) {
|
|
267
|
+
return this.$refs.singleTable.loadData(data);
|
|
268
|
+
},
|
|
269
|
+
// 设置列数据
|
|
270
|
+
reloadColumn(data) {
|
|
271
|
+
return this.$refs.singleTable.reloadColumn(data);
|
|
272
|
+
},
|
|
273
|
+
loadColumn(data) {
|
|
274
|
+
return this.$refs.singleTable.loadColumn(data);
|
|
275
|
+
},
|
|
276
|
+
refreshColumn() {
|
|
277
|
+
this.$refs.singleTable.refreshColumn();
|
|
278
|
+
},
|
|
279
|
+
// 激活编辑状态
|
|
280
|
+
setActiveRow(row) {
|
|
281
|
+
this.$refs.singleTable.setActiveRow(row);
|
|
282
|
+
},
|
|
283
|
+
// 激活单元格编辑
|
|
284
|
+
setActiveCell(row, field) {
|
|
285
|
+
this.$refs.singleTable.setActiveCell(row, field);
|
|
286
|
+
},
|
|
287
|
+
// 往表格插入临时数据(不支持树结构),从指定位置插入一行或多行;第二个参数:row 指定位置、null从第一行插入、-1 从最后插入
|
|
288
|
+
insertRow(records, row) {
|
|
289
|
+
return this.$refs.singleTable.insertAt(records, row);
|
|
290
|
+
},
|
|
291
|
+
// 用于 edit-config,获取插入的临时数据
|
|
292
|
+
getInsertRecords() {
|
|
293
|
+
return this.$refs.singleTable.getInsertRecords();
|
|
294
|
+
},
|
|
295
|
+
// 用于 type=checkbox,获取已选中的行数据
|
|
296
|
+
getCheckboxRecords() {
|
|
297
|
+
return this.$refs.singleTable.getCheckboxRecords();
|
|
298
|
+
},
|
|
299
|
+
// 获取表格数据集(获取插入)
|
|
300
|
+
getRecordset() {
|
|
301
|
+
const { insertRecords } = this.$refs.singleTable.getRecordset();
|
|
302
|
+
return insertRecords;
|
|
303
|
+
},
|
|
304
|
+
// 返回一个plx-table实例
|
|
305
|
+
tableExample() {
|
|
306
|
+
if (this.$refs.singleTable) {
|
|
307
|
+
return this.$refs.singleTable;
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
// 获取表格列
|
|
311
|
+
getTableColumn() {
|
|
312
|
+
return this.$refs.singleTable.getTableColumn();
|
|
313
|
+
},
|
|
314
|
+
// 获取表格列对应的索引值
|
|
315
|
+
getColumnIndex(column) {
|
|
316
|
+
return this.$refs.singleTable.getColumnIndex(column);
|
|
317
|
+
},
|
|
318
|
+
// 更新列状态
|
|
319
|
+
updateStatus(scope) {
|
|
320
|
+
this.$refs.singleTable.updateStatus(scope);
|
|
321
|
+
},
|
|
322
|
+
// 删除指定行数据
|
|
323
|
+
remove(rows) {
|
|
324
|
+
this.$refs.singleTable.remove(rows);
|
|
325
|
+
},
|
|
326
|
+
// 删除复选框选中的行数据(不支持树结构)
|
|
327
|
+
removeCheckboxRow() {
|
|
328
|
+
this.$refs.singleTable.removeCheckboxRow();
|
|
329
|
+
},
|
|
330
|
+
// 获取已经修改的数据
|
|
331
|
+
getUpdateRecords() {
|
|
332
|
+
return this.$refs.singleTable.getUpdateRecords();
|
|
333
|
+
},
|
|
334
|
+
// 行数据是否改变
|
|
335
|
+
isUpdateByRow(row) {
|
|
336
|
+
return this.$refs.singleTable.isUpdateByRow(row);
|
|
337
|
+
},
|
|
338
|
+
// 判断复选框行数据是否被选中
|
|
339
|
+
isCheckedByCheckboxRow(row) {
|
|
340
|
+
return this.$refs.singleTable.isCheckedByCheckboxRow(row);
|
|
341
|
+
},
|
|
342
|
+
// 更新行数据
|
|
343
|
+
reloadRow(rows, record, field) {
|
|
344
|
+
return this.$refs.singleTable.reloadRow(rows, record, field);
|
|
345
|
+
},
|
|
346
|
+
// 行是否激活状态
|
|
347
|
+
isActiveByRow(row) {
|
|
348
|
+
return this.$refs.singleTable.isActiveByRow(row);
|
|
349
|
+
},
|
|
350
|
+
// 手动清除单元格激活状态
|
|
351
|
+
clearActived() {
|
|
352
|
+
return this.$refs.singleTable.clearActived();
|
|
353
|
+
},
|
|
354
|
+
//还原表格数据
|
|
355
|
+
revertData(row) {
|
|
356
|
+
return this.$refs.singleTable.revertData(row);
|
|
357
|
+
},
|
|
358
|
+
// 手动更新尾部
|
|
359
|
+
updateFooter() {
|
|
360
|
+
return this.$refs.singleTable.updateFooter();
|
|
361
|
+
},
|
|
362
|
+
// 用于 filters,修改筛选列表
|
|
363
|
+
setFilter(column, options) {
|
|
364
|
+
return this.$refs.singleTable.setFilter(column, options);
|
|
365
|
+
},
|
|
366
|
+
// 手动处理数据(对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到)
|
|
367
|
+
updateData() {
|
|
368
|
+
return this.$refs.singleTable.updateData();
|
|
369
|
+
},
|
|
370
|
+
// 用于 type=expand,切换展开行的状态
|
|
371
|
+
toggleRowExpand(row) {
|
|
372
|
+
return this.$refs.singleTable.toggleRowExpand(row);
|
|
373
|
+
},
|
|
374
|
+
// 用于 expand-config,设置展开行,二个参数设置这一行展开与否
|
|
375
|
+
setRowExpand(rows, checked) {
|
|
376
|
+
return this.$refs.singleTable.setRowExpand(rows, checked);
|
|
377
|
+
},
|
|
378
|
+
// 用于 expand-config,设置所有行的展开与否(如果是关闭所有行,可以使用 clearRowExpand 快速清除)
|
|
379
|
+
setAllRowExpand(checked) {
|
|
380
|
+
return this.$refs.singleTable.setAllRowExpand(checked);
|
|
381
|
+
},
|
|
382
|
+
// 用于 type=expand,手动清空展开行状态,数据会恢复成未展开的状态
|
|
383
|
+
clearRowExpand() {
|
|
384
|
+
return this.$refs.singleTable.clearRowExpand();
|
|
385
|
+
},
|
|
386
|
+
// 展开所有
|
|
387
|
+
setAllTreeExpand(checked) {
|
|
388
|
+
return this.$refs.singleTable.setAllTreeExpand(checked);
|
|
389
|
+
},
|
|
390
|
+
// 关闭展开
|
|
391
|
+
clearTreeExpand() {
|
|
392
|
+
return this.$refs.singleTable.clearTreeExpand();
|
|
393
|
+
},
|
|
394
|
+
// 获取已展开
|
|
395
|
+
getTreeExpandRecords() {
|
|
396
|
+
return this.$refs.singleTable.getTreeExpandRecords();
|
|
397
|
+
},
|
|
398
|
+
// 切换展开树形节点的状态
|
|
399
|
+
toggleTreeExpand(row) {
|
|
400
|
+
return this.$refs.singleTable.toggleTreeExpand(row);
|
|
401
|
+
},
|
|
402
|
+
// 设置展开树形节点,二个参数设置这一行展开与否
|
|
403
|
+
setTreeExpand(rows, checked) {
|
|
404
|
+
return this.$refs.singleTable.setTreeExpand(rows, checked);
|
|
405
|
+
},
|
|
406
|
+
// 判断当前节点是否展开
|
|
407
|
+
isTreeExpandByRow(row) {
|
|
408
|
+
return this.$refs.singleTable.isTreeExpandByRow(row);
|
|
409
|
+
},
|
|
410
|
+
// 刷新滚动条
|
|
411
|
+
refreshScroll() {
|
|
412
|
+
this.$refs.singleTable.refreshScroll();
|
|
413
|
+
},
|
|
414
|
+
async validate(rows) {
|
|
415
|
+
if (rows) {
|
|
416
|
+
return await this.$refs.singleTable.validate(rows).catch((err) => err);
|
|
417
|
+
} else {
|
|
418
|
+
return await this.$refs.singleTable.validate().catch((err) => err);
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
async fullValidate(rows) {
|
|
422
|
+
if (rows) {
|
|
423
|
+
return await this.$refs.singleTable
|
|
424
|
+
.fullValidate(rows)
|
|
425
|
+
.catch((err) => err);
|
|
426
|
+
} else {
|
|
427
|
+
return await this.$refs.singleTable.fullValidate().catch((err) => err);
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
clearValidate() {
|
|
431
|
+
return this.$refs.singleTable.clearValidate();
|
|
432
|
+
},
|
|
433
|
+
// 获取表格数据
|
|
434
|
+
getTableData() {
|
|
435
|
+
return this.$refs.singleTable.getTableData();
|
|
436
|
+
},
|
|
437
|
+
getRowById(rowid) {
|
|
438
|
+
return this.$refs.singleTable.getRowById(rowid);
|
|
439
|
+
},
|
|
440
|
+
|
|
441
|
+
// 表格事件
|
|
442
|
+
|
|
443
|
+
// 表格滚动时会触发该事件
|
|
444
|
+
tableBodyScroll({ type, fixed, scrollTop, scrollLeft, isX, isY, $event }) {
|
|
445
|
+
let obj = { type, fixed, scrollTop, scrollLeft, isX, isY };
|
|
446
|
+
// 当表格滚动暴露滚动事件
|
|
447
|
+
this.$emit("table-body-scroll", obj, $event);
|
|
448
|
+
},
|
|
449
|
+
// 当用户手动勾选全选 Checkbox 时触发的事件 selection
|
|
450
|
+
selectAll(params) {
|
|
451
|
+
// vxe 事件参数里的 records 是惰性 getter,仅在有监听者时才取值,避免每次全选都全表扫描
|
|
452
|
+
if (
|
|
453
|
+
this.$listeners["select-all"] ||
|
|
454
|
+
this.$listeners["selection-change"]
|
|
455
|
+
) {
|
|
456
|
+
const data =
|
|
457
|
+
params && typeof params.records === "function"
|
|
458
|
+
? params.records()
|
|
459
|
+
: this.$refs.singleTable.getCheckboxRecords();
|
|
460
|
+
this.$emit("select-all", data);
|
|
461
|
+
// 当选择项发生变化时会触发该事件
|
|
462
|
+
this.$emit("selection-change", data);
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
// 当用户手动勾选数据行的 Checkbox 时触发的事件
|
|
466
|
+
plSelect(params) {
|
|
467
|
+
const { row, records } = params || {};
|
|
468
|
+
// vxe 事件参数里的 records 是惰性 getter,仅在有监听者时才取值,避免每次勾选都全表扫描
|
|
469
|
+
if (this.$listeners["select"] || this.$listeners["selection-change"]) {
|
|
470
|
+
const data =
|
|
471
|
+
typeof records === "function"
|
|
472
|
+
? records()
|
|
473
|
+
: this.$refs.singleTable.getCheckboxRecords();
|
|
474
|
+
this.$emit("select", data, row);
|
|
475
|
+
// 当选择项发生变化时会触发该事件
|
|
476
|
+
this.$emit("selection-change", data);
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
// 只对 type=radio 有效,当手动勾选并且值发生改变时触发的事件
|
|
480
|
+
radioChange({
|
|
481
|
+
row,
|
|
482
|
+
rowIndex,
|
|
483
|
+
$rowIndex,
|
|
484
|
+
column,
|
|
485
|
+
columnIndex,
|
|
486
|
+
$columnIndex,
|
|
487
|
+
cell,
|
|
488
|
+
}) {
|
|
489
|
+
this.$emit("radio-change", row, column);
|
|
490
|
+
},
|
|
491
|
+
// 当表格的排序条件发生变化的时候会触发该事件
|
|
492
|
+
sortChange({ column, property, order }) {
|
|
493
|
+
let objs = { column, prop: property, order };
|
|
494
|
+
this.$emit("sort-change", objs);
|
|
495
|
+
},
|
|
496
|
+
// 当表格的当前行发生变化的时候会触发该事件
|
|
497
|
+
currentChange({ row }) {
|
|
498
|
+
this.$emit("current-change", row);
|
|
499
|
+
},
|
|
500
|
+
// 当用户对某一行展开或者关闭的时候会触发该事件
|
|
501
|
+
expChang({
|
|
502
|
+
expanded,
|
|
503
|
+
row,
|
|
504
|
+
rowIndex,
|
|
505
|
+
$rowIndex,
|
|
506
|
+
column,
|
|
507
|
+
columnIndex,
|
|
508
|
+
$columnIndex,
|
|
509
|
+
$event,
|
|
510
|
+
}) {
|
|
511
|
+
this.$emit("expand-change", {
|
|
512
|
+
expanded,
|
|
513
|
+
row,
|
|
514
|
+
rowIndex,
|
|
515
|
+
$rowIndex,
|
|
516
|
+
column,
|
|
517
|
+
columnIndex,
|
|
518
|
+
$columnIndex,
|
|
519
|
+
$event,
|
|
520
|
+
});
|
|
521
|
+
},
|
|
522
|
+
// 当表格的筛选条件发生变化的时候会触发该事件
|
|
523
|
+
filterChange({ column, property, values, datas, filters, $event }) {
|
|
524
|
+
this.$emit("filter-change", {
|
|
525
|
+
column,
|
|
526
|
+
property,
|
|
527
|
+
values,
|
|
528
|
+
datas,
|
|
529
|
+
filters,
|
|
530
|
+
$event,
|
|
531
|
+
});
|
|
532
|
+
},
|
|
533
|
+
// 当单元格 hover 进入时会触发该事件
|
|
534
|
+
cellMouseEnter({
|
|
535
|
+
row,
|
|
536
|
+
rowIndex,
|
|
537
|
+
$rowIndex,
|
|
538
|
+
column,
|
|
539
|
+
columnIndex,
|
|
540
|
+
$columnIndex,
|
|
541
|
+
cell,
|
|
542
|
+
$event,
|
|
543
|
+
}) {
|
|
544
|
+
this.$emit("cell-mouse-enter", row, column, cell, $event);
|
|
545
|
+
},
|
|
546
|
+
// 当单元格 hover 退出时会触发该事件
|
|
547
|
+
cellMouseLeave({
|
|
548
|
+
row,
|
|
549
|
+
rowIndex,
|
|
550
|
+
$rowIndex,
|
|
551
|
+
column,
|
|
552
|
+
columnIndex,
|
|
553
|
+
$columnIndex,
|
|
554
|
+
cell,
|
|
555
|
+
$event,
|
|
556
|
+
}) {
|
|
557
|
+
this.$emit("cell-mouse-leave", row, column, cell, $event);
|
|
558
|
+
},
|
|
559
|
+
// 当某个单元格被点击时会触发该事件
|
|
560
|
+
cellClick({
|
|
561
|
+
row,
|
|
562
|
+
rowIndex,
|
|
563
|
+
$rowIndex,
|
|
564
|
+
column,
|
|
565
|
+
columnIndex,
|
|
566
|
+
$columnIndex,
|
|
567
|
+
cell,
|
|
568
|
+
$event,
|
|
569
|
+
}) {
|
|
570
|
+
this.$emit("cell-click", row, column, cell, $event);
|
|
571
|
+
// row-click 当某一行被点击时会触发该事件 row, event, column
|
|
572
|
+
// 只有当点击的单元格不是复选框才触发行事件!
|
|
573
|
+
if (column.type !== "checkbox") {
|
|
574
|
+
this.$emit("row-click", row, column, $event);
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
// 当某个单元格被双击击时会触发该事件
|
|
578
|
+
cellDblclick({
|
|
579
|
+
row,
|
|
580
|
+
rowIndex,
|
|
581
|
+
$rowIndex,
|
|
582
|
+
column,
|
|
583
|
+
columnIndex,
|
|
584
|
+
$columnIndex,
|
|
585
|
+
cell,
|
|
586
|
+
$event,
|
|
587
|
+
}) {
|
|
588
|
+
this.$emit("cell-dblclick", row, column, cell, $event);
|
|
589
|
+
// 当某一行被双击时会触发该事件
|
|
590
|
+
this.$emit("row-dblclick", row, column, $event);
|
|
591
|
+
},
|
|
592
|
+
// 单元格被鼠标右键点击时触发该事件
|
|
593
|
+
rowContextmenu({ type, row, rowIndex, column, columnIndex, cell, $event }) {
|
|
594
|
+
this.$emit("row-contextmenu", row, column, $event);
|
|
595
|
+
},
|
|
596
|
+
// 当某一列的表头被点击时会触发该事件
|
|
597
|
+
headerClick({
|
|
598
|
+
triggerResizable,
|
|
599
|
+
triggerSort,
|
|
600
|
+
triggerFilter,
|
|
601
|
+
$rowIndex,
|
|
602
|
+
column,
|
|
603
|
+
columnIndex,
|
|
604
|
+
$event,
|
|
605
|
+
}) {
|
|
606
|
+
this.$emit("header-click", column, $event);
|
|
607
|
+
},
|
|
608
|
+
// 当某一列的表头被鼠标右键点击时触发该事件 column, $event
|
|
609
|
+
headerContextmenu({ type, column, columnIndex, $event }) {
|
|
610
|
+
this.$emit("header-contextmenu", column, $event);
|
|
611
|
+
},
|
|
612
|
+
// 当拖动表头改变了列的宽度的时候会触发该事件(newWidth, oldWidth, column, $event)
|
|
613
|
+
headerDragend({
|
|
614
|
+
$rowIndex,
|
|
615
|
+
column,
|
|
616
|
+
columnIndex,
|
|
617
|
+
$columnIndex,
|
|
618
|
+
fixed,
|
|
619
|
+
isHidden,
|
|
620
|
+
$event,
|
|
621
|
+
}) {
|
|
622
|
+
let obj = {
|
|
623
|
+
$rowIndex,
|
|
624
|
+
column,
|
|
625
|
+
columnIndex,
|
|
626
|
+
$columnIndex,
|
|
627
|
+
fixed,
|
|
628
|
+
isHidden,
|
|
629
|
+
$event,
|
|
630
|
+
};
|
|
631
|
+
this.$emit("header-dragend", obj);
|
|
632
|
+
},
|
|
633
|
+
// 单元格编辑状态下被关闭时会触发该事件
|
|
634
|
+
editClosed({
|
|
635
|
+
row,
|
|
636
|
+
rowIndex,
|
|
637
|
+
$rowIndex,
|
|
638
|
+
column,
|
|
639
|
+
columnIndex,
|
|
640
|
+
$columnIndex,
|
|
641
|
+
}) {
|
|
642
|
+
this.$emit("edit-closed", {
|
|
643
|
+
row,
|
|
644
|
+
rowIndex,
|
|
645
|
+
$rowIndex,
|
|
646
|
+
column,
|
|
647
|
+
columnIndex,
|
|
648
|
+
$columnIndex,
|
|
649
|
+
});
|
|
650
|
+
},
|
|
651
|
+
// 单元格被激活编辑时会触发该事件
|
|
652
|
+
editActived({
|
|
653
|
+
row,
|
|
654
|
+
rowIndex,
|
|
655
|
+
$rowIndex,
|
|
656
|
+
column,
|
|
657
|
+
columnIndex,
|
|
658
|
+
$columnIndex,
|
|
659
|
+
}) {
|
|
660
|
+
this.$emit("edit-actived", {
|
|
661
|
+
row,
|
|
662
|
+
rowIndex,
|
|
663
|
+
$rowIndex,
|
|
664
|
+
column,
|
|
665
|
+
columnIndex,
|
|
666
|
+
$columnIndex,
|
|
667
|
+
});
|
|
668
|
+
},
|
|
669
|
+
editDisabled({
|
|
670
|
+
row,
|
|
671
|
+
rowIndex,
|
|
672
|
+
$rowIndex,
|
|
673
|
+
column,
|
|
674
|
+
columnIndex,
|
|
675
|
+
$columnIndex,
|
|
676
|
+
}) {
|
|
677
|
+
this.$emit("edit-disabled", {
|
|
678
|
+
row,
|
|
679
|
+
rowIndex,
|
|
680
|
+
$rowIndex,
|
|
681
|
+
column,
|
|
682
|
+
columnIndex,
|
|
683
|
+
$columnIndex,
|
|
684
|
+
});
|
|
685
|
+
},
|
|
686
|
+
// 当树节点展开或收起时会触发该事件
|
|
687
|
+
toggleTreeExpandEv(row) {
|
|
688
|
+
this.$emit("toggle-tree-expand", row);
|
|
689
|
+
},
|
|
690
|
+
// 键盘按下事件
|
|
691
|
+
keydown({ $event }) {
|
|
692
|
+
this.$emit("keydown", { $event });
|
|
693
|
+
},
|
|
694
|
+
// 当前被激活的单元格
|
|
695
|
+
editCurrentlyActive({ row, column, cell }) {
|
|
696
|
+
this.$emit("edit-currently-active", { row, column, cell });
|
|
697
|
+
},
|
|
698
|
+
// vxe 首次加载完数据并渲染完成后触发(此时列信息已构建完,DOM 稳定,可安全绑定第三方拖拽等)
|
|
699
|
+
initRendered(params) {
|
|
700
|
+
this.$emit("init-rendered", params);
|
|
701
|
+
},
|
|
702
|
+
// vxe 后续重新加载/刷新数据并渲染完成后触发
|
|
703
|
+
dataRendered(params) {
|
|
704
|
+
this.$emit("data-rendered", params);
|
|
705
|
+
},
|
|
706
|
+
},
|
|
707
|
+
};
|