@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.
@@ -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 _hoisted_4 = { class: "m-l-5px" };
21
- const _hoisted_5 = /* @__PURE__ */ createElementVNode(
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 _hoisted_6 = { class: "table-header-operate-text" };
29
- const _hoisted_7 = /* @__PURE__ */ createElementVNode(
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 _hoisted_8 = { class: "table-search" };
37
- const _hoisted_9 = { class: "mr-1" };
38
- const _hoisted_10 = { class: "table-search-button-group" };
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("edit") && unref(DkTable).auth("edit") ? (openBlock(), createBlock(_component_el_tooltip, {
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[2] || (_cache[2] = ($event) => onAction("edit"))
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
- _hoisted_3
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: 3,
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[3] || (_cache[3] = ($event) => onAction("delete"))
249
+ onConfirm: _cache[4] || (_cache[4] = ($event) => onAction("delete"))
218
250
  }, {
219
251
  reference: withCtx(() => [
220
- createElementVNode("div", _hoisted_4, [
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
- _hoisted_5
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: 4,
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[4] || (_cache[4] = ($event) => unref(DkTable).onTableHeaderAction("unfold", {
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
- _hoisted_6,
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[5] || (_cache[5] = ($event) => onAction("recycle"))
322
+ onClick: _cache[6] || (_cache[6] = ($event) => onAction("recycle"))
291
323
  }, {
292
324
  default: withCtx(() => [
293
- _hoisted_7
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", _hoisted_8, [
305
- createElementVNode("div", _hoisted_9, [
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[6] || (_cache[6] = ($event) => unref(DkTable).table.filter.quickSearch = $event),
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[7] || (_cache[7] = ($event) => unref(debounce)(onSearchInput, 500)())
344
+ onInput: _cache[8] || (_cache[8] = ($event) => unref(debounce)(onSearchInput, 500)())
313
345
  }, null, 8, ["modelValue", "size"])
314
346
  ]),
315
- createElementVNode("div", _hoisted_10, [
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[8] || (_cache[8] = ($event) => unref(DkTable).table.showComSearch = !unref(DkTable).table.showComSearch)
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,eAAA;AACR,CAAC,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAwJD,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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>;
@@ -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
- DkTableHeader,
150
- { size: "default" },
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
- ]),
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
  () => {