xt-element-ui 2.2.1 → 2.2.2
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.
- package/docs/components/base/xt-date-picker.md +7 -26
- package/docs/components/base/xt-grid-box.md +34 -34
- package/docs/components/base/xt-tabs.md +51 -6
- package/docs/components/base/xt-text.md +20 -3
- package/lib/css/1.87a493be.css +1 -0
- package/lib/index.common.1.js +294 -0
- package/lib/index.common.2.js +141 -0
- package/lib/index.common.js +342 -492
- package/lib/index.css +1 -1
- package/lib/index.umd.1.js +294 -0
- package/lib/index.umd.2.js +141 -0
- package/lib/index.umd.js +342 -492
- package/lib/index.umd.min.1.js +1 -0
- package/lib/index.umd.min.2.js +1 -0
- package/lib/index.umd.min.js +1 -1
- package/lib/xt-date-picker/css/1.87a493be.css +1 -0
- package/lib/xt-date-picker/xt-date-picker.common.1.js +294 -0
- package/lib/xt-date-picker/xt-date-picker.common.2.js +141 -0
- package/lib/xt-date-picker/xt-date-picker.common.js +201 -332
- package/lib/xt-date-picker/xt-date-picker.css +1 -1
- package/lib/xt-date-picker/xt-date-picker.umd.1.js +294 -0
- package/lib/xt-date-picker/xt-date-picker.umd.2.js +141 -0
- package/lib/xt-date-picker/xt-date-picker.umd.js +201 -332
- package/lib/xt-date-picker/xt-date-picker.umd.min.1.js +1 -0
- package/lib/xt-date-picker/xt-date-picker.umd.min.2.js +1 -0
- package/lib/xt-date-picker/xt-date-picker.umd.min.js +1 -1
- package/lib/xt-tabs/xt-tabs.common.js +5 -27
- package/lib/xt-tabs/xt-tabs.css +1 -1
- package/lib/xt-tabs/xt-tabs.umd.js +5 -27
- package/lib/xt-tabs/xt-tabs.umd.min.js +1 -1
- package/lib/xt-text/xt-text.common.js +7 -4
- package/lib/xt-text/xt-text.umd.js +7 -4
- package/lib/xt-text/xt-text.umd.min.js +1 -1
- package/package.json +1 -1
- package/src/components/index.scss +3 -0
- package/src/components/xt-date-picker/component/Picker.vue +2 -46
- package/src/components/xt-date-picker/component/RangeDate.vue +4 -4
- package/src/components/xt-date-picker/index.js +1 -0
- package/src/components/xt-date-picker/index.vue +3 -23
- package/src/components/xt-date-picker/style/index.scss +64 -0
- package/src/components/xt-input/style/index.scss +1 -1
- package/src/components/xt-tabs/index.vue +3 -174
- package/src/components/xt-tabs/style/index.scss +131 -121
- package/src/components/xt-text/index.vue +5 -2
- package/src/styles/theme/index.scss +0 -1
- package/src/styles/theme/dark-variables.scss +0 -0
|
@@ -45,12 +45,12 @@ export default {
|
|
|
45
45
|
|
|
46
46
|
## 示例
|
|
47
47
|
|
|
48
|
-
###
|
|
48
|
+
### 范围选择
|
|
49
49
|
|
|
50
|
-
::: demo
|
|
50
|
+
::: demo 日期选择
|
|
51
51
|
```vue
|
|
52
52
|
<template>
|
|
53
|
-
<XtDatePicker v-model="dateRange" rangeMode="true" />
|
|
53
|
+
<XtDatePicker v-model="dateRange" :rangeMode="true" />
|
|
54
54
|
</template>
|
|
55
55
|
|
|
56
56
|
<script>
|
|
@@ -65,9 +65,9 @@ export default {
|
|
|
65
65
|
```
|
|
66
66
|
:::
|
|
67
67
|
|
|
68
|
-
###
|
|
68
|
+
### 月份选择
|
|
69
69
|
|
|
70
|
-
::: demo
|
|
70
|
+
::: demo 月份选择
|
|
71
71
|
```vue
|
|
72
72
|
<template>
|
|
73
73
|
<XtDatePicker v-model="monthRange" dateType="month" />
|
|
@@ -85,9 +85,9 @@ export default {
|
|
|
85
85
|
```
|
|
86
86
|
:::
|
|
87
87
|
|
|
88
|
-
###
|
|
88
|
+
### 年份选择
|
|
89
89
|
|
|
90
|
-
::: demo
|
|
90
|
+
::: demo 年份选择
|
|
91
91
|
```vue
|
|
92
92
|
<template>
|
|
93
93
|
<XtDatePicker v-model="yearRange" dateType="year" />
|
|
@@ -125,25 +125,6 @@ export default {
|
|
|
125
125
|
```
|
|
126
126
|
:::
|
|
127
127
|
|
|
128
|
-
### 单选模式
|
|
129
|
-
|
|
130
|
-
::: demo 单选模式
|
|
131
|
-
```vue
|
|
132
|
-
<template>
|
|
133
|
-
<XtDatePicker v-model="singleDate" :range-mode="false" />
|
|
134
|
-
</template>
|
|
135
|
-
|
|
136
|
-
<script>
|
|
137
|
-
export default {
|
|
138
|
-
data() {
|
|
139
|
-
return {
|
|
140
|
-
singleDate: null
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
</script>
|
|
145
|
-
```
|
|
146
|
-
:::
|
|
147
128
|
|
|
148
129
|
### 时间维度选择(统计分析)
|
|
149
130
|
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
```vue
|
|
7
7
|
<template>
|
|
8
8
|
<XtGridBox :columns="3" gap="16px">
|
|
9
|
-
<div style="padding: 16px; background: #
|
|
10
|
-
<div style="padding: 16px; background: #
|
|
11
|
-
<div style="padding: 16px; background: #
|
|
12
|
-
<div style="padding: 16px; background: #
|
|
13
|
-
<div style="padding: 16px; background: #
|
|
14
|
-
<div style="padding: 16px; background: #
|
|
9
|
+
<div style="padding: 16px; background: #1890ff; color: white; border-radius: 8px;">元素1</div>
|
|
10
|
+
<div style="padding: 16px; background: #52c41a; color: white; border-radius: 8px;">元素2</div>
|
|
11
|
+
<div style="padding: 16px; background: #faad14; color: white; border-radius: 8px;">元素3</div>
|
|
12
|
+
<div style="padding: 16px; background: #f56c6c; color: white; border-radius: 8px;">元素4</div>
|
|
13
|
+
<div style="padding: 16px; background: #9adbbe; color: white; border-radius: 8px;">元素5</div>
|
|
14
|
+
<div style="padding: 16px; background: #40ffef; color: white; border-radius: 8px;">元素6</div>
|
|
15
15
|
</XtGridBox>
|
|
16
16
|
</template>
|
|
17
17
|
```
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
```vue
|
|
57
57
|
<template>
|
|
58
58
|
<XtGridBox :columns="4" gap="12px">
|
|
59
|
-
<div v-for="i in 8" :key="i" style="padding: 12px; background: #
|
|
59
|
+
<div v-for="i in 8" :key="i" style="padding: 12px; background: #1890ff; border-radius: 4px; text-align: center;">{{ i }}</div>
|
|
60
60
|
</XtGridBox>
|
|
61
61
|
</template>
|
|
62
62
|
```
|
|
@@ -70,21 +70,21 @@
|
|
|
70
70
|
<div>
|
|
71
71
|
<!-- 数字方式:自动 repeat -->
|
|
72
72
|
<XtGridBox :columns="3" gap="8px" style="margin-bottom: 16px;">
|
|
73
|
-
<div v-for="i in 3" :key="i" style="padding: 12px; background: #
|
|
73
|
+
<div v-for="i in 3" :key="i" style="padding: 12px; background: #1890ff;">{{ i }}</div>
|
|
74
74
|
</XtGridBox>
|
|
75
75
|
|
|
76
76
|
<!-- 字符串方式 -->
|
|
77
77
|
<XtGridBox columns="200px 1fr 1fr" gap="8px" style="margin-bottom: 16px;">
|
|
78
|
-
<div style="padding: 12px; background: #
|
|
79
|
-
<div style="padding: 12px; background: #
|
|
80
|
-
<div style="padding: 12px; background: #
|
|
78
|
+
<div style="padding: 12px; background: #52c41a;">固定宽度</div>
|
|
79
|
+
<div style="padding: 12px; background: #faad14;">弹性1</div>
|
|
80
|
+
<div style="padding: 12px; background: #f5222d;">弹性2</div>
|
|
81
81
|
</XtGridBox>
|
|
82
82
|
|
|
83
83
|
<!-- 数组方式 -->
|
|
84
84
|
<XtGridBox :columns="['100px', '1fr', '2fr']" gap="8px">
|
|
85
|
-
<div style="padding: 12px; background: #
|
|
86
|
-
<div style="padding: 12px; background: #
|
|
87
|
-
<div style="padding: 12px; background: #
|
|
85
|
+
<div style="padding: 12px; background: #52c41a;">固定</div>
|
|
86
|
+
<div style="padding: 12px; background: #faad14;">1份</div>
|
|
87
|
+
<div style="padding: 12px; background: #f5222d;">2份</div>
|
|
88
88
|
</XtGridBox>
|
|
89
89
|
</div>
|
|
90
90
|
</template>
|
|
@@ -97,13 +97,13 @@
|
|
|
97
97
|
```vue
|
|
98
98
|
<template>
|
|
99
99
|
<XtGridBox :columns="4" gap="12px">
|
|
100
|
-
<XtGridItem :span="2" style="padding: 24px; background: #
|
|
100
|
+
<XtGridItem :span="2" style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">跨2列</XtGridItem>
|
|
101
101
|
<XtGridItem style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">普通</XtGridItem>
|
|
102
102
|
<XtGridItem style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">普通</XtGridItem>
|
|
103
103
|
<XtGridItem :rowSpan="2" style="padding: 48px 16px; background: #faad14; color: white; border-radius: 8px;">跨2行</XtGridItem>
|
|
104
|
-
<XtGridItem style="padding: 24px; background: #
|
|
105
|
-
<XtGridItem style="padding: 24px; background: #
|
|
106
|
-
<XtGridItem style="padding: 24px; background: #
|
|
104
|
+
<XtGridItem style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">普通</XtGridItem>
|
|
105
|
+
<XtGridItem style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">普通</XtGridItem>
|
|
106
|
+
<XtGridItem style="padding: 24px; background: #52c41a; color: white; border-radius: 8px;">普通</XtGridItem>
|
|
107
107
|
</XtGridBox>
|
|
108
108
|
</template>
|
|
109
109
|
```
|
|
@@ -139,16 +139,16 @@
|
|
|
139
139
|
<div>
|
|
140
140
|
<!-- 子项居中对齐 -->
|
|
141
141
|
<XtGridBox :columns="3" gap="8px" align="center" style="height: 120px; background: #f0f0f0; margin-bottom: 16px;">
|
|
142
|
-
<div style="padding: 8px 16px; background: white;">居中</div>
|
|
143
|
-
<div style="padding: 8px 16px; background: white;">居中</div>
|
|
144
|
-
<div style="padding: 8px 16px; background: white;">居中</div>
|
|
142
|
+
<div style="padding: 8px 16px; background: #1890ff; color: white;">居中</div>
|
|
143
|
+
<div style="padding: 8px 16px; background: #1890ff; color: white;">居中</div>
|
|
144
|
+
<div style="padding: 8px 16px; background: #1890ff; color: white;">居中</div>
|
|
145
145
|
</XtGridBox>
|
|
146
146
|
|
|
147
147
|
<!-- 内容两端对齐 -->
|
|
148
148
|
<XtGridBox :columns="3" gap="8px" justify="space-between" style="background: #f0f0f0;">
|
|
149
|
-
<div style="padding: 8px 16px;
|
|
150
|
-
<div style="padding: 8px 16px;
|
|
151
|
-
<div style="padding: 8px 16px;
|
|
149
|
+
<div style="padding: 8px 16px;background: #1890ff; color: white;">左</div>
|
|
150
|
+
<div style="padding: 8px 16px;background: #1890ff; color: white;">中</div>
|
|
151
|
+
<div style="padding: 8px 16px;background: #1890ff; color: white;">右</div>
|
|
152
152
|
</XtGridBox>
|
|
153
153
|
</div>
|
|
154
154
|
</template>
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
```vue
|
|
162
162
|
<template>
|
|
163
163
|
<XtGridBox :columns="3" rowGap="24px" colGap="8px">
|
|
164
|
-
<div v-for="i in 6" :key="i" style="padding: 12px; background: #
|
|
164
|
+
<div v-for="i in 6" :key="i" style="padding: 12px; background: #1890ff; text-align: center;">{{ i }}</div>
|
|
165
165
|
</XtGridBox>
|
|
166
166
|
</template>
|
|
167
167
|
```
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
```vue
|
|
174
174
|
<template>
|
|
175
175
|
<XtGridBox columns="repeat(auto-fill, minmax(150px, 1fr))" gap="12px">
|
|
176
|
-
<div v-for="i in 8" :key="i" style="padding: 16px; background: #
|
|
176
|
+
<div v-for="i in 8" :key="i" style="padding: 16px; background: #1890ff; text-align: center;">项目{{ i }}</div>
|
|
177
177
|
</XtGridBox>
|
|
178
178
|
</template>
|
|
179
179
|
```
|
|
@@ -186,22 +186,22 @@
|
|
|
186
186
|
<template>
|
|
187
187
|
<XtGridBox :columns="2" gap="16px">
|
|
188
188
|
<!-- 左侧 -->
|
|
189
|
-
<div style="padding: 16px; background: #
|
|
189
|
+
<div style="padding: 16px; background: #f5222d;">
|
|
190
190
|
<h4>左侧面板</h4>
|
|
191
191
|
<XtGridBox :columns="1" gap="8px">
|
|
192
|
-
<div style="padding: 8px; background:
|
|
193
|
-
<div style="padding: 8px; background:
|
|
192
|
+
<div style="padding: 8px; background: #1890ff;">子项1</div>
|
|
193
|
+
<div style="padding: 8px; background: #1890ff;">子项2</div>
|
|
194
194
|
</XtGridBox>
|
|
195
195
|
</div>
|
|
196
196
|
|
|
197
197
|
<!-- 右侧 -->
|
|
198
|
-
<div style="padding: 16px; background: #
|
|
198
|
+
<div style="padding: 16px; background: #faad14;">
|
|
199
199
|
<h4>右侧面板</h4>
|
|
200
200
|
<XtGridBox :columns="2" gap="8px">
|
|
201
|
-
<div style="padding: 8px; background:
|
|
202
|
-
<div style="padding: 8px; background:
|
|
203
|
-
<div style="padding: 8px; background:
|
|
204
|
-
<div style="padding: 8px; background:
|
|
201
|
+
<div style="padding: 8px; background: #1890ff;">A</div>
|
|
202
|
+
<div style="padding: 8px; background: #1890ff;">B</div>
|
|
203
|
+
<div style="padding: 8px; background: #1890ff;">C</div>
|
|
204
|
+
<div style="padding: 8px; background: #1890ff;">D</div>
|
|
205
205
|
</XtGridBox>
|
|
206
206
|
</div>
|
|
207
207
|
</XtGridBox>
|
|
@@ -61,7 +61,7 @@ export default {
|
|
|
61
61
|
```vue
|
|
62
62
|
<template>
|
|
63
63
|
<div style="display: flex; flex-direction: column; gap: 16px;">
|
|
64
|
-
<XtTabs v-model="activeName">
|
|
64
|
+
<XtTabs v-model="activeName" type="card">
|
|
65
65
|
<XtTabPane label="卡片式" name="first">卡片式标签页</XtTabPane>
|
|
66
66
|
<XtTabPane label="配置管理" name="second">配置管理内容</XtTabPane>
|
|
67
67
|
</XtTabs>
|
|
@@ -89,10 +89,15 @@ export default {
|
|
|
89
89
|
::: demo 标签位置
|
|
90
90
|
```vue
|
|
91
91
|
<template>
|
|
92
|
-
<XtTabs v-model="activeName" tab-position="
|
|
93
|
-
<XtTabPane
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
<XtTabs v-model="activeName" tab-position="top" closable addable @edit="handleTabsEdit">
|
|
93
|
+
<XtTabPane
|
|
94
|
+
:key="item.name"
|
|
95
|
+
v-for="(item, index) in editableTabs"
|
|
96
|
+
:label="item.title"
|
|
97
|
+
:name="item.name"
|
|
98
|
+
>
|
|
99
|
+
{{item.content}}
|
|
100
|
+
</XtTabPane>
|
|
96
101
|
</XtTabs>
|
|
97
102
|
</template>
|
|
98
103
|
|
|
@@ -100,7 +105,47 @@ export default {
|
|
|
100
105
|
export default {
|
|
101
106
|
data() {
|
|
102
107
|
return {
|
|
103
|
-
|
|
108
|
+
editableTabsValue: '2',
|
|
109
|
+
editableTabs: [{
|
|
110
|
+
title: 'Tab 1',
|
|
111
|
+
name: '1',
|
|
112
|
+
content: 'Tab 1 content'
|
|
113
|
+
}, {
|
|
114
|
+
title: 'Tab 2',
|
|
115
|
+
name: '2',
|
|
116
|
+
content: 'Tab 2 content'
|
|
117
|
+
}],
|
|
118
|
+
tabIndex: 2
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
methods: {
|
|
122
|
+
handleTabsEdit(targetName, action) {
|
|
123
|
+
if (action === 'add') {
|
|
124
|
+
let newTabName = ++this.tabIndex + '';
|
|
125
|
+
this.editableTabs.push({
|
|
126
|
+
title: 'New Tab',
|
|
127
|
+
name: newTabName,
|
|
128
|
+
content: 'New Tab content'
|
|
129
|
+
});
|
|
130
|
+
this.editableTabsValue = newTabName;
|
|
131
|
+
}
|
|
132
|
+
if (action === 'remove') {
|
|
133
|
+
let tabs = this.editableTabs;
|
|
134
|
+
let activeName = this.editableTabsValue;
|
|
135
|
+
if (activeName === targetName) {
|
|
136
|
+
tabs.forEach((tab, index) => {
|
|
137
|
+
if (tab.name === targetName) {
|
|
138
|
+
let nextTab = tabs[index + 1] || tabs[index - 1];
|
|
139
|
+
if (nextTab) {
|
|
140
|
+
activeName = nextTab.name;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
this.editableTabsValue = activeName;
|
|
147
|
+
this.editableTabs = tabs.filter(tab => tab.name !== targetName);
|
|
148
|
+
}
|
|
104
149
|
}
|
|
105
150
|
}
|
|
106
151
|
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
```vue
|
|
7
7
|
<template>
|
|
8
8
|
<XtText type="primary">主要文本</XtText>
|
|
9
|
-
<div style="width: 80px;"><XtText ellipsis>溢出隐藏文本溢出隐藏文本</XtText></div>
|
|
10
9
|
</template>
|
|
11
10
|
```
|
|
12
11
|
:::
|
|
@@ -17,8 +16,12 @@
|
|
|
17
16
|
| `type` | String | - | `primary`、`success`、`warning`、`danger` | 文本颜色类型 |
|
|
18
17
|
| `size` | String | base | `extra-large`、`large`、`medium`、`base`、`small`、`extra-small` | 字体大小 |
|
|
19
18
|
| `bold` | Boolean | false | - | 是否加粗 |
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
19
|
+
| `ellipsis` | Boolean | false | - | 是否显示省略号 |
|
|
20
|
+
| `ellipsisRows` | Number | 1 | 1至10 | 省略行数 |
|
|
21
|
+
| `showTooltip` | Boolean | true | - | 当文字溢出隐藏时,是否显示悬浮提示 |
|
|
22
|
+
| `tooltipPlacement` | String | `top` | - | 悬浮窗提示位置 |
|
|
23
|
+
| `format` | String | normal | 'normal', 'thousand', 'money' |- | 格式化模式 |
|
|
24
|
+
| `money` | Boolean | false | - | 是否启用金额格式化(使用format替代) |
|
|
22
25
|
| `value` | Number / String | - | - | 金额数值 |
|
|
23
26
|
| `currency` | String | CNY | `CNY`、`USD`、`EUR`、`JPY`、`GBP`、`AUD`、`CAD` | 货币类型 |
|
|
24
27
|
| `decimals` | Number | 2 | 0-10 | 小数位数 |
|
|
@@ -85,6 +88,20 @@
|
|
|
85
88
|
```
|
|
86
89
|
:::
|
|
87
90
|
|
|
91
|
+
|
|
92
|
+
### 溢出隐藏
|
|
93
|
+
::: demo 溢出隐藏
|
|
94
|
+
```vue
|
|
95
|
+
<template>
|
|
96
|
+
<div style="display: flex; flex-direction: column; gap: 8px;width: 80px;">
|
|
97
|
+
<XtText ellipsis>溢出隐藏文本溢出隐藏文本</XtText>
|
|
98
|
+
<XtText ellipsis :ellipsisRows="5">溢出隐藏文本显示5行,溢出隐藏文本显示5行,溢出隐藏文本显示5行,溢出隐藏文本显示5行,</XtText>
|
|
99
|
+
<XtText ellipsis :showTooltip="false">不显示浮窗提示信息</XtText>
|
|
100
|
+
</div>
|
|
101
|
+
</template>
|
|
102
|
+
```
|
|
103
|
+
:::
|
|
104
|
+
|
|
88
105
|
### 组合使用
|
|
89
106
|
|
|
90
107
|
::: demo 组合使用
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.range-picker[data-v-32b85e82]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%}.range-picker .el-date-editor[data-v-32b85e82]{flex:1;min-width:130px}.split[data-v-32b85e82]{flex-shrink:0;padding:0 4px}@media (max-width:360px){.range-picker[data-v-32b85e82]{flex-direction:column;align-items:stretch}.split[data-v-32b85e82]{text-align:center;margin:4px 0}}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
((typeof self !== 'undefined' ? self : this)["webpackJsonpindex"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpindex"] || []).push([[1,2],{
|
|
2
|
+
|
|
3
|
+
/***/ "0e3e":
|
|
4
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeDate_vue_vue_type_style_index_0_id_32b85e82_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("16dd");
|
|
8
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeDate_vue_vue_type_style_index_0_id_32b85e82_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RangeDate_vue_vue_type_style_index_0_id_32b85e82_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
|
|
9
|
+
/* unused harmony reexport * */
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/***/ }),
|
|
13
|
+
|
|
14
|
+
/***/ "16dd":
|
|
15
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
16
|
+
|
|
17
|
+
// extracted by mini-css-extract-plugin
|
|
18
|
+
|
|
19
|
+
/***/ }),
|
|
20
|
+
|
|
21
|
+
/***/ "1db3":
|
|
22
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
23
|
+
|
|
24
|
+
"use strict";
|
|
25
|
+
// ESM COMPAT FLAG
|
|
26
|
+
__webpack_require__.r(__webpack_exports__);
|
|
27
|
+
|
|
28
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b8cd9b04-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/component/RangeDate.vue?vue&type=template&id=32b85e82&scoped=true
|
|
29
|
+
var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"range-picker"},[_c('Picker',{attrs:{"type":_vm.type,"size":"small","placeholder":_vm.startPlaceholder,"disabled":_vm.disabled,"disabled-date":_vm.disabledStart},on:{"change":_vm.handleChange},model:{value:(_vm.startVal),callback:function ($$v) {_vm.startVal=$$v},expression:"startVal"}}),_c('span',{staticClass:"split"},[_vm._v(_vm._s(_vm.separator))]),_c('Picker',{attrs:{"type":_vm.type,"size":"small","placeholder":_vm.endPlaceholder,"disabled":_vm.disabled,"disabled-date":_vm.disabledEnd},on:{"change":_vm.handleChange},model:{value:(_vm.endVal),callback:function ($$v) {_vm.endVal=$$v},expression:"endVal"}})],1)
|
|
30
|
+
}
|
|
31
|
+
var staticRenderFns = []
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/RangeDate.vue?vue&type=template&id=32b85e82&scoped=true
|
|
35
|
+
|
|
36
|
+
// EXTERNAL MODULE: ./src/components/xt-date-picker/component/Picker.vue + 4 modules
|
|
37
|
+
var Picker = __webpack_require__("b0ea");
|
|
38
|
+
|
|
39
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/component/RangeDate.vue?vue&type=script&lang=js
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/* harmony default export */ var RangeDatevue_type_script_lang_js = ({
|
|
43
|
+
name: 'RangeDate',
|
|
44
|
+
components: { Picker: Picker["default"] },
|
|
45
|
+
props: {
|
|
46
|
+
// 父组件v-model绑定数组 [startStr, endStr]
|
|
47
|
+
value: {
|
|
48
|
+
type: Array,
|
|
49
|
+
default: () => [null, null]
|
|
50
|
+
},
|
|
51
|
+
type: {
|
|
52
|
+
type: String,
|
|
53
|
+
default: 'date'
|
|
54
|
+
},
|
|
55
|
+
separator: {
|
|
56
|
+
type: String,
|
|
57
|
+
default: '至'
|
|
58
|
+
},
|
|
59
|
+
disabled: { type: Boolean, default: false }
|
|
60
|
+
},
|
|
61
|
+
data() {
|
|
62
|
+
return {
|
|
63
|
+
startVal: '',
|
|
64
|
+
endVal: ''
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
watch: {
|
|
68
|
+
// 外部回填回显
|
|
69
|
+
value: {
|
|
70
|
+
handler(val) {
|
|
71
|
+
const [s, e] = val || []
|
|
72
|
+
this.startVal = s || ''
|
|
73
|
+
this.endVal = e || ''
|
|
74
|
+
},
|
|
75
|
+
immediate: true
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
computed: {
|
|
79
|
+
startDate() {
|
|
80
|
+
return this.startVal ? new Date(this.startVal) : null
|
|
81
|
+
},
|
|
82
|
+
endDate() {
|
|
83
|
+
return this.endVal ? new Date(this.endVal) : null
|
|
84
|
+
},
|
|
85
|
+
startPlaceholder() {
|
|
86
|
+
const map = {
|
|
87
|
+
date: '开始日期',
|
|
88
|
+
month: '开始月份',
|
|
89
|
+
year: '开始年份',
|
|
90
|
+
quarter: '开始季度',
|
|
91
|
+
week: '开始周'
|
|
92
|
+
}
|
|
93
|
+
return map[this.type] || '开始日期'
|
|
94
|
+
},
|
|
95
|
+
endPlaceholder() {
|
|
96
|
+
const map = {
|
|
97
|
+
date: '结束日期',
|
|
98
|
+
month: '结束月份',
|
|
99
|
+
year: '结束年份',
|
|
100
|
+
quarter: '结束季度',
|
|
101
|
+
week: '结束周'
|
|
102
|
+
}
|
|
103
|
+
return map[this.type] || '结束日期'
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
methods: {
|
|
107
|
+
// 禁用开始:不能晚于已选结束
|
|
108
|
+
disabledStart(time) {
|
|
109
|
+
if (!this.endDate) return false
|
|
110
|
+
return time.getTime() > this.endDate.getTime()
|
|
111
|
+
},
|
|
112
|
+
// 禁用结束:不能早于已选开始
|
|
113
|
+
disabledEnd(time) {
|
|
114
|
+
if (!this.startDate) return false
|
|
115
|
+
return time.getTime() < this.startDate.getTime()
|
|
116
|
+
},
|
|
117
|
+
// 任意日期变更同步抛出数组给父组件
|
|
118
|
+
handleChange() {
|
|
119
|
+
this.$emit('input', [this.startVal, this.endVal])
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/RangeDate.vue?vue&type=script&lang=js
|
|
125
|
+
/* harmony default export */ var component_RangeDatevue_type_script_lang_js = (RangeDatevue_type_script_lang_js);
|
|
126
|
+
// EXTERNAL MODULE: ./src/components/xt-date-picker/component/RangeDate.vue?vue&type=style&index=0&id=32b85e82&prod&scoped=true&lang=css
|
|
127
|
+
var RangeDatevue_type_style_index_0_id_32b85e82_prod_scoped_true_lang_css = __webpack_require__("0e3e");
|
|
128
|
+
|
|
129
|
+
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
130
|
+
var componentNormalizer = __webpack_require__("2877");
|
|
131
|
+
|
|
132
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/RangeDate.vue
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
/* normalize component */
|
|
140
|
+
|
|
141
|
+
var component = Object(componentNormalizer["a" /* default */])(
|
|
142
|
+
component_RangeDatevue_type_script_lang_js,
|
|
143
|
+
render,
|
|
144
|
+
staticRenderFns,
|
|
145
|
+
false,
|
|
146
|
+
null,
|
|
147
|
+
"32b85e82",
|
|
148
|
+
null
|
|
149
|
+
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
/* harmony default export */ var RangeDate = __webpack_exports__["default"] = (component.exports);
|
|
153
|
+
|
|
154
|
+
/***/ }),
|
|
155
|
+
|
|
156
|
+
/***/ "b0ea":
|
|
157
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
158
|
+
|
|
159
|
+
"use strict";
|
|
160
|
+
// ESM COMPAT FLAG
|
|
161
|
+
__webpack_require__.r(__webpack_exports__);
|
|
162
|
+
|
|
163
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b8cd9b04-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/component/Picker.vue?vue&type=template&id=4a866a03
|
|
164
|
+
var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"date-picker"},[(_vm.type !== 'quarter')?_c('el-date-picker',_vm._g(_vm._b({attrs:{"type":_vm.pickerType,"value-format":_vm.valueFormat,"disabled":_vm.disabled,"placeholder":_vm.placeholder,"popper-append-to-body":"","popper-class":"base-date-popper"},model:{value:(_vm.innerValue),callback:function ($$v) {_vm.innerValue=$$v},expression:"innerValue"}},'el-date-picker',_vm.$attrs,false),_vm.$listeners)):_c('el-popover',{attrs:{"trigger":"manual","placement":"bottom-start","width":"240"},model:{value:(_vm.quarterPopVisible),callback:function ($$v) {_vm.quarterPopVisible=$$v},expression:"quarterPopVisible"}},[_c('div',{staticClass:"quarter-panel"},[_c('div',{staticClass:"quarter-header"},[_c('el-button',{attrs:{"icon":"el-icon-d-arrow-left"},on:{"click":function($event){_vm.year--}}}),_c('span',[_vm._v(_vm._s(_vm.year)+" 年")]),_c('el-button',{attrs:{"icon":"el-icon-d-arrow-right"},on:{"click":function($event){_vm.year++}}})],1),_c('div',{staticClass:"quarter-list"},_vm._l((4),function(q){return _c('div',{key:q,staticClass:"quarter-item",class:{ active: _vm.quarterNum === q },on:{"click":function($event){return _vm.selectQuarter(q)}}},[_vm._v(" Q"+_vm._s(q)+" ")])}),0)]),_c('el-input',{ref:"quarterInput",attrs:{"slot":"reference","size":"small","readonly":"","placeholder":_vm.placeholder,"disabled":_vm.disabled,"clearable":""},on:{"clear":_vm.handleClearQuarter},slot:"reference",model:{value:(_vm.quarterShowText),callback:function ($$v) {_vm.quarterShowText=$$v},expression:"quarterShowText"}},[_c('i',{staticClass:"el-icon-date",attrs:{"slot":"affix"},slot:"affix"})])],1)],1)
|
|
165
|
+
}
|
|
166
|
+
var staticRenderFns = []
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/Picker.vue?vue&type=template&id=4a866a03
|
|
170
|
+
|
|
171
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/component/Picker.vue?vue&type=script&lang=js
|
|
172
|
+
|
|
173
|
+
/* harmony default export */ var Pickervue_type_script_lang_js = ({
|
|
174
|
+
name: 'BaseDatePicker',
|
|
175
|
+
inheritAttrs: false,
|
|
176
|
+
props: {
|
|
177
|
+
value: {
|
|
178
|
+
type: [String, null],
|
|
179
|
+
default: null
|
|
180
|
+
},
|
|
181
|
+
type: {
|
|
182
|
+
type: String,
|
|
183
|
+
default: 'date',
|
|
184
|
+
validator: val => ['date', 'month', 'year', 'quarter', 'week'].includes(val)
|
|
185
|
+
},
|
|
186
|
+
disabled: {
|
|
187
|
+
type: Boolean,
|
|
188
|
+
default: false
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
data() {
|
|
192
|
+
return {
|
|
193
|
+
quarterPopVisible: false,
|
|
194
|
+
year: new Date().getFullYear(),
|
|
195
|
+
quarterNum: null
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
computed: {
|
|
199
|
+
pickerType() {
|
|
200
|
+
return this.type === 'quarter' ? null : this.type
|
|
201
|
+
},
|
|
202
|
+
placeholder() {
|
|
203
|
+
const map = {
|
|
204
|
+
date: '请选择日期',
|
|
205
|
+
month: '请选择月份',
|
|
206
|
+
year: '请选择年份',
|
|
207
|
+
quarter: '请选择季度',
|
|
208
|
+
week: '请选择周'
|
|
209
|
+
}
|
|
210
|
+
return map[this.type] || '请选择日期'
|
|
211
|
+
},
|
|
212
|
+
valueFormat() {
|
|
213
|
+
const map = {
|
|
214
|
+
date: 'yyyy-MM-dd',
|
|
215
|
+
month: 'yyyy-MM',
|
|
216
|
+
year: 'yyyy',
|
|
217
|
+
quarter: 'yyyy-Qq',
|
|
218
|
+
week: 'yyyy-WW'
|
|
219
|
+
}
|
|
220
|
+
return map[this.type] || 'yyyy-MM-dd'
|
|
221
|
+
},
|
|
222
|
+
innerValue: {
|
|
223
|
+
get() { return this.value },
|
|
224
|
+
set(val) { this.$emit('input', val) }
|
|
225
|
+
},
|
|
226
|
+
quarterShowText() {
|
|
227
|
+
if (!this.value) return ''
|
|
228
|
+
return `${this.year}-Q${this.quarterNum}`
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
watch: {
|
|
232
|
+
value: {
|
|
233
|
+
handler(val) {
|
|
234
|
+
if (this.type !== 'quarter' || !val) {
|
|
235
|
+
this.quarterNum = null
|
|
236
|
+
return
|
|
237
|
+
}
|
|
238
|
+
const [y, q] = val.split('-Q')
|
|
239
|
+
this.year = Number(y)
|
|
240
|
+
this.quarterNum = Number(q)
|
|
241
|
+
},
|
|
242
|
+
immediate: true
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
methods: {
|
|
246
|
+
selectQuarter(q) {
|
|
247
|
+
this.quarterNum = q
|
|
248
|
+
const val = `${this.year}-Q${q}`
|
|
249
|
+
this.$emit('input', val)
|
|
250
|
+
this.quarterPopVisible = false
|
|
251
|
+
},
|
|
252
|
+
handleClearQuarter() {
|
|
253
|
+
this.quarterNum = null
|
|
254
|
+
this.$emit('input', null)
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
mounted() {
|
|
258
|
+
if (this.type === 'quarter' && this.$refs.quarterInput) {
|
|
259
|
+
this.$refs.quarterInput.$el.addEventListener('click', () => {
|
|
260
|
+
if (!this.disabled) this.quarterPopVisible = true
|
|
261
|
+
})
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/Picker.vue?vue&type=script&lang=js
|
|
267
|
+
/* harmony default export */ var component_Pickervue_type_script_lang_js = (Pickervue_type_script_lang_js);
|
|
268
|
+
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
269
|
+
var componentNormalizer = __webpack_require__("2877");
|
|
270
|
+
|
|
271
|
+
// CONCATENATED MODULE: ./src/components/xt-date-picker/component/Picker.vue
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
/* normalize component */
|
|
278
|
+
|
|
279
|
+
var component = Object(componentNormalizer["a" /* default */])(
|
|
280
|
+
component_Pickervue_type_script_lang_js,
|
|
281
|
+
render,
|
|
282
|
+
staticRenderFns,
|
|
283
|
+
false,
|
|
284
|
+
null,
|
|
285
|
+
null,
|
|
286
|
+
null
|
|
287
|
+
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
/* harmony default export */ var Picker = __webpack_exports__["default"] = (component.exports);
|
|
291
|
+
|
|
292
|
+
/***/ })
|
|
293
|
+
|
|
294
|
+
}]);
|