xt-element-ui 2.1.3 → 2.1.5

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.
@@ -1,111 +1,180 @@
1
- ## XtDatePicker 日期选择器组件
2
-
3
- 日期选择器组件用于选择日期范围,支持多种日期类型(年月日、年月、年、季度等)。
4
-
5
- ## 基本用法
6
-
7
- ::: demo 基本用法
8
- ```vue
9
- <template>
10
- <XtDatePicker v-model="dateRange" />
11
- </template>
12
-
13
- <script>
14
- export default {
15
- data() {
16
- return {
17
- dateRange: []
18
- }
19
- }
20
- }
21
- </script>
22
- ```
23
- :::
24
-
25
- ## 属性说明
26
-
27
- | 属性 | 类型 | 默认值 | 可选值 | 说明 |
28
- |------|------|--------|--------|------|
29
- | `value` / `v-model` | Array | - | - | 日期范围,格式为 `[startDate, endDate]` |
30
- | `dateType` | String | `date` | `date`、`datetime`、`month`、`year`、`quarter`、`week` | 日期类型 |
31
- | `separator` | String | `至` | - | 分隔符文本 |
32
- | `disabled` | Boolean | `false` | - | 是否禁用 |
33
- | `width` | Number | `280` | - | 组件宽度(px) |
34
-
35
- ## 示例
36
-
37
- ### 不同日期类型
38
-
39
- ::: demo 不同日期类型
40
- ```vue
41
- <template>
42
- <div style="display: flex; flex-direction: column; gap: 12px;">
43
- <XtDatePicker v-model="dateRange" dateType="date" />
44
- <XtDatePicker v-model="monthRange" dateType="month" />
45
- <XtDatePicker v-model="yearRange" dateType="year" />
46
- <XtDatePicker v-model="quarterRange" dateType="quarter" />
47
- </div>
48
- </template>
49
-
50
- <script>
51
- export default {
52
- data() {
53
- return {
54
- dateRange: [],
55
- monthRange: [],
56
- yearRange: [],
57
- quarterRange: []
58
- }
59
- }
60
- }
61
- </script>
62
- ```
63
- :::
64
-
65
- ### 自定义分隔符
66
-
67
- ::: demo 自定义分隔符
68
- ```vue
69
- <template>
70
- <XtDatePicker v-model="dateRange" separator="~" />
71
- </template>
72
-
73
- <script>
74
- export default {
75
- data() {
76
- return {
77
- dateRange: []
78
- }
79
- }
80
- }
81
- </script>
82
- ```
83
- :::
84
-
85
- ### 禁用状态
86
-
87
- ::: demo 禁用状态
88
- ```vue
89
- <template>
90
- <XtDatePicker v-model="dateRange" disabled />
91
- </template>
92
-
93
- <script>
94
- export default {
95
- data() {
96
- return {
97
- dateRange: []
98
- }
99
- }
100
- }
101
- </script>
102
- ```
103
- :::
104
-
105
- ## 事件
106
-
107
- | 事件名 | 说明 | 参数 |
108
- |--------|------|------|
109
- | `change` | 日期值改变时触发 | `[startDate, endDate]` |
110
- | `focus` | 输入框获得焦点时触发 | - |
111
- | `blur` | 输入框失去焦点时触发 | - |
1
+ ## XtDatePicker 日期选择器组件
2
+
3
+ 日期选择器组件用于选择日期范围或单个日期,支持多种日期类型(年月日、年月、年、季度等),并提供时间维度选择功能,满足统计分析场景。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtDatePicker v-model="dateRange" />
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ data() {
16
+ return {
17
+ dateRange: []
18
+ }
19
+ }
20
+ }
21
+ </script>
22
+ ```
23
+ :::
24
+
25
+ ## 属性说明
26
+
27
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
28
+ |------|------|--------|--------|------|
29
+ | `value` / `v-model` | Array / Date | - | - | 日期范围 `[startDate, endDate]` 或单个日期 |
30
+ | `dateType` | String | `date` | `date`、`datetime`、`month`、`year`、`quarter`、`week` | 日期类型 |
31
+ | `separator` | String | `至` | - | 分隔符文本 |
32
+ | `disabled` | Boolean | `false` | - | 是否禁用 |
33
+ | `width` | String | `100%` | - | 组件宽度 |
34
+ | `rangeMode` | Boolean | `true` | - | 是否为范围选择模式,false 时为单选 |
35
+ | `showDimension` | Boolean | `false` | - | 是否显示时间维度选择器 |
36
+ | `dimension` | String | `day` | `day`、`month`、`year`、`custom` | 当前时间维度 |
37
+
38
+ ## 事件
39
+
40
+ | 事件名 | 说明 | 参数 |
41
+ |--------|------|------|
42
+ | `change` | 日期值改变时触发 | `[startDate, endDate]` 或 `date` |
43
+ | `dimension-change` | 时间维度或值变化时触发 | `{ dimension, value }` |
44
+ | `focus` | 输入框获得焦点时触发 | - |
45
+ | `blur` | 输入框失去焦点时触发 | - |
46
+
47
+ ## 示例
48
+
49
+ ### 不同日期类型
50
+
51
+ ::: demo 不同日期类型
52
+ ```vue
53
+ <template>
54
+ <div style="display: flex; flex-direction: column; gap: 12px;">
55
+ <XtDatePicker v-model="dateRange" dateType="date" />
56
+ <XtDatePicker v-model="monthRange" dateType="month" />
57
+ <XtDatePicker v-model="yearRange" dateType="year" />
58
+ <XtDatePicker v-model="quarterRange" dateType="quarter" />
59
+ </div>
60
+ </template>
61
+
62
+ <script>
63
+ export default {
64
+ data() {
65
+ return {
66
+ dateRange: [],
67
+ monthRange: [],
68
+ yearRange: [],
69
+ quarterRange: []
70
+ }
71
+ }
72
+ }
73
+ </script>
74
+ ```
75
+ :::
76
+
77
+ ### 单选模式
78
+
79
+ ::: demo 单选模式
80
+ ```vue
81
+ <template>
82
+ <XtDatePicker v-model="singleDate" :range-mode="false" />
83
+ </template>
84
+
85
+ <script>
86
+ export default {
87
+ data() {
88
+ return {
89
+ singleDate: null
90
+ }
91
+ }
92
+ }
93
+ </script>
94
+ ```
95
+ :::
96
+
97
+ ### 时间维度选择(统计分析)
98
+
99
+ ::: demo 时间维度选择
100
+ ```vue
101
+ <template>
102
+ <XtDatePicker
103
+ v-model="dateRange"
104
+ :show-dimension="true"
105
+ :dimension="currentDimension"
106
+ @update:dimension="currentDimension = $event"
107
+ @dimension-change="handleDimensionChange"
108
+ />
109
+ </template>
110
+
111
+ <script>
112
+ export default {
113
+ data() {
114
+ return {
115
+ dateRange: [],
116
+ currentDimension: 'day'
117
+ }
118
+ },
119
+ methods: {
120
+ handleDimensionChange({ dimension, value }) {
121
+ console.log('维度:', dimension, '值:', value)
122
+ }
123
+ }
124
+ }
125
+ </script>
126
+ ```
127
+ :::
128
+
129
+ ### 自定义分隔符
130
+
131
+ ::: demo 自定义分隔符
132
+ ```vue
133
+ <template>
134
+ <XtDatePicker v-model="dateRange" separator="~" />
135
+ </template>
136
+
137
+ <script>
138
+ export default {
139
+ data() {
140
+ return {
141
+ dateRange: []
142
+ }
143
+ }
144
+ }
145
+ </script>
146
+ ```
147
+ :::
148
+
149
+ ### 禁用状态
150
+
151
+ ::: demo 禁用状态
152
+ ```vue
153
+ <template>
154
+ <XtDatePicker v-model="dateRange" disabled />
155
+ </template>
156
+
157
+ <script>
158
+ export default {
159
+ data() {
160
+ return {
161
+ dateRange: []
162
+ }
163
+ }
164
+ }
165
+ </script>
166
+ ```
167
+ :::
168
+
169
+ ## 时间维度说明
170
+
171
+ 当启用 `showDimension` 后,选择不同维度会有以下效果:
172
+
173
+ | 维度 | 日期类型 | 选择模式 | 范围限制 |
174
+ |------|----------|----------|----------|
175
+ | `day` | date | 范围选择 | 无限制 |
176
+ | `month` | month | 范围选择 | 结束日期必须与开始日期同月份 |
177
+ | `year` | year | 范围选择 | 结束日期必须与开始日期同年份 |
178
+ | `custom` | 保持原值 | 单选 | 用户自定义 |
179
+
180
+ 选择"月"维度后,结束日期会限制在开始日期所在月份内,方便统计分析时快速选择同一月内的日期范围。
@@ -42,7 +42,7 @@ Vue.component(XtStepPriceItem.name, XtStepPriceItem)
42
42
  ```
43
43
 
44
44
  ### 基本用法
45
-
45
+ ::: demo
46
46
  ```vue
47
47
  <template>
48
48
  <div style="width: 600px;">
@@ -72,6 +72,7 @@ export default {
72
72
  }
73
73
  </script>
74
74
  ```
75
+ :::
75
76
 
76
77
  ### 自定义字段名
77
78
 
@@ -121,7 +122,7 @@ export default {
121
122
  | `fieldKeys` | Object | `{ min: 'min', max: 'max', price: 'price' }` | 字段名映射,支持自定义字段名 |
122
123
  | `limit` | Number | `0` | 阶梯数量上限,<=0 表示不限制 |
123
124
  | `step` | Number | `10` | 阶梯增量,新增时自动填充下一级的 min 值 |
124
- | `disabled` | Boolean | `false` | 是否禁用所有操作 |
125
+ | `disabled` | Boolean | `false` | 是否禁用所有操作 |
125
126
  | `allowNegative` | Boolean | `false` | 是否允许输入负数价格和下限 |
126
127
  | `tip` | String | `'区间左闭右闭 [min, max],最后一级为 [min, +∞),保证连续且不重叠。'` | 底部提示文本 |
127
128
  | `defaultFirst` | Boolean | `true` | 空数组时是否自动生成默认阶梯 |
@@ -0,0 +1,272 @@
1
+ ## XtTransferTree 树形穿梭框组件
2
+
3
+ 树形穿梭框组件,支持树形结构数据的穿梭,提供多种穿梭模式满足不同业务场景。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtTransferTree
11
+ :data="treeData"
12
+ v-model="selectedIds"
13
+ :height="400"
14
+ />
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ data() {
20
+ return {
21
+ selectedIds: [],
22
+ treeData: [
23
+ {
24
+ id: '1',
25
+ label: '一级菜单',
26
+ children: [
27
+ {
28
+ id: '1-1',
29
+ label: '二级菜单1'
30
+ },
31
+ {
32
+ id: '1-2',
33
+ label: '二级菜单2'
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ id: '2',
39
+ label: '一级菜单2',
40
+ children: [
41
+ {
42
+ id: '2-1',
43
+ label: '二级菜单3'
44
+ }
45
+ ]
46
+ }
47
+ ]
48
+ }
49
+ }
50
+ }
51
+ </script>
52
+ ```
53
+ :::
54
+
55
+ ## 属性说明
56
+
57
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
58
+ |------|------|--------|--------|------|
59
+ | `value` / `v-model` | Array | `[]` | - | 已选择的节点 ID 数组 |
60
+ | `data` | Array | `[]` | - | 树形数据源 |
61
+ | `leftTitle` | String | `待选择` | - | 左侧面板标题 |
62
+ | `rightTitle` | String | `已选择` | - | 右侧面板标题 |
63
+ | `treeProps` | Object | `{ label, children, value }` | - | 树节点属性配置 |
64
+ | `defaultExpandAll` | Boolean | `true` | - | 是否默认展开所有节点 |
65
+ | `filterable` | Boolean | `false` | - | 是否支持搜索过滤 |
66
+ | `showCheckbox` | Boolean | `true` | - | 是否显示复选框 |
67
+ | `cascade` | Boolean | `true` | - | 是否级联选择 |
68
+ | `transferMode` | String | `single` | `single`, `multiple`, `parent-child` | 穿梭模式 |
69
+ | `buttonSize` | String | `small` | - | 按钮尺寸 |
70
+
71
+ ## 穿梭模式说明
72
+
73
+ | 模式 | 说明 |
74
+ |------|------|
75
+ | `single` | 单选模式,点击节点或勾选后只穿梭当前节点 |
76
+ | `multiple` | 多选模式,勾选多个节点后一次性穿梭 |
77
+ | `parent-child` | 父子模式,穿梭父节点时自动包含所有子节点 |
78
+
79
+ ## 事件
80
+
81
+ | 事件名 | 说明 | 参数 |
82
+ |--------|------|------|
83
+ | `change` | 数据变化时触发 | `{ value, addedKeys, removedKeys }` |
84
+
85
+ ## 示例
86
+
87
+ ### 父子级联穿梭
88
+
89
+ ::: demo 父子级联穿梭
90
+ ```vue
91
+ <template>
92
+ <XtTransferTree
93
+ :data="treeData"
94
+ v-model="selectedIds"
95
+ :height="400"
96
+ transfer-mode="parent-child"
97
+ @change="handleChange"
98
+ />
99
+ </template>
100
+
101
+ <script>
102
+ export default {
103
+ data() {
104
+ return {
105
+ selectedIds: [],
106
+ treeData: [
107
+ {
108
+ id: '1',
109
+ label: '部门A',
110
+ children: [
111
+ { id: '1-1', label: '员工1' },
112
+ { id: '1-2', label: '员工2' }
113
+ ]
114
+ },
115
+ {
116
+ id: '2',
117
+ label: '部门B',
118
+ children: [
119
+ { id: '2-1', label: '员工3' }
120
+ ]
121
+ }
122
+ ]
123
+ }
124
+ },
125
+ methods: {
126
+ handleChange({ value, addedKeys, removedKeys }) {
127
+ console.log('已选择:', value)
128
+ console.log('新增:', addedKeys)
129
+ console.log('移除:', removedKeys)
130
+ }
131
+ }
132
+ }
133
+ </script>
134
+ ```
135
+ :::
136
+
137
+ ### 支持搜索过滤
138
+
139
+ ::: demo 支持搜索过滤
140
+ ```vue
141
+ <template>
142
+ <XtTransferTree
143
+ :data="treeData"
144
+ v-model="selectedIds"
145
+ :height="400"
146
+ :filterable="true"
147
+ />
148
+ </template>
149
+
150
+ <script>
151
+ export default {
152
+ data() {
153
+ return {
154
+ selectedIds: [],
155
+ treeData: [
156
+ {
157
+ id: '1',
158
+ label: '水果',
159
+ children: [
160
+ { id: '1-1', label: '苹果' },
161
+ { id: '1-2', label: '香蕉' },
162
+ { id: '1-3', label: '橙子' }
163
+ ]
164
+ },
165
+ {
166
+ id: '2',
167
+ label: '蔬菜',
168
+ children: [
169
+ { id: '2-1', label: '西红柿' },
170
+ { id: '2-2', label: '黄瓜' }
171
+ ]
172
+ }
173
+ ]
174
+ }
175
+ }
176
+ }
177
+ </script>
178
+ ```
179
+ :::
180
+
181
+ ### 不级联选择
182
+
183
+ ::: demo 不级联选择
184
+ ```vue
185
+ <template>
186
+ <XtTransferTree
187
+ :data="treeData"
188
+ v-model="selectedIds"
189
+ :height="400"
190
+ :cascade="false"
191
+ />
192
+ </template>
193
+
194
+ <script>
195
+ export default {
196
+ data() {
197
+ return {
198
+ selectedIds: [],
199
+ treeData: [
200
+ {
201
+ id: '1',
202
+ label: '分类1',
203
+ children: [
204
+ { id: '1-1', label: '项目1' },
205
+ { id: '1-2', label: '项目2' }
206
+ ]
207
+ }
208
+ ]
209
+ }
210
+ }
211
+ }
212
+ </script>
213
+ ```
214
+ :::
215
+
216
+ ### 点击穿梭(无复选框)
217
+
218
+ ::: demo 点击穿梭
219
+ ```vue
220
+ <template>
221
+ <XtTransferTree
222
+ :data="treeData"
223
+ v-model="selectedIds"
224
+ :height="400"
225
+ :show-checkbox="false"
226
+ />
227
+ </template>
228
+
229
+ <script>
230
+ export default {
231
+ data() {
232
+ return {
233
+ selectedIds: [],
234
+ treeData: [
235
+ {
236
+ id: '1',
237
+ label: '选项1'
238
+ },
239
+ {
240
+ id: '2',
241
+ label: '选项2'
242
+ }
243
+ ]
244
+ }
245
+ }
246
+ }
247
+ </script>
248
+ ```
249
+ :::
250
+
251
+ ## 方法
252
+
253
+ | 方法名 | 说明 | 参数 |
254
+ |--------|------|------|
255
+ | `clearSelection` | 清空选择 | - |
256
+
257
+ ## 数据格式
258
+
259
+ ```javascript
260
+ [
261
+ {
262
+ id: 'node-id',
263
+ label: '节点名称',
264
+ children: [
265
+ {
266
+ id: 'child-id',
267
+ label: '子节点名称'
268
+ }
269
+ ]
270
+ }
271
+ ]
272
+ ```