@vipl520/dk-ui 1.0.22 → 1.0.24
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/dist/index.js +143 -56
- package/dist/index.min.js +5 -3
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +5 -3
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +143 -56
- package/dist/web-types.json +1 -1
- package/es/table/index.d.ts +45 -0
- package/es/table/src/components/header.vue2.mjs +58 -26
- package/es/table/src/components/header.vue2.mjs.map +1 -1
- package/es/table/src/props.d.ts +12 -0
- package/es/table/src/props.mjs +18 -0
- package/es/table/src/props.mjs.map +1 -1
- package/es/table/src/table.vue.d.ts +27 -0
- package/es/table/src/table.vue2.mjs +17 -20
- package/es/table/src/table.vue2.mjs.map +1 -1
- package/es/table/utils/dkTable.d.ts +2 -1
- package/es/table/utils/dkTable.mjs +40 -0
- package/es/table/utils/dkTable.mjs.map +1 -1
- package/lib/table/index.d.ts +45 -0
- package/lib/table/src/components/header.vue2.js +58 -26
- package/lib/table/src/components/header.vue2.js.map +1 -1
- package/lib/table/src/props.d.ts +12 -0
- package/lib/table/src/props.js +18 -0
- package/lib/table/src/props.js.map +1 -1
- package/lib/table/src/table.vue.d.ts +27 -0
- package/lib/table/src/table.vue2.js +17 -20
- package/lib/table/src/table.vue2.js.map +1 -1
- package/lib/table/utils/dkTable.d.ts +2 -1
- package/lib/table/utils/dkTable.js +40 -0
- package/lib/table/utils/dkTable.js.map +1 -1
- package/package.json +1 -1
@@ -11,31 +11,38 @@ const _hoisted_2 = /* @__PURE__ */ createElementVNode(
|
|
11
11
|
/* HOISTED */
|
12
12
|
);
|
13
13
|
const _hoisted_3 = /* @__PURE__ */ createElementVNode(
|
14
|
+
"span",
|
15
|
+
{ class: "m-l-5px" },
|
16
|
+
"\u5BFC\u51FA",
|
17
|
+
-1
|
18
|
+
/* HOISTED */
|
19
|
+
);
|
20
|
+
const _hoisted_4 = /* @__PURE__ */ createElementVNode(
|
14
21
|
"span",
|
15
22
|
{ class: "m-l-5px" },
|
16
23
|
"\u7F16\u8F91",
|
17
24
|
-1
|
18
25
|
/* HOISTED */
|
19
26
|
);
|
20
|
-
const
|
21
|
-
const
|
27
|
+
const _hoisted_5 = { class: "m-l-5px" };
|
28
|
+
const _hoisted_6 = /* @__PURE__ */ createElementVNode(
|
22
29
|
"span",
|
23
30
|
{ class: "m-l-5px" },
|
24
31
|
"\u5220\u9664",
|
25
32
|
-1
|
26
33
|
/* HOISTED */
|
27
34
|
);
|
28
|
-
const
|
29
|
-
const
|
35
|
+
const _hoisted_7 = { class: "table-header-operate-text" };
|
36
|
+
const _hoisted_8 = /* @__PURE__ */ createElementVNode(
|
30
37
|
"span",
|
31
38
|
{ class: "table-header-operate-text" },
|
32
39
|
" \u56DE\u6536\u7AD9 ",
|
33
40
|
-1
|
34
41
|
/* HOISTED */
|
35
42
|
);
|
36
|
-
const
|
37
|
-
const
|
38
|
-
const
|
43
|
+
const _hoisted_9 = { class: "table-search" };
|
44
|
+
const _hoisted_10 = { class: "mr-1" };
|
45
|
+
const _hoisted_11 = { class: "table-search-button-group" };
|
39
46
|
const __default__ = defineComponent({
|
40
47
|
name: "DkTableHeader"
|
41
48
|
});
|
@@ -48,7 +55,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
48
55
|
},
|
49
56
|
buttons: {
|
50
57
|
default: () => {
|
51
|
-
return ["refresh", "add", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
58
|
+
return ["refresh", "add", "export_csv", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
52
59
|
},
|
53
60
|
type: Array
|
54
61
|
},
|
@@ -182,8 +189,33 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
182
189
|
_: 1
|
183
190
|
/* STABLE */
|
184
191
|
})) : createCommentVNode("v-if", true),
|
185
|
-
props.buttons.includes("
|
192
|
+
props.buttons.includes("export_csv") && unref(DkTable).auth("export_csv") ? (openBlock(), createBlock(_component_el_tooltip, {
|
186
193
|
key: 2,
|
194
|
+
content: "\u5BFC\u51FA\u9009\u4E2D\u884C",
|
195
|
+
placement: "top"
|
196
|
+
}, {
|
197
|
+
default: withCtx(() => [
|
198
|
+
withDirectives((openBlock(), createBlock(_component_el_button, {
|
199
|
+
disabled: !enableBatchOpt.value,
|
200
|
+
class: "table-header-operate",
|
201
|
+
type: "primary",
|
202
|
+
onClick: _cache[2] || (_cache[2] = ($event) => onAction("export_csv"))
|
203
|
+
}, {
|
204
|
+
default: withCtx(() => [
|
205
|
+
createVNode(_component_dk_icon, { icon: "typcn:download" }),
|
206
|
+
_hoisted_3
|
207
|
+
]),
|
208
|
+
_: 1
|
209
|
+
/* STABLE */
|
210
|
+
}, 8, ["disabled"])), [
|
211
|
+
[_directive_blur]
|
212
|
+
])
|
213
|
+
]),
|
214
|
+
_: 1
|
215
|
+
/* STABLE */
|
216
|
+
})) : createCommentVNode("v-if", true),
|
217
|
+
props.buttons.includes("edit") && unref(DkTable).auth("edit") ? (openBlock(), createBlock(_component_el_tooltip, {
|
218
|
+
key: 3,
|
187
219
|
content: "\u7F16\u8F91\u9009\u4E2D\u884C",
|
188
220
|
placement: "top"
|
189
221
|
}, {
|
@@ -192,11 +224,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
192
224
|
disabled: !enableBatchOpt.value,
|
193
225
|
class: "table-header-operate",
|
194
226
|
type: "primary",
|
195
|
-
onClick: _cache[
|
227
|
+
onClick: _cache[3] || (_cache[3] = ($event) => onAction("edit"))
|
196
228
|
}, {
|
197
229
|
default: withCtx(() => [
|
198
230
|
createVNode(_component_dk_icon, { icon: "typcn:edit" }),
|
199
|
-
|
231
|
+
_hoisted_4
|
200
232
|
]),
|
201
233
|
_: 1
|
202
234
|
/* STABLE */
|
@@ -208,16 +240,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
208
240
|
/* STABLE */
|
209
241
|
})) : createCommentVNode("v-if", true),
|
210
242
|
props.buttons.includes("delete") && unref(DkTable).auth("del") ? (openBlock(), createBlock(_component_el_popconfirm, {
|
211
|
-
key:
|
243
|
+
key: 4,
|
212
244
|
"confirm-button-text": "\u5220\u9664",
|
213
245
|
"cancel-button-text": "\u53D6\u6D88",
|
214
246
|
"confirm-button-type": "danger",
|
215
247
|
title: "\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F",
|
216
248
|
disabled: !enableBatchOpt.value,
|
217
|
-
onConfirm: _cache[
|
249
|
+
onConfirm: _cache[4] || (_cache[4] = ($event) => onAction("delete"))
|
218
250
|
}, {
|
219
251
|
reference: withCtx(() => [
|
220
|
-
createElementVNode("div",
|
252
|
+
createElementVNode("div", _hoisted_5, [
|
221
253
|
createVNode(_component_el_tooltip, {
|
222
254
|
content: "\u5220\u9664\u6240\u9009\u884C",
|
223
255
|
placement: "top"
|
@@ -231,7 +263,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
231
263
|
default: withCtx(() => [
|
232
264
|
createCommentVNode(' <Icon name="fa fa-trash" />'),
|
233
265
|
createVNode(_component_dk_icon, { icon: "typcn:trash" }),
|
234
|
-
|
266
|
+
_hoisted_6
|
235
267
|
]),
|
236
268
|
_: 1
|
237
269
|
/* STABLE */
|
@@ -248,7 +280,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
248
280
|
/* STABLE */
|
249
281
|
}, 8, ["disabled"])) : createCommentVNode("v-if", true),
|
250
282
|
props.buttons.includes("unfold") ? (openBlock(), createBlock(_component_el_tooltip, {
|
251
|
-
key:
|
283
|
+
key: 5,
|
252
284
|
content: (unref(DkTable).table.expandAll ? "\u6536\u7F29" : "\u5C55\u5F00") + "\u6240\u6709\u5B50\u83DC\u5355",
|
253
285
|
placement: "top"
|
254
286
|
}, {
|
@@ -256,14 +288,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
256
288
|
withDirectives((openBlock(), createBlock(_component_el_button, {
|
257
289
|
class: "table-header-operate",
|
258
290
|
type: unref(DkTable).table.expandAll ? "danger" : "warning",
|
259
|
-
onClick: _cache[
|
291
|
+
onClick: _cache[5] || (_cache[5] = ($event) => unref(DkTable).onTableHeaderAction("unfold", {
|
260
292
|
unfold: !unref(DkTable).table.expandAll
|
261
293
|
}))
|
262
294
|
}, {
|
263
295
|
default: withCtx(() => [
|
264
296
|
createElementVNode(
|
265
297
|
"span",
|
266
|
-
|
298
|
+
_hoisted_7,
|
267
299
|
toDisplayString(unref(DkTable).table.expandAll ? "\u6536\u7F29\u6240\u6709" : "\u5C55\u5F00\u6240\u6709"),
|
268
300
|
1
|
269
301
|
/* TEXT */
|
@@ -287,10 +319,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
287
319
|
class: "table-header-operate m-l-5px",
|
288
320
|
type: "warning",
|
289
321
|
loading: unref(DkTable).recycleTable.showDialogLoading,
|
290
|
-
onClick: _cache[
|
322
|
+
onClick: _cache[6] || (_cache[6] = ($event) => onAction("recycle"))
|
291
323
|
}, {
|
292
324
|
default: withCtx(() => [
|
293
|
-
|
325
|
+
_hoisted_8
|
294
326
|
]),
|
295
327
|
_: 1
|
296
328
|
/* STABLE */
|
@@ -301,18 +333,18 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
301
333
|
_: 1
|
302
334
|
/* STABLE */
|
303
335
|
}),
|
304
|
-
createElementVNode("div",
|
305
|
-
createElementVNode("div",
|
336
|
+
createElementVNode("div", _hoisted_9, [
|
337
|
+
createElementVNode("div", _hoisted_10, [
|
306
338
|
createVNode(_component_el_input, {
|
307
339
|
modelValue: unref(DkTable).table.filter.quickSearch,
|
308
|
-
"onUpdate:modelValue": _cache[
|
340
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => unref(DkTable).table.filter.quickSearch = $event),
|
309
341
|
placeholder: "\u8BF7\u8F93\u5165",
|
310
342
|
"prefix-icon": "Search",
|
311
343
|
size: __props.size,
|
312
|
-
onInput: _cache[
|
344
|
+
onInput: _cache[8] || (_cache[8] = ($event) => unref(debounce)(onSearchInput, 500)())
|
313
345
|
}, null, 8, ["modelValue", "size"])
|
314
346
|
]),
|
315
|
-
createElementVNode("div",
|
347
|
+
createElementVNode("div", _hoisted_11, [
|
316
348
|
props.buttons.includes("columnDisplay") ? (openBlock(), createBlock(_component_el_dropdown, {
|
317
349
|
key: 0,
|
318
350
|
"max-height": 380,
|
@@ -382,7 +414,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
382
414
|
withDirectives((openBlock(), createBlock(_component_el_button, {
|
383
415
|
size: __props.size,
|
384
416
|
class: "table-search-button-item",
|
385
|
-
onClick: _cache[
|
417
|
+
onClick: _cache[9] || (_cache[9] = ($event) => unref(DkTable).table.showComSearch = !unref(DkTable).table.showComSearch)
|
386
418
|
}, {
|
387
419
|
default: withCtx(() => [
|
388
420
|
createVNode(_component_dk_icon, { icon: "Search" })
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"header.vue2.mjs","sources":["../../../../src/table/src/components/header.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTableHeader',\n});\n</script>\n<template>\n <el-collapse-transition>\n <ComSearch v-show=\"props.buttons.includes('comSearch') && DkTable.table.showComSearch\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </ComSearch>\n </el-collapse-transition>\n <div class=\"dk-table-header\">\n <slot name=\"refreshPrepend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('refresh')\" content=\"刷新\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"info\" @click=\"onAction('refresh', { loading: true })\">\n <dk-icon icon=\"Refresh\"></dk-icon>\n </el-button>\n </el-tooltip>\n <slot name=\"refreshAppend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('add') && DkTable.auth('add')\" content=\"新增\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"primary\" @click=\"onAction('add')\">\n <dk-icon icon=\"typcn:plus\"></dk-icon>\n <span class=\"m-l-5px\">新增</span>\n </el-button>\n </el-tooltip>\n <el-tooltip v-if=\"props.buttons.includes('edit') && DkTable.auth('edit')\" content=\"编辑选中行\" placement=\"top\">\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('edit')\"\n >\n <dk-icon icon=\"typcn:edit\"></dk-icon>\n <span class=\"m-l-5px\">编辑</span>\n </el-button>\n </el-tooltip>\n <el-popconfirm\n v-if=\"props.buttons.includes('delete') && DkTable.auth('del')\"\n confirm-button-text=\"删除\"\n cancel-button-text=\"取消\"\n confirm-button-type=\"danger\"\n title=\"您确定要删除所选记录吗?\"\n :disabled=\"!enableBatchOpt\"\n @confirm=\"onAction('delete')\"\n >\n <template #reference>\n <div class=\"m-l-5px\">\n <el-tooltip content=\"删除所选行\" placement=\"top\">\n <el-button v-blur :disabled=\"!enableBatchOpt\" class=\"table-header-operate\" type=\"danger\">\n <!-- <Icon name=\"fa fa-trash\" />-->\n <dk-icon icon=\"typcn:trash\"></dk-icon>\n <span class=\"m-l-5px\">删除</span>\n </el-button>\n </el-tooltip>\n </div>\n </template>\n </el-popconfirm>\n <el-tooltip\n v-if=\"props.buttons.includes('unfold')\"\n :content=\"(DkTable.table.expandAll ? '收缩' : '展开') + '所有子菜单'\"\n placement=\"top\"\n >\n <el-button\n v-blur\n class=\"table-header-operate\"\n :type=\"DkTable.table.expandAll ? 'danger' : 'warning'\"\n @click=\"\n DkTable.onTableHeaderAction('unfold', {\n unfold: !DkTable.table.expandAll,\n })\n \"\n >\n <span class=\"table-header-operate-text\">\n {{ DkTable.table.expandAll ? '收缩所有' : '展开所有' }}\n </span>\n </el-button>\n </el-tooltip>\n <el-tooltip content=\"打开回收站\" placement=\"top\">\n <el-button\n v-blur\n class=\"table-header-operate m-l-5px\"\n type=\"warning\"\n :loading=\"DkTable.recycleTable.showDialogLoading\"\n @click=\"onAction('recycle')\"\n >\n <span class=\"table-header-operate-text\"> 回收站 </span>\n </el-button>\n </el-tooltip>\n <div class=\"table-search\">\n <div class=\"mr-1\">\n <el-input\n v-model=\"DkTable.table.filter!.quickSearch\"\n placeholder=\"请输入\"\n prefix-icon=\"Search\"\n :size=\"size\"\n @input=\"debounce(onSearchInput, 500)()\"\n />\n </div>\n <div class=\"table-search-button-group\">\n <el-dropdown v-if=\"props.buttons.includes('columnDisplay')\" :max-height=\"380\" :hide-on-click=\"false\">\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n :class=\"props.buttons.includes('comSearch') ? 'right-border' : ''\"\n >\n <dk-icon icon=\"Grid\"></dk-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item v-for=\"(item, idx) in columnDisplay\" :key=\"idx\">\n <el-checkbox\n v-if=\"item.prop\"\n :checked=\"!item.show\"\n :model-value=\"item.show\"\n :size=\"size\"\n :label=\"item.label\"\n @change=\"onChangeShowColumn($event, item.prop!)\"\n />\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div>\n <el-tooltip\n v-if=\"props.buttons.includes('comSearch')\"\n :disabled=\"DkTable.table.showComSearch\"\n content=\"展开常规搜索\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n @click=\"DkTable.table.showComSearch = !DkTable.table.showComSearch\"\n >\n <dk-icon icon=\"Search\"></dk-icon>\n </el-button>\n </el-tooltip>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { inject, computed } from 'vue'\nimport dkTable from '../../utils/dkTable'\nimport ComSearch from './ComSearch.vue'\nimport { debounce, storage } from '@vipl520/utils'\n\n\n\nconst DkTable = inject('DkTable') as dkTable\n\nconst props = defineProps({\n size: {\n default: 'small',\n type: String,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n quickSearchPlaceholder: {\n default: '快捷搜索',\n type: String,\n },\n})\n\nconst columnDisplay = computed(() => {\n const columnDisplayArr = []\n let cachedTableData: any = {}\n if (DkTable.url) {\n cachedTableData = JSON.parse(storage.get(DkTable.url + 'show_column') || '{}')\n }\n for (const item of DkTable.table.column) {\n if (cachedTableData[item.prop] !== undefined) {\n item.show = cachedTableData[item.prop]\n }\n // eslint-disable-next-line no-unused-expressions\n item.type === 'selection' || item.render === 'buttons' || item.enableColumnDisplayControl === false\n ? ''\n : columnDisplayArr.push(item)\n }\n return columnDisplayArr\n})\n\nconst enableBatchOpt = computed(() => DkTable.table.selection!.length > 0)\n\nconst onAction = (event: string, data: anyObj = {}) => {\n DkTable.onTableHeaderAction(event, data)\n}\n\nconst onSearchInput = () => {\n DkTable.onTableHeaderAction('quick-search', {\n keyword: DkTable.table.filter!.quickSearch,\n })\n}\n\nconst onChangeShowColumn = (value: string | number | boolean, field: string) => {\n DkTable.onTableHeaderAction('change-show-column', {\n field,\n value,\n })\n}\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":"
|
1
|
+
{"version":3,"file":"header.vue2.mjs","sources":["../../../../src/table/src/components/header.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTableHeader',\n});\n</script>\n<template>\n <el-collapse-transition>\n <ComSearch v-show=\"props.buttons.includes('comSearch') && DkTable.table.showComSearch\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </ComSearch>\n </el-collapse-transition>\n <div class=\"dk-table-header\">\n <slot name=\"refreshPrepend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('refresh')\" content=\"刷新\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"info\" @click=\"onAction('refresh', { loading: true })\">\n <dk-icon icon=\"Refresh\"></dk-icon>\n </el-button>\n </el-tooltip>\n <slot name=\"refreshAppend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('add') && DkTable.auth('add')\" content=\"新增\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"primary\" @click=\"onAction('add')\">\n <dk-icon icon=\"typcn:plus\"></dk-icon>\n <span class=\"m-l-5px\">新增</span>\n </el-button>\n </el-tooltip>\n <el-tooltip\n v-if=\"props.buttons.includes('export_csv') && DkTable.auth('export_csv')\"\n content=\"导出选中行\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('export_csv')\"\n >\n <dk-icon icon=\"typcn:download\"></dk-icon>\n <span class=\"m-l-5px\">导出</span>\n </el-button>\n </el-tooltip>\n <el-tooltip v-if=\"props.buttons.includes('edit') && DkTable.auth('edit')\" content=\"编辑选中行\" placement=\"top\">\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('edit')\"\n >\n <dk-icon icon=\"typcn:edit\"></dk-icon>\n <span class=\"m-l-5px\">编辑</span>\n </el-button>\n </el-tooltip>\n <el-popconfirm\n v-if=\"props.buttons.includes('delete') && DkTable.auth('del')\"\n confirm-button-text=\"删除\"\n cancel-button-text=\"取消\"\n confirm-button-type=\"danger\"\n title=\"您确定要删除所选记录吗?\"\n :disabled=\"!enableBatchOpt\"\n @confirm=\"onAction('delete')\"\n >\n <template #reference>\n <div class=\"m-l-5px\">\n <el-tooltip content=\"删除所选行\" placement=\"top\">\n <el-button v-blur :disabled=\"!enableBatchOpt\" class=\"table-header-operate\" type=\"danger\">\n <!-- <Icon name=\"fa fa-trash\" />-->\n <dk-icon icon=\"typcn:trash\"></dk-icon>\n <span class=\"m-l-5px\">删除</span>\n </el-button>\n </el-tooltip>\n </div>\n </template>\n </el-popconfirm>\n <el-tooltip\n v-if=\"props.buttons.includes('unfold')\"\n :content=\"(DkTable.table.expandAll ? '收缩' : '展开') + '所有子菜单'\"\n placement=\"top\"\n >\n <el-button\n v-blur\n class=\"table-header-operate\"\n :type=\"DkTable.table.expandAll ? 'danger' : 'warning'\"\n @click=\"\n DkTable.onTableHeaderAction('unfold', {\n unfold: !DkTable.table.expandAll,\n })\n \"\n >\n <span class=\"table-header-operate-text\">\n {{ DkTable.table.expandAll ? '收缩所有' : '展开所有' }}\n </span>\n </el-button>\n </el-tooltip>\n <el-tooltip content=\"打开回收站\" placement=\"top\">\n <el-button\n v-blur\n class=\"table-header-operate m-l-5px\"\n type=\"warning\"\n :loading=\"DkTable.recycleTable.showDialogLoading\"\n @click=\"onAction('recycle')\"\n >\n <span class=\"table-header-operate-text\"> 回收站 </span>\n </el-button>\n </el-tooltip>\n <div class=\"table-search\">\n <div class=\"mr-1\">\n <el-input\n v-model=\"DkTable.table.filter!.quickSearch\"\n placeholder=\"请输入\"\n prefix-icon=\"Search\"\n :size=\"size\"\n @input=\"debounce(onSearchInput, 500)()\"\n />\n </div>\n <div class=\"table-search-button-group\">\n <el-dropdown v-if=\"props.buttons.includes('columnDisplay')\" :max-height=\"380\" :hide-on-click=\"false\">\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n :class=\"props.buttons.includes('comSearch') ? 'right-border' : ''\"\n >\n <dk-icon icon=\"Grid\"></dk-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item v-for=\"(item, idx) in columnDisplay\" :key=\"idx\">\n <el-checkbox\n v-if=\"item.prop\"\n :checked=\"!item.show\"\n :model-value=\"item.show\"\n :size=\"size\"\n :label=\"item.label\"\n @change=\"onChangeShowColumn($event, item.prop!)\"\n />\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div>\n <el-tooltip\n v-if=\"props.buttons.includes('comSearch')\"\n :disabled=\"DkTable.table.showComSearch\"\n content=\"展开常规搜索\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n @click=\"DkTable.table.showComSearch = !DkTable.table.showComSearch\"\n >\n <dk-icon icon=\"Search\"></dk-icon>\n </el-button>\n </el-tooltip>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { inject, computed } from 'vue'\nimport dkTable from '../../utils/dkTable'\nimport ComSearch from './ComSearch.vue'\nimport { debounce, storage } from '@vipl520/utils'\n\n\n\nconst DkTable = inject('DkTable') as dkTable\n\nconst props = defineProps({\n size: {\n default: 'small',\n type: String,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'export_csv', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n quickSearchPlaceholder: {\n default: '快捷搜索',\n type: String,\n },\n})\n\nconst columnDisplay = computed(() => {\n const columnDisplayArr = []\n let cachedTableData: any = {}\n if (DkTable.url) {\n cachedTableData = JSON.parse(storage.get(DkTable.url + 'show_column') || '{}')\n }\n for (const item of DkTable.table.column) {\n if (cachedTableData[item.prop] !== undefined) {\n item.show = cachedTableData[item.prop]\n }\n // eslint-disable-next-line no-unused-expressions\n item.type === 'selection' || item.render === 'buttons' || item.enableColumnDisplayControl === false\n ? ''\n : columnDisplayArr.push(item)\n }\n return columnDisplayArr\n})\n\nconst enableBatchOpt = computed(() => DkTable.table.selection!.length > 0)\n\nconst onAction = (event: string, data: anyObj = {}) => {\n DkTable.onTableHeaderAction(event, data)\n}\n\nconst onSearchInput = () => {\n DkTable.onTableHeaderAction('quick-search', {\n keyword: DkTable.table.filter!.quickSearch,\n })\n}\n\nconst onChangeShowColumn = (value: string | number | boolean, field: string) => {\n DkTable.onTableHeaderAction('change-show-column', {\n field,\n value,\n })\n}\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,eAAA;AACR,CAAC,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAwKD,IAAM,MAAA,OAAA,GAAU,OAAO,SAAS,CAAA,CAAA;AAmBhC,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAA,MAAM,mBAAmB,EAAC,CAAA;AAC1B,MAAA,IAAI,kBAAuB,EAAC,CAAA;AAC5B,MAAA,IAAI,QAAQ,GAAK,EAAA;AACf,QAAkB,eAAA,GAAA,IAAA,CAAK,MAAM,OAAQ,CAAA,GAAA,CAAI,QAAQ,GAAM,GAAA,aAAa,KAAK,IAAI,CAAA,CAAA;AAAA,OAC/E;AACA,MAAW,KAAA,MAAA,IAAA,IAAQ,OAAQ,CAAA,KAAA,CAAM,MAAQ,EAAA;AACvC,QAAA,IAAI,eAAgB,CAAA,IAAA,CAAK,IAAI,CAAA,KAAM,KAAW,CAAA,EAAA;AAC5C,UAAK,IAAA,CAAA,IAAA,GAAO,eAAgB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,SACvC;AAEA,QAAK,IAAA,CAAA,IAAA,KAAS,WAAe,IAAA,IAAA,CAAK,MAAW,KAAA,SAAA,IAAa,IAAK,CAAA,0BAAA,KAA+B,KAC1F,GAAA,EAAA,GACA,gBAAiB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,OAChC;AACA,MAAO,OAAA,gBAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,iBAAiB,QAAS,CAAA,MAAM,QAAQ,KAAM,CAAA,SAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAEzE,IAAA,MAAM,QAAW,GAAA,CAAC,KAAe,EAAA,IAAA,GAAe,EAAO,KAAA;AACrD,MAAQ,OAAA,CAAA,mBAAA,CAAoB,OAAO,IAAI,CAAA,CAAA;AAAA,KACzC,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,OAAA,CAAQ,oBAAoB,cAAgB,EAAA;AAAA,QAC1C,OAAA,EAAS,OAAQ,CAAA,KAAA,CAAM,MAAQ,CAAA,WAAA;AAAA,OAChC,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAM,MAAA,kBAAA,GAAqB,CAAC,KAAA,EAAkC,KAAkB,KAAA;AAC9E,MAAA,OAAA,CAAQ,oBAAoB,oBAAsB,EAAA;AAAA,QAChD,KAAA;AAAA,QACA,KAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACH,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/es/table/src/props.d.ts
CHANGED
@@ -8,5 +8,17 @@ export declare const tableProps: {
|
|
8
8
|
default: boolean;
|
9
9
|
type: BooleanConstructor;
|
10
10
|
};
|
11
|
+
tableBefore: {
|
12
|
+
default: () => {};
|
13
|
+
type: ObjectConstructor;
|
14
|
+
};
|
15
|
+
tableAfter: {
|
16
|
+
default: () => {};
|
17
|
+
type: ObjectConstructor;
|
18
|
+
};
|
19
|
+
buttons: {
|
20
|
+
default: () => string[];
|
21
|
+
type: ArrayConstructor;
|
22
|
+
};
|
11
23
|
};
|
12
24
|
export type TableProps = ExtractPropTypes<typeof tableProps>;
|
package/es/table/src/props.mjs
CHANGED
@@ -6,6 +6,24 @@ const tableProps = {
|
|
6
6
|
cacheTable: {
|
7
7
|
default: true,
|
8
8
|
type: Boolean
|
9
|
+
},
|
10
|
+
tableBefore: {
|
11
|
+
default: () => {
|
12
|
+
return {};
|
13
|
+
},
|
14
|
+
type: Object
|
15
|
+
},
|
16
|
+
tableAfter: {
|
17
|
+
default: () => {
|
18
|
+
return {};
|
19
|
+
},
|
20
|
+
type: Object
|
21
|
+
},
|
22
|
+
buttons: {
|
23
|
+
default: () => {
|
24
|
+
return ["refresh", "add", "export_csv", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
25
|
+
},
|
26
|
+
type: Array
|
9
27
|
}
|
10
28
|
// ...ElTableNext.props,
|
11
29
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"props.mjs","sources":["../../../src/table/src/props.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n// import ElTableNext from 'el-table-next'\n\nexport const tableProps = {\n tableApi: {\n default: '',\n type: String,\n },\n cacheTable: {\n default: true,\n type: Boolean,\n },\n // ...ElTableNext.props,\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n"],"names":[],"mappings":"AAGO,MAAM,UAAa,GAAA;AAAA,EACxB,QAAU,EAAA;AAAA,IACR,OAAS,EAAA,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,GACR;AAAA;AAEF;;;;"}
|
1
|
+
{"version":3,"file":"props.mjs","sources":["../../../src/table/src/props.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n// import ElTableNext from 'el-table-next'\n\nexport const tableProps = {\n tableApi: {\n default: '',\n type: String,\n },\n cacheTable: {\n default: true,\n type: Boolean,\n },\n tableBefore: {\n default: () => {\n return {}\n },\n type: Object,\n },\n tableAfter: {\n default: () => {\n return {}\n },\n type: Object,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'export_csv', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n // ...ElTableNext.props,\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n"],"names":[],"mappings":"AAGO,MAAM,UAAa,GAAA;AAAA,EACxB,QAAU,EAAA;AAAA,IACR,OAAS,EAAA,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,GACR;AAAA,EACA,WAAa,EAAA;AAAA,IACX,SAAS,MAAM;AACb,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,SAAS,MAAM;AACb,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,OAAS,EAAA;AAAA,IACP,SAAS,MAAM;AACb,MAAO,OAAA,CAAC,WAAW,KAAO,EAAA,YAAA,EAAc,QAAQ,QAAU,EAAA,WAAA,EAAa,eAAe,eAAe,CAAA,CAAA;AAAA,KACvG;AAAA,IACA,IAAM,EAAA,KAAA;AAAA,GACR;AAAA;AAEF;;;;"}
|
@@ -8,6 +8,18 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
8
8
|
default: boolean;
|
9
9
|
type: BooleanConstructor;
|
10
10
|
};
|
11
|
+
tableBefore: {
|
12
|
+
default: () => {};
|
13
|
+
type: ObjectConstructor;
|
14
|
+
};
|
15
|
+
tableAfter: {
|
16
|
+
default: () => {};
|
17
|
+
type: ObjectConstructor;
|
18
|
+
};
|
19
|
+
buttons: {
|
20
|
+
default: () => string[];
|
21
|
+
type: ArrayConstructor;
|
22
|
+
};
|
11
23
|
}, {
|
12
24
|
DkTable: DkTableClass;
|
13
25
|
TableRef: import("vue").Ref<any>;
|
@@ -21,9 +33,24 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
21
33
|
default: boolean;
|
22
34
|
type: BooleanConstructor;
|
23
35
|
};
|
36
|
+
tableBefore: {
|
37
|
+
default: () => {};
|
38
|
+
type: ObjectConstructor;
|
39
|
+
};
|
40
|
+
tableAfter: {
|
41
|
+
default: () => {};
|
42
|
+
type: ObjectConstructor;
|
43
|
+
};
|
44
|
+
buttons: {
|
45
|
+
default: () => string[];
|
46
|
+
type: ArrayConstructor;
|
47
|
+
};
|
24
48
|
}>>, {
|
25
49
|
tableApi: string;
|
26
50
|
cacheTable: boolean;
|
51
|
+
tableBefore: Record<string, any>;
|
52
|
+
tableAfter: Record<string, any>;
|
53
|
+
buttons: unknown[];
|
27
54
|
}, {}>, Partial<Record<NonNullable<string | number>, (_: {}) => any>> & Partial<Record<string, (_: any) => any>> & {
|
28
55
|
columnPrepend?(_: {}): any;
|
29
56
|
columnAppend?(_: {}): any;
|
@@ -17,7 +17,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
17
17
|
const props = __props;
|
18
18
|
const FormRef = ref();
|
19
19
|
const TableRef = ref();
|
20
|
-
const DkTable = new dkTable(props.tableApi);
|
20
|
+
const DkTable = new dkTable(props.tableApi, props.tableBefore, props.tableAfter);
|
21
21
|
provide("DkTable", DkTable);
|
22
22
|
onMounted(() => {
|
23
23
|
DkTable.getTable(props.cacheTable)?.then(() => {
|
@@ -145,25 +145,22 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
145
145
|
[
|
146
146
|
createElementVNode("div", _hoisted_1, [
|
147
147
|
createCommentVNode("\u9876\u90E8\u83DC\u5355"),
|
148
|
-
createVNode(
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
1024
|
165
|
-
/* DYNAMIC_SLOTS */
|
166
|
-
),
|
148
|
+
createVNode(DkTableHeader, {
|
149
|
+
size: "default",
|
150
|
+
buttons: _ctx.buttons
|
151
|
+
}, createSlots({
|
152
|
+
_: 2
|
153
|
+
/* DYNAMIC */
|
154
|
+
}, [
|
155
|
+
renderList(_ctx.$slots, (slot, idx) => {
|
156
|
+
return {
|
157
|
+
name: idx,
|
158
|
+
fn: withCtx(() => [
|
159
|
+
renderSlot(_ctx.$slots, idx)
|
160
|
+
])
|
161
|
+
};
|
162
|
+
})
|
163
|
+
]), 1032, ["buttons"]),
|
167
164
|
createCommentVNode("\u8868\u683C"),
|
168
165
|
withDirectives((openBlock(), createBlock(_component_el_table, mergeProps({
|
169
166
|
ref_key: "TableRef",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table.vue2.mjs","sources":["../../../src/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTable',\n});\n</script>\n<template>\n <div class=\"dk-table\">\n <!--顶部菜单-->\n <DkTableHeader size=\"default\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </DkTableHeader>\n <!--表格-->\n <el-table\n ref=\"TableRef\"\n v-loading=\"DkTable.table.loading\"\n class=\"dk-data-table w100\"\n header-cell-class-name=\"table-header-cell\"\n :default-expand-all=\"DkTable.table.expandAll\"\n :data=\"DkTable.table.data\"\n :row-key=\"DkTable.table.pk\"\n stripe\n v-bind=\"$attrs\"\n @select-all=\"onSelectAll\"\n @select=\"onSelect\"\n @selection-change=\"onSelectionChange\"\n @sort-change=\"onSortChange\"\n @cell-dblclick=\"ondblclick\"\n >\n <slot name=\"columnPrepend\"></slot>\n <template v-for=\"(item, key) in DkTable.table.column\">\n <template v-if=\"item.show !== false\">\n <!-- 渲染为 slot -->\n <el-table-column v-if=\"item.slotName\" :key=\"key\" v-bind=\"{ ...item }\">\n <template #default=\"scope\">\n <slot :name=\"item.slotName\" v-bind=\"scope\">\n <dk-field-render\n :key=\"\n key +\n '-' +\n scope.$index +\n '-' +\n item.render +\n '-' +\n (item.prop ? '-' + item.prop + '-' + scope.row[item.prop] : '')\n \"\n :field=\"item\"\n :row=\"scope.row\"\n :column=\"scope.column\"\n :index=\"scope.$index\"\n />\n </slot>\n </template>\n </el-table-column>\n <el-table-column v-else :key=\"key + 'default'\" v-bind=\"{ ...item }\"></el-table-column>\n </template>\n </template>\n <slot name=\"columnAppend\"></slot>\n </el-table>\n\n <div class=\"table-pagination\">\n <el-pagination\n :current-page=\"DkTable.table.filter!.page\"\n :page-size=\"DkTable.table.filter!.limit\"\n :page-sizes=\"pageSizes\"\n background\n :layout=\"'sizes,total, ->, prev, pager, next, jumper'\"\n :total=\"DkTable.table.total\"\n @size-change=\"onTableSizeChange\"\n @current-change=\"onTableCurrentChange\"\n ></el-pagination>\n </div>\n </div>\n <dk-form ref=\"FormRef\" :is-dialog=\"true\" @submit=\"DkTable.onSubmit\">\n <template #buttons>\n <el-button type=\"primary\" :loading=\"DkTable.form.ref.buttonLoading\" @click=\"DkTable.form.ref.checkForm\">\n {{ DkTable.form.operateIds!.length > 0 ? '保存并编辑下一项' : '提交' }}\n </el-button>\n </template>\n </dk-form>\n <RecycleDialog></RecycleDialog>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, onMounted, nextTick, provide, computed } from 'vue'\nimport { tableProps } from './props'\nimport DkTableClass from '../utils/dkTable'\nimport DkTableHeader from './components/header.vue'\nimport DkFieldRender from './components/FieldRender.vue'\nimport RecycleDialog from './components/RecycleDialog.vue'\n\n\n\nconst props = defineProps(tableProps)\nconst FormRef = ref()\n// 表格的Ref\nconst TableRef = ref()\n// 表格的对象\nconst DkTable = new DkTableClass(props.tableApi)\n\nprovide('DkTable', DkTable)\n// 获取表格信息\nonMounted(() => {\n DkTable.getTable(props.cacheTable)?.then(() => {\n DkTable.getIndex()?.then(() => {\n nextTick(() => {\n DkTable.dragSort()\n })\n })\n DkTable.initComSearch()\n })\n DkTable.table.ref = TableRef.value\n DkTable.form.ref = FormRef.value\n})\n\nconst onTableSizeChange = (val: number) => {\n DkTable.onTableAction('page-size-change', { size: val })\n}\n\nconst onTableCurrentChange = (val: number) => {\n DkTable.onTableAction('current-page-change', { page: val })\n}\n\n// 双击\nconst ondblclick = (row: any) => {\n DkTable.toggleForm('Edit', [row[DkTable.table.pk!]])\n}\n\nconst onSortChange = ({ order, prop }: { order: string; prop: string }) => {\n DkTable.onTableAction('sort-change', {\n prop,\n order: order ? (order == 'ascending' ? 'asc' : 'desc') : '',\n })\n}\n\nconst pageSizes = computed(() => {\n const defaultSizes = [10, 20, 50, 100]\n if (DkTable.table.filter!.limit) {\n if (!defaultSizes.includes(DkTable.table.filter!.limit)) {\n defaultSizes.push(DkTable.table.filter!.limit)\n }\n }\n return defaultSizes\n})\n\n/*\n * 手动选择时,同时选择子级\n */\nconst onSelect = (selection: TableRow[], row: TableRow) => {\n if (\n selection.some((item: TableRow) => {\n return row[DkTable.table.pk!] === item[DkTable.table.pk!]\n })\n ) {\n if (row.children) {\n selectChildren(row.children, true)\n }\n } else {\n if (row.children) {\n selectChildren(row.children, false)\n }\n }\n}\n\n/**\n /*\n * 全选和取消全选\n * 实现子级同时选择和取消选中\n */\nconst onSelectAll = (selection: TableRow[]) => {\n if (isSelectAll(selection.map((row: TableRow) => row[DkTable.table.pk!].toString()))) {\n // eslint-disable-next-line array-callback-return\n selection.map((row: TableRow) => {\n if (row.children) {\n selectChildren(row.children, true)\n }\n })\n } else {\n TableRef.value?.clearSelection()\n }\n}\n\n/*\n * 是否是全选操作\n * 只检查第一个元素是否被选择\n * 全选时:selectIds为所有元素的id\n * 取消全选时:selectIds为所有子元素的id\n */\nconst isSelectAll = (selectIds: string[]) => {\n const data = DkTable.table.data as TableRow[]\n // eslint-disable-next-line no-unreachable-loop\n for (const key in data) {\n return selectIds.includes(data[key][DkTable.table.pk!].toString())\n }\n return false\n}\n\n/*\n * 选择子项-递归\n */\nconst selectChildren = (children: TableRow[], type: boolean) => {\n // eslint-disable-next-line array-callback-return\n children.map((j: TableRow) => {\n toggleSelection(j, type)\n if (j.children) {\n selectChildren(j.children, type)\n }\n })\n}\n\n/*\n * 执行选择操作\n */\nconst toggleSelection = (row: TableRow, type: boolean) => {\n if (row) {\n nextTick(() => {\n TableRef.value?.toggleRowSelection(row, type)\n })\n }\n}\n\n/*\n * 记录选择的项\n */\nconst onSelectionChange = (selection: TableRow[]) => {\n DkTable.onTableAction('selection-change', selection)\n}\n\n/*\n * 设置折叠所有-递归\n */\nconst setUnFoldAll = (children: TableRow[], unfold: boolean) => {\n for (const key in children) {\n TableRef.value?.toggleRowExpansion(children[key], unfold)\n if (children[key].children) {\n setUnFoldAll(children[key].children!, unfold)\n }\n }\n}\n\n/*\n * 折叠所有\n */\nconst unFoldAll = (unfold: boolean) => {\n setUnFoldAll(DkTable.table.data!, unfold)\n}\n\nconst slotNames = computed(() => {\n const column = DkTable.table.column\n const slotNames = []\n for (let i = 0; i < column.length; i++) {\n if (column[i].slotName) {\n slotNames.push(column[i].slotName)\n }\n }\n return slotNames\n})\n\nonMounted(() => {\n // injectTablePrimaryMethods()\n})\n\ndefineExpose({\n DkTable,\n TableRef,\n FormRef,\n})\n</script>\n<style lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","DkTableClass","slotNames"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"table.vue2.mjs","sources":["../../../src/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTable',\n});\n</script>\n<template>\n <div class=\"dk-table\">\n <!--顶部菜单-->\n <DkTableHeader size=\"default\" :buttons=\"buttons\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </DkTableHeader>\n <!--表格-->\n <el-table\n ref=\"TableRef\"\n v-loading=\"DkTable.table.loading\"\n class=\"dk-data-table w100\"\n header-cell-class-name=\"table-header-cell\"\n :default-expand-all=\"DkTable.table.expandAll\"\n :data=\"DkTable.table.data\"\n :row-key=\"DkTable.table.pk\"\n stripe\n v-bind=\"$attrs\"\n @select-all=\"onSelectAll\"\n @select=\"onSelect\"\n @selection-change=\"onSelectionChange\"\n @sort-change=\"onSortChange\"\n @cell-dblclick=\"ondblclick\"\n >\n <slot name=\"columnPrepend\"></slot>\n <template v-for=\"(item, key) in DkTable.table.column\">\n <template v-if=\"item.show !== false\">\n <!-- 渲染为 slot -->\n <el-table-column v-if=\"item.slotName\" :key=\"key\" v-bind=\"{ ...item }\">\n <template #default=\"scope\">\n <slot :name=\"item.slotName\" v-bind=\"scope\">\n <dk-field-render\n :key=\"\n key +\n '-' +\n scope.$index +\n '-' +\n item.render +\n '-' +\n (item.prop ? '-' + item.prop + '-' + scope.row[item.prop] : '')\n \"\n :field=\"item\"\n :row=\"scope.row\"\n :column=\"scope.column\"\n :index=\"scope.$index\"\n />\n </slot>\n </template>\n </el-table-column>\n <el-table-column v-else :key=\"key + 'default'\" v-bind=\"{ ...item }\"></el-table-column>\n </template>\n </template>\n <slot name=\"columnAppend\"></slot>\n </el-table>\n\n <div class=\"table-pagination\">\n <el-pagination\n :current-page=\"DkTable.table.filter!.page\"\n :page-size=\"DkTable.table.filter!.limit\"\n :page-sizes=\"pageSizes\"\n background\n :layout=\"'sizes,total, ->, prev, pager, next, jumper'\"\n :total=\"DkTable.table.total\"\n @size-change=\"onTableSizeChange\"\n @current-change=\"onTableCurrentChange\"\n ></el-pagination>\n </div>\n </div>\n <dk-form ref=\"FormRef\" :is-dialog=\"true\" @submit=\"DkTable.onSubmit\">\n <template #buttons>\n <el-button type=\"primary\" :loading=\"DkTable.form.ref.buttonLoading\" @click=\"DkTable.form.ref.checkForm\">\n {{ DkTable.form.operateIds!.length > 0 ? '保存并编辑下一项' : '提交' }}\n </el-button>\n </template>\n </dk-form>\n <RecycleDialog></RecycleDialog>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, onMounted, nextTick, provide, computed } from 'vue'\nimport { tableProps } from './props'\nimport DkTableClass from '../utils/dkTable'\nimport DkTableHeader from './components/header.vue'\nimport DkFieldRender from './components/FieldRender.vue'\nimport RecycleDialog from './components/RecycleDialog.vue'\n\n\n\nconst props = defineProps(tableProps)\nconst FormRef = ref()\n// 表格的Ref\nconst TableRef = ref()\n// 表格的对象\nconst DkTable = new DkTableClass(props.tableApi, props.tableBefore, props.tableAfter)\n\nprovide('DkTable', DkTable)\n// 获取表格信息\nonMounted(() => {\n DkTable.getTable(props.cacheTable)?.then(() => {\n DkTable.getIndex()?.then(() => {\n nextTick(() => {\n DkTable.dragSort()\n })\n })\n DkTable.initComSearch()\n })\n DkTable.table.ref = TableRef.value\n DkTable.form.ref = FormRef.value\n})\n\nconst onTableSizeChange = (val: number) => {\n DkTable.onTableAction('page-size-change', { size: val })\n}\n\nconst onTableCurrentChange = (val: number) => {\n DkTable.onTableAction('current-page-change', { page: val })\n}\n\n// 双击\nconst ondblclick = (row: any) => {\n DkTable.toggleForm('Edit', [row[DkTable.table.pk!]])\n}\n\nconst onSortChange = ({ order, prop }: { order: string; prop: string }) => {\n DkTable.onTableAction('sort-change', {\n prop,\n order: order ? (order == 'ascending' ? 'asc' : 'desc') : '',\n })\n}\n\nconst pageSizes = computed(() => {\n const defaultSizes = [10, 20, 50, 100]\n if (DkTable.table.filter!.limit) {\n if (!defaultSizes.includes(DkTable.table.filter!.limit)) {\n defaultSizes.push(DkTable.table.filter!.limit)\n }\n }\n return defaultSizes\n})\n\n/*\n * 手动选择时,同时选择子级\n */\nconst onSelect = (selection: TableRow[], row: TableRow) => {\n if (\n selection.some((item: TableRow) => {\n return row[DkTable.table.pk!] === item[DkTable.table.pk!]\n })\n ) {\n if (row.children) {\n selectChildren(row.children, true)\n }\n } else {\n if (row.children) {\n selectChildren(row.children, false)\n }\n }\n}\n\n/**\n /*\n * 全选和取消全选\n * 实现子级同时选择和取消选中\n */\nconst onSelectAll = (selection: TableRow[]) => {\n if (isSelectAll(selection.map((row: TableRow) => row[DkTable.table.pk!].toString()))) {\n // eslint-disable-next-line array-callback-return\n selection.map((row: TableRow) => {\n if (row.children) {\n selectChildren(row.children, true)\n }\n })\n } else {\n TableRef.value?.clearSelection()\n }\n}\n\n/*\n * 是否是全选操作\n * 只检查第一个元素是否被选择\n * 全选时:selectIds为所有元素的id\n * 取消全选时:selectIds为所有子元素的id\n */\nconst isSelectAll = (selectIds: string[]) => {\n const data = DkTable.table.data as TableRow[]\n // eslint-disable-next-line no-unreachable-loop\n for (const key in data) {\n return selectIds.includes(data[key][DkTable.table.pk!].toString())\n }\n return false\n}\n\n/*\n * 选择子项-递归\n */\nconst selectChildren = (children: TableRow[], type: boolean) => {\n // eslint-disable-next-line array-callback-return\n children.map((j: TableRow) => {\n toggleSelection(j, type)\n if (j.children) {\n selectChildren(j.children, type)\n }\n })\n}\n\n/*\n * 执行选择操作\n */\nconst toggleSelection = (row: TableRow, type: boolean) => {\n if (row) {\n nextTick(() => {\n TableRef.value?.toggleRowSelection(row, type)\n })\n }\n}\n\n/*\n * 记录选择的项\n */\nconst onSelectionChange = (selection: TableRow[]) => {\n DkTable.onTableAction('selection-change', selection)\n}\n\n/*\n * 设置折叠所有-递归\n */\nconst setUnFoldAll = (children: TableRow[], unfold: boolean) => {\n for (const key in children) {\n TableRef.value?.toggleRowExpansion(children[key], unfold)\n if (children[key].children) {\n setUnFoldAll(children[key].children!, unfold)\n }\n }\n}\n\n/*\n * 折叠所有\n */\nconst unFoldAll = (unfold: boolean) => {\n setUnFoldAll(DkTable.table.data!, unfold)\n}\n\nconst slotNames = computed(() => {\n const column = DkTable.table.column\n const slotNames = []\n for (let i = 0; i < column.length; i++) {\n if (column[i].slotName) {\n slotNames.push(column[i].slotName)\n }\n }\n return slotNames\n})\n\nonMounted(() => {\n // injectTablePrimaryMethods()\n})\n\ndefineExpose({\n DkTable,\n TableRef,\n FormRef,\n})\n</script>\n<style lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","DkTableClass","slotNames"],"mappings":"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"}
|
@@ -38,7 +38,7 @@ export default class dkTable {
|
|
38
38
|
/**
|
39
39
|
* 获取回收站列表
|
40
40
|
*/
|
41
|
-
getRecycleIndex: () => Promise<void
|
41
|
+
getRecycleIndex: () => Promise<void> | undefined;
|
42
42
|
/**
|
43
43
|
* 获取回收站表格
|
44
44
|
* @param cache
|
@@ -62,6 +62,7 @@ export default class dkTable {
|
|
62
62
|
* @param column 列上下文数据
|
63
63
|
*/
|
64
64
|
onTableDblclick: (row: TableRow, column: TableColumnCtx<TableRow>) => void;
|
65
|
+
exportCsv: () => void;
|
65
66
|
/**
|
66
67
|
* 打开表单
|
67
68
|
* @param operate 操作:Add=添加,Edit=编辑
|
@@ -142,6 +142,8 @@ class dkTable {
|
|
142
142
|
* 显示回收站
|
143
143
|
*/
|
144
144
|
async showRecycle() {
|
145
|
+
if (!this.runBefore("getRecycleTable"))
|
146
|
+
return;
|
145
147
|
this.recycleTable.showDialogLoading = true;
|
146
148
|
if (this.recycleTable.column.length <= 0) {
|
147
149
|
await this.getRecycleTable();
|
@@ -154,6 +156,8 @@ class dkTable {
|
|
154
156
|
* 获取回收站列表
|
155
157
|
*/
|
156
158
|
getRecycleIndex = () => {
|
159
|
+
if (!this.runBefore("getRecycleIndex"))
|
160
|
+
return;
|
157
161
|
this.recycleTable.loading = true;
|
158
162
|
return this.api.recycle(this.recycleTable.filter).then((res) => {
|
159
163
|
this.recycleTable.data = res.data.list;
|
@@ -333,6 +337,36 @@ class dkTable {
|
|
333
337
|
this.runAfter("onTableDblclick", { row, column });
|
334
338
|
}
|
335
339
|
};
|
340
|
+
exportCsv = () => {
|
341
|
+
const header = this.table.column;
|
342
|
+
const headerMap = new Map(
|
343
|
+
header.filter((item) => item !== void 0 && item.label !== void 0 && item.export).map((item) => [item.label, item.prop])
|
344
|
+
);
|
345
|
+
const headerLabels = Array.from(headerMap.keys());
|
346
|
+
function jsonToCsv(data) {
|
347
|
+
let csvContent = headerLabels.join(",") + "\n";
|
348
|
+
data.forEach((row) => {
|
349
|
+
const line = [];
|
350
|
+
headerLabels.forEach((label) => {
|
351
|
+
const prop = headerMap.get(label);
|
352
|
+
const value = String(row[prop]);
|
353
|
+
line.push(`"${value.replace(/"/g, '""').replace(/[\n\r]/g, " ")}"`);
|
354
|
+
});
|
355
|
+
csvContent += line.join(",") + "\n";
|
356
|
+
});
|
357
|
+
return csvContent;
|
358
|
+
}
|
359
|
+
function downloadCsv(csvContent, fileName) {
|
360
|
+
const link = document.createElement("a");
|
361
|
+
link.setAttribute("href", "data:text/csv;charset=utf-8," + encodeURIComponent(csvContent));
|
362
|
+
link.setAttribute("download", fileName + ".csv");
|
363
|
+
document.body.appendChild(link);
|
364
|
+
link.click();
|
365
|
+
document.body.removeChild(link);
|
366
|
+
}
|
367
|
+
const csvStr = jsonToCsv(this.table.selection);
|
368
|
+
downloadCsv(csvStr, "export_data");
|
369
|
+
};
|
336
370
|
/**
|
337
371
|
* 打开表单
|
338
372
|
* @param operate 操作:Add=添加,Edit=编辑
|
@@ -424,6 +458,12 @@ class dkTable {
|
|
424
458
|
this.toggleForm("Add");
|
425
459
|
}
|
426
460
|
],
|
461
|
+
[
|
462
|
+
"export_csv",
|
463
|
+
() => {
|
464
|
+
this.exportCsv();
|
465
|
+
}
|
466
|
+
],
|
427
467
|
[
|
428
468
|
"edit",
|
429
469
|
() => {
|