@opendesign-plus-test/components 0.0.1-rc.68 → 0.0.1-rc.70

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 (31) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +4 -0
  3. package/dist/components/config-provider/OPlusConfigProvider.vue.d.ts +3 -2
  4. package/dist/components/config-provider/index.d.ts +3 -0
  5. package/dist/components/footer/OFooter.vue.d.ts +1 -1
  6. package/dist/components/footer/index.d.ts +3 -3
  7. package/dist/components/header-language-switcher/OHeaderLanguageSwitcher.vue.d.ts +9 -0
  8. package/dist/components/header-language-switcher/index.d.ts +15 -0
  9. package/dist/components/meeting/OMeetingPlayback.vue.d.ts +4 -4
  10. package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
  11. package/dist/components/meeting/index.d.ts +2 -2
  12. package/dist/components.cjs.js +38 -38
  13. package/dist/components.css +1 -1
  14. package/dist/components.es.js +7942 -7885
  15. package/package.json +1 -1
  16. package/src/assets/meeting/empty.png +0 -0
  17. package/src/assets/meeting/svg-icons/icon-copy.svg +4 -3
  18. package/src/assets/meeting/svg-icons/icon-empty.svg +65 -31
  19. package/src/components/config-provider/OPlusConfigProvider.vue +3 -3
  20. package/src/components/events/OEventsApply.vue +8 -2
  21. package/src/components/events/OEventsList.vue +1 -3
  22. package/src/components/header-language-switcher/OHeaderLanguageSwitcher.vue +45 -3
  23. package/src/components/meeting/OMeetingCalendar.vue +37 -4
  24. package/src/components/meeting/OMeetingMyCalendar.vue +102 -86
  25. package/src/components/meeting/OMeetingSigCalendar.vue +89 -30
  26. package/src/components/meeting/components/OMeetingCalendarList.vue +37 -13
  27. package/src/components/meeting/components/OMeetingDetail.vue +22 -4
  28. package/src/components/meeting/components/OMeetingSigAside.vue +6 -5
  29. package/src/i18n/en.ts +2 -0
  30. package/src/i18n/zh.ts +2 -0
  31. package/src/assets/meeting/svg-icons/icon-empty_dark.svg +0 -49
@@ -244,7 +244,7 @@ const getDetailRefs = (insRef: any, id: number) => {
244
244
  detailRefs.value[id] = insRef;
245
245
  }
246
246
  };
247
- const copyInfo = async (idx: number) => {
247
+ const copyInfo = async (idx: number | string) => {
248
248
  const instance = detailRefs.value[idx];
249
249
  await instance.copyInfo();
250
250
  message.success({
@@ -632,81 +632,83 @@ const cancelActions = computed<DialogActionT[]>(() => {
632
632
  }"
633
633
  >
634
634
  <template #title>
635
- <div class="item-header-left">
636
- <div
637
- class="meeting-icon"
638
- :style="{
635
+ <div class="item-header">
636
+ <div class="item-header-left">
637
+ <div
638
+ class="meeting-icon"
639
+ :style="{
639
640
  backgroundColor: `${row.is_delete ? 'var(--o-color-info4)' : getConfig(CalendarDataType.MEETING, 'color')}`
640
641
  }"
641
- >
642
- <OIcon>
643
- <component :is="getConfig(CalendarDataType.MEETING, 'icon')" />
644
- </OIcon>
645
- </div>
646
- <div class="header-info">
647
- <div class="meeting-title">
648
- <div v-if="row.is_delete">{{ t('meeting.meetingCancelled') }}</div>
649
- <div class="title-wrapper">
650
- <div class="title-text">{{ row.topic }}</div>
651
- </div>
652
- <div class="tag-wrapper" v-if="row.is_cycle">
653
- <OTag color="primary" variant="outline">{{ t('meeting.cycle') }}</OTag>
654
- </div>
642
+ >
643
+ <OIcon>
644
+ <component :is="getConfig(CalendarDataType.MEETING, 'icon')" />
645
+ </OIcon>
655
646
  </div>
656
- <div class="meeting-info">
657
- <span>{{ row.dateRange }}</span>
658
- <ODivider direction="v" />
659
- <span>
647
+ <div class="header-info">
648
+ <div class="meeting-title">
649
+ <div v-if="row.is_delete">{{ t('meeting.meetingCancelled') }}</div>
650
+ <div class="title-wrapper">
651
+ <div class="title-text">{{ row.topic }}</div>
652
+ </div>
653
+ <div class="tag-wrapper" v-if="row.is_cycle">
654
+ <OTag color="primary" variant="outline">{{ t('meeting.cycle') }}</OTag>
655
+ </div>
656
+ </div>
657
+ <div class="meeting-info">
658
+ <span>{{ row.dateRange }}</span>
659
+ <ODivider direction="v" />
660
+ <span>
660
661
  {{ groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs')
661
- }}: {{ row.group_name }}
662
+ }}: {{ row.group_name }}
662
663
  </span>
664
+ </div>
663
665
  </div>
664
666
  </div>
665
- </div>
666
- <div class="item-header-right" v-if="!row.is_delete">
667
- <OLink
668
- :hover-underline="false"
669
- v-if="!row.isExpired"
670
- target="_blank"
671
- :href="row.join_url"
672
- rel="noopener noreferrer"
673
- >
674
- {{ t('meeting.joinMeeting') }}
675
- <template #suffix>
676
- <OIcon>
677
- <OIconChevronRight></OIconChevronRight>
678
- </OIcon>
679
- </template>
680
- </OLink>
681
- <template v-else>
667
+ <div class="item-header-right" v-if="!row.is_delete">
682
668
  <OLink
683
669
  :hover-underline="false"
670
+ v-if="!row.isExpired"
684
671
  target="_blank"
685
- v-if="row.etherpad"
686
- :href="row.etherpad"
672
+ :href="row.join_url"
673
+ rel="noopener noreferrer"
687
674
  >
688
- {{ t('meeting.meetingSummary') }}
675
+ {{ t('meeting.joinMeeting') }}
689
676
  <template #suffix>
690
677
  <OIcon>
691
678
  <OIconChevronRight></OIconChevronRight>
692
679
  </OIcon>
693
680
  </template>
694
681
  </OLink>
695
- <OLink
696
- :hover-underline="false"
697
- target="_blank"
698
- :href="`/${locale}/video/${row.group_name}/${row.mid}/${row.date}`"
699
- v-if="row.hasObsData">
700
- {{ t('meeting.viewRecord') }}
701
- <template #suffix>
702
- <OIcon>
703
- <OIconChevronRight></OIconChevronRight>
704
- </OIcon>
705
- </template>
706
- </OLink>
707
- </template>
682
+ <template v-else>
683
+ <OLink
684
+ :hover-underline="false"
685
+ target="_blank"
686
+ v-if="row.etherpad"
687
+ :href="row.etherpad"
688
+ >
689
+ {{ t('meeting.meetingSummary') }}
690
+ <template #suffix>
691
+ <OIcon>
692
+ <OIconChevronRight></OIconChevronRight>
693
+ </OIcon>
694
+ </template>
695
+ </OLink>
696
+ <OLink
697
+ :hover-underline="false"
698
+ target="_blank"
699
+ :href="`/${locale}/video/${row.group_name}/${row.mid}/${row.date}`"
700
+ v-if="row.hasObsData">
701
+ {{ t('meeting.viewRecord') }}
702
+ <template #suffix>
703
+ <OIcon>
704
+ <OIconChevronRight></OIconChevronRight>
705
+ </OIcon>
706
+ </template>
707
+ </OLink>
708
+ </template>
709
+ </div>
708
710
  </div>
709
- <OIcon @click.stop="() => copyInfo(rowIdx)" class="copy-icon">
711
+ <OIcon @click.stop="() => copyInfo(row.sub_id || row.id)" class="copy-icon">
710
712
  <IconCopy />
711
713
  </OIcon>
712
714
  </template>
@@ -714,7 +716,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
714
716
  <OMeetingDetail
715
717
  :show="expanded.includes(row.sub_id || row.id)"
716
718
  :data="row"
717
- :ref="(insRef) => getDetailRefs(insRef, row.id)"
719
+ :ref="(insRef) => getDetailRefs(insRef, row.sub_id || row.id)"
718
720
  from="my"
719
721
  />
720
722
  <div class="meeting-btn" v-if="!row.isExpired && !row.is_delete">
@@ -1245,7 +1247,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
1245
1247
  color: var(--o-color-primary1);
1246
1248
  }
1247
1249
  @include respond('>pad_v') {
1248
- --copy-display: inline-flex;
1250
+ --copy-display: block;
1249
1251
  }
1250
1252
  }
1251
1253
 
@@ -1272,7 +1274,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
1272
1274
  background-color: color-mix(in srgb, var(--o-color-control2-light) 40%, transparent) !important;
1273
1275
 
1274
1276
  @include respond('<=pad_v') {
1275
- --copy-display: inline-flex;
1277
+ --copy-display: block;
1276
1278
  }
1277
1279
 
1278
1280
  .o-collapse-item-header {
@@ -1288,31 +1290,33 @@ const cancelActions = computed<DialogActionT[]>(() => {
1288
1290
  display: flex;
1289
1291
  align-items: center;
1290
1292
  gap: var(--o-gap-4);
1291
- position: relative;
1293
+
1294
+ @include respond('laptop') {
1295
+ gap: var(--o-gap-3);
1296
+ }
1297
+
1298
+ @include respond('<=pad') {
1299
+ gap: var(--o-gap-2);
1300
+ }
1292
1301
 
1293
1302
  .o-collapse-item-icon {
1294
- position: relative;
1295
- top: 4px;
1296
1303
  flex-shrink: 0;
1297
- @include respond('phone') {
1298
- position: absolute;
1299
- right: 0;
1300
- width: 20px;
1301
- height: 20px;
1302
- font-size: 20px;
1303
- top: 50%;
1304
- transform: translateY(-50%);
1305
- }
1306
1304
  }
1307
1305
 
1308
1306
  .o-collapse-item-title {
1309
1307
  flex: 1;
1310
1308
  width: 0;
1309
+ min-width: 0;
1311
1310
  display: flex;
1312
- flex-direction: column;
1313
- align-items: flex-start;
1311
+ align-items: center;
1314
1312
  justify-content: space-between;
1315
1313
  margin-bottom: 0;
1314
+ gap: var(--o-gap-4);
1315
+
1316
+ .item-header {
1317
+ flex: 1;
1318
+ min-width: 0;
1319
+ }
1316
1320
  .item-header-left {
1317
1321
  display: flex;
1318
1322
  align-items: flex-start;
@@ -1336,6 +1340,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
1336
1340
  justify-content: center;
1337
1341
  flex-shrink: 0;
1338
1342
  --icon-size2: var(--icon-size);
1343
+ padding: 1px;
1339
1344
 
1340
1345
  .o-icon {
1341
1346
  font-size: calc(var(--icon-size2) - 2px);
@@ -1347,7 +1352,8 @@ const cancelActions = computed<DialogActionT[]>(() => {
1347
1352
  }
1348
1353
 
1349
1354
  .header-info {
1350
- width: calc(100% - var(--o-gap-3) - var(--icon-size));
1355
+ min-width: 0;
1356
+ flex: 1;
1351
1357
 
1352
1358
  .meeting-title {
1353
1359
  font-weight: 500;
@@ -1384,11 +1390,23 @@ const cancelActions = computed<DialogActionT[]>(() => {
1384
1390
  align-items: center;
1385
1391
  font-weight: 400;
1386
1392
  @include tip1;
1393
+ @include respond('phone') {
1394
+ flex-direction: column;
1395
+ align-items: flex-start;
1396
+ }
1387
1397
 
1398
+ .o-divider {
1399
+ @include respond('phone') {
1400
+ display: none;
1401
+ }
1402
+ }
1388
1403
  span:last-child {
1389
1404
  width: 0;
1390
1405
  flex: 1;
1391
1406
  @include text-truncate(1);
1407
+ @include respond('phone') {
1408
+ width: fit-content;
1409
+ }
1392
1410
  }
1393
1411
  }
1394
1412
  }
@@ -1413,18 +1431,16 @@ const cancelActions = computed<DialogActionT[]>(() => {
1413
1431
  }
1414
1432
 
1415
1433
  .copy-icon {
1416
- position: absolute;
1417
- top: 50%;
1418
- transform: translateY(-50%);
1419
- right: calc(var(--collapse-item-icon-size) + var(--o-gap-4));
1420
- font-size: 18px;
1421
- height: 18px;
1422
- width: 18px;
1434
+ flex-shrink: 0;
1435
+ font-size: 24px;
1423
1436
  display: var(--copy-display);
1424
1437
  color: var(--o-color-info1);
1425
- @include respond('phone') {
1426
- bottom: var(--o-gap-2);
1427
- right: calc(20px + var(--o-gap-2))
1438
+ height: 1em;
1439
+ @include respond('<=laptop') {
1440
+ font-size: 20px;
1441
+ }
1442
+ @include respond('<=pad_v') {
1443
+ font-size: 24px;
1428
1444
  }
1429
1445
 
1430
1446
  &:hover {
@@ -1,7 +1,17 @@
1
1
  <script setup lang="ts">
2
2
  import { ref, onMounted, computed, nextTick, watch } from 'vue';
3
- import { ODivider, OPopover, OIcon, OTabPane, OTab, OScroller } from '@opensig/opendesign';
4
- import { ElSelect, ElOption } from 'element-plus';
3
+ import {
4
+ ODivider,
5
+ OPopover,
6
+ OIcon,
7
+ OTabPane,
8
+ OTab,
9
+ OScroller,
10
+ OSelect,
11
+ OOption,
12
+ OFigure,
13
+ OResult,
14
+ } from '@opensig/opendesign';
5
15
  import dayjs from 'dayjs';
6
16
  import IconTips from '~icons/components/icon-tips.svg';
7
17
  import OMeetingSigAside from './components/OMeetingSigAside.vue';
@@ -10,6 +20,7 @@ import { useScreen } from '@opendesign-plus/composables';
10
20
  import { useMeetingConfig } from './composables/useMeetingConfig';
11
21
  import OMeetingCalendarList from '@/components/meeting/components/OMeetingCalendarList.vue';
12
22
  import { formatDate } from '@/components/meeting/utils.ts';
23
+ import emptyImg from '@/assets/meeting/empty.png';
13
24
 
14
25
  const props = defineProps<{
15
26
  sigName: String;
@@ -34,7 +45,7 @@ const monthIdx = ref(-1);
34
45
  const clickDateCell2 = (date: string) => {
35
46
  clickDateCell(date);
36
47
  };
37
- const changeSelect = (v: string) => {
48
+ const changeSelect = (v: any) => {
38
49
  clickDateCell(v);
39
50
  };
40
51
  // 获取所选日期的会议列表
@@ -79,15 +90,6 @@ const selectTab = () => {
79
90
  getDates();
80
91
  };
81
92
 
82
- watch(
83
- () => lePadV.value,
84
- () => {
85
- if (lePadV.value) {
86
- tabType.value = CalendarDataType.ALL;
87
- selectTab();
88
- }
89
- },
90
- );
91
93
  // -------------------- 获取有会议的日期 --------------------
92
94
 
93
95
  const getMonthAndDay = (date: string) => {
@@ -284,16 +286,26 @@ const list = computed(() => {
284
286
  </OTab>
285
287
  </div>
286
288
  <template v-if="lePadV && dateList.length">
287
- <div class="date-select">
288
- <ElSelect v-model="selectDate" @change="changeSelect">
289
- <template #label>{{ t('meeting.latestMeeting') }} {{ formatDate(selectDate) }}</template>
290
- <ElOption
291
- v-for="date in dateList"
292
- :key="date"
293
- :value="date"
294
- :label="formatDate(date)"
295
- />
296
- </ElSelect>
289
+ <div class="phone-filter-wrapper">
290
+ <div class="date-select">
291
+ <OSelect v-model="selectDate" @change="changeSelect">
292
+ <OOption
293
+ v-for="date in dateList"
294
+ :key="date"
295
+ :value="date"
296
+ :label="formatDate(date)"
297
+ />
298
+ </OSelect>
299
+ </div>
300
+ <div>
301
+ <OTab v-model="tabType" @change="selectTab" :line="false" :max-show="9999">
302
+ <OTabPane v-for="item in meetingTabs.slice(0, -1)" :key="item.value" :value="item.value">
303
+ <template #nav>
304
+ {{ item.label }}
305
+ </template>
306
+ </OTabPane>
307
+ </OTab>
308
+ </div>
297
309
  </div>
298
310
  </template>
299
311
  <ODivider class="meeting-divider" v-if="!lePadV || (lePadV && dateList.length)" />
@@ -316,7 +328,14 @@ const list = computed(() => {
316
328
  :rows="calendarRows"
317
329
  >
318
330
  <template #empty>
319
- <slot name="empty"></slot>
331
+ <slot name="empty">
332
+ <OResult class="empty-result">
333
+ <template #image>
334
+ <OFigure class="img" :src="emptyImg" />
335
+ </template>
336
+ <template #description>{{ t('meeting.meetingEmptyText') }}</template>
337
+ </OResult>
338
+ </slot>
320
339
  </template>
321
340
  </OMeetingCalendarList>
322
341
  </OScroller>
@@ -335,8 +354,6 @@ const list = computed(() => {
335
354
  margin-top: var(--o-gap-5);
336
355
  @include respond('phone') {
337
356
  .meeting-card-header {
338
- padding: var(--o-gap-3) var(--o-gap-4) 0;
339
-
340
357
  .el-input {
341
358
  flex-grow: 1;
342
359
  }
@@ -346,11 +363,44 @@ const list = computed(() => {
346
363
  }
347
364
  }
348
365
 
349
- .date-select {
350
- padding: var(--o-gap-4);
366
+ .phone-filter-wrapper {
367
+ display: flex;
368
+ align-items: center;
369
+ justify-content: space-between;
370
+ gap: var(--o-gap-4);
371
+ padding: var(--o-gap-4) var(--o-gap-3) 0 var(--o-gap-3);
372
+ flex-wrap: nowrap;
373
+ @include respond('phone') {
374
+ flex-wrap: wrap;
375
+ flex-direction: column;
376
+ align-items: center;
377
+ gap: var(--o-gap-2);
378
+ }
379
+
380
+ .date-select {
381
+ padding-bottom: var(--o-gap-2);
382
+ max-width: 240px;
383
+ @include respond('phone') {
384
+ max-width: 100%;
385
+ width: 100%;
386
+ padding-bottom: 0;
387
+ }
388
+
389
+ .o-select {
390
+ width: 100%;
391
+ }
392
+ }
393
+
394
+ .o-tab {
395
+ flex-shrink: 0;
396
+ --tab-text-height: calc(var(--tab-nav-text-height) + var(--o-gap-2) + 2px);
397
+ @include respond('phone') {
398
+ --tab-text-height: var(--tab-nav-text-height);
399
+ }
351
400
 
352
- .o-select {
353
- width: 100%;
401
+ .o-tab-head {
402
+ line-height: var(--tab-text-height);
403
+ }
354
404
  }
355
405
  }
356
406
 
@@ -358,7 +408,7 @@ const list = computed(() => {
358
408
  font-weight: 500;
359
409
  display: flex;
360
410
  align-items: center;
361
- padding: var(--o-gap-3) var(--o-gap-6) 0;
411
+ padding: var(--o-gap-3) var(--o-gap-5) 0;
362
412
  @include text1;
363
413
  @include respond('<=pad') {
364
414
  padding: var(--o-gap-3) var(--o-gap-4) 0;
@@ -435,5 +485,14 @@ const list = computed(() => {
435
485
  height: auto;
436
486
  }
437
487
  }
488
+
489
+ .empty-result {
490
+ --result-image-width: 200px;
491
+ --result-image-height: 175px;
492
+
493
+ .o-result-description {
494
+ @include tip1;
495
+ }
496
+ }
438
497
  }
439
498
  </style>
@@ -95,19 +95,26 @@ const computedList = computed<any[]>(() => {
95
95
  let end_date_time = '';
96
96
  if (type !== CalendarDataType.MEETING) {
97
97
  let activity_type = activityTypeMap.value.get(v.activity_type)?.label;
98
+ const isSameDay = v.start_date && (v.start_date === v.end_date || !v.end_date);
98
99
  if (v.start_date) {
99
100
  dateRange = props.disableFormat ? v.start_date : formatDate(v.start_date);
100
101
  }
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) }`;
102
+ if (isSameDay) {
103
+ if (v.start) {
104
+ dateRange += `${ dateRange ? ' ' : '' }${ v.start }`;
105
+ if (v.end) {
106
+ dateRange += `${ dateRange ? ' - ' : '' }${ v.end }`;
107
+ }
108
108
  }
109
- if (v.end) {
110
- dateRange += `${ dateRange ? ' ' : '' }${ v.end }`;
109
+ } else {
110
+ if (v.start) {
111
+ dateRange += `${ dateRange ? ' ' : '' }${ v.start }`;
112
+ }
113
+ if (v.end_date) {
114
+ dateRange += `${ dateRange ? ' - ' : '' }${ props.disableFormat ? v.end_date : formatDate(v.end_date) }`;
115
+ if (v.end) {
116
+ dateRange += `${ dateRange ? ' ' : '' }${ v.end }`;
117
+ }
111
118
  }
112
119
  }
113
120
  if (v.start_date) {
@@ -120,7 +127,7 @@ const computedList = computed<any[]>(() => {
120
127
  end_date_time = props.disableFormat ? v.end_date : formatDate(v.end_date);
121
128
  }
122
129
  if (v.end) {
123
- end_date_time += `${ start_date_time ? ' ' : '' }${ v.end }`;
130
+ end_date_time += `${ end_date_time ? ' ' : '' }${ v.end }`;
124
131
  }
125
132
 
126
133
  return {
@@ -146,9 +153,9 @@ const computedList = computed<any[]>(() => {
146
153
  } = v;
147
154
  dateRange = props.disableFormat ? date : formatDate(date);
148
155
  if (start && end) {
149
- dateRange += `${ dateRange ? ' ' : '' } ${ start } - ${ end }`;
156
+ dateRange += `${ dateRange ? ' ' : '' }${ start } - ${ end }`;
150
157
  } else if (start || end) {
151
- dateRange += `${ dateRange ? ' ' : '' } ${ start || end }`;
158
+ dateRange += `${ dateRange ? ' ' : '' }${ start || end }`;
152
159
  }
153
160
  if (is_cycle) {
154
161
  dateRange = `${ props.disableFormat ? cycle_start_date : formatDate(cycle_start_date) } - ${ props.disableFormat ? cycle_end_date : formatDate(cycle_end_date) }`;
@@ -325,6 +332,10 @@ const computedList = computed<any[]>(() => {
325
332
  display: flex;
326
333
  align-items: center;
327
334
  justify-content: center;
335
+ @include respond('<=pad_v') {
336
+ min-height: auto;
337
+ padding: var(--o-gap-5) 0;
338
+ }
328
339
  }
329
340
 
330
341
 
@@ -423,7 +434,13 @@ const computedList = computed<any[]>(() => {
423
434
  align-items: center;
424
435
  justify-content: center;
425
436
  gap: var(--o-gap-4);
426
- padding-right: var(--o-gap-5);
437
+ padding-right: var(--o-gap-4);
438
+ @include respond('laptop') {
439
+ padding-right: var(--o-gap-3);
440
+ }
441
+ @include respond('<=pad') {
442
+ padding-right: var(--o-gap-2);
443
+ }
427
444
 
428
445
  .meet-title-left {
429
446
  flex-grow: 1;
@@ -431,11 +448,18 @@ const computedList = computed<any[]>(() => {
431
448
  }
432
449
 
433
450
  .copy-icon {
451
+ font-size: 24px;
434
452
  flex-shrink: 0;
435
453
  display: inline-flex;
436
454
  opacity: 0;
437
455
  visibility: hidden;
438
456
  color: var(--o-color-info1);
457
+ @include respond('<=laptop') {
458
+ font-size: 20px;
459
+ }
460
+ @include respond('<=pad_v') {
461
+ font-size: 24px;
462
+ }
439
463
 
440
464
  &:hover {
441
465
  color: var(--o-color-primary1);
@@ -15,7 +15,7 @@ const props = defineProps<{
15
15
  }>();
16
16
  const { t, getPlatformLabel } = useMeetingConfig();
17
17
  const { locale } = useI18n();
18
- const isZh = computed(() => locale.value === 'zh');
18
+ const isEn = computed(() => locale.value === 'en');
19
19
  // 会议详情配置
20
20
  const infoList = computed(() =>
21
21
  [
@@ -92,13 +92,24 @@ const columns = computed<ColumnItemT[]>(() => {
92
92
 
93
93
  const domRef = ref([]);
94
94
  const SPLIT_MARK = '|';
95
+
96
+ const titleMap = ref<Record<CalendarDataType, string>>({
97
+ [CalendarDataType.ALL]: t('meeting.meetingTopic'),
98
+ [CalendarDataType.MEETING]: t('meeting.meetingTopic'),
99
+ [CalendarDataType.EVENTS]: t('meeting.eventsTitle'),
100
+ [CalendarDataType.APPROVAL]: t('meeting.eventsTitle'),
101
+ [CalendarDataType.SUMMIT]: t('meeting.summitTitle'),
102
+ });
95
103
  // 复制会议内容
96
104
  const copyInfo = () => {
97
105
  try {
98
- const colon = isZh.value ? ':' : ': ';
99
- let text = `${ t('meeting.meetingTopic') }${ colon }${ props.data.topic || props.data.name || props.data.title }\n`;
106
+ const colon = !isEn.value ? ':' : ': ';
107
+ let text = `${ titleMap.value[props.data.type] ?? t('meeting.meetingTopic') }${ colon }${ props.data.topic || props.data.name || props.data.title }\n`;
100
108
  text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => {
101
- return `${ pre }${ cur.textContent ? cur.textContent.replace(SPLIT_MARK, colon) : '' }\n`;
109
+ if (cur.textContent) {
110
+ return `${ pre }${ cur.textContent ? cur.textContent.replace(SPLIT_MARK, colon) : '' }\n`;
111
+ }
112
+ return pre;
102
113
  }, '');
103
114
  navigator.clipboard.writeText(text);
104
115
  return Promise.resolve();
@@ -122,6 +133,7 @@ defineExpose({ copyInfo });
122
133
  'is-empty':!getField(info.key)?.length,
123
134
  [`label-item_${data.id}`]: true,
124
135
  [`type_${data.type}`]: true,
136
+ 'is-en': isEn,
125
137
  }"
126
138
  >
127
139
  <template v-if="getField(info.key) && !info.isRecord">
@@ -190,6 +202,12 @@ defineExpose({ copyInfo });
190
202
  }
191
203
  }
192
204
 
205
+ &.is-en {
206
+ .label {
207
+ width: 6em;
208
+ }
209
+ }
210
+
193
211
  .label {
194
212
  width: 4em;
195
213
  flex-shrink: 0;
@@ -80,7 +80,7 @@ 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);
83
+ padding: var(--o-gap-4) var(--o-gap-5);
84
84
  display: flex;
85
85
  flex-direction: column;
86
86
  border-right: 1px solid var(--o-color-control4);
@@ -91,7 +91,7 @@ const changeMonth = (step: number) => {
91
91
  border-right: none;
92
92
  }
93
93
  @include respond('phone') {
94
- padding: 16px;
94
+ padding: var(--o-gap-4);
95
95
  .title {
96
96
  margin-bottom: var(--o-gap-2);
97
97
  }
@@ -139,6 +139,7 @@ const changeMonth = (step: number) => {
139
139
  font-weight: 500;
140
140
  margin-bottom: var(--o-gap-1);
141
141
  color: var(--o-color-info1);
142
+ @include tip1;
142
143
  }
143
144
 
144
145
  .day-c {
@@ -147,9 +148,9 @@ const changeMonth = (step: number) => {
147
148
  flex-wrap: nowrap;
148
149
 
149
150
  .o-icon {
150
- width: 20px;
151
- height: 20px;
152
- font-size: 18px;
151
+ width: 16px;
152
+ height: 16px;
153
+ font-size: 14px;
153
154
  padding: 1px;
154
155
  line-height: 1em;
155
156
  position: relative;