@opendesign-plus-test/components 0.0.1-rc.42 → 0.0.1-rc.45
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 +132 -112
- package/dist/components/OHeaderSearch.vue.d.ts +824 -506
- package/dist/components/OSourceCode.vue.d.ts +4 -6
- package/dist/components/activity/OActivityApproval.vue.d.ts +6 -10
- package/dist/components/activity/OActivityForm.vue.d.ts +3 -5
- package/dist/components/activity/OMyActivityCalendar.vue.d.ts +100 -46
- package/dist/components/activity/index.d.ts +56 -33
- package/dist/components/activity/types.d.ts +8 -1
- package/dist/components/events/config.d.ts +5 -18
- package/dist/components/events/types.d.ts +4 -1
- package/dist/components/header/OHeaderMobile.vue.d.ts +18 -11
- package/dist/components/header/components/HeaderNavMobile.vue.d.ts +4 -1
- package/dist/components/header/index.d.ts +12 -5
- package/dist/components/header/types.d.ts +4 -0
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +8 -12
- package/dist/components/meeting/OMeetingForm.vue.d.ts +3 -5
- package/dist/components/meeting/OMeetingPlayback.vue.d.ts +45 -0
- package/dist/components/meeting/OMyMeetingCalendar.vue.d.ts +100 -46
- package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +1 -1
- package/dist/components/meeting/index.d.ts +817 -0
- package/dist/components/meeting/types.d.ts +82 -17
- package/dist/components/meeting/utils.d.ts +1 -1
- package/dist/components/search/OSearchInput.vue.d.ts +1003 -0
- package/dist/components/search/composables/useImageSearch.d.ts +48 -0
- package/dist/components/search/composables/useKeywordHighlight.d.ts +2 -0
- package/dist/components/search/composables/useSearchHistory.d.ts +14 -0
- package/dist/components/search/index.d.ts +590 -0
- package/dist/components/search/internal/HighlightText.vue.d.ts +9 -0
- package/dist/components/search/internal/SearchImageInput.vue.d.ts +716 -0
- package/dist/components/search/internal/SearchPanel.vue.d.ts +100 -0
- package/dist/components/search/types.d.ts +20 -0
- package/dist/components.cjs.js +43 -43
- package/dist/components.css +1 -1
- package/dist/components.es.js +11681 -10636
- package/dist/index.d.ts +1 -0
- package/package.json +3 -3
- package/src/assets/svg-icons/icon-delete-hover.svg +4 -0
- package/src/assets/svg-icons/icon-delete.svg +5 -1
- package/src/assets/svg-icons/icon-image-close.svg +4 -0
- package/src/assets/svg-icons/icon-image-upload.svg +3 -0
- package/src/assets/svg-icons/icon-image-zoomin.svg +3 -0
- package/src/assets/svg-icons/icon-refresh.svg +3 -0
- package/src/components/OBanner.vue +18 -18
- package/src/components/OCookieNotice.vue +21 -21
- package/src/components/OFooter.vue +18 -17
- package/src/components/OHeaderSearch.vue +402 -420
- package/src/components/OHeaderUser.vue +3 -2
- package/src/components/OSection.vue +4 -4
- package/src/components/OSourceCode.vue +8 -10
- package/src/components/activity/OActivityApproval.vue +32 -32
- package/src/components/activity/OActivityForm.vue +5 -5
- package/src/components/activity/OMyActivityCalendar.vue +66 -50
- package/src/components/activity/config.ts +1 -1
- package/src/components/activity/types.ts +8 -1
- package/src/components/common/ContentWrapper.vue +3 -3
- package/src/components/common/MoreText.vue +1 -1
- package/src/components/common/ThFilter.vue +7 -7
- package/src/components/element-plus/OElCookieNotice.vue +27 -27
- package/src/components/events/OEventsApply.vue +44 -44
- package/src/components/events/OEventsCalendar.vue +14 -14
- package/src/components/events/OEventsList.vue +53 -26
- package/src/components/events/config.ts +1 -1
- package/src/components/events/types.ts +4 -1
- package/src/components/header/OHeader.vue +2 -2
- package/src/components/header/OHeaderMobile.vue +8 -1
- package/src/components/header/components/HeaderContent.vue +67 -63
- package/src/components/header/components/HeaderNav.vue +4 -4
- package/src/components/header/components/HeaderNavMobile.vue +8 -5
- package/src/components/header/types.ts +4 -0
- package/src/components/meeting/OMeetingCalendar.vue +66 -54
- package/src/components/meeting/OMeetingForm.vue +70 -51
- package/src/components/meeting/OMeetingPlayback.vue +8 -8
- package/src/components/meeting/OMyMeetingCalendar.vue +56 -45
- package/src/components/meeting/OSigMeetingCalendar.vue +31 -28
- package/src/components/meeting/components/OMeetingCalendarList.vue +31 -26
- package/src/components/meeting/components/OMeetingCalendarSelector.vue +10 -6
- package/src/components/meeting/components/OMeetingDetail.vue +32 -18
- package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +1 -1
- package/src/components/meeting/components/OMeetingPlaybackVideo.vue +12 -12
- package/src/components/meeting/components/OSigMeetingAside.vue +8 -9
- package/src/components/meeting/types.ts +88 -17
- package/src/components/search/OSearchInput.vue +463 -0
- package/src/components/search/composables/useImageSearch.ts +157 -0
- package/src/components/search/composables/useKeywordHighlight.ts +30 -0
- package/src/components/search/composables/useSearchHistory.ts +75 -0
- package/src/components/search/index.ts +23 -0
- package/src/components/search/internal/HighlightText.vue +37 -0
- package/src/components/search/internal/SearchImageInput.vue +488 -0
- package/src/components/search/internal/SearchPanel.vue +430 -0
- package/src/components/search/types.ts +25 -0
- package/src/draft/Banner.vue +6 -6
- package/src/draft/ButtonCards.vue +1 -1
- package/src/draft/Feature.vue +6 -6
- package/src/draft/Footer.vue +29 -22
- package/src/draft/HorizontalAnchor.vue +4 -4
- package/src/draft/ItemSwiper.vue +2 -2
- package/src/draft/Logo.vue +3 -3
- package/src/draft/LogoCard.vue +2 -2
- package/src/draft/MultiCard.vue +1 -1
- package/src/draft/MultiIconCard.vue +1 -1
- package/src/draft/OInfoCard.vue +4 -4
- package/src/draft/Section.vue +4 -4
- package/src/draft/SingleTabCard.vue +1 -1
- package/src/draft/SliderCard.vue +4 -3
- package/src/i18n/en.ts +10 -0
- package/src/i18n/zh.ts +10 -0
- package/src/index.ts +1 -0
- package/vite.config.ts +4 -3
|
@@ -3,7 +3,7 @@ import { OCollapse, OCollapseItem, ODivider, OIcon, OLink, OTag, useMessage } fr
|
|
|
3
3
|
import OMeetingDetail from './OMeetingDetail.vue';
|
|
4
4
|
import { computed, nextTick, ref, watch } from 'vue';
|
|
5
5
|
import IconCopy from '~icons/meeting/icon-copy.svg';
|
|
6
|
-
import { MeetingGroupType, MeetingItemT } from '../types.ts';
|
|
6
|
+
import { CalendarDataType, CycleSubItemT, MeetingGroupType, MeetingItemT, ObsDataItemT } from '../types.ts';
|
|
7
7
|
import IconChevronRight from '~icons/components/icon-chevron-right.svg';
|
|
8
8
|
import { INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from '../config.ts';
|
|
9
9
|
import { formatDate } from '../utils.ts';
|
|
@@ -14,14 +14,14 @@ const { activityTypeMap } = useActivityConfig();
|
|
|
14
14
|
|
|
15
15
|
const props = withDefaults(defineProps<{
|
|
16
16
|
list: MeetingItemT[];
|
|
17
|
-
groupType
|
|
17
|
+
groupType?: MeetingGroupType;
|
|
18
18
|
}>(), {
|
|
19
19
|
list: () => [],
|
|
20
20
|
});
|
|
21
21
|
const { t, locale, getConfig, getPointStr } = useMeetingConfig();
|
|
22
|
-
const detailRefs = ref([]);
|
|
22
|
+
const detailRefs = ref<any[]>([]);
|
|
23
23
|
const message = useMessage(null);
|
|
24
|
-
const copyInfo = async (idx) => {
|
|
24
|
+
const copyInfo = async (idx: number) => {
|
|
25
25
|
const instance = detailRefs.value[idx];
|
|
26
26
|
await instance.copyInfo();
|
|
27
27
|
message.success({
|
|
@@ -29,7 +29,7 @@ const copyInfo = async (idx) => {
|
|
|
29
29
|
});
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const collapseNames = ref([]);
|
|
32
|
+
const collapseNames = ref<number[]>([]);
|
|
33
33
|
const i18n = computed(() => {
|
|
34
34
|
return {
|
|
35
35
|
SIG_GROUP: `${ props.groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs') }: `,
|
|
@@ -43,7 +43,7 @@ const i18n = computed(() => {
|
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
// -------------------- 监听尺寸变化 --------------------
|
|
46
|
-
const meetInfoRef = ref();
|
|
46
|
+
const meetInfoRef = ref<HTMLDivElement[]>();
|
|
47
47
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
48
48
|
for (let entry of entries) {
|
|
49
49
|
const { height } = entry.contentRect;
|
|
@@ -70,11 +70,11 @@ watch(
|
|
|
70
70
|
},
|
|
71
71
|
);
|
|
72
72
|
|
|
73
|
-
const computedList = computed(() => {
|
|
74
|
-
return props.list.map((v) => {
|
|
73
|
+
const computedList = computed<any[]>(() => {
|
|
74
|
+
return props.list.map((v: any) => {
|
|
75
75
|
const type = v.type;
|
|
76
76
|
let dateRange = '';
|
|
77
|
-
if (type !==
|
|
77
|
+
if (type !== CalendarDataType.MEETING) {
|
|
78
78
|
let activity_type = activityTypeMap.value.get(v.activity_type)?.label;
|
|
79
79
|
if (v.start && v.end) {
|
|
80
80
|
if (v.end_date === v.start_date) {
|
|
@@ -113,7 +113,7 @@ const computedList = computed(() => {
|
|
|
113
113
|
let timeRange = `${ start } - ${ end }`;
|
|
114
114
|
let replay_url = null;
|
|
115
115
|
let hasObsData = false;
|
|
116
|
-
const obsData = v.obs_data?.filter((v) => v.text_video_url) || [];
|
|
116
|
+
const obsData = v.obs_data?.filter((v: ObsDataItemT) => v.text_video_url) || [];
|
|
117
117
|
|
|
118
118
|
if (is_cycle) {
|
|
119
119
|
let cycleType = '';
|
|
@@ -122,13 +122,13 @@ const computedList = computed(() => {
|
|
|
122
122
|
}
|
|
123
123
|
if (cycle_type === INTERVAL_WEEK) {
|
|
124
124
|
if (cycle_interval > 1) {
|
|
125
|
-
cycleType = t('meeting.cycleWeek.other', [getPointStr(cycle_type, cycle_point), cycle_interval]);
|
|
125
|
+
cycleType = t('meeting.cycleWeek.other', [getPointStr(cycle_type, cycle_point as unknown as number[]), cycle_interval]);
|
|
126
126
|
} else {
|
|
127
|
-
cycleType = t('meeting.cycleWeek.one', [getPointStr(cycle_type, cycle_point)]);
|
|
127
|
+
cycleType = t('meeting.cycleWeek.one', [getPointStr(cycle_type, cycle_point as unknown as number[])]);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
if (cycle_type === INTERVAL_MONTH) {
|
|
131
|
-
cycleType = t('meeting.cycleMonth', [getPointStr(cycle_type, cycle_point)]);
|
|
131
|
+
cycleType = t('meeting.cycleMonth', [getPointStr(cycle_type, cycle_point as unknown as number[])]);
|
|
132
132
|
}
|
|
133
133
|
timeRange = t('meeting.cycleMeetingText2', {
|
|
134
134
|
startDate: cycle_start_date,
|
|
@@ -137,7 +137,7 @@ const computedList = computed(() => {
|
|
|
137
137
|
endTime: cycle_end,
|
|
138
138
|
cycleType,
|
|
139
139
|
});
|
|
140
|
-
hasObsData = obsData.some((t) => t.sub_id === v.cycle_sub.find((z) => z.date === date)?.sub_id);
|
|
140
|
+
hasObsData = obsData.some((t: ObsDataItemT) => t.sub_id === v.cycle_sub.find((z: CycleSubItemT) => z.date === date)?.sub_id);
|
|
141
141
|
} else {
|
|
142
142
|
hasObsData = obsData.length > 0;
|
|
143
143
|
}
|
|
@@ -251,13 +251,13 @@ const computedList = computed(() => {
|
|
|
251
251
|
.o-collapse {
|
|
252
252
|
--icon-size2: 24px;
|
|
253
253
|
--icon-right: 12px;
|
|
254
|
-
@include respond
|
|
254
|
+
@include respond('<=pad') {
|
|
255
255
|
--icon-size2: 20px;
|
|
256
256
|
}
|
|
257
|
-
@include respond
|
|
257
|
+
@include respond('<=pad_v') {
|
|
258
258
|
--icon-right: 8px;
|
|
259
259
|
}
|
|
260
|
-
@include respond
|
|
260
|
+
@include respond('phone') {
|
|
261
261
|
--icon-right: 4px;
|
|
262
262
|
}
|
|
263
263
|
|
|
@@ -285,7 +285,7 @@ const computedList = computed(() => {
|
|
|
285
285
|
color: var(--o-color-primary1);
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
|
-
@include respond
|
|
288
|
+
@include respond('<=pad_v') {
|
|
289
289
|
&::after {
|
|
290
290
|
width: calc(100% - 2 * 16px);
|
|
291
291
|
}
|
|
@@ -302,7 +302,8 @@ const computedList = computed(() => {
|
|
|
302
302
|
|
|
303
303
|
.o-collapse-item-title {
|
|
304
304
|
.copy-icon {
|
|
305
|
-
|
|
305
|
+
opacity: 1;
|
|
306
|
+
visibility: visible;
|
|
306
307
|
}
|
|
307
308
|
}
|
|
308
309
|
}
|
|
@@ -319,16 +320,17 @@ const computedList = computed(() => {
|
|
|
319
320
|
padding: var(--o-gap-4) var(--o-gap-5);
|
|
320
321
|
position: relative;
|
|
321
322
|
|
|
322
|
-
@include respond
|
|
323
|
+
@include respond('>pad_v') {
|
|
323
324
|
&:hover {
|
|
324
325
|
.o-collapse-item-title {
|
|
325
326
|
.copy-icon {
|
|
326
|
-
|
|
327
|
+
opacity: 1;
|
|
328
|
+
visibility: visible;
|
|
327
329
|
}
|
|
328
330
|
}
|
|
329
331
|
}
|
|
330
332
|
}
|
|
331
|
-
@include respond
|
|
333
|
+
@include respond('<=pad_v') {
|
|
332
334
|
padding: 12px 16px;
|
|
333
335
|
}
|
|
334
336
|
|
|
@@ -343,11 +345,14 @@ const computedList = computed(() => {
|
|
|
343
345
|
|
|
344
346
|
.meet-title-left {
|
|
345
347
|
flex-grow: 1;
|
|
348
|
+
min-width: 0;
|
|
346
349
|
}
|
|
347
350
|
|
|
348
351
|
.copy-icon {
|
|
349
352
|
flex-shrink: 0;
|
|
350
|
-
display:
|
|
353
|
+
display: inline-flex;
|
|
354
|
+
opacity: 0;
|
|
355
|
+
visibility: hidden;
|
|
351
356
|
|
|
352
357
|
&:hover {
|
|
353
358
|
color: var(--o-color-primary1);
|
|
@@ -387,11 +392,11 @@ const computedList = computed(() => {
|
|
|
387
392
|
border-radius: var(--o-radius-xs);
|
|
388
393
|
@include tip1;
|
|
389
394
|
|
|
390
|
-
@include respond
|
|
395
|
+
@include respond('<=pad_v') {
|
|
391
396
|
padding: 16px 16px 16px calc(var(--icon-right) + var(--icon-size2) + 16px - 12px);
|
|
392
397
|
|
|
393
398
|
}
|
|
394
|
-
@include respond
|
|
399
|
+
@include respond('phone') {
|
|
395
400
|
padding: 12px 16px;
|
|
396
401
|
}
|
|
397
402
|
|
|
@@ -441,7 +446,7 @@ const computedList = computed(() => {
|
|
|
441
446
|
color: var(--o-color-info2);
|
|
442
447
|
@include text2;
|
|
443
448
|
|
|
444
|
-
@include respond
|
|
449
|
+
@include respond('<=pad_v') {
|
|
445
450
|
@include h3;
|
|
446
451
|
}
|
|
447
452
|
|
|
@@ -26,9 +26,9 @@ const getList = () => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
const list = computed(() => getList());
|
|
29
|
-
const checked = ref([]);
|
|
30
|
-
const temp = ref([]);
|
|
31
|
-
const selectorRef = ref(null);
|
|
29
|
+
const checked = ref<number[]>([]);
|
|
30
|
+
const temp = ref<number[]>([]);
|
|
31
|
+
const selectorRef = ref<InstanceType<typeof ElSelect> | null>(null);
|
|
32
32
|
|
|
33
33
|
const init = () => {
|
|
34
34
|
checked.value = [...props.modelValue];
|
|
@@ -41,12 +41,16 @@ watchEffect(() => {
|
|
|
41
41
|
|
|
42
42
|
const confirm = () => {
|
|
43
43
|
emits('update:modelValue', temp.value);
|
|
44
|
-
selectorRef.value
|
|
44
|
+
if (selectorRef.value) {
|
|
45
|
+
selectorRef.value.expanded = false;
|
|
46
|
+
}
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
const cancel = () => {
|
|
48
50
|
init();
|
|
49
|
-
selectorRef.value
|
|
51
|
+
if (selectorRef.value) {
|
|
52
|
+
selectorRef.value.expanded = false;
|
|
53
|
+
}
|
|
50
54
|
};
|
|
51
55
|
|
|
52
56
|
const clickItem = (val: number) => {
|
|
@@ -83,7 +87,7 @@ const removeTag = (val: number) => {
|
|
|
83
87
|
size="large"
|
|
84
88
|
multiple
|
|
85
89
|
collapseTags
|
|
86
|
-
maxCollapseTags="3"
|
|
90
|
+
:maxCollapseTags="3"
|
|
87
91
|
:modelValue="checked"
|
|
88
92
|
@remove-tag="removeTag"
|
|
89
93
|
>
|
|
@@ -30,7 +30,7 @@ const infoList = computed(() =>
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
const activityInfoList = computed(() => {
|
|
33
|
-
const isLive = props.data.live_url?.length
|
|
33
|
+
const isLive = !!props.data.live_url?.length;
|
|
34
34
|
return [
|
|
35
35
|
{ label: t('meeting.activityDetail2'), key: 'agenda', ellipsis: true },
|
|
36
36
|
{ label: t('meeting.startDate'), key: 'start_date_time' },
|
|
@@ -43,7 +43,7 @@ const activityInfoList = computed(() => {
|
|
|
43
43
|
].slice(0, props.from === 'home' ? 5 : 8);
|
|
44
44
|
});
|
|
45
45
|
const activityInfoApprovalList = computed(() => {
|
|
46
|
-
const isLive = props.data.live_url?.length
|
|
46
|
+
const isLive = !!props.data.live_url?.length;
|
|
47
47
|
return [
|
|
48
48
|
{ label: t('meeting.activityType'), key: 'activity_type', isType: true },
|
|
49
49
|
{ label: isLive ? t('meeting.livePlatform') : t('meeting.activityAddress'), key: isLive ? 'live_url' : 'address' },
|
|
@@ -57,14 +57,28 @@ const activityInfoApprovalList = computed(() => {
|
|
|
57
57
|
];
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
interface ColumnItemT {
|
|
61
|
+
label: string;
|
|
62
|
+
key: string;
|
|
63
|
+
ellipsis?: boolean;
|
|
64
|
+
isLink?: boolean;
|
|
65
|
+
isRecord?: boolean;
|
|
66
|
+
isType?: boolean;
|
|
67
|
+
extra?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const getField = (key: string) => (props.data as Record<string, any>)[key];
|
|
71
|
+
|
|
72
|
+
const columns = computed<ColumnItemT[]>(() => {
|
|
62
73
|
if (props.data.type === CalendarDataType.EVENTS) {
|
|
63
74
|
if (props.page === CalendarDataType.APPROVAL) {
|
|
64
75
|
return activityInfoApprovalList.value;
|
|
65
76
|
}
|
|
66
77
|
return activityInfoList.value;
|
|
67
78
|
}
|
|
79
|
+
if (props.data.type === CalendarDataType.SUMMIT) {
|
|
80
|
+
return activityInfoList.value;
|
|
81
|
+
}
|
|
68
82
|
return infoList.value;
|
|
69
83
|
});
|
|
70
84
|
|
|
@@ -73,7 +87,7 @@ const domRef = ref([]);
|
|
|
73
87
|
const copyInfo = () => {
|
|
74
88
|
try {
|
|
75
89
|
let text = `${ t('meeting.meetingTopic') + props.data.topic }\n`;
|
|
76
|
-
text += [...domRef.value].reduce((pre, cur) => `${ pre }${ cur.textContent }\n`, '');
|
|
90
|
+
text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => `${ pre }${ cur.textContent }\n`, '');
|
|
77
91
|
navigator.clipboard.writeText(text);
|
|
78
92
|
return Promise.resolve();
|
|
79
93
|
} catch (e) {
|
|
@@ -91,36 +105,36 @@ defineExpose({ copyInfo });
|
|
|
91
105
|
v-for="(info, infoIdx) in columns"
|
|
92
106
|
:key="infoIdx"
|
|
93
107
|
:class="{
|
|
94
|
-
'record-item': info.isRecord &&
|
|
108
|
+
'record-item': info.isRecord && getField(info.key)?.length,
|
|
95
109
|
'link-item': info.isLink,
|
|
96
|
-
'is-empty':!
|
|
110
|
+
'is-empty':!getField(info.key)?.length,
|
|
97
111
|
[`label-item_${data.id}`]: true,
|
|
98
112
|
[`type_${data.type}`]: true,
|
|
99
113
|
}"
|
|
100
114
|
>
|
|
101
|
-
<template v-if="
|
|
115
|
+
<template v-if="getField(info.key) && !info.isRecord">
|
|
102
116
|
<span class="label">{{ info.label }}</span>
|
|
103
|
-
<MoreText :show="show" v-if="info.ellipsis" :text="
|
|
117
|
+
<MoreText :show="show" v-if="info.ellipsis" :text="getField(info.key) || '-'" />
|
|
104
118
|
<OLink
|
|
105
119
|
v-else-if="info.isLink"
|
|
106
120
|
target="_blank"
|
|
107
121
|
class="value"
|
|
108
122
|
color="primary"
|
|
109
123
|
hover-underline
|
|
110
|
-
:href="
|
|
124
|
+
:href="getField(info.key)"
|
|
111
125
|
>
|
|
112
|
-
{{
|
|
126
|
+
{{ getField(info.key) }}
|
|
113
127
|
</OLink>
|
|
114
|
-
<span v-else-if="info.key === 'platform'">{{ getPlatformLabel(
|
|
128
|
+
<span v-else-if="info.key === 'platform'">{{ getPlatformLabel(getField(info.key)) }}</span>
|
|
115
129
|
<span v-else class="value">
|
|
116
|
-
<i v-if="info.extra" class="extra">{{
|
|
117
|
-
{{
|
|
130
|
+
<i v-if="info.extra" class="extra">{{ getField(info.extra) }}</i>
|
|
131
|
+
{{ getField(info.key) || '-' }}
|
|
118
132
|
</span>
|
|
119
133
|
</template>
|
|
120
|
-
<template v-if="info.isRecord &&
|
|
134
|
+
<template v-if="info.isRecord && getField(info.key)?.length">
|
|
121
135
|
<span class="label">{{ info.label }}</span>
|
|
122
136
|
<div>
|
|
123
|
-
<p v-for="re in
|
|
137
|
+
<p v-for="re in getField(info.key)" :key="re.create_time" class="value">
|
|
124
138
|
{{ re.reason }}
|
|
125
139
|
{{ formatDate(re.create_time, 'YYYY/MM/DD HH:mm:ss') }}
|
|
126
140
|
{{ re.action === 1 ? t('meeting.approveReview') : t('meeting.rejectReview') }}
|
|
@@ -142,7 +156,7 @@ defineExpose({ copyInfo });
|
|
|
142
156
|
font-size: 14px;
|
|
143
157
|
gap: var(--o-gap-5);
|
|
144
158
|
|
|
145
|
-
@include respond
|
|
159
|
+
@include respond('<=pad_v') {
|
|
146
160
|
font-size: 12px;
|
|
147
161
|
gap: var(--o-gap-2);
|
|
148
162
|
}
|
|
@@ -219,7 +233,7 @@ defineExpose({ copyInfo });
|
|
|
219
233
|
justify-content: flex-end;
|
|
220
234
|
gap: var(--o-gap-2);
|
|
221
235
|
|
|
222
|
-
@include respond
|
|
236
|
+
@include respond('phone') {
|
|
223
237
|
border-top: 1px solid var(--o-color-control4);
|
|
224
238
|
padding-top: var(--o-gap-2);
|
|
225
239
|
position: static;
|
|
@@ -26,7 +26,7 @@ const closeSpeakerMenu = () => {
|
|
|
26
26
|
speakerMenuVisible.value = false;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
const handleCue = (textTrack, init = false) => {
|
|
29
|
+
const handleCue = (textTrack: any, init = false) => {
|
|
30
30
|
const player = props.instance;
|
|
31
31
|
if (!player) return;
|
|
32
32
|
// 修改字幕
|
|
@@ -133,7 +133,7 @@ const videoInit = async () => {
|
|
|
133
133
|
FullscreenToggle: true,
|
|
134
134
|
},
|
|
135
135
|
},
|
|
136
|
-
});
|
|
136
|
+
}) as unknown as any;
|
|
137
137
|
emits('getInstance', player);
|
|
138
138
|
// 加载视频
|
|
139
139
|
player.src(props.src);
|
|
@@ -150,10 +150,10 @@ const videoInit = async () => {
|
|
|
150
150
|
|
|
151
151
|
// 添加自定义控制字幕的按钮
|
|
152
152
|
class CustomSubsCapsButton extends videojs.getComponent('Button') {
|
|
153
|
-
constructor(player, options) {
|
|
153
|
+
constructor(player: any, options: object) {
|
|
154
154
|
super(player, options);
|
|
155
155
|
this.addClass('vjs-subtitle-toggle-button', 'vjs-subtitle-hidden');
|
|
156
|
-
this.controlText('Toggle Subtitles');
|
|
156
|
+
(this as any).controlText('Toggle Subtitles');
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
buildCSSClass() {
|
|
@@ -161,7 +161,7 @@ const videoInit = async () => {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
handleClick() {
|
|
164
|
-
const tracks = this.player().textTracks();
|
|
164
|
+
const tracks = this.player().textTracks() as unknown as any[];
|
|
165
165
|
for (let i = 0; i < tracks.length; i++) {
|
|
166
166
|
if (tracks[i].kind === 'subtitles') {
|
|
167
167
|
handleCue(tracks[i], true);
|
|
@@ -181,14 +181,14 @@ const videoInit = async () => {
|
|
|
181
181
|
|
|
182
182
|
if (props.vtt) {
|
|
183
183
|
videojs.registerComponent('SubtitleToggleButton', CustomSubsCapsButton);
|
|
184
|
-
if (!player.controlBar.children_.some((v) => v.name_ === 'SubtitleToggleButton')) {
|
|
184
|
+
if (!player.controlBar.children_.some((v: any) => v.name_ === 'SubtitleToggleButton')) {
|
|
185
185
|
player.controlBar.addChild('SubtitleToggleButton', {}, 8);
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
// 动态修改字幕
|
|
190
190
|
const textTracks = player?.textTracks().tracks_;
|
|
191
|
-
textTracks.forEach((textTrack) => {
|
|
191
|
+
textTracks.forEach((textTrack: any) => {
|
|
192
192
|
textTrack?.addEventListener('cuechange', () => {
|
|
193
193
|
handleCue(textTrack);
|
|
194
194
|
});
|
|
@@ -652,12 +652,12 @@ defineExpose({
|
|
|
652
652
|
|
|
653
653
|
.vjs-progress-holder {
|
|
654
654
|
margin: 0;
|
|
655
|
-
background: rgba(var(--o-
|
|
655
|
+
background: rgba(var(--o-grey-1), 0.3);
|
|
656
656
|
}
|
|
657
657
|
|
|
658
658
|
.vjs-load-progress {
|
|
659
659
|
div {
|
|
660
|
-
background: rgba(var(--o-
|
|
660
|
+
background: rgba(var(--o-grey-1), 0.5);
|
|
661
661
|
}
|
|
662
662
|
}
|
|
663
663
|
|
|
@@ -724,7 +724,7 @@ defineExpose({
|
|
|
724
724
|
background-repeat: no-repeat;
|
|
725
725
|
background-size: cover;
|
|
726
726
|
border: 0.5px solid rgba(var(--o-white), 0.6);
|
|
727
|
-
background-color: rgba(var(--o-
|
|
727
|
+
background-color: rgba(var(--o-grey-1), 0.2);
|
|
728
728
|
|
|
729
729
|
.vjs-icon-placeholder::before {
|
|
730
730
|
content: none;
|
|
@@ -733,8 +733,8 @@ defineExpose({
|
|
|
733
733
|
|
|
734
734
|
@include hover {
|
|
735
735
|
.vjs-big-play-button {
|
|
736
|
-
border: 0.5px solid rgba(var(--o-
|
|
737
|
-
background-color: rgba(var(--o-
|
|
736
|
+
border: 0.5px solid rgba(var(--o-grey-1), 0.6);
|
|
737
|
+
background-color: rgba(var(--o-grey-1), 0.2);
|
|
738
738
|
}
|
|
739
739
|
}
|
|
740
740
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { OIcon, OIconArrowLeft, OIconArrowRight } from '@opensig/opendesign';
|
|
3
|
-
import IconMeetinging from '~icons/meeting/icon-meet.svg';
|
|
4
3
|
import { useMeetingConfig } from '@/components/meeting/composables/useMeetingConfig';
|
|
5
4
|
import { CalendarDataType } from '@/components/meeting';
|
|
6
5
|
|
|
@@ -18,11 +17,11 @@ const props = defineProps<{
|
|
|
18
17
|
const STEP = 1;
|
|
19
18
|
|
|
20
19
|
const emits = defineEmits(['click-date', 'change-month']);
|
|
21
|
-
const clickDate = (date) => {
|
|
20
|
+
const clickDate = (date: string) => {
|
|
22
21
|
emits('click-date', date);
|
|
23
22
|
};
|
|
24
23
|
|
|
25
|
-
const changeMonth = (step) => {
|
|
24
|
+
const changeMonth = (step: number) => {
|
|
26
25
|
if (props.current + step >= props.total || props.current + step < 0) return;
|
|
27
26
|
emits('change-month', step);
|
|
28
27
|
};
|
|
@@ -85,17 +84,17 @@ const changeMonth = (step) => {
|
|
|
85
84
|
display: flex;
|
|
86
85
|
flex-direction: column;
|
|
87
86
|
border-right: 1px solid var(--o-color-control4);
|
|
88
|
-
@include respond
|
|
87
|
+
@include respond('<=pad') {
|
|
89
88
|
padding: var(--o-gap-4);
|
|
90
89
|
border-right: none;
|
|
91
90
|
}
|
|
92
|
-
@include respond
|
|
91
|
+
@include respond('phone') {
|
|
93
92
|
padding: 16px;
|
|
94
93
|
.title {
|
|
95
94
|
margin-bottom: var(--o-gap-2);
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
|
-
@include respond
|
|
97
|
+
@include respond('<=pad_v') {
|
|
99
98
|
width: 100%;
|
|
100
99
|
}
|
|
101
100
|
|
|
@@ -113,7 +112,7 @@ const changeMonth = (step) => {
|
|
|
113
112
|
display: grid;
|
|
114
113
|
grid-template-columns: repeat(2, 1fr);
|
|
115
114
|
|
|
116
|
-
@include respond
|
|
115
|
+
@include respond('<=pad_v') {
|
|
117
116
|
display: flex;
|
|
118
117
|
}
|
|
119
118
|
|
|
@@ -186,11 +185,11 @@ const changeMonth = (step) => {
|
|
|
186
185
|
}
|
|
187
186
|
}
|
|
188
187
|
|
|
189
|
-
@include respond
|
|
188
|
+
@include respond('<=pad_v') {
|
|
190
189
|
.day-item {
|
|
191
190
|
}
|
|
192
191
|
}
|
|
193
|
-
@include respond
|
|
192
|
+
@include respond('<=pad_v') {
|
|
194
193
|
.day-item {
|
|
195
194
|
width: min(128px, calc((100% - var(--o-gap-2)) / 2));
|
|
196
195
|
}
|