npmapps 1.1.5 → 1.2.0

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 (115) hide show
  1. package/app/wujie-wk/t.html +90 -0
  2. package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/README.md +122 -5
  3. package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/example.vue +203 -7
  4. package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/index.vue +1124 -50
  5. package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/mockData.js +126 -0
  6. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/recruitmentAdapter.js +51 -0
  7. package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/utils.js +1 -0
  8. package/package.json +1 -1
  9. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/.eslintrc.js +0 -0
  10. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/README.md +0 -0
  11. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/babel.config.js +0 -0
  12. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/docs/superpowers/plans/2026-05-29-quill-editor.md +0 -0
  13. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/docs/superpowers/specs/2026-05-29-quill-editor-design.md +0 -0
  14. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/jsconfig.json +0 -0
  15. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/package-lock.json +0 -0
  16. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/package.json +0 -0
  17. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/postcss.config.js +0 -0
  18. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/public/favicon.ico +0 -0
  19. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/public/index.html +0 -0
  20. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/public/rili.jpg +0 -0
  21. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/public//344/270/200/351/224/256/351/273/221/346/232/227.html" +0 -0
  22. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/App.vue +0 -0
  23. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/bpmn-camunda.jpg +0 -0
  24. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/css/diagram.less +0 -0
  25. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/Icon.less +0 -0
  26. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app-codes.css +0 -0
  27. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app.eot +0 -0
  28. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app.svg +0 -0
  29. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app.ttf +0 -0
  30. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app.woff +0 -0
  31. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/app.woff2 +0 -0
  32. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/config.json +0 -0
  33. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-bottom-tool.svg +0 -0
  34. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-horizontal-center-tool.svg +0 -0
  35. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-left-tool.svg +0 -0
  36. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-right-tool.svg +0 -0
  37. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-top-tool.svg +0 -0
  38. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/align-vertical-center-tool.svg +0 -0
  39. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/distribute-horizontally-tool.svg +0 -0
  40. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/distribute-vertically-tool.svg +0 -0
  41. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/raw/set-color-tool.svg +0 -0
  42. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-bottom-tool.svg +0 -0
  43. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-horizontal-center-tool.svg +0 -0
  44. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-left-tool.svg +0 -0
  45. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-right-tool.svg +0 -0
  46. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-top-tool.svg +0 -0
  47. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/align-vertical-center-tool.svg +0 -0
  48. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/distribute-horizontally-tool.svg +0 -0
  49. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/distribute-vertically-tool.svg +0 -0
  50. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/icon/font/source/symbols/set-color-tool.svg +0 -0
  51. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/assets/logo.png +0 -0
  52. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EllTable/README.md +0 -0
  53. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EllTable/article.md +0 -0
  54. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EllTable/index.js +0 -0
  55. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/CalendarSkeleton.vue +0 -0
  56. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/CodeBlock.vue +0 -0
  57. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/EventCalendar/MonthSelect.vue +0 -0
  58. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/FormulaEditor/FunctionSelector.vue +0 -0
  59. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/FormulaEditor/OperatorSelector.vue +0 -0
  60. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/FormulaEditor/ParameterSelector.vue +0 -0
  61. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/FormulaEditor/api.js +0 -0
  62. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/FormulaEditor/index.vue +0 -0
  63. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/HelloWorld.vue +0 -0
  64. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/PageHeader/index.vue +0 -0
  65. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/Splitter/README.md +0 -0
  66. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/Splitter/example.vue +0 -0
  67. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/Splitter/index.vue +0 -0
  68. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/diagram/ToolBar.vue +0 -0
  69. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/diagram/customTranslate/customTranslate.js +0 -0
  70. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/diagram/customTranslate/translationsGerman.js +0 -0
  71. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/diagram/index.vue +0 -0
  72. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/components/diagram/xmlData.js +0 -0
  73. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/directives/filldown.js +0 -0
  74. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/directives/filldownTable.js +0 -0
  75. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/main.js +0 -0
  76. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/router/index.js +0 -0
  77. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/store/index.js +0 -0
  78. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/utils/winBox.js +0 -0
  79. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Extend/A.vue +0 -0
  80. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Extend/B.vue +0 -0
  81. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Extend/MagicalComponentsForELFormItem.vue +0 -0
  82. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Extend/index.vue +0 -0
  83. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Extend/tableMouseHorizontalWheel.vue +0 -0
  84. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/Home.vue +0 -0
  85. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/RouterJump.vue +0 -0
  86. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/calendar/index.vue +0 -0
  87. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/css.vue +0 -0
  88. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/cssComponents/EllipsisText.vue +0 -0
  89. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/cssComponents/HoverCard.vue +0 -0
  90. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/cssComponents/TableHover.vue +0 -0
  91. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/cssComponents/inputSlo.vue +0 -0
  92. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/cssComponents/tableFixed.vue +0 -0
  93. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/echarts/echart-dome.vue +0 -0
  94. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/echarts/index.vue +0 -0
  95. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/echarts/pei3d.vue +0 -0
  96. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/bpmn/index.vue +0 -0
  97. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/attendanceCycle/index.vue +0 -0
  98. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/attendanceGroup/index.vue +0 -0
  99. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/attendancePersonnel/index.vue +0 -0
  100. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/companyCalendar/index.vue +0 -0
  101. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/shift/index.vue +0 -0
  102. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/components/shiftRotationSystem/index.vue +0 -0
  103. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/columnManagement.vue +0 -0
  104. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/dialogInput.vue +0 -0
  105. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/elTableJsx.vue +0 -0
  106. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/formTable.vue +0 -0
  107. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/index.vue +0 -0
  108. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx/simpleTable.vue +0 -0
  109. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/elTableJsx.zip +0 -0
  110. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/index.vue +0 -0
  111. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/quillEditor/README.md +0 -0
  112. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/quillEditor/example.vue +0 -0
  113. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/quillEditor/index.vue +0 -0
  114. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/src/views/element/quillEditor/toolbar.js +0 -0
  115. /package/app/{wujie-vue2-child → wujie-wk/wujie-vue2-child}/vue.config.js +0 -0
@@ -6,6 +6,8 @@
6
6
  *
7
7
  * 注意:这里的字段名是「默认字段名」,若后端字段不同,
8
8
  * 不需要改数据,只需给组件传 field-names(见 ALT_* 相关导出)。
9
+ * NodeQ 形状的原始响应见文件下方的 NODEQ_MOCK_RESPONSE,配合
10
+ * recruitmentAdapter.js 使用。
9
11
  */
10
12
 
11
13
  /* -------------------------------------------------------------------------- */
@@ -179,6 +181,129 @@ export function fetchEmptyData(options = {}) {
179
181
  return delayResolve(data, delay)
180
182
  }
181
183
 
184
+ /* -------------------------------------------------------------------------- */
185
+ /* NodeQ 后端形状模拟数据 */
186
+ /* -------------------------------------------------------------------------- */
187
+
188
+ /**
189
+ * NodeQ 形状的模拟响应。
190
+ *
191
+ * 默认生成 2026-09 / 2026-10 / 2026-11 三个月,每个月 14 个有数据的日期,
192
+ * 每个日期固定 3~5 条记录。字段刻意使用截图中的
193
+ * `nbcbRecAnnJourneyMaps / publicityDate / publicityPlace`;额外加入独立的
194
+ * `publicityAddress` 字段,用来模拟本次新增的地址参数。
195
+ */
196
+ const NODEQ_SCHOOLS = [
197
+ '大连理工大学', '北京大学深圳研究生院', '香港中文大学(深圳)',
198
+ '哈尔滨工业大学(深圳)', '南方科技大学', '电子科技大学',
199
+ '北京邮电大学', '华南理工大学', '中国人民大学', '西安交通大学',
200
+ '中南财经政法大学', '南京大学', '上海交通大学', '浙江大学',
201
+ '西北工业大学', '厦门大学', '武汉大学', '同济大学'
202
+ ]
203
+
204
+ const NODEQ_CITIES = [
205
+ '北京市海淀区学院路', '上海市杨浦区四平路', '广东省深圳市南山区',
206
+ '江苏省南京市鼓楼区', '辽宁省大连市甘井子区', '四川省成都市高新区'
207
+ ]
208
+
209
+ const NODEQ_ORGS = [
210
+ '总行、北京分行、上海分行',
211
+ '总行、深圳分行、广州分行',
212
+ '总行、南京分行、杭州分行',
213
+ '总行、成都分行、大连分行'
214
+ ]
215
+
216
+ export function createNodeqMockResponse(options = {}) {
217
+ const {
218
+ months = ['2026-09', '2026-10', '2026-11'],
219
+ daysPerMonth = 14,
220
+ minItems = 3,
221
+ maxItems = 5,
222
+ includeBadge = false,
223
+ seed = 20260904
224
+ } = options
225
+
226
+ const journeyMaps = {}
227
+
228
+ months.forEach((monthKey, monthIndex) => {
229
+ const [year, month] = monthKey.split('-').map(Number)
230
+ const daysInMonth = new Date(year, month, 0).getDate()
231
+ const random = createRandom(seed + monthIndex * 97)
232
+ const wantedDays = Math.min(Math.max(10, Number(daysPerMonth) || 14), daysInMonth)
233
+ const dayNumbers = []
234
+
235
+ // 交错选取日期,让每个月都有「十几天」且分布不挤在一起。
236
+ for (let day = 1; day <= daysInMonth && dayNumbers.length < wantedDays; day++) {
237
+ if ((day + monthIndex) % 2 === 0) dayNumbers.push(day)
238
+ }
239
+ // 极短月份的兜底(默认月份不会走到这里)。
240
+ for (let day = 1; day <= daysInMonth && dayNumbers.length < wantedDays; day++) {
241
+ if (!dayNumbers.includes(day)) dayNumbers.push(day)
242
+ }
243
+ dayNumbers.sort((a, b) => a - b)
244
+
245
+ dayNumbers.forEach((day) => {
246
+ const dateKey = `${monthKey}-${pad2(day)}`
247
+ const range = Math.max(0, Number(maxItems) - Number(minItems) + 1)
248
+ const count = Number(minItems) + (range > 0 ? Math.floor(random() * range) : 0)
249
+ const records = []
250
+
251
+ for (let itemIndex = 0; itemIndex < count; itemIndex++) {
252
+ const school = NODEQ_SCHOOLS[Math.floor(random() * NODEQ_SCHOOLS.length)]
253
+ const city = NODEQ_CITIES[Math.floor(random() * NODEQ_CITIES.length)]
254
+ const campus = `${city}${itemIndex % 3 === 0 ? '就业指导中心' : '校区报告厅'}`
255
+ const record = {
256
+ enterpriseYear: year,
257
+ operateTime: `${dateKey} 08:30:00`,
258
+ operator: 'mock-nodeq',
259
+ participationOrg: NODEQ_ORGS[(day + itemIndex + monthIndex) % NODEQ_ORGS.length],
260
+ publicityDate: `${dateKey} 00:00:00`,
261
+ publicityDateStr: dateKey,
262
+ publicityPlace: school,
263
+ publicityAddress: campus
264
+ }
265
+
266
+ // 可选角标字段;字段不存在时转换结果使用空字符串。
267
+ if (includeBadge && itemIndex % 3 === 0) {
268
+ record.publicityTypeName = itemIndex % 2 === 0 ? '宣讲直播' : '宣讲'
269
+ }
270
+ records.push(record)
271
+ }
272
+
273
+ journeyMaps[dateKey] = records
274
+ })
275
+ })
276
+
277
+ return {
278
+ data: {
279
+ content: 'NodeQ 宣讲日历模拟数据',
280
+ id: 'NODEQ-MOCK-CALENDAR',
281
+ nbcbRecAnnJourneyMaps: journeyMaps
282
+ },
283
+ message: 'ok',
284
+ msgType: null,
285
+ status: '0000'
286
+ }
287
+ }
288
+
289
+ /** 直接可用于页面演示的三个月原始响应(部分记录带角标,部分不带)。 */
290
+ export const NODEQ_MOCK_RESPONSE = createNodeqMockResponse({ includeBadge: true })
291
+ // 兼容喜欢下划线命名的调用方。
292
+ export const NODE_Q_MOCK_RESPONSE = NODEQ_MOCK_RESPONSE
293
+ export const NODEQ_MOCK_DATA = NODEQ_MOCK_RESPONSE
294
+
295
+ /**
296
+ * 异步返回 NodeQ 原始响应,模拟真实 request 的 Promise。
297
+ * `includeBadge` 默认 false,便于验证没有角标时不会留下空白。
298
+ */
299
+ export function fetchNodeqCalendarData(options = {}) {
300
+ const { delay = 0, ...mockOptions } = options
301
+ return delayResolve(createNodeqMockResponse(mockOptions), delay)
302
+ }
303
+
304
+ export const fetchNodeqCalendarResponse = fetchNodeqCalendarData
305
+ export const fetchNodeQCalendarData = fetchNodeqCalendarData
306
+
182
307
  /* -------------------------------------------------------------------------- */
183
308
  /* 自定义字段名接口(演示 fieldNames) */
184
309
  /* -------------------------------------------------------------------------- */
@@ -195,6 +320,7 @@ export const ALT_FIELD_NAMES = {
195
320
  items: 'activityList',
196
321
  itemKey: 'activityId',
197
322
  itemLabel: 'schoolName',
323
+ itemAddress: 'rawAddress',
198
324
  itemBadge: 'activityTypeName',
199
325
  itemType: 'activityType',
200
326
  itemDisabled: 'expired'
@@ -0,0 +1,51 @@
1
+ /**
2
+ * 把 NodeQ mock 响应转换成 EventCalendar 的默认数据结构。
3
+ *
4
+ * 输入:response.data.nbcbRecAnnJourneyMaps
5
+ * 输出:[{ month, monthLabel, days: [{ date, items }] }]
6
+ */
7
+ export function transformNodeqCalendarResponse(response) {
8
+ const journeyMap = response && response.data
9
+ ? response.data.nbcbRecAnnJourneyMaps
10
+ : null
11
+
12
+ if (!journeyMap || typeof journeyMap !== 'object') return []
13
+
14
+ const months = {}
15
+
16
+ Object.keys(journeyMap).sort().forEach((date) => {
17
+ const dateKey = String(date).slice(0, 10)
18
+ const monthKey = dateKey.slice(0, 7)
19
+ const records = Array.isArray(journeyMap[date]) ? journeyMap[date] : []
20
+
21
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(dateKey)) return
22
+
23
+ if (!months[monthKey]) {
24
+ const [year, month] = monthKey.split('-')
25
+ months[monthKey] = {
26
+ month: monthKey,
27
+ monthLabel: `${year}年${Number(month)}月`,
28
+ days: []
29
+ }
30
+ }
31
+
32
+ months[monthKey].days.push({
33
+ date: dateKey,
34
+ items: records.map((record, index) => {
35
+ const item = record || {}
36
+ return {
37
+ id: item.id || `${dateKey}-${index}`,
38
+ label: item.publicityPlace || '',
39
+ address: item.publicityAddress || '',
40
+ // badge: item.publicityTypeName || '',
41
+ type: item.type || '',
42
+ disabled: item.disabled || false
43
+ }
44
+ })
45
+ })
46
+ })
47
+
48
+ return Object.keys(months).sort().map((monthKey) => months[monthKey])
49
+ }
50
+
51
+ export default transformNodeqCalendarResponse
@@ -29,6 +29,7 @@ export const DEFAULT_FIELD_NAMES = {
29
29
  // —— 条目层(items 数组的每一项)——
30
30
  itemKey: 'id', // 条目唯一键(用于 v-for :key)
31
31
  itemLabel: 'label', // 条目主文案,如「电子科技大学」
32
+ itemAddress: 'address', // 条目地址;为空时不渲染地址行
32
33
  itemBadge: 'badge', // 条目右上角角标文案,如「宣讲」「双选」
33
34
  itemType: 'type', // 条目类型,用于匹配 typeColors 配色
34
35
  itemDisabled: 'disabled' // 条目是否禁用(禁用后不响应点击)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npmapps",
3
- "version": "1.1.5",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {