@opendesign-plus/components 0.0.1-rc.27 → 0.0.1-rc.29

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 (97) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +152 -152
  3. package/dist/components/activity/OActivityApproval.vue.d.ts +8 -8
  4. package/dist/components/activity/OActivityForm.vue.d.ts +6 -6
  5. package/dist/components/activity/OActivityMyCalendar.vue.d.ts +8 -4
  6. package/dist/components/activity/index.d.ts +17 -15
  7. package/dist/components/config-provider/OPlusConfigProvider.vue.d.ts +24 -0
  8. package/dist/components/config-provider/index.d.ts +30 -0
  9. package/dist/components/cookie-notice/OCookieNotice.vue.d.ts +17 -0
  10. package/dist/components/cookie-notice/index.d.ts +53 -0
  11. package/dist/components/events/types.d.ts +4 -0
  12. package/dist/components/{OFooter.vue.d.ts → footer/OFooter.vue.d.ts} +2 -2
  13. package/dist/components/footer/index.d.ts +89 -0
  14. package/dist/components/header/index.d.ts +1 -0
  15. package/dist/components/header/types.d.ts +1 -0
  16. package/dist/components/{OLanguageSwitcher.vue.d.ts → header-language-switcher/OHeaderLanguageSwitcher.vue.d.ts} +5 -5
  17. package/dist/components/header-language-switcher/index.d.ts +90 -0
  18. package/dist/components/{OHeaderSearch.vue.d.ts → header-search/OHeaderSearch.vue.d.ts} +165 -145
  19. package/dist/components/header-search/index.d.ts +607 -0
  20. package/dist/components/header-source-code/OHeaderSourceCode.vue.d.ts +18 -0
  21. package/dist/components/header-source-code/index.d.ts +23 -0
  22. package/dist/components/header-theme/OHeaderTheme.vue.d.ts +25 -0
  23. package/dist/components/header-theme/index.d.ts +50 -0
  24. package/dist/components/{OHeaderUser.vue.d.ts → header-user/OHeaderUser.vue.d.ts} +7 -7
  25. package/dist/components/header-user/index.d.ts +53 -0
  26. package/dist/components/meeting/OMeetingCalendar.vue.d.ts +2 -2
  27. package/dist/components/meeting/OMeetingForm.vue.d.ts +4 -6
  28. package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +8 -4
  29. package/dist/components/meeting/OMeetingPlayback.vue.d.ts +4 -4
  30. package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +1 -0
  31. package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
  32. package/dist/components/meeting/index.d.ts +11 -15
  33. package/dist/components/meeting/types.d.ts +6 -4
  34. package/dist/components/meeting/utils.d.ts +2 -1
  35. package/dist/components/search/OSearchInput.vue.d.ts +54 -34
  36. package/dist/components/search/index.d.ts +32 -22
  37. package/dist/components/search/internal/SearchImageInput.vue.d.ts +41 -21
  38. package/dist/components/search/internal/SearchPanel.vue.d.ts +1 -1
  39. package/dist/components/{OSection.vue.d.ts → section/OSection.vue.d.ts} +4 -4
  40. package/dist/components/section/index.d.ts +47 -0
  41. package/dist/components.cjs.js +40 -40
  42. package/dist/components.css +1 -1
  43. package/dist/components.es.js +16758 -16562
  44. package/dist/index.d.ts +9 -14
  45. package/docs/design.md +2 -2
  46. package/package.json +8 -8
  47. package/scripts/generate-components-index.js +2 -44
  48. package/src/assets/meeting/svg-icons/icon-all.svg +2 -1
  49. package/src/assets/meeting/svg-icons/icon-event.svg +2 -1
  50. package/src/assets/meeting/svg-icons/icon-meet.svg +2 -1
  51. package/src/assets/meeting/svg-icons/icon-summit.svg +2 -1
  52. package/src/assets/styles/element-plus.scss +24 -0
  53. package/src/components/activity/OActivityMyCalendar.vue +19 -12
  54. package/src/components/common/ClientOnly.vue +13 -0
  55. package/src/components/{OPlusConfigProvider.vue → config-provider/OPlusConfigProvider.vue} +5 -5
  56. package/src/components/config-provider/index.ts +10 -0
  57. package/src/components/{OCookieNotice.vue → cookie-notice/OCookieNotice.vue} +1 -1
  58. package/src/components/cookie-notice/index.ts +10 -0
  59. package/src/components/element-plus/OElCookieNotice.vue +1 -1
  60. package/src/components/events/OEventsApply.vue +85 -1
  61. package/src/components/events/OEventsList.vue +112 -40
  62. package/src/components/events/types.ts +1 -0
  63. package/src/components/{OFooter.vue → footer/OFooter.vue} +4 -4
  64. package/src/components/footer/index.ts +10 -0
  65. package/src/components/header/index.ts +2 -0
  66. package/src/components/header/types.ts +1 -0
  67. package/src/components/header-language-switcher/index.ts +10 -0
  68. package/src/components/{OHeaderSearch.vue → header-search/OHeaderSearch.vue} +4 -4
  69. package/src/components/header-search/index.ts +10 -0
  70. package/src/components/{OSourceCode.vue → header-source-code/OHeaderSourceCode.vue} +2 -2
  71. package/src/components/header-source-code/index.ts +10 -0
  72. package/src/components/{OThemeSwitcher.vue → header-theme/OHeaderTheme.vue} +4 -4
  73. package/src/components/header-theme/index.ts +10 -0
  74. package/src/components/{OHeaderUser.vue → header-user/OHeaderUser.vue} +4 -4
  75. package/src/components/header-user/index.ts +10 -0
  76. package/src/components/meeting/OMeetingCalendar.vue +32 -21
  77. package/src/components/meeting/OMeetingForm.vue +44 -37
  78. package/src/components/meeting/OMeetingMyCalendar.vue +28 -38
  79. package/src/components/meeting/OMeetingSigCalendar.vue +43 -20
  80. package/src/components/meeting/components/OMeetingCalendarList.vue +80 -29
  81. package/src/components/meeting/components/OMeetingDetail.vue +29 -10
  82. package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +1 -1
  83. package/src/components/meeting/components/OMeetingSigAside.vue +11 -6
  84. package/src/components/meeting/types.ts +7 -5
  85. package/src/components/meeting/utils.ts +4 -4
  86. package/src/components/{OSection.vue → section/OSection.vue} +1 -1
  87. package/src/components/section/index.ts +10 -0
  88. package/src/i18n/en.ts +2 -2
  89. package/src/i18n/zh.ts +4 -2
  90. package/src/index.ts +9 -38
  91. package/dist/components/OCookieNotice.vue.d.ts +0 -17
  92. package/dist/components/OPlusConfigProvider.vue.d.ts +0 -23
  93. package/dist/components/OSourceCode.vue.d.ts +0 -18
  94. package/dist/components/OThemeSwitcher.vue.d.ts +0 -25
  95. package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +0 -664
  96. package/src/components/common/ClientOnlyWrapper.ts +0 -21
  97. /package/src/components/{OLanguageSwitcher.vue → header-language-switcher/OHeaderLanguageSwitcher.vue} +0 -0
@@ -1,5 +1,14 @@
1
1
  <script setup lang="ts">
2
- import { isClient, OCollapse, OCollapseItem, ODivider, OIcon, OLink, OTag, useMessage } from '@opensig/opendesign';
2
+ import {
3
+ isClient,
4
+ OCollapse,
5
+ OCollapseItem,
6
+ ODivider,
7
+ OIcon,
8
+ OButton,
9
+ OTag,
10
+ useMessage,
11
+ } from '@opensig/opendesign';
3
12
  import OMeetingDetail from './OMeetingDetail.vue';
4
13
  import { computed, nextTick, ref, watch } from 'vue';
5
14
  import IconCopy from '~icons/meeting/icon-copy.svg';
@@ -15,6 +24,7 @@ const { activityTypeMap } = useActivityConfig();
15
24
  const props = withDefaults(defineProps<{
16
25
  list: MeetingItemT[];
17
26
  groupType?: MeetingGroupType;
27
+ disableFormat?: boolean;
18
28
  }>(), {
19
29
  list: () => [],
20
30
  });
@@ -81,22 +91,44 @@ const computedList = computed<any[]>(() => {
81
91
  return props.list.map((v: any) => {
82
92
  const type = v.type;
83
93
  let dateRange = '';
94
+ let start_date_time = '';
95
+ let end_date_time = '';
84
96
  if (type !== CalendarDataType.MEETING) {
85
97
  let activity_type = activityTypeMap.value.get(v.activity_type)?.label;
86
- if (v.start && v.end) {
87
- if (v.end_date === v.start_date) {
88
- dateRange = `${ formatDate(v.start_date) } ${ v.start }-${ v.end }`;
89
- } else {
90
- dateRange = `${ formatDate(v.start_date) } ${ v.start }-${ formatDate(v.end_date) } ${ v.end }`;
98
+ if (v.start_date) {
99
+ dateRange = props.disableFormat ? v.start_date : formatDate(v.start_date);
100
+ }
101
+ if (v.start) {
102
+ dateRange += `${ dateRange ? ' ' : '' }${ v.start }`;
103
+ }
104
+ if (v.end_date || v.end) {
105
+ dateRange += `${ dateRange ? ' -' : '' }`;
106
+ if (v.end_date && v.end_date !== v.start_date) {
107
+ dateRange += `${ dateRange ? ' ' : '' }${ props.disableFormat ? v.end_date : formatDate(v.end_date) }`;
108
+ }
109
+ if (v.end) {
110
+ dateRange += `${ dateRange ? ' ' : '' }${ v.end }`;
91
111
  }
92
- } else {
93
- dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD HH:mm') } ${ formatDate(v.end_date, 'YYYY/MM/DD HH:mm') }`;
112
+ }
113
+ if (v.start_date) {
114
+ start_date_time = props.disableFormat ? v.start_date : formatDate(v.start_date);
115
+ }
116
+ if (v.start) {
117
+ start_date_time += `${ start_date_time ? ' ' : '' }${ v.start }`;
118
+ }
119
+ if (v.end_date) {
120
+ end_date_time = props.disableFormat ? v.end_date : formatDate(v.end_date);
121
+ }
122
+ if (v.end) {
123
+ end_date_time += `${ end_date_time ? ' ' : '' }${ v.end }`;
94
124
  }
95
125
 
96
126
  return {
97
127
  ...v,
98
128
  activity_type,
99
129
  dateRange,
130
+ start_date_time,
131
+ end_date_time,
100
132
  };
101
133
  }
102
134
  const {
@@ -112,12 +144,27 @@ const computedList = computed<any[]>(() => {
112
144
  cycle_interval,
113
145
  cycle_point,
114
146
  } = v;
115
- dateRange = `${ formatDate(date) } ${ start } - ${ end }`;
147
+ dateRange = props.disableFormat ? date : formatDate(date);
148
+ if (start && end) {
149
+ dateRange += `${ dateRange ? ' ' : '' }${ start } - ${ end }`;
150
+ } else if (start || end) {
151
+ dateRange += `${ dateRange ? ' ' : '' }${ start || end }`;
152
+ }
116
153
  if (is_cycle) {
117
- dateRange = `${ formatDate(cycle_start_date) } - ${ formatDate(cycle_end_date) }`;
154
+ dateRange = `${ props.disableFormat ? cycle_start_date : formatDate(cycle_start_date) } - ${ props.disableFormat ? cycle_end_date : formatDate(cycle_end_date) }`;
118
155
  }
119
156
 
120
- let timeRange = `${ start } - ${ end }`;
157
+ let timeRange = '';
158
+ if (start && end) {
159
+ timeRange = `${ start } - ${ end }`;
160
+ } else {
161
+ if (start) {
162
+ timeRange = start;
163
+ }
164
+ if (end) {
165
+ timeRange = end;
166
+ }
167
+ }
121
168
  let replay_url = null;
122
169
  let hasObsData = false;
123
170
  const obsData = v.obs_data?.filter((v: ObsDataItemT) => v.text_video_url) || [];
@@ -169,7 +216,7 @@ const computedList = computed<any[]>(() => {
169
216
  <OCollapseItem v-for="(item, index) in computedList" :key="item.id" :value="item.id">
170
217
  <template #title>
171
218
  <div class="meet-title-left">
172
- <div class="meet-title" :title="item.topic || item.name">
219
+ <div class="meet-title" :title="item.topic || item.name || item.title">
173
220
  <OIcon
174
221
  :style="{
175
222
  backgroundColor: `${getConfig(item.type, 'color')}`
@@ -188,14 +235,14 @@ const computedList = computed<any[]>(() => {
188
235
  <span class="start-time">
189
236
  <span>{{ item.dateRange }}</span>
190
237
  </span>
191
- <ODivider direction="v" />
238
+ <ODivider v-if="item.group_name || item.activity_type" direction="v" />
192
239
  <div>
193
240
  <template v-if="item.group_name">{{ i18n.SIG_GROUP }} {{ item.group_name }}</template>
194
241
  <template v-if="item.activity_type">{{ item.activity_type }}</template>
195
242
  </div>
196
243
  </div>
197
- <OLink
198
- :hover-underline="false"
244
+ <OButton
245
+ variant="text"
199
246
  v-if="item.url"
200
247
  :href="item.url"
201
248
  target="_blank"
@@ -207,9 +254,9 @@ const computedList = computed<any[]>(() => {
207
254
  <IconChevronRight />
208
255
  </OIcon>
209
256
  </template>
210
- </OLink>
211
- <OLink
212
- :hover-underline="false"
257
+ </OButton>
258
+ <OButton
259
+ variant="text"
213
260
  v-if="item.join_url"
214
261
  :href="item.join_url"
215
262
  target="_blank"
@@ -221,9 +268,9 @@ const computedList = computed<any[]>(() => {
221
268
  <IconChevronRight />
222
269
  </OIcon>
223
270
  </template>
224
- </OLink>
225
- <OLink
226
- :hover-underline="false"
271
+ </OButton>
272
+ <OButton
273
+ variant="text"
227
274
  v-if="item.content_url"
228
275
  :href="item.content_url"
229
276
  target="_blank"
@@ -235,9 +282,9 @@ const computedList = computed<any[]>(() => {
235
282
  <IconChevronRight />
236
283
  </OIcon>
237
284
  </template>
238
- </OLink>
239
- <OLink
240
- :hover-underline="false"
285
+ </OButton>
286
+ <OButton
287
+ variant="text"
241
288
  v-if="item.register_url"
242
289
  :href="item.register_url"
243
290
  target="_blank"
@@ -249,7 +296,7 @@ const computedList = computed<any[]>(() => {
249
296
  <IconChevronRight />
250
297
  </OIcon>
251
298
  </template>
252
- </OLink>
299
+ </OButton>
253
300
  </div>
254
301
  <OIcon @click.stop="() => copyInfo(index)" class="copy-icon">
255
302
  <IconCopy />
@@ -370,12 +417,13 @@ const computedList = computed<any[]>(() => {
370
417
 
371
418
  .o-collapse-item-title {
372
419
  flex-grow: 1;
420
+ min-width: 0;
373
421
  margin-bottom: 0;
374
422
  display: flex;
375
423
  align-items: center;
376
424
  justify-content: center;
377
425
  gap: var(--o-gap-4);
378
- padding-right: var(--o-gap-4);
426
+ padding-right: var(--o-gap-5);
379
427
 
380
428
  .meet-title-left {
381
429
  flex-grow: 1;
@@ -453,7 +501,7 @@ const computedList = computed<any[]>(() => {
453
501
 
454
502
  .jump-detail-link {
455
503
  padding-left: calc(var(--icon-right) + var(--icon-size2));
456
- margin-top: var(--o-gap-2);
504
+ margin-top: var(--o-gap-1);
457
505
  color: var(--o-color-info2);
458
506
  font-weight: 400;
459
507
  @include tip1;
@@ -492,6 +540,7 @@ const computedList = computed<any[]>(() => {
492
540
  .o-tag {
493
541
  background-color: var(--o-color-control2-light);
494
542
  border: none;
543
+ font-weight: 400;
495
544
  }
496
545
  }
497
546
 
@@ -503,7 +552,7 @@ const computedList = computed<any[]>(() => {
503
552
  margin-right: var(--icon-right);
504
553
  width: var(--icon-size2);
505
554
  height: var(--icon-size2);
506
- font-size: calc(var(--icon-size2) - 4px);
555
+ font-size: calc(var(--icon-size2) - 2px);
507
556
 
508
557
  svg path {
509
558
  fill: currentColor;
@@ -513,14 +562,16 @@ const computedList = computed<any[]>(() => {
513
562
  .text {
514
563
  display: block;
515
564
  font-weight: 600;
565
+ min-width: 0;
566
+ flex: 1;
516
567
  @include text-truncate(1);
517
568
  }
518
569
  }
519
570
 
520
571
  .meet-info {
572
+ display: flex;
521
573
  margin-left: calc(var(--icon-right) + var(--icon-size2));
522
574
  margin-top: var(--o-gap-2);
523
- display: flex;
524
575
  flex-wrap: wrap;
525
576
  align-items: center;
526
577
  color: var(--o-color-info3);
@@ -5,6 +5,7 @@ import { CalendarDataType, MeetingItemT } from '../types.ts';
5
5
  import MoreText from '@/components/common/MoreText.vue';
6
6
  import { formatDate } from '@/components/meeting/utils.ts';
7
7
  import { useMeetingConfig } from '../composables/useMeetingConfig';
8
+ import { useI18n } from '@/i18n';
8
9
 
9
10
  const props = defineProps<{
10
11
  data: MeetingItemT;
@@ -13,7 +14,8 @@ const props = defineProps<{
13
14
  page?: CalendarDataType
14
15
  }>();
15
16
  const { t, getPlatformLabel } = useMeetingConfig();
16
-
17
+ const { locale } = useI18n();
18
+ const isZh = computed(() => locale.value === 'zh');
17
19
  // 会议详情配置
18
20
  const infoList = computed(() =>
19
21
  [
@@ -67,7 +69,13 @@ interface ColumnItemT {
67
69
  extra?: string;
68
70
  }
69
71
 
70
- const getField = (key: string) => (props.data as Record<string, any>)[key];
72
+ const getField = (key: string) => {
73
+ const val = (props.data as Record<string, any>)[key];
74
+ if (key === 'register_end_date' && val) {
75
+ return formatDate(val, 'YYYY/MM/DD HH:mm');
76
+ }
77
+ return val;
78
+ };
71
79
 
72
80
  const columns = computed<ColumnItemT[]>(() => {
73
81
  if (props.data.type === CalendarDataType.EVENTS) {
@@ -83,11 +91,15 @@ const columns = computed<ColumnItemT[]>(() => {
83
91
  });
84
92
 
85
93
  const domRef = ref([]);
94
+ const SPLIT_MARK = '|';
86
95
  // 复制会议内容
87
96
  const copyInfo = () => {
88
97
  try {
89
- let text = `${ t('meeting.meetingTopic') + props.data.topic }\n`;
90
- text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => `${ pre }${ cur.textContent }\n`, '');
98
+ const colon = isZh.value ? '' : ': ';
99
+ let text = `${ t('meeting.meetingTopic') }${ colon }${ props.data.topic || props.data.name || props.data.title }\n`;
100
+ text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => {
101
+ return `${ pre }${ cur.textContent ? cur.textContent.replace(SPLIT_MARK, colon) : '' }\n`;
102
+ }, '');
91
103
  navigator.clipboard.writeText(text);
92
104
  return Promise.resolve();
93
105
  } catch (e) {
@@ -114,6 +126,7 @@ defineExpose({ copyInfo });
114
126
  >
115
127
  <template v-if="getField(info.key) && !info.isRecord">
116
128
  <span class="label">{{ info.label }}</span>
129
+ <span class="split-mark">{{ SPLIT_MARK }}</span>
117
130
  <MoreText :show="show" v-if="info.ellipsis" :text="getField(info.key) || '-'" />
118
131
  <OLink
119
132
  v-else-if="info.isLink"
@@ -154,11 +167,11 @@ defineExpose({ copyInfo });
154
167
  display: flex;
155
168
  align-items: flex-start;
156
169
  font-size: 14px;
157
- gap: var(--o-gap-5);
170
+ gap: var(--o-gap-2);
158
171
 
159
172
  @include respond('<=pad_v') {
160
173
  font-size: 12px;
161
- gap: var(--o-gap-2);
174
+ gap: var(--o-gap-1);
162
175
  }
163
176
 
164
177
  &:not(.is-empty) {
@@ -190,10 +203,16 @@ defineExpose({ copyInfo });
190
203
  }
191
204
  }
192
205
 
193
- &.type_events {
194
- .label {
195
- width: 6em;
196
- }
206
+ .split-mark {
207
+ width: 0;
208
+ height: 0;
209
+ opacity: 0;
210
+ overflow: hidden;
211
+ }
212
+
213
+ .more-text-wrapper {
214
+ position: relative;
215
+ top: -2px;
197
216
  }
198
217
 
199
218
  .o-link {
@@ -333,7 +333,7 @@ watch(
333
333
  <OTabPane :value="0" :label="t('meeting.audioToText')">
334
334
  <OScroller v-if="computedCaptions.length" id="captionsScrollDom" class="captions-scroller" show-type="hover"
335
335
  size="small" disabled-x>
336
- <ORow gap="0 12px" wrap="wrap">
336
+ <ORow gap="0 8px" wrap="wrap">
337
337
  <OCol flex="0 0 100%" v-for="(item, i) in computedCaptions" :key="i">
338
338
  <div class="captions-item" :class="{ 'captions-item-active': currentIndex === i + 1 }"
339
339
  @click="videoPosition(item.start_time)">
@@ -80,12 +80,14 @@ const changeMonth = (step: number) => {
80
80
  .o-sig-meeting-aside {
81
81
  width: 35%;
82
82
  flex-shrink: 0;
83
- padding: var(--o-gap-4) var(--o-gap-6);
83
+ padding: var(--o-gap-4);
84
84
  display: flex;
85
85
  flex-direction: column;
86
86
  border-right: 1px solid var(--o-color-control4);
87
87
  @include respond('<=pad') {
88
88
  padding: var(--o-gap-4);
89
+ }
90
+ @include respond('<=pad_v') {
89
91
  border-right: none;
90
92
  }
91
93
  @include respond('phone') {
@@ -104,7 +106,8 @@ const changeMonth = (step: number) => {
104
106
  .month {
105
107
  color: var(--o-color-info3);
106
108
  margin-bottom: var(--o-gap-2);
107
- @include tip1;
109
+ font-weight: bold;
110
+ @include text1;
108
111
  }
109
112
 
110
113
  .days {
@@ -124,9 +127,11 @@ const changeMonth = (step: number) => {
124
127
  cursor: pointer;
125
128
  border: 1px solid transparent;
126
129
 
127
- &:hover,
128
- &.active {
130
+ &:hover {
129
131
  background-color: var(--o-color-control3-light);
132
+ }
133
+
134
+ &.active {
130
135
  border-color: var(--o-color-primary1);
131
136
  }
132
137
 
@@ -144,7 +149,8 @@ const changeMonth = (step: number) => {
144
149
  .o-icon {
145
150
  width: 20px;
146
151
  height: 20px;
147
- font-size: 20px;
152
+ font-size: 18px;
153
+ padding: 1px;
148
154
  line-height: 1em;
149
155
  position: relative;
150
156
  border-radius: 50%;
@@ -164,7 +170,6 @@ const changeMonth = (step: number) => {
164
170
  }
165
171
 
166
172
  .arrow-wrapper {
167
- margin-top: auto;
168
173
  display: flex;
169
174
  align-items: center;
170
175
  justify-content: space-between;
@@ -37,7 +37,7 @@ export interface OptionItemT {
37
37
  }
38
38
 
39
39
 
40
- export type PlatformT = 'welink' | 'tencent' | 'zoom' | 'WELINK' | 'TENCENT' | 'ZOOM';
40
+ export type PlatformT = 'welink' | 'tencent' | 'zoom' | 'WELINK' | 'TENCENT' | 'ZOOM' | 'WeLink' | 'Tencent';
41
41
 
42
42
  export enum MeetingGroupType {
43
43
  SIG = 'sig',
@@ -55,15 +55,18 @@ export interface MeetingCalendarPropsT {
55
55
  hiddenSummit?: boolean;
56
56
  groupType: MeetingGroupType;
57
57
  groups: string[];
58
+ disableFormat?: boolean; //是否禁用日期格式化
58
59
  }
59
60
 
60
61
  // 会议新增、修改
61
62
  export interface MeetingPostT {
62
63
  id?: number; // 会议id
63
64
  topic: string; // 会议主题 128
65
+ name?: string; // 会议主题 128
66
+ title?: string; // 会议主题 128
64
67
  sponsor?: string; // 会议发起人 20
65
68
  group_name: string; // 所属SIG 64
66
- platform: PlatformT; // 会议平台
69
+ platform: PlatformT | string; // 会议平台
67
70
  date: string; // 会议日期
68
71
  date_range?: string[]; // 日期返回
69
72
  time: string; // 会议时间
@@ -88,8 +91,6 @@ export interface MeetingPostT {
88
91
 
89
92
  export interface MeetingFormPropsT {
90
93
  data?: MeetingItemT;
91
- isSub?: boolean;
92
- isEdit?: boolean;
93
94
  subId?: string;
94
95
  createMeetingRequest: any,
95
96
  editMeetingRequest: any;
@@ -98,7 +99,8 @@ export interface MeetingFormPropsT {
98
99
  getGroupsRequest: any;
99
100
  showBtns?: boolean;
100
101
  groupType: MeetingGroupType;
101
- confirmText?: string
102
+ confirmText?: string;
103
+ labelMap?: Record<string, string>;
102
104
  }
103
105
 
104
106
  export interface ObsDataItemT {
@@ -1,10 +1,10 @@
1
- import dayjs from 'dayjs';
1
+ import dayjs, { Dayjs } from 'dayjs';
2
2
  import { OptionItemT } from './types';
3
3
 
4
- export const formatDate = (date: string | Date = new Date(), format: string = 'YYYY-MM-DD'): string => {
5
- let dateStr = date;
4
+ export const formatDate = (date: undefined | string | Date | Dayjs = new Date(), format: string = 'YYYY/MM/DD'): string => {
5
+ let dateStr: any = date;
6
6
  if (!dateStr) {
7
- dateStr = new Date();
7
+ dateStr = undefined;
8
8
  }
9
9
  if (!dayjs(new Date(dateStr)).isValid()) {
10
10
  return dateStr as string;
@@ -2,7 +2,7 @@
2
2
  import { isArray, OLink, OIcon } from '@opensig/opendesign';
3
3
  import IconChevronRight from '~icons/components/icon-chevron-right.svg';
4
4
 
5
- interface SectionPropsT {
5
+ export interface SectionPropsT {
6
6
  title?: string | Array<string>;
7
7
  subtitle?: string;
8
8
  full?: boolean;
@@ -0,0 +1,10 @@
1
+ import _OSection from './OSection.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OSection = Object.assign(_OSection, {
5
+ install(app: App) {
6
+ app.component('OSection', _OSection);
7
+ },
8
+ });
9
+
10
+ export { OSection };
package/src/i18n/en.ts CHANGED
@@ -115,7 +115,7 @@ export default {
115
115
  'meeting.meetingDate': 'Date',
116
116
  'meeting.startTime': 'Start time',
117
117
  'meeting.endTime': 'End time',
118
- 'meeting.meetingRecord': 'AI Recording',
118
+ 'meeting.meetingRecord': 'Recording',
119
119
  'meeting.meetingRecordDesc': 'Enables auto screen recording. This service is provided by {0} Meeting. AI-powered playback will be automatically uploaded within one working day.',
120
120
  'meeting.meetingRecordDesc1': '1. Meeting AI recording is now enabled. Turning on Meeting AI Listen automatically activates cloud recording as well. After the meeting, you can replay the recording, and voice-to-text transcripts along with AI meeting minutes will be automatically generated.',
121
121
  'meeting.meetingRecordDesc2': '2. The AI-generated meeting replay link will be automatically generated and uploaded within 1 business day.',
@@ -146,7 +146,7 @@ export default {
146
146
  'meeting.groups': 'Groups',
147
147
  'meeting.activityAddress': 'Address',
148
148
  'meeting.livePlatform': 'Live Platform',
149
- 'meeting.meetingTopic': 'Topics: ',
149
+ 'meeting.meetingTopic': 'Topics',
150
150
  'meeting.meetingDetail': 'Details',
151
151
  'meeting.meetingEtherpad': 'Etherpad',
152
152
  'meeting.meetingReplay': 'Playback',
package/src/i18n/zh.ts CHANGED
@@ -115,7 +115,7 @@ export default {
115
115
  'meeting.meetingDate': '会议日期',
116
116
  'meeting.startTime': '开始时间',
117
117
  'meeting.endTime': '结束时间',
118
- 'meeting.meetingRecord': '会议AI录制',
118
+ 'meeting.meetingRecord': '会议录制',
119
119
  'meeting.meetingRecordDesc1': '1、会议AI录制已开启,开启会议AI听即开启云录制,会后可回放会议录制并生成语音文字和AI纪要。',
120
120
  'meeting.meetingRecordDesc2': '2、AI生成的会议回放链接将在 1 个工作日内自动生成并上传。',
121
121
  'meeting.day0': '天',
@@ -145,7 +145,7 @@ export default {
145
145
  'meeting.groups': '工作组',
146
146
  'meeting.activityAddress': '活动地点',
147
147
  'meeting.livePlatform': '直播平台',
148
- 'meeting.meetingTopic': '会议主题:',
148
+ 'meeting.meetingTopic': '会议主题',
149
149
  'meeting.meetingDetail': '会议详情',
150
150
  'meeting.meetingEtherpad': '会议纪要',
151
151
  'meeting.meetingReplay': '智能回放',
@@ -165,6 +165,8 @@ export default {
165
165
  'common.more': '更多',
166
166
  'cookie.desc': '我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。',
167
167
  'cookie.about': '查看详情',
168
+ 'cookie.acceptAll': '全部接受',
169
+ 'cookie.saveSetting': '保存设置',
168
170
  'meeting.create': '创建',
169
171
  'meeting.createMeeting': '创建会议',
170
172
  'meeting.createActivity': '创建活动',
package/src/index.ts CHANGED
@@ -1,47 +1,18 @@
1
1
  // OpenDesignPlus Components 库入口文件
2
2
  // 此文件由 scripts/generate-components-index.js 自动生成
3
-
4
- import OCookieNotice from './components/OCookieNotice.vue';
5
- import OFooter from './components/OFooter.vue';
6
- import OHeaderSearch from './components/OHeaderSearch.vue';
7
- import OHeaderUser from './components/OHeaderUser.vue';
8
- import OLanguageSwitcher from './components/OLanguageSwitcher.vue';
9
- import OPlusConfigProvider from './components/OPlusConfigProvider.vue';
10
- import OSection from './components/OSection.vue';
11
- import OSourceCode from './components/OSourceCode.vue';
12
- import OThemeSwitcher from './components/OThemeSwitcher.vue';
13
-
14
- // 导出组件
15
- const components = {
16
- OCookieNotice,
17
- OFooter,
18
- OHeaderSearch,
19
- OHeaderUser,
20
- OLanguageSwitcher,
21
- OPlusConfigProvider,
22
- OSection,
23
- OSourceCode,
24
- OThemeSwitcher
25
- };
26
-
27
- // 导出单个组件
28
- export { OCookieNotice, OFooter, OHeaderSearch, OHeaderUser, OLanguageSwitcher, OPlusConfigProvider, OSection, OSourceCode, OThemeSwitcher };
29
-
30
- // 重新导出子目录中的组件
31
3
  export * from './components/activity';
32
4
  export * from './components/banner';
5
+ export * from './components/config-provider';
6
+ export * from './components/cookie-notice';
33
7
  export * from './components/element-plus';
34
8
  export * from './components/events';
9
+ export * from './components/footer';
35
10
  export * from './components/header';
11
+ export * from './components/header-language-switcher';
12
+ export * from './components/header-search';
13
+ export * from './components/header-source-code';
14
+ export * from './components/header-theme';
15
+ export * from './components/header-user';
36
16
  export * from './components/meeting';
37
17
  export * from './components/search';
38
-
39
- // 默认导出(用于Vue插件安装)
40
- export default {
41
- install: (app: any) => {
42
- // 注册所有组件
43
- Object.entries(components).forEach(([name, component]) => {
44
- app.component(name, component);
45
- });
46
- }
47
- };
18
+ export * from './components/section';
@@ -1,17 +0,0 @@
1
- type __VLS_Props = {
2
- visible?: boolean;
3
- community: string;
4
- detailUrl: string;
5
- wrapper?: string | HTMLElement;
6
- cookieDomain: string;
7
- };
8
- declare const _default: import('../../vue/dist/vue.esm-bundler.js').DefineComponent<__VLS_Props, {
9
- check(): void;
10
- }, {}, {}, {}, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, {} & {
11
- "update:visible": (value: boolean) => any;
12
- }, string, import('../../vue/dist/vue.esm-bundler.js').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
- "onUpdate:visible"?: ((value: boolean) => any) | undefined;
14
- }>, {}, {}, {}, {}, string, import('../../vue/dist/vue.esm-bundler.js').ComponentProvideOptions, false, {
15
- cookieNoticeRef: HTMLDivElement;
16
- }, any>;
17
- export default _default;
@@ -1,23 +0,0 @@
1
- export interface OPlusConfigProviderPropsT {
2
- locale: 'zh' | 'en';
3
- theme: 'light' | 'dark';
4
- }
5
- declare function __VLS_template(): {
6
- attrs: Partial<{}>;
7
- slots: {
8
- default?(_: {}): any;
9
- };
10
- refs: {};
11
- rootEl: any;
12
- };
13
- type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
- declare const __VLS_component: import('../../vue/dist/vue.esm-bundler.js').DefineComponent<OPlusConfigProviderPropsT, {}, {}, {}, {}, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, {}, string, import('../../vue/dist/vue.esm-bundler.js').PublicProps, Readonly<OPlusConfigProviderPropsT> & Readonly<{}>, {
15
- theme: "light" | "dark";
16
- }, {}, {}, {}, string, import('../../vue/dist/vue.esm-bundler.js').ComponentProvideOptions, false, {}, any>;
17
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
18
- export default _default;
19
- type __VLS_WithTemplateSlots<T, S> = T & {
20
- new (): {
21
- $slots: S;
22
- };
23
- };
@@ -1,18 +0,0 @@
1
- interface CodeItemT {
2
- label: string;
3
- href: string;
4
- icon?: string;
5
- target?: string;
6
- }
7
- interface CodePropsT {
8
- title?: string;
9
- options?: CodeItemT[];
10
- href?: string;
11
- target?: string;
12
- icon?: string;
13
- justify?: string;
14
- }
15
- declare const _default: import('../../vue/dist/vue.esm-bundler.js').DefineComponent<CodePropsT, {}, {}, {}, {}, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, import('../../vue/dist/vue.esm-bundler.js').ComponentOptionsMixin, {}, string, import('../../vue/dist/vue.esm-bundler.js').PublicProps, Readonly<CodePropsT> & Readonly<{}>, {
16
- justify: string;
17
- }, {}, {}, {}, string, import('../../vue/dist/vue.esm-bundler.js').ComponentProvideOptions, false, {}, HTMLDivElement>;
18
- export default _default;