@dt-frames/ui 1.0.11 → 1.0.15

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 (219) hide show
  1. package/es/components/curd/src/components/dialog.d.ts +34 -25
  2. package/es/components/curd/src/components/props.d.ts +6 -5
  3. package/es/components/curd/src/hooks/useCurd.d.ts +1 -0
  4. package/es/components/curd/src/types/curd.type.d.ts +4 -3
  5. package/es/components/forms/src/components/formButton.d.ts +1 -2
  6. package/es/components/forms/src/components/formIcon.d.ts +16 -11
  7. package/es/components/forms/src/components/formInputUseDialog.d.ts +903 -0
  8. package/es/components/forms/src/hooks/useFormActions.d.ts +2 -2
  9. package/es/components/forms/src/index.d.ts +2 -2
  10. package/es/components/forms/src/types/form.type.d.ts +6 -18
  11. package/es/components/index.d.ts +2 -2
  12. package/es/components/modal/src/components/modal.d.ts +2 -2
  13. package/es/components/modal/src/components/modalFooter.d.ts +10 -5
  14. package/es/components/modal/src/index.d.ts +16 -11
  15. package/es/components/modal/src/props.d.ts +2 -1
  16. package/es/components/modal/src/types/modal.type.d.ts +4 -1
  17. package/es/components/source/src/hooks/useFetch.d.ts +1 -1
  18. package/es/components/table/src/hooks/useCustomRow.d.ts +19 -0
  19. package/es/components/table/src/hooks/useTable.d.ts +2 -2
  20. package/es/components/table/src/index.d.ts +24 -5
  21. package/es/components/table/src/props.d.ts +5 -2
  22. package/es/components/table/src/types/table.type.d.ts +2 -2
  23. package/es/components/tree/src/props.d.ts +8 -1
  24. package/es/components/upload/index.d.ts +1 -2
  25. package/es/components/upload/src/helper.d.ts +1 -0
  26. package/es/components/upload/src/index.d.ts +34 -11
  27. package/es/components/upload/src/props.d.ts +4 -1
  28. package/es/components/upload/src/upload.d.ts +42 -11
  29. package/es/index.js +356 -200
  30. package/es/style/components/forms/index.less +23 -0
  31. package/es/style/components/icons/index.less +1 -1
  32. package/es/style/components/upload/index.less +3 -11
  33. package/package.json +1 -10
  34. package/vite.config.js +10 -0
  35. package/src/assets/data/icons/actions.ts +0 -427
  36. package/src/assets/data/icons/code.ts +0 -10
  37. package/src/assets/data/icons/commuticate.ts +0 -190
  38. package/src/assets/data/icons/currency.ts +0 -46
  39. package/src/assets/data/icons/devices.ts +0 -128
  40. package/src/assets/data/icons/edit.ts +0 -165
  41. package/src/assets/data/icons/file.ts +0 -104
  42. package/src/assets/data/icons/math.ts +0 -53
  43. package/src/assets/data/icons/message.ts +0 -75
  44. package/src/assets/data/icons/navigate.ts +0 -181
  45. package/src/assets/data/icons/other.ts +0 -333
  46. package/src/assets/data/icons.ts +0 -58
  47. package/src/assets/imgs/header/avatar.png +0 -0
  48. package/src/assets/imgs/logo/logo.png +0 -0
  49. package/src/assets/locales/en_US.json +0 -3
  50. package/src/assets/locales/zh_CN.json +0 -3
  51. package/src/assets/style/index.less +0 -10
  52. package/src/assets/style/reset.less +0 -17
  53. package/src/components/container/index.less +0 -85
  54. package/src/components/container/index.ts +0 -8
  55. package/src/components/container/src/bar.ts +0 -107
  56. package/src/components/container/src/lazy-container.vue +0 -9
  57. package/src/components/container/src/scroll-bar.vue +0 -117
  58. package/src/components/container/src/scroll-container.vue +0 -61
  59. package/src/components/curd/index.ts +0 -5
  60. package/src/components/curd/src/components/dialog.vue +0 -73
  61. package/src/components/curd/src/components/props.ts +0 -32
  62. package/src/components/curd/src/hooks/useCurd.tsx +0 -87
  63. package/src/components/curd/src/types/curd.type.ts +0 -31
  64. package/src/components/excel/index.ts +0 -6
  65. package/src/components/excel/src/export2Excel.ts +0 -44
  66. package/src/components/forms/index.less +0 -84
  67. package/src/components/forms/index.ts +0 -11
  68. package/src/components/forms/src/componentMap.ts +0 -44
  69. package/src/components/forms/src/components/formButton.vue +0 -150
  70. package/src/components/forms/src/components/formIcon.vue +0 -51
  71. package/src/components/forms/src/components/formItem.vue +0 -420
  72. package/src/components/forms/src/components/radioButton.vue +0 -58
  73. package/src/components/forms/src/const/form.const.ts +0 -7
  74. package/src/components/forms/src/hooks/helper.ts +0 -70
  75. package/src/components/forms/src/hooks/useForm.ts +0 -130
  76. package/src/components/forms/src/hooks/useFormActions.ts +0 -63
  77. package/src/components/forms/src/hooks/useFormEvents.ts +0 -248
  78. package/src/components/forms/src/hooks/useFormValue.ts +0 -49
  79. package/src/components/forms/src/hooks/useFormValues.ts +0 -131
  80. package/src/components/forms/src/hooks/useLabelWidth.ts +0 -57
  81. package/src/components/forms/src/index.vue +0 -310
  82. package/src/components/forms/src/prop.ts +0 -80
  83. package/src/components/forms/src/types/form.type.ts +0 -269
  84. package/src/components/icons/index.less +0 -101
  85. package/src/components/icons/index.ts +0 -7
  86. package/src/components/icons/src/pick-icon.vue +0 -119
  87. package/src/components/icons/src/svg-icon.vue +0 -117
  88. package/src/components/iframe/index.less +0 -3
  89. package/src/components/iframe/index.ts +0 -5
  90. package/src/components/iframe/src/index.less +0 -3
  91. package/src/components/iframe/src/index.vue +0 -38
  92. package/src/components/index.ts +0 -54
  93. package/src/components/modal/index.less +0 -60
  94. package/src/components/modal/index.ts +0 -8
  95. package/src/components/modal/src/components/close-icon.vue +0 -46
  96. package/src/components/modal/src/components/modal-wrap.vue +0 -128
  97. package/src/components/modal/src/components/modal.tsx +0 -30
  98. package/src/components/modal/src/components/modalFooter.vue +0 -38
  99. package/src/components/modal/src/hooks/useDrag.ts +0 -107
  100. package/src/components/modal/src/hooks/useFullScreen.ts +0 -29
  101. package/src/components/modal/src/hooks/useModal.ts +0 -194
  102. package/src/components/modal/src/index.vue +0 -173
  103. package/src/components/modal/src/props.ts +0 -43
  104. package/src/components/modal/src/types/modal.type.ts +0 -27
  105. package/src/components/router/base-router.vue +0 -11
  106. package/src/components/router/index.ts +0 -3
  107. package/src/components/source/index.ts +0 -1
  108. package/src/components/source/src/hooks/useFetch.ts +0 -42
  109. package/src/components/source/src/hooks/usePage.ts +0 -3
  110. package/src/components/source/src/hooks/useSource.ts +0 -214
  111. package/src/components/source/src/index.ts +0 -5
  112. package/src/components/source/src/types/source.type.ts +0 -58
  113. package/src/components/source/src/types/table.type.ts +0 -8
  114. package/src/components/table/index.less +0 -179
  115. package/src/components/table/index.ts +0 -7
  116. package/src/components/table/src/components/TableActions.vue +0 -108
  117. package/src/components/table/src/components/TableHeader.vue +0 -78
  118. package/src/components/table/src/components/TableRender.vue +0 -76
  119. package/src/components/table/src/components/editable/CellComponent.ts +0 -57
  120. package/src/components/table/src/components/editable/EditTableCell.vue +0 -181
  121. package/src/components/table/src/components/editable/componentMap.ts +0 -18
  122. package/src/components/table/src/components/editable/index.ts +0 -58
  123. package/src/components/table/src/components/setting/Column.vue +0 -354
  124. package/src/components/table/src/components/setting/Download.vue +0 -55
  125. package/src/components/table/src/components/setting/Fullscreen.vue +0 -43
  126. package/src/components/table/src/components/setting/Size.vue +0 -42
  127. package/src/components/table/src/components/setting/index.vue +0 -64
  128. package/src/components/table/src/const.ts +0 -13
  129. package/src/components/table/src/hooks/useColumns.ts +0 -326
  130. package/src/components/table/src/hooks/useCustomRow.ts +0 -0
  131. package/src/components/table/src/hooks/useDataSource.ts +0 -97
  132. package/src/components/table/src/hooks/useHeaderCode.ts +0 -89
  133. package/src/components/table/src/hooks/useLoading.ts +0 -29
  134. package/src/components/table/src/hooks/usePagination.ts +0 -76
  135. package/src/components/table/src/hooks/useRowSelection.ts +0 -145
  136. package/src/components/table/src/hooks/useRows.ts +0 -30
  137. package/src/components/table/src/hooks/useTable.ts +0 -90
  138. package/src/components/table/src/hooks/useTableHeader.ts +0 -48
  139. package/src/components/table/src/hooks/useTableInstance.ts +0 -29
  140. package/src/components/table/src/hooks/useTableScroll.ts +0 -229
  141. package/src/components/table/src/index.vue +0 -200
  142. package/src/components/table/src/props.ts +0 -157
  143. package/src/components/table/src/types/table.type.ts +0 -160
  144. package/src/components/table/src/types/tableHeader.type.ts +0 -27
  145. package/src/components/tree/index.less +0 -41
  146. package/src/components/tree/index.ts +0 -5
  147. package/src/components/tree/src/components/TreeHeader.vue +0 -97
  148. package/src/components/tree/src/hooks/useTree.ts +0 -239
  149. package/src/components/tree/src/index.vue +0 -392
  150. package/src/components/tree/src/props.ts +0 -133
  151. package/src/components/tree/src/type/tree.ts +0 -105
  152. package/src/components/tree/src/utils/tree.ts +0 -73
  153. package/src/components/type.ts +0 -0
  154. package/src/components/upload/index.less +0 -43
  155. package/src/components/upload/index.ts +0 -7
  156. package/src/components/upload/src/helper.ts +0 -32
  157. package/src/components/upload/src/index.vue +0 -38
  158. package/src/components/upload/src/props.ts +0 -48
  159. package/src/components/upload/src/upload.vue +0 -166
  160. package/src/directives/icon.ts +0 -36
  161. package/src/directives/index.ts +0 -26
  162. package/src/directives/permission.ts +0 -20
  163. package/src/global.d.ts +0 -8
  164. package/src/index.ts +0 -4
  165. package/src/theme/content/index.vue +0 -37
  166. package/src/theme/feature/back-top.vue +0 -11
  167. package/src/theme/feature/index.vue +0 -7
  168. package/src/theme/footer/index.less +0 -16
  169. package/src/theme/footer/index.vue +0 -24
  170. package/src/theme/header/components/bread-crumb.vue +0 -26
  171. package/src/theme/header/components/fullscreen.vue +0 -12
  172. package/src/theme/header/components/handler.ts +0 -81
  173. package/src/theme/header/components/index.ts +0 -21
  174. package/src/theme/header/components/lang-picker.vue +0 -36
  175. package/src/theme/header/components/logo.vue +0 -35
  176. package/src/theme/header/components/menu-search.vue +0 -62
  177. package/src/theme/header/components/notify.vue +0 -22
  178. package/src/theme/header/components/setting-theme.vue +0 -123
  179. package/src/theme/header/components/theme-drawer/enum.ts +0 -12
  180. package/src/theme/header/components/theme-drawer/feature.vue +0 -75
  181. package/src/theme/header/components/theme-drawer/index.ts +0 -7
  182. package/src/theme/header/components/theme-drawer/menu-type.vue +0 -40
  183. package/src/theme/header/components/theme-drawer/select-item.vue +0 -46
  184. package/src/theme/header/components/theme-drawer/switch-item.vue +0 -39
  185. package/src/theme/header/components/theme-drawer/theme-color.vue +0 -26
  186. package/src/theme/header/components/trigger.vue +0 -14
  187. package/src/theme/header/components/user-info.vue +0 -60
  188. package/src/theme/header/const/index.ts +0 -40
  189. package/src/theme/header/helper/menu-tree.ts +0 -64
  190. package/src/theme/header/index.less +0 -442
  191. package/src/theme/header/index.ts +0 -0
  192. package/src/theme/header/index.vue +0 -96
  193. package/src/theme/header/multiple-header.vue +0 -67
  194. package/src/theme/header/set-theme.less +0 -68
  195. package/src/theme/index.ts +0 -3
  196. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +0 -14
  197. package/src/theme/sider/components/basic-menu/basic-menu.vue +0 -122
  198. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +0 -46
  199. package/src/theme/sider/components/basic-menu/menu-item-content.vue +0 -13
  200. package/src/theme/sider/components/drag-bar.vue +0 -26
  201. package/src/theme/sider/components/layout-menu.vue +0 -132
  202. package/src/theme/sider/components/props.ts +0 -97
  203. package/src/theme/sider/components/sider-trigger.vue +0 -24
  204. package/src/theme/sider/helper/sider.ts +0 -52
  205. package/src/theme/sider/helper/split-menu.ts +0 -146
  206. package/src/theme/sider/hooks/useDragLine.ts +0 -86
  207. package/src/theme/sider/hooks/useOpenKeys.ts +0 -57
  208. package/src/theme/sider/index.less +0 -203
  209. package/src/theme/sider/index.vue +0 -88
  210. package/src/theme/tabs/components/TabContent.vue +0 -36
  211. package/src/theme/tabs/components/TabRedo.vue +0 -18
  212. package/src/theme/tabs/hooks/useMultifyTabs.ts +0 -96
  213. package/src/theme/tabs/hooks/useTabDropdown.ts +0 -89
  214. package/src/theme/tabs/index.less +0 -165
  215. package/src/theme/tabs/index.vue +0 -98
  216. package/src/theme/tabs/types/tabs.type.ts +0 -8
  217. package/src/theme/theme.less +0 -67
  218. package/src/theme/theme.vue +0 -90
  219. package/src/theme/transition.less +0 -99
@@ -1,200 +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
-
41
-
42
- export default defineComponent({
43
- name: 'dt-table',
44
- props: TableProps,
45
- components: {
46
- Table,
47
- TableRender
48
- },
49
- emits: [
50
- 'register',
51
- 'columns-change',
52
- 'selection-change',
53
- 'row-click',
54
- 'row-dbClick',
55
- 'expanded-rows-change',
56
- 'edit-change'
57
- ],
58
- setup(props, { emit, attrs, slots }) {
59
- // table实例
60
- const tableElRef = ref(null)
61
- const tableData = ref<Recordable[]>([])
62
-
63
- // 修改后的props属性
64
- const innerPropsRef = ref<BasicTableProps>()
65
-
66
- const getProps = computed(() => {
67
- return { ...props, ...unref(innerPropsRef) } as BasicTableProps
68
- })
69
-
70
-
71
- /**
72
- * 重构loading状态
73
- */
74
- const { getLoading, setLoading } = useLoading( getProps )
75
-
76
-
77
- /**
78
- * 重构分页数据
79
- */
80
- const { getPaginationInfo, setPagination, getPagination, getShowPagination, setShowPagination } = usePagination( getProps )
81
-
82
- // 关于列的控制
83
- const {
84
- getViewColumns,
85
- getColumnsRef,
86
- getColumns,
87
- setColumns,
88
- setCacheColumnsByField,
89
- getCacheColumns
90
- } = useColumns(getProps, getPaginationInfo)
91
-
92
- const {
93
- getRowSelectionRef,
94
- clearSelectedRowKeys,
95
- getRowSelection,
96
- getSelectRows,
97
- getSelectRowKeys,
98
-
99
- } = useRowSelection(getProps, emit)
100
-
101
- // 关于滚动条的设置
102
- const { getScrollRef, filterSource } = useTableScroll(
103
- getProps,
104
- tableElRef,
105
- getColumnsRef,
106
- getRowSelectionRef,
107
- )
108
-
109
- function setProps(props: Partial<BasicTableProps>) {
110
- innerPropsRef.value = { ...unref(innerPropsRef), ...props };
111
- }
112
-
113
- const tableAction: TableActionType = {
114
- setProps,
115
- setLoading,
116
- getColumns,
117
- setColumns,
118
- getRowSelection,
119
- setCacheColumnsByField,
120
- getCacheColumns,
121
- getSelectRows,
122
- getSelectRowKeys,
123
- emit,
124
- getSize: () => {
125
- return unref(getBind).size as SizeType;
126
- }
127
- }
128
-
129
- const {
130
- getRowClassName
131
- } = useRows( getProps )
132
-
133
- /**
134
- * 表格改变
135
- */
136
- const {
137
- handleTableChange
138
- } = useDataSource(
139
- getProps,
140
- {
141
- getPaginationInfo,
142
- setPagination,
143
- clearSelectedRowKeys
144
- },
145
- emit
146
- )
147
-
148
-
149
- const getBind = computed(() => {
150
- return {
151
- ...attrs,
152
- ...unref(getProps),
153
- ...unref(getHeaderProps),
154
- scroll: unref(getScrollRef),
155
- loading: unref( getLoading ),
156
- dataSource: toRaw(unref(filterSource)),
157
- pagination: toRaw(unref(getPaginationInfo)),
158
- rowSelection: unref(getRowSelectionRef),
159
- rowKey: unref(getProps).rowKey,
160
- columns: unref(getViewColumns),
161
- tableLayout: 'fixed'
162
- }
163
- })
164
-
165
- // 创建实例
166
- createTableInstance({ ...tableAction, tableElRef, getBind })
167
-
168
- /**
169
- * 处理表格头部内容
170
- */
171
- const handlers = {
172
- onColumnsChange: (data: {
173
- dataIndex: string
174
- fixed: boolean | 'left' | 'right' | undefined
175
- visible: boolean
176
- }[]) => {
177
- emit('columns-change', data)
178
-
179
- unref(getProps).onColumnsChange?.(data)
180
- }
181
- }
182
- const { getHeaderProps } = useTableHeader(getProps, slots, handlers)
183
-
184
- emit('register', tableAction)
185
-
186
- return {
187
- tableElRef,
188
- getBind,
189
- getRowClassName,
190
- handleTableChange,
191
- getSelectRows,
192
- handleResizeColumn: (w, col) => {
193
- col.width = w
194
- setCacheColumnsByField(col.dataIndex, col)
195
- }
196
- }
197
- }
198
- })
199
- </script>
200
-
@@ -1,157 +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
- striped: { type: Boolean, default: true },
19
-
20
- // 是否支持拖拽排序
21
- canColDrag: { type: Boolean, default: true },
22
-
23
- // 是否支持拖拽改变列宽
24
- resizable: { type: Boolean, default: true },
25
- // 最小拖拽宽度
26
- minWidth: { type: Number },
27
- // 最大拖拽宽度
28
- maxWidth: { type: Number },
29
-
30
- // 是否需要虚拟滚动
31
- virtual: { type: Boolean, default: false },
32
-
33
- // 排序
34
- sortFn: { type: Function, default: DEFAULT_SORT_FN },
35
-
36
- // 过滤
37
- filterFn: {
38
- type: Function as PropType<(data: Partial<Recordable<string[]>>) => any>,
39
- default: (data: Partial<Recordable<string[]>>) => {
40
- return data;
41
- }
42
- },
43
-
44
- // 数据的key值
45
- rowKey: {
46
- type: String,
47
- default: 'id'
48
- },
49
-
50
- // 默认的排序
51
- defSort: { type: Object as PropType<Recordable>, default: null },
52
-
53
- // 列code编码
54
- columnCode: { type: String },
55
- // 列自定义的模板
56
- templates: { type: Object as PropType<Recordable>, default: {} },
57
-
58
- // 列
59
- columns: { type: [Array] as PropType<BasicColumn[]>, default: () => [] },
60
-
61
- // 超出部分是否已省略号显示
62
- ellipsis: { type: Boolean, default: true },
63
-
64
- // 需要渲染的数据
65
- dataSource: { type: Array as PropType<Recordable[]>, default: null },
66
-
67
- // 表格是否需要边框
68
- bordered: { type: Boolean, default: true },
69
-
70
- // 分页数据
71
- pagination: {
72
- type: [Object, Boolean] as PropType<PaginationProps | boolean>,
73
- default: {}
74
- },
75
-
76
- // 是否处于加载中
77
- loading: { type: Boolean, default: false },
78
-
79
- // 动态定义行class
80
- rowClassName: { type: Function as PropType<(record: any, index: number) => string> },
81
-
82
- // 定义何时出现滚动条
83
- scroll: {
84
- type: Object as PropType<{ x?: number | true; y?: number }>,
85
- default: {},
86
- },
87
-
88
- size: {
89
- type: String as PropType<SizeType>,
90
- default: 'small',
91
- },
92
-
93
- // 分页、排序、筛选变化时触发
94
- onTableChange: {
95
- type: Function,
96
- default: () => {}
97
- },
98
-
99
- // 下载
100
- onDownload: {
101
- type: Function,
102
- default: (excelData: DownloadType) => {}
103
- },
104
-
105
- // 选中的行数据
106
- rowSelection: {
107
- type: Object as PropType<TableRowSelection | null>,
108
- default: null,
109
- },
110
-
111
- /**
112
- * 设置行属性
113
- * 用法:
114
- * ( record ) => {
115
- onClick: (event) => {},
116
- onDblclick: (event) => {},
117
- onContextmenu: (event) => {},
118
- onMouseenter: (event) => {}, // 鼠标移入行
119
- onMouseleave: (event) => {}
120
- * }
121
- */
122
- customRow: {
123
- type: Function as PropType<( record, index ) => void>,
124
- default: () => {}
125
- },
126
-
127
- childrenColumnName: {
128
- type: String,
129
- default: 'children'
130
- },
131
-
132
- showIndexColumn: {
133
- type: Boolean,
134
- default: false
135
- },
136
-
137
- indexColumnProps: {
138
- type: [Array] as PropType<BasicColumn[]>,
139
- default: () => [],
140
- },
141
-
142
- isTreeTable: {
143
- type: Boolean,
144
- default: false
145
- },
146
-
147
- // 操作栏
148
- operations: {
149
- type: Object as PropType<ActionType | BtnsType[]>,
150
- },
151
-
152
- // 工具栏按钮
153
- toolbar: {
154
- type: Array as PropType<ButtonProps[]>
155
- }
156
-
157
- }
@@ -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: ( ) => void
158
- getSelectRowKeys: ( ) => void
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>