@ctzy-web-client/plugin-component-vue 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.
Files changed (132) hide show
  1. package/es/advance-select/advance-operation.mjs +51 -37
  2. package/es/advance-select/advance-option.mjs +167 -97
  3. package/es/advance-select/advance-option.vue_vue_type_style_index_0_scoped_bc8f5626_lang.mjs +7 -0
  4. package/es/advance-select/advance-select.mjs +368 -310
  5. package/es/advance-select/index.mjs +5 -5
  6. package/es/application-slot/breadcrumb-item.mjs +20 -17
  7. package/es/application-slot/header-tools-item.mjs +20 -17
  8. package/es/breadcrumb-select/breadcrumb-select.mjs +134 -112
  9. package/es/contextmenu/contextmenu-item.mjs +19 -15
  10. package/es/contextmenu/contextmenu.mjs +72 -56
  11. package/es/data-form/data-form-item.mjs +48 -30
  12. package/es/data-form/data-form.mjs +213 -166
  13. package/es/data-form/form-components/bwa-date-picker.mjs +51 -39
  14. package/es/data-form/form-components/bwa-date-time-picker.mjs +56 -44
  15. package/es/data-form/form-components/bwa-input-float.mjs +48 -37
  16. package/es/data-form/form-components/bwa-input-integer.mjs +68 -50
  17. package/es/data-form/form-components/bwa-input.mjs +43 -32
  18. package/es/data-form/form-components/bwa-multi-select.mjs +40 -29
  19. package/es/data-form/form-components/bwa-rich-text-tinymce.mjs +554 -218
  20. package/es/data-form/form-components/bwa-rich-text.mjs +404 -316
  21. package/es/data-form/form-components/bwa-select.mjs +84 -70
  22. package/es/data-form/form-components/bwa-textarea.mjs +38 -27
  23. package/es/data-form/form-components/bwa-upload.mjs +172 -148
  24. package/es/data-form/form-components/bwa-user-multi-select.mjs +35 -24
  25. package/es/data-form/form-components/bwa-user-select.mjs +86 -61
  26. package/es/data-table/data-column-view.mjs +146 -115
  27. package/es/data-table/data-table-card.mjs +48 -40
  28. package/es/data-table/data-table-column.mjs +58 -45
  29. package/es/data-table/data-table.mjs +402 -316
  30. package/es/datatable-settings/datatable-settings.mjs +329 -254
  31. package/es/date-range/date-picker.mjs +130 -116
  32. package/es/date-range/date-range.mjs +215 -168
  33. package/es/drag-list/drag-item.mjs +56 -42
  34. package/es/drag-list/drag-list.mjs +60 -47
  35. package/es/dragable/dragable-item.mjs +23 -18
  36. package/es/dragable/dragable-operation.mjs +32 -24
  37. package/es/dragable/dragable.mjs +32 -23
  38. package/es/filter-panel/conditions/date-range-condition.mjs +50 -40
  39. package/es/filter-panel/conditions/department-condition/department-condition.mjs +99 -72
  40. package/es/filter-panel/conditions/department-condition/department-node.mjs +73 -59
  41. package/es/filter-panel/conditions/input-condition.mjs +90 -76
  42. package/es/filter-panel/conditions/multi-user-condition.mjs +67 -57
  43. package/es/filter-panel/conditions/multiple-menu-condition.mjs +54 -35
  44. package/es/filter-panel/conditions/single-menu-condition.mjs +65 -60
  45. package/es/filter-panel/conditions/single-user-condition.mjs +67 -57
  46. package/es/filter-panel/filter-panel-item.mjs +54 -39
  47. package/es/filter-panel/filter-panel.mjs +153 -135
  48. package/es/layout/layout.mjs +85 -78
  49. package/es/menu/menu-item.mjs +67 -52
  50. package/es/menu/menu.mjs +70 -53
  51. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +28 -0
  52. package/es/panel/panel.mjs +53 -40
  53. package/es/pct-filter-panel/pct-compents/pct-Input-condition.mjs +74 -63
  54. package/es/pct-filter-panel/pct-compents/pct-date-range-condition.mjs +76 -67
  55. package/es/pct-filter-panel/pct-compents/pct-multiple-menu-condition.mjs +406 -178
  56. package/es/pct-filter-panel/pct-compents/pct-multiple-menu-condition2.mjs +153 -138
  57. package/es/pct-filter-panel/pct-filter-panel-item.mjs +55 -40
  58. package/es/pct-filter-panel/pct-filter-panel.mjs +247 -227
  59. package/es/progress/progress-item.mjs +81 -61
  60. package/es/progress/progress.mjs +78 -64
  61. package/es/where-filter-panel/where-filter-panel.mjs +15 -12
  62. package/lib/advance-select/advance-operation.js +50 -36
  63. package/lib/advance-select/advance-option.js +166 -96
  64. package/lib/advance-select/advance-option.vue_vue_type_style_index_0_scoped_bc8f5626_lang.js +12 -0
  65. package/lib/advance-select/advance-select.js +366 -308
  66. package/lib/application-slot/breadcrumb-item.js +19 -16
  67. package/lib/application-slot/header-tools-item.js +19 -16
  68. package/lib/breadcrumb-select/breadcrumb-select.js +133 -111
  69. package/lib/contextmenu/contextmenu-item.js +18 -14
  70. package/lib/contextmenu/contextmenu.js +71 -55
  71. package/lib/data-form/data-form-item.js +47 -29
  72. package/lib/data-form/data-form.js +212 -165
  73. package/lib/data-form/form-components/bwa-date-picker.js +50 -38
  74. package/lib/data-form/form-components/bwa-date-time-picker.js +55 -43
  75. package/lib/data-form/form-components/bwa-input-float.js +47 -36
  76. package/lib/data-form/form-components/bwa-input-integer.js +67 -49
  77. package/lib/data-form/form-components/bwa-input.js +42 -31
  78. package/lib/data-form/form-components/bwa-multi-select.js +39 -28
  79. package/lib/data-form/form-components/bwa-rich-text-tinymce.js +553 -217
  80. package/lib/data-form/form-components/bwa-rich-text.js +403 -315
  81. package/lib/data-form/form-components/bwa-select.js +83 -69
  82. package/lib/data-form/form-components/bwa-textarea.js +37 -26
  83. package/lib/data-form/form-components/bwa-upload.js +171 -147
  84. package/lib/data-form/form-components/bwa-user-multi-select.js +34 -23
  85. package/lib/data-form/form-components/bwa-user-select.js +85 -60
  86. package/lib/data-table/data-column-view.js +146 -115
  87. package/lib/data-table/data-table-card.js +48 -40
  88. package/lib/data-table/data-table-column.js +57 -44
  89. package/lib/data-table/data-table.js +401 -315
  90. package/lib/datatable-settings/datatable-settings.js +328 -253
  91. package/lib/date-range/date-picker.js +129 -115
  92. package/lib/date-range/date-range.js +213 -170
  93. package/lib/drag-list/drag-item.js +55 -41
  94. package/lib/drag-list/drag-list.js +59 -46
  95. package/lib/dragable/dragable-item.js +22 -17
  96. package/lib/dragable/dragable-operation.js +31 -23
  97. package/lib/dragable/dragable.js +31 -22
  98. package/lib/filter-panel/conditions/date-range-condition.js +49 -39
  99. package/lib/filter-panel/conditions/department-condition/department-condition.js +98 -71
  100. package/lib/filter-panel/conditions/department-condition/department-node.js +72 -58
  101. package/lib/filter-panel/conditions/input-condition.js +89 -75
  102. package/lib/filter-panel/conditions/multi-user-condition.js +66 -56
  103. package/lib/filter-panel/conditions/multiple-menu-condition.js +53 -34
  104. package/lib/filter-panel/conditions/single-menu-condition.js +64 -59
  105. package/lib/filter-panel/conditions/single-user-condition.js +66 -56
  106. package/lib/filter-panel/filter-panel-item.js +53 -38
  107. package/lib/filter-panel/filter-panel.js +152 -134
  108. package/lib/layout/layout.js +84 -77
  109. package/lib/menu/menu-item.js +66 -51
  110. package/lib/menu/menu.js +69 -52
  111. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +32 -0
  112. package/lib/panel/panel.js +52 -39
  113. package/lib/pct-filter-panel/pct-compents/pct-Input-condition.js +73 -62
  114. package/lib/pct-filter-panel/pct-compents/pct-date-range-condition.js +75 -66
  115. package/lib/pct-filter-panel/pct-compents/pct-multiple-menu-condition.js +405 -177
  116. package/lib/pct-filter-panel/pct-compents/pct-multiple-menu-condition2.js +152 -137
  117. package/lib/pct-filter-panel/pct-filter-panel-item.js +54 -39
  118. package/lib/pct-filter-panel/pct-filter-panel.js +246 -226
  119. package/lib/progress/progress-item.js +80 -60
  120. package/lib/progress/progress.js +77 -63
  121. package/lib/where-filter-panel/where-filter-panel.js +14 -11
  122. package/package.json +2 -1
  123. package/src/advance-select/advance-option.vue +64 -13
  124. package/src/data-form/form-components/bwa-rich-text-tinymce.vue +1 -1
  125. package/src/datatable-settings/datatable-settings.vue +33 -3
  126. package/src/date-range/date-picker.vue +1 -1
  127. package/src/date-range/date-range.vue +3 -3
  128. package/src/filter-panel/filter-panel.vue +2 -2
  129. package/src/pct-filter-panel/pct-compents/pct-Input-condition.vue +64 -64
  130. package/src/pct-filter-panel/pct-compents/pct-date-range-condition.vue +61 -61
  131. package/src/pct-filter-panel/pct-compents/pct-multiple-menu-condition.vue +302 -178
  132. package/src/pct-filter-panel/pct-filter-panel.vue +4 -4
@@ -12,311 +12,391 @@ var lodash = require('lodash');
12
12
  var rxjs = require('rxjs');
13
13
  var _pluginVue_exportHelper = require('../_virtual/_plugin-vue_export-helper.js');
14
14
 
15
- const _hoisted_1 = /* @__PURE__ */ vue.createElementVNode("i", { class: "ptp-icon ptp-buzhou-yidong" }, null, -1);
16
- const __default__ = vue.defineComponent({ name: "BwaDataTable" });
17
- const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
18
- props: {
19
- dataTable: {
20
- type: Object,
21
- required: true
22
- },
23
- autoLoad: {
24
- type: Boolean,
25
- default: true
26
- },
27
- showIndex: {
28
- type: Boolean,
29
- default: false
30
- },
31
- indexColumnLabel: {
32
- type: String,
33
- default: "\u7F16\u53F7"
34
- },
35
- selection: {
36
- type: Boolean,
37
- default: false
38
- },
39
- paginationLayout: {
40
- type: String,
41
- default: "sizes, prev, pager, next, jumper"
42
- },
43
- paginationPageSizes: {
44
- type: Array,
45
- default: () => [10, 20, 50, 100, 200]
46
- },
47
- showPagination: {
48
- type: Boolean,
49
- default: true
50
- },
51
- whereParamName: {
52
- type: String,
53
- default: ""
54
- },
55
- showDrag: {
56
- type: Boolean,
57
- default: false
58
- },
59
- border: {
60
- type: Boolean,
61
- default: true
62
- }
63
- },
64
- emits: ["drag"],
15
+ const _hoisted_1 = /*#__PURE__*/vue.createElementVNode("i", { class: "ptp-icon ptp-buzhou-yidong" }, null, -1 /* HOISTED */);
16
+
17
+
18
+ const _sfc_main = {
19
+ __name: 'data-table',
20
+ props: {
21
+ dataTable: {
22
+ type: Object,
23
+ required: true,
24
+ },
25
+ autoLoad: {
26
+ type: Boolean,
27
+ default: true,
28
+ },
29
+ showIndex: {
30
+ type: Boolean,
31
+ default: false,
32
+ },
33
+ indexColumnLabel: {
34
+ type: String,
35
+ default: '编号',
36
+ },
37
+ selection: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ paginationLayout: {
42
+ type: String,
43
+ default: 'sizes, prev, pager, next, jumper',
44
+ },
45
+ paginationPageSizes: {
46
+ type: Array,
47
+ default: () => [10, 20, 50, 100, 200],
48
+ },
49
+ showPagination: {
50
+ type: Boolean,
51
+ default: true,
52
+ },
53
+ whereParamName: {
54
+ type: String,
55
+ default: '',
56
+ },
57
+ showDrag: {
58
+ type: Boolean,
59
+ default: false,
60
+ },
61
+ border: {
62
+ type: Boolean,
63
+ default: true,
64
+ }
65
+ },
66
+ emits: ['drag'],
65
67
  setup(__props, { emit }) {
66
- var _a;
67
- const props = __props;
68
- const attrs = vue.useAttrs();
69
- const userService = webBaseClientVue.useService("UserService");
70
- const elTable = vue.ref(null);
71
- const dataTable = props.dataTable;
72
- dataTable._userService = (_a = userService.value) == null ? void 0 : _a.getUserList;
73
- const dataTableEl = vue.ref(null);
74
- const displayColumns = vue.computed(
75
- () => vue.unref(dataTable).getDisplayColumns() || []
76
- );
77
- vue.watch(
78
- vue.computed(() => props.whereParamName),
79
- (whereParamName) => {
80
- dataTable.setWhereParamName(whereParamName || "");
81
- },
82
- { immediate: true, flush: "sync" }
83
- );
84
- const searchParams = vue.computed(() => props.searchParams);
85
- const debounceDelay = webBaseClientVue.useGlobalConfig("debounceDelay", 500);
86
- vue.provide(
87
- webBaseClientVue.dataTableKey,
88
- vue.reactive({
89
- dataTable,
90
- displayColumns
91
- })
92
- );
93
- const ns = webBaseClientVue.useNamespace("datatable");
94
- const { barRectangle } = useDatatableDrag.useDataTableDrag(
95
- dataTableEl,
96
- ".bwa-datatable__drag",
97
- ".el-table__row",
98
- { emit }
99
- );
100
- const processing = vue.ref(false);
101
- const data = vue.computed(() => {
102
- return props.dataTable.data;
103
- });
104
- webBaseClientVue.useEventDispatcher(dataTable, "load-successfully", async (res) => {
105
- if (res.code != 0) {
106
- return;
107
- }
108
- const _userService = vue.unref(userService);
109
- if (!_userService) {
110
- return;
111
- }
112
- let columns = dataTable.getColumns();
113
- const componentNames = ["BwaUserSelect", "BwaUserMultiSelect"];
114
- columns = columns.filter((column) => componentNames.includes(column.formComponent)).filter((column) => column.visible).filter((column) => column.isExtend);
115
- if (!columns.length) {
116
- return;
117
- }
118
- processing.value = true;
119
- const data2 = res.data;
120
- let ids = data2.reduce((result, item) => {
121
- return result.concat(
122
- columns.reduce((result2, column) => {
123
- let value = lodash.get(item, column.fullAttrName);
124
- value = Array.isArray(value) ? value : value ? [value] : [];
125
- return result2.concat(value);
126
- }, [])
127
- );
128
- }, []).map((id) => id + "");
129
- ids = [...new Set(ids)];
130
- try {
131
- const userListResult = await _userService.getUserListByIds(ids);
132
- if (userListResult.code != 0) {
133
- return;
134
- }
135
- for (const column of columns) {
136
- column.componentProps = column.componentProps || {};
137
- column.componentProps.options = (userListResult.data || []).map(
138
- (item) => ({
139
- label: item.label,
140
- value: item.value
141
- })
142
- );
143
- }
144
- console.log(userListResult);
145
- } finally {
146
- processing.value = false;
147
- }
148
- });
149
- const sortHandle = (column, prop, order) => {
150
- let sortColumn2 = "";
151
- let sortType = "";
152
- if (column.order) {
153
- sortColumn2 = column.prop;
154
- sortType = column.order == "descending" ? 0 : 1;
155
- dataTable.setParam("sortColumn", sortColumn2);
156
- dataTable.setParam("sortType", sortType);
157
- } else {
158
- dataTable.setParam("sortColumn", sortColumn2);
159
- dataTable.setParam("sortType", sortType);
160
- }
161
- dataTable.load();
162
- };
163
- webBaseClientVue.useEventDispatcher(dataTable, "load-successfully", (res) => {
164
- if (!elTable.value) {
165
- return;
166
- }
167
- vue.unref(elTable).store.updateSelectionByRowKey();
168
- if (res.code != 0) {
169
- ElementPlus.ElMessage.error(res.msg);
170
- }
171
- });
172
- function sortColumn(array) {
173
- array.forEach((item) => {
174
- var _a2, _b;
175
- item.no = (_a2 = item.getColumnIndex) == null ? void 0 : _a2.call(item);
176
- if ((_b = item.children) == null ? void 0 : _b.length) {
177
- sortColumn(item.children);
178
- }
179
- });
180
- array.sort((cur, pre) => cur.no - pre.no);
181
- }
182
- const tableSelectSubject = new rxjs.Subject();
183
- const selectionChange = tableSelectSubject.next.bind(tableSelectSubject);
184
- const totalPage = vue.computed(() => dataTable.getTotalPage());
185
- const tableSelectSubscription = tableSelectSubject.pipe(rxjs.debounceTime(debounceDelay)).subscribe(vue.unref(dataTable).setSelection.bind(vue.unref(dataTable)));
186
- const selectChangeAPIObservable = new rxjs.Observable(
187
- (observer) => webBaseClientVue.useEventDispatcher(
188
- props.dataTable,
189
- "select-change",
190
- observer.next.bind(observer)
191
- )
192
- ).pipe(
193
- rxjs.filter((selection) => {
194
- if (!vue.unref(elTable)) {
195
- return false;
196
- }
197
- const selectionRows = vue.unref(elTable).getSelectionRows();
198
- if (selectionRows.length !== selection.length) {
199
- return true;
200
- }
201
- const primaryKey = dataTable.primaryKey;
202
- return !selectionRows.every(
203
- (item) => selection.find((itm) => item[primaryKey] === item[primaryKey])
204
- );
205
- })
206
- ).subscribe((selection) => {
207
- vue.unref(elTable).clearSelection();
208
- for (const item of selection) {
209
- vue.unref(elTable).toggleRowSelection(item, true);
210
- }
211
- });
212
- if (props.autoLoad) {
213
- dataTable.load();
214
- }
215
- const searchParamsSubscription = new rxjs.Observable(
216
- (observer) => webBaseClientVue.useEventDispatcher(
217
- props.dataTable.filterPanel,
218
- "params-change",
219
- observer.next.bind(observer)
220
- )
221
- ).pipe(
222
- rxjs.filter(() => props.dataTable.filterPanel.ready),
223
- rxjs.debounceTime(vue.unref(debounceDelay))
224
- ).subscribe(() => {
225
- props.dataTable.load();
226
- });
227
- const subscription = props.dataTable.getDisplayColumnsSubject().pipe(
228
- rxjs.map(() => vue.unref(elTable)),
229
- rxjs.delayWhen(() => rxjs.from(vue.nextTick())),
230
- rxjs.map((elTable2) => elTable2 == null ? void 0 : elTable2.store),
231
- rxjs.skipWhile((store) => !store)
232
- ).subscribe((store) => {
233
- sortColumn(vue.unref(store.states._columns));
234
- store.updateColumns();
235
- store.scheduleLayout();
236
- });
237
- vue.onUnmounted(() => {
238
- selectChangeAPIObservable.unsubscribe();
239
- subscription.unsubscribe();
240
- tableSelectSubscription.unsubscribe();
241
- searchParamsSubscription.unsubscribe();
242
- });
243
- return (_ctx, _cache) => {
244
- return vue.openBlock(), vue.createElementBlock("div", {
245
- class: vue.normalizeClass(vue.unref(ns).b()),
246
- ref_key: "dataTableEl",
247
- ref: dataTableEl
248
- }, [
249
- vue.renderSlot(_ctx.$slots, "default", { dataTable: vue.unref(dataTable) }, () => [
250
- vue.createVNode(vue.unref(ElementPlus.ElTable), vue.mergeProps({
251
- class: "content",
252
- height: "100%",
253
- ref_key: "elTable",
254
- ref: elTable,
255
- data: vue.unref(data),
256
- "row-key": vue.unref(dataTable).primaryKey,
257
- "show-header": "",
258
- stripe: ""
259
- }, vue.unref(attrs), {
260
- onSelectionChange: vue.unref(selectionChange),
261
- onSortChange: sortHandle,
262
- border: __props.border
263
- }), {
264
- empty: vue.withCtx(() => [
265
- vue.renderSlot(_ctx.$slots, "empty-table")
266
- ]),
267
- default: vue.withCtx(() => [
268
- __props.showDrag ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElTableColumn), {
68
+
69
+ const props = __props;
70
+
71
+ defineOptions({ name: 'BwaDataTable' });
72
+
73
+
74
+
75
+ const attrs = vue.useAttrs();
76
+
77
+ const userService = webBaseClientVue.useService('UserService');
78
+
79
+ const elTable = vue.ref(null);
80
+
81
+ const dataTable = props.dataTable;
82
+ dataTable._userService = userService.value?.getUserList;
83
+
84
+ const dataTableEl = vue.ref(null);
85
+
86
+ const displayColumns = vue.computed(
87
+ () => vue.unref(dataTable).getDisplayColumns() || []
88
+ );
89
+
90
+ vue.watch(
91
+ vue.computed(() => props.whereParamName),
92
+ (whereParamName) => {
93
+ dataTable.setWhereParamName(whereParamName || '');
94
+ },
95
+ { immediate: true, flush: 'sync' }
96
+ );
97
+
98
+ const searchParams = vue.computed(() => props.searchParams);
99
+
100
+
101
+
102
+ const debounceDelay = webBaseClientVue.useGlobalConfig('debounceDelay', 500);
103
+
104
+ //当前data table 上下文对象
105
+ vue.provide(
106
+ webBaseClientVue.dataTableKey,
107
+ vue.reactive({
108
+ dataTable,
109
+ displayColumns,
110
+ })
111
+ );
112
+
113
+ const ns = webBaseClientVue.useNamespace('datatable');
114
+
115
+ const { barRectangle } = useDatatableDrag.useDataTableDrag(
116
+ dataTableEl,
117
+ '.bwa-datatable__drag',
118
+ '.el-table__row',
119
+ { emit }
120
+ );
121
+
122
+ const processing = vue.ref(false);
123
+
124
+ const data = vue.computed(() => {
125
+ return props.dataTable.data;
126
+ });
127
+
128
+ webBaseClientVue.useEventDispatcher(dataTable, 'load-successfully', async (res) => {
129
+ if (res.code != 0) {
130
+ return;
131
+ }
132
+
133
+ const _userService = vue.unref(userService);
134
+
135
+ if (!_userService) {
136
+ return;
137
+ }
138
+
139
+ let columns = dataTable.getColumns();
140
+
141
+ const componentNames = ['BwaUserSelect', 'BwaUserMultiSelect'];
142
+
143
+ columns = columns
144
+ .filter((column) => componentNames.includes(column.formComponent))
145
+ .filter((column) => column.visible)
146
+ .filter((column) => column.isExtend);
147
+
148
+ if (!columns.length) {
149
+ return;
150
+ }
151
+
152
+ processing.value = true;
153
+
154
+ const data = res.data;
155
+
156
+ let ids = data
157
+ .reduce((result, item) => {
158
+ return result.concat(
159
+ columns.reduce((result, column) => {
160
+ let value = lodash.get(item, column.fullAttrName);
161
+
162
+ value = Array.isArray(value) ? value : value ? [value] : [];
163
+
164
+ return result.concat(value);
165
+ }, [])
166
+ );
167
+ }, [])
168
+ .map((id) => id + '');
169
+
170
+ ids = [...new Set(ids)];
171
+
172
+ try {
173
+ const userListResult = await _userService.getUserListByIds(ids);
174
+
175
+ if (userListResult.code != 0) {
176
+ return;
177
+ }
178
+
179
+ for (const column of columns) {
180
+ column.componentProps = column.componentProps || {};
181
+ column.componentProps.options = (userListResult.data || []).map(
182
+ (item) => ({
183
+ label: item.label,
184
+ value: item.value,
185
+ })
186
+ );
187
+ }
188
+
189
+ console.log(userListResult);
190
+ } finally {
191
+ processing.value = false;
192
+ }
193
+ });
194
+
195
+ //手动排序
196
+ const sortHandle = (column, prop, order) => {
197
+ let sortColumn = '';
198
+ let sortType = '';
199
+ if (column.order){
200
+ sortColumn = column.prop;
201
+ sortType = column.order=="descending"?0:1;
202
+ dataTable.setParam('sortColumn', sortColumn);
203
+ dataTable.setParam('sortType', sortType);
204
+ }else {
205
+ dataTable.setParam('sortColumn', sortColumn);
206
+ dataTable.setParam('sortType', sortType);
207
+ }
208
+ dataTable.load();
209
+ };
210
+
211
+ webBaseClientVue.useEventDispatcher(dataTable, 'load-successfully', (res) => {
212
+ if (!elTable.value) {
213
+ return;
214
+ }
215
+
216
+ vue.unref(elTable).store.updateSelectionByRowKey();
217
+
218
+ if (res.code != 0) {
219
+ ElementPlus.ElMessage.error(res.msg);
220
+ }
221
+ });
222
+
223
+ function sortColumn(array) {
224
+ array.forEach((item) => {
225
+ item.no = item.getColumnIndex?.();
226
+ if (item.children?.length) {
227
+ sortColumn(item.children);
228
+ }
229
+ });
230
+ array.sort((cur, pre) => cur.no - pre.no);
231
+ }
232
+
233
+ const tableSelectSubject = new rxjs.Subject();
234
+ const selectionChange = tableSelectSubject.next.bind(tableSelectSubject);
235
+
236
+ const totalPage = vue.computed(() => dataTable.getTotalPage());
237
+
238
+ const tableSelectSubscription = tableSelectSubject
239
+ .pipe(rxjs.debounceTime(debounceDelay))
240
+ .subscribe(vue.unref(dataTable).setSelection.bind(vue.unref(dataTable)));
241
+
242
+ const selectChangeAPIObservable = new rxjs.Observable((observer) =>
243
+ webBaseClientVue.useEventDispatcher(
244
+ props.dataTable,
245
+ 'select-change',
246
+ observer.next.bind(observer)
247
+ )
248
+ )
249
+ .pipe(
250
+ rxjs.filter((selection) => {
251
+ if (!vue.unref(elTable)) {
252
+ return false;
253
+ }
254
+
255
+ const selectionRows = vue.unref(elTable).getSelectionRows();
256
+
257
+ if (selectionRows.length !== selection.length) {
258
+ return true;
259
+ }
260
+
261
+ const primaryKey = dataTable.primaryKey;
262
+ return !selectionRows.every((item) =>
263
+ selection.find((itm) => item[primaryKey] === item[primaryKey])
264
+ );
265
+ })
266
+ )
267
+ .subscribe((selection) => {
268
+ vue.unref(elTable).clearSelection();
269
+ for (const item of selection) {
270
+ vue.unref(elTable).toggleRowSelection(item, true);
271
+ }
272
+ });
273
+
274
+ if (props.autoLoad) {
275
+ //初始化加载
276
+ dataTable.load();
277
+ }
278
+
279
+ const searchParamsSubscription = new rxjs.Observable((observer) =>
280
+ webBaseClientVue.useEventDispatcher(
281
+ props.dataTable.filterPanel,
282
+ 'params-change',
283
+ observer.next.bind(observer)
284
+ )
285
+ )
286
+ .pipe(
287
+ rxjs.filter(() => props.dataTable.filterPanel.ready),
288
+ rxjs.debounceTime(vue.unref(debounceDelay))
289
+ )
290
+ .subscribe(() => {
291
+ props.dataTable.load();
292
+ });
293
+
294
+ const subscription = props.dataTable
295
+ .getDisplayColumnsSubject()
296
+ .pipe(
297
+ rxjs.map(() => vue.unref(elTable)),
298
+ rxjs.delayWhen(() => rxjs.from(vue.nextTick())),
299
+ rxjs.map((elTable) => elTable?.store),
300
+ rxjs.skipWhile((store) => !store)
301
+ )
302
+ .subscribe((store) => {
303
+ sortColumn(vue.unref(store.states._columns));
304
+
305
+ store.updateColumns();
306
+ store.scheduleLayout();
307
+ });
308
+
309
+ vue.onUnmounted(() => {
310
+ selectChangeAPIObservable.unsubscribe();
311
+ subscription.unsubscribe();
312
+ tableSelectSubscription.unsubscribe();
313
+ searchParamsSubscription.unsubscribe();
314
+ });
315
+
316
+ return (_ctx, _cache) => {
317
+ return (vue.openBlock(), vue.createElementBlock("div", {
318
+ class: vue.normalizeClass(vue.unref(ns).b()),
319
+ ref_key: "dataTableEl",
320
+ ref: dataTableEl
321
+ }, [
322
+ vue.renderSlot(_ctx.$slots, "default", { dataTable: vue.unref(dataTable) }, () => [
323
+ vue.createVNode(vue.unref(ElementPlus.ElTable), vue.mergeProps({
324
+ class: "content",
325
+ height: "100%",
326
+ ref_key: "elTable",
327
+ ref: elTable,
328
+ data: vue.unref(data),
329
+ "row-key": vue.unref(dataTable).primaryKey,
330
+ "show-header": "",
331
+ stripe: ""
332
+ }, vue.unref(attrs), {
333
+ onSelectionChange: vue.unref(selectionChange),
334
+ onSortChange: sortHandle,
335
+ border: __props.border
336
+ }), {
337
+ empty: vue.withCtx(() => [
338
+ vue.renderSlot(_ctx.$slots, "empty-table")
339
+ ]),
340
+ default: vue.withCtx(() => [
341
+ (__props.showDrag)
342
+ ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElTableColumn), {
269
343
  key: 0,
270
344
  width: "40px"
271
345
  }, {
272
346
  default: vue.withCtx(() => [
273
347
  vue.createElementVNode("div", {
274
- class: vue.normalizeClass(vue.unref(ns).e("drag"))
348
+ class: vue.normalizeClass(vue.unref(ns).e('drag'))
275
349
  }, [
276
350
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
277
351
  _hoisted_1
278
352
  ])
279
- ], 2)
353
+ ], 2 /* CLASS */)
280
354
  ]),
281
- _: 3
282
- })) : vue.createCommentVNode("v-if", true),
283
- __props.selection ? vue.renderSlot(_ctx.$slots, "selection", { key: 1 }, () => [
355
+ _: 3 /* FORWARDED */
356
+ }))
357
+ : vue.createCommentVNode("v-if", true),
358
+ (__props.selection)
359
+ ? vue.renderSlot(_ctx.$slots, "selection", { key: 1 }, () => [
284
360
  vue.createVNode(vue.unref(ElementPlus.ElTableColumn), {
285
361
  type: "selection",
286
362
  align: "center",
287
363
  width: "56",
288
364
  "reserve-selection": true
289
365
  })
290
- ]) : vue.createCommentVNode("v-if", true),
291
- __props.showIndex ? vue.renderSlot(_ctx.$slots, "index", { key: 2 }, () => [
366
+ ])
367
+ : vue.createCommentVNode("v-if", true),
368
+ (__props.showIndex)
369
+ ? vue.renderSlot(_ctx.$slots, "index", { key: 2 }, () => [
292
370
  vue.createVNode(vue.unref(ElementPlus.ElTableColumn), {
293
371
  type: "index",
294
372
  width: "60",
295
373
  align: "center",
296
374
  label: __props.indexColumnLabel
297
- }, null, 8, ["label"])
298
- ]) : vue.createCommentVNode("v-if", true),
299
- vue.renderSlot(_ctx.$slots, "table-columns", { dataTable: vue.unref(dataTable) }, () => [
300
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(displayColumns), (item) => {
301
- return vue.openBlock(), vue.createBlock(dataTableColumn["default"], vue.mergeProps({
302
- "column-key": item.attrName,
303
- key: item.attrName,
304
- label: item.title,
305
- prop: item.fullAttrName,
306
- "min-width": item.width,
307
- align: item.align
308
- }, item.componentProps, {
309
- sortable: item.sortable == "custom"
310
- }), {
311
- header: vue.withCtx(() => [
312
- vue.renderSlot(_ctx.$slots, `table-header-col-${item.attrName}`, {}, () => [
313
- vue.createTextVNode(vue.toDisplayString(item.title), 1)
314
- ])
315
- ]),
316
- default: vue.withCtx(({ row, $index }) => [
317
- vue.unref(data).length ? vue.renderSlot(_ctx.$slots, "table-col-" + item.attrName, {
375
+ }, null, 8 /* PROPS */, ["label"])
376
+ ])
377
+ : vue.createCommentVNode("v-if", true),
378
+ vue.renderSlot(_ctx.$slots, "table-columns", { dataTable: vue.unref(dataTable) }, () => [
379
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(displayColumns), (item) => {
380
+ return (vue.openBlock(), vue.createBlock(dataTableColumn["default"], vue.mergeProps({
381
+ "column-key": item.attrName,
382
+ key: item.attrName,
383
+ label: item.title,
384
+ prop: item.fullAttrName,
385
+ "min-width": item.width,
386
+ align: item.align
387
+ }, item.componentProps, {
388
+ sortable: item.sortable=='custom'
389
+ }), {
390
+ header: vue.withCtx(() => [
391
+ vue.renderSlot(_ctx.$slots, `table-header-col-${item.attrName}`, {}, () => [
392
+ vue.createTextVNode(vue.toDisplayString(item.title), 1 /* TEXT */)
393
+ ])
394
+ ]),
395
+ default: vue.withCtx(({ row, $index }) => [
396
+ (vue.unref(data).length)
397
+ ? vue.renderSlot(_ctx.$slots, 'table-col-' + item.attrName, {
318
398
  key: 0,
319
- row,
399
+ row: row,
320
400
  index: $index,
321
401
  column: item,
322
402
  dataTable: vue.unref(dataTable)
@@ -324,50 +404,56 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
324
404
  vue.createVNode(vue.unref(dynamicComponent["default"]), {
325
405
  column: item,
326
406
  record: row
327
- }, null, 8, ["column", "record"])
328
- ]) : vue.createCommentVNode("v-if", true)
329
- ]),
330
- _: 2
331
- }, 1040, ["column-key", "label", "prop", "min-width", "align", "sortable"]);
332
- }), 128))
333
- ]),
334
- vue.renderSlot(_ctx.$slots, "column-append")
335
- ]),
336
- _: 3
337
- }, 16, ["data", "row-key", "onSelectionChange", "border"])
407
+ }, null, 8 /* PROPS */, ["column", "record"])
408
+ ])
409
+ : vue.createCommentVNode("v-if", true)
410
+ ]),
411
+ _: 2 /* DYNAMIC */
412
+ }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, ["column-key", "label", "prop", "min-width", "align", "sortable"]))
413
+ }), 128 /* KEYED_FRAGMENT */))
414
+ ]),
415
+ vue.renderSlot(_ctx.$slots, "column-append")
338
416
  ]),
339
- __props.showPagination ? (vue.openBlock(), vue.createElementBlock("div", {
417
+ _: 3 /* FORWARDED */
418
+ }, 16 /* FULL_PROPS */, ["data", "row-key", "onSelectionChange", "border"])
419
+ ]),
420
+ (__props.showPagination)
421
+ ? (vue.openBlock(), vue.createElementBlock("div", {
340
422
  key: 0,
341
- class: vue.normalizeClass(vue.unref(ns).e("pagination"))
423
+ class: vue.normalizeClass(vue.unref(ns).e('pagination'))
342
424
  }, [
343
425
  vue.createElementVNode("div", {
344
- class: vue.normalizeClass(vue.unref(ns).e("pagination-info"))
345
- }, " \u5171" + vue.toDisplayString(vue.unref(totalPage)) + "\u9875\uFF0C" + vue.toDisplayString(vue.unref(dataTable).totalRecCount) + "\u6761 ", 3),
426
+ class: vue.normalizeClass(vue.unref(ns).e('pagination-info'))
427
+ }, " " + vue.toDisplayString(vue.unref(totalPage)) + "页," + vue.toDisplayString(vue.unref(dataTable).totalRecCount) + " ", 3 /* TEXT, CLASS */),
346
428
  vue.createVNode(vue.unref(ElementPlus.ElPagination), {
347
429
  currentPage: vue.unref(dataTable).pageNum,
348
430
  "page-sizes": __props.paginationPageSizes,
349
431
  "page-size": vue.unref(dataTable).pageSize,
350
432
  layout: __props.paginationLayout,
351
433
  total: vue.unref(dataTable).totalRecCount,
352
- onSizeChange: _cache[0] || (_cache[0] = ($event) => vue.unref(dataTable).setPageSize($event)),
353
- onCurrentChange: _cache[1] || (_cache[1] = ($event) => vue.unref(dataTable).pageTo($event)),
434
+ onSizeChange: _cache[0] || (_cache[0] = $event => (vue.unref(dataTable).setPageSize($event))),
435
+ onCurrentChange: _cache[1] || (_cache[1] = $event => (vue.unref(dataTable).pageTo($event))),
354
436
  teleported: false
355
- }, null, 8, ["currentPage", "page-sizes", "page-size", "layout", "total"])
356
- ], 2)) : vue.createCommentVNode("v-if", true),
357
- vue.unref(barRectangle) ? (vue.openBlock(), vue.createElementBlock("div", {
437
+ }, null, 8 /* PROPS */, ["currentPage", "page-sizes", "page-size", "layout", "total"])
438
+ ], 2 /* CLASS */))
439
+ : vue.createCommentVNode("v-if", true),
440
+ (vue.unref(barRectangle))
441
+ ? (vue.openBlock(), vue.createElementBlock("div", {
358
442
  key: 1,
359
- class: vue.normalizeClass(vue.unref(ns).e("dragbar")),
360
- style: vue.normalizeStyle({
361
- left: vue.unref(barRectangle).left + "px",
362
- top: vue.unref(barRectangle).top + "px",
363
- width: vue.unref(barRectangle).width + "px",
364
- height: vue.unref(barRectangle).height + "px"
365
- })
366
- }, null, 6)) : vue.createCommentVNode("v-if", true)
367
- ], 2);
368
- };
369
- }
370
- });
371
- var DataTable = /* @__PURE__ */ _pluginVue_exportHelper["default"](_sfc_main, [["__file", "data-table.vue"]]);
443
+ class: vue.normalizeClass(vue.unref(ns).e('dragbar')),
444
+ style: vue.normalizeStyle({
445
+ left: vue.unref(barRectangle).left + 'px',
446
+ top: vue.unref(barRectangle).top + 'px',
447
+ width: vue.unref(barRectangle).width + 'px',
448
+ height: vue.unref(barRectangle).height + 'px',
449
+ })
450
+ }, null, 6 /* CLASS, STYLE */))
451
+ : vue.createCommentVNode("v-if", true)
452
+ ], 2 /* CLASS */))
453
+ }
454
+ }
455
+
456
+ };
457
+ var DataTable = /*#__PURE__*/_pluginVue_exportHelper["default"](_sfc_main, [['__file',"data-table.vue"]]);
372
458
 
373
459
  exports["default"] = DataTable;