@dt-frames/ui 1.0.13 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/es/components/curd/src/components/dialog.d.ts +20 -21
  2. package/es/components/curd/src/components/props.d.ts +2 -1
  3. package/es/components/curd/src/hooks/useCurd.d.ts +1 -0
  4. package/es/components/curd/src/types/curd.type.d.ts +2 -2
  5. package/es/components/forms/src/components/formButton.d.ts +1 -2
  6. package/es/components/forms/src/components/formIcon.d.ts +15 -15
  7. package/es/components/forms/src/hooks/helper.d.ts +2 -0
  8. package/es/components/forms/src/hooks/useFormActions.d.ts +2 -2
  9. package/es/components/forms/src/index.d.ts +2 -3
  10. package/es/components/forms/src/types/form.type.d.ts +3 -17
  11. package/es/components/index.d.ts +1 -1
  12. package/es/components/modal/src/components/modal.d.ts +2 -2
  13. package/es/components/modal/src/components/modalFooter.d.ts +1 -1
  14. package/es/components/modal/src/index.d.ts +15 -15
  15. package/es/components/modal/src/props.d.ts +1 -1
  16. package/es/components/source/src/hooks/useFetch.d.ts +1 -1
  17. package/es/components/table/src/components/editable/EditTableCell.d.ts +3 -0
  18. package/es/components/table/src/components/editable/index.d.ts +1 -1
  19. package/es/components/table/src/index.d.ts +6 -3
  20. package/es/components/table/src/props.d.ts +1 -2
  21. package/es/components/table/src/types/table.type.d.ts +2 -0
  22. package/es/components/tree/src/props.d.ts +8 -1
  23. package/es/components/upload/src/upload.d.ts +6 -3
  24. package/es/index.js +196 -39
  25. package/es/style/components/icons/index.less +1 -1
  26. package/es/style/components/table/index.less +4 -0
  27. package/package.json +1 -10
  28. package/vite.config.js +10 -0
  29. package/es/components/upload/src/index.d.ts +0 -2811
  30. package/src/assets/data/icons/actions.ts +0 -427
  31. package/src/assets/data/icons/code.ts +0 -10
  32. package/src/assets/data/icons/commuticate.ts +0 -190
  33. package/src/assets/data/icons/currency.ts +0 -46
  34. package/src/assets/data/icons/devices.ts +0 -128
  35. package/src/assets/data/icons/edit.ts +0 -165
  36. package/src/assets/data/icons/file.ts +0 -104
  37. package/src/assets/data/icons/math.ts +0 -53
  38. package/src/assets/data/icons/message.ts +0 -75
  39. package/src/assets/data/icons/navigate.ts +0 -181
  40. package/src/assets/data/icons/other.ts +0 -333
  41. package/src/assets/data/icons.ts +0 -58
  42. package/src/assets/imgs/header/avatar.png +0 -0
  43. package/src/assets/imgs/logo/logo.png +0 -0
  44. package/src/assets/locales/en_US.json +0 -3
  45. package/src/assets/locales/zh_CN.json +0 -3
  46. package/src/assets/style/index.less +0 -10
  47. package/src/assets/style/reset.less +0 -17
  48. package/src/components/container/index.less +0 -85
  49. package/src/components/container/index.ts +0 -8
  50. package/src/components/container/src/bar.ts +0 -107
  51. package/src/components/container/src/lazy-container.vue +0 -9
  52. package/src/components/container/src/scroll-bar.vue +0 -117
  53. package/src/components/container/src/scroll-container.vue +0 -61
  54. package/src/components/curd/index.ts +0 -5
  55. package/src/components/curd/src/components/dialog.vue +0 -73
  56. package/src/components/curd/src/components/props.ts +0 -32
  57. package/src/components/curd/src/hooks/useCurd.tsx +0 -87
  58. package/src/components/curd/src/types/curd.type.ts +0 -32
  59. package/src/components/excel/index.ts +0 -6
  60. package/src/components/excel/src/export2Excel.ts +0 -44
  61. package/src/components/forms/index.less +0 -107
  62. package/src/components/forms/index.ts +0 -11
  63. package/src/components/forms/src/componentMap.ts +0 -46
  64. package/src/components/forms/src/components/formButton.vue +0 -150
  65. package/src/components/forms/src/components/formIcon.vue +0 -51
  66. package/src/components/forms/src/components/formInputUseDialog.vue +0 -43
  67. package/src/components/forms/src/components/formItem.vue +0 -420
  68. package/src/components/forms/src/components/radioButton.vue +0 -58
  69. package/src/components/forms/src/const/form.const.ts +0 -7
  70. package/src/components/forms/src/hooks/helper.ts +0 -70
  71. package/src/components/forms/src/hooks/useForm.ts +0 -130
  72. package/src/components/forms/src/hooks/useFormActions.ts +0 -63
  73. package/src/components/forms/src/hooks/useFormEvents.ts +0 -248
  74. package/src/components/forms/src/hooks/useFormValue.ts +0 -49
  75. package/src/components/forms/src/hooks/useFormValues.ts +0 -131
  76. package/src/components/forms/src/hooks/useLabelWidth.ts +0 -57
  77. package/src/components/forms/src/index.vue +0 -310
  78. package/src/components/forms/src/prop.ts +0 -80
  79. package/src/components/forms/src/types/form.type.ts +0 -275
  80. package/src/components/icons/index.less +0 -101
  81. package/src/components/icons/index.ts +0 -7
  82. package/src/components/icons/src/pick-icon.vue +0 -119
  83. package/src/components/icons/src/svg-icon.vue +0 -117
  84. package/src/components/iframe/index.less +0 -3
  85. package/src/components/iframe/index.ts +0 -5
  86. package/src/components/iframe/src/index.less +0 -3
  87. package/src/components/iframe/src/index.vue +0 -38
  88. package/src/components/index.ts +0 -53
  89. package/src/components/modal/index.less +0 -60
  90. package/src/components/modal/index.ts +0 -8
  91. package/src/components/modal/src/components/close-icon.vue +0 -46
  92. package/src/components/modal/src/components/modal-wrap.vue +0 -128
  93. package/src/components/modal/src/components/modal.tsx +0 -30
  94. package/src/components/modal/src/components/modalFooter.vue +0 -46
  95. package/src/components/modal/src/hooks/useDrag.ts +0 -107
  96. package/src/components/modal/src/hooks/useFullScreen.ts +0 -29
  97. package/src/components/modal/src/hooks/useModal.ts +0 -200
  98. package/src/components/modal/src/index.vue +0 -184
  99. package/src/components/modal/src/props.ts +0 -44
  100. package/src/components/modal/src/types/modal.type.ts +0 -30
  101. package/src/components/router/base-router.vue +0 -11
  102. package/src/components/router/index.ts +0 -3
  103. package/src/components/source/index.ts +0 -1
  104. package/src/components/source/src/hooks/useFetch.ts +0 -42
  105. package/src/components/source/src/hooks/usePage.ts +0 -3
  106. package/src/components/source/src/hooks/useSource.ts +0 -214
  107. package/src/components/source/src/index.ts +0 -5
  108. package/src/components/source/src/types/source.type.ts +0 -58
  109. package/src/components/source/src/types/table.type.ts +0 -8
  110. package/src/components/table/index.less +0 -179
  111. package/src/components/table/index.ts +0 -7
  112. package/src/components/table/src/components/TableActions.vue +0 -108
  113. package/src/components/table/src/components/TableHeader.vue +0 -78
  114. package/src/components/table/src/components/TableRender.vue +0 -76
  115. package/src/components/table/src/components/editable/CellComponent.ts +0 -57
  116. package/src/components/table/src/components/editable/EditTableCell.vue +0 -181
  117. package/src/components/table/src/components/editable/componentMap.ts +0 -18
  118. package/src/components/table/src/components/editable/index.ts +0 -58
  119. package/src/components/table/src/components/setting/Column.vue +0 -354
  120. package/src/components/table/src/components/setting/Download.vue +0 -55
  121. package/src/components/table/src/components/setting/Fullscreen.vue +0 -43
  122. package/src/components/table/src/components/setting/Size.vue +0 -42
  123. package/src/components/table/src/components/setting/index.vue +0 -64
  124. package/src/components/table/src/const.ts +0 -13
  125. package/src/components/table/src/hooks/useColumns.ts +0 -326
  126. package/src/components/table/src/hooks/useCustomRow.ts +0 -86
  127. package/src/components/table/src/hooks/useDataSource.ts +0 -97
  128. package/src/components/table/src/hooks/useHeaderCode.ts +0 -89
  129. package/src/components/table/src/hooks/useLoading.ts +0 -29
  130. package/src/components/table/src/hooks/usePagination.ts +0 -76
  131. package/src/components/table/src/hooks/useRowSelection.ts +0 -145
  132. package/src/components/table/src/hooks/useRows.ts +0 -30
  133. package/src/components/table/src/hooks/useTable.ts +0 -90
  134. package/src/components/table/src/hooks/useTableHeader.ts +0 -48
  135. package/src/components/table/src/hooks/useTableInstance.ts +0 -29
  136. package/src/components/table/src/hooks/useTableScroll.ts +0 -229
  137. package/src/components/table/src/index.vue +0 -212
  138. package/src/components/table/src/props.ts +0 -160
  139. package/src/components/table/src/types/table.type.ts +0 -160
  140. package/src/components/table/src/types/tableHeader.type.ts +0 -27
  141. package/src/components/tree/index.less +0 -41
  142. package/src/components/tree/index.ts +0 -5
  143. package/src/components/tree/src/components/TreeHeader.vue +0 -97
  144. package/src/components/tree/src/hooks/useTree.ts +0 -239
  145. package/src/components/tree/src/index.vue +0 -392
  146. package/src/components/tree/src/props.ts +0 -133
  147. package/src/components/tree/src/type/tree.ts +0 -105
  148. package/src/components/tree/src/utils/tree.ts +0 -73
  149. package/src/components/type.ts +0 -0
  150. package/src/components/upload/index.less +0 -35
  151. package/src/components/upload/index.ts +0 -5
  152. package/src/components/upload/src/helper.ts +0 -60
  153. package/src/components/upload/src/props.ts +0 -51
  154. package/src/components/upload/src/upload.vue +0 -191
  155. package/src/directives/icon.ts +0 -36
  156. package/src/directives/index.ts +0 -26
  157. package/src/directives/permission.ts +0 -20
  158. package/src/global.d.ts +0 -8
  159. package/src/index.ts +0 -4
  160. package/src/theme/content/index.vue +0 -37
  161. package/src/theme/feature/back-top.vue +0 -11
  162. package/src/theme/feature/index.vue +0 -7
  163. package/src/theme/footer/index.less +0 -16
  164. package/src/theme/footer/index.vue +0 -24
  165. package/src/theme/header/components/bread-crumb.vue +0 -26
  166. package/src/theme/header/components/fullscreen.vue +0 -12
  167. package/src/theme/header/components/handler.ts +0 -81
  168. package/src/theme/header/components/index.ts +0 -21
  169. package/src/theme/header/components/lang-picker.vue +0 -36
  170. package/src/theme/header/components/logo.vue +0 -35
  171. package/src/theme/header/components/menu-search.vue +0 -62
  172. package/src/theme/header/components/notify.vue +0 -22
  173. package/src/theme/header/components/setting-theme.vue +0 -123
  174. package/src/theme/header/components/theme-drawer/enum.ts +0 -12
  175. package/src/theme/header/components/theme-drawer/feature.vue +0 -75
  176. package/src/theme/header/components/theme-drawer/index.ts +0 -7
  177. package/src/theme/header/components/theme-drawer/menu-type.vue +0 -40
  178. package/src/theme/header/components/theme-drawer/select-item.vue +0 -46
  179. package/src/theme/header/components/theme-drawer/switch-item.vue +0 -39
  180. package/src/theme/header/components/theme-drawer/theme-color.vue +0 -26
  181. package/src/theme/header/components/trigger.vue +0 -14
  182. package/src/theme/header/components/user-info.vue +0 -60
  183. package/src/theme/header/const/index.ts +0 -40
  184. package/src/theme/header/helper/menu-tree.ts +0 -64
  185. package/src/theme/header/index.less +0 -442
  186. package/src/theme/header/index.ts +0 -0
  187. package/src/theme/header/index.vue +0 -96
  188. package/src/theme/header/multiple-header.vue +0 -67
  189. package/src/theme/header/set-theme.less +0 -68
  190. package/src/theme/index.ts +0 -3
  191. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +0 -14
  192. package/src/theme/sider/components/basic-menu/basic-menu.vue +0 -122
  193. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +0 -46
  194. package/src/theme/sider/components/basic-menu/menu-item-content.vue +0 -13
  195. package/src/theme/sider/components/drag-bar.vue +0 -26
  196. package/src/theme/sider/components/layout-menu.vue +0 -132
  197. package/src/theme/sider/components/props.ts +0 -97
  198. package/src/theme/sider/components/sider-trigger.vue +0 -24
  199. package/src/theme/sider/helper/sider.ts +0 -52
  200. package/src/theme/sider/helper/split-menu.ts +0 -146
  201. package/src/theme/sider/hooks/useDragLine.ts +0 -86
  202. package/src/theme/sider/hooks/useOpenKeys.ts +0 -57
  203. package/src/theme/sider/index.less +0 -203
  204. package/src/theme/sider/index.vue +0 -88
  205. package/src/theme/tabs/components/TabContent.vue +0 -36
  206. package/src/theme/tabs/components/TabRedo.vue +0 -18
  207. package/src/theme/tabs/hooks/useMultifyTabs.ts +0 -96
  208. package/src/theme/tabs/hooks/useTabDropdown.ts +0 -89
  209. package/src/theme/tabs/index.less +0 -165
  210. package/src/theme/tabs/index.vue +0 -98
  211. package/src/theme/tabs/types/tabs.type.ts +0 -8
  212. package/src/theme/theme.less +0 -67
  213. package/src/theme/theme.vue +0 -90
  214. package/src/theme/transition.less +0 -99
@@ -1,212 +0,0 @@
1
-
2
-
3
- <template>
4
- <Table
5
- ref="tableElRef"
6
- class="dt-table"
7
- v-bind="getBind"
8
- :rowClassName="getRowClassName"
9
- @change="handleTableChange"
10
- @resizeColumn="handleResizeColumn"
11
- >
12
- <template #[item]="data" v-for="item in Object.keys($slots)" :key="item">
13
- <slot :name="item" v-bind="data || {}"></slot>
14
- </template>
15
-
16
- <template #bodyCell="{ column, record, index }">
17
- <template v-if="column?.render">
18
- <TableRender :column="column" :record="record" :index="index"></TableRender>
19
- </template>
20
- </template>
21
- </Table>
22
- </template>
23
-
24
- <script lang="ts">
25
- import { defineComponent, ref, unref, computed, ExtractPropTypes, toRaw } from "vue"
26
- import { Table } from 'ant-design-vue'
27
- import { TableProps } from './props'
28
- import { BasicTableProps, SizeType, TableActionType } from "./types/table.type"
29
- import { useRows } from './hooks/useRows'
30
- import { Recordable } from "@dt-frames/core"
31
- import { useLoading } from "./hooks/useLoading"
32
- import { usePagination } from "./hooks/usePagination"
33
- import { useDataSource } from "./hooks/useDataSource"
34
- import { useRowSelection } from "./hooks/useRowSelection"
35
- import TableRender from './components/TableRender.vue'
36
- import { createTableInstance } from "./hooks/useTableInstance"
37
- import { useColumns } from "./hooks/useColumns"
38
- import { useTableHeader } from "./hooks/useTableHeader"
39
- import { useTableScroll } from "./hooks/useTableScroll"
40
- import { useCustomRow } from "./hooks/useCustomRow"
41
-
42
-
43
- export default defineComponent({
44
- name: 'dt-table',
45
- props: TableProps,
46
- components: {
47
- Table,
48
- TableRender
49
- },
50
- emits: [
51
- 'register',
52
- 'columns-change',
53
- 'selection-change',
54
- 'row-click',
55
- 'row-dbClick',
56
- 'row-contextmenu',
57
- 'row-mouseenter',
58
- 'row-mouseleave',
59
- 'expanded-rows-change',
60
- 'edit-change'
61
- ],
62
- setup(props, { emit, attrs, slots }) {
63
- // table实例
64
- const tableElRef = ref(null)
65
- const tableData = ref<Recordable[]>([])
66
-
67
- // 修改后的props属性
68
- const innerPropsRef = ref<BasicTableProps>()
69
-
70
- const getProps = computed(() => {
71
- return { ...props, ...unref(innerPropsRef) } as BasicTableProps
72
- })
73
-
74
-
75
- /**
76
- * 重构loading状态
77
- */
78
- const { getLoading, setLoading } = useLoading( getProps )
79
-
80
-
81
- /**
82
- * 重构分页数据
83
- */
84
- const { getPaginationInfo, setPagination, getPagination, getShowPagination, setShowPagination } = usePagination( getProps )
85
-
86
- // 关于列的控制
87
- const {
88
- getViewColumns,
89
- getColumnsRef,
90
- getColumns,
91
- setColumns,
92
- setCacheColumnsByField,
93
- getCacheColumns
94
- } = useColumns(getProps, getPaginationInfo)
95
-
96
- const {
97
- getRowSelectionRef,
98
- clearSelectedRowKeys,
99
- getRowSelection,
100
- getSelectRows,
101
- getSelectRowKeys,
102
- setSelectedRowKeys
103
- } = useRowSelection(getProps, emit)
104
-
105
- // 关于滚动条的设置
106
- const { getScrollRef, filterSource } = useTableScroll(
107
- getProps,
108
- tableElRef,
109
- getColumnsRef,
110
- getRowSelectionRef,
111
- )
112
-
113
- function setProps(props: Partial<BasicTableProps>) {
114
- innerPropsRef.value = { ...unref(innerPropsRef), ...props };
115
- }
116
-
117
- const tableAction: TableActionType = {
118
- setProps,
119
- setLoading,
120
- getColumns,
121
- setColumns,
122
- getRowSelection,
123
- setCacheColumnsByField,
124
- getCacheColumns,
125
- getSelectRows,
126
- getSelectRowKeys,
127
- emit,
128
- getSize: () => {
129
- return unref(getBind).size as SizeType;
130
- }
131
- }
132
-
133
- const {
134
- getRowClassName
135
- } = useRows( getProps )
136
-
137
- /**
138
- * 表格改变
139
- */
140
- const {
141
- handleTableChange
142
- } = useDataSource(
143
- getProps,
144
- {
145
- getPaginationInfo,
146
- setPagination,
147
- clearSelectedRowKeys
148
- },
149
- emit
150
- )
151
-
152
- // 表格的单击 双击事件
153
- const { customRow } = useCustomRow(getProps, {
154
- setSelectedRowKeys,
155
- getSelectRowKeys,
156
- clearSelectedRowKeys,
157
- emit
158
- })
159
-
160
- const getBind = computed(() => {
161
- return {
162
- ...attrs,
163
- ...unref(getProps),
164
- ...unref(getHeaderProps),
165
- scroll: unref(getScrollRef),
166
- loading: unref( getLoading ),
167
- dataSource: toRaw(unref(filterSource)),
168
- pagination: toRaw(unref(getPaginationInfo)),
169
- rowSelection: unref(getRowSelectionRef),
170
- rowKey: unref(getProps).rowKey,
171
- columns: unref(getViewColumns),
172
- tableLayout: 'fixed',
173
- customRow,
174
- }
175
- })
176
-
177
- // 创建实例
178
- createTableInstance({ ...tableAction, tableElRef, getBind })
179
-
180
- /**
181
- * 处理表格头部内容
182
- */
183
- const handlers = {
184
- onColumnsChange: (data: {
185
- dataIndex: string
186
- fixed: boolean | 'left' | 'right' | undefined
187
- visible: boolean
188
- }[]) => {
189
- emit('columns-change', data)
190
-
191
- unref(getProps).onColumnsChange?.(data)
192
- }
193
- }
194
- const { getHeaderProps } = useTableHeader(getProps, slots, handlers)
195
-
196
- emit('register', tableAction)
197
-
198
- return {
199
- tableElRef,
200
- getBind,
201
- getRowClassName,
202
- handleTableChange,
203
- getSelectRows,
204
- handleResizeColumn: (w, col) => {
205
- col.width = w
206
- setCacheColumnsByField(col.dataIndex, col)
207
- }
208
- }
209
- }
210
- })
211
- </script>
212
-
@@ -1,160 +0,0 @@
1
- import { Recordable } from '@dt-frames/core'
2
- import { PropType } from 'vue'
3
- import { DEFAULT_SORT_FN } from './const'
4
- import type { PaginationProps } from 'ant-design-vue/lib/pagination'
5
- import type { TableRowSelection } from 'ant-design-vue/lib/table/interface'
6
- import { ActionType, BasicColumn, BtnsType, SizeType, TableSetting } from './types/table.type'
7
- import { ButtonProps } from '../../forms'
8
- import { DownloadType } from './types/tableHeader.type'
9
-
10
- export const TableProps = {
11
- // 点击行是否选中数据
12
- clickRowSelect: { type: Boolean, default: false },
13
-
14
- // 表格设置
15
- tableSetting: {type: Object as PropType<TableSetting | boolean>, default: () => ({})},
16
-
17
- // 点击行是否可以选中整行数据
18
- clickToRowSelect: { type: Boolean, default: false },
19
-
20
- // 是否显示斑马条纹
21
- striped: { type: Boolean, default: true },
22
-
23
- // 是否支持拖拽排序
24
- canColDrag: { type: Boolean, default: true },
25
-
26
- // 是否支持拖拽改变列宽
27
- resizable: { type: Boolean, default: true },
28
- // 最小拖拽宽度
29
- minWidth: { type: Number },
30
- // 最大拖拽宽度
31
- maxWidth: { type: Number },
32
-
33
- // 是否需要虚拟滚动
34
- virtual: { type: Boolean, default: false },
35
-
36
- // 排序
37
- sortFn: { type: Function, default: DEFAULT_SORT_FN },
38
-
39
- // 过滤
40
- filterFn: {
41
- type: Function as PropType<(data: Partial<Recordable<string[]>>) => any>,
42
- default: (data: Partial<Recordable<string[]>>) => {
43
- return data;
44
- }
45
- },
46
-
47
- // 数据的key值
48
- rowKey: {
49
- type: String,
50
- default: 'id'
51
- },
52
-
53
- // 默认的排序
54
- defSort: { type: Object as PropType<Recordable>, default: null },
55
-
56
- // 列code编码
57
- columnCode: { type: String },
58
- // 列自定义的模板
59
- templates: { type: Object as PropType<Recordable>, default: {} },
60
-
61
- // 列
62
- columns: { type: [Array] as PropType<BasicColumn[]>, default: () => [] },
63
-
64
- // 超出部分是否已省略号显示
65
- ellipsis: { type: Boolean, default: true },
66
-
67
- // 需要渲染的数据
68
- dataSource: { type: Array as PropType<Recordable[]>, default: null },
69
-
70
- // 表格是否需要边框
71
- bordered: { type: Boolean, default: true },
72
-
73
- // 分页数据
74
- pagination: {
75
- type: [Object, Boolean] as PropType<PaginationProps | boolean>,
76
- default: {}
77
- },
78
-
79
- // 是否处于加载中
80
- loading: { type: Boolean, default: false },
81
-
82
- // 动态定义行class
83
- rowClassName: { type: Function as PropType<(record: any, index: number) => string> },
84
-
85
- // 定义何时出现滚动条
86
- scroll: {
87
- type: Object as PropType<{ x?: number | true; y?: number }>,
88
- default: {},
89
- },
90
-
91
- size: {
92
- type: String as PropType<SizeType>,
93
- default: 'small',
94
- },
95
-
96
- // 分页、排序、筛选变化时触发
97
- onTableChange: {
98
- type: Function,
99
- default: () => {}
100
- },
101
-
102
- // 下载
103
- onDownload: {
104
- type: Function,
105
- default: (excelData: DownloadType) => {}
106
- },
107
-
108
- // 选中的行数据
109
- rowSelection: {
110
- type: Object as PropType<TableRowSelection | null>,
111
- default: null,
112
- },
113
-
114
- /**
115
- * 设置行属性
116
- * 用法:
117
- * ( record ) => {
118
- onClick: (event) => {},
119
- onDblclick: (event) => {},
120
- onContextmenu: (event) => {},
121
- onMouseenter: (event) => {}, // 鼠标移入行
122
- onMouseleave: (event) => {}
123
- * }
124
- */
125
- customRow: {
126
- type: Function as PropType<( record, index ) => void>,
127
- default: () => {}
128
- },
129
-
130
- childrenColumnName: {
131
- type: String,
132
- default: 'children'
133
- },
134
-
135
- showIndexColumn: {
136
- type: Boolean,
137
- default: false
138
- },
139
-
140
- indexColumnProps: {
141
- type: [Array] as PropType<BasicColumn[]>,
142
- default: () => [],
143
- },
144
-
145
- isTreeTable: {
146
- type: Boolean,
147
- default: false
148
- },
149
-
150
- // 操作栏
151
- operations: {
152
- type: Object as PropType<ActionType | BtnsType[]>,
153
- },
154
-
155
- // 工具栏按钮
156
- toolbar: {
157
- type: Array as PropType<ButtonProps[]>
158
- }
159
-
160
- }
@@ -1,160 +0,0 @@
1
- import { DictType, Recordable } from '@dt-frames/core'
2
- import type { ColumnProps } from 'ant-design-vue/lib/table'
3
- import type { TableRowSelection as ITableRowSelection } from 'ant-design-vue/lib/table/interface'
4
- import { ExtractPropTypes, VNode, DefineComponent } from 'vue'
5
- import { TableProps } from '../props'
6
- import { SetColumnsParams } from './tableHeader.type'
7
-
8
- export interface TableRowSelection<T = any> extends ITableRowSelection {
9
- // table选择发生改变
10
- onChange?: (selectedRowKeys: string[] | number[], selectedRows: T[]) => any
11
-
12
- // 触发一行选择
13
- onSelect?: (record: T, selected: boolean, selectedRows: Object[], nativeEvent: Event) => any
14
-
15
- // 全选
16
- onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => any
17
-
18
- // 反选
19
- onSelectInvert?: (selectedRows: string[] | number[]) => any
20
- }
21
-
22
- export type TableSetting = {
23
- // 表格刷新
24
- download?: boolean
25
- // 表格的尺寸
26
- size?: boolean
27
- // 是否显示列控制
28
- setting?: boolean
29
- // 全屏按钮
30
- fullscreen?: boolean
31
- }
32
-
33
- export type ColumnChangeParam = {
34
- dataIndex: string
35
- fixed: boolean | 'left' | 'right' | undefined
36
- visible: boolean
37
- }
38
-
39
- export type BasicTableProps = ExtractPropTypes<typeof TableProps> & {
40
- onColumnsChange?: (data: ColumnChangeParam[]) => void
41
- }
42
-
43
- export type SizeType = 'default' | 'middle' | 'small'
44
-
45
- export type SorterResult = {
46
- column: ColumnProps
47
- order: 'ascend' | 'descend'
48
- field: string
49
- columnKey: string
50
- }
51
-
52
- export type CellFormat =
53
- | ((record: Recordable, index: number, text: string) => any)
54
- | { dict: DictType }
55
- | { number: string }
56
- | { date: string }
57
- | { percent: string }
58
- | { [key: string]: Recordable }
59
- | VNode
60
- | JSX.Element
61
-
62
- export type BtnsType = {
63
- title?: string
64
- icon?: string
65
- auth?: string
66
- color?: string
67
- type?: 'primary' | 'ghost' | 'dashed' | 'link' | 'text' | 'default'
68
- size?: 'large' | 'middle' | 'small'
69
- loading?: boolean
70
- disabled?: boolean
71
- ifShow?: boolean | ((column: BasicColumn) => boolean)
72
- action?: (data: {
73
- row: Recordable,
74
- index: number
75
- }) => void
76
- }
77
-
78
-
79
- export type ActionType = {
80
- title?: string
81
- // 操作栏宽度
82
- width?: number | string
83
- // 图标是否展开
84
- expand?: boolean
85
- // 操作栏固定位置
86
- fixed?: 'left' | 'right' | 'auto'
87
- // 按钮设置
88
- btns?: BtnsType[]
89
- }
90
-
91
- export type ComponentType =
92
- | 'Input'
93
- | 'InputNumber'
94
- | 'Select'
95
- | 'TreeSelect'
96
- | 'Checkbox'
97
- | 'Switch'
98
- | 'DatePicker'
99
- | 'TimePicker'
100
-
101
- export type LableValOptions = {
102
- label: string;
103
- value: any;
104
- [key: string]: string | number | boolean
105
- }[]
106
-
107
-
108
- export interface BasicColumn extends ColumnProps {
109
- // 子元素
110
- children?: BasicColumn[]
111
-
112
- // 默认是否显示
113
- defaultHidden?: boolean;
114
-
115
- // 业务控制是否显示
116
- ifShow?: boolean | ((row: Recordable) => boolean)
117
-
118
- // 列标识
119
- flag?: 'INDEX' | 'DEFAULT' | 'CHECKBOX' | 'RADIO' | 'ACTION'
120
-
121
- // 过滤器转换
122
- render?: CellFormat
123
-
124
- edit?: boolean
125
- editRow?: boolean
126
- editable?: boolean
127
- editComponent?: ComponentType
128
- editComponentProps?:
129
- | ((opt: {
130
- text: string | number | boolean | Recordable;
131
- record: Recordable;
132
- column: BasicColumn;
133
- index: number;
134
- }) => Recordable)
135
- | Recordable
136
- editRule?: boolean | ((text: string, record: Recordable) => Promise<string>)
137
-
138
- // 是否显示序号列
139
- showIndexColumn?: boolean
140
-
141
- // 是否展开按钮组 只针对ACTION
142
- expand?: boolean
143
-
144
- }
145
-
146
-
147
- // table相关的操作
148
- export type TableActionType = {
149
- setProps: (props: Partial<BasicTableProps>) => void
150
- setLoading: ( loading: boolean ) => void
151
- getColumns: (opt?: SetColumnsParams) => BasicColumn[]
152
- setColumns: (columns: BasicColumn[] | string[]) => void
153
- getSize: () => SizeType
154
- getRowSelection: () => TableRowSelection<Recordable>
155
- getCacheColumns: () => BasicColumn[]
156
- setCacheColumnsByField?: (dataIndex: string | undefined, value: BasicColumn) => void
157
- getSelectRows: ( ) => Recordable[]
158
- getSelectRowKeys: ( ) => string[]
159
- emit?: any
160
- }
@@ -1,27 +0,0 @@
1
- import { Recordable } from "@dt-frames/core"
2
- import { BasicColumn } from "./table.type"
3
-
4
- export type ColumnStateType = {
5
- checkAll: boolean
6
- isInit?: boolean
7
- checkedList: string[]
8
- defaultCheckList: string[]
9
- }
10
-
11
- export type ColumnOptionsType = {
12
- label: string
13
- value: string
14
- fixed?: boolean | 'left' | 'right'
15
- }
16
-
17
- export type SetColumnsParams = {
18
- ignoreIndex?: boolean
19
- ignoreAction?: boolean
20
- sort?: boolean
21
- }
22
-
23
- export type DownloadType = {
24
- type: 'current' | 'select' | 'all',
25
- columns?: BasicColumn[],
26
- rows?: Recordable<any>[]
27
- }
@@ -1,41 +0,0 @@
1
- .dt-tree{
2
- display: flex;
3
- flex-direction: column;
4
- height: 100%;
5
-
6
- .dt-tree-header{
7
- .headerTitle{
8
- text-align: center;
9
- line-height: 32px;
10
- font-weight: bolder;
11
- }
12
-
13
- .dt-tree-search{
14
- display: flex;
15
- padding: 0 0 10px 10px;
16
- border-bottom: 1px solid #e7e7e7;
17
- &>i{
18
- width: 24px;
19
- display: block;
20
- text-align: center;
21
- cursor: pointer;
22
- }
23
- .dt-tree-search-input{
24
- flex: 1;
25
- input{
26
- font-size: 12px;
27
- }
28
- }
29
- }
30
- }
31
-
32
- .ant-spin-nested-loading{
33
- flex: 1;
34
- overflow-y: auto;
35
- padding: 10px 0;
36
-
37
- .tree-title{
38
- font-size: 12px;
39
- }
40
- }
41
- }
@@ -1,5 +0,0 @@
1
- import DtTree from './src/index.vue'
2
-
3
- export {
4
- DtTree
5
- }
@@ -1,97 +0,0 @@
1
- <template>
2
- <div class="dt-tree-header">
3
- <slot name="headerTitle" v-if="slots.headerTitle"></slot>
4
-
5
- <h4 v-if="!slots.headerTitle && title" class="headerTitle">{{ title }}</h4>
6
-
7
- <div v-if="search || toolbar" class="dt-tree-search">
8
- <div class="dt-tree-search-input" v-if="search">
9
- <InputSearch size="small" allowClear v-model:value="searchValue" placeholder="搜索"/>
10
- </div>
11
-
12
- <Dropdown @click.prevent v-if="toolbar">
13
- <i class="i ic:baseline-more-vert"></i>
14
- <template #overlay>
15
- <Menu @click="handleMenuClick">
16
- <template v-for="item in toolbarList" :key="item.value">
17
- <MenuItem v-bind="{ key: item.value }">
18
- {{ item.label }}
19
- </MenuItem>
20
- <MenuDivider v-if="item.divider" />
21
- </template>
22
- </Menu>
23
- </template>
24
- </Dropdown>
25
- </div>
26
-
27
- </div>
28
- </template>
29
-
30
- <script lang="ts" setup>
31
- import { useSlots, ref, watch, computed } from 'vue'
32
- import { InputSearch, Dropdown, Menu, MenuItem, MenuDivider } from 'ant-design-vue'
33
- import { useDebounceFn } from '@vueuse/core'
34
- import { searchProps } from '../props'
35
- import { ToolbarEnum } from '../type/tree'
36
-
37
- const slots = useSlots()
38
- const emits = defineEmits([
39
- 'search',
40
- 'strictly-change',
41
- 'strictly-change'
42
- ])
43
- const props = defineProps( searchProps )
44
-
45
- const searchValue = ref('')
46
-
47
- function emitChange(value?: string){
48
- emits('search', value)
49
- }
50
-
51
- function handleMenuClick(e) {
52
- const { key } = e;
53
- switch (key) {
54
- case ToolbarEnum.SELECT_ALL: props.checkAll?.(true); break
55
- case ToolbarEnum.UN_SELECT_ALL: props.checkAll?.(false); break
56
- case ToolbarEnum.EXPAND_ALL: props.expandAll?.(true); break
57
- case ToolbarEnum.UN_EXPAND_ALL: props.expandAll?.(false); break
58
- case ToolbarEnum.CHECK_STRICTLY: emits('strictly-change', false); break
59
- case ToolbarEnum.CHECK_UN_STRICTLY: emits('strictly-change', true); break
60
- }
61
- }
62
-
63
- const toolbarList = computed(() => {
64
- const { checkable } = props
65
-
66
- const defaultToolbarList = [
67
- { label: '展开全部', value: ToolbarEnum.EXPAND_ALL },
68
- {
69
- label: '折叠全部',
70
- value: ToolbarEnum.UN_EXPAND_ALL,
71
- divider: checkable,
72
- },
73
- ];
74
-
75
- return checkable
76
- ? [
77
- { label: '选择全部', value: ToolbarEnum.SELECT_ALL },
78
- {
79
- label: '取消选择',
80
- value: ToolbarEnum.UN_SELECT_ALL,
81
- divider: checkable,
82
- },
83
- ...defaultToolbarList,
84
- { label: '层级关联', value: ToolbarEnum.CHECK_STRICTLY },
85
- { label: '层级独立', value: ToolbarEnum.CHECK_UN_STRICTLY },
86
- ]
87
- : defaultToolbarList;
88
- })
89
-
90
- const debounceEmitChange = useDebounceFn(emitChange, 200)
91
- watch(
92
- () => searchValue.value,
93
- (v) => {
94
- debounceEmitChange(v);
95
- },
96
- )
97
- </script>