ct-component-plus 0.0.42 → 0.0.43

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 (91) hide show
  1. package/package.json +36 -36
  2. package/packages/components/button/index.js +8 -8
  3. package/packages/components/button/src/button.vue +171 -171
  4. package/packages/components/cascader/index.js +7 -7
  5. package/packages/components/cascader/src/cascader.vue +247 -247
  6. package/packages/components/cascader/src/ct-cascader.vue +260 -260
  7. package/packages/components/cascader/src/index.js +50 -50
  8. package/packages/components/checkbox/index.js +7 -7
  9. package/packages/components/checkbox/src/checkbox.vue +51 -51
  10. package/packages/components/checkbox/src/index.js +12 -12
  11. package/packages/components/date-picker/index.js +8 -8
  12. package/packages/components/date-picker/src/clear-icon.vue +2 -2
  13. package/packages/components/date-picker/src/date-icon.vue +2 -2
  14. package/packages/components/date-picker/src/date-picker.vue +77 -77
  15. package/packages/components/date-picker/src/index.js +33 -33
  16. package/packages/components/dialog/index.js +8 -8
  17. package/packages/components/dialog/src/dialog.vue +103 -103
  18. package/packages/components/empty/index.js +8 -8
  19. package/packages/components/empty/src/empty.vue +97 -97
  20. package/packages/components/index.js +81 -81
  21. package/packages/components/input/index.js +7 -7
  22. package/packages/components/input/src/index.js +13 -13
  23. package/packages/components/input/src/input.vue +106 -106
  24. package/packages/components/input-range/index.js +7 -7
  25. package/packages/components/input-range/src/index.js +29 -29
  26. package/packages/components/input-range/src/input-range.vue +233 -233
  27. package/packages/components/loading/index.js +7 -7
  28. package/packages/components/loading/src/CtLoading.vue +74 -74
  29. package/packages/components/loading/src/beating.vue +71 -71
  30. package/packages/components/loading/src/progress.vue +120 -120
  31. package/packages/components/loading/src/spinner.vue +38 -38
  32. package/packages/components/menu/index.js +7 -7
  33. package/packages/components/menu/src/item.vue +46 -46
  34. package/packages/components/menu/src/link.vue +28 -28
  35. package/packages/components/menu/src/logo.vue +25 -25
  36. package/packages/components/menu/src/menu-item.vue +103 -103
  37. package/packages/components/menu/src/menu.vue +191 -191
  38. package/packages/components/menu/src/utils/index.js +4 -4
  39. package/packages/components/message/icon/ErrorIcon.vue +25 -25
  40. package/packages/components/message/icon/InfoIcon.vue +25 -25
  41. package/packages/components/message/icon/SuccessIcon.vue +25 -25
  42. package/packages/components/message/icon/WarningIcon.vue +25 -25
  43. package/packages/components/message/index.js +8 -8
  44. package/packages/components/message/src/method.js +54 -54
  45. package/packages/components/message-box/index.js +7 -7
  46. package/packages/components/message-box/src/message-box.vue +107 -107
  47. package/packages/components/page/index.js +7 -7
  48. package/packages/components/page/src/modules/DownloadButton.vue +21 -21
  49. package/packages/components/page/src/modules/TableTitle.vue +151 -151
  50. package/packages/components/page/src/page.vue +382 -382
  51. package/packages/components/pagination/index.js +7 -7
  52. package/packages/components/pagination/src/pagination.vue +36 -36
  53. package/packages/components/radio/index.js +7 -7
  54. package/packages/components/radio/src/index.js +12 -12
  55. package/packages/components/radio/src/radio.vue +47 -47
  56. package/packages/components/search-box/index.js +24 -24
  57. package/packages/components/search-box/src/index.js +29 -29
  58. package/packages/components/search-box/src/search-box.vue +250 -251
  59. package/packages/components/search-box/src/slot.vue +4 -4
  60. package/packages/components/select/index.js +7 -7
  61. package/packages/components/select/src/arrow-down.vue +2 -2
  62. package/packages/components/select/src/clear-icon.vue +2 -2
  63. package/packages/components/select/src/empty.vue +13 -13
  64. package/packages/components/select/src/index.js +51 -51
  65. package/packages/components/select/src/select.vue +380 -380
  66. package/packages/components/table/index.js +7 -7
  67. package/packages/components/table/src/TableSort.vue +179 -179
  68. package/packages/components/table/src/index.js +70 -66
  69. package/packages/components/table/src/table.vue +287 -287
  70. package/packages/components/tabs/index.js +7 -7
  71. package/packages/components/tabs/src/tabs.vue +225 -225
  72. package/packages/components/year-select/index.js +7 -7
  73. package/packages/components/year-select/src/index.js +44 -44
  74. package/packages/components/year-select/src/year-select.vue +273 -273
  75. package/packages/echarts/bar/index.js +63 -63
  76. package/packages/echarts/base.js +99 -99
  77. package/packages/echarts/line/index.js +106 -106
  78. package/packages/hooks/index.js +5 -5
  79. package/packages/hooks/use-buried/index.js +46 -46
  80. package/packages/hooks/use-checked-all/index.js +37 -37
  81. package/packages/hooks/use-echarts/index.js +1 -1
  82. package/packages/hooks/use-echarts/use-bar/index.js +72 -72
  83. package/packages/hooks/use-echarts/use-line/index.js +88 -88
  84. package/packages/hooks/use-namespace/index.js +65 -65
  85. package/packages/hooks/use-search-component/index.js +28 -28
  86. package/packages/style/element.less +725 -725
  87. package/packages/style/index.js +2 -2
  88. package/packages/style/init.less +114 -114
  89. package/packages/utils/index.js +1 -1
  90. package/packages/utils/operate.js +77 -77
  91. package/packages/utils/types.js +35 -35
@@ -1,287 +1,287 @@
1
- <template>
2
- <div :class="[ns.b()]">
3
- <div :class="[ns.e('container')]">
4
- <el-table
5
- ref="tableRef"
6
- :class="[ns.e('body')]"
7
- :data="showData"
8
- :span-method="spanMethod"
9
- @selection-change="handleSelectChange"
10
- :row-key="rowKey || 'rowKey'"
11
- v-bind="$attrs">
12
- <el-table-column
13
- v-if="isMultiSelect"
14
- type="selection"
15
- width="88"
16
- v-bind="multiSelectAttr"
17
- :reserve-selection="true"
18
- :selectable="judgeSelectable">
19
- </el-table-column>
20
- <el-table-column
21
- v-for="(column, index) in columnData"
22
- :key="column.value + '-' + column.label"
23
- :label="column.label + ''"
24
- :prop="column.value || ''"
25
- :width="judgeWidth(column, index)"
26
- :min-width="judgeMinWidth(column, index)"
27
- :sort-orders="['ascending', 'descending']"
28
- :sortable="column.sortable ? 'custom' : false"
29
- :align="getColumnAlign(column)"
30
- :fixed="column.fixed || false"
31
- show-overflow-tooltip
32
- v-bind="column.rawAttr || {}">
33
- <template #header="scope" v-if="column.slotHeader">
34
- <slot
35
- :name="column.value + 'Header'"
36
- v-bind="scope"
37
- :column="column"
38
- :label="column.label"
39
- :value="column.value">
40
- </slot>
41
- </template>
42
- <template #default="scope">
43
- <slot
44
- :name="column.value"
45
- :value="scope.row[column.value]"
46
- v-bind="scope"
47
- :column="column">
48
- <span>{{ scope.row[column.value] }}</span>
49
- </slot>
50
- <el-table-column
51
- v-for="(column1, index) in column.children"
52
- :key="column1.value + '-' + column1.label"
53
- :label="column1.label + ''"
54
- :prop="column1.value"
55
- :width="judgeWidth(column1, index)"
56
- :min-width="judgeMinWidth(column1, index)"
57
- :sort-orders="['ascending', 'descending']"
58
- :sortable="column1.sortable ? 'custom' : false"
59
- :align="getColumnAlign(column1)"
60
- :fixed="column1.fixed || false"
61
- show-overflow-tooltip
62
- v-bind="column1.rawAttr || {}">
63
- <template #default="scope">
64
- <slot
65
- :name="column1.value"
66
- :value="scope.row[column1.value]"
67
- v-bind="scope"
68
- :column="column1">
69
- <span>{{ scope.row[column1.value] }}</span>
70
- </slot>
71
- </template>
72
- </el-table-column>
73
- </template>
74
- </el-table-column>
75
- <template #empty>
76
- <slot name="empty">
77
- <component
78
- :is="tableEmptyDom"
79
- v-if="tableEmptyDom"
80
- :text="emptyText">
81
- </component>
82
- <span v-else>{{ emptyText }}</span>
83
- </slot>
84
- </template>
85
- </el-table>
86
- <ct-pagination
87
- :class="ns.e('pagination')"
88
- :pageSize="pageSize"
89
- :total="total"
90
- :current-page="pageNo"
91
- v-if="pageSize"
92
- @current-change="handleCurrentChange"></ct-pagination>
93
- </div>
94
- <Teleport :to="`#${teleportDom}`" v-if="teleportDom && teleportStatus">
95
- <table-sort v-model:sort-obj="sortObj" :sort-list="sortList"></table-sort>
96
- </Teleport>
97
- </div>
98
- </template>
99
-
100
- <script setup>
101
- import { computed, inject, onMounted, ref, watch } from "vue";
102
- import { useNamespace } from "../../../hooks";
103
- import { copyObj } from "../../../utils";
104
- import { tableEmits, tableProps } from "./index";
105
- import TableSort from "./TableSort.vue";
106
- const props = defineProps(tableProps);
107
- const emit = defineEmits(tableEmits);
108
- const tableEmptyDom = inject("$tableEmptyDom", null);
109
-
110
- const ns = useNamespace("table");
111
- const tableRef = ref(null);
112
- const total = computed(() => {
113
- return props.tableProps.tableData?.length;
114
- });
115
- const pageSize = computed(() => {
116
- return Number(props.pagination);
117
- });
118
- const pageNo = ref(1);
119
- const handleCurrentChange = (val) => {
120
- pageNo.value = val;
121
- };
122
- const showData = computed(() => {
123
- // const table = props.tableProps.tableData.map((item, index) => {
124
- // return {
125
- // ...item,
126
- // rowKey: `ct-row-${index}`,
127
- // };
128
- // });
129
- const table = props.tableProps.tableData;
130
- if (props.pagination) {
131
- return table.slice(
132
- (pageNo.value - 1) * pageSize.value,
133
- pageNo.value * pageSize.value
134
- );
135
- } else {
136
- return table || [];
137
- }
138
- });
139
- const columnData = computed(() => {
140
- return props.tableProps.columnData || [];
141
- });
142
- const getColumnAlign = (column) => {
143
- if (column.align) {
144
- return column.align;
145
- }
146
- if (props.alignLeftKeys && props.alignLeftKeys.includes(column.value)) {
147
- return "left";
148
- }
149
- if (props.alignRightKeys && props.alignRightKeys.includes(column.value)) {
150
- return "right";
151
- }
152
- return "center";
153
- };
154
- const judgeWidth = (column, index) => {
155
- // 判断处理column的width
156
- const columnWidth = props.columnWidth;
157
- return (
158
- column.fixedWidth ||
159
- (columnWidth &&
160
- typeof columnWidth[index] === "object" &&
161
- columnWidth[index].fixed) ||
162
- ""
163
- );
164
- };
165
- const judgeMinWidth = (column, index) => {
166
- // 判断处理column的min-width
167
- const columnWidth = props.columnWidth;
168
- if (column.width) {
169
- return column.width;
170
- }
171
- if (columnWidth && columnWidth[index]) {
172
- return typeof columnWidth[index] === "object"
173
- ? columnWidth[index].width
174
- : columnWidth[index];
175
- }
176
- return "auto";
177
- };
178
-
179
- let spanObj = {};
180
- watch(
181
- () => props.mergeList,
182
- (newVal, oldVal) => {
183
- /**
184
- * 将数组型的合并单元格数据转换成对象型,转换示例如下:
185
- * {row: 1, col: 1, span: [2, 2]} =>
186
- * {
187
- * 1: { 1: [2,2], 2: [0,0] },
188
- * 2: { 1: [0,0], 2: [0,0] }
189
- * }
190
- * 这里的合并数据对象的第一层的key表示对应的行,第二层的key对应的是列, 行和列都是从1开始的索引
191
- */
192
- let spanObjRes = {};
193
- if (Array.isArray(newVal)) {
194
- newVal.forEach((item) => {
195
- const { row, col, span } = item;
196
- const spanRow = span ? span[0] : 0;
197
- const spanCol = span ? span[1] : 0;
198
- // 处理一项合并单元格数据,设置对应的行和列的合并数据,以及涉及到的其他行和列都需要被合并
199
- for (let i = 1; i <= spanRow; i++) {
200
- for (let j = 1; j <= spanCol; j++) {
201
- // 除了起始行、起始列,其他行和列都是需要被合并的,即都需要设置为[0,0]
202
- let res = i === 1 && j === 1 ? span : [0, 0];
203
- const rowKey = row + i - 1;
204
- const colKey = col + j - 1;
205
- if (spanObjRes[rowKey]) {
206
- spanObjRes[rowKey][colKey] = res;
207
- } else {
208
- spanObjRes[rowKey] = {
209
- [colKey]: res,
210
- };
211
- }
212
- }
213
- }
214
- });
215
- }
216
- spanObj = spanObjRes;
217
- },
218
- { immediate: true }
219
- );
220
- const spanMethod = ({ rowIndex, columnIndex }) => {
221
- const rowKey = rowIndex + 1;
222
- const colKey = columnIndex + 1;
223
-
224
- if (spanObj[rowKey]) {
225
- if (spanObj[rowKey][colKey]) {
226
- return spanObj[rowKey][colKey];
227
- }
228
- }
229
- return [1, 1];
230
- };
231
-
232
- const selectedArr = computed({
233
- get() {
234
- return props.multiSelect || [];
235
- },
236
- set(val) {
237
- emit("update:multiSelect", val);
238
- },
239
- });
240
- watch(
241
- () => props.multiSelect,
242
- (val, oldVal) => {
243
- if (val && val.length == 0) {
244
- tableRef.value.clearSelection();
245
- }
246
- }
247
- );
248
- function handleSelectChange(val) {
249
- selectedArr.value = copyObj(val);
250
- }
251
- function judgeSelectable(row) {
252
- if (props.selectableFn) {
253
- return props.selectableFn(row);
254
- } else {
255
- return true;
256
- }
257
- }
258
-
259
- const teleportStatus = ref(false);
260
- const sortObj = computed({
261
- get() {
262
- return props.defaultSort;
263
- },
264
- set(val) {
265
- emit("update:defaultSort", val);
266
- },
267
- });
268
- const sortList = computed(() => {
269
- return columnData.value.filter((item) => item.sortable);
270
- });
271
- onMounted(() => {
272
- teleportStatus.value = true; //直到dom挂载完毕再挂载teleport组件
273
- });
274
-
275
- defineExpose({ tableRef });
276
- </script>
277
- <style lang="less" scoped>
278
- .ct-table__body {
279
- width: 100%;
280
- }
281
-
282
- .ct-table__pagination {
283
- margin-top: 24px;
284
- display: flex;
285
- justify-content: flex-end;
286
- }
287
- </style>
1
+ <template>
2
+ <div :class="[ns.b()]">
3
+ <div :class="[ns.e('container')]">
4
+ <el-table
5
+ ref="tableRef"
6
+ :class="[ns.e('body')]"
7
+ :data="showData"
8
+ :span-method="spanMethod"
9
+ @selection-change="handleSelectChange"
10
+ :row-key="rowKey || 'rowKey'"
11
+ v-bind="$attrs">
12
+ <el-table-column
13
+ v-if="isMultiSelect"
14
+ type="selection"
15
+ width="88"
16
+ v-bind="multiSelectAttr"
17
+ :reserve-selection="true"
18
+ :selectable="judgeSelectable">
19
+ </el-table-column>
20
+ <el-table-column
21
+ v-for="(column, index) in columnData"
22
+ :key="column.value + '-' + column.label"
23
+ :label="column.label + ''"
24
+ :prop="column.value || ''"
25
+ :width="judgeWidth(column, index)"
26
+ :min-width="judgeMinWidth(column, index)"
27
+ :sort-orders="['ascending', 'descending']"
28
+ :sortable="column.sortable ? 'custom' : false"
29
+ :align="getColumnAlign(column)"
30
+ :fixed="column.fixed || false"
31
+ :show-overflow-tooltip="showOverflowTooltip"
32
+ v-bind="column.rawAttr || {}">
33
+ <template #header="scope" v-if="column.slotHeader">
34
+ <slot
35
+ :name="column.value + 'Header'"
36
+ v-bind="scope"
37
+ :column="column"
38
+ :label="column.label"
39
+ :value="column.value">
40
+ </slot>
41
+ </template>
42
+ <template #default="scope">
43
+ <slot
44
+ :name="column.value"
45
+ :value="scope.row[column.value]"
46
+ v-bind="scope"
47
+ :column="column">
48
+ <span>{{ scope.row[column.value] }}</span>
49
+ </slot>
50
+ <el-table-column
51
+ v-for="(column1, index) in column.children"
52
+ :key="column1.value + '-' + column1.label"
53
+ :label="column1.label + ''"
54
+ :prop="column1.value"
55
+ :width="judgeWidth(column1, index)"
56
+ :min-width="judgeMinWidth(column1, index)"
57
+ :sort-orders="['ascending', 'descending']"
58
+ :sortable="column1.sortable ? 'custom' : false"
59
+ :align="getColumnAlign(column1)"
60
+ :fixed="column1.fixed || false"
61
+ :show-overflow-tooltip="showOverflowTooltip"
62
+ v-bind="column1.rawAttr || {}">
63
+ <template #default="scope">
64
+ <slot
65
+ :name="column1.value"
66
+ :value="scope.row[column1.value]"
67
+ v-bind="scope"
68
+ :column="column1">
69
+ <span>{{ scope.row[column1.value] }}</span>
70
+ </slot>
71
+ </template>
72
+ </el-table-column>
73
+ </template>
74
+ </el-table-column>
75
+ <template #empty>
76
+ <slot name="empty">
77
+ <component
78
+ :is="tableEmptyDom"
79
+ v-if="tableEmptyDom"
80
+ :text="emptyText">
81
+ </component>
82
+ <span v-else>{{ emptyText }}</span>
83
+ </slot>
84
+ </template>
85
+ </el-table>
86
+ <ct-pagination
87
+ :class="ns.e('pagination')"
88
+ :pageSize="pageSize"
89
+ :total="total"
90
+ :current-page="pageNo"
91
+ v-if="pageSize"
92
+ @current-change="handleCurrentChange"></ct-pagination>
93
+ </div>
94
+ <Teleport :to="`#${teleportDom}`" v-if="teleportDom && teleportStatus">
95
+ <table-sort v-model:sort-obj="sortObj" :sort-list="sortList"></table-sort>
96
+ </Teleport>
97
+ </div>
98
+ </template>
99
+
100
+ <script setup>
101
+ import { computed, inject, onMounted, ref, watch } from "vue";
102
+ import { useNamespace } from "../../../hooks";
103
+ import { copyObj } from "../../../utils";
104
+ import { tableEmits, tableProps } from "./index";
105
+ import TableSort from "./TableSort.vue";
106
+ const props = defineProps(tableProps);
107
+ const emit = defineEmits(tableEmits);
108
+ const tableEmptyDom = inject("$tableEmptyDom", null);
109
+
110
+ const ns = useNamespace("table");
111
+ const tableRef = ref(null);
112
+ const total = computed(() => {
113
+ return props.tableProps.tableData?.length;
114
+ });
115
+ const pageSize = computed(() => {
116
+ return Number(props.pagination);
117
+ });
118
+ const pageNo = ref(1);
119
+ const handleCurrentChange = (val) => {
120
+ pageNo.value = val;
121
+ };
122
+ const showData = computed(() => {
123
+ // const table = props.tableProps.tableData.map((item, index) => {
124
+ // return {
125
+ // ...item,
126
+ // rowKey: `ct-row-${index}`,
127
+ // };
128
+ // });
129
+ const table = props.tableProps.tableData;
130
+ if (props.pagination) {
131
+ return table.slice(
132
+ (pageNo.value - 1) * pageSize.value,
133
+ pageNo.value * pageSize.value
134
+ );
135
+ } else {
136
+ return table || [];
137
+ }
138
+ });
139
+ const columnData = computed(() => {
140
+ return props.tableProps.columnData || [];
141
+ });
142
+ const getColumnAlign = (column) => {
143
+ if (column.align) {
144
+ return column.align;
145
+ }
146
+ if (props.alignLeftKeys && props.alignLeftKeys.includes(column.value)) {
147
+ return "left";
148
+ }
149
+ if (props.alignRightKeys && props.alignRightKeys.includes(column.value)) {
150
+ return "right";
151
+ }
152
+ return "center";
153
+ };
154
+ const judgeWidth = (column, index) => {
155
+ // 判断处理column的width
156
+ const columnWidth = props.columnWidth;
157
+ return (
158
+ column.fixedWidth ||
159
+ (columnWidth &&
160
+ typeof columnWidth[index] === "object" &&
161
+ columnWidth[index].fixed) ||
162
+ ""
163
+ );
164
+ };
165
+ const judgeMinWidth = (column, index) => {
166
+ // 判断处理column的min-width
167
+ const columnWidth = props.columnWidth;
168
+ if (column.width) {
169
+ return column.width;
170
+ }
171
+ if (columnWidth && columnWidth[index]) {
172
+ return typeof columnWidth[index] === "object"
173
+ ? columnWidth[index].width
174
+ : columnWidth[index];
175
+ }
176
+ return "auto";
177
+ };
178
+
179
+ let spanObj = {};
180
+ watch(
181
+ () => props.mergeList,
182
+ (newVal, oldVal) => {
183
+ /**
184
+ * 将数组型的合并单元格数据转换成对象型,转换示例如下:
185
+ * {row: 1, col: 1, span: [2, 2]} =>
186
+ * {
187
+ * 1: { 1: [2,2], 2: [0,0] },
188
+ * 2: { 1: [0,0], 2: [0,0] }
189
+ * }
190
+ * 这里的合并数据对象的第一层的key表示对应的行,第二层的key对应的是列, 行和列都是从1开始的索引
191
+ */
192
+ let spanObjRes = {};
193
+ if (Array.isArray(newVal)) {
194
+ newVal.forEach((item) => {
195
+ const { row, col, span } = item;
196
+ const spanRow = span ? span[0] : 0;
197
+ const spanCol = span ? span[1] : 0;
198
+ // 处理一项合并单元格数据,设置对应的行和列的合并数据,以及涉及到的其他行和列都需要被合并
199
+ for (let i = 1; i <= spanRow; i++) {
200
+ for (let j = 1; j <= spanCol; j++) {
201
+ // 除了起始行、起始列,其他行和列都是需要被合并的,即都需要设置为[0,0]
202
+ let res = i === 1 && j === 1 ? span : [0, 0];
203
+ const rowKey = row + i - 1;
204
+ const colKey = col + j - 1;
205
+ if (spanObjRes[rowKey]) {
206
+ spanObjRes[rowKey][colKey] = res;
207
+ } else {
208
+ spanObjRes[rowKey] = {
209
+ [colKey]: res,
210
+ };
211
+ }
212
+ }
213
+ }
214
+ });
215
+ }
216
+ spanObj = spanObjRes;
217
+ },
218
+ { immediate: true }
219
+ );
220
+ const spanMethod = ({ rowIndex, columnIndex }) => {
221
+ const rowKey = rowIndex + 1;
222
+ const colKey = columnIndex + 1;
223
+
224
+ if (spanObj[rowKey]) {
225
+ if (spanObj[rowKey][colKey]) {
226
+ return spanObj[rowKey][colKey];
227
+ }
228
+ }
229
+ return [1, 1];
230
+ };
231
+
232
+ const selectedArr = computed({
233
+ get() {
234
+ return props.multiSelect || [];
235
+ },
236
+ set(val) {
237
+ emit("update:multiSelect", val);
238
+ },
239
+ });
240
+ watch(
241
+ () => props.multiSelect,
242
+ (val, oldVal) => {
243
+ if (val && val.length == 0) {
244
+ tableRef.value.clearSelection();
245
+ }
246
+ }
247
+ );
248
+ function handleSelectChange(val) {
249
+ selectedArr.value = copyObj(val);
250
+ }
251
+ function judgeSelectable(row) {
252
+ if (props.selectableFn) {
253
+ return props.selectableFn(row);
254
+ } else {
255
+ return true;
256
+ }
257
+ }
258
+
259
+ const teleportStatus = ref(false);
260
+ const sortObj = computed({
261
+ get() {
262
+ return props.defaultSort;
263
+ },
264
+ set(val) {
265
+ emit("update:defaultSort", val);
266
+ },
267
+ });
268
+ const sortList = computed(() => {
269
+ return columnData.value.filter((item) => item.sortable);
270
+ });
271
+ onMounted(() => {
272
+ teleportStatus.value = true; //直到dom挂载完毕再挂载teleport组件
273
+ });
274
+
275
+ defineExpose({ tableRef });
276
+ </script>
277
+ <style lang="less" scoped>
278
+ .ct-table__body {
279
+ width: 100%;
280
+ }
281
+
282
+ .ct-table__pagination {
283
+ margin-top: 24px;
284
+ display: flex;
285
+ justify-content: flex-end;
286
+ }
287
+ </style>
@@ -1,8 +1,8 @@
1
- import CtTabs from './src/tabs.vue';
2
-
3
- /* istanbul ignore next */
4
- CtTabs.install = function (Vue) {
5
- Vue.component('CtTabs', CtTabs);
6
- };
7
-
1
+ import CtTabs from './src/tabs.vue';
2
+
3
+ /* istanbul ignore next */
4
+ CtTabs.install = function (Vue) {
5
+ Vue.component('CtTabs', CtTabs);
6
+ };
7
+
8
8
  export default CtTabs;