@dt-frames/ui 2.0.3 → 2.0.5
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/es/assets/locales/en.ts +1 -1
- package/es/components/curd/index.js +346 -331
- package/es/components/curd/src/components/Curd.d.ts +0 -8
- package/es/components/curd/src/props.d.ts +0 -4
- package/es/components/drawer/index.d.ts +1 -1
- package/es/components/drawer/index.js +27 -27
- package/es/components/drawer/src/index.d.ts +2 -3
- package/es/components/form/index.d.ts +0 -33
- package/es/components/form/index.js +72 -36
- package/es/components/form/index.less +212 -9
- package/es/components/form/src/components/FormItem.d.ts +3 -7
- package/es/components/form/src/components/formIcon.d.ts +14 -14
- package/es/components/form/src/components/formInputUseDialog.d.ts +8 -8
- package/es/components/form/src/enums/index.d.ts +1 -1
- package/es/components/form/src/index.d.ts +0 -25
- package/es/components/form/src/props.d.ts +2 -6
- package/es/components/form/src/types/form.type.d.ts +1 -1
- package/es/components/icons/index.less +5 -0
- package/es/components/modal/index.js +35 -34
- package/es/components/modal/index.less +10 -0
- package/es/components/modal/src/components/ModalFooter.d.ts +3 -3
- package/es/components/modal/src/index.d.ts +9 -9
- package/es/components/source/hooks/useSource.d.ts +14 -0
- package/es/components/source/index.js +72 -31
- package/es/components/source/types/source.type.d.ts +5 -8
- package/es/components/table/index.js +418 -305
- package/es/components/table/index.less +62 -14
- package/es/components/table/src/components/TableAction.d.ts +1 -1
- package/es/components/table/src/index.d.ts +30 -10
- package/es/components/table/src/props.d.ts +12 -4
- package/es/components/table/src/types/table.type.d.ts +4 -5
- package/es/components/tree/index.d.ts +2 -0
- package/es/components/tree/index.js +1087 -0
- package/es/components/tree/index.less +119 -0
- package/es/components/tree/src/basicProps.d.ts +146 -0
- package/es/components/tree/src/components/ContextMenu.d.ts +64 -0
- package/es/components/tree/src/components/TreeHeader.d.ts +98 -0
- package/es/components/tree/src/enums/index.d.ts +6 -0
- package/es/components/tree/src/hooks/useContextMenu.d.ts +2 -0
- package/es/components/tree/src/hooks/useTree.d.ts +14 -0
- package/es/components/tree/src/index.d.ts +6526 -0
- package/es/components/tree/src/type/menu.d.ts +33 -0
- package/es/components/tree/src/type/tree.d.ts +55 -0
- package/es/components/tree/src/utils/tree.d.ts +5 -0
- package/es/packages/ui/src/assets/locales/en.d.ts +101 -0
- package/es/packages/ui/src/assets/locales/index.d.ts +2 -0
- package/es/packages/ui/src/assets/locales/zh.d.ts +103 -0
- package/es/packages/ui/src/components/container/index.d.ts +94 -0
- package/es/packages/ui/src/components/container/src/components/bar.d.ts +14 -0
- package/es/packages/ui/src/components/container/src/components/scroll-bar.d.ts +70 -0
- package/es/packages/ui/src/components/container/src/hooks/scroll.d.ts +10 -0
- package/es/packages/ui/src/components/container/src/scroll-container.d.ts +76 -0
- package/es/packages/ui/src/components/container/src/slot-container.d.ts +20 -0
- package/es/packages/ui/src/components/container/src/types/scroll.type.d.ts +22 -0
- package/es/packages/ui/src/components/container/src/utils/scroll.d.ts +5 -0
- package/es/packages/ui/src/global.d.ts +7 -0
- package/es/packages/ui/src/theme/index.d.ts +10 -0
- package/es/packages/ui/src/theme/src/components/content/index.d.ts +27 -0
- package/es/packages/ui/src/theme/src/components/feature/back-top.d.ts +5 -0
- package/es/packages/ui/src/theme/src/components/feature/index.d.ts +7 -0
- package/es/packages/ui/src/theme/src/components/footer/index.d.ts +31 -0
- package/es/packages/ui/src/theme/src/components/header/components/bread-crumb.d.ts +6 -0
- package/es/packages/ui/src/theme/src/components/header/components/fullscreen.d.ts +5 -0
- package/es/packages/ui/src/theme/src/components/header/components/index.d.ts +11 -0
- package/es/packages/ui/src/theme/src/components/header/components/lang-picker.d.ts +23 -0
- package/es/packages/ui/src/theme/src/components/header/components/logo.d.ts +56 -0
- package/es/packages/ui/src/theme/src/components/header/components/menu-filter.d.ts +22 -0
- package/es/packages/ui/src/theme/src/components/header/components/notify.d.ts +24 -0
- package/es/packages/ui/src/theme/src/components/header/components/setting-theme.d.ts +223 -0
- package/es/packages/ui/src/theme/src/components/header/components/size.d.ts +282 -0
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/feature.d.ts +138 -0
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/index.d.ts +3 -0
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/menu-type.d.ts +16 -0
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/select.d.ts +58 -0
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/switch.d.ts +49 -0
- package/es/packages/ui/src/theme/src/components/header/components/trigger.d.ts +10 -0
- package/es/packages/ui/src/theme/src/components/header/components/user-info.d.ts +37 -0
- package/es/packages/ui/src/theme/src/components/header/helper/change-theme.d.ts +13 -0
- package/es/packages/ui/src/theme/src/components/header/helper/menu-tree.d.ts +4 -0
- package/es/packages/ui/src/theme/src/components/header/index.d.ts +720 -0
- package/es/packages/ui/src/theme/src/components/header/multiple-header.d.ts +806 -0
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +62 -0
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +207 -0
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +127 -0
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +26 -0
- package/es/packages/ui/src/theme/src/components/sider/components/drag-bar.d.ts +14 -0
- package/es/packages/ui/src/theme/src/components/sider/components/layout-menu.d.ts +22 -0
- package/es/packages/ui/src/theme/src/components/sider/components/props.d.ts +69 -0
- package/es/packages/ui/src/theme/src/components/sider/components/sider-trigger.d.ts +17 -0
- package/es/packages/ui/src/theme/src/components/sider/helper/sider.d.ts +12 -0
- package/es/packages/ui/src/theme/src/components/sider/helper/split-menu.d.ts +10 -0
- package/es/packages/ui/src/theme/src/components/sider/index.d.ts +235 -0
- package/es/packages/ui/src/theme/src/components/sider/mix-sider.d.ts +167 -0
- package/es/packages/ui/src/theme/src/components/tabs/components/TabContent.d.ts +6 -0
- package/es/packages/ui/src/theme/src/components/tabs/components/TabRedo.d.ts +21 -0
- package/es/packages/ui/src/theme/src/components/tabs/components/index.d.ts +3 -0
- package/es/packages/ui/src/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +7 -0
- package/es/packages/ui/src/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -0
- package/es/packages/ui/src/theme/src/components/tabs/index.d.ts +63 -0
- package/es/packages/ui/src/theme/src/components/tabs/types/tabs.type.d.ts +7 -0
- package/es/packages/ui/src/theme/src/enums/index.d.ts +1 -0
- package/es/packages/ui/src/theme/src/enums/theme.enum.d.ts +34 -0
- package/es/packages/ui/src/theme/src/hooks/index.d.ts +6 -0
- package/es/packages/ui/src/theme/src/hooks/useDragLine.d.ts +2 -0
- package/es/packages/ui/src/theme/src/hooks/useHeader.d.ts +25 -0
- package/es/packages/ui/src/theme/src/hooks/useMenu.d.ts +29 -0
- package/es/packages/ui/src/theme/src/hooks/useMultifyTab.d.ts +8 -0
- package/es/packages/ui/src/theme/src/hooks/useOpenKeys.d.ts +7 -0
- package/es/packages/ui/src/theme/src/hooks/useTheme.d.ts +9 -0
- package/es/packages/ui/src/theme/src/index.d.ts +1851 -0
- package/es/packages/ui/src/theme/src/setting/theme.setting.d.ts +2 -0
- package/es/packages/ui/src/theme/src/stores/index.d.ts +3 -0
- package/es/packages/ui/src/theme/src/stores/routeReuse.store.d.ts +23 -0
- package/es/packages/ui/src/theme/src/stores/theme.store.d.ts +18 -0
- package/es/packages/ui/src/theme/src/types/index.d.ts +3 -0
- package/es/packages/ui/src/theme/src/types/menu.type.d.ts +15 -0
- package/es/packages/ui/src/theme/src/types/theme.type.d.ts +62 -0
- package/es/packages/ui/src/utils/withInstall.d.ts +4 -0
- package/es/theme/index.d.ts +2 -1
- package/es/theme/index.js +898 -683
- package/es/theme/index.less +205 -0
- package/es/theme/src/components/header/components/logo.d.ts +22 -0
- package/es/theme/src/components/header/components/size.d.ts +5 -5
- package/es/theme/src/components/header/helper/menu-tree.d.ts +1 -0
- package/es/theme/src/components/header/index.d.ts +92 -5
- package/es/theme/src/components/header/multiple-header.d.ts +94 -7
- package/es/theme/src/components/sider/components/drag-bar.d.ts +1 -1
- package/es/theme/src/components/sider/components/sider-trigger.d.ts +0 -1
- package/es/theme/src/components/sider/index.d.ts +169 -3
- package/es/theme/src/components/sider/mix-sider.d.ts +168 -0
- package/es/theme/src/enums/theme.enum.d.ts +2 -1
- package/es/theme/src/hooks/useMenu.d.ts +5 -3
- package/es/theme/src/hooks/useMultifyTab.d.ts +1 -0
- package/es/theme/src/index.d.ts +356 -15
- package/es/theme/src/stores/theme.store.d.ts +3 -0
- package/es/theme/src/types/theme.type.d.ts +2 -0
- package/index.d.ts +2 -1
- package/index.js +6 -2
- package/package.json +4 -4
- package/tsconfig.json +1 -0
- package/vite.config.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, useAppStore, useSlots
|
|
2
|
-
import { toRaw as toRaw$1, unref, computed as
|
|
1
|
+
import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, useAppStore, useSlots, error, http, useApp, getDynamicProps, isBoolean, isFunction, getPopupContainer, useI18n, isNumber, isArray, isObject, isString, dispatchResize, useTimeoutFn, off, on, windowResizeFn, useMessage, isNullAndUnDef, getDictValueByCode, formatNumber, isVnode } from "@dt-frames/core";
|
|
2
|
+
import { toRaw as toRaw$1, unref, computed, useSlots as useSlots$1, ref, watch, onUnmounted, defineComponent, useAttrs, resolveDirective, openBlock, createElementBlock, Fragment, renderList, withDirectives, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, createBlock, provide, inject, h as h$1, mergeProps, nextTick, getCurrentInstance, reactive, readonly, watchEffect, isRef, normalizeProps, guardReactiveProps, toRefs, isVNode, onMounted, onBeforeUnmount, resolveDynamicComponent, renderSlot, createSlots } from "vue";
|
|
3
3
|
import { defineStore } from "pinia";
|
|
4
4
|
import { Tooltip, MenuItem, Menu, Dropdown, RadioButton, RadioGroup, Button, FormItem, Col, Spin, Checkbox as Checkbox$1, Divider as Divider$1, Row, CheckboxGroup, Popover as Popover$1, Table } from "ant-design-vue/es";
|
|
5
5
|
import "ant-design-vue/es/table/style";
|
|
@@ -8,12 +8,20 @@ import "ant-design-vue/es/dropdown/style";
|
|
|
8
8
|
import "ant-design-vue/es/menu/style";
|
|
9
9
|
import "ant-design-vue/es/tooltip/style";
|
|
10
10
|
import { useDebounceFn, useFullscreen, isFunction as isFunction$1 } from "@vueuse/core";
|
|
11
|
-
import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Radio, AutoComplete, Cascader, Slider, Rate, Divider, Modal } from "ant-design-vue";
|
|
11
|
+
import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Radio, AutoComplete, Cascader, Slider, Rate, Divider, Modal as Modal$1 } from "ant-design-vue";
|
|
12
12
|
import "ant-design-vue/es/radio/style";
|
|
13
|
+
import "ant-design-vue/es/cascader/style";
|
|
14
|
+
import "ant-design-vue/es/input-number/style";
|
|
15
|
+
import "ant-design-vue/es/switch/style";
|
|
16
|
+
import "ant-design-vue/es/tree-select/style";
|
|
17
|
+
import "ant-design-vue/es/slider/style";
|
|
18
|
+
import "ant-design-vue/es/rate/style";
|
|
19
|
+
import "ant-design-vue/es/date-picker/style";
|
|
13
20
|
import "ant-design-vue/es/col/style";
|
|
14
21
|
import "ant-design-vue/es/form/style";
|
|
15
22
|
import "ant-design-vue/es/button/style";
|
|
16
23
|
import "ant-design-vue/es/spin/style";
|
|
24
|
+
import "ant-design-vue/es/modal/style";
|
|
17
25
|
import "ant-design-vue/es/row/style";
|
|
18
26
|
import "ant-design-vue/es/divider/style";
|
|
19
27
|
import "ant-design-vue/es/checkbox/style";
|
|
@@ -29,6 +37,7 @@ var MenuType = /* @__PURE__ */ ((MenuType2) => {
|
|
|
29
37
|
MenuType2["SIDE"] = "sidebar";
|
|
30
38
|
MenuType2["TOP_MENU"] = "top-menu";
|
|
31
39
|
MenuType2["MIX"] = "mix";
|
|
40
|
+
MenuType2["MIX_SIDEBAR"] = "mix-sidebar";
|
|
32
41
|
return MenuType2;
|
|
33
42
|
})(MenuType || {});
|
|
34
43
|
var MenuMode = /* @__PURE__ */ ((MenuMode2) => {
|
|
@@ -80,7 +89,8 @@ const defaultThemeConf = {
|
|
|
80
89
|
menuWidth: 240,
|
|
81
90
|
trigger: true,
|
|
82
91
|
type: MenuType.SIDE,
|
|
83
|
-
mode: MenuMode.INLINE
|
|
92
|
+
mode: MenuMode.INLINE,
|
|
93
|
+
mixSideTrigger: "hover"
|
|
84
94
|
},
|
|
85
95
|
footerOptions: {
|
|
86
96
|
show: false,
|
|
@@ -101,7 +111,8 @@ const useThemeStore = defineStore({
|
|
|
101
111
|
id: "dt-theme",
|
|
102
112
|
state: () => ({
|
|
103
113
|
themeConf: DtCache.getLocal(CacheKey.THEME) ?? defaultThemeConf,
|
|
104
|
-
pageLoading: false
|
|
114
|
+
pageLoading: false,
|
|
115
|
+
mixSiderHasSubMenu: false
|
|
105
116
|
}),
|
|
106
117
|
getters: {
|
|
107
118
|
getThemeConf() {
|
|
@@ -121,6 +132,9 @@ const useThemeStore = defineStore({
|
|
|
121
132
|
},
|
|
122
133
|
getPageLoading() {
|
|
123
134
|
return this.pageLoading;
|
|
135
|
+
},
|
|
136
|
+
getMixSiderIsHasMenu() {
|
|
137
|
+
return this.mixSiderHasSubMenu;
|
|
124
138
|
}
|
|
125
139
|
},
|
|
126
140
|
actions: {
|
|
@@ -128,6 +142,9 @@ const useThemeStore = defineStore({
|
|
|
128
142
|
let newThemeConf = deepMerge(this.themeConf, options);
|
|
129
143
|
this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
|
|
130
144
|
DtCache.setLocal(CacheKey.THEME, this.themeConf);
|
|
145
|
+
},
|
|
146
|
+
setMixSiderIsHasMenu(val) {
|
|
147
|
+
this.mixSiderHasSubMenu = val;
|
|
131
148
|
}
|
|
132
149
|
}
|
|
133
150
|
});
|
|
@@ -156,8 +173,8 @@ defineStore({
|
|
|
156
173
|
return;
|
|
157
174
|
}
|
|
158
175
|
let updateIndex = -1;
|
|
159
|
-
const tabHasExits = this.tabList.some((tab,
|
|
160
|
-
updateIndex =
|
|
176
|
+
const tabHasExits = this.tabList.some((tab, index2) => {
|
|
177
|
+
updateIndex = index2;
|
|
161
178
|
return (tab.fullPath || tab.path) === (fullPath || path);
|
|
162
179
|
});
|
|
163
180
|
if (tabHasExits) {
|
|
@@ -173,14 +190,14 @@ defineStore({
|
|
|
173
190
|
},
|
|
174
191
|
closeTab(path, router) {
|
|
175
192
|
const go = useGo(router);
|
|
176
|
-
const
|
|
193
|
+
const index2 = this.tabList.findIndex((item) => item.path === path);
|
|
177
194
|
let page;
|
|
178
|
-
if (
|
|
195
|
+
if (index2 === 0) {
|
|
179
196
|
if (this.tabList.length !== 1) {
|
|
180
|
-
page = this.tabList[
|
|
197
|
+
page = this.tabList[index2 + 1];
|
|
181
198
|
}
|
|
182
199
|
} else {
|
|
183
|
-
page = this.tabList[
|
|
200
|
+
page = this.tabList[index2 - 1];
|
|
184
201
|
}
|
|
185
202
|
this.bulkCloseTabs([path]);
|
|
186
203
|
this.updateCacheTab();
|
|
@@ -195,9 +212,9 @@ defineStore({
|
|
|
195
212
|
go(route.path);
|
|
196
213
|
},
|
|
197
214
|
closeLeftTabs(path) {
|
|
198
|
-
const
|
|
199
|
-
if (
|
|
200
|
-
const leftTabs = this.tabList.slice(0,
|
|
215
|
+
const index2 = this.tabList.findIndex((item) => item.path === path);
|
|
216
|
+
if (index2 > 0) {
|
|
217
|
+
const leftTabs = this.tabList.slice(0, index2);
|
|
201
218
|
const pathList = [];
|
|
202
219
|
for (const item of leftTabs) {
|
|
203
220
|
const affix = item?.meta?.affix ?? false;
|
|
@@ -210,9 +227,9 @@ defineStore({
|
|
|
210
227
|
this.updateCacheTab();
|
|
211
228
|
},
|
|
212
229
|
closeRightTabs(path) {
|
|
213
|
-
const
|
|
214
|
-
if (
|
|
215
|
-
const rightTabs = this.tabList.slice(
|
|
230
|
+
const index2 = this.tabList.findIndex((item) => item.path === path);
|
|
231
|
+
if (index2 >= 0 && index2 < this.tabList.length - 1) {
|
|
232
|
+
const rightTabs = this.tabList.slice(index2 + 1, this.tabList.length);
|
|
216
233
|
const pathList = [];
|
|
217
234
|
for (const item of rightTabs) {
|
|
218
235
|
const affix = item?.meta?.affix ?? false;
|
|
@@ -269,39 +286,49 @@ defineStore({
|
|
|
269
286
|
});
|
|
270
287
|
function useMenu() {
|
|
271
288
|
const { getMenuConf, setThemeConf } = useThemeStore();
|
|
272
|
-
const getCollapsedShowTitle = computed
|
|
273
|
-
const getIsSidebarType = computed
|
|
274
|
-
const getMenuFixed = computed
|
|
275
|
-
const getShowMenu = computed
|
|
276
|
-
const getShowSidebar = computed
|
|
289
|
+
const getCollapsedShowTitle = computed(() => getMenuConf.collapsedShowTitle);
|
|
290
|
+
const getIsSidebarType = computed(() => getMenuConf.type === MenuType.SIDE);
|
|
291
|
+
const getMenuFixed = computed(() => getMenuConf.fixed);
|
|
292
|
+
const getShowMenu = computed(() => getMenuConf.show);
|
|
293
|
+
const getShowSidebar = computed(() => {
|
|
277
294
|
return unref(getSplit) || unref(getShowMenu) && unref(getMenuMode) !== MenuMode.HORIZONTAL;
|
|
278
295
|
});
|
|
279
|
-
const getMenuHidden = computed
|
|
280
|
-
const getMenuTheme = computed
|
|
281
|
-
const getTrigger = computed
|
|
282
|
-
const getCanDrag = computed
|
|
283
|
-
const getIsMixMode = computed
|
|
296
|
+
const getMenuHidden = computed(() => getMenuConf.hidden);
|
|
297
|
+
const getMenuTheme = computed(() => getMenuConf.theme);
|
|
298
|
+
const getTrigger = computed(() => getMenuConf.trigger);
|
|
299
|
+
const getCanDrag = computed(() => getMenuConf.canDrag);
|
|
300
|
+
const getIsMixMode = computed(() => {
|
|
284
301
|
return unref(getMenuMode) === MenuMode.INLINE && unref(getMenuType) === MenuType.MIX;
|
|
285
302
|
});
|
|
286
|
-
const
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
303
|
+
const getIsMixSidebar = computed(() => unref(getMenuType) === MenuType.MIX_SIDEBAR);
|
|
304
|
+
const getMenuWidth = computed(() => {
|
|
305
|
+
if (unref(getIsMixMode)) {
|
|
306
|
+
return Number(getMenuConf.menuWidth) - 40;
|
|
307
|
+
} else if (unref(getIsMixSidebar)) {
|
|
308
|
+
return Number(getMenuConf.menuWidth) - 10;
|
|
309
|
+
} else {
|
|
310
|
+
return Number(getMenuConf.menuWidth);
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
const getMixSideTrigger = computed(() => getMenuConf.mixSideTrigger);
|
|
314
|
+
const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : getMenuConf.menuWidth);
|
|
315
|
+
const getMenuType = computed(() => getMenuConf.type);
|
|
316
|
+
const getIsTopMenu = computed(() => unref(getMenuType) === MenuType.TOP_MENU);
|
|
317
|
+
const getMenuMode = computed(() => getMenuConf.mode);
|
|
318
|
+
const getSplit = computed(() => getMenuConf.split);
|
|
319
|
+
const getCollapsed = computed(() => getMenuConf.collapsed);
|
|
320
|
+
const getIsHorizontal = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
|
|
294
321
|
const setThemeStore = (conf = {}) => setThemeConf(conf);
|
|
295
322
|
const toggleCollapsed = () => setThemeStore({
|
|
296
323
|
menuOptions: {
|
|
297
324
|
collapsed: !unref(getCollapsed)
|
|
298
325
|
}
|
|
299
326
|
});
|
|
300
|
-
const getMiniWidthNumber = computed
|
|
301
|
-
const getRealWidth = computed
|
|
327
|
+
const getMiniWidthNumber = computed(() => getMenuConf.collapsedShowTitle ? 80 : 48);
|
|
328
|
+
const getRealWidth = computed(() => {
|
|
302
329
|
return unref(getCollapsed) ? unref(getMiniWidthNumber) : unref(getMenuWidth);
|
|
303
330
|
});
|
|
304
|
-
const getCalcContentWidth = computed
|
|
331
|
+
const getCalcContentWidth = computed(() => {
|
|
305
332
|
const width = unref(getIsTopMenu) || !unref(getShowMenu) || unref(getSplit) && unref(getMenuHidden) ? 0 : unref(getRealWidth);
|
|
306
333
|
return `calc(100% - ${unref(width)}px)`;
|
|
307
334
|
});
|
|
@@ -326,21 +353,25 @@ function useMenu() {
|
|
|
326
353
|
getRealWidth,
|
|
327
354
|
getCalcContentWidth,
|
|
328
355
|
getIsMixMode,
|
|
356
|
+
getIsMixSidebar,
|
|
329
357
|
getCanDrag,
|
|
358
|
+
getMixSideTrigger,
|
|
330
359
|
toggleCollapsed,
|
|
331
360
|
setThemeStore
|
|
332
361
|
};
|
|
333
362
|
}
|
|
334
363
|
function useMultipleTab() {
|
|
335
364
|
const { getRouteReuseConf } = useThemeStore();
|
|
336
|
-
const getShowMultipleTab = computed
|
|
337
|
-
const getShowQuick = computed
|
|
338
|
-
const
|
|
339
|
-
const
|
|
340
|
-
const
|
|
365
|
+
const getShowMultipleTab = computed(() => getRouteReuseConf.show);
|
|
366
|
+
const getShowQuick = computed(() => getRouteReuseConf.showQuick);
|
|
367
|
+
const getMultipleTabPosIsTop = computed(() => getRouteReuseConf.position === "top");
|
|
368
|
+
const getShowRedo = computed(() => getRouteReuseConf.showRedo);
|
|
369
|
+
const getCanCache = computed(() => getRouteReuseConf.cache);
|
|
370
|
+
const getCanDrag = computed(() => getRouteReuseConf.canDrag);
|
|
341
371
|
return {
|
|
342
372
|
getShowMultipleTab,
|
|
343
373
|
getShowQuick,
|
|
374
|
+
getMultipleTabPosIsTop,
|
|
344
375
|
getShowRedo,
|
|
345
376
|
getCanCache,
|
|
346
377
|
getCanDrag
|
|
@@ -359,54 +390,54 @@ function useHeader() {
|
|
|
359
390
|
getMenuMode,
|
|
360
391
|
getSplit,
|
|
361
392
|
getIsTopMenu,
|
|
362
|
-
|
|
393
|
+
getIsMixSidebar
|
|
363
394
|
} = useMenu();
|
|
364
|
-
const { getShowMultipleTab } = useMultipleTab();
|
|
365
|
-
const getHeaderTheme = computed
|
|
366
|
-
const getFixed = computed
|
|
367
|
-
const getShowHeaderLogo = computed
|
|
368
|
-
const getShowSearch = computed
|
|
369
|
-
const getShowHeaderTrigger = computed
|
|
395
|
+
const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
|
|
396
|
+
const getHeaderTheme = computed(() => getHeaderConf.theme);
|
|
397
|
+
const getFixed = computed(() => getHeaderConf.fixed);
|
|
398
|
+
const getShowHeaderLogo = computed(() => unref(getShowLogo) && !unref(getIsSidebarType) && !unref(getIsMixSidebar));
|
|
399
|
+
const getShowSearch = computed(() => getHeaderConf.showSearch);
|
|
400
|
+
const getShowHeaderTrigger = computed(() => {
|
|
370
401
|
if (unref(getMenuType) === MenuType.TOP_MENU || !unref(getShowMenu) || unref(getMenuHidden)) {
|
|
371
402
|
return false;
|
|
372
403
|
}
|
|
373
404
|
return unref(getTrigger);
|
|
374
405
|
});
|
|
375
|
-
const getShowBreadCrumb = computed
|
|
376
|
-
const getShowBread = computed
|
|
406
|
+
const getShowBreadCrumb = computed(() => getHeaderConf.showBreadCrumb);
|
|
407
|
+
const getShowBread = computed(
|
|
377
408
|
() => unref(getMenuMode) !== MenuMode.HORIZONTAL && !unref(getSplit) && unref(getShowBreadCrumb)
|
|
378
409
|
);
|
|
379
|
-
const getShowTopMenu = computed
|
|
380
|
-
const getShowNotice = computed
|
|
381
|
-
const getShowFullScreen = computed
|
|
382
|
-
const getShowLocale = computed
|
|
383
|
-
const getShowSettingTheme = computed
|
|
384
|
-
const getShowFullHeaderRef = computed
|
|
385
|
-
return !unref(getIsSidebarType) && !unref(getIsTopMenu);
|
|
410
|
+
const getShowTopMenu = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL || unref(getSplit));
|
|
411
|
+
const getShowNotice = computed(() => getHeaderConf.showNotice);
|
|
412
|
+
const getShowFullScreen = computed(() => getHeaderConf.showFullScreen);
|
|
413
|
+
const getShowLocale = computed(() => getHeaderConf.showLocaleSwitch);
|
|
414
|
+
const getShowSettingTheme = computed(() => getHeaderConf.showSettingTheme);
|
|
415
|
+
const getShowFullHeaderRef = computed(() => {
|
|
416
|
+
return !unref(getIsSidebarType) && !unref(getIsMixSidebar) && !unref(getIsTopMenu);
|
|
386
417
|
});
|
|
387
|
-
const getHeaderHeight = computed
|
|
418
|
+
const getHeaderHeight = computed(() => {
|
|
388
419
|
let height = 0;
|
|
389
420
|
height += HEADER_HEIGHT;
|
|
390
|
-
if (unref(getShowMultipleTab) && !unref(getSplit)) {
|
|
421
|
+
if (unref(getShowMultipleTab) && !unref(getSplit) && !unref(getMultipleTabPosIsTop)) {
|
|
391
422
|
height += TABS_HEIGHT;
|
|
392
423
|
}
|
|
393
424
|
return height;
|
|
394
425
|
});
|
|
395
|
-
const getTabsHeight = computed
|
|
396
|
-
const getShowInsetHeaderRef = computed
|
|
397
|
-
return unref(getIsSidebarType) || unref(getIsTopMenu);
|
|
426
|
+
const getTabsHeight = computed(() => TABS_HEIGHT);
|
|
427
|
+
const getShowInsetHeaderRef = computed(() => {
|
|
428
|
+
return unref(getIsSidebarType) || unref(getIsTopMenu) || unref(getIsMixSidebar);
|
|
398
429
|
});
|
|
399
|
-
const getShowBackToTop = computed
|
|
400
|
-
const getIsZH = computed
|
|
430
|
+
const getShowBackToTop = computed(() => getHeaderConf.showBackToTop);
|
|
431
|
+
const getIsZH = computed(() => {
|
|
401
432
|
let local = DtCache.getLocal(CacheKey.LOCALE);
|
|
402
433
|
if (!local)
|
|
403
434
|
return true;
|
|
404
435
|
return local === Language.ZH;
|
|
405
436
|
});
|
|
406
|
-
const getUiSize = computed
|
|
407
|
-
const getShowUiSize = computed
|
|
408
|
-
const getShowLogo = computed
|
|
409
|
-
const getShowLoginOut = computed
|
|
437
|
+
const getUiSize = computed(() => getHeaderConf?.size ?? UiSize.SMALL);
|
|
438
|
+
const getShowUiSize = computed(() => getHeaderConf?.showSize);
|
|
439
|
+
const getShowLogo = computed(() => getHeaderConf.showLogo);
|
|
440
|
+
const getShowLoginOut = computed(() => getHeaderConf.showLoginOut);
|
|
410
441
|
const loginOutClick = getHeaderConf.logoutClick;
|
|
411
442
|
return {
|
|
412
443
|
getHeaderTheme,
|
|
@@ -437,8 +468,8 @@ const codeMap = /* @__PURE__ */ new Map();
|
|
|
437
468
|
function useHeaderCode(code, changeColumns) {
|
|
438
469
|
const { appConf } = useAppStore();
|
|
439
470
|
const { getIsZH } = useHeader();
|
|
440
|
-
useSlots$1();
|
|
441
471
|
useSlots();
|
|
472
|
+
useSlots$1();
|
|
442
473
|
if (!appConf.pages.queryColumnApi) {
|
|
443
474
|
error("\u8BF7\u5728init.config.ts\u4E2D\u914D\u7F6EqueryColumnApi\uFF01");
|
|
444
475
|
return;
|
|
@@ -480,7 +511,7 @@ function useHeaderCode(code, changeColumns) {
|
|
|
480
511
|
let obj = {
|
|
481
512
|
title: unref(getIsZH) ? it.cloumnName : it.cloumnEngName,
|
|
482
513
|
dataIndex: it.cloumnCode,
|
|
483
|
-
sorter: it.ifOrder,
|
|
514
|
+
sorter: Boolean(it.ifOrder),
|
|
484
515
|
align: getAlign(it.textAlign),
|
|
485
516
|
show: Boolean(it.ifDisplay),
|
|
486
517
|
defaultHidden: !Boolean(it.ifDisplay)
|
|
@@ -497,8 +528,8 @@ function useHeaderCode(code, changeColumns) {
|
|
|
497
528
|
getColumns();
|
|
498
529
|
}
|
|
499
530
|
function useTable(props2) {
|
|
500
|
-
const tableRef = ref
|
|
501
|
-
const loadedRef = ref
|
|
531
|
+
const tableRef = ref(null);
|
|
532
|
+
const loadedRef = ref(false);
|
|
502
533
|
let stopWatch;
|
|
503
534
|
function registerTable(instance) {
|
|
504
535
|
const { isProd } = useApp();
|
|
@@ -558,14 +589,14 @@ function useTable(props2) {
|
|
|
558
589
|
};
|
|
559
590
|
return [registerTable, methods];
|
|
560
591
|
}
|
|
561
|
-
const _imports_0 = "data:image/png;base64,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";
|
|
562
|
-
const
|
|
592
|
+
const _hoisted_1$b = { key: 0 };
|
|
593
|
+
const _hoisted_2$3 = {
|
|
563
594
|
key: 0,
|
|
564
|
-
class: "dt-table-action-btn"
|
|
595
|
+
class: "dt-table-action-btn w-8 inline-block"
|
|
565
596
|
};
|
|
566
|
-
const
|
|
567
|
-
const
|
|
568
|
-
const
|
|
597
|
+
const _hoisted_3$3 = ["onClick"];
|
|
598
|
+
const _hoisted_4$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
|
|
599
|
+
const _hoisted_5$2 = { class: "text-13 opacity-80" };
|
|
569
600
|
const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
570
601
|
__name: "TableAction",
|
|
571
602
|
props: {
|
|
@@ -597,7 +628,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
597
628
|
},
|
|
598
629
|
setup(__props) {
|
|
599
630
|
const props2 = __props;
|
|
600
|
-
const actionBtns = ref
|
|
631
|
+
const actionBtns = ref([]);
|
|
601
632
|
function handleAction(it) {
|
|
602
633
|
if (isFunction(it.onClick)) {
|
|
603
634
|
it.onClick({
|
|
@@ -616,7 +647,9 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
616
647
|
actionBtns.value = [...btns].map((it) => {
|
|
617
648
|
return {
|
|
618
649
|
...it,
|
|
619
|
-
ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true
|
|
650
|
+
ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true,
|
|
651
|
+
icon: () => isFunction(it.icon) ? it.icon(props2.record) : it.icon,
|
|
652
|
+
label: () => isFunction(it.label) ? it.label(props2.record) : it.label
|
|
620
653
|
};
|
|
621
654
|
});
|
|
622
655
|
},
|
|
@@ -630,29 +663,31 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
630
663
|
const _component_AMenu = Menu;
|
|
631
664
|
const _component_ADropdown = Dropdown;
|
|
632
665
|
const _directive_auth = resolveDirective("auth");
|
|
633
|
-
return props2.expand ? (openBlock(
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
666
|
+
return props2.expand ? (openBlock(), createElementBlock("div", _hoisted_1$b, [
|
|
667
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item) => {
|
|
668
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
669
|
+
item.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$3, [
|
|
670
|
+
createVNode(_component_ATooltip, { placement: "bottom" }, {
|
|
671
|
+
title: withCtx(() => [
|
|
672
|
+
createTextVNode(toDisplayString(item.label()), 1)
|
|
673
|
+
]),
|
|
674
|
+
default: withCtx(() => [
|
|
675
|
+
createElementVNode("i", {
|
|
676
|
+
class: normalizeClass(["i cursor-pointer", item.icon()]),
|
|
677
|
+
style: normalizeStyle({
|
|
678
|
+
color: item.color
|
|
679
|
+
}),
|
|
680
|
+
onClick: ($event) => handleAction(item)
|
|
681
|
+
}, null, 14, _hoisted_3$3)
|
|
682
|
+
]),
|
|
683
|
+
_: 2
|
|
684
|
+
}, 1024)
|
|
685
|
+
])), [
|
|
686
|
+
[_directive_auth, item.auth]
|
|
687
|
+
]) : createCommentVNode("v-if", true)
|
|
688
|
+
], 64);
|
|
689
|
+
}), 256))
|
|
690
|
+
])) : (openBlock(), createBlock(_component_ADropdown, {
|
|
656
691
|
key: 1,
|
|
657
692
|
getPopupContainer: getPopupContainer$1,
|
|
658
693
|
trigger: ["click"]
|
|
@@ -668,15 +703,15 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
668
703
|
}, {
|
|
669
704
|
default: withCtx(() => [
|
|
670
705
|
createElementVNode("i", {
|
|
671
|
-
class: normalizeClass(["i text-base opacity-80 pr-2", item.icon]),
|
|
706
|
+
class: normalizeClass(["i text-base opacity-80 pr-2", item.icon()]),
|
|
672
707
|
style: normalizeStyle({
|
|
673
708
|
color: item.color
|
|
674
709
|
})
|
|
675
710
|
}, null, 6),
|
|
676
|
-
createElementVNode("span",
|
|
711
|
+
createElementVNode("span", _hoisted_5$2, toDisplayString(item.label()), 1)
|
|
677
712
|
]),
|
|
678
713
|
_: 2
|
|
679
|
-
}, 1032, ["onClick"])) : createCommentVNode("", true)
|
|
714
|
+
}, 1032, ["onClick"])) : createCommentVNode("v-if", true)
|
|
680
715
|
])), [
|
|
681
716
|
[_directive_auth, item.auth]
|
|
682
717
|
]);
|
|
@@ -686,13 +721,21 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
686
721
|
})
|
|
687
722
|
]),
|
|
688
723
|
default: withCtx(() => [
|
|
689
|
-
|
|
724
|
+
_hoisted_4$3
|
|
690
725
|
]),
|
|
691
726
|
_: 1
|
|
692
727
|
}));
|
|
693
728
|
};
|
|
694
729
|
}
|
|
695
730
|
});
|
|
731
|
+
const _export_sfc = (sfc, props2) => {
|
|
732
|
+
const target = sfc.__vccOpts || sfc;
|
|
733
|
+
for (const [key, val] of props2) {
|
|
734
|
+
target[key] = val;
|
|
735
|
+
}
|
|
736
|
+
return target;
|
|
737
|
+
};
|
|
738
|
+
const TableAction = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableAction.vue"]]);
|
|
696
739
|
const tableKey = Symbol("dt-page");
|
|
697
740
|
function createTableInstance(instance) {
|
|
698
741
|
provide(tableKey, instance);
|
|
@@ -757,18 +800,18 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
757
800
|
const { t } = useI18n("UI");
|
|
758
801
|
const { editRule, align = "left" } = props2.column;
|
|
759
802
|
const table = getTableInstance();
|
|
760
|
-
const ruleMessage = ref
|
|
761
|
-
const ruleVisible = ref
|
|
762
|
-
const optionsRef = ref
|
|
763
|
-
const currentValueRef = ref
|
|
764
|
-
const getComponent = computed
|
|
765
|
-
const getRuleVisible = computed
|
|
803
|
+
const ruleMessage = ref("");
|
|
804
|
+
const ruleVisible = ref(false);
|
|
805
|
+
const optionsRef = ref([]);
|
|
806
|
+
const currentValueRef = ref(props2.value);
|
|
807
|
+
const getComponent = computed(() => props2.column?.editComponent || "Input");
|
|
808
|
+
const getRuleVisible = computed(() => {
|
|
766
809
|
return unref(ruleMessage) && unref(ruleVisible);
|
|
767
810
|
});
|
|
768
|
-
const getWrapperClass = computed
|
|
811
|
+
const getWrapperClass = computed(() => {
|
|
769
812
|
return `edit-cell-align-${align}`;
|
|
770
813
|
});
|
|
771
|
-
const getIsCheckComp = computed
|
|
814
|
+
const getIsCheckComp = computed(() => {
|
|
772
815
|
const component = unref(getComponent);
|
|
773
816
|
return ["Checkbox", "Switch"].includes(component);
|
|
774
817
|
});
|
|
@@ -781,15 +824,15 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
781
824
|
const setTableValue = () => {
|
|
782
825
|
props2.record[props2.column.dataIndex] = unref(currentValueRef);
|
|
783
826
|
};
|
|
784
|
-
const getComponentProps = computed
|
|
827
|
+
const getComponentProps = computed(() => {
|
|
785
828
|
const isCheckValue = unref(getIsCheckComp);
|
|
786
829
|
const valueField = isCheckValue ? "checked" : "value";
|
|
787
830
|
const val = unref(currentValueRef);
|
|
788
831
|
const value = isCheckValue ? isNumber(val) && isBoolean(val) ? val : !!val : val;
|
|
789
832
|
let compProps = props2.column?.editComponentProps ?? {};
|
|
790
|
-
const { record, column, index } = props2;
|
|
833
|
+
const { record, column, index: index2 } = props2;
|
|
791
834
|
if (isFunction(compProps)) {
|
|
792
|
-
compProps = compProps({ text: val, record, column, index }) ?? {};
|
|
835
|
+
compProps = compProps({ text: val, record, column, index: index2 }) ?? {};
|
|
793
836
|
}
|
|
794
837
|
if (unref(getComponent) === "InputNumber") {
|
|
795
838
|
compProps = {
|
|
@@ -869,8 +912,9 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
869
912
|
};
|
|
870
913
|
}
|
|
871
914
|
});
|
|
915
|
+
const EditableCell = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/editTable/EditTableCell.vue"]]);
|
|
872
916
|
function renderEditCell(column) {
|
|
873
|
-
return ({ text: value, record, index }) => {
|
|
917
|
+
return ({ text: value, record, index: index2 }) => {
|
|
874
918
|
record.onValid = async () => {
|
|
875
919
|
if (isArray(record?.validCbs)) {
|
|
876
920
|
const validFns = (record?.validCbs || []).map((fn) => fn());
|
|
@@ -898,11 +942,11 @@ function renderEditCell(column) {
|
|
|
898
942
|
}
|
|
899
943
|
return true;
|
|
900
944
|
};
|
|
901
|
-
return h(
|
|
945
|
+
return h(EditableCell, {
|
|
902
946
|
value,
|
|
903
947
|
record,
|
|
904
948
|
column,
|
|
905
|
-
index
|
|
949
|
+
index: index2
|
|
906
950
|
});
|
|
907
951
|
};
|
|
908
952
|
}
|
|
@@ -959,15 +1003,15 @@ function handleIndexColumn(propsRef, getPaginationRef, columns) {
|
|
|
959
1003
|
width: unref(getIsZH) ? 50 : 70,
|
|
960
1004
|
title: t("NUMBER"),
|
|
961
1005
|
align: "center",
|
|
962
|
-
customRender: ({ index }) => {
|
|
1006
|
+
customRender: ({ index: index2 }) => {
|
|
963
1007
|
const getPagination = unref(getPaginationRef);
|
|
964
1008
|
const { appConf } = useAppStore();
|
|
965
1009
|
const { defaultPageSize } = appConf.ui.table;
|
|
966
1010
|
if (isBoolean(getPagination)) {
|
|
967
|
-
return `${
|
|
1011
|
+
return `${index2 + 1}`;
|
|
968
1012
|
}
|
|
969
1013
|
const { current = 1, pageSize = defaultPageSize } = getPagination;
|
|
970
|
-
return ((current < 1 ? 1 : current) - 1) * pageSize +
|
|
1014
|
+
return ((current < 1 ? 1 : current) - 1) * pageSize + index2 + 1;
|
|
971
1015
|
},
|
|
972
1016
|
...isFixedLeft ? {
|
|
973
1017
|
fixed: "left"
|
|
@@ -976,36 +1020,42 @@ function handleIndexColumn(propsRef, getPaginationRef, columns) {
|
|
|
976
1020
|
});
|
|
977
1021
|
}
|
|
978
1022
|
function handleActionColumn(propsRef, columns) {
|
|
1023
|
+
const { appConf } = useAppStore();
|
|
979
1024
|
const { getIsZH } = useHeader();
|
|
980
1025
|
const { t } = useI18n("UI");
|
|
981
|
-
|
|
982
|
-
{
|
|
983
|
-
{
|
|
984
|
-
]
|
|
985
|
-
|
|
1026
|
+
let defaultButtons = [
|
|
1027
|
+
{ label: t("EDIT"), icon: "mdi:text-box-edit-outline", onClick: unref(propsRef).onUpdate },
|
|
1028
|
+
{ label: t("DELETE"), icon: "mdi:delete-outline", onClick: unref(propsRef).onDelete, color: "#ed6f6f" }
|
|
1029
|
+
];
|
|
1030
|
+
const { operations = defaultButtons, expandMethodIcon = false } = unref(propsRef);
|
|
1031
|
+
if (!operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length)
|
|
986
1032
|
return;
|
|
987
1033
|
const hasIndex = columns.findIndex((column) => column.flag === ACTION_COLUMN);
|
|
988
1034
|
if (hasIndex === -1) {
|
|
989
|
-
let column = isObject(operations) ?
|
|
990
|
-
|
|
1035
|
+
let column = isObject(operations) ? {
|
|
1036
|
+
expand: appConf?.ui?.table?.expandActions,
|
|
1037
|
+
btns: defaultButtons,
|
|
1038
|
+
...operations
|
|
1039
|
+
} : isArray(operations) ? { expand: appConf?.ui?.table?.expandActions, btns: operations } : {};
|
|
1040
|
+
let expand = column.expand ? column.expand : expandMethodIcon;
|
|
991
1041
|
let columnObj = {
|
|
992
1042
|
fixed: "right",
|
|
993
1043
|
title: t("ACTIONS"),
|
|
994
1044
|
align: "center",
|
|
995
1045
|
expand,
|
|
996
|
-
width: `${expand ? column.btns.length *
|
|
1046
|
+
width: `${expand ? column.btns.length * 34 + 40 : unref(getIsZH) ? 70 : 90}px`,
|
|
997
1047
|
...column,
|
|
998
1048
|
flag: ACTION_COLUMN
|
|
999
1049
|
};
|
|
1000
1050
|
columns.push({
|
|
1001
1051
|
...columnObj,
|
|
1002
|
-
customRender: ({ record, index }) => {
|
|
1052
|
+
customRender: ({ record, index: index2 }) => {
|
|
1003
1053
|
return h$1(
|
|
1004
|
-
|
|
1054
|
+
TableAction,
|
|
1005
1055
|
omit({
|
|
1006
1056
|
...columnObj,
|
|
1007
1057
|
record,
|
|
1008
|
-
index
|
|
1058
|
+
index: index2
|
|
1009
1059
|
}, "align")
|
|
1010
1060
|
);
|
|
1011
1061
|
}
|
|
@@ -1038,16 +1088,17 @@ function sortFixedColumn(columns) {
|
|
|
1038
1088
|
function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
1039
1089
|
const columnsRef = ref(unref(propsRef).columns);
|
|
1040
1090
|
let cacheColumns = unref(propsRef).columns;
|
|
1041
|
-
const
|
|
1091
|
+
const { appConf } = useAppStore();
|
|
1092
|
+
const getColumnsRef = computed(() => {
|
|
1042
1093
|
const columns = cloneDeep(unref(columnsRef));
|
|
1043
1094
|
const { ellipsis } = unref(propsRef);
|
|
1044
|
-
columns.forEach((it,
|
|
1095
|
+
columns.forEach((it, index2) => {
|
|
1045
1096
|
it.class = it.class ?? "";
|
|
1046
1097
|
if (!it.class.split(" ").includes("__column")) {
|
|
1047
1098
|
it.class = `${it.class} __column`;
|
|
1048
1099
|
}
|
|
1049
1100
|
const { customRender, render } = it;
|
|
1050
|
-
if (it.sorter) {
|
|
1101
|
+
if (it.sorter && isBoolean(it.sorter) && appConf?.ui?.table?.multipleSorter) {
|
|
1051
1102
|
it.sorter = {
|
|
1052
1103
|
multiple: Number(it.sorter)
|
|
1053
1104
|
};
|
|
@@ -1061,7 +1112,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
|
1061
1112
|
handleActionColumn(propsRef, columns);
|
|
1062
1113
|
return columns;
|
|
1063
1114
|
});
|
|
1064
|
-
const getViewColumns = computed
|
|
1115
|
+
const getViewColumns = computed(() => {
|
|
1065
1116
|
const viewColumns = sortFixedColumn(unref(getColumnsRef));
|
|
1066
1117
|
const columns = cloneDeep(viewColumns);
|
|
1067
1118
|
return columns.filter((column) => isIfShow(column)).map((column) => {
|
|
@@ -1078,7 +1129,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
|
1078
1129
|
useDebounceFn(addResize, 100);
|
|
1079
1130
|
function addResize() {
|
|
1080
1131
|
const { resizable, minWidth = 50, maxWidth = 700 } = unref(propsRef);
|
|
1081
|
-
let els = unref(tableElRef)?.$el.querySelectorAll(".__column"), allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0;
|
|
1132
|
+
let els = unref(tableElRef)?.$el.querySelectorAll(".__column"), allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0, scrollBarW = 10;
|
|
1082
1133
|
for (let i = 0; i < els?.length; i++) {
|
|
1083
1134
|
allWidth += els[i].offsetWidth ?? 0;
|
|
1084
1135
|
}
|
|
@@ -1091,9 +1142,9 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
|
1091
1142
|
}
|
|
1092
1143
|
}
|
|
1093
1144
|
});
|
|
1094
|
-
avgWidth = (allWidth - columnAllWidth) / noWidthNum;
|
|
1145
|
+
avgWidth = (allWidth - columnAllWidth - scrollBarW) / noWidthNum;
|
|
1095
1146
|
columnsRef.value.forEach((it) => {
|
|
1096
|
-
it.width = it.width || avgWidth
|
|
1147
|
+
it.width = it.width || Math.round(avgWidth);
|
|
1097
1148
|
if (Reflect.has(it, "resizable") ? !!it.resizable : resizable) {
|
|
1098
1149
|
it.resizable = true;
|
|
1099
1150
|
it.minWidth = it.minWidth || minWidth;
|
|
@@ -1175,7 +1226,7 @@ function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
|
1175
1226
|
};
|
|
1176
1227
|
}
|
|
1177
1228
|
function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearSelectedRowKeys, emits }) {
|
|
1178
|
-
const customRow = (record,
|
|
1229
|
+
const customRow = (record, index2) => {
|
|
1179
1230
|
return {
|
|
1180
1231
|
onClick: (e) => {
|
|
1181
1232
|
e?.stopPropagation();
|
|
@@ -1229,19 +1280,19 @@ function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearS
|
|
|
1229
1280
|
}
|
|
1230
1281
|
}
|
|
1231
1282
|
handleClick();
|
|
1232
|
-
emits("row-click", record,
|
|
1283
|
+
emits("row-click", record, index2, e);
|
|
1233
1284
|
},
|
|
1234
1285
|
onDblclick: (event) => {
|
|
1235
|
-
emits("row-dbClick", record,
|
|
1286
|
+
emits("row-dbClick", record, index2, event);
|
|
1236
1287
|
},
|
|
1237
1288
|
onContextmenu: (event) => {
|
|
1238
|
-
emits("row-contextmenu", record,
|
|
1289
|
+
emits("row-contextmenu", record, index2, event);
|
|
1239
1290
|
},
|
|
1240
1291
|
onMouseenter: (event) => {
|
|
1241
|
-
emits("row-mouseenter", record,
|
|
1292
|
+
emits("row-mouseenter", record, index2, event);
|
|
1242
1293
|
},
|
|
1243
1294
|
onMouseleave: (event) => {
|
|
1244
|
-
emits("row-mouseleave", record,
|
|
1295
|
+
emits("row-mouseleave", record, index2, event);
|
|
1245
1296
|
}
|
|
1246
1297
|
};
|
|
1247
1298
|
};
|
|
@@ -1254,7 +1305,7 @@ function useDataSource(propsRef, {
|
|
|
1254
1305
|
setPagination,
|
|
1255
1306
|
clearSelectedRowKeys
|
|
1256
1307
|
}) {
|
|
1257
|
-
const dataSourceRef = ref
|
|
1308
|
+
const dataSourceRef = ref([]);
|
|
1258
1309
|
watch(
|
|
1259
1310
|
() => unref(propsRef).dataSource,
|
|
1260
1311
|
(dataSource) => {
|
|
@@ -1264,7 +1315,7 @@ function useDataSource(propsRef, {
|
|
|
1264
1315
|
immediate: true
|
|
1265
1316
|
}
|
|
1266
1317
|
);
|
|
1267
|
-
const getDataSourceRef = computed
|
|
1318
|
+
const getDataSourceRef = computed(() => {
|
|
1268
1319
|
return unref(dataSourceRef);
|
|
1269
1320
|
});
|
|
1270
1321
|
function handleTableChange(pagination, filters, sorter) {
|
|
@@ -1337,7 +1388,7 @@ function useDataSource(propsRef, {
|
|
|
1337
1388
|
};
|
|
1338
1389
|
}
|
|
1339
1390
|
function useFormValue(props2, key = "value", changeEvent = "change", emitData) {
|
|
1340
|
-
const instance = getCurrentInstance
|
|
1391
|
+
const instance = getCurrentInstance();
|
|
1341
1392
|
const emit = instance?.emit;
|
|
1342
1393
|
const innerState = reactive({
|
|
1343
1394
|
value: props2[key]
|
|
@@ -1352,7 +1403,7 @@ function useFormValue(props2, key = "value", changeEvent = "change", emitData) {
|
|
|
1352
1403
|
watchEffect(() => {
|
|
1353
1404
|
innerState.value = props2[key];
|
|
1354
1405
|
});
|
|
1355
|
-
const state = computed
|
|
1406
|
+
const state = computed({
|
|
1356
1407
|
get() {
|
|
1357
1408
|
return innerState.value;
|
|
1358
1409
|
},
|
|
@@ -1382,7 +1433,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
1382
1433
|
const props2 = __props;
|
|
1383
1434
|
const attrs = useAttrs();
|
|
1384
1435
|
const [state] = useFormValue(props2);
|
|
1385
|
-
const getOptions = computed
|
|
1436
|
+
const getOptions = computed(() => {
|
|
1386
1437
|
const { options } = props2;
|
|
1387
1438
|
if (!options || options?.length === 0)
|
|
1388
1439
|
return [];
|
|
@@ -1418,13 +1469,14 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
1418
1469
|
};
|
|
1419
1470
|
}
|
|
1420
1471
|
});
|
|
1472
|
+
const RadioButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/radioButton.vue"]]);
|
|
1421
1473
|
const _hoisted_1$9 = { class: "input-with-dialog" };
|
|
1422
1474
|
const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
1423
1475
|
__name: "formInputUseDialog",
|
|
1424
1476
|
setup(__props) {
|
|
1425
1477
|
const { t } = useI18n("UI");
|
|
1426
1478
|
const attrs = useAttrs();
|
|
1427
|
-
const bindProps = computed
|
|
1479
|
+
const bindProps = computed(() => {
|
|
1428
1480
|
return {
|
|
1429
1481
|
...omit(attrs, [
|
|
1430
1482
|
"formValues"
|
|
@@ -1453,14 +1505,15 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1453
1505
|
key: 0,
|
|
1454
1506
|
class: "i mdi:close-circle",
|
|
1455
1507
|
onClick: clearProps
|
|
1456
|
-
})) : createCommentVNode("", true)
|
|
1508
|
+
})) : createCommentVNode("v-if", true)
|
|
1457
1509
|
]);
|
|
1458
1510
|
};
|
|
1459
1511
|
}
|
|
1460
1512
|
});
|
|
1513
|
+
const DtFormInputDialog = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/formInputUseDialog.vue"]]);
|
|
1461
1514
|
const components = {
|
|
1462
1515
|
Input,
|
|
1463
|
-
InputWithDialog:
|
|
1516
|
+
InputWithDialog: DtFormInputDialog,
|
|
1464
1517
|
InputTextArea: Input.TextArea,
|
|
1465
1518
|
InputSearch: Input.Search,
|
|
1466
1519
|
InputGroup: Input.Group,
|
|
@@ -1469,7 +1522,7 @@ const components = {
|
|
|
1469
1522
|
TreeSelect,
|
|
1470
1523
|
Radio,
|
|
1471
1524
|
RadioGroup: Radio.Group,
|
|
1472
|
-
RadioButtonGroup
|
|
1525
|
+
RadioButtonGroup,
|
|
1473
1526
|
Checkbox,
|
|
1474
1527
|
CheckboxGroup: Checkbox.Group,
|
|
1475
1528
|
AutoComplete,
|
|
@@ -1534,12 +1587,12 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1534
1587
|
setup(__props, { emit: emits }) {
|
|
1535
1588
|
const props2 = __props;
|
|
1536
1589
|
const { t } = useI18n();
|
|
1537
|
-
const advancedRef = ref
|
|
1590
|
+
const advancedRef = ref(props2.isAdvanced);
|
|
1538
1591
|
let key = 0;
|
|
1539
|
-
const showAdvanceRef = computed
|
|
1592
|
+
const showAdvanceRef = computed(() => {
|
|
1540
1593
|
return props2.mode === "search" ? props2.showAdvancedButton : false;
|
|
1541
1594
|
});
|
|
1542
|
-
const colOpt = computed
|
|
1595
|
+
const colOpt = computed(() => {
|
|
1543
1596
|
let style = {
|
|
1544
1597
|
textAlign: "right"
|
|
1545
1598
|
};
|
|
@@ -1550,7 +1603,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1550
1603
|
}
|
|
1551
1604
|
return { style };
|
|
1552
1605
|
});
|
|
1553
|
-
const getAdvanceClass = computed
|
|
1606
|
+
const getAdvanceClass = computed(() => {
|
|
1554
1607
|
return [
|
|
1555
1608
|
"basic-arrow",
|
|
1556
1609
|
{ "basic-arrow--active": !advancedRef.value }
|
|
@@ -1601,9 +1654,9 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1601
1654
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.buttonList, (button) => {
|
|
1602
1655
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
1603
1656
|
(button.show === void 0 ? true : button.show) ? withDirectives((openBlock(), createBlock(_component_AButton, {
|
|
1657
|
+
class: normalizeClass(["items-center", button.class]),
|
|
1604
1658
|
type: button.type,
|
|
1605
|
-
|
|
1606
|
-
loading: button.loading?.value,
|
|
1659
|
+
loading: button.loading,
|
|
1607
1660
|
disabled: button.disabled,
|
|
1608
1661
|
key: unref(key),
|
|
1609
1662
|
onClick: ($event) => handleBtnClick(button)
|
|
@@ -1611,18 +1664,18 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1611
1664
|
icon: withCtx(() => [
|
|
1612
1665
|
button.preIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_1$8, null, 512)), [
|
|
1613
1666
|
[_directive_icon, button.preIcon]
|
|
1614
|
-
]) : createCommentVNode("", true)
|
|
1667
|
+
]) : createCommentVNode("v-if", true)
|
|
1615
1668
|
]),
|
|
1616
1669
|
default: withCtx(() => [
|
|
1617
|
-
createTextVNode(" " + toDisplayString(unref(t)(button.
|
|
1670
|
+
createTextVNode(" " + toDisplayString(unref(t)(button.label)) + " ", 1),
|
|
1618
1671
|
button.postIcon ? withDirectives((openBlock(), createElementBlock("span", _hoisted_2$2, null, 512)), [
|
|
1619
1672
|
[_directive_icon, button.postIcon]
|
|
1620
|
-
]) : createCommentVNode("", true)
|
|
1673
|
+
]) : createCommentVNode("v-if", true)
|
|
1621
1674
|
]),
|
|
1622
1675
|
_: 2
|
|
1623
1676
|
}, 1032, ["type", "class", "loading", "disabled", "onClick"])), [
|
|
1624
1677
|
[_directive_auth, button.auth]
|
|
1625
|
-
]) : createCommentVNode("", true)
|
|
1678
|
+
]) : createCommentVNode("v-if", true)
|
|
1626
1679
|
], 64);
|
|
1627
1680
|
}), 256)),
|
|
1628
1681
|
unref(showAdvanceRef) ? (openBlock(), createBlock(_component_AButton, {
|
|
@@ -1632,29 +1685,31 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1632
1685
|
onClick: toggleAdvanced
|
|
1633
1686
|
}, {
|
|
1634
1687
|
default: withCtx(() => [
|
|
1688
|
+
createCommentVNode(" \u6536\u8D77 | \u5C55\u5F00 "),
|
|
1635
1689
|
createElementVNode("span", _hoisted_3$2, toDisplayString(advancedRef.value ? unref(t)("UI.ADVANCED") : unref(t)("UI.EXPAND")), 1),
|
|
1636
1690
|
createElementVNode("span", {
|
|
1637
1691
|
class: normalizeClass(unref(getAdvanceClass))
|
|
1638
1692
|
}, _hoisted_5$1, 2)
|
|
1639
1693
|
]),
|
|
1640
1694
|
_: 1
|
|
1641
|
-
})) : createCommentVNode("", true)
|
|
1695
|
+
})) : createCommentVNode("v-if", true)
|
|
1642
1696
|
]),
|
|
1643
1697
|
_: 1
|
|
1644
1698
|
}, 8, ["style"])
|
|
1645
1699
|
]),
|
|
1646
1700
|
_: 1
|
|
1647
|
-
}, 16)) : createCommentVNode("", true);
|
|
1701
|
+
}, 16)) : createCommentVNode("v-if", true);
|
|
1648
1702
|
};
|
|
1649
1703
|
}
|
|
1650
1704
|
});
|
|
1705
|
+
const DtFormButtons = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/form/src/components/FormButtons.vue"]]);
|
|
1651
1706
|
const _hoisted_1$7 = { key: 0 };
|
|
1652
1707
|
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
1653
1708
|
__name: "Fullscreen",
|
|
1654
1709
|
setup(__props) {
|
|
1655
1710
|
const { t } = useI18n("UI");
|
|
1656
1711
|
const table = getTableInstance();
|
|
1657
|
-
const wrapEl = ref
|
|
1712
|
+
const wrapEl = ref(null);
|
|
1658
1713
|
const { toggle, isFullscreen } = useFullscreen(wrapEl);
|
|
1659
1714
|
watch(
|
|
1660
1715
|
() => table.tableElRef.value,
|
|
@@ -1675,7 +1730,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
1675
1730
|
const _component_ATooltip = Tooltip;
|
|
1676
1731
|
return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
|
|
1677
1732
|
title: withCtx(() => [
|
|
1678
|
-
!unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$7, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("", true)
|
|
1733
|
+
!unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$7, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("v-if", true)
|
|
1679
1734
|
]),
|
|
1680
1735
|
default: withCtx(() => [
|
|
1681
1736
|
createElementVNode("span", {
|
|
@@ -1692,13 +1747,14 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
1692
1747
|
};
|
|
1693
1748
|
}
|
|
1694
1749
|
});
|
|
1750
|
+
const FullscreenSetting = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Fullscreen.vue"]]);
|
|
1695
1751
|
const orgDialogProp = reactive({});
|
|
1696
1752
|
const cbTransfer = reactive({});
|
|
1697
1753
|
const dataTransfer = reactive({});
|
|
1698
1754
|
function useModalOut() {
|
|
1699
|
-
const modal = ref
|
|
1700
|
-
const loaded = ref
|
|
1701
|
-
const uid = ref
|
|
1755
|
+
const modal = ref(null);
|
|
1756
|
+
const loaded = ref(true);
|
|
1757
|
+
const uid = ref(null);
|
|
1702
1758
|
const { isProd } = useApp();
|
|
1703
1759
|
function register(modalMethod, uuid) {
|
|
1704
1760
|
if (!getCurrentInstance()) {
|
|
@@ -1736,7 +1792,7 @@ function useModalOut() {
|
|
|
1736
1792
|
},
|
|
1737
1793
|
openModal: (params, afterClose) => {
|
|
1738
1794
|
const id = unref(uid);
|
|
1739
|
-
dataTransfer[id] = isObject(params) ? { ...toRaw(params) } : params;
|
|
1795
|
+
dataTransfer[id] = isObject(params) ? { ...toRaw$1(params) } : params;
|
|
1740
1796
|
getInstance()?.setModalProps({
|
|
1741
1797
|
footer: [],
|
|
1742
1798
|
defaultFullscreen: false,
|
|
@@ -1756,9 +1812,9 @@ function useModalOut() {
|
|
|
1756
1812
|
return [register, methods];
|
|
1757
1813
|
}
|
|
1758
1814
|
function useModal(props2, setModalData) {
|
|
1759
|
-
const modalInstanceRef = ref
|
|
1815
|
+
const modalInstanceRef = ref(null);
|
|
1760
1816
|
const currentInstance = getCurrentInstance();
|
|
1761
|
-
const uidRef = ref
|
|
1817
|
+
const uidRef = ref(null);
|
|
1762
1818
|
const { isProd } = useApp();
|
|
1763
1819
|
const getInstance = () => {
|
|
1764
1820
|
const instance = unref(modalInstanceRef);
|
|
@@ -1774,7 +1830,7 @@ function useModal(props2, setModalData) {
|
|
|
1774
1830
|
uidRef.value = uuid;
|
|
1775
1831
|
modalInstanceRef.value = modalInstance;
|
|
1776
1832
|
currentInstance?.emit("register", modalInstance, uuid);
|
|
1777
|
-
orgDialogProp[uuid] = toRaw(props2);
|
|
1833
|
+
orgDialogProp[uuid] = toRaw$1(props2);
|
|
1778
1834
|
modalInstance.setModalProps(props2);
|
|
1779
1835
|
};
|
|
1780
1836
|
watchEffect(() => {
|
|
@@ -1984,7 +2040,7 @@ const _sfc_main$e = {
|
|
|
1984
2040
|
});
|
|
1985
2041
|
const {
|
|
1986
2042
|
extendSlots
|
|
1987
|
-
} = useSlots
|
|
2043
|
+
} = useSlots();
|
|
1988
2044
|
const onCancel = (e) => emit("cancel", e);
|
|
1989
2045
|
return () => {
|
|
1990
2046
|
let _slot;
|
|
@@ -1996,12 +2052,13 @@ const _sfc_main$e = {
|
|
|
1996
2052
|
};
|
|
1997
2053
|
if (!propsData?.visible)
|
|
1998
2054
|
return null;
|
|
1999
|
-
return createVNode(Modal, propsData, _isSlot(_slot = extendSlots(slots)) ? _slot : {
|
|
2055
|
+
return createVNode(Modal$1, propsData, _isSlot(_slot = extendSlots(slots)) ? _slot : {
|
|
2000
2056
|
default: () => [_slot]
|
|
2001
2057
|
});
|
|
2002
2058
|
};
|
|
2003
2059
|
}
|
|
2004
2060
|
};
|
|
2061
|
+
const Modal = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/Modal.vue"]]);
|
|
2005
2062
|
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
2006
2063
|
__name: "CloseIcon",
|
|
2007
2064
|
props: {
|
|
@@ -2012,7 +2069,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2012
2069
|
setup(__props, { emit }) {
|
|
2013
2070
|
const props2 = __props;
|
|
2014
2071
|
const { t } = useI18n("UI");
|
|
2015
|
-
const getClass = computed
|
|
2072
|
+
const getClass = computed(() => {
|
|
2016
2073
|
return [
|
|
2017
2074
|
"dt-basic-modal-close",
|
|
2018
2075
|
`dt-basic-modal-close--custom`,
|
|
@@ -2060,7 +2117,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2060
2117
|
]),
|
|
2061
2118
|
_: 1
|
|
2062
2119
|
}, 8, ["title"]))
|
|
2063
|
-
], 64)) : createCommentVNode("", true),
|
|
2120
|
+
], 64)) : createCommentVNode("v-if", true),
|
|
2064
2121
|
createElementVNode("i", {
|
|
2065
2122
|
class: "i mdi:close h-14 w-10 pr-4",
|
|
2066
2123
|
onClick: handleCancel
|
|
@@ -2069,6 +2126,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2069
2126
|
};
|
|
2070
2127
|
}
|
|
2071
2128
|
});
|
|
2129
|
+
const CloseIcon = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/CloseIcon.vue"]]);
|
|
2072
2130
|
const isServer = typeof window === "undefined";
|
|
2073
2131
|
const BAR_MAP = {
|
|
2074
2132
|
vertical: {
|
|
@@ -2137,14 +2195,14 @@ const Bar = defineComponent({
|
|
|
2137
2195
|
move: Number
|
|
2138
2196
|
},
|
|
2139
2197
|
setup(props2) {
|
|
2140
|
-
const instance = getCurrentInstance
|
|
2141
|
-
const thumb = ref
|
|
2198
|
+
const instance = getCurrentInstance();
|
|
2199
|
+
const thumb = ref();
|
|
2142
2200
|
const wrap = inject("scroll-bar-wrap", {});
|
|
2143
|
-
const bar = computed
|
|
2201
|
+
const bar = computed(() => {
|
|
2144
2202
|
return BAR_MAP[props2.vertical ? "vertical" : "horizontal"];
|
|
2145
2203
|
});
|
|
2146
|
-
const barStore = ref
|
|
2147
|
-
const cursorDown = ref
|
|
2204
|
+
const barStore = ref({});
|
|
2205
|
+
const cursorDown = ref();
|
|
2148
2206
|
const clickThumbHandler = (e) => {
|
|
2149
2207
|
if (e.ctrlKey || e.button === 2) {
|
|
2150
2208
|
return;
|
|
@@ -2232,14 +2290,14 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
2232
2290
|
},
|
|
2233
2291
|
setup(__props) {
|
|
2234
2292
|
const props2 = __props;
|
|
2235
|
-
const sizeWidth = ref
|
|
2236
|
-
const sizeHeight = ref
|
|
2237
|
-
const moveX = ref
|
|
2238
|
-
const moveY = ref
|
|
2239
|
-
const wrap = ref
|
|
2240
|
-
const resize = ref
|
|
2293
|
+
const sizeWidth = ref("0");
|
|
2294
|
+
const sizeHeight = ref("0");
|
|
2295
|
+
const moveX = ref(0);
|
|
2296
|
+
const moveY = ref(0);
|
|
2297
|
+
const wrap = ref();
|
|
2298
|
+
const resize = ref();
|
|
2241
2299
|
provide("scroll-bar-wrap", wrap);
|
|
2242
|
-
const style = computed
|
|
2300
|
+
const style = computed(() => {
|
|
2243
2301
|
let rsStyle = {};
|
|
2244
2302
|
if (Array.isArray(props2.wrapStyle)) {
|
|
2245
2303
|
props2.wrapStyle.forEach((it) => {
|
|
@@ -2261,7 +2319,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
2261
2319
|
sizeHeight.value = heightPercentage < 100 ? heightPercentage + "%" : "";
|
|
2262
2320
|
sizeWidth.value = widthPercentage < 100 ? widthPercentage + "%" : "";
|
|
2263
2321
|
};
|
|
2264
|
-
onMounted
|
|
2322
|
+
onMounted(() => {
|
|
2265
2323
|
nextTick(update);
|
|
2266
2324
|
if (!props2.noresize) {
|
|
2267
2325
|
addResizeListener(unref(resize), update);
|
|
@@ -2310,12 +2368,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
2310
2368
|
};
|
|
2311
2369
|
}
|
|
2312
2370
|
});
|
|
2371
|
+
const ScrollBar = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/components/scroll-bar.vue"]]);
|
|
2313
2372
|
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
2314
2373
|
__name: "scroll-container",
|
|
2315
2374
|
setup(__props) {
|
|
2316
2375
|
const scrollbarRef = ref(null);
|
|
2317
2376
|
return (_ctx, _cache) => {
|
|
2318
|
-
return openBlock(), createBlock(
|
|
2377
|
+
return openBlock(), createBlock(ScrollBar, mergeProps({
|
|
2319
2378
|
ref_key: "scrollbarRef",
|
|
2320
2379
|
ref: scrollbarRef
|
|
2321
2380
|
}, _ctx.$attrs, { class: "w-full h-full" }), {
|
|
@@ -2327,6 +2386,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2327
2386
|
};
|
|
2328
2387
|
}
|
|
2329
2388
|
});
|
|
2389
|
+
const ScrollContainer = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/scroll-container.vue"]]);
|
|
2330
2390
|
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
2331
2391
|
__name: "slot-container",
|
|
2332
2392
|
props: {
|
|
@@ -2339,20 +2399,21 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
2339
2399
|
},
|
|
2340
2400
|
setup(__props) {
|
|
2341
2401
|
const props2 = __props;
|
|
2342
|
-
const Container = h("div", [props2.template(props2.data)]);
|
|
2402
|
+
const Container = h$1("div", [props2.template(props2.data)]);
|
|
2343
2403
|
return (_ctx, _cache) => {
|
|
2344
2404
|
return openBlock(), createBlock(unref(Container));
|
|
2345
2405
|
};
|
|
2346
2406
|
}
|
|
2347
2407
|
});
|
|
2408
|
+
const SlotContainer = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/container/src/slot-container.vue"]]);
|
|
2348
2409
|
const withInstall = (comp) => {
|
|
2349
2410
|
comp.install = (app) => {
|
|
2350
2411
|
app.component(comp.name, comp);
|
|
2351
2412
|
};
|
|
2352
2413
|
return comp;
|
|
2353
2414
|
};
|
|
2354
|
-
const DtScrollContainer = withInstall(
|
|
2355
|
-
withInstall(
|
|
2415
|
+
const DtScrollContainer = withInstall(ScrollContainer);
|
|
2416
|
+
withInstall(SlotContainer);
|
|
2356
2417
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
2357
2418
|
__name: "ModalWrap",
|
|
2358
2419
|
props: {
|
|
@@ -2367,12 +2428,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
2367
2428
|
emits: ["ext-height", "height-change"],
|
|
2368
2429
|
setup(__props, { emit: emits }) {
|
|
2369
2430
|
const props2 = __props;
|
|
2370
|
-
const wrapperRef = ref
|
|
2371
|
-
const wrapRef = ref
|
|
2372
|
-
const realHeightRef = ref
|
|
2373
|
-
const minRealHeightRef = ref
|
|
2431
|
+
const wrapperRef = ref(null);
|
|
2432
|
+
const wrapRef = ref(null);
|
|
2433
|
+
const realHeightRef = ref(0);
|
|
2434
|
+
const minRealHeightRef = ref(0);
|
|
2374
2435
|
let realHeight = 0;
|
|
2375
|
-
const wrapStyle = computed
|
|
2436
|
+
const wrapStyle = computed(() => {
|
|
2376
2437
|
return {
|
|
2377
2438
|
minHeight: `${props2.minHeight}px`,
|
|
2378
2439
|
[props2.fullScreen ? "height" : "maxHeight"]: `${unref(realHeightRef)}px`
|
|
@@ -2386,10 +2447,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
2386
2447
|
const wrapperRefDom = unref(wrapperRef);
|
|
2387
2448
|
if (!wrapperRefDom)
|
|
2388
2449
|
return;
|
|
2389
|
-
const bodyDom = wrapperRefDom.$el.parentElement;
|
|
2450
|
+
const bodyDom = wrapperRefDom.$el.parentElement.parentElement.parentElement;
|
|
2390
2451
|
if (!bodyDom)
|
|
2391
2452
|
return;
|
|
2392
|
-
bodyDom.style.padding = "0";
|
|
2453
|
+
bodyDom.style.padding = props2.useWrapper ? "24px" : "0";
|
|
2393
2454
|
await nextTick();
|
|
2394
2455
|
const modalDom = bodyDom.parentElement && bodyDom.parentElement.parentElement;
|
|
2395
2456
|
return modalDom;
|
|
@@ -2459,6 +2520,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
2459
2520
|
};
|
|
2460
2521
|
}
|
|
2461
2522
|
});
|
|
2523
|
+
const ModalWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/ModalWrap.vue"]]);
|
|
2462
2524
|
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
2463
2525
|
__name: "ModalFooter",
|
|
2464
2526
|
props: {
|
|
@@ -2475,12 +2537,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2475
2537
|
setup(__props, { emit: emits }) {
|
|
2476
2538
|
const props2 = __props;
|
|
2477
2539
|
const { t } = useI18n("UI");
|
|
2478
|
-
const buttonList = computed
|
|
2540
|
+
const buttonList = computed(() => {
|
|
2479
2541
|
if (props2.buttons && props2.buttons.length)
|
|
2480
2542
|
return props2.buttons;
|
|
2481
2543
|
let buttonActions = [
|
|
2482
|
-
{ t: "\u4FDD\u5B58",
|
|
2483
|
-
{ t: "\u5173\u95ED",
|
|
2544
|
+
{ t: "\u4FDD\u5B58", label: props2.okText || t("SAVE"), preIcon: "mdi:content-save", type: "primary", flag: "OK" },
|
|
2545
|
+
{ t: "\u5173\u95ED", label: props2.cancelText || t("CLOSE"), preIcon: "mdi:close", flag: "CANCEL" }
|
|
2484
2546
|
];
|
|
2485
2547
|
if (!props2.showSave)
|
|
2486
2548
|
buttonActions = buttonActions.filter((btn) => btn.flag !== "OK");
|
|
@@ -2501,7 +2563,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2501
2563
|
return (_ctx, _cache) => {
|
|
2502
2564
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
2503
2565
|
renderSlot(_ctx.$slots, "appendFooter"),
|
|
2504
|
-
createVNode(
|
|
2566
|
+
createVNode(DtFormButtons, {
|
|
2505
2567
|
mode: "dialog",
|
|
2506
2568
|
buttonList: unref(buttonList),
|
|
2507
2569
|
onHandleMethod: _cache[0] || (_cache[0] = ($event) => handleMethod($event))
|
|
@@ -2510,9 +2572,10 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2510
2572
|
};
|
|
2511
2573
|
}
|
|
2512
2574
|
});
|
|
2575
|
+
const ModalFooter = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/components/ModalFooter.vue"]]);
|
|
2513
2576
|
function useFullScreen(wrapClassName) {
|
|
2514
|
-
const fullScreenRef = ref
|
|
2515
|
-
const getWrapClassName = computed
|
|
2577
|
+
const fullScreenRef = ref(false);
|
|
2578
|
+
const getWrapClassName = computed(() => {
|
|
2516
2579
|
const clsName = unref(wrapClassName) || "";
|
|
2517
2580
|
const cls = unref(fullScreenRef) ? `fullscreen-modal ${clsName} ` : unref(clsName);
|
|
2518
2581
|
return `dt-modal ${cls}`;
|
|
@@ -2534,17 +2597,17 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2534
2597
|
emits: ["visible-change", "height-change", "cancel", "save", "register", "update:visible"],
|
|
2535
2598
|
setup(__props, { emit: emits }) {
|
|
2536
2599
|
const props2 = __props;
|
|
2537
|
-
const visibleRef = ref
|
|
2538
|
-
const propsRef = ref
|
|
2539
|
-
const modalWrapperRef = ref
|
|
2540
|
-
const { getWrapClassName, toggleFullScreen, fullScreenRef } = useFullScreen(computed
|
|
2541
|
-
const getMergeProps = computed
|
|
2600
|
+
const visibleRef = ref(false);
|
|
2601
|
+
const propsRef = ref();
|
|
2602
|
+
const modalWrapperRef = ref(null);
|
|
2603
|
+
const { getWrapClassName, toggleFullScreen, fullScreenRef } = useFullScreen(computed(() => unref(propsRef)?.wrapClassName));
|
|
2604
|
+
const getMergeProps = computed(() => {
|
|
2542
2605
|
return {
|
|
2543
2606
|
...props2,
|
|
2544
2607
|
...unref(propsRef)
|
|
2545
2608
|
};
|
|
2546
2609
|
});
|
|
2547
|
-
const getBindValue = computed
|
|
2610
|
+
const getBindValue = computed(() => {
|
|
2548
2611
|
const bindValue = {
|
|
2549
2612
|
...unref(getMergeProps),
|
|
2550
2613
|
...unref(propsRef),
|
|
@@ -2557,12 +2620,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2557
2620
|
}
|
|
2558
2621
|
return omit(bindValue, omitArr);
|
|
2559
2622
|
});
|
|
2560
|
-
const getWrapperHeight = computed
|
|
2623
|
+
const getWrapperHeight = computed(() => {
|
|
2561
2624
|
if (unref(fullScreenRef))
|
|
2562
2625
|
return void 0;
|
|
2563
2626
|
return unref(getBindValue).height;
|
|
2564
2627
|
});
|
|
2565
|
-
const modalFooterHeight = computed
|
|
2628
|
+
const modalFooterHeight = computed(() => {
|
|
2566
2629
|
if (isArray(props2.footer)) {
|
|
2567
2630
|
return (unref(propsRef)?.footer).length ? 0 : void 0;
|
|
2568
2631
|
}
|
|
@@ -2628,14 +2691,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2628
2691
|
});
|
|
2629
2692
|
return (_ctx, _cache) => {
|
|
2630
2693
|
const _component_ASpin = Spin;
|
|
2631
|
-
return openBlock(), createBlock(
|
|
2694
|
+
return openBlock(), createBlock(Modal, mergeProps(unref(getBindValue), { onCancel: handleCancel }), createSlots({
|
|
2632
2695
|
default: withCtx(() => [
|
|
2633
2696
|
createVNode(_component_ASpin, {
|
|
2634
2697
|
spinning: unref(getBindValue).loading,
|
|
2635
2698
|
tip: unref(getBindValue).loadingTip
|
|
2636
2699
|
}, {
|
|
2637
2700
|
default: withCtx(() => [
|
|
2638
|
-
createVNode(
|
|
2701
|
+
createVNode(ModalWrapper, mergeProps({
|
|
2639
2702
|
useWrapper: unref(getBindValue).useWrapper,
|
|
2640
2703
|
fullScreen: unref(fullScreenRef),
|
|
2641
2704
|
ref_key: "modalWrapperRef",
|
|
@@ -2659,7 +2722,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2659
2722
|
!_ctx.$slots.closeIcon ? {
|
|
2660
2723
|
name: "closeIcon",
|
|
2661
2724
|
fn: withCtx(() => [
|
|
2662
|
-
createVNode(
|
|
2725
|
+
createVNode(CloseIcon, {
|
|
2663
2726
|
canFullscreen: unref(getBindValue).canFullscreen,
|
|
2664
2727
|
fullScreen: unref(fullScreenRef),
|
|
2665
2728
|
onCancel: handleCancel,
|
|
@@ -2678,7 +2741,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2678
2741
|
!_ctx.$slots.footer ? {
|
|
2679
2742
|
name: "footer",
|
|
2680
2743
|
fn: withCtx(() => [
|
|
2681
|
-
createVNode(
|
|
2744
|
+
createVNode(ModalFooter, {
|
|
2682
2745
|
buttons: propsRef.value?.footer,
|
|
2683
2746
|
showSave: unref(getBindValue).showOkBtn,
|
|
2684
2747
|
showCancel: unref(getBindValue).showCancelBtn,
|
|
@@ -2711,6 +2774,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2711
2774
|
};
|
|
2712
2775
|
}
|
|
2713
2776
|
});
|
|
2777
|
+
const DtModal = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/modal/src/index.vue"]]);
|
|
2714
2778
|
const _hoisted_1$5 = { class: "column-select" };
|
|
2715
2779
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
2716
2780
|
__name: "DownloadCtrl",
|
|
@@ -2721,7 +2785,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2721
2785
|
indeterminate: false,
|
|
2722
2786
|
checkAll: false
|
|
2723
2787
|
});
|
|
2724
|
-
const modalData = ref
|
|
2788
|
+
const modalData = ref([]);
|
|
2725
2789
|
const onCheckAllChange = (e) => {
|
|
2726
2790
|
modalData.value?.map((it) => it.show = e.target.checked);
|
|
2727
2791
|
};
|
|
@@ -2762,7 +2826,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2762
2826
|
const _component_ADivider = Divider$1;
|
|
2763
2827
|
const _component_ACol = Col;
|
|
2764
2828
|
const _component_ARow = Row;
|
|
2765
|
-
return openBlock(), createBlock(unref(
|
|
2829
|
+
return openBlock(), createBlock(unref(DtModal), {
|
|
2766
2830
|
onRegister: unref(registerDialog),
|
|
2767
2831
|
onSave: save
|
|
2768
2832
|
}, {
|
|
@@ -2782,7 +2846,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2782
2846
|
createVNode(_component_ADivider, { dashed: "" }),
|
|
2783
2847
|
createVNode(_component_ARow, null, {
|
|
2784
2848
|
default: withCtx(() => [
|
|
2785
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it,
|
|
2849
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index2) => {
|
|
2786
2850
|
return openBlock(), createBlock(_component_ACol, { span: 8 }, {
|
|
2787
2851
|
default: withCtx(() => [
|
|
2788
2852
|
createVNode(_component_ACheckbox, {
|
|
@@ -2808,17 +2872,29 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2808
2872
|
};
|
|
2809
2873
|
}
|
|
2810
2874
|
});
|
|
2811
|
-
const
|
|
2875
|
+
const DownloadCtrl = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/DownloadCtrl.vue"]]);
|
|
2876
|
+
const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("span", { class: "flex" }, [
|
|
2877
|
+
/* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" })
|
|
2878
|
+
], -1);
|
|
2812
2879
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
2813
2880
|
__name: "Download",
|
|
2814
2881
|
props: {
|
|
2815
|
-
|
|
2816
|
-
|
|
2882
|
+
download: {
|
|
2883
|
+
type: [Boolean, Object]
|
|
2884
|
+
}
|
|
2817
2885
|
},
|
|
2818
2886
|
setup(__props) {
|
|
2887
|
+
const props2 = __props;
|
|
2819
2888
|
const table = getTableInstance();
|
|
2820
2889
|
const [registerDialog, { openModal }] = useModalOut();
|
|
2890
|
+
const { appConf } = useAppStore();
|
|
2821
2891
|
const { t } = useI18n("UI");
|
|
2892
|
+
const isInclude = (type) => {
|
|
2893
|
+
return isBoolean(props2.download) && props2.download && appConf?.ui?.table?.exportTable.includes(type) || isArray(props2.download) && props2.download.includes(type);
|
|
2894
|
+
};
|
|
2895
|
+
const showCurrentDownload = computed(() => isInclude("current"));
|
|
2896
|
+
const showSelectedDownload = computed(() => isInclude("select"));
|
|
2897
|
+
const showBackDownload = computed(() => isInclude("all"));
|
|
2822
2898
|
function handleTitleClick({ key }) {
|
|
2823
2899
|
const { onDownload, columns: allColumns, dataSource } = unref(table.getBind);
|
|
2824
2900
|
const excludesFlag = ["ACTION", "CHECKBOX", "RADIO"];
|
|
@@ -2849,24 +2925,24 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
2849
2925
|
overlay: withCtx(() => [
|
|
2850
2926
|
createVNode(_component_AMenu, { onClick: handleTitleClick }, {
|
|
2851
2927
|
default: withCtx(() => [
|
|
2852
|
-
|
|
2928
|
+
unref(showCurrentDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "current" }, {
|
|
2853
2929
|
default: withCtx(() => [
|
|
2854
2930
|
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_CURRENT_PAGE")), 1)
|
|
2855
2931
|
]),
|
|
2856
2932
|
_: 1
|
|
2857
|
-
})) : createCommentVNode("", true),
|
|
2858
|
-
|
|
2933
|
+
})) : createCommentVNode("v-if", true),
|
|
2934
|
+
unref(showSelectedDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
|
|
2859
2935
|
default: withCtx(() => [
|
|
2860
2936
|
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_SELECT_COLUMN")), 1)
|
|
2861
2937
|
]),
|
|
2862
2938
|
_: 1
|
|
2863
|
-
})) : createCommentVNode("", true),
|
|
2864
|
-
|
|
2939
|
+
})) : createCommentVNode("v-if", true),
|
|
2940
|
+
unref(showBackDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
|
|
2865
2941
|
default: withCtx(() => [
|
|
2866
2942
|
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_ALL")), 1)
|
|
2867
2943
|
]),
|
|
2868
2944
|
_: 1
|
|
2869
|
-
})) : createCommentVNode("", true)
|
|
2945
|
+
})) : createCommentVNode("v-if", true)
|
|
2870
2946
|
]),
|
|
2871
2947
|
_: 1
|
|
2872
2948
|
})
|
|
@@ -2876,13 +2952,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
2876
2952
|
]),
|
|
2877
2953
|
_: 1
|
|
2878
2954
|
}, 8, ["getPopupContainer"]),
|
|
2879
|
-
createVNode(
|
|
2955
|
+
createVNode(DownloadCtrl, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
|
|
2880
2956
|
]),
|
|
2881
2957
|
_: 1
|
|
2882
2958
|
});
|
|
2883
2959
|
};
|
|
2884
2960
|
}
|
|
2885
2961
|
});
|
|
2962
|
+
const Download = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Download.vue"]]);
|
|
2886
2963
|
const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:drag-outlined drag-icon cursor-pointer" }, null, -1);
|
|
2887
2964
|
const _hoisted_2$1 = ["onClick"];
|
|
2888
2965
|
const _hoisted_3$1 = ["onClick"];
|
|
@@ -2899,13 +2976,13 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2899
2976
|
const table = getTableInstance();
|
|
2900
2977
|
const defaultRowSelection = omit(table.getRowSelection(), "selectedRowKeys");
|
|
2901
2978
|
let inited = false;
|
|
2902
|
-
const cachePlainOptions = ref
|
|
2903
|
-
const plainOptions = ref
|
|
2904
|
-
const plainSortOptions = ref
|
|
2905
|
-
const columnListRef = ref
|
|
2906
|
-
const checkIndex = ref
|
|
2907
|
-
const checkSelect = ref
|
|
2908
|
-
const getValues = computed
|
|
2979
|
+
const cachePlainOptions = ref([]);
|
|
2980
|
+
const plainOptions = ref([]);
|
|
2981
|
+
const plainSortOptions = ref([]);
|
|
2982
|
+
const columnListRef = ref(null);
|
|
2983
|
+
const checkIndex = ref(false);
|
|
2984
|
+
const checkSelect = ref(false);
|
|
2985
|
+
const getValues = computed(() => {
|
|
2909
2986
|
return unref(table?.getBind);
|
|
2910
2987
|
});
|
|
2911
2988
|
let sortable;
|
|
@@ -2915,7 +2992,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2915
2992
|
checkedList: [],
|
|
2916
2993
|
defaultCheckList: []
|
|
2917
2994
|
});
|
|
2918
|
-
const indeterminate = computed
|
|
2995
|
+
const indeterminate = computed(() => {
|
|
2919
2996
|
let len = plainOptions.value.length;
|
|
2920
2997
|
let checkedLen = state.checkedList.length;
|
|
2921
2998
|
unref(checkIndex) && checkedLen--;
|
|
@@ -3025,9 +3102,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
3025
3102
|
return;
|
|
3026
3103
|
const columns = getColumns();
|
|
3027
3104
|
const isFixed = item.fixed === fixed ? false : fixed;
|
|
3028
|
-
const
|
|
3029
|
-
if (
|
|
3030
|
-
columns[
|
|
3105
|
+
const index2 = columns.findIndex((col) => col.dataIndex === item.dataIndex);
|
|
3106
|
+
if (index2 !== -1) {
|
|
3107
|
+
columns[index2].fixed = isFixed;
|
|
3031
3108
|
}
|
|
3032
3109
|
item.fixed = isFixed;
|
|
3033
3110
|
if (isFixed && !item.width) {
|
|
@@ -3218,6 +3295,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
3218
3295
|
};
|
|
3219
3296
|
}
|
|
3220
3297
|
});
|
|
3298
|
+
const ColumnSetting = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/Column.vue"]]);
|
|
3221
3299
|
const _hoisted_1$2 = { class: "flex dt-table-setting" };
|
|
3222
3300
|
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
3223
3301
|
__name: "index",
|
|
@@ -3230,7 +3308,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3230
3308
|
emits: ["columns-change"],
|
|
3231
3309
|
setup(__props, { emit: emits }) {
|
|
3232
3310
|
const props2 = __props;
|
|
3233
|
-
const getSetting = computed
|
|
3311
|
+
const getSetting = computed(() => {
|
|
3234
3312
|
return {
|
|
3235
3313
|
download: true,
|
|
3236
3314
|
setting: true,
|
|
@@ -3243,16 +3321,17 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3243
3321
|
}
|
|
3244
3322
|
return (_ctx, _cache) => {
|
|
3245
3323
|
return openBlock(), createElementBlock("div", _hoisted_1$2, [
|
|
3246
|
-
unref(getSetting).download ? (openBlock(), createBlock(
|
|
3247
|
-
unref(getSetting).setting ? (openBlock(), createBlock(
|
|
3324
|
+
unref(getSetting).download ? (openBlock(), createBlock(Download, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("v-if", true),
|
|
3325
|
+
unref(getSetting).setting ? (openBlock(), createBlock(ColumnSetting, {
|
|
3248
3326
|
key: 1,
|
|
3249
3327
|
onColumnsChange: handleColumnChange
|
|
3250
|
-
})) : createCommentVNode("", true),
|
|
3251
|
-
unref(getSetting).fullscreen ? (openBlock(), createBlock(
|
|
3328
|
+
})) : createCommentVNode("v-if", true),
|
|
3329
|
+
unref(getSetting).fullscreen ? (openBlock(), createBlock(FullscreenSetting, { key: 2 })) : createCommentVNode("v-if", true)
|
|
3252
3330
|
]);
|
|
3253
3331
|
};
|
|
3254
3332
|
}
|
|
3255
3333
|
});
|
|
3334
|
+
const DtTableSetting = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/tableSetting/index.vue"]]);
|
|
3256
3335
|
const _hoisted_1$1 = { class: "dt-table-header" };
|
|
3257
3336
|
const _hoisted_2 = { class: "flex flex-row justify-between" };
|
|
3258
3337
|
const _hoisted_3 = { class: "flex flex-row flex-1" };
|
|
@@ -3284,33 +3363,34 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
3284
3363
|
return openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
3285
3364
|
createElementVNode("div", _hoisted_2, [
|
|
3286
3365
|
createElementVNode("div", _hoisted_3, [
|
|
3287
|
-
unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(
|
|
3366
|
+
unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(DtFormButtons), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("v-if", true),
|
|
3288
3367
|
renderSlot(_ctx.$slots, "toolbar")
|
|
3289
3368
|
]),
|
|
3290
3369
|
__props.tableSetting ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
3291
|
-
createVNode(
|
|
3292
|
-
])) : createCommentVNode("", true)
|
|
3370
|
+
createVNode(DtTableSetting, { setting: __props.tableSetting }, null, 8, ["setting"])
|
|
3371
|
+
])) : createCommentVNode("v-if", true)
|
|
3293
3372
|
]),
|
|
3294
3373
|
_ctx.$slots.headerTop ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
3295
3374
|
renderSlot(_ctx.$slots, "headerTop")
|
|
3296
|
-
])) : createCommentVNode("", true)
|
|
3375
|
+
])) : createCommentVNode("v-if", true)
|
|
3297
3376
|
]);
|
|
3298
3377
|
};
|
|
3299
3378
|
}
|
|
3300
3379
|
});
|
|
3380
|
+
const TableHeader = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableHeader.vue"]]);
|
|
3301
3381
|
function useTableHeader(propsRef, slots, handlers) {
|
|
3302
3382
|
const { t } = useI18n("UI");
|
|
3303
3383
|
const getHeaderProps = computed(() => {
|
|
3304
3384
|
const TABLE_TOOLS = [
|
|
3305
|
-
{ t: "\u65B0\u589E",
|
|
3306
|
-
{ t: "\u5220\u9664",
|
|
3385
|
+
{ t: "\u65B0\u589E", label: t("ADD"), preIcon: "mdi:plus", type: "primary", onClick: unref(propsRef).onAdd },
|
|
3386
|
+
{ t: "\u5220\u9664", label: t("DELETE"), preIcon: "mdi:delete-outline", onClick: unref(propsRef).onDeletes }
|
|
3307
3387
|
];
|
|
3308
3388
|
const { tableSetting, toolbar = TABLE_TOOLS } = unref(propsRef);
|
|
3309
|
-
const { getSlot } = useSlots
|
|
3389
|
+
const { getSlot } = useSlots();
|
|
3310
3390
|
const hideTitle = (!toolbar || !toolbar.filter((it) => it.show ?? true).length) && !slots.toolbar && !slots.headerTop && !tableSetting;
|
|
3311
3391
|
return {
|
|
3312
3392
|
title: hideTitle ? null : () => h$1(
|
|
3313
|
-
|
|
3393
|
+
TableHeader,
|
|
3314
3394
|
{
|
|
3315
3395
|
tableSetting,
|
|
3316
3396
|
toolbar,
|
|
@@ -3332,7 +3412,7 @@ function useTableHeader(propsRef, slots, handlers) {
|
|
|
3332
3412
|
};
|
|
3333
3413
|
}
|
|
3334
3414
|
function useLoading(props2) {
|
|
3335
|
-
const getLoading = ref
|
|
3415
|
+
const getLoading = ref(false);
|
|
3336
3416
|
watch(
|
|
3337
3417
|
() => unref(props2)?.loading,
|
|
3338
3418
|
(v) => getLoading.value = v
|
|
@@ -3347,7 +3427,7 @@ function useLoading(props2) {
|
|
|
3347
3427
|
}
|
|
3348
3428
|
function usePagination(props2) {
|
|
3349
3429
|
const { t } = useI18n("UI");
|
|
3350
|
-
const paginationRef = ref
|
|
3430
|
+
const paginationRef = ref();
|
|
3351
3431
|
const { getUiSize } = useHeader();
|
|
3352
3432
|
watch(
|
|
3353
3433
|
() => unref(props2).pagination,
|
|
@@ -3360,7 +3440,7 @@ function usePagination(props2) {
|
|
|
3360
3440
|
}
|
|
3361
3441
|
}
|
|
3362
3442
|
);
|
|
3363
|
-
const getPaginationInfo = computed
|
|
3443
|
+
const getPaginationInfo = computed(() => {
|
|
3364
3444
|
const { appConf } = useAppStore();
|
|
3365
3445
|
let { pagination } = unref(props2);
|
|
3366
3446
|
if (isBoolean(pagination) && !pagination) {
|
|
@@ -3411,10 +3491,10 @@ const DEFAULT_CONFIG = {
|
|
|
3411
3491
|
pid: "pid"
|
|
3412
3492
|
};
|
|
3413
3493
|
function useRowSelection(propsRef, emit) {
|
|
3414
|
-
const selectedRowKeysRef = ref
|
|
3415
|
-
const selectedRowRef = ref
|
|
3416
|
-
const getRowSelectionRef = computed
|
|
3417
|
-
const { rowSelection, showCheckboxColumn } = unref(propsRef);
|
|
3494
|
+
const selectedRowKeysRef = ref([]);
|
|
3495
|
+
const selectedRowRef = ref([]);
|
|
3496
|
+
const getRowSelectionRef = computed(() => {
|
|
3497
|
+
const { rowSelection, showCheckboxColumn, checkStrictly } = unref(propsRef);
|
|
3418
3498
|
if (!rowSelection && !showCheckboxColumn)
|
|
3419
3499
|
return null;
|
|
3420
3500
|
if (isBoolean(showCheckboxColumn)) {
|
|
@@ -3425,6 +3505,7 @@ function useRowSelection(propsRef, emit) {
|
|
|
3425
3505
|
}
|
|
3426
3506
|
}
|
|
3427
3507
|
return {
|
|
3508
|
+
checkStrictly,
|
|
3428
3509
|
selectedRowKeys: unref(selectedRowKeysRef),
|
|
3429
3510
|
onChange: (selectedRowKeys) => setSelectedRowKeys(selectedRowKeys),
|
|
3430
3511
|
...omit(rowSelection, ["onChange"])
|
|
@@ -3501,17 +3582,17 @@ function useRowSelection(propsRef, emit) {
|
|
|
3501
3582
|
};
|
|
3502
3583
|
}
|
|
3503
3584
|
function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
3504
|
-
const tableHeightRef = ref
|
|
3505
|
-
ref
|
|
3585
|
+
const tableHeightRef = ref(0), filterSource = ref([]);
|
|
3586
|
+
ref(null);
|
|
3506
3587
|
let footerEl, bodyEl;
|
|
3507
3588
|
const debounceRedoHeight = useDebounceFn(redoHeight, 100);
|
|
3508
3589
|
windowResizeFn(calcTableHeight, 280);
|
|
3509
|
-
const getCanResize = computed
|
|
3590
|
+
const getCanResize = computed(() => {
|
|
3510
3591
|
const { canResize, scroll } = unref(propsRef);
|
|
3511
3592
|
return canResize && !(scroll || {}).y;
|
|
3512
3593
|
});
|
|
3513
3594
|
watch(
|
|
3514
|
-
() => propsRef.value.dataSource,
|
|
3595
|
+
() => [unref(getCanResize), propsRef.value.dataSource],
|
|
3515
3596
|
(v) => {
|
|
3516
3597
|
debounceRedoHeight();
|
|
3517
3598
|
},
|
|
@@ -3527,10 +3608,14 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
|
3527
3608
|
tableHeightRef.value = height;
|
|
3528
3609
|
}
|
|
3529
3610
|
async function calcTableHeight() {
|
|
3530
|
-
const { pagination, virtual } = unref(propsRef);
|
|
3611
|
+
const { pagination, virtual, canResize, dataSource } = unref(propsRef);
|
|
3612
|
+
if (!canResize) {
|
|
3613
|
+
filterSource.value = [...toRaw$1(unref(dataSource))];
|
|
3614
|
+
}
|
|
3531
3615
|
const table = unref(tableElRef);
|
|
3616
|
+
if (!table)
|
|
3617
|
+
return;
|
|
3532
3618
|
const tableEl = table?.$el;
|
|
3533
|
-
const tableData = unref(propsRef).dataSource;
|
|
3534
3619
|
if (!tableEl)
|
|
3535
3620
|
return;
|
|
3536
3621
|
if (!bodyEl) {
|
|
@@ -3551,7 +3636,8 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
|
3551
3636
|
!tableEl.classList.contains("hide-scrollbar-x") && tableEl.classList.add("hide-scrollbar-x");
|
|
3552
3637
|
}
|
|
3553
3638
|
bodyEl.style.height = "unset";
|
|
3554
|
-
|
|
3639
|
+
const tableData = unref(propsRef).dataSource;
|
|
3640
|
+
if (!unref(getCanResize) || !unref(tableData))
|
|
3555
3641
|
return;
|
|
3556
3642
|
await nextTick();
|
|
3557
3643
|
let headerHeight = 0, paginationHeight = 2, footerHeight = 0, titleHeight = tableEl.querySelector(".ant-table-title")?.offsetHeight ?? 0, marginHeight = 15;
|
|
@@ -3577,13 +3663,17 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
|
3577
3663
|
paginationHeight = -8;
|
|
3578
3664
|
}
|
|
3579
3665
|
const tableHeight = table?.$el?.offsetHeight ?? 0;
|
|
3666
|
+
if (tableData.length === 0)
|
|
3667
|
+
paginationHeight = 5;
|
|
3580
3668
|
let height = tableHeight - paginationHeight - footerHeight - headerHeight - titleHeight - marginHeight;
|
|
3581
3669
|
height = Math.max(height, 167);
|
|
3582
3670
|
setHeight(height);
|
|
3583
3671
|
bodyEl.style.height = `${height}px`;
|
|
3672
|
+
if (tableData.length === 0)
|
|
3673
|
+
return;
|
|
3584
3674
|
filterSource.value = unref(propsRef)?.dataSource;
|
|
3585
3675
|
}
|
|
3586
|
-
const getScrollX = computed
|
|
3676
|
+
const getScrollX = computed(() => {
|
|
3587
3677
|
let width = 0;
|
|
3588
3678
|
if (unref(rowSelectionRef)) {
|
|
3589
3679
|
width += 32;
|
|
@@ -3597,17 +3687,21 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
|
3597
3687
|
const tableWidth = table?.$el?.offsetWidth ?? 0;
|
|
3598
3688
|
return tableWidth > width ? "100%" : width;
|
|
3599
3689
|
});
|
|
3600
|
-
const
|
|
3690
|
+
const hideScrollX = computed(() => {
|
|
3691
|
+
let operations = unref(propsRef).operations;
|
|
3692
|
+
return !operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length;
|
|
3693
|
+
});
|
|
3694
|
+
const getScrollRef = computed(() => {
|
|
3601
3695
|
const tableHeight = unref(tableHeightRef);
|
|
3602
3696
|
const { canResize, scroll } = unref(propsRef);
|
|
3603
3697
|
return {
|
|
3604
|
-
x: unref(getScrollX),
|
|
3605
|
-
y: tableHeight,
|
|
3698
|
+
x: unref(hideScrollX) ? null : unref(getScrollX),
|
|
3699
|
+
y: canResize ? tableHeight : null,
|
|
3606
3700
|
scrollToFirstRowOnChange: false,
|
|
3607
3701
|
...scroll
|
|
3608
3702
|
};
|
|
3609
3703
|
});
|
|
3610
|
-
onMounted
|
|
3704
|
+
onMounted(() => {
|
|
3611
3705
|
calcTableHeight();
|
|
3612
3706
|
nextTick(() => debounceRedoHeight());
|
|
3613
3707
|
});
|
|
@@ -3617,14 +3711,14 @@ function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
|
3617
3711
|
};
|
|
3618
3712
|
}
|
|
3619
3713
|
function useRows(propsRef) {
|
|
3620
|
-
function getRowClassName(record,
|
|
3714
|
+
function getRowClassName(record, index2) {
|
|
3621
3715
|
const { striped, rowClassName } = unref(propsRef);
|
|
3622
3716
|
const classNames = [];
|
|
3623
3717
|
if (striped) {
|
|
3624
|
-
classNames.push(
|
|
3718
|
+
classNames.push(index2 % 2 === 1 ? "table-striped" : "");
|
|
3625
3719
|
}
|
|
3626
3720
|
if (rowClassName && isFunction(rowClassName)) {
|
|
3627
|
-
classNames.push(rowClassName(record,
|
|
3721
|
+
classNames.push(rowClassName(record, index2));
|
|
3628
3722
|
}
|
|
3629
3723
|
return classNames.join(" ");
|
|
3630
3724
|
}
|
|
@@ -3641,7 +3735,7 @@ const _sfc_main$1 = {
|
|
|
3641
3735
|
name: "TableRender",
|
|
3642
3736
|
props,
|
|
3643
3737
|
setup(props2, {}) {
|
|
3644
|
-
let renderText = ref
|
|
3738
|
+
let renderText = ref(null);
|
|
3645
3739
|
watch(() => [props2.record, props2.column], (v) => {
|
|
3646
3740
|
if (v) {
|
|
3647
3741
|
renderCell();
|
|
@@ -3654,7 +3748,7 @@ const _sfc_main$1 = {
|
|
|
3654
3748
|
const {
|
|
3655
3749
|
column,
|
|
3656
3750
|
record,
|
|
3657
|
-
index
|
|
3751
|
+
index: index2
|
|
3658
3752
|
} = props2;
|
|
3659
3753
|
const {
|
|
3660
3754
|
render,
|
|
@@ -3696,7 +3790,7 @@ const _sfc_main$1 = {
|
|
|
3696
3790
|
});
|
|
3697
3791
|
}
|
|
3698
3792
|
} else if (isFunction(render)) {
|
|
3699
|
-
let afterRenderData = render(record,
|
|
3793
|
+
let afterRenderData = render(record, index2, text);
|
|
3700
3794
|
if (afterRenderData.__v_isRef) {
|
|
3701
3795
|
renderText = afterRenderData;
|
|
3702
3796
|
} else if (afterRenderData["setup"]) {
|
|
@@ -3714,15 +3808,16 @@ const _sfc_main$1 = {
|
|
|
3714
3808
|
return () => createVNode("span", null, [unref(renderText)]);
|
|
3715
3809
|
}
|
|
3716
3810
|
};
|
|
3811
|
+
const TableRender = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/components/TableRender.vue"]]);
|
|
3717
3812
|
const DEFAULT_SORT_FN = (sortInfo) => {
|
|
3718
3813
|
const { field, order } = sortInfo;
|
|
3719
3814
|
return field && order ? { field, order } : {};
|
|
3720
3815
|
};
|
|
3721
3816
|
const TableProps = {
|
|
3817
|
+
autoFetch: { type: Boolean, default: false },
|
|
3722
3818
|
clickToSelectRow: { type: Boolean, default: false },
|
|
3723
3819
|
tableSetting: { type: [Boolean, Object], default: () => ({}) },
|
|
3724
3820
|
striped: { type: Boolean, default: true },
|
|
3725
|
-
canColDrag: { type: Boolean, default: true },
|
|
3726
3821
|
clearSelectOnPageChange: { type: Boolean, default: false },
|
|
3727
3822
|
resizable: { type: Boolean, default: true },
|
|
3728
3823
|
minWidth: { type: Number },
|
|
@@ -3791,6 +3886,10 @@ const TableProps = {
|
|
|
3791
3886
|
type: Boolean,
|
|
3792
3887
|
default: false
|
|
3793
3888
|
},
|
|
3889
|
+
checkStrictly: {
|
|
3890
|
+
type: Boolean,
|
|
3891
|
+
default: false
|
|
3892
|
+
},
|
|
3794
3893
|
operations: {
|
|
3795
3894
|
type: Object
|
|
3796
3895
|
},
|
|
@@ -3800,6 +3899,11 @@ const TableProps = {
|
|
|
3800
3899
|
registerInstance: {
|
|
3801
3900
|
type: Function
|
|
3802
3901
|
},
|
|
3902
|
+
onSearch: {
|
|
3903
|
+
type: Function,
|
|
3904
|
+
default: (params) => {
|
|
3905
|
+
}
|
|
3906
|
+
},
|
|
3803
3907
|
onAdd: {
|
|
3804
3908
|
type: Function,
|
|
3805
3909
|
default: (params) => ({})
|
|
@@ -3817,7 +3921,7 @@ const TableProps = {
|
|
|
3817
3921
|
default: (params) => ({})
|
|
3818
3922
|
}
|
|
3819
3923
|
};
|
|
3820
|
-
const _hoisted_1 =
|
|
3924
|
+
const _hoisted_1 = ["src"];
|
|
3821
3925
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
3822
3926
|
__name: "index",
|
|
3823
3927
|
props: TableProps,
|
|
@@ -3834,15 +3938,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3834
3938
|
],
|
|
3835
3939
|
setup(__props, { emit: emits }) {
|
|
3836
3940
|
const props2 = __props;
|
|
3837
|
-
const tableElRef = ref
|
|
3941
|
+
const tableElRef = ref(null);
|
|
3838
3942
|
const attrs = useAttrs();
|
|
3839
|
-
const slots = useSlots$
|
|
3840
|
-
const innerPropsRef = ref
|
|
3841
|
-
const getProps = computed
|
|
3943
|
+
const slots = useSlots$1();
|
|
3944
|
+
const innerPropsRef = ref();
|
|
3945
|
+
const getProps = computed(() => {
|
|
3842
3946
|
return { ...props2, ...unref(innerPropsRef) };
|
|
3843
3947
|
});
|
|
3844
3948
|
const { getRowClassName } = useRows(getProps);
|
|
3845
|
-
const tableCls = computed
|
|
3949
|
+
const tableCls = computed(() => {
|
|
3846
3950
|
return [
|
|
3847
3951
|
"dt-table",
|
|
3848
3952
|
"box-border",
|
|
@@ -3884,15 +3988,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3884
3988
|
clearSelectedRowKeys
|
|
3885
3989
|
}
|
|
3886
3990
|
);
|
|
3887
|
-
const getBind = computed
|
|
3991
|
+
const getBind = computed(() => {
|
|
3888
3992
|
return {
|
|
3889
3993
|
...attrs,
|
|
3890
3994
|
...unref(getProps),
|
|
3891
3995
|
...unref(getHeaderProps),
|
|
3892
3996
|
scroll: unref(getScrollRef),
|
|
3893
3997
|
loading: unref(getLoading),
|
|
3894
|
-
dataSource: toRaw(unref(filterSource)),
|
|
3895
|
-
pagination: toRaw(unref(getPaginationInfo)),
|
|
3998
|
+
dataSource: toRaw$1(unref(filterSource)),
|
|
3999
|
+
pagination: toRaw$1(unref(getPaginationInfo)),
|
|
3896
4000
|
rowSelection: unref(getRowSelectionRef),
|
|
3897
4001
|
rowKey: unref(getProps).rowKey,
|
|
3898
4002
|
columns: unref(getViewColumns),
|
|
@@ -3942,6 +4046,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3942
4046
|
if (unref(innerPropsRef)?.registerInstance) {
|
|
3943
4047
|
unref(innerPropsRef)?.registerInstance(tableAction);
|
|
3944
4048
|
}
|
|
4049
|
+
onMounted(() => {
|
|
4050
|
+
if (unref(getProps).autoFetch)
|
|
4051
|
+
unref(getProps)?.onSearch({});
|
|
4052
|
+
});
|
|
3945
4053
|
return (_ctx, _cache) => {
|
|
3946
4054
|
const _component_ATable = Table;
|
|
3947
4055
|
return openBlock(), createBlock(_component_ATable, mergeProps({
|
|
@@ -3951,17 +4059,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3951
4059
|
rowClassName: unref(getRowClassName),
|
|
3952
4060
|
onChange: unref(handleTableChange)
|
|
3953
4061
|
}), createSlots({
|
|
3954
|
-
bodyCell: withCtx(({ column, record, index }) => [
|
|
3955
|
-
_ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index }))) : createCommentVNode("", true),
|
|
3956
|
-
|
|
4062
|
+
bodyCell: withCtx(({ column, record, index: index2 }) => [
|
|
4063
|
+
_ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index: index2 }))) : createCommentVNode("v-if", true),
|
|
4064
|
+
createCommentVNode(" \u9759\u6001\u7684\u6570\u636E\u53EF\u4EE5\u901A\u8FC7customRender, \u4F46\u662F\u54CD\u5E94\u5F0F\u6570\u636E, \u5F02\u6B65\u51FD\u6570,\u7EC4\u4EF6\u7B49\u9700\u8981\u4F7F\u7528bodyCell\u6E32\u67D3 "),
|
|
4065
|
+
column?.render && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(TableRender, {
|
|
3957
4066
|
key: 1,
|
|
3958
4067
|
column,
|
|
3959
4068
|
record,
|
|
3960
|
-
index
|
|
3961
|
-
}, null, 8, ["column", "record", "index"])) : createCommentVNode("", true)
|
|
4069
|
+
index: index2
|
|
4070
|
+
}, null, 8, ["column", "record", "index"])) : createCommentVNode("v-if", true)
|
|
3962
4071
|
]),
|
|
3963
4072
|
emptyText: withCtx(() => [
|
|
3964
|
-
|
|
4073
|
+
createElementVNode("img", {
|
|
4074
|
+
src: "/node_modules/@dt-frames/ui/es/assets/imgs/table/empty.png",
|
|
4075
|
+
class: "w-72 m-auto my-5"
|
|
4076
|
+
}, null, 8, _hoisted_1)
|
|
3965
4077
|
]),
|
|
3966
4078
|
_: 2
|
|
3967
4079
|
}, [
|
|
@@ -3977,7 +4089,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3977
4089
|
};
|
|
3978
4090
|
}
|
|
3979
4091
|
});
|
|
4092
|
+
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/dt/dt-frame-front/dt-frames/frames/packages/ui/src/components/table/src/index.vue"]]);
|
|
3980
4093
|
export {
|
|
3981
|
-
|
|
4094
|
+
index as DtTable,
|
|
3982
4095
|
useTable
|
|
3983
4096
|
};
|