@dt-frames/ui 1.0.13 → 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 (208) hide show
  1. package/es/components/curd/src/components/dialog.d.ts +20 -20
  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/useFormActions.d.ts +2 -2
  8. package/es/components/forms/src/index.d.ts +2 -2
  9. package/es/components/forms/src/types/form.type.d.ts +3 -17
  10. package/es/components/index.d.ts +1 -1
  11. package/es/components/modal/src/components/modal.d.ts +2 -2
  12. package/es/components/modal/src/components/modalFooter.d.ts +1 -1
  13. package/es/components/modal/src/index.d.ts +15 -15
  14. package/es/components/modal/src/props.d.ts +1 -1
  15. package/es/components/source/src/hooks/useFetch.d.ts +1 -1
  16. package/es/components/table/src/index.d.ts +3 -3
  17. package/es/components/table/src/props.d.ts +1 -2
  18. package/es/components/tree/src/props.d.ts +8 -1
  19. package/es/components/upload/src/upload.d.ts +3 -3
  20. package/es/index.js +43 -19
  21. package/es/style/components/icons/index.less +1 -1
  22. package/package.json +1 -10
  23. package/vite.config.js +10 -0
  24. package/src/assets/data/icons/actions.ts +0 -427
  25. package/src/assets/data/icons/code.ts +0 -10
  26. package/src/assets/data/icons/commuticate.ts +0 -190
  27. package/src/assets/data/icons/currency.ts +0 -46
  28. package/src/assets/data/icons/devices.ts +0 -128
  29. package/src/assets/data/icons/edit.ts +0 -165
  30. package/src/assets/data/icons/file.ts +0 -104
  31. package/src/assets/data/icons/math.ts +0 -53
  32. package/src/assets/data/icons/message.ts +0 -75
  33. package/src/assets/data/icons/navigate.ts +0 -181
  34. package/src/assets/data/icons/other.ts +0 -333
  35. package/src/assets/data/icons.ts +0 -58
  36. package/src/assets/imgs/header/avatar.png +0 -0
  37. package/src/assets/imgs/logo/logo.png +0 -0
  38. package/src/assets/locales/en_US.json +0 -3
  39. package/src/assets/locales/zh_CN.json +0 -3
  40. package/src/assets/style/index.less +0 -10
  41. package/src/assets/style/reset.less +0 -17
  42. package/src/components/container/index.less +0 -85
  43. package/src/components/container/index.ts +0 -8
  44. package/src/components/container/src/bar.ts +0 -107
  45. package/src/components/container/src/lazy-container.vue +0 -9
  46. package/src/components/container/src/scroll-bar.vue +0 -117
  47. package/src/components/container/src/scroll-container.vue +0 -61
  48. package/src/components/curd/index.ts +0 -5
  49. package/src/components/curd/src/components/dialog.vue +0 -73
  50. package/src/components/curd/src/components/props.ts +0 -32
  51. package/src/components/curd/src/hooks/useCurd.tsx +0 -87
  52. package/src/components/curd/src/types/curd.type.ts +0 -32
  53. package/src/components/excel/index.ts +0 -6
  54. package/src/components/excel/src/export2Excel.ts +0 -44
  55. package/src/components/forms/index.less +0 -107
  56. package/src/components/forms/index.ts +0 -11
  57. package/src/components/forms/src/componentMap.ts +0 -46
  58. package/src/components/forms/src/components/formButton.vue +0 -150
  59. package/src/components/forms/src/components/formIcon.vue +0 -51
  60. package/src/components/forms/src/components/formInputUseDialog.vue +0 -43
  61. package/src/components/forms/src/components/formItem.vue +0 -420
  62. package/src/components/forms/src/components/radioButton.vue +0 -58
  63. package/src/components/forms/src/const/form.const.ts +0 -7
  64. package/src/components/forms/src/hooks/helper.ts +0 -70
  65. package/src/components/forms/src/hooks/useForm.ts +0 -130
  66. package/src/components/forms/src/hooks/useFormActions.ts +0 -63
  67. package/src/components/forms/src/hooks/useFormEvents.ts +0 -248
  68. package/src/components/forms/src/hooks/useFormValue.ts +0 -49
  69. package/src/components/forms/src/hooks/useFormValues.ts +0 -131
  70. package/src/components/forms/src/hooks/useLabelWidth.ts +0 -57
  71. package/src/components/forms/src/index.vue +0 -310
  72. package/src/components/forms/src/prop.ts +0 -80
  73. package/src/components/forms/src/types/form.type.ts +0 -275
  74. package/src/components/icons/index.less +0 -101
  75. package/src/components/icons/index.ts +0 -7
  76. package/src/components/icons/src/pick-icon.vue +0 -119
  77. package/src/components/icons/src/svg-icon.vue +0 -117
  78. package/src/components/iframe/index.less +0 -3
  79. package/src/components/iframe/index.ts +0 -5
  80. package/src/components/iframe/src/index.less +0 -3
  81. package/src/components/iframe/src/index.vue +0 -38
  82. package/src/components/index.ts +0 -53
  83. package/src/components/modal/index.less +0 -60
  84. package/src/components/modal/index.ts +0 -8
  85. package/src/components/modal/src/components/close-icon.vue +0 -46
  86. package/src/components/modal/src/components/modal-wrap.vue +0 -128
  87. package/src/components/modal/src/components/modal.tsx +0 -30
  88. package/src/components/modal/src/components/modalFooter.vue +0 -46
  89. package/src/components/modal/src/hooks/useDrag.ts +0 -107
  90. package/src/components/modal/src/hooks/useFullScreen.ts +0 -29
  91. package/src/components/modal/src/hooks/useModal.ts +0 -200
  92. package/src/components/modal/src/index.vue +0 -184
  93. package/src/components/modal/src/props.ts +0 -44
  94. package/src/components/modal/src/types/modal.type.ts +0 -30
  95. package/src/components/router/base-router.vue +0 -11
  96. package/src/components/router/index.ts +0 -3
  97. package/src/components/source/index.ts +0 -1
  98. package/src/components/source/src/hooks/useFetch.ts +0 -42
  99. package/src/components/source/src/hooks/usePage.ts +0 -3
  100. package/src/components/source/src/hooks/useSource.ts +0 -214
  101. package/src/components/source/src/index.ts +0 -5
  102. package/src/components/source/src/types/source.type.ts +0 -58
  103. package/src/components/source/src/types/table.type.ts +0 -8
  104. package/src/components/table/index.less +0 -179
  105. package/src/components/table/index.ts +0 -7
  106. package/src/components/table/src/components/TableActions.vue +0 -108
  107. package/src/components/table/src/components/TableHeader.vue +0 -78
  108. package/src/components/table/src/components/TableRender.vue +0 -76
  109. package/src/components/table/src/components/editable/CellComponent.ts +0 -57
  110. package/src/components/table/src/components/editable/EditTableCell.vue +0 -181
  111. package/src/components/table/src/components/editable/componentMap.ts +0 -18
  112. package/src/components/table/src/components/editable/index.ts +0 -58
  113. package/src/components/table/src/components/setting/Column.vue +0 -354
  114. package/src/components/table/src/components/setting/Download.vue +0 -55
  115. package/src/components/table/src/components/setting/Fullscreen.vue +0 -43
  116. package/src/components/table/src/components/setting/Size.vue +0 -42
  117. package/src/components/table/src/components/setting/index.vue +0 -64
  118. package/src/components/table/src/const.ts +0 -13
  119. package/src/components/table/src/hooks/useColumns.ts +0 -326
  120. package/src/components/table/src/hooks/useCustomRow.ts +0 -86
  121. package/src/components/table/src/hooks/useDataSource.ts +0 -97
  122. package/src/components/table/src/hooks/useHeaderCode.ts +0 -89
  123. package/src/components/table/src/hooks/useLoading.ts +0 -29
  124. package/src/components/table/src/hooks/usePagination.ts +0 -76
  125. package/src/components/table/src/hooks/useRowSelection.ts +0 -145
  126. package/src/components/table/src/hooks/useRows.ts +0 -30
  127. package/src/components/table/src/hooks/useTable.ts +0 -90
  128. package/src/components/table/src/hooks/useTableHeader.ts +0 -48
  129. package/src/components/table/src/hooks/useTableInstance.ts +0 -29
  130. package/src/components/table/src/hooks/useTableScroll.ts +0 -229
  131. package/src/components/table/src/index.vue +0 -212
  132. package/src/components/table/src/props.ts +0 -160
  133. package/src/components/table/src/types/table.type.ts +0 -160
  134. package/src/components/table/src/types/tableHeader.type.ts +0 -27
  135. package/src/components/tree/index.less +0 -41
  136. package/src/components/tree/index.ts +0 -5
  137. package/src/components/tree/src/components/TreeHeader.vue +0 -97
  138. package/src/components/tree/src/hooks/useTree.ts +0 -239
  139. package/src/components/tree/src/index.vue +0 -392
  140. package/src/components/tree/src/props.ts +0 -133
  141. package/src/components/tree/src/type/tree.ts +0 -105
  142. package/src/components/tree/src/utils/tree.ts +0 -73
  143. package/src/components/type.ts +0 -0
  144. package/src/components/upload/index.less +0 -35
  145. package/src/components/upload/index.ts +0 -5
  146. package/src/components/upload/src/helper.ts +0 -60
  147. package/src/components/upload/src/props.ts +0 -51
  148. package/src/components/upload/src/upload.vue +0 -191
  149. package/src/directives/icon.ts +0 -36
  150. package/src/directives/index.ts +0 -26
  151. package/src/directives/permission.ts +0 -20
  152. package/src/global.d.ts +0 -8
  153. package/src/index.ts +0 -4
  154. package/src/theme/content/index.vue +0 -37
  155. package/src/theme/feature/back-top.vue +0 -11
  156. package/src/theme/feature/index.vue +0 -7
  157. package/src/theme/footer/index.less +0 -16
  158. package/src/theme/footer/index.vue +0 -24
  159. package/src/theme/header/components/bread-crumb.vue +0 -26
  160. package/src/theme/header/components/fullscreen.vue +0 -12
  161. package/src/theme/header/components/handler.ts +0 -81
  162. package/src/theme/header/components/index.ts +0 -21
  163. package/src/theme/header/components/lang-picker.vue +0 -36
  164. package/src/theme/header/components/logo.vue +0 -35
  165. package/src/theme/header/components/menu-search.vue +0 -62
  166. package/src/theme/header/components/notify.vue +0 -22
  167. package/src/theme/header/components/setting-theme.vue +0 -123
  168. package/src/theme/header/components/theme-drawer/enum.ts +0 -12
  169. package/src/theme/header/components/theme-drawer/feature.vue +0 -75
  170. package/src/theme/header/components/theme-drawer/index.ts +0 -7
  171. package/src/theme/header/components/theme-drawer/menu-type.vue +0 -40
  172. package/src/theme/header/components/theme-drawer/select-item.vue +0 -46
  173. package/src/theme/header/components/theme-drawer/switch-item.vue +0 -39
  174. package/src/theme/header/components/theme-drawer/theme-color.vue +0 -26
  175. package/src/theme/header/components/trigger.vue +0 -14
  176. package/src/theme/header/components/user-info.vue +0 -60
  177. package/src/theme/header/const/index.ts +0 -40
  178. package/src/theme/header/helper/menu-tree.ts +0 -64
  179. package/src/theme/header/index.less +0 -442
  180. package/src/theme/header/index.ts +0 -0
  181. package/src/theme/header/index.vue +0 -96
  182. package/src/theme/header/multiple-header.vue +0 -67
  183. package/src/theme/header/set-theme.less +0 -68
  184. package/src/theme/index.ts +0 -3
  185. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +0 -14
  186. package/src/theme/sider/components/basic-menu/basic-menu.vue +0 -122
  187. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +0 -46
  188. package/src/theme/sider/components/basic-menu/menu-item-content.vue +0 -13
  189. package/src/theme/sider/components/drag-bar.vue +0 -26
  190. package/src/theme/sider/components/layout-menu.vue +0 -132
  191. package/src/theme/sider/components/props.ts +0 -97
  192. package/src/theme/sider/components/sider-trigger.vue +0 -24
  193. package/src/theme/sider/helper/sider.ts +0 -52
  194. package/src/theme/sider/helper/split-menu.ts +0 -146
  195. package/src/theme/sider/hooks/useDragLine.ts +0 -86
  196. package/src/theme/sider/hooks/useOpenKeys.ts +0 -57
  197. package/src/theme/sider/index.less +0 -203
  198. package/src/theme/sider/index.vue +0 -88
  199. package/src/theme/tabs/components/TabContent.vue +0 -36
  200. package/src/theme/tabs/components/TabRedo.vue +0 -18
  201. package/src/theme/tabs/hooks/useMultifyTabs.ts +0 -96
  202. package/src/theme/tabs/hooks/useTabDropdown.ts +0 -89
  203. package/src/theme/tabs/index.less +0 -165
  204. package/src/theme/tabs/index.vue +0 -98
  205. package/src/theme/tabs/types/tabs.type.ts +0 -8
  206. package/src/theme/theme.less +0 -67
  207. package/src/theme/theme.vue +0 -90
  208. 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>