@opendesign-plus/components 0.0.1-rc.31 → 0.0.1-rc.32
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/dist/chunk-OElCookieNotice.cjs.js +1 -1
- package/dist/chunk-OElCookieNotice.es.js +41 -37
- package/dist/components/header-language-switcher/OHeaderLanguageSwitcher.vue.d.ts +9 -0
- package/dist/components/header-language-switcher/index.d.ts +15 -0
- package/dist/components/meeting/OMeetingPlayback.vue.d.ts +4 -4
- package/dist/components/meeting/OMeetingSigCalendar.vue.d.ts +2 -0
- package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
- package/dist/components/meeting/index.d.ts +8 -2
- package/dist/components/meeting/types.d.ts +2 -0
- package/dist/components.cjs.js +38 -38
- package/dist/components.css +1 -1
- package/dist/components.es.js +8102 -8043
- package/package.json +1 -1
- package/src/assets/meeting/empty.png +0 -0
- package/src/assets/meeting/svg-icons/icon-copy.svg +4 -3
- package/src/assets/meeting/svg-icons/icon-empty.svg +65 -31
- package/src/components/events/OEventsApply.vue +8 -2
- package/src/components/events/OEventsList.vue +1 -3
- package/src/components/header-language-switcher/OHeaderLanguageSwitcher.vue +45 -3
- package/src/components/meeting/OMeetingCalendar.vue +72 -47
- package/src/components/meeting/OMeetingMyCalendar.vue +102 -86
- package/src/components/meeting/OMeetingSigCalendar.vue +91 -30
- package/src/components/meeting/components/OMeetingCalendarList.vue +18 -1
- package/src/components/meeting/components/OMeetingDetail.vue +22 -4
- package/src/components/meeting/components/OMeetingSigAside.vue +6 -5
- package/src/components/meeting/types.ts +2 -0
- package/src/i18n/en.ts +5 -3
- package/src/i18n/zh.ts +2 -0
- 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
|
|
636
|
-
<div
|
|
637
|
-
|
|
638
|
-
|
|
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
|
-
|
|
643
|
-
|
|
644
|
-
|
|
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="
|
|
657
|
-
<
|
|
658
|
-
|
|
659
|
-
|
|
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
|
-
|
|
662
|
+
}}: {{ row.group_name }}
|
|
662
663
|
</span>
|
|
664
|
+
</div>
|
|
663
665
|
</div>
|
|
664
666
|
</div>
|
|
665
|
-
|
|
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
|
-
|
|
686
|
-
|
|
672
|
+
:href="row.join_url"
|
|
673
|
+
rel="noopener noreferrer"
|
|
687
674
|
>
|
|
688
|
-
{{ t('meeting.
|
|
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
|
-
<
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
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(
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
1417
|
-
|
|
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
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
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 {
|
|
4
|
-
|
|
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 emptyDefaultImg from '@/assets/meeting/empty.png';
|
|
13
24
|
|
|
14
25
|
const props = defineProps<{
|
|
15
26
|
sigName: String;
|
|
@@ -17,6 +28,8 @@ const props = defineProps<{
|
|
|
17
28
|
getDateListRequest: any;
|
|
18
29
|
getEventsListRequest: any;
|
|
19
30
|
dates: String[];
|
|
31
|
+
emptyImg?: any;
|
|
32
|
+
emptyText?: string;
|
|
20
33
|
}>();
|
|
21
34
|
const { t, meetingTabs } = useMeetingConfig();
|
|
22
35
|
const { lePadV } = useScreen();
|
|
@@ -34,7 +47,7 @@ const monthIdx = ref(-1);
|
|
|
34
47
|
const clickDateCell2 = (date: string) => {
|
|
35
48
|
clickDateCell(date);
|
|
36
49
|
};
|
|
37
|
-
const changeSelect = (v:
|
|
50
|
+
const changeSelect = (v: any) => {
|
|
38
51
|
clickDateCell(v);
|
|
39
52
|
};
|
|
40
53
|
// 获取所选日期的会议列表
|
|
@@ -79,15 +92,6 @@ const selectTab = () => {
|
|
|
79
92
|
getDates();
|
|
80
93
|
};
|
|
81
94
|
|
|
82
|
-
watch(
|
|
83
|
-
() => lePadV.value,
|
|
84
|
-
() => {
|
|
85
|
-
if (lePadV.value) {
|
|
86
|
-
tabType.value = CalendarDataType.ALL;
|
|
87
|
-
selectTab();
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
);
|
|
91
95
|
// -------------------- 获取有会议的日期 --------------------
|
|
92
96
|
|
|
93
97
|
const getMonthAndDay = (date: string) => {
|
|
@@ -284,16 +288,26 @@ const list = computed(() => {
|
|
|
284
288
|
</OTab>
|
|
285
289
|
</div>
|
|
286
290
|
<template v-if="lePadV && dateList.length">
|
|
287
|
-
<div class="
|
|
288
|
-
<
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
291
|
+
<div class="phone-filter-wrapper">
|
|
292
|
+
<div class="date-select">
|
|
293
|
+
<OSelect v-model="selectDate" @change="changeSelect">
|
|
294
|
+
<OOption
|
|
295
|
+
v-for="date in dateList"
|
|
296
|
+
:key="date"
|
|
297
|
+
:value="date"
|
|
298
|
+
:label="formatDate(date)"
|
|
299
|
+
/>
|
|
300
|
+
</OSelect>
|
|
301
|
+
</div>
|
|
302
|
+
<div>
|
|
303
|
+
<OTab v-model="tabType" @change="selectTab" :line="false" :max-show="9999">
|
|
304
|
+
<OTabPane v-for="item in meetingTabs.slice(0, -1)" :key="item.value" :value="item.value">
|
|
305
|
+
<template #nav>
|
|
306
|
+
{{ item.label }}
|
|
307
|
+
</template>
|
|
308
|
+
</OTabPane>
|
|
309
|
+
</OTab>
|
|
310
|
+
</div>
|
|
297
311
|
</div>
|
|
298
312
|
</template>
|
|
299
313
|
<ODivider class="meeting-divider" v-if="!lePadV || (lePadV && dateList.length)" />
|
|
@@ -316,7 +330,14 @@ const list = computed(() => {
|
|
|
316
330
|
:rows="calendarRows"
|
|
317
331
|
>
|
|
318
332
|
<template #empty>
|
|
319
|
-
<slot name="empty"
|
|
333
|
+
<slot name="empty">
|
|
334
|
+
<OResult class="empty-result">
|
|
335
|
+
<template #image>
|
|
336
|
+
<OFigure class="img" :src="emptyImg ?? emptyDefaultImg" />
|
|
337
|
+
</template>
|
|
338
|
+
<template #description>{{ emptyText ?? t('meeting.meetingEmptyText') }}</template>
|
|
339
|
+
</OResult>
|
|
340
|
+
</slot>
|
|
320
341
|
</template>
|
|
321
342
|
</OMeetingCalendarList>
|
|
322
343
|
</OScroller>
|
|
@@ -335,8 +356,6 @@ const list = computed(() => {
|
|
|
335
356
|
margin-top: var(--o-gap-5);
|
|
336
357
|
@include respond('phone') {
|
|
337
358
|
.meeting-card-header {
|
|
338
|
-
padding: var(--o-gap-3) var(--o-gap-4) 0;
|
|
339
|
-
|
|
340
359
|
.el-input {
|
|
341
360
|
flex-grow: 1;
|
|
342
361
|
}
|
|
@@ -346,11 +365,44 @@ const list = computed(() => {
|
|
|
346
365
|
}
|
|
347
366
|
}
|
|
348
367
|
|
|
349
|
-
.
|
|
350
|
-
|
|
368
|
+
.phone-filter-wrapper {
|
|
369
|
+
display: flex;
|
|
370
|
+
align-items: center;
|
|
371
|
+
justify-content: space-between;
|
|
372
|
+
gap: var(--o-gap-4);
|
|
373
|
+
padding: var(--o-gap-4) var(--o-gap-3) 0 var(--o-gap-3);
|
|
374
|
+
flex-wrap: nowrap;
|
|
375
|
+
@include respond('phone') {
|
|
376
|
+
flex-wrap: wrap;
|
|
377
|
+
flex-direction: column;
|
|
378
|
+
align-items: center;
|
|
379
|
+
gap: var(--o-gap-2);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.date-select {
|
|
383
|
+
padding-bottom: var(--o-gap-2);
|
|
384
|
+
max-width: 240px;
|
|
385
|
+
@include respond('phone') {
|
|
386
|
+
max-width: 100%;
|
|
387
|
+
width: 100%;
|
|
388
|
+
padding-bottom: 0;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.o-select {
|
|
392
|
+
width: 100%;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.o-tab {
|
|
397
|
+
flex-shrink: 0;
|
|
398
|
+
--tab-text-height: calc(var(--tab-nav-text-height) + var(--o-gap-2) + 2px);
|
|
399
|
+
@include respond('phone') {
|
|
400
|
+
--tab-text-height: var(--tab-nav-text-height);
|
|
401
|
+
}
|
|
351
402
|
|
|
352
|
-
|
|
353
|
-
|
|
403
|
+
.o-tab-head {
|
|
404
|
+
line-height: var(--tab-text-height);
|
|
405
|
+
}
|
|
354
406
|
}
|
|
355
407
|
}
|
|
356
408
|
|
|
@@ -358,7 +410,7 @@ const list = computed(() => {
|
|
|
358
410
|
font-weight: 500;
|
|
359
411
|
display: flex;
|
|
360
412
|
align-items: center;
|
|
361
|
-
padding: var(--o-gap-3) var(--o-gap-
|
|
413
|
+
padding: var(--o-gap-3) var(--o-gap-5) 0;
|
|
362
414
|
@include text1;
|
|
363
415
|
@include respond('<=pad') {
|
|
364
416
|
padding: var(--o-gap-3) var(--o-gap-4) 0;
|
|
@@ -435,5 +487,14 @@ const list = computed(() => {
|
|
|
435
487
|
height: auto;
|
|
436
488
|
}
|
|
437
489
|
}
|
|
490
|
+
|
|
491
|
+
.empty-result {
|
|
492
|
+
--result-image-width: 200px;
|
|
493
|
+
--result-image-height: 175px;
|
|
494
|
+
|
|
495
|
+
.o-result-description {
|
|
496
|
+
@include tip1;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
438
499
|
}
|
|
439
500
|
</style>
|
|
@@ -332,6 +332,10 @@ const computedList = computed<any[]>(() => {
|
|
|
332
332
|
display: flex;
|
|
333
333
|
align-items: center;
|
|
334
334
|
justify-content: center;
|
|
335
|
+
@include respond('<=pad_v') {
|
|
336
|
+
min-height: auto;
|
|
337
|
+
padding: var(--o-gap-5) 0;
|
|
338
|
+
}
|
|
335
339
|
}
|
|
336
340
|
|
|
337
341
|
|
|
@@ -430,7 +434,13 @@ const computedList = computed<any[]>(() => {
|
|
|
430
434
|
align-items: center;
|
|
431
435
|
justify-content: center;
|
|
432
436
|
gap: var(--o-gap-4);
|
|
433
|
-
padding-right: var(--o-gap-
|
|
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
|
+
}
|
|
434
444
|
|
|
435
445
|
.meet-title-left {
|
|
436
446
|
flex-grow: 1;
|
|
@@ -438,11 +448,18 @@ const computedList = computed<any[]>(() => {
|
|
|
438
448
|
}
|
|
439
449
|
|
|
440
450
|
.copy-icon {
|
|
451
|
+
font-size: 24px;
|
|
441
452
|
flex-shrink: 0;
|
|
442
453
|
display: inline-flex;
|
|
443
454
|
opacity: 0;
|
|
444
455
|
visibility: hidden;
|
|
445
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
|
+
}
|
|
446
463
|
|
|
447
464
|
&:hover {
|
|
448
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
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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:
|
|
151
|
-
height:
|
|
152
|
-
font-size:
|
|
151
|
+
width: 16px;
|
|
152
|
+
height: 16px;
|
|
153
|
+
font-size: 14px;
|
|
153
154
|
padding: 1px;
|
|
154
155
|
line-height: 1em;
|
|
155
156
|
position: relative;
|
package/src/i18n/en.ts
CHANGED
|
@@ -78,7 +78,7 @@ export default {
|
|
|
78
78
|
'meeting.meetingGroup': 'Group',
|
|
79
79
|
'meeting.selectSig': 'Select a SIG.',
|
|
80
80
|
'meeting.selectGroup': 'Select a Group.',
|
|
81
|
-
'meeting.enterEtherpad': 'Enter
|
|
81
|
+
'meeting.enterEtherpad': 'Enter Meeting Minutes.',
|
|
82
82
|
'meeting.etherpadDesc': 'A meeting assistant for recording meeting minutes and conversations.',
|
|
83
83
|
'meeting.selectDate': 'Select a date.',
|
|
84
84
|
'meeting.finishMeetingConfig': 'Complete the meeting settings.',
|
|
@@ -147,13 +147,15 @@ export default {
|
|
|
147
147
|
'meeting.activityAddress': 'Address',
|
|
148
148
|
'meeting.livePlatform': 'Live Platform',
|
|
149
149
|
'meeting.meetingTopic': 'Topics',
|
|
150
|
+
'meeting.eventsTitle': 'Name',
|
|
151
|
+
'meeting.summitTitle': 'Name',
|
|
150
152
|
'meeting.meetingDetail': 'Details',
|
|
151
|
-
'meeting.meetingEtherpad': '
|
|
153
|
+
'meeting.meetingEtherpad': 'Meeting Minutes',
|
|
152
154
|
'meeting.meetingReplay': 'Playback',
|
|
153
155
|
'meeting.searchSubtitlePlaceholder': 'Enter',
|
|
154
156
|
'meeting.detailHalfYearMeetings': '默认显示近半年的会议。',
|
|
155
157
|
'meeting.tencent': 'Tencent',
|
|
156
|
-
'meeting.etherpad': '
|
|
158
|
+
'meeting.etherpad': 'Meeting Minutes',
|
|
157
159
|
'common.confirm': 'Confirm',
|
|
158
160
|
'common.cancel': 'Cancel',
|
|
159
161
|
'common.copySuccess': 'Copied Successfully',
|
package/src/i18n/zh.ts
CHANGED
|
@@ -146,6 +146,8 @@ export default {
|
|
|
146
146
|
'meeting.activityAddress': '活动地点',
|
|
147
147
|
'meeting.livePlatform': '直播平台',
|
|
148
148
|
'meeting.meetingTopic': '会议主题',
|
|
149
|
+
'meeting.eventsTitle': '活动名称',
|
|
150
|
+
'meeting.summitTitle': '峰会名称',
|
|
149
151
|
'meeting.meetingDetail': '会议详情',
|
|
150
152
|
'meeting.meetingEtherpad': '会议纪要',
|
|
151
153
|
'meeting.meetingReplay': '智能回放',
|