vue2-client 1.12.95 → 1.12.97

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.12.95",
3
+ "version": "1.12.97",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -128,9 +128,9 @@ export default {
128
128
  },
129
129
  props: {
130
130
  // 接收配置
131
- config: {
132
- type: Object,
133
- default: () => ({})
131
+ configName: {
132
+ type: String,
133
+ default: ''
134
134
  }
135
135
  },
136
136
  data () {
@@ -144,11 +144,10 @@ export default {
144
144
  }
145
145
  },
146
146
  created () {
147
- this.getData(this.config)
147
+ this.getData(this.configName)
148
148
  },
149
149
  computed: {
150
150
  // 使用计算属性访问合并后的配置
151
- // eslint-disable-next-line vue/no-dupe-keys
152
151
  config () {
153
152
  return this.mergedConfig
154
153
  },
@@ -164,6 +163,7 @@ export default {
164
163
  methods: {
165
164
  // 获取配置
166
165
  getData (config) {
166
+ console.warn(config)
167
167
  getConfigByName(config, 'af-his', res => {
168
168
  // 深度合并配置
169
169
  this.mergedConfig = this.mergeConfig(defaultConfig, res)
@@ -0,0 +1,284 @@
1
+ # XCalendar
2
+
3
+ 基于 Ant Design Vue Calendar 的可配置日历组件,支持自定义标题、导航、样式等功能。
4
+
5
+ ## 何时使用
6
+
7
+ 当需要在界面中展示一个功能丰富的日历,并且需要:
8
+ - 自定义日历的标题和导航
9
+ - 添加自定义操作按钮
10
+ - 自定义样式和布局
11
+ - 响应日期选择和月份切换事件
12
+
13
+ ## 引用方式
14
+
15
+ ```javascript
16
+ import XCalendar from '@vue2-client/base-client/components/common/XCalendar/XCalendar'
17
+
18
+ export default {
19
+ components: {
20
+ XCalendar
21
+ }
22
+ }
23
+ ```
24
+
25
+ ## 代码演示
26
+
27
+ ```html
28
+ <x-calendar
29
+ :configName="calendarConfigName"
30
+ @select="handleSelect"
31
+ @monthChange="handleMonthChange"
32
+ @action="handleAction">
33
+ </x-calendar>
34
+ ```
35
+
36
+ ## API
37
+
38
+ ### Props
39
+
40
+ | 参数 | 说明 | 类型 | 默认值 |
41
+ |------|------|------|------|
42
+ | configName | 配置名称,用于从后端获取配置 | String | '' |
43
+
44
+ ### 事件
45
+
46
+ | 事件名 | 说明 | 回调参数 |
47
+ |------|------|------|
48
+ | select | 选择日期时触发 | function(date: Moment) |
49
+ | back-to-today | 点击"返回当天"按钮时触发 | function(date: Moment) |
50
+ | action | 点击操作按钮时触发 | function(date: Moment) |
51
+ | add | 点击新增按钮时触发 | function(date: Moment) |
52
+ | month-change | 切换月份时触发 | function(date: Moment) |
53
+
54
+ ## 配置说明
55
+
56
+ 组件通过 `configName` 从后端获取配置,配置格式如下:
57
+
58
+ ### 完整配置结构
59
+
60
+ ```json
61
+ {
62
+ "header": {
63
+ "show": true,
64
+ "title": "我的日程",
65
+ "showIcon": true,
66
+ "showBackToToday": true,
67
+ "backToTodayText": "返回当天",
68
+ "showMonth": true,
69
+ "showDay": true,
70
+ "monthClickable": false,
71
+ "dayClickable": false
72
+ },
73
+ "subHeader": {
74
+ "show": true,
75
+ "showNavigation": true,
76
+ "prevMonthText": "←",
77
+ "nextMonthText": "→"
78
+ },
79
+ "calendar": {
80
+ "fullscreen": false,
81
+ "locale": "zh-cn"
82
+ },
83
+ "actions": [
84
+ {
85
+ "text": "+ 新增日程",
86
+ "type": "add",
87
+ "handler": "handleAdd"
88
+ }
89
+ ],
90
+ "styles": {
91
+ "wrapper": {},
92
+ "header": {},
93
+ "titleInput": {},
94
+ "subHeader": {},
95
+ "currentDate": {},
96
+ "year": {},
97
+ "actionItem": {},
98
+ "calendarContent": {}
99
+ },
100
+ "events": {
101
+ "select": "select",
102
+ "backToToday": "back-to-today",
103
+ "action": "action",
104
+ "add": "add",
105
+ "monthChange": "month-change"
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### 配置项详细说明
111
+
112
+ #### 1. header 配置
113
+
114
+ | 参数 | 说明 | 类型 | 默认值 |
115
+ |------|------|------|------|
116
+ | show | 是否显示头部 | boolean | true |
117
+ | title | 标题文本 | string | '我的日程' |
118
+ | showIcon | 是否显示图标 | boolean | true |
119
+ | showBackToToday | 是否显示返回今天按钮 | boolean | true |
120
+ | backToTodayText | 返回今天按钮文本 | string | '返回当天' |
121
+ | showMonth | 是否显示月份 | boolean | true |
122
+ | showDay | 是否显示日期 | boolean | true |
123
+ | monthClickable | 月份是否可点击 | boolean | false |
124
+ | dayClickable | 日期是否可点击 | boolean | false |
125
+
126
+ #### 2. subHeader 配置
127
+
128
+ | 参数 | 说明 | 类型 | 默认值 |
129
+ |------|------|------|------|
130
+ | show | 是否显示子标题栏 | boolean | true |
131
+ | showNavigation | 是否显示导航按钮 | boolean | true |
132
+ | prevMonthText | 上个月按钮文本 | string | '←' |
133
+ | nextMonthText | 下个月按钮文本 | string | '→' |
134
+
135
+ #### 3. calendar 配置
136
+
137
+ | 参数 | 说明 | 类型 | 默认值 |
138
+ |------|------|------|------|
139
+ | fullscreen | 是否全屏显示 | boolean | false |
140
+ | locale | 语言设置 | string | 'zh-cn' |
141
+
142
+ #### 4. actions 配置
143
+
144
+ 每个操作按钮的配置项:
145
+
146
+ | 参数 | 说明 | 类型 | 示例 |
147
+ |------|------|------|------|
148
+ | text | 按钮显示文本 | string | '+ 新增日程' |
149
+ | type | 按钮类型标识 | string | 'add' |
150
+ | handler | 处理函数名称 | string | 'handleAdd' |
151
+
152
+ #### 5. styles 配置
153
+
154
+ 所有样式配置都接受标准的 CSS 属性对象:
155
+
156
+ | 参数 | 说明 | 类型 | 示例 |
157
+ |------|------|------|------|
158
+ | wrapper | 整体容器样式 | object | { background: '#fff' } |
159
+ | header | 头部样式 | object | { padding: '16px' } |
160
+ | titleInput | 标题输入框样式 | object | { fontSize: '16px' } |
161
+ | subHeader | 子标题栏样式 | object | { marginBottom: '20px' } |
162
+ | currentDate | 当前日期样式 | object | { color: '#1890ff' } |
163
+ | year | 年份样式 | object | { fontSize: '14px' } |
164
+ | actionItem | 操作按钮样式 | object | { cursor: 'pointer' } |
165
+ | calendarContent | 日历内容区域样式 | object | { padding: '24px' } |
166
+
167
+ ## 使用示例
168
+
169
+ ### 1. 基础使用
170
+
171
+ ```html
172
+ <template>
173
+ <x-calendar :configName="'MyCalendarConfig'" @select="onSelect" />
174
+ </template>
175
+
176
+ <script>
177
+ export default {
178
+ methods: {
179
+ onSelect(date) {
180
+ console.log('选择的日期:', date.format('YYYY-MM-DD'))
181
+ }
182
+ }
183
+ }
184
+ </script>
185
+ ```
186
+
187
+ ### 2. 自定义样式配置
188
+
189
+ ```json
190
+ {
191
+ "styles": {
192
+ "wrapper": {
193
+ "backgroundColor": "#f5f5f5",
194
+ "padding": "24px",
195
+ "borderRadius": "8px"
196
+ },
197
+ "header": {
198
+ "borderBottom": "1px solid #e8e8e8",
199
+ "marginBottom": "16px"
200
+ },
201
+ "currentDate": {
202
+ "fontSize": "24px",
203
+ "fontWeight": "bold",
204
+ "color": "#1890ff"
205
+ }
206
+ }
207
+ }
208
+ ```
209
+
210
+ ### 3. 自定义操作按钮
211
+
212
+ ```json
213
+ {
214
+ "actions": [
215
+ {
216
+ "text": "+ 新增日程",
217
+ "type": "add",
218
+ "handler": "handleAdd"
219
+ },
220
+ {
221
+ "text": "查看详情",
222
+ "type": "view",
223
+ "handler": "handleView"
224
+ }
225
+ ]
226
+ }
227
+ ```
228
+
229
+ ## 注意事项
230
+
231
+ 1. 组件使用 moment.js 处理日期,确保项目中已正确配置
232
+ 2. 样式配置支持所有合法的 CSS 属性,使用驼峰命名
233
+ 3. 自定义事件处理函数需要在父组件中实现
234
+ 4. 所有配置项都是可选的,未配置时使用默认值
235
+ 5. 语言设置默认为中文,可通过 calendar.locale 配置修改
236
+ 6. 样式配置支持响应式设计,可根据需要调整
237
+
238
+ ## 常见问题
239
+
240
+ ### 1. 如何修改日历的默认语言?
241
+
242
+ 通过 calendar 配置项设置:
243
+ ```json
244
+ {
245
+ "calendar": {
246
+ "locale": "en-us"
247
+ }
248
+ }
249
+ ```
250
+
251
+ ### 2. 如何自定义日期显示格式?
252
+
253
+ 可以通过监听 select 事件,在回调函数中自定义格式化:
254
+ ```javascript
255
+ onSelect(date) {
256
+ const formattedDate = date.format('YYYY年MM月DD日')
257
+ }
258
+ ```
259
+
260
+ ### 3. 如何添加自定义操作按钮?
261
+
262
+ 在配置中的 actions 数组中添加按钮配置:
263
+ ```json
264
+ {
265
+ "actions": [
266
+ {
267
+ "text": "自定义按钮",
268
+ "type": "custom",
269
+ "handler": "handleCustom"
270
+ }
271
+ ]
272
+ }
273
+ ```
274
+
275
+ ### 4. 如何处理按钮点击事件?
276
+
277
+ 在父组件中实现对应的处理函数:
278
+ ```javascript
279
+ methods: {
280
+ handleCustom(date) {
281
+ console.log('自定义按钮点击,当前日期:', date.format('YYYY-MM-DD'))
282
+ }
283
+ }
284
+ ```