stellar-ui-v2 1.35.3

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 (141) hide show
  1. package/common/css/common.scss +61 -0
  2. package/components/ste-animate/README.md +117 -0
  3. package/components/ste-animate/animate.scss +247 -0
  4. package/components/ste-animate/ste-animate.vue +200 -0
  5. package/components/ste-badge/README.md +171 -0
  6. package/components/ste-badge/ste-badge.vue +238 -0
  7. package/components/ste-barcode/README.md +36 -0
  8. package/components/ste-barcode/encode2.js +317 -0
  9. package/components/ste-barcode/ste-barcode.vue +213 -0
  10. package/components/ste-button/README.md +129 -0
  11. package/components/ste-button/ste-button.vue +345 -0
  12. package/components/ste-calendar/README.md +304 -0
  13. package/components/ste-calendar/self-date.js +119 -0
  14. package/components/ste-calendar/ste-calendar.vue +578 -0
  15. package/components/ste-checkbox/README.md +297 -0
  16. package/components/ste-checkbox/ste-checkbox.vue +305 -0
  17. package/components/ste-checkbox-group/ste-checkbox-group.vue +133 -0
  18. package/components/ste-code-input/README.md +67 -0
  19. package/components/ste-code-input/ste-code-input.vue +302 -0
  20. package/components/ste-date-picker/README.md +135 -0
  21. package/components/ste-date-picker/ste-date-picker.vue +407 -0
  22. package/components/ste-drag/README.md +103 -0
  23. package/components/ste-drag/ste-drag.vue +203 -0
  24. package/components/ste-dropdown-menu/README.md +358 -0
  25. package/components/ste-dropdown-menu/ste-dropdown-menu.vue +405 -0
  26. package/components/ste-dropdown-menu-item/ste-dropdown-menu-item.vue +176 -0
  27. package/components/ste-icon/README.md +90 -0
  28. package/components/ste-icon/iconfont.css +8 -0
  29. package/components/ste-icon/ste-icon.vue +147 -0
  30. package/components/ste-image/README.md +154 -0
  31. package/components/ste-image/ste-image.vue +218 -0
  32. package/components/ste-index-item/ste-index-item.vue +96 -0
  33. package/components/ste-index-list/README.md +153 -0
  34. package/components/ste-index-list/ste-index-list.vue +128 -0
  35. package/components/ste-input/README.md +146 -0
  36. package/components/ste-input/ste-input.vue +480 -0
  37. package/components/ste-loading/README.md +81 -0
  38. package/components/ste-loading/ste-loading.vue +166 -0
  39. package/components/ste-media-preview/README.md +243 -0
  40. package/components/ste-media-preview/TouchScaleing.js +102 -0
  41. package/components/ste-media-preview/ste-media-preview.vue +267 -0
  42. package/components/ste-message-box/README.md +217 -0
  43. package/components/ste-message-box/ste-message-box.js +72 -0
  44. package/components/ste-message-box/ste-message-box.vue +380 -0
  45. package/components/ste-notice-bar/README.md +129 -0
  46. package/components/ste-notice-bar/ste-notice-bar.vue +331 -0
  47. package/components/ste-number-keyboard/README.md +246 -0
  48. package/components/ste-number-keyboard/keyboard.vue +140 -0
  49. package/components/ste-number-keyboard/ste-number-keyboard.vue +240 -0
  50. package/components/ste-picker/ste-picker.vue +258 -0
  51. package/components/ste-popup/README.md +148 -0
  52. package/components/ste-popup/ste-popup.vue +337 -0
  53. package/components/ste-price/README.md +129 -0
  54. package/components/ste-price/ste-price.vue +258 -0
  55. package/components/ste-progress/README.md +87 -0
  56. package/components/ste-progress/ste-progress.vue +200 -0
  57. package/components/ste-qrcode/README.md +50 -0
  58. package/components/ste-qrcode/ste-qrcode.vue +164 -0
  59. package/components/ste-qrcode/uqrcode.js +34 -0
  60. package/components/ste-radio/README.md +286 -0
  61. package/components/ste-radio/ste-radio.vue +293 -0
  62. package/components/ste-radio-group/ste-radio-group.vue +128 -0
  63. package/components/ste-rate/README.md +115 -0
  64. package/components/ste-rate/ste-rate.vue +202 -0
  65. package/components/ste-read-more/README.md +111 -0
  66. package/components/ste-read-more/ste-read-more.vue +133 -0
  67. package/components/ste-rich-text/README.md +31 -0
  68. package/components/ste-rich-text/ste-rich-text.vue +70 -0
  69. package/components/ste-scroll-to/README.md +68 -0
  70. package/components/ste-scroll-to/mixin.js +173 -0
  71. package/components/ste-scroll-to/ste-scroll-to.vue +45 -0
  72. package/components/ste-scroll-to-item/ste-scroll-to-item.vue +25 -0
  73. package/components/ste-search/README.md +262 -0
  74. package/components/ste-search/ste-search.vue +547 -0
  75. package/components/ste-select/README.md +434 -0
  76. package/components/ste-select/datapager.vue +62 -0
  77. package/components/ste-select/datetime.vue +106 -0
  78. package/components/ste-select/defaultDate.js +142 -0
  79. package/components/ste-select/ste-select.vue +843 -0
  80. package/components/ste-signature/README.md +105 -0
  81. package/components/ste-signature/ste-signature.vue +220 -0
  82. package/components/ste-slider/README.md +165 -0
  83. package/components/ste-slider/ste-slider.vue +544 -0
  84. package/components/ste-step/ste-step.vue +264 -0
  85. package/components/ste-stepper/README.md +170 -0
  86. package/components/ste-stepper/ste-stepper.vue +373 -0
  87. package/components/ste-steps/README.md +132 -0
  88. package/components/ste-steps/ste-steps.vue +65 -0
  89. package/components/ste-sticky/README.md +52 -0
  90. package/components/ste-sticky/ste-sticky.vue +127 -0
  91. package/components/ste-swipe-action/README.md +197 -0
  92. package/components/ste-swipe-action/ste-swipe-action.vue +303 -0
  93. package/components/ste-swipe-action-group/ste-swipe-action-group.vue +104 -0
  94. package/components/ste-swiper/README.md +173 -0
  95. package/components/ste-swiper/ste-swiper.vue +462 -0
  96. package/components/ste-swiper-item/ste-swiper-item.vue +41 -0
  97. package/components/ste-switch/README.md +110 -0
  98. package/components/ste-switch/ste-switch.vue +144 -0
  99. package/components/ste-tab/ste-tab.vue +87 -0
  100. package/components/ste-table/README.md +785 -0
  101. package/components/ste-table/common.js +8 -0
  102. package/components/ste-table/ste-table.vue +666 -0
  103. package/components/ste-table/utils.js +20 -0
  104. package/components/ste-table-column/checkbox-icon.vue +65 -0
  105. package/components/ste-table-column/common.scss +65 -0
  106. package/components/ste-table-column/radio-icon.vue +110 -0
  107. package/components/ste-table-column/ste-table-column.vue +255 -0
  108. package/components/ste-table-column/sub-table.vue +116 -0
  109. package/components/ste-table-column/table-popover.vue +204 -0
  110. package/components/ste-table-column/var.scss +1 -0
  111. package/components/ste-tabs/README.md +475 -0
  112. package/components/ste-tabs/props.js +212 -0
  113. package/components/ste-tabs/ste-tabs.vue +758 -0
  114. package/components/ste-text/README.md +66 -0
  115. package/components/ste-text/ste-text.vue +72 -0
  116. package/components/ste-toast/README.md +243 -0
  117. package/components/ste-toast/ste-toast.js +69 -0
  118. package/components/ste-toast/ste-toast.vue +231 -0
  119. package/components/ste-touch-swipe/README.md +104 -0
  120. package/components/ste-touch-swipe/TouchEvent.js +72 -0
  121. package/components/ste-touch-swipe/ste-touch-swipe.vue +327 -0
  122. package/components/ste-touch-swipe-item/ste-touch-swipe-item.vue +33 -0
  123. package/components/ste-tour/README.md +194 -0
  124. package/components/ste-tour/ste-tour.vue +355 -0
  125. package/components/ste-tree/README.md +240 -0
  126. package/components/ste-tree/ste-tree.vue +350 -0
  127. package/components/ste-upload/README.md +276 -0
  128. package/components/ste-upload/ReadFile.js +229 -0
  129. package/components/ste-upload/ste-upload.vue +526 -0
  130. package/components/ste-video/README.md +60 -0
  131. package/components/ste-video/props.js +149 -0
  132. package/components/ste-video/ste-video.vue +647 -0
  133. package/config/color.js +22 -0
  134. package/index.js +2 -0
  135. package/package.json +19 -0
  136. package/utils/Color.js +66 -0
  137. package/utils/System.js +110 -0
  138. package/utils/dayjs.min.js +1 -0
  139. package/utils/mixin.js +67 -0
  140. package/utils/store.js +7 -0
  141. package/utils/utils.js +604 -0
@@ -0,0 +1,785 @@
1
+ # Table 表格
2
+
3
+ ---$
4
+
5
+ ### 代码演示
6
+ #### 基础使用
7
+ ```html
8
+ <ste-table :data="rows">
9
+ <template v-slot="{ row }">
10
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
11
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
12
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
13
+ </template>
14
+ </ste-table>
15
+
16
+ <script />
17
+ export default {
18
+ data() {
19
+ return {
20
+ rows: [
21
+ { name: '张三', birth: '2023.12.31', sex: '男' },
22
+ { name: '李四', birth: '2024.01.01', sex: '女' },
23
+ { name: '王五', birth: '2024.11.01', sex: '女' },
24
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
25
+ { name: '王七', birth: '2024.01.01', sex: '男' },
26
+ ],
27
+ }
28
+ }
29
+ }
30
+ <script>
31
+ ```
32
+
33
+ #### 带边框
34
+ ```html
35
+ <ste-table :data="rows" border>
36
+ <template v-slot="{ row }">
37
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
38
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
39
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
40
+ </template>
41
+ </ste-table>
42
+
43
+ <script />
44
+ export default {
45
+ data() {
46
+ return {
47
+ rows: [
48
+ { name: '张三', birth: '2023.12.31', sex: '男' },
49
+ { name: '李四', birth: '2024.01.01', sex: '女' },
50
+ { name: '王五', birth: '2024.11.01', sex: '女' },
51
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
52
+ { name: '王七', birth: '2024.01.01', sex: '男' },
53
+ ],
54
+ }
55
+ }
56
+ }
57
+ <script>
58
+ ```
59
+
60
+ #### 空数据显示
61
+ - 通过`table`中的`emptyText`属性来指定单元格中数据为空时显示的值,否则显示`-`
62
+ - 也可以通过插槽来自定义空数据时显示
63
+ ```html
64
+ <ste-table :data="rows2" :stripe="false" emptyText="--">
65
+ <template v-slot="{ row }">
66
+ <ste-table-column label="姓名" prop="name">
67
+ <span slot="empty">***</span>
68
+ </ste-table-column>
69
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
70
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
71
+ </template>
72
+ </ste-table>
73
+
74
+ <script />
75
+ export default {
76
+ data() {
77
+ return {
78
+ rows2: [
79
+ { name: '张三', birth: '2023.12.31', sex: '男' },
80
+ { name: '李四', birth: '2024.01.01', sex: '女' },
81
+ { name: '王五', birth: '2024.11.01', sex: '女' },
82
+ { name: '', birth: '', sex: '女' },
83
+ { name: '王七', birth: '2024.01.01', sex: '' },
84
+ ],
85
+ }
86
+ }
87
+ }
88
+ <script>
89
+ ```
90
+
91
+ #### 列类型
92
+ 通过指定某列上的`type`属性
93
+ ```html
94
+ <ste-table :data="rows">
95
+ <template v-slot="{ row }">
96
+ <ste-table-column
97
+ label="序号"
98
+ type="index"
99
+ align="center"
100
+ customKey="index"
101
+ ></ste-table-column>
102
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
103
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
104
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
105
+ </template>
106
+ </ste-table>
107
+ <ste-table :data="rows">
108
+ <template v-slot="{ row }">
109
+ <ste-table-column
110
+ label="选择"
111
+ type="checkbox"
112
+ align="center"
113
+ customKey="checkbox"
114
+ ></ste-table-column>
115
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
116
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
117
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
118
+ </template>
119
+ </ste-table>
120
+ <ste-table :data="rows">
121
+ <template v-slot="{ row }">
122
+ <ste-table-column
123
+ label="选择"
124
+ type="radio"
125
+ align="center"
126
+ customKey="checkbox"
127
+ ></ste-table-column>
128
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
129
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
130
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
131
+ </template>
132
+ </ste-table>
133
+
134
+ <script />
135
+ export default {
136
+ data() {
137
+ return {
138
+ rows: [
139
+ { name: '张三', birth: '2023.12.31', sex: '男' },
140
+ { name: '李四', birth: '2024.01.01', sex: '女' },
141
+ { name: '王五', birth: '2024.11.01', sex: '女' },
142
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
143
+ { name: '王七', birth: '2024.01.01', sex: '男' },
144
+ ],
145
+ }
146
+ }
147
+ }
148
+ <script>
149
+ ```
150
+ #### 禁用或只读选择项
151
+ 传入一个自定义方法来指定某行是否能选择,方法会传入当前行数据(`row`)和下标(`index`)
152
+ 只读同理
153
+ ```html
154
+ <ste-table :data="rows" :selectable="selectableFun" :readable="readonlyFun">
155
+ <template v-slot="{ row }">
156
+ <ste-table-column label="选择" type="checkbox"></ste-table-column>
157
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
158
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
159
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
160
+ </template>
161
+ </ste-table>
162
+
163
+ <script />
164
+ export default {
165
+ data() {
166
+ return {
167
+ rows: [
168
+ { name: '张三', birth: '2023.12.31', sex: '男' },
169
+ { name: '李四', birth: '2024.01.01', sex: '女' },
170
+ { name: '王五', birth: '2024.11.01', sex: '女' },
171
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
172
+ { name: '王七', birth: '2024.01.01', sex: '男' },
173
+ ],
174
+ }
175
+ }
176
+ methods: {
177
+ selectableFun(row, index) {
178
+ return row.name !== '张三';
179
+ },
180
+ readonlyFun(row, index) {
181
+ return row.name === '李四';
182
+ },
183
+ }
184
+ }
185
+ <script>
186
+ ```
187
+
188
+ #### 显示合计
189
+ - 通过`showSummary`控制是否显示合计,`sumText`控制合计行第一列的文本
190
+ - `summaryMethod`来指定合计的方法,需要返回一个数组来确定每一列合计显示的内容
191
+ ```html
192
+ <ste-table :data="rows" showSummary :summaryMethod="summaryMethod">
193
+ <template v-slot="{ row }">
194
+ <ste-table-column
195
+ label="序号"
196
+ type="index"
197
+ align="center"
198
+ customKey="index"
199
+ ></ste-table-column>
200
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
201
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
202
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
203
+ </template>
204
+ </ste-table>
205
+
206
+ <script />
207
+ export default {
208
+ data() {
209
+ return {
210
+ rows: [
211
+ { name: '张三', birth: '2023.12.31', sex: '男' },
212
+ { name: '李四', birth: '2024.01.01', sex: '女' },
213
+ { name: '王五', birth: '2024.11.01', sex: '女' },
214
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
215
+ { name: '王七', birth: '2024.01.01', sex: '男' },
216
+ ],
217
+ }
218
+ }
219
+ methods: {
220
+ summaryMethod({ columns, data }) {
221
+ let res = columns.map(() => '');
222
+ columns.forEach((col, index) => {
223
+ if (col.prop === 'name' || col.prop === 'name') {
224
+ res[index] = data.length + '人';
225
+ }
226
+ });
227
+ return res;
228
+ }
229
+ }
230
+ }
231
+ <script>
232
+ ```
233
+
234
+ #### 对齐方式
235
+ - 通过`align`指定某列的单元格的对齐方式
236
+ - `headerAlign`指定表头的单元格对齐方式, 没设置时跟随`align`值
237
+ ```html
238
+ <ste-table :data="rows">
239
+ <template v-slot="{ row }">
240
+ <ste-table-column label="姓名" prop="name" align="right"></ste-table-column>
241
+ <ste-table-column label="生日" prop="birth" headerAlign="center"></ste-table-column>
242
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
243
+ </template>
244
+ </ste-table>
245
+ ```
246
+
247
+ #### 表格方法
248
+ ```html
249
+ <ste-table
250
+ :data="rows"
251
+ ref="steTable"
252
+ >
253
+ <template v-slot="{ row }">
254
+ <ste-table-column
255
+ label="选择"
256
+ type="checkbox"
257
+ align="center"
258
+ customKey="checkbox"
259
+ ></ste-table-column>
260
+ <ste-table-column label="姓名" prop="name" align="right"></ste-table-column>
261
+ <ste-table-column label="生日" prop="birth" headerAlign="center"></ste-table-column>
262
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
263
+ </template>
264
+ </ste-table>
265
+ <ste-button :mode="100" @click="toggleAllSelection">切换全选</ste-button>
266
+ <ste-button :mode="100" @click="clearSelect">取消所有选择</ste-button>
267
+ <ste-button :mode="100" @click="toggleRowSelection(1)">选中第二行</ste-button>
268
+ <ste-button :mode="100" @click="toggleRowSelection(0)">选中第一行</ste-button>
269
+
270
+ <script />
271
+ export default {
272
+ data() {
273
+ return {
274
+ rows: [
275
+ { name: '张三', birth: '2023.12.31', sex: '男' },
276
+ { name: '李四', birth: '2024.01.01', sex: '女' },
277
+ { name: '王五', birth: '2024.11.01', sex: '女' },
278
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
279
+ { name: '王七', birth: '2024.01.01', sex: '男' },
280
+ ],
281
+ }
282
+ }
283
+ methods: {
284
+ clearSelect() {
285
+ this.$refs.steTable.clearSelection();
286
+ },
287
+ toggleAllSelection() {
288
+ this.$refs.steTable.toggleAllSelection();
289
+ },
290
+ toggleRowSelection(i) {
291
+ this.$refs.steTable.toggleRowSelection(this.rows[i]);
292
+ },
293
+ }
294
+ }
295
+ <script>
296
+ ```
297
+
298
+ #### 表格滚动
299
+ 此时需要给表格设置高度`height`,并保证表体高度是大于此高度,此时表格可以滚动,且滚动到底部时触发`scrollToLower`事件
300
+ ```html
301
+ <ste-table :data="rows3" height="500" @scrollToLower="scrollToLower">
302
+ <template v-slot="{ row }">
303
+ <ste-table-column label="姓名" prop="name" width="200"></ste-table-column>
304
+ <ste-table-column label="生日" prop="birth" width="200"></ste-table-column>
305
+ <ste-table-column label="性别" prop="sex" width="300"></ste-table-column>
306
+ </template>
307
+ </ste-table>
308
+ <script>
309
+ export default {
310
+ data() {
311
+ return {
312
+ rows: [
313
+ { name: '张三', birth: '2023.12.31', sex: '男' },
314
+ { name: '李四', birth: '2024.01.01', sex: '女' },
315
+ { name: '王五', birth: '2024.11.01', sex: '女' },
316
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
317
+ { name: '王七', birth: '2024.01.01', sex: '男' },
318
+ { name: '张三', birth: '2023.12.31', sex: '男' },
319
+ { name: '李四', birth: '2024.01.01', sex: '女' },
320
+ { name: '王五', birth: '2024.11.01', sex: '女' },
321
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
322
+ { name: '王七', birth: '2024.01.01', sex: '男' },
323
+ ],
324
+ }
325
+ },
326
+ methods: {
327
+ scrollToLower() {
328
+ this.showToast({
329
+ title: '到底了',
330
+ });
331
+ },
332
+ }
333
+ }
334
+ </script>
335
+ ```
336
+
337
+ #### 自定义列
338
+ 当需要格式化某列时,可以不设置列的`prop`,但需要设置`customKey`值,然后给表格传入一个`formatter`方法,
339
+ 方法中第一个参数是每一行的数据,第二个参数是列的`customKey`,示例如下
340
+ ```html
341
+ <ste-table :data="rows" :formatter="formatterFun">
342
+ <template v-slot="{ row }">
343
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
344
+ <ste-table-column label="状态" customKey="state"></ste-table-column>
345
+ <ste-table-column label="操作1" align="center">
346
+ <view style="display: flex; justify-content: center">
347
+ <ste-icon
348
+ code="&#xe6b0;"
349
+ color="red"
350
+ size="32"
351
+ v-if="row.name === '张三'"
352
+ ></ste-icon>
353
+ <ste-icon code="&#xe6b0;" size="32" v-else></ste-icon>
354
+ </view>
355
+ </ste-table-column>
356
+ <ste-table-column label="操作2">
357
+ <ste-button :mode="100" @click="handleEdit">编辑</ste-button>
358
+ </ste-table-column>
359
+ </template>
360
+ </ste-table>
361
+ <script>
362
+ export default {
363
+ data() {
364
+ return {
365
+ rows: [
366
+ { name: '张三', birth: '2023.12.31', sex: '男' },
367
+ { name: '李四', birth: '2024.01.01', sex: '女' },
368
+ { name: '王五', birth: '2024.11.01', sex: '女' },
369
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
370
+ { name: '王七', birth: '2024.01.01', sex: '男' },
371
+ ],
372
+ }
373
+ },
374
+ methods: {
375
+ formatterFun(row, key) {
376
+ if (key === 'state') {
377
+ if (row.state === 1) {
378
+ return '进行中';
379
+ } else if (row.state === 2) {
380
+ return '已完成';
381
+ } else {
382
+ return '无状态';
383
+ }
384
+ }
385
+ }
386
+ }
387
+ }
388
+ </script>
389
+ ```
390
+
391
+ #### 动态设置表头
392
+ 当需要动态设置表头,可以不设置列的`label`,但需要设置`customKey`值,然后给表格传入一个`header`方法,
393
+ 方法中第一个参数是列的数据,第二个参数是表格的数据`data`,示例如下
394
+ ```html
395
+ <ste-table :data="rows" :header="headerFun">
396
+ <template v-slot="{ row }">
397
+ <ste-table-column prop="name" customKey="name" width="200"></ste-table-column>
398
+ <ste-table-column label="生日" prop="birth" width="200"></ste-table-column>
399
+ <ste-table-column label="性别" prop="sex" width="300"></ste-table-column>
400
+ </template>
401
+ </ste-table>
402
+ <script>
403
+ export default {
404
+ data() {
405
+ return {
406
+ rows: [
407
+ { name: '张三', birth: '2023.12.31', sex: '男', state: 1 },
408
+ { name: '李四', birth: '2024.01.01', sex: '女', state: 2 },
409
+ { name: '王五', birth: '2024.11.01', sex: '女', state: 1 },
410
+ { name: '赵六', birth: '2024.11.01', sex: '女', state: 2 },
411
+ { name: '王七', birth: '2024.01.01', sex: '男', state: 1 },
412
+ ]
413
+ }
414
+ },
415
+ methods: {
416
+ headerFun(e1, tableData) {
417
+ if (e1.customKey == 'name') {
418
+ return tableData[0].name;
419
+ }
420
+ },
421
+ }
422
+ }
423
+ </script>
424
+ ```
425
+
426
+ #### 自定义边框样式
427
+ 表格边框样式不满足时,可通过css更改样式
428
+ ```html
429
+ <view class="my-table">
430
+ <ste-table :data="rows" class="my-table-1" border>
431
+ <template v-slot="{ row }">
432
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
433
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
434
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
435
+ </template>
436
+ </ste-table>
437
+
438
+
439
+ <ste-table :data="rows" class="my-table-2">
440
+ <template v-slot="{ row }">
441
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
442
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
443
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
444
+ </template>
445
+ </ste-table>
446
+
447
+ <ste-table :data="rows" class="my-table-3">
448
+ <template v-slot="{ row }">
449
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
450
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
451
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
452
+ </template>
453
+ </ste-table>
454
+
455
+ <ste-table :data="rows" class="my-table-4">
456
+ <template v-slot="{ row }">
457
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
458
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
459
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
460
+ </template>
461
+ </ste-table>
462
+ </view>
463
+ <script />
464
+ export default {
465
+ data() {
466
+ return {
467
+ rows: [
468
+ { name: '张三', birth: '2023.12.31', sex: '男' },
469
+ { name: '李四', birth: '2024.01.01', sex: '女' },
470
+ { name: '王五', birth: '2024.11.01', sex: '女' },
471
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
472
+ { name: '王七', birth: '2024.01.01', sex: '男' },
473
+ ],
474
+ }
475
+ }
476
+ }
477
+ <script>
478
+ <style lang="scss">
479
+ .my-table {
480
+
481
+ /deep/ .my-table-1 {
482
+ .ste-table-content {
483
+ border-left: none;
484
+
485
+ .ste-table-header,
486
+ .ste-table-body .ste-table-row {
487
+ .ste-table-cell:nth-last-child(1) {
488
+ border-right: none;
489
+ }
490
+ }
491
+ }
492
+ }
493
+
494
+ /deep/ .my-table-2 {
495
+ .ste-table-content {
496
+ border: 2rpx solid #ebebeb;
497
+ }
498
+ .ste-table-header,
499
+ .ste-table-body .ste-table-row {
500
+ .ste-table-cell {
501
+ border: none;
502
+ }
503
+ }
504
+ }
505
+
506
+ /deep/ .my-table-3 {
507
+ .ste-table-header {
508
+ .ste-table-cell {
509
+ border: none;
510
+ }
511
+ }
512
+ .ste-table-body .ste-table-row {
513
+ .ste-table-cell {
514
+ border-top: 2rpx solid #ebebeb;
515
+ border-bottom: none;
516
+ }
517
+ }
518
+ }
519
+
520
+ /deep/ .my-table-4 {
521
+ .ste-table-header {
522
+ .ste-table-cell {
523
+ border: none;
524
+ border-right: 2rpx solid #ebebeb;
525
+ }
526
+ }
527
+ .ste-table-body .ste-table-row {
528
+ .ste-table-cell {
529
+ border: none;
530
+ border-right: 2rpx solid #ebebeb;
531
+
532
+ &:nth-last-child(1) {
533
+ border-right: none;
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+ </style>
540
+ ```
541
+
542
+ #### 自定义行或单元格样式
543
+ ```html
544
+ <ste-table
545
+ :data="rows"
546
+ :header-row-class-name="headerRowClassName"
547
+ :header-row-style="headerRowStyle"
548
+ :header-cell-class-name="headerCellClassName"
549
+ :header-cell-style="headerCellStyle"
550
+ :row-class-name="rowClassName"
551
+ :row-style="rowStyle"
552
+ :cell-style="cellStyle"
553
+ :cell-class-name="cellClassName"
554
+ >
555
+ <template v-slot="{ row }">
556
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
557
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
558
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
559
+ </template>
560
+ </ste-table>
561
+ <script>
562
+ export default {
563
+ data() {
564
+ return {
565
+ rows: [
566
+ { name: '张三', birth: '2023.12.31', sex: '男' },
567
+ { name: '李四', birth: '2024.01.01', sex: '女' },
568
+ { name: '王五', birth: '2024.11.01', sex: '女' },
569
+ { name: '赵六', birth: '2024.11.01', sex: '女' },
570
+ { name: '王七', birth: '2024.01.01', sex: '男' },
571
+ ],
572
+ }
573
+ },
574
+ methods: {
575
+ headerRowClassName() {
576
+ return 'header-row';
577
+ },
578
+ headerRowStyle(e) {
579
+ return { fontSize: '36rpx' };
580
+ },
581
+ headerCellClassName({ column, columnIndex }) {
582
+ return 'header-row-cell';
583
+ },
584
+ headerCellStyle() {
585
+ return { color: 'pink' };
586
+ },
587
+ rowClassName({ row, rowIndex }) {
588
+ if (rowIndex % 2 == 0) {
589
+ return 'nice-row';
590
+ } else {
591
+ return 'bad-row';
592
+ }
593
+ },
594
+ rowStyle({ row, rowIndex }) {
595
+ if (rowIndex % 2 == 0) {
596
+ return { color: 'green' };
597
+ } else {
598
+ return { color: 'red' };
599
+ }
600
+ },
601
+ cellClassName({ column, columnIndex, row, rowIndex }) {
602
+ if (columnIndex === 1 && rowIndex % 2 == 0) {
603
+ return 'custom-cell';
604
+ }
605
+ },
606
+ cellStyle({ column, columnIndex, row, rowIndex }) {
607
+ if (columnIndex === 1) {
608
+ return { color: 'blue' };
609
+ }
610
+ }
611
+ }
612
+ }
613
+ </script>
614
+
615
+ ```
616
+
617
+ #### 高亮行
618
+ `highlight-current-row`为`true`点击某一行时会高亮显示
619
+ `hightlight-selection-row`为`true`时,列类型为`checkbox`时,勾选后会高亮
620
+ ```html
621
+ <ste-table :data="rows" highlight-current-row highlight-selection-row>
622
+ <template v-slot="{ row }">
623
+ <ste-table-column
624
+ label="选择"
625
+ type="checkbox"
626
+ align="center"
627
+ customKey="checkbox"
628
+ ></ste-table-column>
629
+ <ste-table-column label="姓名" prop="name"></ste-table-column>
630
+ <ste-table-column label="生日" prop="birth"></ste-table-column>
631
+ <ste-table-column label="性别" prop="sex"></ste-table-column>
632
+ </template>
633
+ </ste-table>
634
+
635
+ ```
636
+
637
+ #### 配置选择项图标色
638
+ 需要指定属性`selectionIconColor`,数据结构如下
639
+ ```js
640
+ {
641
+ main: '#3491FA', // 主色,选中时的颜色
642
+ unSelected: '#BBBBBB', // 未选中的线框颜色
643
+ disabled: '#E6E6E6', // 禁用时背景色
644
+ readonly: 'rgba(52, 145, 250, 0.4)' // 只读时背景色
645
+ }
646
+ ```
647
+
648
+ #### 合并单元格
649
+ 在需要合并行时,需要该列的数据类型为数组且只能为字符串数组
650
+ ```html
651
+ <ste-table :data="rows4" border>
652
+ <template v-slot="{ row }">
653
+ <ste-table-column label="评价项目" prop="project"></ste-table-column>
654
+ <ste-table-column label="评价标准" prop="desc"></ste-table-column>
655
+ <ste-table-column label="分值" prop="score" width="150"></ste-table-column>
656
+ <ste-table-column label="得分" prop="sum" width="150"></ste-table-column>
657
+ </template>
658
+ </ste-table>
659
+ export default {
660
+ data() {
661
+ return {
662
+ rows4: [
663
+ {
664
+ project: '入店时的寒暄语',
665
+ desc: [
666
+ '打招呼的声音很小,听不到,没有看着顾客一方等。',
667
+ '店员看着顾客一方,可以听到响亮且有朝气的问候声。',
668
+ '「感觉普通」店员看着顾客一方有问候,但是声音不响亮无朝气。但是声音不响亮无朝气但是声音不响亮无朝气',
669
+ ],
670
+ score: [5, 11, 1],
671
+ sum: 0,
672
+ },
673
+ {
674
+ project: '收银机前的引导',
675
+ desc: [
676
+ '・POS收银机前排队等待的顾客≦3人(不含正在结账的顾客)。',
677
+ '其他店员没有注意到有3位以上的顾客在排队,或收银的店员不向',
678
+ ],
679
+ score: [5, 1],
680
+ sum: 0,
681
+ },
682
+ ]
683
+ }
684
+ }
685
+ }
686
+ ```
687
+
688
+ #### 单元格文字超出时气泡显示内容
689
+ 文字超长不需要完全展示时可通过此配置省略显示,通过长按显示气泡内容
690
+ ```html
691
+ <ste-table :data="rows5" isPopover>
692
+ <template v-slot="{ row }">
693
+ <ste-table-column label="文字1" prop="t1"></ste-table-column>
694
+ <ste-table-column label="文字2" prop="t2"></ste-table-column>
695
+ <ste-table-column label="文字3" prop="t3"></ste-table-column>
696
+ </template>
697
+ </ste-table>
698
+ export default {
699
+ data() {
700
+ return {
701
+ rows5: [
702
+ { t1: '张三', t2: '我是张三我是张三我是张三我是张三', t3: '男男男男男男男男男' },
703
+ { t1: '李四', t2: '你是李四你是李四你是李四你是李四你是李四', t3: '女' },
704
+ { t1: '王五王五王五', t2: '王五描述', t3: '女' },
705
+ { t1: '赵六赵六赵六赵六', t2: '赵六', t3: '女' },
706
+ { t1: '王七', t2: '他是王七他是王七他是王七他是王七他是王七', t3: '女女女女女女女' },
707
+ ]
708
+ }
709
+ }
710
+ }
711
+
712
+ ```
713
+
714
+ ---$
715
+ ### API
716
+ #### Table Props
717
+
718
+ | 属性名 | 说明 | 类型 | 默认值 | 可选值 | 支持版本 |
719
+ | ----- | ----- | ----- | ----- | ----- | ----- |
720
+ | `data` | 表格数据 | `Array` | - | - | - |
721
+ | `fixed` | 表头是否定位为fixed | `Boolean` | `false` | - | - |
722
+ | `offsetTop` | 定位fixed时top的距离 | `Number/String` | - | - | - |
723
+ | `border` | 是否带有纵向边框 | `Boolean` | `false` | - | - |
724
+ | `stripe` | 是否斑马纹 | `Boolean` | `true` | - | - |
725
+ | `emptyText` | 空数据时显示的文本内容,也可以通过 slot="empty" 设置 | `String` | `暂无数据` | - | - |
726
+ | `showSummary` | 是否在表尾显示合计行 | `Boolean` | `false` | - | - |
727
+ | `sumText` | 合计行第一列的文本 | `String` | `合计` | - |
728
+ | `summaryMethod` | 自定义的合计计算方法 | `Function({ columns, data })` | `null` | - | - |
729
+ | `selectable` | 仅对 type=checkbox 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选 | `Function(row, index)` | `null` | - | - |
730
+ | `readable` | 仅对 type=checkbox 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否只读 | `Function(row, index)` | `null` | - | - |
731
+ | `formatter` | 格式化方法,需要配合`TableColumn`中的`customKey`属性 | `Function(row, key)` | `null` | - | `v1.17.3` |
732
+ | `height` | 表格高度,设置该值可以让表格体开启滚动 | `Number/String` | - | - | `v1.18.9` |
733
+ | `header` | 格式化表头内容的方法,同formatter属性,需要定义customKey属性 | `Function(column, tableData)` | - | - | `v1.20.2` |
734
+ | `headerRowClassName` | 表头行的 className 的回调方法,也可以使用字符串为所有表头行设置一个固定的 className | `Function()/String` | - | - | `v1.23.5` |
735
+ | `headerRowStyle` | 表头行的 style 的回调方法,也可以使用一个固定的 Object 为所有表头行设置一样的 Style | `Function()/Object` | - | - | `v1.23.5` |
736
+ | `headerCellClassName` | 表头单元格的 className 的回调方法,也可以使用字符串为所有表头单元格设置一个固定的 className | `Function({ column, columnIndex })/String` | - | - | `v1.23.5` |
737
+ | `headerCellStyle` | 表头单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style | `Function({ column, columnIndex })/Object` | - | - | `v1.23.5` |
738
+ | `rowClassName` | 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className | `Function({ row, rowIndex })/String` | - | - | `v1.23.5` |
739
+ | `rowStyle` | 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style | `Function({ row, rowIndex })/Object` | - | - | `v1.23.5` |
740
+ | `cellClassName` | 单元格的 className 的回调方法,也可以使用字符串为所有表头单元格设置一个固定的 className | `Function({ column, columnIndex, row, rowIndex })/String` | - | - | `v1.23.9` |
741
+ | `cellStyle` | 单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style | `Function({ column, columnIndex, row, rowIndex })/Object` | - | - | `v1.23.9` |
742
+ | `highlightCurrentRow` | 是否要高亮当前行 | `Boolean` | `false` | - | `v1.23.5` |
743
+ | `highlightSelectionRow` | 是否要高亮复选框选中行(仅针对开启 checkbox 有效) | `Boolean` | `false` | - | `v1.23.5` |
744
+ | `showHeader` | 是否显示表头 | `Boolean` | `true` | - | `v1.23.5` |
745
+ | `maxHeight` | 表格最大高度 | `Number/String` | - | - | `v1.23.5` |
746
+ | `selectionIconColor` | 配置选择项图标色 | `Object` | - | - | `v1.23.9` |
747
+ | `isPopover` | 单元格超长时是否气泡显示 | `Boolean` | `false` | - | `v1.34.1` |
748
+
749
+ #### Table Events
750
+ |事件名 |说明 |事件参数 |支持版本 |
751
+ | --- | --- | --- | --- |
752
+ | `select` | 当用户手动勾选数据行的 Checkbox 时触发的事件 | `selection`:当前已选中的数据<br/>`row`:当前行的数据 | - |
753
+ | `selectAll` | 当用户手动勾选全选 Checkbox 时触发的事件 | `selection`:当前已选中的数据 | - |
754
+ | `cellClick` | 当某个单元格被点击时会触发该事件 | `row`:当前行的数据<br/>`column`:当前列的数据<br/>`event`:Event对象 | - |
755
+ | `rowClick` | 当某一行被点击时会触发该事件 | `row`:当前行的数据<br/>`event`:Event对象 | - |
756
+ | `headerClick` | 当某一列的表头被点击时会触发该事件 | `column`:当前列的数据<br/>`event`:Event对象 | - |
757
+ | `scrollToLower` | 表格体滚动到底事件 | - | `v1.18.9` |
758
+
759
+ #### Table Method
760
+ > `toggleRowSelection`方法的`isTriggerSelectEvent`参数在`v1.22.2`版本后才支持
761
+
762
+ |方法名 |说明 |方法参数 |支持版本 |
763
+ | --- | --- | --- | --- |
764
+ | `clearSelection` | 用于多选表格,清空用户的选择 | - | - |
765
+ | `toggleRowSelection` | 用于多选表格,切换某一行的选中状态 | `row`:需要选中行的数据<br/>`isTriggerSelectEvent`: 是否会触发表格的`select`事件 | - |
766
+ | `toggleAllSelection` | 用于多选表格,切换所有行的选中状态 | - | - |
767
+ | `getSelection` | 获取当前表格的选中状态的数据 | - | `v1.22.1` |
768
+
769
+
770
+
771
+ #### TableColumn Props
772
+
773
+ | 属性名 | 说明 | 类型 | 默认值 | 可选值 | 支持版本 |
774
+ | ----- | ----- | ----- | ----- | ----- | ----- |
775
+ | `type` | 对应列的类型 | `String` | - | `checkbox`:显示多选框<br/>`radio`:显示单选框<br/>`index`:显示该行的索引(从 1 开始计算 | - |
776
+ | `label` | 显示的标题 | `String` | - | - | - |
777
+ | `prop` | 对应列内容的字段名 | `String` | - | - | - |
778
+ | `width` | 对应列的宽度 | `String` | - | - | - |
779
+ | `minWidth` | 对应列的最小宽度 | `String` | - | - | - |
780
+ | `align` | 对齐方式 | `String` | `left`| - | - |
781
+ | `headerAlign` | 表头对齐方式,若不设置该项,则使用表格的对齐方式 | `String` | `left`| `left`:左对齐<br/>`center`:居中对齐<br/>`right`:右对齐 | - |
782
+ | `customKey` | 自定义唯一key值 | `String` | - | - | `v1.17.3` |
783
+
784
+ ---$
785
+ {{fuyuwei}}