@ebiz/designer-components 0.0.18 → 0.0.19

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 (99) hide show
  1. package/package.json +3 -2
  2. package/src/apiService/mockDataService.js +116 -0
  3. package/src/apiService/simpleDataService.js +186 -80
  4. package/src/components/Button.vue +72 -22
  5. package/src/components/EbizAvatar.vue +116 -0
  6. package/src/components/EbizCheckbox.vue +94 -0
  7. package/src/components/EbizCheckboxGroup.vue +70 -0
  8. package/src/components/EbizDetailBlock.vue +82 -0
  9. package/src/components/EbizDialog.vue +244 -56
  10. package/src/components/EbizEmployeeInfo.vue +139 -0
  11. package/src/components/EbizFileUpload.vue +202 -0
  12. package/src/components/EbizPageHeader.vue +96 -0
  13. package/src/components/EbizPagination.vue +163 -0
  14. package/src/components/EbizRadio.vue +87 -0
  15. package/src/components/EbizRadioGroup.vue +84 -0
  16. package/src/components/EbizRemoteSelect.vue +118 -40
  17. package/src/components/EbizSpace.vue +101 -0
  18. package/src/components/EbizStatistic.vue +150 -0
  19. package/src/components/EbizSwiper.vue +114 -0
  20. package/src/components/EbizSwiperItem.vue +14 -0
  21. package/src/components/EbizSwitch.vue +86 -0
  22. package/src/components/EbizTabHeader.vue +145 -0
  23. package/src/components/EbizTabPanel.vue +23 -0
  24. package/src/components/EbizTable.vue +466 -0
  25. package/src/components/EbizTableColumn.vue +117 -0
  26. package/src/components/EbizTableSort.vue +181 -0
  27. package/src/components/EbizTabs.vue +133 -91
  28. package/src/components/EbizTimePicker.vue +144 -0
  29. package/src/components/EbizTitle.vue +3 -10
  30. package/src/components/EbizTree.vue +153 -0
  31. package/src/components/EbizTreeSelector.vue +423 -0
  32. package/src/components/Home.vue +8 -0
  33. package/src/components/TdesignAlert.vue +116 -0
  34. package/src/components/TdesignButton.vue +130 -0
  35. package/src/components/TdesignCalendar/index.vue +146 -0
  36. package/src/components/TdesignCard.vue +196 -0
  37. package/src/components/TdesignCol.vue +102 -0
  38. package/src/components/TdesignCollapse.vue +143 -0
  39. package/src/components/TdesignCollapsePanel.vue +80 -0
  40. package/src/components/TdesignDatePicker.vue +125 -0
  41. package/src/components/TdesignDialog.vue +226 -0
  42. package/src/components/TdesignForm.vue +134 -0
  43. package/src/components/TdesignFormItem.vue +106 -0
  44. package/src/components/TdesignGrid.vue +56 -0
  45. package/src/components/TdesignIcon.vue +68 -0
  46. package/src/components/TdesignImage.vue +163 -0
  47. package/src/components/TdesignImageViewer.vue +201 -0
  48. package/src/components/TdesignInput.vue +243 -0
  49. package/src/components/TdesignSelect.vue +445 -0
  50. package/src/components/TdesignTag.vue +118 -0
  51. package/src/components/TdesignTextarea.vue +143 -0
  52. package/src/components/TdesignTimeline.vue +58 -0
  53. package/src/components/TdesignTimelineItem.vue +72 -0
  54. package/src/components/TdesignUpload.vue +757 -0
  55. package/src/components/TdesignWatermark.vue +108 -0
  56. package/src/index.js +130 -0
  57. package/src/main.js +20 -4
  58. package/src/router/index.js +244 -5
  59. package/src/views/Button.vue +7 -3
  60. package/src/views/CheckboxDemo.vue +105 -0
  61. package/src/views/DialogDemo.vue +126 -0
  62. package/src/views/EbizAvatar.vue +224 -0
  63. package/src/views/EbizDetailBlockDemo.vue +31 -0
  64. package/src/views/EbizEmployeeInfo.vue +250 -0
  65. package/src/views/EbizRadioDemo.vue +152 -0
  66. package/src/views/EbizSpace.vue +186 -0
  67. package/src/views/EbizSwiper.vue +158 -0
  68. package/src/views/GridDemo.vue +239 -0
  69. package/src/views/Home.vue +63 -2
  70. package/src/views/PageHeaderDemo.vue +105 -0
  71. package/src/views/PaginationDemo.vue +97 -0
  72. package/src/views/RemoteSelect.vue +336 -5
  73. package/src/views/StatisticDemo.vue +191 -0
  74. package/src/views/SwitchDemo.vue +80 -0
  75. package/src/views/TableDemo.vue +335 -0
  76. package/src/views/TableSortDemo.vue +144 -0
  77. package/src/views/TableView.vue +69 -0
  78. package/src/views/TabsDemo.vue +283 -0
  79. package/src/views/TagDemo.vue +102 -0
  80. package/src/views/TdesignAlert.vue +99 -0
  81. package/src/views/TdesignButton.vue +191 -0
  82. package/src/views/TdesignCalendar.vue +95 -0
  83. package/src/views/TdesignCard.vue +297 -0
  84. package/src/views/TdesignCollapse.vue +294 -0
  85. package/src/views/TdesignDatePicker.vue +188 -0
  86. package/src/views/TdesignForm.vue +249 -0
  87. package/src/views/TdesignIcon.vue +204 -0
  88. package/src/views/TdesignImage.vue +216 -0
  89. package/src/views/TdesignImageViewer.vue +199 -0
  90. package/src/views/TdesignInput.vue +253 -0
  91. package/src/views/TdesignSelect.vue +474 -0
  92. package/src/views/TdesignSwiper.vue +158 -0
  93. package/src/views/TextareaDemo.vue +94 -0
  94. package/src/views/TimePickerDemo.vue +147 -0
  95. package/src/views/TimelineDemo.vue +161 -0
  96. package/src/views/TreeDemo.vue +255 -0
  97. package/src/views/TreeSelectorDemo.vue +246 -0
  98. package/src/views/UploadDemo.vue +122 -0
  99. package/src/views/WatermarkDemo.vue +86 -0
@@ -0,0 +1,188 @@
1
+ <template>
2
+ <div class="tdesign-datepicker-demo">
3
+ <h2>TDesign 日期选择器示例</h2>
4
+
5
+ <div class="section">
6
+ <h3>基础日期选择器</h3>
7
+ <div class="demo-row">
8
+ <ebiz-tdesign-date-picker v-model="baseDate" placeholder="请选择日期" />
9
+ <div class="result">选择的日期: {{ baseDate || '未选择' }}</div>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="section">
14
+ <h3>不同选择器模式</h3>
15
+ <div class="demo-row">
16
+ <ebiz-tdesign-date-picker v-model="modeDate1" mode="date" placeholder="日期选择" />
17
+ <ebiz-tdesign-date-picker v-model="modeDate2" mode="month" placeholder="月份选择" />
18
+ <ebiz-tdesign-date-picker v-model="modeDate3" mode="year" placeholder="年份选择" />
19
+ <ebiz-tdesign-date-picker v-model="modeDate4" mode="week" placeholder="周选择" />
20
+ <ebiz-tdesign-date-picker v-model="modeDate5" mode="quarter" placeholder="季度选择" />
21
+ </div>
22
+ </div>
23
+
24
+ <div class="section">
25
+ <h3>不同尺寸</h3>
26
+ <div class="demo-row">
27
+ <ebiz-tdesign-date-picker v-model="sizeDate1" size="small" placeholder="小尺寸" />
28
+ <ebiz-tdesign-date-picker v-model="sizeDate2" size="medium" placeholder="中等尺寸" />
29
+ <ebiz-tdesign-date-picker v-model="sizeDate3" size="large" placeholder="大尺寸" />
30
+ </div>
31
+ </div>
32
+
33
+ <div class="section">
34
+ <h3>日期格式</h3>
35
+ <div class="demo-row">
36
+ <ebiz-tdesign-date-picker v-model="formatDate1" format="YYYY/MM/DD" placeholder="YYYY/MM/DD" />
37
+ <ebiz-tdesign-date-picker v-model="formatDate2" format="YYYY年MM月DD日" placeholder="YYYY年MM月DD日" />
38
+ <ebiz-tdesign-date-picker v-model="formatDate3" format="MM/DD/YYYY" placeholder="MM/DD/YYYY" />
39
+ </div>
40
+ </div>
41
+
42
+ <div class="section">
43
+ <h3>带时间选择</h3>
44
+ <div class="demo-row">
45
+ <ebiz-tdesign-date-picker
46
+ v-model="timeDate"
47
+ enableTimePicker
48
+ format="YYYY-MM-DD HH:mm:ss"
49
+ placeholder="选择日期和时间"
50
+ />
51
+ <div class="result">选择的日期和时间: {{ timeDate || '未选择' }}</div>
52
+ </div>
53
+ </div>
54
+
55
+ <div class="section">
56
+ <h3>快捷选项</h3>
57
+ <div class="demo-row">
58
+ <ebiz-tdesign-date-picker
59
+ v-model="presetDate"
60
+ placeholder="带预设的日期选择"
61
+ :presets="presetOptions"
62
+ />
63
+ <div class="result">选择的日期: {{ presetDate || '未选择' }}</div>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="section">
68
+ <h3>不同状态</h3>
69
+ <div class="demo-row">
70
+ <ebiz-tdesign-date-picker v-model="statusDate1" status="default" placeholder="默认状态" />
71
+ <ebiz-tdesign-date-picker v-model="statusDate2" status="success" placeholder="成功状态" />
72
+ <ebiz-tdesign-date-picker v-model="statusDate3" status="warning" placeholder="警告状态" />
73
+ <ebiz-tdesign-date-picker v-model="statusDate4" status="error" placeholder="错误状态" />
74
+ </div>
75
+ </div>
76
+
77
+ <div class="section">
78
+ <h3>允许直接输入</h3>
79
+ <div class="demo-row">
80
+ <ebiz-tdesign-date-picker
81
+ v-model="inputDate"
82
+ allowInput
83
+ placeholder="可直接输入日期"
84
+ />
85
+ <div class="result">输入的日期: {{ inputDate || '未输入' }}</div>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ </template>
90
+
91
+ <script>
92
+ import { EbizTdesignDatePicker } from '../index.js';
93
+
94
+ export default {
95
+ name: 'TdesignDatePickerDemo',
96
+ components: {
97
+ EbizTdesignDatePicker
98
+ },
99
+ data() {
100
+ return {
101
+ baseDate: '',
102
+ modeDate1: '',
103
+ modeDate2: '',
104
+ modeDate3: '',
105
+ modeDate4: '',
106
+ modeDate5: '',
107
+ sizeDate1: '',
108
+ sizeDate2: '',
109
+ sizeDate3: '',
110
+ formatDate1: '',
111
+ formatDate2: '',
112
+ formatDate3: '',
113
+ timeDate: '',
114
+ presetDate: '',
115
+ statusDate1: '',
116
+ statusDate2: '',
117
+ statusDate3: '',
118
+ statusDate4: '',
119
+ inputDate: '',
120
+ presetOptions: {
121
+ '最近一周': () => {
122
+ const end = new Date();
123
+ const start = new Date();
124
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
125
+ return start;
126
+ },
127
+ '最近一个月': () => {
128
+ const end = new Date();
129
+ const start = new Date();
130
+ start.setMonth(start.getMonth() - 1);
131
+ return start;
132
+ },
133
+ '最近三个月': () => {
134
+ const end = new Date();
135
+ const start = new Date();
136
+ start.setMonth(start.getMonth() - 3);
137
+ return start;
138
+ },
139
+ '今天': () => new Date(),
140
+ '昨天': () => {
141
+ const date = new Date();
142
+ date.setTime(date.getTime() - 3600 * 1000 * 24);
143
+ return date;
144
+ }
145
+ }
146
+ };
147
+ }
148
+ };
149
+ </script>
150
+
151
+ <style scoped>
152
+ .tdesign-datepicker-demo {
153
+ padding: 20px;
154
+ max-width: 1200px;
155
+ margin: 0 auto;
156
+ }
157
+
158
+ .section {
159
+ margin-bottom: 30px;
160
+ border-bottom: 1px solid #eee;
161
+ padding-bottom: 20px;
162
+ }
163
+
164
+ h2 {
165
+ margin-bottom: 20px;
166
+ font-size: 24px;
167
+ color: #0052d9;
168
+ }
169
+
170
+ h3 {
171
+ margin-bottom: 12px;
172
+ font-size: 18px;
173
+ color: #333;
174
+ }
175
+
176
+ .demo-row {
177
+ display: flex;
178
+ flex-wrap: wrap;
179
+ gap: 16px;
180
+ margin-bottom: 16px;
181
+ align-items: center;
182
+ }
183
+
184
+ .result {
185
+ margin-left: 10px;
186
+ color: #666;
187
+ }
188
+ </style>
@@ -0,0 +1,249 @@
1
+ <template>
2
+ <div class="tdesign-form-demo">
3
+ <h2>TDesign 表单示例</h2>
4
+
5
+ <div class="section">
6
+ <h3>基础表单</h3>
7
+ <ebiz-tdesign-form :data="baseFormData" :rules="baseFormRules" @submit="handleSubmit">
8
+ <ebiz-tdesign-form-item label="用户名" name="username">
9
+ <ebiz-tdesign-input v-model="baseFormData.username" placeholder="请输入用户名" />
10
+ </ebiz-tdesign-form-item>
11
+
12
+ <ebiz-tdesign-form-item label="密码" name="password">
13
+ <ebiz-tdesign-input v-model="baseFormData.password" type="password" placeholder="请输入密码" />
14
+ </ebiz-tdesign-form-item>
15
+
16
+ <ebiz-tdesign-form-item>
17
+ <ebiz-tdesign-button theme="primary" type="submit" content="提交" />
18
+ <ebiz-tdesign-button style="margin-left: 10px;" type="reset" content="重置" />
19
+ </ebiz-tdesign-form-item>
20
+ </ebiz-tdesign-form>
21
+ </div>
22
+
23
+ <div class="section">
24
+ <h3>不同标签对齐方式</h3>
25
+ <div class="form-wrapper">
26
+ <div class="form-item">
27
+ <h4>左对齐</h4>
28
+ <ebiz-tdesign-form :data="alignFormData" label-align="left">
29
+ <ebiz-tdesign-form-item label="用户名" name="username">
30
+ <ebiz-tdesign-input v-model="alignFormData.username" placeholder="请输入用户名" />
31
+ </ebiz-tdesign-form-item>
32
+
33
+ <ebiz-tdesign-form-item label="电子邮箱" name="email">
34
+ <ebiz-tdesign-input v-model="alignFormData.email" placeholder="请输入电子邮箱" />
35
+ </ebiz-tdesign-form-item>
36
+ </ebiz-tdesign-form>
37
+ </div>
38
+
39
+ <div class="form-item">
40
+ <h4>右对齐</h4>
41
+ <ebiz-tdesign-form :data="alignFormData" label-align="right">
42
+ <ebiz-tdesign-form-item label="用户名" name="username">
43
+ <ebiz-tdesign-input v-model="alignFormData.username" placeholder="请输入用户名" />
44
+ </ebiz-tdesign-form-item>
45
+
46
+ <ebiz-tdesign-form-item label="电子邮箱" name="email">
47
+ <ebiz-tdesign-input v-model="alignFormData.email" placeholder="请输入电子邮箱" />
48
+ </ebiz-tdesign-form-item>
49
+ </ebiz-tdesign-form>
50
+ </div>
51
+
52
+ <div class="form-item">
53
+ <h4>顶部对齐</h4>
54
+ <ebiz-tdesign-form :data="alignFormData" label-align="top">
55
+ <ebiz-tdesign-form-item label="用户名" name="username">
56
+ <ebiz-tdesign-input v-model="alignFormData.username" placeholder="请输入用户名" />
57
+ </ebiz-tdesign-form-item>
58
+
59
+ <ebiz-tdesign-form-item label="电子邮箱" name="email">
60
+ <ebiz-tdesign-input v-model="alignFormData.email" placeholder="请输入电子邮箱" />
61
+ </ebiz-tdesign-form-item>
62
+ </ebiz-tdesign-form>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="section">
68
+ <h3>不同布局类型</h3>
69
+ <div class="form-wrapper">
70
+ <div class="form-item">
71
+ <h4>垂直布局</h4>
72
+ <ebiz-tdesign-form :data="layoutFormData" layout="vertical">
73
+ <ebiz-tdesign-form-item label="姓名" name="name">
74
+ <ebiz-tdesign-input v-model="layoutFormData.name" placeholder="请输入姓名" />
75
+ </ebiz-tdesign-form-item>
76
+
77
+ <ebiz-tdesign-form-item label="电话" name="phone">
78
+ <ebiz-tdesign-input v-model="layoutFormData.phone" placeholder="请输入电话" />
79
+ </ebiz-tdesign-form-item>
80
+ </ebiz-tdesign-form>
81
+ </div>
82
+
83
+ <div class="form-item">
84
+ <h4>行内布局</h4>
85
+ <ebiz-tdesign-form :data="layoutFormData" layout="inline">
86
+ <ebiz-tdesign-form-item label="姓名" name="name">
87
+ <ebiz-tdesign-input v-model="layoutFormData.name" placeholder="请输入姓名" />
88
+ </ebiz-tdesign-form-item>
89
+
90
+ <ebiz-tdesign-form-item label="电话" name="phone">
91
+ <ebiz-tdesign-input v-model="layoutFormData.phone" placeholder="请输入电话" />
92
+ </ebiz-tdesign-form-item>
93
+
94
+ <ebiz-tdesign-form-item>
95
+ <ebiz-tdesign-button theme="primary" content="搜索" />
96
+ </ebiz-tdesign-form-item>
97
+ </ebiz-tdesign-form>
98
+ </div>
99
+ </div>
100
+ </div>
101
+
102
+ <div class="section">
103
+ <h3>表单校验</h3>
104
+ <ebiz-tdesign-form
105
+ :data="validateFormData"
106
+ :rules="validateFormRules"
107
+ show-error-message
108
+ status-icon
109
+ @validate="handleValidate"
110
+ @submit="handleSubmit"
111
+ >
112
+ <ebiz-tdesign-form-item label="用户名" name="username" help="请输入3-20个字符">
113
+ <ebiz-tdesign-input v-model="validateFormData.username" placeholder="请输入用户名" />
114
+ </ebiz-tdesign-form-item>
115
+
116
+ <ebiz-tdesign-form-item label="电子邮箱" name="email">
117
+ <ebiz-tdesign-input v-model="validateFormData.email" placeholder="请输入电子邮箱" />
118
+ </ebiz-tdesign-form-item>
119
+
120
+ <ebiz-tdesign-form-item label="年龄" name="age">
121
+ <ebiz-tdesign-input v-model="validateFormData.age" type="number" placeholder="请输入年龄" />
122
+ </ebiz-tdesign-form-item>
123
+
124
+ <ebiz-tdesign-form-item>
125
+ <ebiz-tdesign-button theme="primary" type="submit" content="提交" />
126
+ <ebiz-tdesign-button style="margin-left: 10px;" type="reset" content="重置" />
127
+ </ebiz-tdesign-form-item>
128
+ </ebiz-tdesign-form>
129
+ </div>
130
+ </div>
131
+ </template>
132
+
133
+ <script>
134
+ import { EbizTdesignForm, EbizTdesignFormItem, EbizTdesignInput, EbizTdesignButton } from '../index.js';
135
+
136
+ export default {
137
+ name: 'TdesignFormDemo',
138
+ components: {
139
+ EbizTdesignForm,
140
+ EbizTdesignFormItem,
141
+ EbizTdesignInput,
142
+ EbizTdesignButton
143
+ },
144
+ data() {
145
+ return {
146
+ // 基础表单数据
147
+ baseFormData: {
148
+ username: '',
149
+ password: ''
150
+ },
151
+ // 基础表单校验规则
152
+ baseFormRules: {
153
+ username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
154
+ password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
155
+ },
156
+
157
+ // 对齐方式表单数据
158
+ alignFormData: {
159
+ username: '',
160
+ email: ''
161
+ },
162
+
163
+ // 布局类型表单数据
164
+ layoutFormData: {
165
+ name: '',
166
+ phone: ''
167
+ },
168
+
169
+ // 表单校验数据
170
+ validateFormData: {
171
+ username: '',
172
+ email: '',
173
+ age: ''
174
+ },
175
+ // 表单校验规则
176
+ validateFormRules: {
177
+ username: [
178
+ { required: true, message: '请输入用户名', trigger: 'blur' },
179
+ { min: 3, max: 20, message: '用户名长度应该在3-20个字符之间', trigger: 'blur' }
180
+ ],
181
+ email: [
182
+ { required: true, message: '请输入电子邮箱', trigger: 'blur' },
183
+ { type: 'email', message: '请输入正确的电子邮箱格式', trigger: 'blur' }
184
+ ],
185
+ age: [
186
+ { required: true, message: '请输入年龄', trigger: 'blur' },
187
+ { type: 'number', message: '年龄必须为数字', trigger: 'blur' },
188
+ { validator: (val) => val >= 18, message: '年龄必须大于等于18岁', trigger: 'blur' }
189
+ ]
190
+ }
191
+ };
192
+ },
193
+ methods: {
194
+ handleSubmit(e) {
195
+ console.log('表单提交', e);
196
+ alert('表单提交成功!');
197
+ },
198
+ handleValidate(params) {
199
+ console.log('表单校验结果', params);
200
+ }
201
+ }
202
+ };
203
+ </script>
204
+
205
+ <style scoped>
206
+ .tdesign-form-demo {
207
+ padding: 20px;
208
+ max-width: 1200px;
209
+ margin: 0 auto;
210
+ }
211
+
212
+ .section {
213
+ margin-bottom: 30px;
214
+ border-bottom: 1px solid #eee;
215
+ padding-bottom: 20px;
216
+ }
217
+
218
+ h2 {
219
+ margin-bottom: 20px;
220
+ font-size: 24px;
221
+ color: #0052d9;
222
+ }
223
+
224
+ h3 {
225
+ margin-bottom: 12px;
226
+ font-size: 18px;
227
+ color: #333;
228
+ }
229
+
230
+ h4 {
231
+ margin-bottom: 8px;
232
+ font-size: 16px;
233
+ color: #666;
234
+ }
235
+
236
+ .form-wrapper {
237
+ display: flex;
238
+ flex-wrap: wrap;
239
+ gap: 20px;
240
+ }
241
+
242
+ .form-item {
243
+ flex: 1;
244
+ min-width: 300px;
245
+ padding: 15px;
246
+ background-color: #f9f9f9;
247
+ border-radius: 4px;
248
+ }
249
+ </style>
@@ -0,0 +1,204 @@
1
+ <template>
2
+ <div class="tdesign-icon-demo">
3
+ <h2>TDesign 图标示例</h2>
4
+
5
+ <div class="section">
6
+ <h3>基础图标</h3>
7
+ <div class="icon-row">
8
+ <div class="icon-item">
9
+ <ebiz-tdesign-icon name="add" />
10
+ <div class="icon-name">add</div>
11
+ </div>
12
+ <div class="icon-item">
13
+ <ebiz-tdesign-icon name="check" />
14
+ <div class="icon-name">check</div>
15
+ </div>
16
+ <div class="icon-item">
17
+ <ebiz-tdesign-icon name="close" />
18
+ <div class="icon-name">close</div>
19
+ </div>
20
+ <div class="icon-item">
21
+ <ebiz-tdesign-icon name="delete" />
22
+ <div class="icon-name">delete</div>
23
+ </div>
24
+ <div class="icon-item">
25
+ <ebiz-tdesign-icon name="help-circle" />
26
+ <div class="icon-name">help-circle</div>
27
+ </div>
28
+ <div class="icon-item">
29
+ <ebiz-tdesign-icon name="info-circle" />
30
+ <div class="icon-name">info-circle</div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="section">
36
+ <h3>图标尺寸</h3>
37
+ <div class="icon-row">
38
+ <div class="icon-item">
39
+ <ebiz-tdesign-icon name="add" size="small" />
40
+ <div class="icon-name">small</div>
41
+ </div>
42
+ <div class="icon-item">
43
+ <ebiz-tdesign-icon name="add" size="medium" />
44
+ <div class="icon-name">medium</div>
45
+ </div>
46
+ <div class="icon-item">
47
+ <ebiz-tdesign-icon name="add" size="large" />
48
+ <div class="icon-name">large</div>
49
+ </div>
50
+ <div class="icon-item">
51
+ <ebiz-tdesign-icon name="add" size="24px" />
52
+ <div class="icon-name">24px</div>
53
+ </div>
54
+ <div class="icon-item">
55
+ <ebiz-tdesign-icon name="add" size="2em" />
56
+ <div class="icon-name">2em</div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <div class="section">
62
+ <h3>图标颜色</h3>
63
+ <div class="icon-row">
64
+ <div class="icon-item">
65
+ <ebiz-tdesign-icon name="heart-filled" color="#ff0000" />
66
+ <div class="icon-name">红色</div>
67
+ </div>
68
+ <div class="icon-item">
69
+ <ebiz-tdesign-icon name="heart-filled" color="#0052d9" />
70
+ <div class="icon-name">蓝色</div>
71
+ </div>
72
+ <div class="icon-item">
73
+ <ebiz-tdesign-icon name="heart-filled" color="#00a870" />
74
+ <div class="icon-name">绿色</div>
75
+ </div>
76
+ <div class="icon-item">
77
+ <ebiz-tdesign-icon name="heart-filled" color="#ffaa00" />
78
+ <div class="icon-name">橙色</div>
79
+ </div>
80
+ <div class="icon-item">
81
+ <ebiz-tdesign-icon name="heart-filled" color="#9c27b0" />
82
+ <div class="icon-name">紫色</div>
83
+ </div>
84
+ </div>
85
+ </div>
86
+
87
+ <div class="section">
88
+ <h3>常用图标</h3>
89
+ <div class="icon-row">
90
+ <div class="icon-item" v-for="iconName in commonIcons" :key="iconName">
91
+ <ebiz-tdesign-icon :name="iconName" />
92
+ <div class="icon-name">{{ iconName }}</div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+
97
+ <div class="section">
98
+ <h3>点击事件</h3>
99
+ <div class="icon-row">
100
+ <div class="icon-item">
101
+ <ebiz-tdesign-icon
102
+ name="thumb-up"
103
+ size="large"
104
+ color="#0052d9"
105
+ @click="handleIconClick"
106
+ />
107
+ <div class="icon-name">点击图标</div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </template>
113
+
114
+ <script>
115
+ import { EbizTdesignIcon } from '../index.js'
116
+
117
+ export default {
118
+ name: 'TdesignIconDemo',
119
+ components: {
120
+ EbizTdesignIcon
121
+ },
122
+ data() {
123
+ return {
124
+ commonIcons: [
125
+ 'user',
126
+ 'setting',
127
+ 'edit',
128
+ 'search',
129
+ 'mail',
130
+ 'calendar',
131
+ 'upload',
132
+ 'download',
133
+ 'chevron-down',
134
+ 'chevron-up',
135
+ 'chevron-left',
136
+ 'chevron-right'
137
+ ]
138
+ }
139
+ },
140
+ methods: {
141
+ handleIconClick(_e) {
142
+ alert('图标被点击了!')
143
+ }
144
+ }
145
+ }
146
+ </script>
147
+
148
+ <style scoped>
149
+ .tdesign-icon-demo {
150
+ padding: 20px;
151
+ max-width: 1200px;
152
+ margin: 0 auto;
153
+ }
154
+
155
+ .section {
156
+ margin-bottom: 30px;
157
+ border-bottom: 1px solid #eee;
158
+ padding-bottom: 20px;
159
+ }
160
+
161
+ h2 {
162
+ margin-bottom: 20px;
163
+ font-size: 24px;
164
+ color: #0052d9;
165
+ }
166
+
167
+ h3 {
168
+ margin-bottom: 12px;
169
+ font-size: 18px;
170
+ color: #333;
171
+ }
172
+
173
+ .icon-row {
174
+ display: flex;
175
+ flex-wrap: wrap;
176
+ gap: 20px;
177
+ margin-bottom: 16px;
178
+ }
179
+
180
+ .icon-item {
181
+ display: flex;
182
+ flex-direction: column;
183
+ align-items: center;
184
+ justify-content: center;
185
+ width: 100px;
186
+ height: 100px;
187
+ background-color: #f5f5f5;
188
+ border-radius: 8px;
189
+ cursor: pointer;
190
+ transition: all 0.3s;
191
+ }
192
+
193
+ .icon-item:hover {
194
+ background-color: #e8f3ff;
195
+ transform: translateY(-2px);
196
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
197
+ }
198
+
199
+ .icon-name {
200
+ margin-top: 8px;
201
+ font-size: 12px;
202
+ color: #666;
203
+ }
204
+ </style>