@opendesign-plus-test/components 0.0.1-rc.21 → 0.0.1-rc.23
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 +428 -137
- package/dist/components/OBanner.vue.d.ts +10 -1
- package/dist/components/OFooter.vue.d.ts +1 -1
- package/dist/components/OHeaderSearch.vue.d.ts +4 -4
- package/dist/components/activity/OActivityApproval.vue.d.ts +277 -0
- package/dist/components/activity/OActivityForm.vue.d.ts +140 -0
- package/dist/components/activity/OMyActivityCalendar.vue.d.ts +578 -0
- package/dist/components/activity/config.d.ts +15 -0
- package/dist/components/activity/data.d.ts +51 -0
- package/dist/components/activity/index.d.ts +623 -0
- package/dist/components/activity/types.d.ts +76 -0
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +309 -0
- package/dist/components/meeting/OMeetingForm.vue.d.ts +156 -0
- package/dist/components/meeting/OMyMeetingCalendar.vue.d.ts +582 -0
- package/dist/components/meeting/OSigMeetingCalendar.vue.d.ts +24 -0
- package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +27 -0
- package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +664 -0
- package/dist/components/meeting/components/OMeetingDetail.vue.d.ts +12 -0
- package/dist/components/meeting/components/OMeetingPlaybackSubtitles.vue.d.ts +5 -0
- package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +17 -0
- package/dist/components/meeting/components/OSigMeetingAside.vue.d.ts +16 -0
- package/dist/components/meeting/config.d.ts +27 -0
- package/dist/components/meeting/types.d.ts +140 -0
- package/dist/components/meeting/utils.d.ts +21 -0
- package/dist/components.cjs.js +224 -3
- package/dist/components.css +1 -1
- package/dist/components.es.js +43544 -2307
- package/dist/index.d.ts +2 -0
- package/package.json +6 -3
- package/scripts/generate-components-index.js +4 -0
- package/src/assets/meeting/svg-icons/icon-all.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-backward.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-calendar.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-cancel.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-captions.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-close-captions.svg +6 -0
- package/src/assets/meeting/svg-icons/icon-close-fullscreen.svg +6 -0
- package/src/assets/meeting/svg-icons/icon-copy.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-create.svg +5 -0
- package/src/assets/meeting/svg-icons/icon-delete.svg +7 -0
- package/src/assets/meeting/svg-icons/icon-empty.svg +31 -0
- package/src/assets/meeting/svg-icons/icon-empty_dark.svg +49 -0
- package/src/assets/meeting/svg-icons/icon-event.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-export.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-forward.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-fullscreen.svg +6 -0
- package/src/assets/meeting/svg-icons/icon-help.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-important.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-info.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-meet.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-meeting-message.svg +5 -0
- package/src/assets/meeting/svg-icons/icon-meeting.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-play.svg +5 -0
- package/src/assets/meeting/svg-icons/icon-playing-tip.svg +7 -0
- package/src/assets/meeting/svg-icons/icon-playing.svg +5 -0
- package/src/assets/meeting/svg-icons/icon-question.svg +4 -0
- package/src/assets/meeting/svg-icons/icon-sound.svg +5 -0
- package/src/assets/meeting/svg-icons/icon-speaker.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-summit.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-telligent.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-tip.svg +3 -0
- package/src/assets/meeting/svg-icons/icon-todo.svg +4 -0
- package/src/assets/meeting/transparent.png +0 -0
- package/src/assets/svg-icons/icon-chevron-up.svg +3 -0
- package/src/assets/svg-icons/icon-filter.svg +3 -0
- package/src/assets/svg-icons/icon-loading.svg +4 -0
- package/src/assets/svg-icons/icon-search.svg +3 -0
- package/src/assets/svg-icons/icon-tips.svg +3 -0
- package/src/components/OBanner.vue +11 -3
- package/src/components/OFooter.vue +1 -1
- package/src/components/activity/OActivityApproval.vue +775 -0
- package/src/components/activity/OActivityForm.vue +465 -0
- package/src/components/activity/OMyActivityCalendar.vue +1342 -0
- package/src/components/activity/config.ts +130 -0
- package/src/components/activity/data.ts +365 -0
- package/src/components/activity/index.ts +24 -0
- package/src/components/activity/types.ts +83 -0
- package/src/components/common/MoreText.vue +119 -0
- package/src/components/common/ThFilter.vue +326 -0
- package/src/components/events/OEventsApply.vue +2 -86
- package/src/components/events/OEventsCalendar.vue +0 -25
- package/src/components/events/OEventsList.vue +0 -51
- package/src/components/events/index.ts +1 -0
- package/src/components/meeting/OMeetingCalendar.vue +865 -0
- package/src/components/meeting/OMeetingForm.vue +1035 -0
- package/src/components/meeting/OMeetingPlayback.vue +439 -0
- package/src/components/meeting/OMyMeetingCalendar.vue +1501 -0
- package/src/components/meeting/OSigMeetingCalendar.vue +411 -0
- package/src/components/meeting/components/OMeetingCalendarList.vue +462 -0
- package/src/components/meeting/components/OMeetingCalendarSelector.vue +206 -0
- package/src/components/meeting/components/OMeetingDetail.vue +189 -0
- package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +611 -0
- package/src/components/meeting/components/OMeetingPlaybackVideo.vue +741 -0
- package/src/components/meeting/components/OMyCalendarWrapper.vue +160 -0
- package/src/components/meeting/components/OSigMeetingAside.vue +197 -0
- package/src/components/meeting/config.ts +110 -0
- package/src/components/meeting/index.ts +45 -0
- package/src/components/meeting/types.ts +167 -0
- package/src/components/meeting/utils.ts +106 -0
- package/src/draft/Footer.vue +4 -4
- package/src/env.d.ts +15 -0
- package/src/i18n/en.ts +140 -0
- package/src/i18n/index.ts +18 -4
- package/src/i18n/zh.ts +140 -0
- package/src/index.ts +2 -0
- package/tsconfig.json +6 -2
- package/vite.config.ts +25 -9
- package/npmcachae/_cacache/content-v2/sha512/05/f7/dd881de8b21208ea65cfce17c65f29964c3897505819f81151b9798a3a6ab1a1114324192354ead15cd2c8d93f76cc9929af168066ec9cc7878d0fd87578 +0 -1
- package/npmcachae/_cacache/content-v2/sha512/08/b7/879230f8c2f3765920a6fd6113f4687141f1f645f96af7d95a0dee9113d1095d000fb78a5dd55c1860bbfb9b698ef6281b3874b03b2384222f61fe055fc4 +0 -1
- package/npmcachae/_cacache/content-v2/sha512/10/a0/a6626613c03ee052925a762e8675878efdf83dac64fafea43beb2a875f7d7c3907bb0ee30761253cd16021fd58911449594e1d3358675cbb7c48e62f220a +0 -1
- package/npmcachae/_cacache/content-v2/sha512/2e/a6/7cbcf55a98bbe2ca881d10e982ebf59211a0ec051eaf46eb1914df66cc35ae502ed6888850e51d8f45cd92695bac16961a642bc41508f8d5160a9ab617ab +0 -1
- package/npmcachae/_cacache/content-v2/sha512/92/8d/e5259c5d5cc2a625247f3c4d809192ca9482467e23683d74924a11e91a7997ad890b3d26adaf34df66d5329cc7a5fbde6713110cad05107a0b504e4fd4e8 +0 -1
- package/npmcachae/_cacache/content-v2/sha512/e9/45/9597d870127c35681155cec5fe52fde4e1aa0f778b996ee371e856aca850ee4c13aba74b0c3d3a89ff0ea4c9e1d33e64e53c31dc9cede0b31012695ee659 +0 -1
- package/npmcachae/_cacache/index-v5/16/4a/7195fcc6857299c4ab7e26014a8ae6e3c396507a2c8db3da1b74b005d574 +0 -3
- package/npmcachae/_cacache/index-v5/58/f0/4fe556f104b09be642895a82afa463fe560d9a0dc8f507efeef825a6905e +0 -3
- package/npmcachae/_cacache/index-v5/67/7d/0b50dc4c09555fc922ccf43c46994f1a0a5ff47dc0a5d5cf41437ac2d3e6 +0 -3
- package/npmcachae/_cacache/index-v5/8f/28/353f8839e030ab11aab3e7d9f1b8c053403e9f593cf6d4aa6ec8fdd7610d +0 -3
- package/npmcachae/_cacache/index-v5/97/10/0fcf20eb29d0726bd820822f6729718464b591b0e6901217c956740e943c +0 -3
- package/npmcachae/_cacache/index-v5/db/89/a0a4f35f593105624ab39339962d9e9b5cc65ed0c346b0732fb8dd73721d +0 -3
- package/npmcachae/_logs/2026-03-26T14_10_35_885Z-debug-0.log +0 -171
- package/npmcachae/_logs/2026-03-26T14_10_38_617Z-debug-0.log +0 -4227
- package/npmcachae/_logs/2026-03-26T14_10_45_316Z-debug-0.log +0 -4228
- package/npmcachae/_logs/2026-03-26T14_10_48_169Z-debug-0.log +0 -4228
- package/npmcachae/_logs/2026-03-26T14_10_51_306Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_10_53_911Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_10_56_398Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_10_58_861Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_11_01_337Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_11_03_851Z-debug-0.log +0 -464
- package/npmcachae/_logs/2026-03-26T14_11_08_024Z-debug-0.log +0 -464
- package/npmcachae/_update-notifier-last-checked +0 -0
- package/src/components/meeting/npmcachae/_cacache/content-v2/sha512/3e/17/1865217b9acb9f4921c53a09b5c76587cd2ab748beb2699ff6cfb1341d73b1aa56ed91ffc5ab2c9c9b3fbe626103b35d9a79ff29ff6b8cbb8d89755fe1a2 +0 -1
- package/src/components/meeting/npmcachae/_cacache/content-v2/sha512/a6/15/47bb7552ec9248079e839a5feecc1742d4de19524fdf041cf581701cf4760a5025106036145e279ba193b07c8fa5b07ae3d75f1b6032f0cb2219115b6167 +0 -1
- package/src/components/meeting/npmcachae/_cacache/content-v2/sha512/d1/4c/133b32e09c97101a27a07cc4432f94e470cff02d120d21babcea77c3f5cd436793516dc1a8e282ee1a568f923c148b1a48f4a43233462a530d35e8b41c67 +0 -1
- package/src/components/meeting/npmcachae/_cacache/index-v5/54/0d/a4909047714a0a7198bb9bd37020992464e47c79a791889919b84d90aab0 +0 -3
- package/src/components/meeting/npmcachae/_cacache/index-v5/8e/2b/21a79778e2ac08cf5663baf83cb35f951995a496007eb2e2f7fba54021a4 +0 -3
- package/src/components/meeting/npmcachae/_cacache/index-v5/eb/a0/b70c8132e5b57a0f1e129b8cc941796420a9c147c0baa680710083740898 +0 -2
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_03_54_955Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_03_57_842Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_04_00_016Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_04_02_191Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_04_04_425Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_04_06_642Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_04_08_826Z-debug-0.log +0 -277
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_25_36_140Z-debug-0.log +0 -433
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_25_39_573Z-debug-0.log +0 -433
- package/src/components/meeting/npmcachae/_logs/2026-03-20T07_25_42_134Z-debug-0.log +0 -212
- package/src/components/meeting/npmcachae/_update-notifier-last-checked +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
//
|
|
3
|
+
//import { formatDate } from '@/components/meeting/utils.ts';
|
|
4
|
+
//import dayjs from 'dayjs';
|
|
5
|
+
//import {
|
|
6
|
+
// OIcon,
|
|
7
|
+
// OIconArrowLeft,
|
|
8
|
+
// OIconArrowRight,
|
|
9
|
+
// OIconChevronLeft,
|
|
10
|
+
// OIconChevronRight,
|
|
11
|
+
// OScroller,
|
|
12
|
+
//} from '@opensig/opendesign';
|
|
13
|
+
//import { ElCalendar, useLocale } from 'element-plus';
|
|
14
|
+
//import { Locales, useI18n } from '@/i18n';
|
|
15
|
+
//import { computed, nextTick, onMounted, onUnmounted, ref, ref } from 'vue';
|
|
16
|
+
//
|
|
17
|
+
//const { t, locale } = useI18n();
|
|
18
|
+
//const isEn = computed(() => locale.value === Locales.EN);
|
|
19
|
+
//
|
|
20
|
+
//const props = defineProps<{
|
|
21
|
+
// selectedDate: string;
|
|
22
|
+
// allDateList: string[];
|
|
23
|
+
// list: any[]
|
|
24
|
+
//}>();
|
|
25
|
+
//const emits = defineEmits(['change-month', 'load']);
|
|
26
|
+
//const calendarRef = ref(null);
|
|
27
|
+
//
|
|
28
|
+
//const formatYearMonth = (date) => {
|
|
29
|
+
// date = dayjs(date ? date : undefined);
|
|
30
|
+
// if (isEn.value) {
|
|
31
|
+
// return date.format('MMMM YYYY');
|
|
32
|
+
// } else {
|
|
33
|
+
// return date.format('YYYY MM月');
|
|
34
|
+
// }
|
|
35
|
+
//};
|
|
36
|
+
//
|
|
37
|
+
//const cellClick = (e: PointerEvent & any, clickable: boolean) => {
|
|
38
|
+
// if (!clickable || !e.target?.className.includes('date-cell-text')) {
|
|
39
|
+
// e.stopPropagation();
|
|
40
|
+
// e.preventDefault();
|
|
41
|
+
// }
|
|
42
|
+
//};
|
|
43
|
+
//const changeMonth = (val) => {
|
|
44
|
+
// if (!calendarRef.value) {
|
|
45
|
+
// return;
|
|
46
|
+
// }
|
|
47
|
+
// window.scrollTo({
|
|
48
|
+
// top: 0,
|
|
49
|
+
// behavior: 'smooth',
|
|
50
|
+
// });
|
|
51
|
+
// calendarRef.value.selectDate(val);
|
|
52
|
+
// nextTick(() => {
|
|
53
|
+
// emits('change-month', calendarRef.value.selectedDay);
|
|
54
|
+
//
|
|
55
|
+
// });
|
|
56
|
+
//};
|
|
57
|
+
//
|
|
58
|
+
//const calcIfAllDeleted = (date) => {
|
|
59
|
+
// const meetingsOfDate = props.list?.filter((v) => v.date === date) || [];
|
|
60
|
+
// return meetingsOfDate.length && meetingsOfDate.every((v) => v.is_delete);
|
|
61
|
+
//};
|
|
62
|
+
//const load = () => {
|
|
63
|
+
// emits('load');
|
|
64
|
+
//};
|
|
65
|
+
//
|
|
66
|
+
//onMounted(() => {
|
|
67
|
+
// getList();
|
|
68
|
+
// // 添加滚动事件监听
|
|
69
|
+
// window.addEventListener('scroll', handleScroll);
|
|
70
|
+
// // 添加resize监听器
|
|
71
|
+
// window.addEventListener('resize', handleScroll);
|
|
72
|
+
// getHeaderHeight();
|
|
73
|
+
// window.addEventListener('resize', getHeaderHeight);
|
|
74
|
+
//});
|
|
75
|
+
//
|
|
76
|
+
//onUnmounted(() => {
|
|
77
|
+
// window.removeEventListener('scroll', handleScroll);
|
|
78
|
+
// window.removeEventListener('resize', handleScroll);
|
|
79
|
+
// window.removeEventListener('resize', getHeaderHeight);
|
|
80
|
+
// const scrollerContainerEl = scrollerRef.value?.getContainerEl();
|
|
81
|
+
// scrollerContainerEl?.removeEventListener('scroll', scrollerScroll);
|
|
82
|
+
//});
|
|
83
|
+
|
|
84
|
+
</script>
|
|
85
|
+
|
|
86
|
+
<template>
|
|
87
|
+
<!-- <div class="o-my-calendar-wrapper">-->
|
|
88
|
+
<!-- <div class="list-calendar-mb">-->
|
|
89
|
+
<!-- <span>{{ formatYearMonth(selectedDate) }}</span>-->
|
|
90
|
+
<!-- <span>-->
|
|
91
|
+
<!-- <OIcon @click="changeMonth('prev-month')"><OIconChevronLeft /></OIcon>-->
|
|
92
|
+
<!-- <OIcon @click="changeMonth('next-month')"><OIconChevronRight /></OIcon>-->
|
|
93
|
+
<!-- </span>-->
|
|
94
|
+
<!-- </div>-->
|
|
95
|
+
<!-- <div class="list-calendar">-->
|
|
96
|
+
<!-- <ElCalendar ref="calendarRef" v-model="selectedDate">-->
|
|
97
|
+
<!-- <template #header>-->
|
|
98
|
+
<!-- <span>{{ formatYearMonth(selectedDate) }}</span>-->
|
|
99
|
+
<!-- <div>-->
|
|
100
|
+
<!-- <OIcon @click="changeMonth('prev-month')">-->
|
|
101
|
+
<!-- <OIconChevronLeft />-->
|
|
102
|
+
<!-- </OIcon>-->
|
|
103
|
+
<!-- <OIcon @click="changeMonth('next-month')">-->
|
|
104
|
+
<!-- <OIconChevronRight />-->
|
|
105
|
+
<!-- </OIcon>-->
|
|
106
|
+
<!-- </div>-->
|
|
107
|
+
<!-- </template>-->
|
|
108
|
+
<!-- <template #date-cell="{ data }">-->
|
|
109
|
+
<!-- <div-->
|
|
110
|
+
<!-- @click="(e) => cellClick(e, allDateList.includes(data.day))"-->
|
|
111
|
+
<!-- :class="{-->
|
|
112
|
+
<!-- 'date-cell': true,-->
|
|
113
|
+
<!-- 'is-selected': data.isSelected,-->
|
|
114
|
+
<!-- 'is-today': formatDate(data.day) === formatDate(),-->
|
|
115
|
+
<!-- clickable: allDateList.includes(data.day),-->
|
|
116
|
+
<!-- expired: dayjs(formatDate()).isAfter(dayjs(data.day)),-->
|
|
117
|
+
<!-- 'all-deleted': calcIfAllDeleted(data.day),-->
|
|
118
|
+
<!-- }"-->
|
|
119
|
+
<!-- >-->
|
|
120
|
+
<!-- <div class="date-cell-text">-->
|
|
121
|
+
<!-- {{ Number(data.day.split('-')[2]) }}-->
|
|
122
|
+
<!-- </div>-->
|
|
123
|
+
<!-- </div>-->
|
|
124
|
+
<!-- </template>-->
|
|
125
|
+
<!-- </ElCalendar>-->
|
|
126
|
+
<!-- </div>-->
|
|
127
|
+
<!-- <div class="list-wrapper" :class="!list.length ? 'is-empty' : ''">-->
|
|
128
|
+
<!-- <OScroller-->
|
|
129
|
+
<!-- ref="scrollerRef"-->
|
|
130
|
+
<!-- @scrollend="load"-->
|
|
131
|
+
<!-- v-if="list.length"-->
|
|
132
|
+
<!-- :style="{ '--header-height': headerHeight }"-->
|
|
133
|
+
<!-- class="scroller-container"-->
|
|
134
|
+
<!-- show-type="hover"-->
|
|
135
|
+
<!-- >-->
|
|
136
|
+
<!-- <div class="list-body">-->
|
|
137
|
+
<!-- <div class="list-month-change prev-month" @click="changeMonth('prev-month')">-->
|
|
138
|
+
<!-- <OIcon>-->
|
|
139
|
+
<!-- <OIconArrowLeft />-->
|
|
140
|
+
<!-- </OIcon>-->
|
|
141
|
+
<!-- <span>{{ t('meeting.preMonth') }}</span>-->
|
|
142
|
+
<!-- </div>-->
|
|
143
|
+
|
|
144
|
+
<!-- <slot></slot>-->
|
|
145
|
+
<!-- <div class="list-month-change next-month" @click="changeMonth('next-month')">-->
|
|
146
|
+
<!-- <OIcon>-->
|
|
147
|
+
<!-- <OIconArrowRight />-->
|
|
148
|
+
<!-- </OIcon>-->
|
|
149
|
+
<!-- <span>{{ t('meeting.nextMonth') }}</span>-->
|
|
150
|
+
<!-- </div>-->
|
|
151
|
+
<!-- </div>-->
|
|
152
|
+
<!-- </OScroller>-->
|
|
153
|
+
<!-- </div>-->
|
|
154
|
+
</template>
|
|
155
|
+
|
|
156
|
+
<style scoped lang="scss">
|
|
157
|
+
.o-my-calendar-wrapper {
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
</style>
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { OIcon, OIconArrowLeft, OIconArrowRight } from '@opensig/opendesign';
|
|
3
|
+
import IconMeetinging from '~icons/meeting/icon-meet.svg';
|
|
4
|
+
import { getConfig } from '@/components/meeting/utils.ts';
|
|
5
|
+
import { CalendarDataType } from '@/components/meeting';
|
|
6
|
+
|
|
7
|
+
const props = defineProps<{
|
|
8
|
+
data: any[];
|
|
9
|
+
current: number;
|
|
10
|
+
total: number;
|
|
11
|
+
active: string;
|
|
12
|
+
meetingDates: string[];// 会议日期列表
|
|
13
|
+
eventsDates: string[];// 活动日期列表
|
|
14
|
+
}>();
|
|
15
|
+
|
|
16
|
+
const STEP = 1;
|
|
17
|
+
|
|
18
|
+
const emits = defineEmits(['click-date', 'change-month']);
|
|
19
|
+
const clickDate = (date) => {
|
|
20
|
+
emits('click-date', date);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const changeMonth = (step) => {
|
|
24
|
+
if (props.current + step >= props.total || props.current + step < 0) return;
|
|
25
|
+
emits('change-month', step);
|
|
26
|
+
};
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
<div class="o-sig-meeting-aside">
|
|
31
|
+
<template v-for="(d, dIdx) in data" :key="dIdx">
|
|
32
|
+
<div v-for="m in d" :key="m.month" class="month-item">
|
|
33
|
+
<div class="month">{{ m.month.replace(/-/g, '/') }}</div>
|
|
34
|
+
<div class="days">
|
|
35
|
+
<div
|
|
36
|
+
class="day-item"
|
|
37
|
+
v-for="d in m.days"
|
|
38
|
+
:key="d"
|
|
39
|
+
@click="clickDate(`${m.month}-${d}`)"
|
|
40
|
+
:class="active === `${m.month}-${d}` && 'active'"
|
|
41
|
+
>
|
|
42
|
+
<div class="day-d">{{ d }}</div>
|
|
43
|
+
<div class="day-c">
|
|
44
|
+
<OIcon
|
|
45
|
+
v-if="meetingDates.includes(`${m.month}-${d}`)"
|
|
46
|
+
:style="{
|
|
47
|
+
zIndex: getConfig(CalendarDataType.MEETING, 'zIndex'),
|
|
48
|
+
backgroundColor: getConfig(CalendarDataType.MEETING, 'color'),
|
|
49
|
+
}"
|
|
50
|
+
>
|
|
51
|
+
<component :is="getConfig(CalendarDataType.MEETING, 'icon')" />
|
|
52
|
+
</OIcon>
|
|
53
|
+
<OIcon
|
|
54
|
+
v-if="eventsDates.includes(`${m.month}-${d}`)"
|
|
55
|
+
:style="{
|
|
56
|
+
zIndex: getConfig(CalendarDataType.EVENTS, 'zIndex'),
|
|
57
|
+
backgroundColor: getConfig(CalendarDataType.EVENTS, 'color'),
|
|
58
|
+
}"
|
|
59
|
+
>
|
|
60
|
+
<component :is="getConfig(CalendarDataType.EVENTS, 'icon')" />
|
|
61
|
+
</OIcon>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</template>
|
|
67
|
+
<div class="arrow-wrapper">
|
|
68
|
+
<OIcon @click="changeMonth(0 - STEP)" :class="current - STEP < 0 && 'disabled'">
|
|
69
|
+
<OIconArrowLeft />
|
|
70
|
+
</OIcon>
|
|
71
|
+
<OIcon @click="changeMonth(STEP)" :class="current + STEP >= total && 'disabled'">
|
|
72
|
+
<OIconArrowRight />
|
|
73
|
+
</OIcon>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</template>
|
|
77
|
+
|
|
78
|
+
<style lang="scss">
|
|
79
|
+
.o-sig-meeting-aside {
|
|
80
|
+
width: 35%;
|
|
81
|
+
flex-shrink: 0;
|
|
82
|
+
padding: var(--o-gap-4) var(--o-gap-6);
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-direction: column;
|
|
85
|
+
border-right: 1px solid var(--o-color-control4);
|
|
86
|
+
@include respond-to('<=pad') {
|
|
87
|
+
padding: var(--o-gap-4);
|
|
88
|
+
border-right: none;
|
|
89
|
+
}
|
|
90
|
+
@include respond-to('phone') {
|
|
91
|
+
padding: 16px;
|
|
92
|
+
.title {
|
|
93
|
+
margin-bottom: var(--o-gap-2);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
@include respond-to('<=pad_v') {
|
|
97
|
+
width: 100%;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.month-item {
|
|
101
|
+
margin-bottom: var(--o-gap-3);
|
|
102
|
+
|
|
103
|
+
.month {
|
|
104
|
+
color: var(--o-color-info3);
|
|
105
|
+
margin-bottom: var(--o-gap-2);
|
|
106
|
+
@include tip1;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.days {
|
|
110
|
+
gap: var(--o-gap-2);
|
|
111
|
+
display: grid;
|
|
112
|
+
grid-template-columns: repeat(2, 1fr);
|
|
113
|
+
|
|
114
|
+
@include respond-to('<=pad_v') {
|
|
115
|
+
display: flex;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.day-item {
|
|
119
|
+
height: 64px;
|
|
120
|
+
border-radius: 4px;
|
|
121
|
+
background-color: var(--o-color-control2-light);
|
|
122
|
+
padding: 8px 12px;
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
border: 1px solid transparent;
|
|
125
|
+
|
|
126
|
+
&:hover,
|
|
127
|
+
&.active {
|
|
128
|
+
background-color: var(--o-color-control3-light);
|
|
129
|
+
border-color: var(--o-color-primary1);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.day-d {
|
|
133
|
+
font-weight: 500;
|
|
134
|
+
margin-bottom: var(--o-gap-1);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.day-c {
|
|
138
|
+
color: rgb(var(--o-white));
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-wrap: nowrap;
|
|
141
|
+
|
|
142
|
+
.o-icon {
|
|
143
|
+
width: 20px;
|
|
144
|
+
height: 20px;
|
|
145
|
+
font-size: 20px;
|
|
146
|
+
line-height: 1em;
|
|
147
|
+
position: relative;
|
|
148
|
+
border-radius: 50%;
|
|
149
|
+
margin-left: -6px;
|
|
150
|
+
|
|
151
|
+
&:first-child {
|
|
152
|
+
margin-left: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
svg path {
|
|
156
|
+
fill: currentColor;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.arrow-wrapper {
|
|
165
|
+
margin-top: auto;
|
|
166
|
+
display: flex;
|
|
167
|
+
align-items: center;
|
|
168
|
+
justify-content: space-between;
|
|
169
|
+
color: var(--o-color-primary1);
|
|
170
|
+
|
|
171
|
+
.o-icon {
|
|
172
|
+
font-size: 24px;
|
|
173
|
+
cursor: pointer;
|
|
174
|
+
|
|
175
|
+
&.disabled {
|
|
176
|
+
cursor: not-allowed;
|
|
177
|
+
color: var(--o-color-primary4);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&:not(.disabled):hover {
|
|
181
|
+
color: var(--o-color-primary2);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@include respond-to('<=pad_v') {
|
|
187
|
+
.day-item {
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
@include respond-to('<=pad_v') {
|
|
191
|
+
.day-item {
|
|
192
|
+
width: min(128px, calc((100% - var(--o-gap-2)) / 2));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
</style>
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import IconAll from '~icons/meeting/icon-all.svg';
|
|
2
|
+
import IconEvent from '~icons/meeting/icon-event.svg';
|
|
3
|
+
import IconMeeting from '~icons/meeting/icon-meet.svg';
|
|
4
|
+
import IconSummit from '~icons/meeting/icon-summit.svg';
|
|
5
|
+
import { useI18n } from '@/i18n';
|
|
6
|
+
import { CalendarDataType, meetingTabT } from './types.ts';
|
|
7
|
+
|
|
8
|
+
const { t } = useI18n();
|
|
9
|
+
|
|
10
|
+
export const TYPE_COLOR_MAP = {
|
|
11
|
+
summit: 'var(--o-color-warning1)',
|
|
12
|
+
events: 'rgba(var(--o-cyan-6))',
|
|
13
|
+
meeting: 'var(--o-color-primary1)',
|
|
14
|
+
};
|
|
15
|
+
export const MEETING_TABS: meetingTabT[] = [
|
|
16
|
+
{
|
|
17
|
+
label: t('meeting.meetingTypeAll'),
|
|
18
|
+
value: CalendarDataType.ALL,
|
|
19
|
+
icon: IconAll,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: t('meeting.meetingTypeMeet'),
|
|
23
|
+
value: CalendarDataType.MEETING,
|
|
24
|
+
icon: IconMeeting,
|
|
25
|
+
color: TYPE_COLOR_MAP.meeting,
|
|
26
|
+
zIndex: 3,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: t('meeting.meetingTypeEvents'),
|
|
30
|
+
value: CalendarDataType.EVENTS,
|
|
31
|
+
icon: IconEvent,
|
|
32
|
+
color: TYPE_COLOR_MAP.events,
|
|
33
|
+
zIndex: 2,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: t('meeting.meetingTypeSummit'),
|
|
37
|
+
value: CalendarDataType.SUMMIT,
|
|
38
|
+
icon: IconSummit,
|
|
39
|
+
color: TYPE_COLOR_MAP.summit,
|
|
40
|
+
zIndex: 1,
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
export const INTERVAL_DAY = 0;
|
|
46
|
+
export const INTERVAL_WEEK = 1;
|
|
47
|
+
export const INTERVAL_MONTH = 2;
|
|
48
|
+
|
|
49
|
+
export const CYCLE_TYPE_OPTIONS0 = [
|
|
50
|
+
{
|
|
51
|
+
label: t('meeting.day0'),
|
|
52
|
+
value: INTERVAL_DAY,
|
|
53
|
+
max: 7,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
label: t('meeting.week0'),
|
|
57
|
+
value: INTERVAL_WEEK,
|
|
58
|
+
max: 2,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: t('meeting.month0'),
|
|
62
|
+
value: INTERVAL_MONTH,
|
|
63
|
+
max: 1,
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
export const CYCLE_TYPE_OPTIONS = [
|
|
67
|
+
{
|
|
68
|
+
label: t('meeting.day'),
|
|
69
|
+
value: INTERVAL_DAY,
|
|
70
|
+
max: 7,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: t('meeting.week'),
|
|
74
|
+
value: INTERVAL_WEEK,
|
|
75
|
+
max: 2,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: t('meeting.month'),
|
|
79
|
+
value: INTERVAL_MONTH,
|
|
80
|
+
max: 1,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
export const WEEKDAY = [
|
|
84
|
+
t('meeting.sunday'),
|
|
85
|
+
t('meeting.monday'),
|
|
86
|
+
t('meeting.tuesday'),
|
|
87
|
+
t('meeting.wednesday'),
|
|
88
|
+
t('meeting.thursday'),
|
|
89
|
+
t('meeting.friday'),
|
|
90
|
+
t('meeting.saturday'),
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
const getWeekOptions = () => {
|
|
94
|
+
const list = [];
|
|
95
|
+
for (let i = 1; i <= 7; i++) {
|
|
96
|
+
const idx = i % 7;
|
|
97
|
+
list.push({
|
|
98
|
+
value: idx,
|
|
99
|
+
label: WEEKDAY[idx],
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return list;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const INTERVAL_WEEK_OPTIONS = getWeekOptions();
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
export const EMAIL_REGEX = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
|
109
|
+
|
|
110
|
+
export const PROGRESS_COLORS = ['var(--o-color-primary1)', 'var(--o-color-warning1)', 'var(--o-color-success1)'];
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { App } from 'vue';
|
|
2
|
+
import _OMeetingCalendar from './OMeetingCalendar.vue';
|
|
3
|
+
import _OMeetingForm from './OMeetingForm.vue';
|
|
4
|
+
import _OMeetingPlayback from './OMeetingPlayback.vue';
|
|
5
|
+
import _OSigMeetingCalendar from './OSigMeetingCalendar.vue';
|
|
6
|
+
import _OMyMeetingCalendar from './OMyMeetingCalendar.vue';
|
|
7
|
+
|
|
8
|
+
const OMeetingCalendar = Object.assign(_OMeetingCalendar, {
|
|
9
|
+
install(app: App) {
|
|
10
|
+
app.component('OMeetingCalendar', _OMeetingCalendar);
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
const OMeetingForm = Object.assign(_OMeetingForm, {
|
|
14
|
+
install(app: App) {
|
|
15
|
+
app.component('OMeetingCalendar', _OMeetingForm);
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const OMeetingPlayback = Object.assign(_OMeetingPlayback, {
|
|
20
|
+
install(app: App) {
|
|
21
|
+
app.component('OMeetingPlayback', _OMeetingPlayback);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const OSigMeetingCalendar = Object.assign(_OSigMeetingCalendar, {
|
|
26
|
+
install(app: App) {
|
|
27
|
+
app.component('OSigMeetingCalendar', _OSigMeetingCalendar);
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const OMyMeetingCalendar = Object.assign(_OMyMeetingCalendar, {
|
|
32
|
+
install(app: App) {
|
|
33
|
+
app.component('OMyMeetingCalendar', _OMyMeetingCalendar);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export {
|
|
38
|
+
OMeetingCalendar,
|
|
39
|
+
OMeetingForm,
|
|
40
|
+
OMeetingPlayback,
|
|
41
|
+
OSigMeetingCalendar,
|
|
42
|
+
OMyMeetingCalendar,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export * from './types';
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// sig组列表
|
|
2
|
+
import { INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from '@/components/meeting/config.ts';
|
|
3
|
+
|
|
4
|
+
export interface GroupItemT {
|
|
5
|
+
id?: number;
|
|
6
|
+
group_name: string;
|
|
7
|
+
maillist?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// 会议日历上额外的数据,活动或者峰会
|
|
11
|
+
export enum CalendarDataType {
|
|
12
|
+
ALL = 'all',
|
|
13
|
+
MEETING = 'meeting',
|
|
14
|
+
EVENTS = 'events',
|
|
15
|
+
SUMMIT = 'summit',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface CalendarOtherDataT {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
url: string;
|
|
22
|
+
dates: string[];
|
|
23
|
+
location?: string;
|
|
24
|
+
address?: string;
|
|
25
|
+
start_date: string;
|
|
26
|
+
end_date: string;
|
|
27
|
+
activity_type: string;
|
|
28
|
+
type: CalendarDataType.EVENTS | CalendarDataType.SUMMIT;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface OptionItemT {
|
|
32
|
+
label: string;
|
|
33
|
+
value: string | number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
export type PlatformT = 'welink' | 'tencent';
|
|
38
|
+
|
|
39
|
+
// 会议新增、修改
|
|
40
|
+
export interface MeetingPostT {
|
|
41
|
+
id?: number; // 会议id
|
|
42
|
+
topic: string; // 会议主题 128
|
|
43
|
+
sponsor: string; // 会议发起人 20
|
|
44
|
+
group_name: string; // 所属SIG 64
|
|
45
|
+
platform: PlatformT; // 会议平台
|
|
46
|
+
date: string; // 会议日期
|
|
47
|
+
date_range?: string[]; // 日期返回
|
|
48
|
+
time: string; // 会议时间
|
|
49
|
+
start: string; // 会议开始时间
|
|
50
|
+
end: string; // 会议结束时间
|
|
51
|
+
etherpad: string; // etherpad链接
|
|
52
|
+
agenda: string; // 会议议程
|
|
53
|
+
email_list: string; // 通知邮件列表 1020
|
|
54
|
+
is_record: boolean; // 会议录制
|
|
55
|
+
is_cycle: boolean; // 是否重复
|
|
56
|
+
cycle_start_date: string;
|
|
57
|
+
cycle_end_date: string;
|
|
58
|
+
cycle_start: string;
|
|
59
|
+
cycle_end: string;
|
|
60
|
+
cycle_interval: number; // 重复周期, 当intervalType为month时固定为1
|
|
61
|
+
cycle_type: typeof INTERVAL_DAY | typeof INTERVAL_WEEK | typeof INTERVAL_MONTH; // 重复类型,默认为INTERVAL_DAY
|
|
62
|
+
cycle_point: number[]; // 重复节点,当intervalType为week|month时存在值
|
|
63
|
+
is_notify?: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// sig组列表
|
|
67
|
+
export interface GroupItemT {
|
|
68
|
+
id?: number;
|
|
69
|
+
group_name: string;
|
|
70
|
+
maillist?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// 会议详情
|
|
74
|
+
export interface MeetingItemT extends MeetingPostT {
|
|
75
|
+
id: number;
|
|
76
|
+
community: string;
|
|
77
|
+
mid: string;
|
|
78
|
+
m_mid: string;
|
|
79
|
+
join_url: string; // 会议链接
|
|
80
|
+
create_time: string; // 创建时间
|
|
81
|
+
isEnd: boolean; // 是否结束
|
|
82
|
+
is_delete: boolean; // 是否取消
|
|
83
|
+
update_time: string;
|
|
84
|
+
time: string; // 处理一下时间范围
|
|
85
|
+
cycle_sub: any[];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface PageParamsT {
|
|
89
|
+
page: number;
|
|
90
|
+
size: number;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface OptionItemT {
|
|
94
|
+
label: string;
|
|
95
|
+
value: string | number;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface meetingTabT {
|
|
99
|
+
label: string;
|
|
100
|
+
value: string;
|
|
101
|
+
icon: any;
|
|
102
|
+
color?: string;
|
|
103
|
+
zIndex?: number;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
// -------------------- 会议回放 --------------------
|
|
108
|
+
interface MeetingPlaybackPropsDetailT {
|
|
109
|
+
topic: string; // 会议主题
|
|
110
|
+
date: string; // 会议日期
|
|
111
|
+
start: string; // 会议开始时间
|
|
112
|
+
end: string; // 会议结束时间
|
|
113
|
+
agenda: string; // 会议详情
|
|
114
|
+
sponsor: string; // 会议创建人
|
|
115
|
+
groupName: string; // 会议所属sig组
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
interface MeetingPlaybackPropsDataT {
|
|
119
|
+
mid: string; // 会议ID
|
|
120
|
+
subId?: string; //子会议ID
|
|
121
|
+
textJson: string; // 字幕json文件
|
|
122
|
+
poster: string; // 封面
|
|
123
|
+
video: string; // 录屏
|
|
124
|
+
textVtt: string; // 字幕文件
|
|
125
|
+
topicJson: string; // 议题分段
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface MeetingPlaybackPropsT {
|
|
129
|
+
dates: string[]; // 如果是周期会议,传入可选的日期
|
|
130
|
+
detail: MeetingPlaybackPropsDetailT; // 会议信息
|
|
131
|
+
data: MeetingPlaybackPropsDataT; // 回放信息
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface SubjectItemT {
|
|
135
|
+
title: string; // 议题
|
|
136
|
+
startTime: string | number; // 议题开始时间 时:分:秒格式
|
|
137
|
+
endTime: string | number; // 议题结束时间 时:分:秒格式
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
export interface CaptionItemT {
|
|
142
|
+
ID: number; // 字幕id
|
|
143
|
+
start_time: string; // 字幕开始时间
|
|
144
|
+
end_time: string; // 字幕结束时间
|
|
145
|
+
speaker: string; // 发言人
|
|
146
|
+
content: string; // 发言内容
|
|
147
|
+
contentHtml: string; // 发言内容转html
|
|
148
|
+
speakerIdx: number; // 当前发言人索引
|
|
149
|
+
speakerLabel: string; // 发言人文案
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
export interface MeetingPlaybackVideoPropsT {
|
|
154
|
+
src: string; // 视频资源
|
|
155
|
+
vtt?: string; // 字幕资源
|
|
156
|
+
captions?: CaptionItemT[]; // 语言转文字json
|
|
157
|
+
poster?: string | null; // 封面图片
|
|
158
|
+
posterTitle?: string | null; // 封面文案
|
|
159
|
+
instance?: any; // 播放器实例
|
|
160
|
+
trackIdx: number; // 当前字幕索引
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface MeetingPlaybackSubtitlesPropsT {
|
|
164
|
+
captions?: CaptionItemT[]; // 语言转文字json
|
|
165
|
+
instance?: any; // 播放器实例
|
|
166
|
+
trackIdx: number; // 当前字幕索引
|
|
167
|
+
}
|