@opendesign-plus-test/components 0.0.1-rc.62 → 0.0.1-rc.64
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 +2 -2
- package/dist/components/activity/OActivityMyCalendar.vue.d.ts +6 -2
- package/dist/components/activity/index.d.ts +3 -1
- package/dist/components/events/types.d.ts +4 -0
- package/dist/components/header/index.d.ts +1 -804
- package/dist/components/{header → header-language-switcher}/OHeaderLanguageSwitcher.vue.d.ts +1 -1
- package/dist/components/header-language-switcher/index.d.ts +90 -0
- package/dist/components/{header → header-search}/OHeaderSearch.vue.d.ts +24 -4
- package/dist/components/header-search/index.d.ts +607 -0
- package/dist/components/header-source-code/index.d.ts +23 -0
- package/dist/components/header-theme/index.d.ts +50 -0
- package/dist/components/header-user/index.d.ts +53 -0
- package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +6 -2
- package/dist/components/meeting/index.d.ts +3 -1
- package/dist/components/meeting/types.d.ts +3 -0
- package/dist/components/meeting/utils.d.ts +2 -1
- package/dist/components/search/OSearchInput.vue.d.ts +24 -4
- package/dist/components/search/index.d.ts +12 -2
- package/dist/components/search/internal/SearchImageInput.vue.d.ts +24 -4
- package/dist/components.cjs.js +33 -33
- package/dist/components.css +1 -1
- package/dist/components.es.js +8263 -8095
- package/dist/index.d.ts +5 -0
- package/package.json +8 -8
- package/src/assets/meeting/svg-icons/icon-all.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-event.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-meet.svg +2 -1
- package/src/assets/meeting/svg-icons/icon-summit.svg +2 -1
- package/src/assets/styles/element-plus.scss +2 -0
- package/src/components/activity/OActivityMyCalendar.vue +18 -11
- package/src/components/events/OEventsApply.vue +0 -2
- package/src/components/events/OEventsList.vue +66 -39
- package/src/components/events/types.ts +1 -0
- package/src/components/header/index.ts +1 -36
- package/src/components/header-language-switcher/index.ts +10 -0
- package/src/components/header-search/index.ts +10 -0
- package/src/components/header-source-code/index.ts +10 -0
- package/src/components/header-theme/index.ts +10 -0
- package/src/components/header-user/index.ts +10 -0
- package/src/components/meeting/OMeetingCalendar.vue +22 -14
- package/src/components/meeting/OMeetingForm.vue +17 -21
- package/src/components/meeting/OMeetingMyCalendar.vue +25 -29
- package/src/components/meeting/OMeetingSigCalendar.vue +43 -20
- package/src/components/meeting/components/OMeetingCalendarList.vue +31 -19
- package/src/components/meeting/components/OMeetingDetail.vue +2 -2
- package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +1 -1
- package/src/components/meeting/components/OMeetingSigAside.vue +11 -6
- package/src/components/meeting/types.ts +4 -1
- package/src/components/meeting/utils.ts +4 -4
- package/src/i18n/en.ts +1 -1
- package/src/i18n/zh.ts +1 -1
- package/src/index.ts +5 -0
- package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +0 -664
- /package/dist/components/{header → header-source-code}/OHeaderSourceCode.vue.d.ts +0 -0
- /package/dist/components/{header → header-theme}/OHeaderTheme.vue.d.ts +0 -0
- /package/dist/components/{header → header-user}/OHeaderUser.vue.d.ts +0 -0
- /package/src/components/{header → header-language-switcher}/OHeaderLanguageSwitcher.vue +0 -0
- /package/src/components/{header → header-search}/OHeaderSearch.vue +0 -0
- /package/src/components/{header → header-source-code}/OHeaderSourceCode.vue +0 -0
- /package/src/components/{header → header-theme}/OHeaderTheme.vue +0 -0
- /package/src/components/{header → header-user}/OHeaderUser.vue +0 -0
|
@@ -514,7 +514,7 @@ defineExpose({
|
|
|
514
514
|
<template>
|
|
515
515
|
<div class="o-meeting-form">
|
|
516
516
|
<OForm :model="form" ref="formRef" has-required :layout="lePadV ? 'v' : 'h'" class="form-wrapper">
|
|
517
|
-
<OFormItem :rules="rules.topic" :label="t('meeting.meetingName')" field="topic">
|
|
517
|
+
<OFormItem :rules="rules.topic" :label="labelMap?.topic ?? t('meeting.meetingName')" field="topic">
|
|
518
518
|
<OInput
|
|
519
519
|
:disabled="isSub"
|
|
520
520
|
size="large"
|
|
@@ -524,7 +524,7 @@ defineExpose({
|
|
|
524
524
|
</OFormItem>
|
|
525
525
|
<OFormItem
|
|
526
526
|
:rules="rules.group_name"
|
|
527
|
-
:label="groupType === MeetingGroupType.GROUP ? t('meeting.meetingGroup'):t('meeting.meetingSig')"
|
|
527
|
+
:label="labelMap?.group_name ?? (groupType === MeetingGroupType.GROUP ? t('meeting.meetingGroup') : t('meeting.meetingSig'))"
|
|
528
528
|
field="group_name">
|
|
529
529
|
<OSelect
|
|
530
530
|
:disabled="isEdit"
|
|
@@ -539,7 +539,8 @@ defineExpose({
|
|
|
539
539
|
</OFormItem>
|
|
540
540
|
<OFormItem :rules="rules.etherpad" label="Etherpad" field="etherpad" v-if="form.group_name">
|
|
541
541
|
<template #label>
|
|
542
|
-
<
|
|
542
|
+
<template v-if="labelMap?.etherpad">{{ labelMap.etherpad }}</template>
|
|
543
|
+
<div v-else class="label-wrapper">
|
|
543
544
|
<span>{{ t('meeting.etherpad') }} </span>
|
|
544
545
|
<OPopover>
|
|
545
546
|
<div class="o-meeting-form-popover-content etherpad">{{ t('meeting.etherpadDesc') }}</div>
|
|
@@ -560,9 +561,9 @@ defineExpose({
|
|
|
560
561
|
/>
|
|
561
562
|
</OFormItem>
|
|
562
563
|
|
|
563
|
-
<OFormItem :label="t('meeting.meetingTime')" field="time" :rules="rules.time" class="repeat-row" required>
|
|
564
|
+
<OFormItem :label="labelMap?.time ?? t('meeting.meetingTime')" field="time" :rules="rules.time" class="repeat-row" required>
|
|
564
565
|
<div class="repeat-config-wrapper">
|
|
565
|
-
<OFormItem field="repeat" class="repeat-item" v-if="!isSub">
|
|
566
|
+
<OFormItem field="repeat" class="repeat-radio-item" v-if="!isSub">
|
|
566
567
|
<ORadioGroup v-model="form.is_cycle" @change="changeIsCycle" :disabled="isEdit">
|
|
567
568
|
<ORadio :value="false">{{ t('meeting.nonRepeat') }}</ORadio>
|
|
568
569
|
<ORadio :value="true">{{ t('meeting.isRepeat') }}</ORadio>
|
|
@@ -589,7 +590,7 @@ defineExpose({
|
|
|
589
590
|
</div>
|
|
590
591
|
</OFormItem>
|
|
591
592
|
<OFormItem
|
|
592
|
-
:label="t('meeting.in')"
|
|
593
|
+
:label="labelMap?.cycle_point ?? t('meeting.in')"
|
|
593
594
|
field="cycle_point"
|
|
594
595
|
class="point-item"
|
|
595
596
|
v-if="form.cycle_type !== INTERVAL_DAY"
|
|
@@ -606,7 +607,7 @@ defineExpose({
|
|
|
606
607
|
</OSelect>
|
|
607
608
|
<OMeetingCalendarSelector v-if="form.cycle_type === INTERVAL_MONTH" v-model="form.cycle_point" />
|
|
608
609
|
</OFormItem>
|
|
609
|
-
<OFormItem :label="t('meeting.meetingDuration')" field="date_range">
|
|
610
|
+
<OFormItem :label="labelMap?.date_range ?? t('meeting.meetingDuration')" field="date_range">
|
|
610
611
|
<ElDatePicker
|
|
611
612
|
size="large"
|
|
612
613
|
v-model="form.date_range"
|
|
@@ -622,7 +623,7 @@ defineExpose({
|
|
|
622
623
|
</OFormItem>
|
|
623
624
|
</template>
|
|
624
625
|
<template v-else>
|
|
625
|
-
<OFormItem :label="t('meeting.meetingDate')" field="date">
|
|
626
|
+
<OFormItem :label="labelMap?.date ?? t('meeting.meetingDate')" field="date">
|
|
626
627
|
<ElDatePicker
|
|
627
628
|
popper-class="o-meeting-form-date-picker-popper"
|
|
628
629
|
size="large"
|
|
@@ -671,14 +672,14 @@ defineExpose({
|
|
|
671
672
|
</div>
|
|
672
673
|
</div>
|
|
673
674
|
</OFormItem>
|
|
674
|
-
<OFormItem :label="t('meeting.meetingPlatform')" field="platform" :rules="rules.platform" class="platform-item">
|
|
675
|
+
<OFormItem :label="labelMap?.platform ?? t('meeting.meetingPlatform')" field="platform" :rules="rules.platform" class="platform-item">
|
|
675
676
|
<ORadioGroup v-model="form.platform" v-if="!data" :disabled="form.is_cycle">
|
|
676
677
|
<ORadio v-for="item in typeOptions" :key="item.value" :value="item.value">{{ getPlatformLabel(item.label) }}
|
|
677
678
|
</ORadio>
|
|
678
679
|
</ORadioGroup>
|
|
679
680
|
<span v-else>{{ getPlatformLabel(form.platform) }}</span>
|
|
680
681
|
</OFormItem>
|
|
681
|
-
<OFormItem field="agenda" :label="t('meeting.meetingAgenda')" :rules="rules.genda">
|
|
682
|
+
<OFormItem field="agenda" :label="labelMap?.agenda ?? t('meeting.meetingAgenda')" :rules="rules.genda">
|
|
682
683
|
<OTextarea
|
|
683
684
|
:disabled="isSub"
|
|
684
685
|
size="large"
|
|
@@ -686,7 +687,7 @@ defineExpose({
|
|
|
686
687
|
style="width: 100%"
|
|
687
688
|
:rows="4" v-model="form.agenda" />
|
|
688
689
|
</OFormItem>
|
|
689
|
-
<OFormItem :label="t('meeting.meetingRecord')" field="is_record" class="record-item full-width-item">
|
|
690
|
+
<OFormItem :label="labelMap?.is_record ?? t('meeting.meetingRecord')" field="is_record" class="record-item full-width-item">
|
|
690
691
|
<template v-if="lePadV">
|
|
691
692
|
<OSwitch v-model="form.is_record" :disabled="isSub" />
|
|
692
693
|
</template>
|
|
@@ -723,7 +724,8 @@ defineExpose({
|
|
|
723
724
|
</template>
|
|
724
725
|
<OFormItem field="email_list" :rules="rules.email_list">
|
|
725
726
|
<template #label>
|
|
726
|
-
<
|
|
727
|
+
<template v-if="labelMap?.email_list">{{ labelMap.email_list }}</template>
|
|
728
|
+
<div v-else class="label-wrapper">
|
|
727
729
|
<span>{{ t('meeting.meetingEmail') }} </span>
|
|
728
730
|
<OPopover>
|
|
729
731
|
<div class="o-meeting-form-popover-content">
|
|
@@ -773,7 +775,7 @@ defineExpose({
|
|
|
773
775
|
}
|
|
774
776
|
|
|
775
777
|
.o-form {
|
|
776
|
-
--o-input-color: var(--o-color-
|
|
778
|
+
--o-input-color: var(--o-color-info1);
|
|
777
779
|
--o-placeholder-color: var(--o-color-info4);
|
|
778
780
|
|
|
779
781
|
|
|
@@ -995,7 +997,8 @@ defineExpose({
|
|
|
995
997
|
.repeat-config-wrapper {
|
|
996
998
|
width: 100%;
|
|
997
999
|
|
|
998
|
-
.repeat-item {
|
|
1000
|
+
.repeat-radio-item {
|
|
1001
|
+
margin-bottom: var(--o-gap-2);
|
|
999
1002
|
.o-form-item-label {
|
|
1000
1003
|
display: none;
|
|
1001
1004
|
}
|
|
@@ -1003,13 +1006,6 @@ defineExpose({
|
|
|
1003
1006
|
.o-form-item-main {
|
|
1004
1007
|
margin-left: 0;
|
|
1005
1008
|
}
|
|
1006
|
-
|
|
1007
|
-
@include respond('pad_v') {
|
|
1008
|
-
margin-bottom: var(--o-gap-4);
|
|
1009
|
-
}
|
|
1010
|
-
@include respond('phone') {
|
|
1011
|
-
margin-bottom: var(--o-gap-3);
|
|
1012
|
-
}
|
|
1013
1009
|
}
|
|
1014
1010
|
|
|
1015
1011
|
.repeat-config {
|
|
@@ -58,7 +58,6 @@ const emits = defineEmits(['edit']);
|
|
|
58
58
|
// -------------------- 自动加载下一页 --------------------
|
|
59
59
|
const nextLoading = ref(false);
|
|
60
60
|
const bottomReached = ref(false);
|
|
61
|
-
const headerRef = ref();
|
|
62
61
|
|
|
63
62
|
const getList = async () => {
|
|
64
63
|
if (!props.getMeetingListRequest) {
|
|
@@ -467,14 +466,11 @@ onMounted(() => {
|
|
|
467
466
|
window.addEventListener('scroll', handleScroll);
|
|
468
467
|
// 添加resize监听器
|
|
469
468
|
window.addEventListener('resize', handleScroll);
|
|
470
|
-
getHeaderHeight();
|
|
471
|
-
window.addEventListener('resize', getHeaderHeight);
|
|
472
469
|
});
|
|
473
470
|
|
|
474
471
|
onUnmounted(() => {
|
|
475
472
|
window.removeEventListener('scroll', handleScroll);
|
|
476
473
|
window.removeEventListener('resize', handleScroll);
|
|
477
|
-
window.removeEventListener('resize', getHeaderHeight);
|
|
478
474
|
const scrollerContainerEl = scrollerRef.value?.getContainerEl();
|
|
479
475
|
scrollerContainerEl?.removeEventListener('scroll', scrollerScroll);
|
|
480
476
|
});
|
|
@@ -631,6 +627,8 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
631
627
|
:value="row.sub_id || row.id"
|
|
632
628
|
:class="{
|
|
633
629
|
'last-item': idx === groupList.length - 1 && rowIdx === group.list.length - 1,
|
|
630
|
+
'is-delete': row.is_delete,
|
|
631
|
+
'is-end': row.isExpired,
|
|
634
632
|
}"
|
|
635
633
|
>
|
|
636
634
|
<template #title>
|
|
@@ -638,7 +636,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
638
636
|
<div
|
|
639
637
|
class="meeting-icon"
|
|
640
638
|
:style="{
|
|
641
|
-
backgroundColor: `${getConfig(CalendarDataType.MEETING, 'color')}`
|
|
639
|
+
backgroundColor: `${row.is_delete ? 'var(--o-color-info4)' : getConfig(CalendarDataType.MEETING, 'color')}`
|
|
642
640
|
}"
|
|
643
641
|
>
|
|
644
642
|
<OIcon>
|
|
@@ -646,13 +644,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
646
644
|
</OIcon>
|
|
647
645
|
</div>
|
|
648
646
|
<div class="header-info">
|
|
649
|
-
<div
|
|
650
|
-
:class="{
|
|
651
|
-
'meeting-title': true,
|
|
652
|
-
'is-delete': row.is_delete,
|
|
653
|
-
'is-end': row.isExpired,
|
|
654
|
-
}"
|
|
655
|
-
>
|
|
647
|
+
<div class="meeting-title">
|
|
656
648
|
<div v-if="row.is_delete">{{ t('meeting.meetingCancelled') }}</div>
|
|
657
649
|
<div class="title-wrapper">
|
|
658
650
|
<div class="title-text">{{ row.topic }}</div>
|
|
@@ -1005,7 +997,8 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1005
997
|
|
|
1006
998
|
&.is-today {
|
|
1007
999
|
.date-cell-text {
|
|
1008
|
-
color:
|
|
1000
|
+
color: var(--o-color-primary1);
|
|
1001
|
+
font-weight: bold;
|
|
1009
1002
|
background-color: var(--o-color-control3-light);
|
|
1010
1003
|
}
|
|
1011
1004
|
}
|
|
@@ -1032,9 +1025,6 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1032
1025
|
}
|
|
1033
1026
|
}
|
|
1034
1027
|
|
|
1035
|
-
.is-today {
|
|
1036
|
-
color: inherit;
|
|
1037
|
-
}
|
|
1038
1028
|
}
|
|
1039
1029
|
}
|
|
1040
1030
|
}
|
|
@@ -1075,14 +1065,14 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1075
1065
|
padding-left: 24px;
|
|
1076
1066
|
position: relative;
|
|
1077
1067
|
|
|
1078
|
-
&.last-item {
|
|
1079
|
-
flex-grow: 1;
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
1068
|
@include respond('phone') {
|
|
1083
1069
|
padding-left: var(--o-gap-2);
|
|
1084
1070
|
}
|
|
1085
1071
|
|
|
1072
|
+
&.last-item {
|
|
1073
|
+
flex-grow: 1;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1086
1076
|
.group-bar {
|
|
1087
1077
|
position: absolute;
|
|
1088
1078
|
left: 0;
|
|
@@ -1264,6 +1254,19 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1264
1254
|
border-bottom: none;
|
|
1265
1255
|
}
|
|
1266
1256
|
}
|
|
1257
|
+
|
|
1258
|
+
&.is-delete,
|
|
1259
|
+
&.is-end {
|
|
1260
|
+
|
|
1261
|
+
.meeting-title {
|
|
1262
|
+
color: var(--o-color-info4);
|
|
1263
|
+
|
|
1264
|
+
.title-text {
|
|
1265
|
+
color: var(--o-color-info4);
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1267
1270
|
&.o-collapse-item-expanded {
|
|
1268
1271
|
border-bottom: none;
|
|
1269
1272
|
background-color: color-mix(in srgb, var(--o-color-control2-light) 40%, transparent) !important;
|
|
@@ -1332,8 +1335,10 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1332
1335
|
align-items: center;
|
|
1333
1336
|
justify-content: center;
|
|
1334
1337
|
flex-shrink: 0;
|
|
1338
|
+
--icon-size2: var(--icon-size);
|
|
1335
1339
|
|
|
1336
1340
|
.o-icon {
|
|
1341
|
+
font-size: calc(var(--icon-size2) - 2px);
|
|
1337
1342
|
svg path {
|
|
1338
1343
|
fill: currentColor;
|
|
1339
1344
|
}
|
|
@@ -1351,15 +1356,6 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1351
1356
|
margin-bottom: var(--o-gap-2);
|
|
1352
1357
|
@include text2;
|
|
1353
1358
|
|
|
1354
|
-
&.is-delete,
|
|
1355
|
-
&.is-end {
|
|
1356
|
-
color: var(--o-color-info4);
|
|
1357
|
-
|
|
1358
|
-
.title-text {
|
|
1359
|
-
color: var(--o-color-info4) !important;
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
1359
|
.tag-wrapper {
|
|
1364
1360
|
flex: 10;
|
|
1365
1361
|
margin-left: var(--o-gap-2);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { ref, onMounted, computed, nextTick, watch } from 'vue';
|
|
3
3
|
import { ODivider, OPopover, OIcon, OTabPane, OTab, OScroller } from '@opensig/opendesign';
|
|
4
|
+
import { ElSelect, ElOption } from 'element-plus';
|
|
4
5
|
import dayjs from 'dayjs';
|
|
5
6
|
import IconTips from '~icons/components/icon-tips.svg';
|
|
6
7
|
import OMeetingSigAside from './components/OMeetingSigAside.vue';
|
|
@@ -8,6 +9,7 @@ import { CalendarDataType, MeetingEventsItemT, MeetingItemT } from './types.ts';
|
|
|
8
9
|
import { useScreen } from '@opendesign-plus/composables';
|
|
9
10
|
import { useMeetingConfig } from './composables/useMeetingConfig';
|
|
10
11
|
import OMeetingCalendarList from '@/components/meeting/components/OMeetingCalendarList.vue';
|
|
12
|
+
import { formatDate } from '@/components/meeting/utils.ts';
|
|
11
13
|
|
|
12
14
|
const props = defineProps<{
|
|
13
15
|
sigName: String;
|
|
@@ -21,7 +23,7 @@ const { lePadV } = useScreen();
|
|
|
21
23
|
const selectDate = ref<string>('');
|
|
22
24
|
|
|
23
25
|
const loading = ref(false); // 数据加载状态
|
|
24
|
-
const
|
|
26
|
+
const meetingData = ref<MeetingItemT[]>([]); // 某天的会议列表
|
|
25
27
|
const calendarRows = computed(() => (lePadV.value ? 100 : 5)); // 日历行数
|
|
26
28
|
|
|
27
29
|
const latestDate = ref<string>('');
|
|
@@ -44,7 +46,7 @@ const clickDateCell = async (date: string) => {
|
|
|
44
46
|
loading.value = true;
|
|
45
47
|
selectDate.value = dayjs(date).format('YYYY-MM-DD');
|
|
46
48
|
const res = await props.getMeetingListRequest(selectDate.value, props.sigName);
|
|
47
|
-
|
|
49
|
+
meetingData.value = res.map((v: MeetingItemT) => {
|
|
48
50
|
return {
|
|
49
51
|
...v,
|
|
50
52
|
time: `${ v.start }-${ v.end }`,
|
|
@@ -54,11 +56,6 @@ const clickDateCell = async (date: string) => {
|
|
|
54
56
|
});
|
|
55
57
|
} finally {
|
|
56
58
|
loading.value = false;
|
|
57
|
-
eventsData.value.forEach((v) => {
|
|
58
|
-
if (v.dates?.includes(selectDate.value)) {
|
|
59
|
-
list.value.push(v);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
59
|
}
|
|
63
60
|
};
|
|
64
61
|
|
|
@@ -68,7 +65,12 @@ const getDates = async () => {
|
|
|
68
65
|
meetingDates.value = await props.getDateListRequest();
|
|
69
66
|
}
|
|
70
67
|
if (props.getEventsListRequest) {
|
|
71
|
-
eventsData.value = await props.getEventsListRequest()
|
|
68
|
+
eventsData.value = (await props.getEventsListRequest(selectDate.value, props.sigName)).map((v: any) => {
|
|
69
|
+
return {
|
|
70
|
+
...v,
|
|
71
|
+
type: CalendarDataType.EVENTS,
|
|
72
|
+
};
|
|
73
|
+
});
|
|
72
74
|
eventsDates.value = (eventsData.value || []).map(v => v.dates || []).flat();
|
|
73
75
|
}
|
|
74
76
|
};
|
|
@@ -94,13 +96,15 @@ const getMonthAndDay = (date: string) => {
|
|
|
94
96
|
};
|
|
95
97
|
|
|
96
98
|
const dateList = computed(() => {
|
|
97
|
-
let list
|
|
99
|
+
let list: any[];
|
|
98
100
|
if (tabType.value === CalendarDataType.ALL) {
|
|
99
101
|
list = [...(meetingDates.value || []), ...eventsDates.value];
|
|
100
102
|
} else if (tabType.value === CalendarDataType.MEETING) {
|
|
101
103
|
list = meetingDates.value || [];
|
|
104
|
+
} else if (tabType.value === CalendarDataType.EVENTS) {
|
|
105
|
+
list = eventsDates.value || [];
|
|
102
106
|
} else {
|
|
103
|
-
list =
|
|
107
|
+
list = [];
|
|
104
108
|
}
|
|
105
109
|
return [...new Set(list)].sort((a, b) => !dayjs(a).isAfter(dayjs(b)) ? -1 : 1).map(v => dayjs(v).format('YYYY-MM-DD'));
|
|
106
110
|
});
|
|
@@ -235,11 +239,25 @@ const changeMonthIdx = (step: number) => {
|
|
|
235
239
|
onMounted(() => {
|
|
236
240
|
getDates();
|
|
237
241
|
});
|
|
242
|
+
|
|
243
|
+
const list = computed(() => {
|
|
244
|
+
let list: any[];
|
|
245
|
+
if (tabType.value === CalendarDataType.ALL) {
|
|
246
|
+
list = [...(meetingData.value || []), ...eventsData.value];
|
|
247
|
+
} else if (tabType.value === CalendarDataType.MEETING) {
|
|
248
|
+
list = meetingData.value || [];
|
|
249
|
+
} else if (tabType.value === CalendarDataType.EVENTS) {
|
|
250
|
+
list = eventsData.value || [];
|
|
251
|
+
} else {
|
|
252
|
+
list = [];
|
|
253
|
+
}
|
|
254
|
+
return list;
|
|
255
|
+
});
|
|
238
256
|
</script>
|
|
239
257
|
|
|
240
258
|
<template>
|
|
241
259
|
<div class="o-sig-meeting-calendar">
|
|
242
|
-
<div class="meeting-card-header"
|
|
260
|
+
<div class="meeting-card-header">
|
|
243
261
|
<div class="header-left" v-if="latestDate">
|
|
244
262
|
<span>{{ t('meeting.latestMeeting') }} </span>
|
|
245
263
|
<span>{{ dayjs(latestDate).format('YYYY/MM/DD') }}</span>
|
|
@@ -268,12 +286,12 @@ onMounted(() => {
|
|
|
268
286
|
<template v-if="lePadV && dateList.length">
|
|
269
287
|
<div class="date-select">
|
|
270
288
|
<ElSelect v-model="selectDate" @change="changeSelect">
|
|
271
|
-
<template #label>{{ t('meeting.latestMeeting') }} {{ selectDate }}</template>
|
|
289
|
+
<template #label>{{ t('meeting.latestMeeting') }} {{ formatDate(selectDate) }}</template>
|
|
272
290
|
<ElOption
|
|
273
291
|
v-for="date in dateList"
|
|
274
292
|
:key="date"
|
|
275
293
|
:value="date"
|
|
276
|
-
:label="
|
|
294
|
+
:label="formatDate(date)"
|
|
277
295
|
/>
|
|
278
296
|
</ElSelect>
|
|
279
297
|
</div>
|
|
@@ -317,7 +335,7 @@ onMounted(() => {
|
|
|
317
335
|
margin-top: var(--o-gap-5);
|
|
318
336
|
@include respond('phone') {
|
|
319
337
|
.meeting-card-header {
|
|
320
|
-
padding:
|
|
338
|
+
padding: var(--o-gap-3) var(--o-gap-4) 0;
|
|
321
339
|
|
|
322
340
|
.el-input {
|
|
323
341
|
flex-grow: 1;
|
|
@@ -329,7 +347,7 @@ onMounted(() => {
|
|
|
329
347
|
}
|
|
330
348
|
|
|
331
349
|
.date-select {
|
|
332
|
-
padding:
|
|
350
|
+
padding: var(--o-gap-4);
|
|
333
351
|
|
|
334
352
|
.o-select {
|
|
335
353
|
width: 100%;
|
|
@@ -340,10 +358,13 @@ onMounted(() => {
|
|
|
340
358
|
font-weight: 500;
|
|
341
359
|
display: flex;
|
|
342
360
|
align-items: center;
|
|
343
|
-
padding:
|
|
361
|
+
padding: var(--o-gap-3) var(--o-gap-6) 0;
|
|
344
362
|
@include text1;
|
|
345
363
|
@include respond('<=pad') {
|
|
346
|
-
padding:
|
|
364
|
+
padding: var(--o-gap-3) var(--o-gap-4) 0;
|
|
365
|
+
}
|
|
366
|
+
@include respond('<=pad_v') {
|
|
367
|
+
display: none;
|
|
347
368
|
}
|
|
348
369
|
|
|
349
370
|
.date-meeting {
|
|
@@ -353,8 +374,9 @@ onMounted(() => {
|
|
|
353
374
|
|
|
354
375
|
.header-left {
|
|
355
376
|
width: 35%;
|
|
356
|
-
padding-bottom:
|
|
377
|
+
padding-bottom: var(--o-gap-3);
|
|
357
378
|
color: var(--o-color-info1);
|
|
379
|
+
@include text1;
|
|
358
380
|
}
|
|
359
381
|
|
|
360
382
|
.o-tab {
|
|
@@ -365,7 +387,7 @@ onMounted(() => {
|
|
|
365
387
|
position: relative;
|
|
366
388
|
|
|
367
389
|
.o-tab-nav {
|
|
368
|
-
padding-bottom:
|
|
390
|
+
padding-bottom: var(--o-gap-3);
|
|
369
391
|
|
|
370
392
|
svg path {
|
|
371
393
|
fill: currentColor;
|
|
@@ -406,8 +428,9 @@ onMounted(() => {
|
|
|
406
428
|
}
|
|
407
429
|
|
|
408
430
|
.list-content {
|
|
431
|
+
min-width: 0;
|
|
409
432
|
flex-grow: 1;
|
|
410
|
-
height:
|
|
433
|
+
height: 360px;
|
|
411
434
|
@include respond('<=pad_v') {
|
|
412
435
|
height: auto;
|
|
413
436
|
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
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';
|
|
@@ -91,9 +100,9 @@ const computedList = computed<any[]>(() => {
|
|
|
91
100
|
}
|
|
92
101
|
} else {
|
|
93
102
|
if (v.start_date === v.end_date) {
|
|
94
|
-
dateRange = formatDate(v.start_date
|
|
103
|
+
dateRange = formatDate(v.start_date);
|
|
95
104
|
} else {
|
|
96
|
-
dateRange = `${ formatDate(v.start_date
|
|
105
|
+
dateRange = `${ formatDate(v.start_date) }-${ formatDate(v.end_date) }`;
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
108
|
|
|
@@ -198,8 +207,8 @@ const computedList = computed<any[]>(() => {
|
|
|
198
207
|
<template v-if="item.activity_type">{{ item.activity_type }}</template>
|
|
199
208
|
</div>
|
|
200
209
|
</div>
|
|
201
|
-
<
|
|
202
|
-
|
|
210
|
+
<OButton
|
|
211
|
+
variant="text"
|
|
203
212
|
v-if="item.url"
|
|
204
213
|
:href="item.url"
|
|
205
214
|
target="_blank"
|
|
@@ -211,9 +220,9 @@ const computedList = computed<any[]>(() => {
|
|
|
211
220
|
<IconChevronRight />
|
|
212
221
|
</OIcon>
|
|
213
222
|
</template>
|
|
214
|
-
</
|
|
215
|
-
<
|
|
216
|
-
|
|
223
|
+
</OButton>
|
|
224
|
+
<OButton
|
|
225
|
+
variant="text"
|
|
217
226
|
v-if="item.join_url"
|
|
218
227
|
:href="item.join_url"
|
|
219
228
|
target="_blank"
|
|
@@ -225,9 +234,9 @@ const computedList = computed<any[]>(() => {
|
|
|
225
234
|
<IconChevronRight />
|
|
226
235
|
</OIcon>
|
|
227
236
|
</template>
|
|
228
|
-
</
|
|
229
|
-
<
|
|
230
|
-
|
|
237
|
+
</OButton>
|
|
238
|
+
<OButton
|
|
239
|
+
variant="text"
|
|
231
240
|
v-if="item.content_url"
|
|
232
241
|
:href="item.content_url"
|
|
233
242
|
target="_blank"
|
|
@@ -239,9 +248,9 @@ const computedList = computed<any[]>(() => {
|
|
|
239
248
|
<IconChevronRight />
|
|
240
249
|
</OIcon>
|
|
241
250
|
</template>
|
|
242
|
-
</
|
|
243
|
-
<
|
|
244
|
-
|
|
251
|
+
</OButton>
|
|
252
|
+
<OButton
|
|
253
|
+
variant="text"
|
|
245
254
|
v-if="item.register_url"
|
|
246
255
|
:href="item.register_url"
|
|
247
256
|
target="_blank"
|
|
@@ -253,7 +262,7 @@ const computedList = computed<any[]>(() => {
|
|
|
253
262
|
<IconChevronRight />
|
|
254
263
|
</OIcon>
|
|
255
264
|
</template>
|
|
256
|
-
</
|
|
265
|
+
</OButton>
|
|
257
266
|
</div>
|
|
258
267
|
<OIcon @click.stop="() => copyInfo(index)" class="copy-icon">
|
|
259
268
|
<IconCopy />
|
|
@@ -374,12 +383,13 @@ const computedList = computed<any[]>(() => {
|
|
|
374
383
|
|
|
375
384
|
.o-collapse-item-title {
|
|
376
385
|
flex-grow: 1;
|
|
386
|
+
min-width: 0;
|
|
377
387
|
margin-bottom: 0;
|
|
378
388
|
display: flex;
|
|
379
389
|
align-items: center;
|
|
380
390
|
justify-content: center;
|
|
381
391
|
gap: var(--o-gap-4);
|
|
382
|
-
padding-right: var(--o-gap-
|
|
392
|
+
padding-right: var(--o-gap-5);
|
|
383
393
|
|
|
384
394
|
.meet-title-left {
|
|
385
395
|
flex-grow: 1;
|
|
@@ -457,7 +467,7 @@ const computedList = computed<any[]>(() => {
|
|
|
457
467
|
|
|
458
468
|
.jump-detail-link {
|
|
459
469
|
padding-left: calc(var(--icon-right) + var(--icon-size2));
|
|
460
|
-
margin-top: var(--o-gap-
|
|
470
|
+
margin-top: var(--o-gap-1);
|
|
461
471
|
color: var(--o-color-info2);
|
|
462
472
|
font-weight: 400;
|
|
463
473
|
@include tip1;
|
|
@@ -508,7 +518,7 @@ const computedList = computed<any[]>(() => {
|
|
|
508
518
|
margin-right: var(--icon-right);
|
|
509
519
|
width: var(--icon-size2);
|
|
510
520
|
height: var(--icon-size2);
|
|
511
|
-
font-size: calc(var(--icon-size2) -
|
|
521
|
+
font-size: calc(var(--icon-size2) - 2px);
|
|
512
522
|
|
|
513
523
|
svg path {
|
|
514
524
|
fill: currentColor;
|
|
@@ -518,14 +528,16 @@ const computedList = computed<any[]>(() => {
|
|
|
518
528
|
.text {
|
|
519
529
|
display: block;
|
|
520
530
|
font-weight: 600;
|
|
531
|
+
min-width: 0;
|
|
532
|
+
flex: 1;
|
|
521
533
|
@include text-truncate(1);
|
|
522
534
|
}
|
|
523
535
|
}
|
|
524
536
|
|
|
525
537
|
.meet-info {
|
|
538
|
+
display: flex;
|
|
526
539
|
margin-left: calc(var(--icon-right) + var(--icon-size2));
|
|
527
540
|
margin-top: var(--o-gap-2);
|
|
528
|
-
display: flex;
|
|
529
541
|
flex-wrap: wrap;
|
|
530
542
|
align-items: center;
|
|
531
543
|
color: var(--o-color-info3);
|
|
@@ -161,11 +161,11 @@ defineExpose({ copyInfo });
|
|
|
161
161
|
display: flex;
|
|
162
162
|
align-items: flex-start;
|
|
163
163
|
font-size: 14px;
|
|
164
|
-
gap: var(--o-gap-
|
|
164
|
+
gap: var(--o-gap-2);
|
|
165
165
|
|
|
166
166
|
@include respond('<=pad_v') {
|
|
167
167
|
font-size: 12px;
|
|
168
|
-
gap: var(--o-gap-
|
|
168
|
+
gap: var(--o-gap-1);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
&:not(.is-empty) {
|
|
@@ -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
|
|
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)
|
|
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
|
-
|
|
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:
|
|
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;
|