@opendesign-plus/components 0.0.1-rc.24 → 0.0.1-rc.26
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 +111 -88
- package/dist/components/OHeaderSearch.vue.d.ts +814 -534
- package/dist/components/OHeaderUser.vue.d.ts +1 -1
- package/dist/components/OLanguageSwitcher.vue.d.ts +49 -0
- package/dist/components/OThemeSwitcher.vue.d.ts +2 -5
- package/dist/components/activity/OActivityMyCalendar.vue.d.ts +4 -4
- package/dist/components/activity/index.d.ts +2 -2
- package/dist/components/banner/OBanner.vue.d.ts +13 -0
- package/dist/components/banner/OBannerContent.vue.d.ts +7 -0
- package/dist/components/banner/index.d.ts +68 -0
- package/dist/components/banner/types.d.ts +31 -0
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +5 -3
- package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +4 -4
- package/dist/components/meeting/OMeetingPlayback.vue.d.ts +50 -1
- package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +1 -1
- package/dist/components/meeting/components/OMeetingPlaybackSubtitles.vue.d.ts +16 -1
- package/dist/components/meeting/composables/useMeetingConfig.d.ts +1 -1
- package/dist/components/meeting/index.d.ts +347 -20
- package/dist/components/meeting/types.d.ts +1 -1
- package/dist/components/search/OSearchInput.vue.d.ts +1005 -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 +40 -40
- package/dist/components.css +1 -1
- package/dist/components.es.js +11352 -10056
- package/dist/index.d.ts +4 -2
- package/package.json +4 -4
- package/scripts/generate-components-index.js +1 -1
- package/src/assets/styles/element-plus.scss +16 -9
- 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/OHeaderSearch.vue +445 -418
- package/src/components/OLanguageSwitcher.vue +211 -0
- package/src/components/OPlusConfigProvider.vue +2 -2
- package/src/components/OThemeSwitcher.vue +51 -27
- package/src/components/activity/OActivityForm.vue +7 -3
- package/src/components/activity/OActivityMyCalendar.vue +16 -7
- package/src/components/banner/OBanner.vue +288 -0
- package/src/components/banner/OBannerContent.vue +175 -0
- package/src/components/banner/index.ts +18 -0
- package/src/components/banner/types.ts +39 -0
- package/src/components/header/OHeader.vue +1 -1
- package/src/components/meeting/OMeetingCalendar.vue +11 -6
- package/src/components/meeting/OMeetingForm.vue +55 -9
- package/src/components/meeting/OMeetingMyCalendar.vue +17 -14
- package/src/components/meeting/OMeetingPlayback.vue +10 -4
- package/src/components/meeting/OMeetingSigCalendar.vue +1 -1
- package/src/components/meeting/components/OMeetingCalendarList.vue +57 -21
- package/src/components/meeting/components/OMeetingCalendarSelector.vue +11 -8
- package/src/components/meeting/components/OMeetingDetail.vue +1 -1
- package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +7 -4
- package/src/components/meeting/composables/useMeetingConfig.ts +5 -5
- package/src/components/meeting/index.ts +2 -2
- package/src/components/meeting/types.ts +1 -1
- package/src/components/search/OSearchInput.vue +526 -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 +498 -0
- package/src/components/search/internal/SearchPanel.vue +431 -0
- package/src/components/search/types.ts +25 -0
- package/src/i18n/en.ts +13 -1
- package/src/i18n/zh.ts +14 -3
- package/src/index.ts +5 -3
- package/vite.config.ts +4 -0
- package/dist/components/OBanner.vue.d.ts +0 -11
- package/src/components/OBanner.vue +0 -398
|
@@ -45,7 +45,7 @@ const intervalTypeMax = computed(() => {
|
|
|
45
45
|
return findLabelFromOptions(form.value.cycle_type, cycleTypeOptions.value, 'max');
|
|
46
46
|
});
|
|
47
47
|
const initForm: MeetingPostT = {
|
|
48
|
-
is_record:
|
|
48
|
+
is_record: true,
|
|
49
49
|
agenda: '',
|
|
50
50
|
email_list: '',
|
|
51
51
|
platform: 'WELINK',
|
|
@@ -265,15 +265,48 @@ const getPlatformOptions = async () => {
|
|
|
265
265
|
};
|
|
266
266
|
|
|
267
267
|
const emits = defineEmits(['confirm', 'cancel']);
|
|
268
|
+
|
|
269
|
+
const getPropData = () => {
|
|
270
|
+
if (!props.data) {
|
|
271
|
+
return {};
|
|
272
|
+
}
|
|
273
|
+
const {
|
|
274
|
+
start,
|
|
275
|
+
end,
|
|
276
|
+
is_cycle,
|
|
277
|
+
cycle_start_date,
|
|
278
|
+
cycle_end_date,
|
|
279
|
+
cycle_point,
|
|
280
|
+
cycle_interval,
|
|
281
|
+
cycle_start,
|
|
282
|
+
cycle_end,
|
|
283
|
+
} = props.data;
|
|
284
|
+
return {
|
|
285
|
+
...props.data,
|
|
286
|
+
time: `${ start }-${ end }`,
|
|
287
|
+
...(is_cycle
|
|
288
|
+
? {
|
|
289
|
+
date_range: [cycle_start_date, cycle_end_date],
|
|
290
|
+
cycle_point: cycle_point?.map((v) => parseInt(v)) || [],
|
|
291
|
+
cycle_interval: cycle_interval || 1,
|
|
292
|
+
time: `${ cycle_start }-${ cycle_end }`,
|
|
293
|
+
start: cycle_start,
|
|
294
|
+
end: cycle_end,
|
|
295
|
+
}
|
|
296
|
+
: {}),
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
|
|
268
300
|
watch(
|
|
269
301
|
() => props.data,
|
|
270
302
|
(data) => {
|
|
271
303
|
if (data) {
|
|
272
|
-
const
|
|
304
|
+
const propData = getPropData() as unknown as CycleSubItemT;
|
|
305
|
+
const sub = propData?.cycle_sub?.find((v) => v.sub_id === (props.subId || propData.sub_id)) || {} as unknown as CycleSubItemT;
|
|
273
306
|
const { mid, date, start, end, sub_id } = sub;
|
|
274
307
|
Object.assign(
|
|
275
308
|
form.value,
|
|
276
|
-
|
|
309
|
+
propData,
|
|
277
310
|
props.isSub
|
|
278
311
|
? {
|
|
279
312
|
is_cycle: false,
|
|
@@ -373,6 +406,7 @@ const confirm = async () => {
|
|
|
373
406
|
platform,
|
|
374
407
|
is_cycle,
|
|
375
408
|
} as MeetingPostT as unknown as any;
|
|
409
|
+
let flag = undefined;
|
|
376
410
|
if (is_cycle) {
|
|
377
411
|
params = {
|
|
378
412
|
...params,
|
|
@@ -401,7 +435,7 @@ const confirm = async () => {
|
|
|
401
435
|
if (props.isSub) {
|
|
402
436
|
const { mid, sub_id } = form.value;
|
|
403
437
|
const { date, start, end } = params;
|
|
404
|
-
await props?.editSubMeetingRequest(sub_id, {
|
|
438
|
+
flag = await props?.editSubMeetingRequest(sub_id, {
|
|
405
439
|
mid,
|
|
406
440
|
date,
|
|
407
441
|
start,
|
|
@@ -416,17 +450,21 @@ const confirm = async () => {
|
|
|
416
450
|
etherpad: _etherpad,
|
|
417
451
|
...data
|
|
418
452
|
} = params;
|
|
419
|
-
await props?.editMeetingRequest(props.data?.id as unknown as number, {
|
|
453
|
+
flag = await props?.editMeetingRequest(props.data?.id as unknown as number, {
|
|
420
454
|
...data,
|
|
421
455
|
is_notify: true,
|
|
422
456
|
});
|
|
423
457
|
}
|
|
424
458
|
} else {
|
|
425
|
-
await props?.createMeetingRequest({
|
|
459
|
+
flag = await props?.createMeetingRequest({
|
|
426
460
|
...params,
|
|
427
461
|
email_list: form.value.email_list.replaceAll(' ', ''),
|
|
428
462
|
});
|
|
429
463
|
}
|
|
464
|
+
// 如果返回的是boolean,只有true表示回调成功
|
|
465
|
+
if (typeof flag === 'boolean' && !flag) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
430
468
|
const msg = t('meeting.meetingHandleSuccess', [form.value.topic, type]);
|
|
431
469
|
message.success({
|
|
432
470
|
content: msg,
|
|
@@ -651,7 +689,11 @@ defineExpose({
|
|
|
651
689
|
<OIcon>
|
|
652
690
|
<IconTip />
|
|
653
691
|
</OIcon>
|
|
654
|
-
<
|
|
692
|
+
<div>
|
|
693
|
+
<span>{{ t('meeting.meetingRecordDesc1') }}</span>
|
|
694
|
+
<br>
|
|
695
|
+
<span>{{ t('meeting.meetingRecordDesc2') }}</span>
|
|
696
|
+
</div>
|
|
655
697
|
</div>
|
|
656
698
|
</div>
|
|
657
699
|
</template>
|
|
@@ -663,7 +705,11 @@ defineExpose({
|
|
|
663
705
|
<OIcon>
|
|
664
706
|
<IconTip />
|
|
665
707
|
</OIcon>
|
|
666
|
-
<
|
|
708
|
+
<div>
|
|
709
|
+
<span>{{ t('meeting.meetingRecordDesc1') }}</span>
|
|
710
|
+
<br>
|
|
711
|
+
<span>{{ t('meeting.meetingRecordDesc2') }}</span>
|
|
712
|
+
</div>
|
|
667
713
|
</div>
|
|
668
714
|
</div>
|
|
669
715
|
</template>
|
|
@@ -695,7 +741,7 @@ defineExpose({
|
|
|
695
741
|
</OForm>
|
|
696
742
|
<div class="form-btns" v-if="showBtns">
|
|
697
743
|
<OButton color="primary" variant="solid" size="large" @click="confirm" :loading="loading">
|
|
698
|
-
{{ isEdit ? t('common.save') : (
|
|
744
|
+
{{ isEdit ? t('common.save') : (confirmText || t('meeting.book')) }}
|
|
699
745
|
</OButton>
|
|
700
746
|
<OButton color="primary" variant="outline" size="large" @click="cancel">{{ t('common.cancel') }}</OButton>
|
|
701
747
|
</div>
|
|
@@ -22,7 +22,6 @@ import { computed, nextTick, onMounted, ref, onUnmounted, watch } from 'vue';
|
|
|
22
22
|
import OMeetingDetail from './components/OMeetingDetail.vue';
|
|
23
23
|
import { CalendarDataType, MeetingGroupType, MeetingItemT, PageParamsT } from './types.ts';
|
|
24
24
|
import dayjs from 'dayjs';
|
|
25
|
-
import IconMeeting from '~icons/meeting/icon-meet.svg';
|
|
26
25
|
import { INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from './config.ts';
|
|
27
26
|
import { formatDate, getDateNumber } from './utils.ts';
|
|
28
27
|
import { useMeetingConfig } from './composables/useMeetingConfig';
|
|
@@ -279,7 +278,10 @@ const confirmCancel = async () => {
|
|
|
279
278
|
}
|
|
280
279
|
try {
|
|
281
280
|
dialogLoading.value = true;
|
|
282
|
-
await props.deleteMeetingRequest(currentRow.value.id);
|
|
281
|
+
const flag = await props.deleteMeetingRequest(currentRow.value.id);
|
|
282
|
+
if (typeof flag === 'boolean' && !flag) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
283
285
|
cancelVisible.value = false;
|
|
284
286
|
message.success({
|
|
285
287
|
content: `${ t('meeting.meetingCancel', [currentRow.value.topic]) }`,
|
|
@@ -331,24 +333,25 @@ const confirmHandleItem = async () => {
|
|
|
331
333
|
}
|
|
332
334
|
if (handleDialogType.value === 'cancel') {
|
|
333
335
|
try {
|
|
336
|
+
let flag = undefined;
|
|
334
337
|
dialogLoading.value = true;
|
|
335
338
|
if (handleType.value === 'single' && row.is_cycle) {
|
|
336
339
|
if (!props.cancelSubMeetingRequest) {
|
|
337
340
|
return;
|
|
338
341
|
}
|
|
339
|
-
await props.cancelSubMeetingRequest(row.sub_id);
|
|
340
|
-
message.success({
|
|
341
|
-
content: `${ t('meeting.meetingCancel', [row.topic]) }`,
|
|
342
|
-
});
|
|
342
|
+
flag = await props.cancelSubMeetingRequest(row.sub_id);
|
|
343
343
|
} else {
|
|
344
344
|
if (!props.deleteMeetingRequest) {
|
|
345
345
|
return;
|
|
346
346
|
}
|
|
347
|
-
await props.deleteMeetingRequest(row.id);
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
347
|
+
flag = await props.deleteMeetingRequest(row.id);
|
|
348
|
+
}
|
|
349
|
+
if (typeof flag === 'boolean' && !flag) {
|
|
350
|
+
return;
|
|
351
351
|
}
|
|
352
|
+
message.success({
|
|
353
|
+
content: `${ t('meeting.meetingCancel', [row.topic]) }`,
|
|
354
|
+
});
|
|
352
355
|
cancelHandleItem();
|
|
353
356
|
reloadAll.value = true;
|
|
354
357
|
getList();
|
|
@@ -968,14 +971,13 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
968
971
|
|
|
969
972
|
.date-cell {
|
|
970
973
|
height: 56px;
|
|
971
|
-
width:
|
|
972
|
-
padding: var(--o-gap-1);
|
|
974
|
+
width: 34px;
|
|
973
975
|
position: relative;
|
|
974
976
|
cursor: default !important;
|
|
975
977
|
|
|
976
978
|
.date-cell-text {
|
|
977
979
|
font-size: 14px;
|
|
978
|
-
line-height:
|
|
980
|
+
line-height: 34px;
|
|
979
981
|
border-radius: var(--meeting-cell-radius);
|
|
980
982
|
background-color: var(--o-color-control2-light);
|
|
981
983
|
border: 1px solid transparent;
|
|
@@ -1000,7 +1002,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1000
1002
|
&::after {
|
|
1001
1003
|
content: '';
|
|
1002
1004
|
position: absolute;
|
|
1003
|
-
bottom:
|
|
1005
|
+
bottom: 5px;
|
|
1004
1006
|
left: 50%;
|
|
1005
1007
|
transform: translateX(-50%);
|
|
1006
1008
|
width: 8px;
|
|
@@ -1057,6 +1059,7 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1057
1059
|
display: flex;
|
|
1058
1060
|
align-items: center;
|
|
1059
1061
|
justify-content: center;
|
|
1062
|
+
min-height: 600px;
|
|
1060
1063
|
}
|
|
1061
1064
|
|
|
1062
1065
|
|
|
@@ -200,7 +200,7 @@ onUnmounted(() => {
|
|
|
200
200
|
/>
|
|
201
201
|
</div>
|
|
202
202
|
<div class="info-wrapper">
|
|
203
|
-
<OTab v-model="tab">
|
|
203
|
+
<OTab v-model="tab" :max-show="9999">
|
|
204
204
|
<OTabPane v-for="t in tabOptions" :key="t.value" :value="t.value" :label="t.label" />
|
|
205
205
|
</OTab>
|
|
206
206
|
<OScroller :class="['tab-content', `tab-content-${tab}`]" show-type="hover">
|
|
@@ -261,7 +261,12 @@ onUnmounted(() => {
|
|
|
261
261
|
<OMeetingPlaybackSubtitles
|
|
262
262
|
:captions="captionsList"
|
|
263
263
|
:trackIdx="trackIdx"
|
|
264
|
-
:instance="playbackInstance"
|
|
264
|
+
:instance="playbackInstance"
|
|
265
|
+
>
|
|
266
|
+
<template #empty>
|
|
267
|
+
<slot name="empty"></slot>
|
|
268
|
+
</template>
|
|
269
|
+
</OMeetingPlaybackSubtitles>
|
|
265
270
|
</div>
|
|
266
271
|
</div>
|
|
267
272
|
</template>
|
|
@@ -319,8 +324,9 @@ onUnmounted(() => {
|
|
|
319
324
|
|
|
320
325
|
.o-tab {
|
|
321
326
|
--tab-nav-justify: flex-start;
|
|
322
|
-
|
|
323
|
-
|
|
327
|
+
|
|
328
|
+
.o-tab-nav-list {
|
|
329
|
+
width: 100%;
|
|
324
330
|
}
|
|
325
331
|
|
|
326
332
|
.o-tab-nav {
|
|
@@ -254,7 +254,7 @@ onMounted(() => {
|
|
|
254
254
|
</div>
|
|
255
255
|
</OPopover>
|
|
256
256
|
</div>
|
|
257
|
-
<OTab v-model="tabType" @change="selectTab" :line="false">
|
|
257
|
+
<OTab v-model="tabType" @change="selectTab" :line="false" :max-show="9999">
|
|
258
258
|
<OTabPane v-for="item in meetingTabs.slice(0, -1)" :key="item.value" :value="item.value">
|
|
259
259
|
<template #nav>
|
|
260
260
|
<OIcon>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { OCollapse, OCollapseItem, ODivider, OIcon, OLink, OTag, useMessage } from '@opensig/opendesign';
|
|
2
|
+
import { isClient, OCollapse, OCollapseItem, ODivider, OIcon, OLink, OTag, useMessage } from '@opensig/opendesign';
|
|
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';
|
|
@@ -44,29 +44,36 @@ const i18n = computed(() => {
|
|
|
44
44
|
|
|
45
45
|
// -------------------- 监听尺寸变化 --------------------
|
|
46
46
|
const meetInfoRef = ref<HTMLDivElement[]>();
|
|
47
|
-
const resizeObserver = new ResizeObserver((entries) => {
|
|
48
|
-
for (let entry of entries) {
|
|
49
|
-
const { height } = entry.contentRect;
|
|
50
|
-
entry.target.classList.remove('hidden-divider');
|
|
51
|
-
if (height >= 30) {
|
|
52
|
-
entry.target.classList.add('hidden-divider');
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
47
|
|
|
48
|
+
let resizeObserver: ResizeObserver | null = null;
|
|
57
49
|
watch(
|
|
58
|
-
() => props.list,
|
|
50
|
+
[() => props.list, () => isClient],
|
|
59
51
|
() => {
|
|
60
52
|
if (props.list.length === 1) {
|
|
61
53
|
collapseNames.value = [props.list[0].id];
|
|
62
54
|
} else {
|
|
63
55
|
collapseNames.value = [];
|
|
64
56
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
resizeObserver
|
|
57
|
+
if (isClient) {
|
|
58
|
+
nextTick(() => {
|
|
59
|
+
if (!resizeObserver) {
|
|
60
|
+
resizeObserver = new ResizeObserver((entries) => {
|
|
61
|
+
for (let entry of entries) {
|
|
62
|
+
const { height } = entry.contentRect;
|
|
63
|
+
entry.target.classList.remove('hidden-divider');
|
|
64
|
+
if (height >= 30) {
|
|
65
|
+
entry.target.classList.add('hidden-divider');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
} else {
|
|
70
|
+
resizeObserver.disconnect();
|
|
71
|
+
}
|
|
72
|
+
meetInfoRef.value?.forEach((targetDiv) => {
|
|
73
|
+
resizeObserver!.observe(targetDiv);
|
|
74
|
+
});
|
|
68
75
|
});
|
|
69
|
-
}
|
|
76
|
+
}
|
|
70
77
|
},
|
|
71
78
|
);
|
|
72
79
|
|
|
@@ -187,7 +194,13 @@ const computedList = computed<any[]>(() => {
|
|
|
187
194
|
<template v-if="item.activity_type">{{ item.activity_type }}</template>
|
|
188
195
|
</div>
|
|
189
196
|
</div>
|
|
190
|
-
<OLink
|
|
197
|
+
<OLink
|
|
198
|
+
:hover-underline="false"
|
|
199
|
+
v-if="item.url"
|
|
200
|
+
:href="item.url"
|
|
201
|
+
target="_blank"
|
|
202
|
+
class="jump-detail-link"
|
|
203
|
+
>
|
|
191
204
|
<span>{{ i18n.LEARN_MORE }}</span>
|
|
192
205
|
<template #suffix>
|
|
193
206
|
<OIcon>
|
|
@@ -195,7 +208,13 @@ const computedList = computed<any[]>(() => {
|
|
|
195
208
|
</OIcon>
|
|
196
209
|
</template>
|
|
197
210
|
</OLink>
|
|
198
|
-
<OLink
|
|
211
|
+
<OLink
|
|
212
|
+
:hover-underline="false"
|
|
213
|
+
v-if="item.join_url"
|
|
214
|
+
:href="item.join_url"
|
|
215
|
+
target="_blank"
|
|
216
|
+
class="jump-detail-link"
|
|
217
|
+
>
|
|
199
218
|
<span>{{ i18n.JOIN_MEETING }}</span>
|
|
200
219
|
<template #suffix>
|
|
201
220
|
<OIcon>
|
|
@@ -203,7 +222,13 @@ const computedList = computed<any[]>(() => {
|
|
|
203
222
|
</OIcon>
|
|
204
223
|
</template>
|
|
205
224
|
</OLink>
|
|
206
|
-
<OLink
|
|
225
|
+
<OLink
|
|
226
|
+
:hover-underline="false"
|
|
227
|
+
v-if="item.content_url"
|
|
228
|
+
:href="item.content_url"
|
|
229
|
+
target="_blank"
|
|
230
|
+
class="jump-detail-link"
|
|
231
|
+
>
|
|
207
232
|
<span>{{ i18n.DETAILS }}</span>
|
|
208
233
|
<template #suffix>
|
|
209
234
|
<OIcon>
|
|
@@ -211,7 +236,13 @@ const computedList = computed<any[]>(() => {
|
|
|
211
236
|
</OIcon>
|
|
212
237
|
</template>
|
|
213
238
|
</OLink>
|
|
214
|
-
<OLink
|
|
239
|
+
<OLink
|
|
240
|
+
:hover-underline="false"
|
|
241
|
+
v-if="item.register_url"
|
|
242
|
+
:href="item.register_url"
|
|
243
|
+
target="_blank"
|
|
244
|
+
class="jump-detail-link"
|
|
245
|
+
>
|
|
215
246
|
<span>{{ i18n.SIGN }}</span>
|
|
216
247
|
<template #suffix>
|
|
217
248
|
<OIcon>
|
|
@@ -226,7 +257,8 @@ const computedList = computed<any[]>(() => {
|
|
|
226
257
|
</template>
|
|
227
258
|
<div class="calendar-info">
|
|
228
259
|
<OMeetingDetail
|
|
229
|
-
:show="collapseNames.includes(item.id)"
|
|
260
|
+
:show="collapseNames.includes(item.id)"
|
|
261
|
+
:data="item"
|
|
230
262
|
:ref="(insRef) => (detailRefs[index] = insRef)"
|
|
231
263
|
from="home"
|
|
232
264
|
/>
|
|
@@ -241,6 +273,7 @@ const computedList = computed<any[]>(() => {
|
|
|
241
273
|
|
|
242
274
|
|
|
243
275
|
&.is-empty {
|
|
276
|
+
min-height: 400px;
|
|
244
277
|
height: 100%;
|
|
245
278
|
display: flex;
|
|
246
279
|
align-items: center;
|
|
@@ -264,6 +297,7 @@ const computedList = computed<any[]>(() => {
|
|
|
264
297
|
.o-collapse-item {
|
|
265
298
|
position: relative;
|
|
266
299
|
border-top: none;
|
|
300
|
+
border-bottom: none;
|
|
267
301
|
|
|
268
302
|
&::after {
|
|
269
303
|
position: absolute;
|
|
@@ -353,6 +387,7 @@ const computedList = computed<any[]>(() => {
|
|
|
353
387
|
display: inline-flex;
|
|
354
388
|
opacity: 0;
|
|
355
389
|
visibility: hidden;
|
|
390
|
+
color: var(--o-color-info1);
|
|
356
391
|
|
|
357
392
|
&:hover {
|
|
358
393
|
color: var(--o-color-primary1);
|
|
@@ -420,6 +455,7 @@ const computedList = computed<any[]>(() => {
|
|
|
420
455
|
padding-left: calc(var(--icon-right) + var(--icon-size2));
|
|
421
456
|
margin-top: var(--o-gap-2);
|
|
422
457
|
color: var(--o-color-info2);
|
|
458
|
+
font-weight: 400;
|
|
423
459
|
@include tip1;
|
|
424
460
|
|
|
425
461
|
&:hover {
|
|
@@ -442,7 +478,7 @@ const computedList = computed<any[]>(() => {
|
|
|
442
478
|
.meet-title {
|
|
443
479
|
display: flex;
|
|
444
480
|
align-items: center;
|
|
445
|
-
width:
|
|
481
|
+
width: 100%;
|
|
446
482
|
color: var(--o-color-info2);
|
|
447
483
|
@include text2;
|
|
448
484
|
|
|
@@ -79,10 +79,10 @@ const removeTag = (val: number) => {
|
|
|
79
79
|
</script>
|
|
80
80
|
|
|
81
81
|
<template>
|
|
82
|
-
<div class="calendar-selector" :class="!multiple && 'is-single'">
|
|
82
|
+
<div class="o-meeting-calendar-selector" :class="!multiple && 'is-single'">
|
|
83
83
|
<ElSelect
|
|
84
84
|
ref="selectorRef"
|
|
85
|
-
popper-class="calendar-selector-popper"
|
|
85
|
+
popper-class="o-meeting-calendar-selector-popper"
|
|
86
86
|
:placeholder="t('meeting.selectRepeatDate')"
|
|
87
87
|
size="large"
|
|
88
88
|
multiple
|
|
@@ -106,11 +106,11 @@ const removeTag = (val: number) => {
|
|
|
106
106
|
</div>
|
|
107
107
|
</template>
|
|
108
108
|
|
|
109
|
-
<style
|
|
110
|
-
.calendar-selector {
|
|
109
|
+
<style lang="scss">
|
|
110
|
+
.o-meeting-calendar-selector {
|
|
111
111
|
width: 100%;
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
.el-select {
|
|
114
114
|
.el-select__placeholder {
|
|
115
115
|
@include text1;
|
|
116
116
|
}
|
|
@@ -134,7 +134,7 @@ const removeTag = (val: number) => {
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
&.is-single {
|
|
137
|
-
|
|
137
|
+
.el-select {
|
|
138
138
|
.el-select__selection {
|
|
139
139
|
margin-left: 0;
|
|
140
140
|
}
|
|
@@ -154,8 +154,11 @@ const removeTag = (val: number) => {
|
|
|
154
154
|
}
|
|
155
155
|
</style>
|
|
156
156
|
<style lang="scss">
|
|
157
|
-
.calendar-selector-popper {
|
|
158
|
-
|
|
157
|
+
.o-meeting-calendar-selector-popper {
|
|
158
|
+
--meeting-card-radius: var(--o-radius-xs);
|
|
159
|
+
--meeting-input-radius: var(--o-radius-xs);
|
|
160
|
+
--meeting-cell-radius: var(--o-radius-xs);
|
|
161
|
+
padding: 0 var(--o-gap-5);
|
|
159
162
|
|
|
160
163
|
.el-select-dropdown__list {
|
|
161
164
|
padding: 16px 0;
|
|
@@ -329,7 +329,7 @@ watch(
|
|
|
329
329
|
</ElSelect>
|
|
330
330
|
</div>
|
|
331
331
|
</div>
|
|
332
|
-
<OTab v-model="activeTab" variant="text" class="captions-tab" @change="changeTab">
|
|
332
|
+
<OTab v-model="activeTab" variant="text" class="captions-tab" @change="changeTab" :max-show="9999">
|
|
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>
|
|
@@ -350,8 +350,9 @@ watch(
|
|
|
350
350
|
</OCol>
|
|
351
351
|
</ORow>
|
|
352
352
|
</OScroller>
|
|
353
|
-
<div v-else>
|
|
354
|
-
|
|
353
|
+
<div v-else>
|
|
354
|
+
<slot name="empty"></slot>
|
|
355
|
+
</div>
|
|
355
356
|
</OTabPane>
|
|
356
357
|
</OTab>
|
|
357
358
|
</div>
|
|
@@ -445,8 +446,10 @@ watch(
|
|
|
445
446
|
height: calc(100% - 64px);
|
|
446
447
|
--tab-nav-justify: flex-start;
|
|
447
448
|
|
|
449
|
+
.o-tab-nav-list {
|
|
450
|
+
width: 100%;
|
|
451
|
+
}
|
|
448
452
|
.o-tab-navs {
|
|
449
|
-
justify-content: flex-start;
|
|
450
453
|
|
|
451
454
|
.o-tab-nav {
|
|
452
455
|
padding-bottom: var(--o-gap-4);
|
|
@@ -49,16 +49,16 @@ export const useMeetingConfig = () => {
|
|
|
49
49
|
return list;
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
const getPointStr = (cycleType: number, points: number[]) => {
|
|
52
|
+
const getPointStr = (cycleType: number, points: (number | string)[]) => {
|
|
53
53
|
if (cycleType === INTERVAL_WEEK) {
|
|
54
54
|
return points
|
|
55
55
|
.sort((a, b) => {
|
|
56
|
-
const aIdx = intervalWeekOptions.value.findIndex((v) => v.value === a);
|
|
57
|
-
const bIdx = intervalWeekOptions.value.findIndex((v) => v.value === b);
|
|
56
|
+
const aIdx = intervalWeekOptions.value.findIndex((v) => v.value === a || v.value.toString() === a);
|
|
57
|
+
const bIdx = intervalWeekOptions.value.findIndex((v) => v.value === b || v.value.toString() === b);
|
|
58
58
|
return aIdx - bIdx;
|
|
59
59
|
})
|
|
60
|
-
.map((point: number) => {
|
|
61
|
-
const opt = intervalWeekOptions.value.find((v) => v.value === point);
|
|
60
|
+
.map((point: number | string) => {
|
|
61
|
+
const opt = intervalWeekOptions.value.find((v) => v.value === point || v.value.toString() === point);
|
|
62
62
|
return opt?.label || String(point);
|
|
63
63
|
})
|
|
64
64
|
.join(t('meeting.cycleSplit'));
|
|
@@ -24,11 +24,11 @@ const OMeetingPlayback = Object.assign(_OMeetingPlayback, {
|
|
|
24
24
|
|
|
25
25
|
const OMeetingSigCalendar = Object.assign(_OMeetingSigCalendar, {
|
|
26
26
|
install(app: App) {
|
|
27
|
-
app.component('OMeetingSigCalendar',
|
|
27
|
+
app.component('OMeetingSigCalendar', _OMeetingSigCalendar);
|
|
28
28
|
},
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
const OMeetingMyCalendar = Object.assign(
|
|
31
|
+
const OMeetingMyCalendar = Object.assign(_OMeetingMyCalendar, {
|
|
32
32
|
install(app: App) {
|
|
33
33
|
app.component('OMeetingMyCalendar', _OMeetingMyCalendar);
|
|
34
34
|
},
|