htui-yllkbz 1.2.17 → 1.2.21
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/lib/htui.common.js +205 -19
- package/lib/htui.common.js.gz +0 -0
- package/lib/htui.umd.js +205 -19
- package/lib/htui.umd.js.gz +0 -0
- package/lib/htui.umd.min.js +3 -3
- package/lib/htui.umd.min.js.gz +0 -0
- package/package.json +1 -1
- package/src/packages/HtTable/index.vue +61 -10
- package/src/packages/SelectTable/index.vue +2 -2
- package/src/views/About.vue +1 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @Author: hutao
|
|
6
6
|
* @Date: 2021-11-11 11:23:24
|
|
7
7
|
* @LastEditors: hutao
|
|
8
|
-
* @LastEditTime: 2021-12-
|
|
8
|
+
* @LastEditTime: 2021-12-12 10:37:02
|
|
9
9
|
-->
|
|
10
10
|
<template>
|
|
11
11
|
<div v-loading="state.loading">
|
|
@@ -43,10 +43,14 @@
|
|
|
43
43
|
@cell-click="(row, column, cell, event)=>$emit('cell-click',row, column, cell, event)"
|
|
44
44
|
@cell-dblclick="(row, column, cell, event)=>$emit('cell-dblclick',row, column, cell, event)">
|
|
45
45
|
<el-table-column width="55"
|
|
46
|
+
v-if="checked"
|
|
47
|
+
:reserve-selection="reserveSelection"
|
|
48
|
+
:selectable="selectable"
|
|
46
49
|
type='selection'>
|
|
47
50
|
</el-table-column>
|
|
48
51
|
<el-table-column v-if="!hideOrder"
|
|
49
52
|
label="序号"
|
|
53
|
+
:align="'center'"
|
|
50
54
|
width="55">
|
|
51
55
|
<template slot="header">
|
|
52
56
|
<slot :name="'header_order'"></slot>
|
|
@@ -57,15 +61,26 @@
|
|
|
57
61
|
</el-table-column>
|
|
58
62
|
<el-table-column :label="item.title"
|
|
59
63
|
:key='item.key'
|
|
64
|
+
:fixed="item.fixed"
|
|
65
|
+
:align="item.align"
|
|
66
|
+
:header-align="item.headerAlign"
|
|
67
|
+
:column-key="item.columnKey"
|
|
68
|
+
:class-name="item.className"
|
|
60
69
|
v-for="item in columns"
|
|
61
70
|
:show-overflow-tooltip="true"
|
|
62
71
|
:prop="item.key"
|
|
63
|
-
:
|
|
72
|
+
:sortable="item.sortable"
|
|
73
|
+
:sort-method="item.sortMethod"
|
|
74
|
+
:sort-orders="item.sortOrders"
|
|
75
|
+
:formatter="item.formatter"
|
|
76
|
+
:sort-by="item.sortBy"
|
|
77
|
+
:min-width="item.minWidth"
|
|
78
|
+
:width="item.width">
|
|
64
79
|
<template slot-scope="{row,column,rowIndex}">
|
|
65
80
|
<slot :name="item.key"
|
|
66
81
|
:row="row"
|
|
67
82
|
:column="column"
|
|
68
|
-
:rowIndex="rowIndex">{{
|
|
83
|
+
:rowIndex="rowIndex">{{getPropByPath(row,item.key)}}</slot>
|
|
69
84
|
|
|
70
85
|
</template>
|
|
71
86
|
<template slot-scope="{column,$index}"
|
|
@@ -113,6 +128,10 @@ export default class HtTable extends Vue {
|
|
|
113
128
|
@Prop() data!: any[];
|
|
114
129
|
/** 是否隐藏分页 */
|
|
115
130
|
@Prop() hidePage!: boolean;
|
|
131
|
+
/** 是否启用复选框 */
|
|
132
|
+
@Prop() checked!: boolean;
|
|
133
|
+
/** 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) */
|
|
134
|
+
@Prop() reserveSelection!: boolean;
|
|
116
135
|
@Prop() height?: string | number;
|
|
117
136
|
@Prop() maxHeight?: string | number;
|
|
118
137
|
@Prop() rowKey?: string;
|
|
@@ -122,6 +141,8 @@ export default class HtTable extends Vue {
|
|
|
122
141
|
@Prop() fit?: boolean;
|
|
123
142
|
@Prop() showHeader?: boolean;
|
|
124
143
|
@Prop() rowClassName?: any;
|
|
144
|
+
/** 仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选 */
|
|
145
|
+
@Prop() selectable?: any;
|
|
125
146
|
@Prop() currentRowKey?: string | number;
|
|
126
147
|
@Prop() highlightCurrentRow?: boolean;
|
|
127
148
|
@Prop() rowStyle?: any;
|
|
@@ -143,18 +164,48 @@ export default class HtTable extends Vue {
|
|
|
143
164
|
// console.log("this", this.$props);
|
|
144
165
|
this.setPageInfo(this.pageInfo);
|
|
145
166
|
}
|
|
167
|
+
getPropByPath(obj: any, path: string, strict: boolean) {
|
|
168
|
+
let tempObj = obj;
|
|
169
|
+
path = path.replace(/\[(\w+)\]/g, ".$1");
|
|
170
|
+
path = path.replace(/^\./, "");
|
|
171
|
+
|
|
172
|
+
const keyArr = path.split(".");
|
|
173
|
+
let i = 0;
|
|
174
|
+
for (let len = keyArr.length; i < len - 1; ++i) {
|
|
175
|
+
if (!tempObj && !strict) break;
|
|
176
|
+
const key = keyArr[i];
|
|
177
|
+
if (key in tempObj) {
|
|
178
|
+
tempObj = tempObj[key];
|
|
179
|
+
} else {
|
|
180
|
+
if (strict) {
|
|
181
|
+
throw new Error("please transfer a valid prop path to form item!");
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// return {
|
|
187
|
+
// o: tempObj,
|
|
188
|
+
// k: keyArr[i],
|
|
189
|
+
// v: tempObj ? tempObj[keyArr[i]] : null,
|
|
190
|
+
// };
|
|
191
|
+
return tempObj ? tempObj[keyArr[i]] : null;
|
|
192
|
+
}
|
|
146
193
|
/** 遍历循环展示row数据 */
|
|
147
194
|
showValue(row: any, key: string) {
|
|
148
195
|
if (key) {
|
|
149
196
|
if (key.includes(".")) {
|
|
150
197
|
//存在多级的情况
|
|
151
|
-
|
|
152
|
-
const arrKey = key.split(".");
|
|
153
|
-
let data = row;
|
|
154
|
-
arrKey.forEach((item) => {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
198
|
+
//console.log("eval", key, eval(row[key]));
|
|
199
|
+
// const arrKey = key.split(".");
|
|
200
|
+
// let data = row;
|
|
201
|
+
// arrKey.forEach((item) => {
|
|
202
|
+
// if (data[item]) {
|
|
203
|
+
// data = data[item];
|
|
204
|
+
// } else {
|
|
205
|
+
// data = "";
|
|
206
|
+
// }
|
|
207
|
+
// });
|
|
208
|
+
return "";
|
|
158
209
|
} else {
|
|
159
210
|
//如果不存在多级数据
|
|
160
211
|
return row[key];
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @Author: hutao
|
|
5
5
|
* @Date: 2021-11-11 11:06:51
|
|
6
6
|
* @LastEditors: hutao
|
|
7
|
-
* @LastEditTime: 2021-12-
|
|
7
|
+
* @LastEditTime: 2021-12-12 10:07:34
|
|
8
8
|
-->
|
|
9
9
|
<template>
|
|
10
10
|
<el-popover placement="bottom"
|
|
@@ -182,7 +182,7 @@ export default class HtSelectTable extends Vue {
|
|
|
182
182
|
//
|
|
183
183
|
if (!this.state.config.disabled) {
|
|
184
184
|
const ref: any = this.$refs[this.state.config.key || "ht-table"];
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
this.state.visible = false;
|
|
187
187
|
ref.clearCheck();
|
|
188
188
|
}
|