@opendesign-plus-test/components 0.0.1-rc.28 → 0.0.1-rc.30

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.
@@ -20,7 +20,7 @@ import {
20
20
  import { ElCalendar } from 'element-plus';
21
21
  import { computed, nextTick, onMounted, ref, onUnmounted, watch } from 'vue';
22
22
  import OMeetingDetail from './components/OMeetingDetail.vue';
23
- import type { MeetingItemT, PageParamsT } from './types.ts';
23
+ import { MeetingGroupType, MeetingItemT, PageParamsT } from './types.ts';
24
24
  import dayjs from 'dayjs';
25
25
  import IconMeeting from '~icons/meeting/icon-meet.svg';
26
26
  import { INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK, WEEKDAY } from './config.ts';
@@ -43,11 +43,14 @@ const reloadAll = ref(false); // 是否需要清空数据
43
43
  const { t, locale } = useI18n();
44
44
  const isEn = computed(() => locale.value === Locales.EN);
45
45
 
46
- const props = defineProps<{
46
+ const props = withDefaults(defineProps<{
47
47
  cancelSubMeetingRequest: any;
48
48
  deleteMeetingRequest: any;
49
- getMeetingListRequest: any
50
- }>();
49
+ getMeetingListRequest: any;
50
+ groupType: MeetingGroupType
51
+ }>(), {
52
+ groupType: MeetingGroupType.SIG,
53
+ });
51
54
 
52
55
  const dialogLoading = ref(false); // 弹窗按钮状态
53
56
  const { isPhone } = useScreen();
@@ -648,7 +651,10 @@ const cancelActions = computed<DialogActionT[]>(() => {
648
651
  <div class="meeting-info">
649
652
  <span>{{ row.dateRange }}</span>
650
653
  <ODivider direction="v" />
651
- <span>{{ t('meeting.sigs') }}: {{ row.group_name }}</span>
654
+ <span>
655
+ {{ groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs')
656
+ }}: {{ row.group_name }}
657
+ </span>
652
658
  </div>
653
659
  </div>
654
660
  </div>
@@ -1365,11 +1371,6 @@ const cancelActions = computed<DialogActionT[]>(() => {
1365
1371
  font-size: 14px;
1366
1372
  line-height: 21px;
1367
1373
  }
1368
-
1369
- .o-link + .o-link {
1370
- margin-left: var(--o-gap-section-6);
1371
- }
1372
-
1373
1374
  .o-icon {
1374
1375
  font-size: 16px;
1375
1376
  }
@@ -4,7 +4,7 @@ import OMeetingDetail from './OMeetingDetail.vue';
4
4
  import { computed, nextTick, ref, watch } from 'vue';
5
5
  import IconMeetinging from '~icons/meeting/icon-meet.svg';
6
6
  import IconCopy from '~icons/meeting/icon-copy.svg';
7
- import { CalendarDataType, MeetingItemT } from '../types.ts';
7
+ import { CalendarDataType, MeetingGroupType, MeetingItemT } from '../types.ts';
8
8
 
9
9
  import IconAll from '~icons/meeting/icon-all.svg';
10
10
  import IconEvent from '~icons/meeting/icon-event.svg';
@@ -15,8 +15,12 @@ import { CYCLE_TYPE_OPTIONS, INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from
15
15
 
16
16
  import { formatDate, getConfig, getPointStr } from '../utils.ts';
17
17
  import { useI18n } from '@/i18n';
18
+ import { acticityTypeMap } from '@/components/activity/config.ts';
18
19
 
19
- const props = withDefaults(defineProps<{ list: MeetingItemT[] }>(), {
20
+ const props = withDefaults(defineProps<{
21
+ list: MeetingItemT[];
22
+ groupType: MeetingGroupType;
23
+ }>(), {
20
24
  list: () => [],
21
25
  });
22
26
  const { t, locale } = useI18n();
@@ -31,14 +35,17 @@ const copyInfo = async (idx) => {
31
35
  };
32
36
 
33
37
  const collapseNames = ref([]);
34
- const i18n = {
35
- SIG_GROUP: `${ t('meeting.sigs') }: `,
36
- NEW_DATE: t('meeting.latestMeeting'),
37
- EMPTY_TEXT: t('meeting.meetingEmptyText'),
38
- LEARN_MORE: t('common.seeMore'),
39
- JOIN_MEETING: t('meeting.joinMeeting'),
40
- SIGN: t('meeting.sign'),
41
- };
38
+ const i18n = computed(() => {
39
+ return {
40
+ SIG_GROUP: `${ props.groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs') }: `,
41
+ NEW_DATE: t('meeting.latestMeeting'),
42
+ EMPTY_TEXT: t('meeting.meetingEmptyText'),
43
+ LEARN_MORE: t('common.seeMore'),
44
+ JOIN_MEETING: t('meeting.joinMeeting'),
45
+ SIGN: t('meeting.sign'),
46
+ DETAILS: t('meeting.detail'),
47
+ };
48
+ });
42
49
 
43
50
  const getCurrentIcon = (item) => {
44
51
  if (item.type === 'summit') return IconSummit;
@@ -78,6 +85,21 @@ const computedList = computed(() => {
78
85
  return props.list.map((v) => {
79
86
  const type = v.type;
80
87
  let dateRange = '';
88
+ if (['activity'].includes(type)) {
89
+ let activity_type = acticityTypeMap.get(v.activity_type)?.label;
90
+ if (v.end_date === v.start_date) {
91
+ return {
92
+ ...v,
93
+ activity_type,
94
+ dateRange: `${ formatDate(v.start_date) } ${ v.start }-${ v.end }`,
95
+ };
96
+ }
97
+ return {
98
+ ...v,
99
+ activity_type,
100
+ dateRange: `${ formatDate(v.start_date) } ${ v.start }-${ formatDate(v.end_date) } ${ v.end }`,
101
+ };
102
+ }
81
103
  if (['events', 'summit'].includes(type)) {
82
104
  dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD HH:mm') } ${ formatDate(v.end_date, 'YYYY/MM/DD HH:mm') }`;
83
105
  return {
@@ -163,7 +185,7 @@ const computedList = computed(() => {
163
185
  <component :is="getConfig(item.type, 'icon')" />
164
186
  </OIcon>
165
187
  <div class="text">
166
- {{ item.topic || item.name }}
188
+ {{ item.topic || item.name || item.title }}
167
189
  </div>
168
190
  <div class="tag-wrapper" v-if="item.is_cycle">
169
191
  <OTag color="primary" variant="outline">{{ t('meeting.cycle') }}</OTag>
@@ -195,7 +217,15 @@ const computedList = computed(() => {
195
217
  </OIcon>
196
218
  </template>
197
219
  </OLink>
198
- <OLink v-if="item.signUrl" :href="item.signUrl" target="_blank" class="jump-detail-link">
220
+ <OLink v-if="item.content_url" :href="item.content_url" target="_blank" class="jump-detail-link">
221
+ <span>{{ i18n.DETAILS }}</span>
222
+ <template #suffix>
223
+ <OIcon>
224
+ <IconChevronRight />
225
+ </OIcon>
226
+ </template>
227
+ </OLink>
228
+ <OLink v-if="item.register_url" :href="item.register_url" target="_blank" class="jump-detail-link">
199
229
  <span>{{ i18n.SIGN }}</span>
200
230
  <template #suffix>
201
231
  <OIcon>
@@ -319,12 +349,44 @@ const computedList = computed(() => {
319
349
  }
320
350
 
321
351
  .o-collapse-item-body {
322
- background-color: color-mix(in srgb, var(--o-color-control2-light), transparent 60%);
323
352
  margin-bottom: 0;
353
+ padding: 0 12px 16px 12px;
324
354
 
325
355
  a {
326
356
  word-break: break-all;
327
357
  }
358
+
359
+ .calendar-info {
360
+ display: flex;
361
+ color: var(--o-color-info3);
362
+ flex-direction: column;
363
+ background-color: color-mix(in srgb, var(--o-color-control2-light), transparent 60%);
364
+ padding: 16px 16px 16px calc(var(--icon-right) + var(--icon-size2) + var(--o-gap-5) - 12px);
365
+ border-radius: var(--o-radius-xs);
366
+ @include tip1;
367
+
368
+ @include respond-to('<=pad_v') {
369
+ padding: 16px 16px 16px calc(var(--icon-right) + var(--icon-size2) + 16px - 12px);
370
+
371
+ }
372
+ @include respond-to('phone') {
373
+ padding: 12px 16px;
374
+ }
375
+
376
+ .info-item {
377
+ display: flex;
378
+ margin-top: 8px;
379
+
380
+ .item-title {
381
+ min-width: 110px;
382
+ }
383
+ }
384
+
385
+ .info-item:first-child {
386
+ margin-top: 0;
387
+ }
388
+ }
389
+
328
390
  }
329
391
 
330
392
  .jump-detail-link {
@@ -431,34 +493,6 @@ const computedList = computed(() => {
431
493
  }
432
494
  }
433
495
 
434
- .calendar-info {
435
- display: flex;
436
- color: var(--o-color-info3);
437
- flex-direction: column;
438
- padding: 16px 16px 16px calc(var(--icon-right) + var(--icon-size2) + var(--o-gap-5));
439
- @include tip1;
440
-
441
- @include respond-to('<=pad_v') {
442
- padding: 16px 16px 16px calc(var(--icon-right) + var(--icon-size2) + 16px);
443
-
444
- }
445
- @include respond-to('phone') {
446
- padding: 12px 16px;
447
- }
448
-
449
- .info-item {
450
- display: flex;
451
- margin-top: 8px;
452
-
453
- .item-title {
454
- min-width: 110px;
455
- }
456
- }
457
-
458
- .info-item:first-child {
459
- margin-top: 0;
460
- }
461
- }
462
496
  }
463
497
  }
464
498
 
@@ -33,8 +33,8 @@ const activityInfoList = computed(() =>
33
33
  { label: '起始日期', key: 'start_date_time' },
34
34
  { label: '结束日期', key: 'end_date_time' },
35
35
  { label: '报名截止时间', key: 'register_end_date' },
36
- { label: '活动详情地址', key: 'content_url', isLink: true },
37
36
  { label: '活动地点', key: 'address' },
37
+ { label: '活动详情地址', key: 'content_url', isLink: true },
38
38
  { label: '活动审批人', key: 'approver' },
39
39
  { label: '审核备注', key: 'approve_record', isRecord: true },
40
40
  ].slice(0, props.from === 'home' ? 4 : 7),
@@ -92,7 +92,7 @@ defineExpose({ copyInfo });
92
92
  }"
93
93
  >
94
94
  <template v-if="data[info.key] && !info.isRecord">
95
- <span class="label">{{ info.label }}<i>{{ isZh ? ':' : ':' }}</i></span>
95
+ <span class="label">{{ info.label }}</span>
96
96
  <MoreText :show="show" v-if="info.ellipsis" :text="data[info.key] || '-'" />
97
97
  <OLink
98
98
  v-else-if="info.isLink"
@@ -111,7 +111,7 @@ defineExpose({ copyInfo });
111
111
  </span>
112
112
  </template>
113
113
  <template v-if="info.isRecord && data[info.key]?.length">
114
- <span class="label">{{ info.label }}{{ isZh ? ':' : ':' }}</span>
114
+ <span class="label">{{ info.label }}</span>
115
115
  <div>
116
116
  <p v-for="re in data[info.key]" :key="re.create_time" class="value">
117
117
  {{ re.reason }}&nbsp;&nbsp;
@@ -38,6 +38,22 @@ export interface OptionItemT {
38
38
 
39
39
  export type PlatformT = 'welink' | 'tencent';
40
40
 
41
+ export enum MeetingGroupType {
42
+ SIG = 'sig',
43
+ GROUP = 'group',
44
+ }
45
+
46
+ export interface MeetingCalendarPropsT {
47
+ getDateListRequest: any;
48
+ getMeetingListRequest: any;
49
+ getSummitListRequest: any;
50
+ getSummitDatesRequest: any;
51
+ getEventsListRequest: any;
52
+ getEventsDatesRequest: any;
53
+ hiddenEvents?: boolean;
54
+ hiddenSummit?: boolean;
55
+ groupType: MeetingGroupType;
56
+ }
41
57
  // 会议新增、修改
42
58
  export interface MeetingPostT {
43
59
  id?: number; // 会议id
@@ -75,7 +91,8 @@ export interface MeetingFormPropsT {
75
91
  editSubMeetingRequest: any;
76
92
  getPlatformsRequest: any;
77
93
  getGroupsRequest: any;
78
- showBtns?: boolean
94
+ showBtns?: boolean;
95
+ groupType: MeetingGroupType;
79
96
  }
80
97
 
81
98
  // 会议详情
package/src/i18n/en.ts CHANGED
@@ -49,6 +49,7 @@ export default {
49
49
  'meeting.cycle': 'Recurrence',
50
50
  'meeting.joinMeeting': 'Join',
51
51
  'meeting.sign': 'Sign Up',
52
+ 'meeting.detail': 'View Details',
52
53
  'meeting.meetingSummary': 'Minutes',
53
54
  'meeting.viewRecord': 'Playback',
54
55
  'meeting.editMeeting': 'Modify',
@@ -64,7 +65,9 @@ export default {
64
65
  'meeting.meetingNameTooLong': 'Enter a maximum of 128 characters.',
65
66
  'meeting.meetingAgendaTooLong': 'Enter a maximum of 4096 characters.',
66
67
  'meeting.meetingSig': 'SIG',
68
+ 'meeting.meetingGroup': 'Group',
67
69
  'meeting.selectSig': 'Select a SIG.',
70
+ 'meeting.selectGroup': 'Select a Group.',
68
71
  'meeting.enterEtherpad': 'Enter Etherpad.',
69
72
  'meeting.etherpadDesc': 'A meeting assistant for recording meeting minutes and conversations.',
70
73
  'meeting.selectDate': 'Select a date.',
@@ -118,6 +121,7 @@ export default {
118
121
  'meeting.meetingTypeEvents': 'Activities',
119
122
  'meeting.meetingTypeSummit': 'Summit',
120
123
  'meeting.allSigs': 'All SIGs',
124
+ 'meeting.allGroups': 'All Groups',
121
125
  'meeting.meetingCreator': 'Organizer',
122
126
  'meeting.meetingDate2': 'Time',
123
127
  'meeting.meetingId': 'Meeting ID',
@@ -127,6 +131,7 @@ export default {
127
131
  'meeting.version2509Banner': 'openUBMC 25.09 Available Now',
128
132
  'meeting.version2512Banner': 'openUBMC 25.12 LTS 社区发行版正式上线',
129
133
  'meeting.sigs': 'SIG Groups',
134
+ 'meeting.groups': 'Groups',
130
135
  'meeting.activityAddress': 'Address',
131
136
  'meeting.meetingTopic': 'Topics: ',
132
137
  'meeting.meetingDetail': 'Details',
package/src/i18n/zh.ts CHANGED
@@ -49,6 +49,7 @@ export default {
49
49
  'meeting.cycle': '周期',
50
50
  'meeting.joinMeeting': '加入会议',
51
51
  'meeting.sign': '我要报名',
52
+ 'meeting.detail': '查看详情',
52
53
  'meeting.meetingSummary': '会议纪要',
53
54
  'meeting.viewRecord': '查看回放',
54
55
  'meeting.editMeeting': '修改会议',
@@ -64,7 +65,9 @@ export default {
64
65
  'meeting.meetingNameTooLong': '会议名称不能超过128个字符',
65
66
  'meeting.meetingAgendaTooLong': '会议内容不能超过4096个字符',
66
67
  'meeting.meetingSig': '所属SIG',
68
+ 'meeting.meetingGroup': '工作组',
67
69
  'meeting.selectSig': '请选择所属SIG',
70
+ 'meeting.selectGroup': '请选择工作组',
68
71
  'meeting.enterEtherpad': '请输入会议纪要',
69
72
  'meeting.etherpadDesc': '会议辅助工具,可以在线记录会议纪要和讨论。',
70
73
  'meeting.selectDate': '请选择日期',
@@ -118,6 +121,7 @@ export default {
118
121
  'meeting.meetingTypeEvents': '活动',
119
122
  'meeting.meetingTypeSummit': '峰会',
120
123
  'meeting.allSigs': '全部SIG组',
124
+ 'meeting.allGroups': '全部工作组',
121
125
  'meeting.meetingCreator': '发起人',
122
126
  'meeting.meetingDate2': '会议时间',
123
127
  'meeting.meetingId': '会议ID',
@@ -127,6 +131,7 @@ export default {
127
131
  'meeting.version2509Banner': 'openUBMC 25.09社区发行版正式上线',
128
132
  'meeting.version2512Banner': 'openUBMC 25.12 LTS 社区发行版正式上线',
129
133
  'meeting.sigs': 'SIG 组',
134
+ 'meeting.groups': '工作组',
130
135
  'meeting.activityAddress': '活动地点',
131
136
  'meeting.meetingTopic': '会议主题:',
132
137
  'meeting.meetingDetail': '会议详情',