@opendesign-plus-test/components 0.0.1-rc.27 → 0.0.1-rc.29
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 +72 -60
- package/dist/components/meeting/OMeetingCalendar.vue.d.ts +3 -14
- package/dist/components/meeting/OMeetingForm.vue.d.ts +2 -1
- package/dist/components/meeting/OMyMeetingCalendar.vue.d.ts +5 -1
- package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +2 -1
- package/dist/components/meeting/types.d.ts +19 -1
- package/dist/components/meeting/utils.d.ts +1 -0
- package/dist/components.cjs.js +36 -36
- package/dist/components.css +1 -1
- package/dist/components.es.js +6336 -6318
- package/package.json +1 -1
- package/src/components/activity/OActivityApproval.vue +62 -27
- package/src/components/activity/OActivityForm.vue +2 -5
- package/src/components/activity/OMyActivityCalendar.vue +66 -64
- package/src/components/common/ThFilter.vue +7 -3
- package/src/components/meeting/OMeetingCalendar.vue +45 -32
- package/src/components/meeting/OMeetingForm.vue +145 -136
- package/src/components/meeting/OMyMeetingCalendar.vue +44 -42
- package/src/components/meeting/components/OMeetingCalendarList.vue +26 -18
- package/src/components/meeting/components/OMeetingDetail.vue +38 -17
- package/src/components/meeting/types.ts +20 -1
- package/src/components/meeting/utils.ts +18 -1
- package/src/i18n/en.ts +7 -1
- package/src/i18n/zh.ts +8 -2
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
OForm,
|
|
7
7
|
OFormItem,
|
|
8
8
|
OIcon,
|
|
9
|
+
OIconTime,
|
|
9
10
|
OInput,
|
|
10
11
|
OOption,
|
|
11
12
|
OPopover,
|
|
@@ -14,19 +15,18 @@ import {
|
|
|
14
15
|
OSelect,
|
|
15
16
|
OSwitch,
|
|
16
17
|
OTextarea,
|
|
17
|
-
OIconTime,
|
|
18
18
|
useMessage,
|
|
19
19
|
} from '@opensig/opendesign';
|
|
20
20
|
import IconHelp from '~icons/meeting/icon-help.svg';
|
|
21
21
|
import IconTip from '~icons/meeting/icon-tip.svg';
|
|
22
|
-
import { MeetingFormPropsT, MeetingPostT, OptionItemT } from './types';
|
|
22
|
+
import { MeetingFormPropsT, MeetingGroupType, MeetingPostT, OptionItemT } from './types';
|
|
23
23
|
import dayjs from 'dayjs';
|
|
24
|
-
import { findLabelFromOptions, formatDateNumber, getDateNumber } from './utils';
|
|
24
|
+
import { findLabelFromOptions, formatDateNumber, getDateNumber, getPlatformLabel } from './utils';
|
|
25
25
|
import {
|
|
26
|
+
CYCLE_TYPE_OPTIONS0,
|
|
26
27
|
EMAIL_REGEX,
|
|
27
28
|
INTERVAL_DAY,
|
|
28
29
|
INTERVAL_MONTH,
|
|
29
|
-
CYCLE_TYPE_OPTIONS0,
|
|
30
30
|
INTERVAL_WEEK,
|
|
31
31
|
INTERVAL_WEEK_OPTIONS,
|
|
32
32
|
} from './config';
|
|
@@ -40,8 +40,9 @@ const props = withDefaults(defineProps<MeetingFormPropsT>(), {
|
|
|
40
40
|
isSub: false,
|
|
41
41
|
isEdit: false,
|
|
42
42
|
showBtns: true,
|
|
43
|
+
groupType: MeetingGroupType.SIG,
|
|
43
44
|
});
|
|
44
|
-
const message = useMessage();
|
|
45
|
+
const message = useMessage(null);
|
|
45
46
|
|
|
46
47
|
const cycleTypeOptions = ref(CYCLE_TYPE_OPTIONS0);
|
|
47
48
|
|
|
@@ -72,161 +73,166 @@ const form = ref<MeetingPostT>(Object.assign({}, initForm) as unknown as Meeting
|
|
|
72
73
|
const formRef = ref(null); // 表单实例
|
|
73
74
|
const loading = ref(false); // 提交状态
|
|
74
75
|
// 表单校验规则
|
|
75
|
-
const rules =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
agenda: [
|
|
90
|
-
{
|
|
91
|
-
validator: (value: string) => {
|
|
92
|
-
if (value.length > 4096) {
|
|
93
|
-
return {
|
|
94
|
-
type: 'danger',
|
|
95
|
-
message: t('meeting.meetingAgendaTooLong'),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
],
|
|
101
|
-
group_name: [{ required: true, message: t('meeting.selectSig') }],
|
|
102
|
-
etherpad: [{ required: true, message: t('meeting.enterEtherpad') }],
|
|
103
|
-
date: [{ required: true, message: t('meeting.selectDate') }],
|
|
104
|
-
time: [
|
|
105
|
-
{
|
|
106
|
-
validator: (value: string) => {
|
|
107
|
-
const { is_cycle, cycle_type, cycle_interval, cycle_point, date, date_range } = form.value;
|
|
108
|
-
if (is_cycle) {
|
|
109
|
-
const msg = {
|
|
110
|
-
type: 'danger',
|
|
111
|
-
message: t('meeting.finishMeetingConfig'),
|
|
112
|
-
};
|
|
113
|
-
if (cycle_type === INTERVAL_DAY) {
|
|
114
|
-
if (!cycle_interval) return msg;
|
|
115
|
-
}
|
|
116
|
-
if (cycle_type === INTERVAL_WEEK) {
|
|
117
|
-
if (!cycle_interval || !cycle_point?.length) return msg;
|
|
118
|
-
}
|
|
119
|
-
if (cycle_type === INTERVAL_MONTH) {
|
|
120
|
-
if (!cycle_interval || !cycle_point?.length) return msg;
|
|
76
|
+
const rules = computed(() => {
|
|
77
|
+
return {
|
|
78
|
+
topic: [
|
|
79
|
+
{ required: true, message: t('meeting.enterMeetingName') },
|
|
80
|
+
{
|
|
81
|
+
validator: (value: string) => {
|
|
82
|
+
if (value.length > 128) {
|
|
83
|
+
return {
|
|
84
|
+
type: 'danger',
|
|
85
|
+
message: t('meeting.meetingNameTooLong'),
|
|
86
|
+
};
|
|
121
87
|
}
|
|
122
|
-
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
agenda: [
|
|
92
|
+
{
|
|
93
|
+
validator: (value: string) => {
|
|
94
|
+
if (value.length > 4096) {
|
|
123
95
|
return {
|
|
124
96
|
type: 'danger',
|
|
125
|
-
message: t('meeting.
|
|
97
|
+
message: t('meeting.meetingAgendaTooLong'),
|
|
126
98
|
};
|
|
127
99
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
group_name: [{
|
|
104
|
+
required: true,
|
|
105
|
+
message: props.groupType === MeetingGroupType.GROUP ? t('meeting.selectGroup') : t('meeting.selectSig'),
|
|
106
|
+
}],
|
|
107
|
+
etherpad: [{ required: true, message: t('meeting.enterEtherpad') }],
|
|
108
|
+
date: [{ required: true, message: t('meeting.selectDate') }],
|
|
109
|
+
time: [
|
|
110
|
+
{
|
|
111
|
+
validator: (value: string) => {
|
|
112
|
+
const { is_cycle, cycle_type, cycle_interval, cycle_point, date, date_range } = form.value;
|
|
113
|
+
if (is_cycle) {
|
|
114
|
+
const msg = {
|
|
115
|
+
type: 'danger',
|
|
116
|
+
message: t('meeting.finishMeetingConfig'),
|
|
117
|
+
};
|
|
118
|
+
if (cycle_type === INTERVAL_DAY) {
|
|
119
|
+
if (!cycle_interval) return msg;
|
|
120
|
+
}
|
|
121
|
+
if (cycle_type === INTERVAL_WEEK) {
|
|
122
|
+
if (!cycle_interval || !cycle_point?.length) return msg;
|
|
136
123
|
}
|
|
137
|
-
if (
|
|
124
|
+
if (cycle_type === INTERVAL_MONTH) {
|
|
125
|
+
if (!cycle_interval || !cycle_point?.length) return msg;
|
|
126
|
+
}
|
|
127
|
+
if (!date_range?.length) {
|
|
138
128
|
return {
|
|
139
129
|
type: 'danger',
|
|
140
|
-
message:
|
|
130
|
+
message: t('meeting.selectMeetingDate'),
|
|
141
131
|
};
|
|
142
132
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
133
|
+
const NONE_MSG = t('meeting.invalidMeetingDuration');
|
|
134
|
+
let start = date_range[0];
|
|
135
|
+
const end = date_range[1];
|
|
136
|
+
if (cycle_type === INTERVAL_WEEK) {
|
|
137
|
+
const weeks = new Set();
|
|
138
|
+
while (!dayjs(start).isAfter(dayjs(end))) {
|
|
139
|
+
weeks.add(dayjs(start).day());
|
|
140
|
+
start = dayjs(start).add(1, 'day');
|
|
141
|
+
}
|
|
142
|
+
if (cycle_point.every((point) => !weeks.has(point))) {
|
|
143
|
+
return {
|
|
144
|
+
type: 'danger',
|
|
145
|
+
message: NONE_MSG,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
149
148
|
}
|
|
150
|
-
if (
|
|
149
|
+
if (cycle_type === INTERVAL_MONTH) {
|
|
150
|
+
const days = new Set();
|
|
151
|
+
while (!dayjs(start).isAfter(dayjs(end))) {
|
|
152
|
+
days.add(dayjs(start).date());
|
|
153
|
+
start = dayjs(start).add(1, 'day');
|
|
154
|
+
}
|
|
155
|
+
if (cycle_point.every((point) => !days.has(point))) {
|
|
156
|
+
return {
|
|
157
|
+
type: 'danger',
|
|
158
|
+
message: NONE_MSG,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
if (!date) {
|
|
151
164
|
return {
|
|
152
165
|
type: 'danger',
|
|
153
|
-
message:
|
|
166
|
+
message: t('meeting.selectMeetingDate'),
|
|
154
167
|
};
|
|
155
168
|
}
|
|
156
169
|
}
|
|
157
|
-
|
|
158
|
-
if (!date) {
|
|
159
|
-
return {
|
|
160
|
-
type: 'danger',
|
|
161
|
-
message: t('meeting.selectMeetingDate'),
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (!value?.trim()?.length) {
|
|
166
|
-
return {
|
|
167
|
-
type: 'danger',
|
|
168
|
-
message: t('meeting.selectMeetingTime'),
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
const arr = value.split('-').map((v) => v.split(':').map(Number));
|
|
172
|
-
if (arr[0][0] > arr[1][0] || (arr[0][0] === arr[1][0] && arr[0][1] >= arr[1][1])) {
|
|
173
|
-
return {
|
|
174
|
-
type: 'danger',
|
|
175
|
-
message: t('meeting.endTimeAfterStartTime'),
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
if (!form.value.is_cycle && form.value.date && form.value.start) {
|
|
179
|
-
const start = dayjs(`${ form.value.date } ${ form.value.start }`);
|
|
180
|
-
if (new Date(start).getTime() < new Date().getTime()) {
|
|
170
|
+
if (!value?.trim()?.length) {
|
|
181
171
|
return {
|
|
182
172
|
type: 'danger',
|
|
183
|
-
message: t('meeting.
|
|
173
|
+
message: t('meeting.selectMeetingTime'),
|
|
184
174
|
};
|
|
185
175
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
triggers: ['blur', 'change'],
|
|
189
|
-
},
|
|
190
|
-
],
|
|
191
|
-
platform: [{ required: true, message: t('meeting.selectPlatform') }],
|
|
192
|
-
email_list: [
|
|
193
|
-
{
|
|
194
|
-
validator: (value: string) => {
|
|
195
|
-
if (props.isEdit) {
|
|
196
|
-
return {};
|
|
197
|
-
}
|
|
198
|
-
const str = value.replaceAll(' ', '') || '';
|
|
199
|
-
if (str.length) {
|
|
200
|
-
if (str.length > 1020) {
|
|
176
|
+
const arr = value.split('-').map((v) => v.split(':').map(Number));
|
|
177
|
+
if (arr[0][0] > arr[1][0] || (arr[0][0] === arr[1][0] && arr[0][1] >= arr[1][1])) {
|
|
201
178
|
return {
|
|
202
179
|
type: 'danger',
|
|
203
|
-
message: t('meeting.
|
|
180
|
+
message: t('meeting.endTimeAfterStartTime'),
|
|
204
181
|
};
|
|
205
182
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
183
|
+
if (!form.value.is_cycle && form.value.date && form.value.start) {
|
|
184
|
+
const start = dayjs(`${ form.value.date } ${ form.value.start }`);
|
|
185
|
+
if (new Date(start).getTime() < new Date().getTime()) {
|
|
186
|
+
return {
|
|
187
|
+
type: 'danger',
|
|
188
|
+
message: t('meeting.startTimeBeforeEndTime'),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
212
191
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
192
|
+
},
|
|
193
|
+
triggers: ['blur', 'change'],
|
|
194
|
+
},
|
|
195
|
+
],
|
|
196
|
+
platform: [{ required: true, message: t('meeting.selectPlatform') }],
|
|
197
|
+
email_list: [
|
|
198
|
+
{
|
|
199
|
+
validator: (value: string) => {
|
|
200
|
+
if (props.isEdit) {
|
|
201
|
+
return {};
|
|
218
202
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
203
|
+
const str = value.replaceAll(' ', '') || '';
|
|
204
|
+
if (str.length) {
|
|
205
|
+
if (str.length > 1020) {
|
|
206
|
+
return {
|
|
207
|
+
type: 'danger',
|
|
208
|
+
message: t('meeting.emailTooLong'),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
const list = str.split(';') || [];
|
|
212
|
+
if (list.some((v) => !EMAIL_REGEX.test(v))) {
|
|
213
|
+
return {
|
|
214
|
+
type: 'danger',
|
|
215
|
+
message: t('meeting.emailInvalid'),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
if (list.some((v) => v.length > 50)) {
|
|
219
|
+
return {
|
|
220
|
+
type: 'danger',
|
|
221
|
+
message: t('meeting.singleEmailTooLong'),
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
if (list.length > 20) {
|
|
225
|
+
return {
|
|
226
|
+
type: 'danger',
|
|
227
|
+
message: t('meeting.emailCountTooLong'),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
224
230
|
}
|
|
225
|
-
}
|
|
231
|
+
},
|
|
232
|
+
triggers: ['blur', 'change'],
|
|
226
233
|
},
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
],
|
|
234
|
+
],
|
|
235
|
+
};
|
|
230
236
|
});
|
|
231
237
|
|
|
232
238
|
const sigOptions = ref<OptionItemT[]>([]); // sig组选项列表
|
|
@@ -247,7 +253,7 @@ const getPlatformOptions = async () => {
|
|
|
247
253
|
return;
|
|
248
254
|
}
|
|
249
255
|
const res = await props.getPlatformsRequest();
|
|
250
|
-
typeOptions.value = res.map((v) => ({ label: v, value: v }));
|
|
256
|
+
typeOptions.value = res.map((v) => ({ label: getPlatformLabel(v), value: v }));
|
|
251
257
|
if (!props.data) {
|
|
252
258
|
form.value.platform = typeOptions.value[0].value;
|
|
253
259
|
}
|
|
@@ -459,10 +465,13 @@ defineExpose({
|
|
|
459
465
|
style="width: 100%"
|
|
460
466
|
v-model="form.topic" />
|
|
461
467
|
</OFormItem>
|
|
462
|
-
<OFormItem
|
|
468
|
+
<OFormItem
|
|
469
|
+
:rules="rules.group_name"
|
|
470
|
+
:label="groupType === MeetingGroupType.GROUP ? t('meeting.meetingGroup'):t('meeting.meetingSig')"
|
|
471
|
+
field="group_name">
|
|
463
472
|
<OSelect
|
|
464
473
|
:disabled="isEdit"
|
|
465
|
-
:placeholder="t('meeting.selectSig')"
|
|
474
|
+
:placeholder="groupType === MeetingGroupType.GROUP ? t('meeting.selectGroup') : t('meeting.selectSig')"
|
|
466
475
|
size="large"
|
|
467
476
|
style="width: 100%"
|
|
468
477
|
v-model="form.group_name"
|
|
@@ -474,7 +483,7 @@ defineExpose({
|
|
|
474
483
|
<OFormItem :rules="rules.etherpad" label="Etherpad" field="etherpad" v-if="form.group_name">
|
|
475
484
|
<template #label>
|
|
476
485
|
<div class="label-wrapper">
|
|
477
|
-
<span>
|
|
486
|
+
<span>{{ t('meeting.etherpad') }} </span>
|
|
478
487
|
<OPopover>
|
|
479
488
|
<div class="o-meeting-form-popover-content etherpad">{{ t('meeting.etherpadDesc') }}</div>
|
|
480
489
|
<template #target>
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import { ElCalendar } from 'element-plus';
|
|
21
21
|
import { computed, nextTick, onMounted, ref, onUnmounted, watch } from 'vue';
|
|
22
22
|
import OMeetingDetail from './components/OMeetingDetail.vue';
|
|
23
|
-
import
|
|
23
|
+
import { MeetingGroupType, MeetingItemT, PageParamsT } from './types.ts';
|
|
24
24
|
import dayjs from 'dayjs';
|
|
25
25
|
import IconMeeting from '~icons/meeting/icon-meet.svg';
|
|
26
26
|
import { INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK, WEEKDAY } from './config.ts';
|
|
@@ -43,11 +43,14 @@ const reloadAll = ref(false); // 是否需要清空数据
|
|
|
43
43
|
const { t, locale } = useI18n();
|
|
44
44
|
const isEn = computed(() => locale.value === Locales.EN);
|
|
45
45
|
|
|
46
|
-
const props = defineProps<{
|
|
46
|
+
const props = withDefaults(defineProps<{
|
|
47
47
|
cancelSubMeetingRequest: any;
|
|
48
48
|
deleteMeetingRequest: any;
|
|
49
|
-
getMeetingListRequest: any
|
|
50
|
-
|
|
49
|
+
getMeetingListRequest: any;
|
|
50
|
+
groupType: MeetingGroupType
|
|
51
|
+
}>(), {
|
|
52
|
+
groupType: MeetingGroupType.SIG,
|
|
53
|
+
});
|
|
51
54
|
|
|
52
55
|
const dialogLoading = ref(false); // 弹窗按钮状态
|
|
53
56
|
const { isPhone } = useScreen();
|
|
@@ -648,7 +651,10 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
648
651
|
<div class="meeting-info">
|
|
649
652
|
<span>{{ row.dateRange }}</span>
|
|
650
653
|
<ODivider direction="v" />
|
|
651
|
-
<span>
|
|
654
|
+
<span>
|
|
655
|
+
{{ groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs')
|
|
656
|
+
}}: {{ row.group_name }}
|
|
657
|
+
</span>
|
|
652
658
|
</div>
|
|
653
659
|
</div>
|
|
654
660
|
</div>
|
|
@@ -833,14 +839,39 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
833
839
|
}
|
|
834
840
|
|
|
835
841
|
.list-calendar {
|
|
836
|
-
width: 334px;
|
|
837
842
|
flex-shrink: 0;
|
|
843
|
+
width: 334px;
|
|
844
|
+
background-color: color-mix(in srgb, var(--o-color-control2-light), transparent 60%);
|
|
838
845
|
|
|
846
|
+
@include respond-to('pad_h') {
|
|
847
|
+
.el-calendar {
|
|
848
|
+
.el-calendar__body {
|
|
849
|
+
padding-left: 12px;
|
|
850
|
+
padding-right: 12px;
|
|
851
|
+
|
|
852
|
+
.el-calendar-table .date-cell {
|
|
853
|
+
height: 40px;
|
|
854
|
+
width: 28px;
|
|
855
|
+
|
|
856
|
+
.date-cell-text {
|
|
857
|
+
line-height: 24px;
|
|
858
|
+
@include tip2;
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
@include respond-to('pad_v') {
|
|
865
|
+
width: 100%;
|
|
866
|
+
}
|
|
867
|
+
@include respond-to('phone') {
|
|
868
|
+
display: none;
|
|
869
|
+
}
|
|
839
870
|
.el-calendar {
|
|
840
871
|
min-height: 460px;
|
|
841
872
|
height: calc(100% - 54px);
|
|
842
|
-
background-color: color-mix(in srgb, var(--o-color-control2-light), transparent 60%);
|
|
843
873
|
border-radius: var(--o-radius-xs);
|
|
874
|
+
background-color: transparent;
|
|
844
875
|
|
|
845
876
|
.el-calendar__header {
|
|
846
877
|
border-bottom: 1px solid var(--o-color-control4);
|
|
@@ -869,9 +900,6 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
869
900
|
|
|
870
901
|
.el-calendar__body {
|
|
871
902
|
.el-calendar-table {
|
|
872
|
-
tr {
|
|
873
|
-
background-color: color-mix(in srgb, var(--o-color-control2-light), transparent 60%) !important;
|
|
874
|
-
}
|
|
875
903
|
|
|
876
904
|
th {
|
|
877
905
|
text-align: center;
|
|
@@ -979,31 +1007,6 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
979
1007
|
}
|
|
980
1008
|
}
|
|
981
1009
|
|
|
982
|
-
@include respond-to('pad_h') {
|
|
983
|
-
width: 240px;
|
|
984
|
-
.el-calendar {
|
|
985
|
-
.el-calendar__body {
|
|
986
|
-
padding-left: 12px;
|
|
987
|
-
padding-right: 12px;
|
|
988
|
-
|
|
989
|
-
.el-calendar-table .date-cell {
|
|
990
|
-
height: 40px;
|
|
991
|
-
width: 28px;
|
|
992
|
-
|
|
993
|
-
.date-cell-text {
|
|
994
|
-
line-height: 24px;
|
|
995
|
-
@include tip2;
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1000
|
-
}
|
|
1001
|
-
@include respond-to('pad_v') {
|
|
1002
|
-
width: 100%;
|
|
1003
|
-
}
|
|
1004
|
-
@include respond-to('phone') {
|
|
1005
|
-
display: none;
|
|
1006
|
-
}
|
|
1007
1010
|
}
|
|
1008
1011
|
|
|
1009
1012
|
.list-wrapper {
|
|
@@ -1024,11 +1027,15 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1024
1027
|
.o-scrollbar-rail {
|
|
1025
1028
|
right: -16px;
|
|
1026
1029
|
}
|
|
1030
|
+
|
|
1031
|
+
.o-scrollbar {
|
|
1032
|
+
height: 100%;
|
|
1033
|
+
}
|
|
1027
1034
|
}
|
|
1028
1035
|
|
|
1029
1036
|
.scroller-container {
|
|
1030
1037
|
height: 100%;
|
|
1031
|
-
max-height: calc(var(--layout-left-height) - 4 * var(--o-gap-5) - var(--header-height) * 1px);
|
|
1038
|
+
max-height: calc(var(--layout-left-height, 900px) - 4 * var(--o-gap-5) - var(--header-height) * 1px);
|
|
1032
1039
|
|
|
1033
1040
|
@include respond-to('phone') {
|
|
1034
1041
|
max-height: fit-content;
|
|
@@ -1357,18 +1364,13 @@ const cancelActions = computed<DialogActionT[]>(() => {
|
|
|
1357
1364
|
display: flex;
|
|
1358
1365
|
align-items: center;
|
|
1359
1366
|
padding-left: calc(var(--o-gap-3) + var(--icon-size));
|
|
1360
|
-
gap: var(--o-gap-
|
|
1367
|
+
gap: var(--o-gap-4);
|
|
1361
1368
|
width: 100%;
|
|
1362
1369
|
|
|
1363
1370
|
.o-link {
|
|
1364
1371
|
font-size: 14px;
|
|
1365
1372
|
line-height: 21px;
|
|
1366
1373
|
}
|
|
1367
|
-
|
|
1368
|
-
.o-link + .o-link {
|
|
1369
|
-
margin-left: var(--o-gap-section-6);
|
|
1370
|
-
}
|
|
1371
|
-
|
|
1372
1374
|
.o-icon {
|
|
1373
1375
|
font-size: 16px;
|
|
1374
1376
|
}
|
|
@@ -4,7 +4,7 @@ import OMeetingDetail from './OMeetingDetail.vue';
|
|
|
4
4
|
import { computed, nextTick, ref, watch } from 'vue';
|
|
5
5
|
import IconMeetinging from '~icons/meeting/icon-meet.svg';
|
|
6
6
|
import IconCopy from '~icons/meeting/icon-copy.svg';
|
|
7
|
-
import { CalendarDataType, MeetingItemT } from '../types.ts';
|
|
7
|
+
import { CalendarDataType, MeetingGroupType, MeetingItemT } from '../types.ts';
|
|
8
8
|
|
|
9
9
|
import IconAll from '~icons/meeting/icon-all.svg';
|
|
10
10
|
import IconEvent from '~icons/meeting/icon-event.svg';
|
|
@@ -16,7 +16,10 @@ import { CYCLE_TYPE_OPTIONS, INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from
|
|
|
16
16
|
import { formatDate, getConfig, getPointStr } from '../utils.ts';
|
|
17
17
|
import { useI18n } from '@/i18n';
|
|
18
18
|
|
|
19
|
-
const props = withDefaults(defineProps<{
|
|
19
|
+
const props = withDefaults(defineProps<{
|
|
20
|
+
list: MeetingItemT[];
|
|
21
|
+
groupType: MeetingGroupType;
|
|
22
|
+
}>(), {
|
|
20
23
|
list: () => [],
|
|
21
24
|
});
|
|
22
25
|
const { t, locale } = useI18n();
|
|
@@ -31,14 +34,16 @@ const copyInfo = async (idx) => {
|
|
|
31
34
|
};
|
|
32
35
|
|
|
33
36
|
const collapseNames = ref([]);
|
|
34
|
-
const i18n = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
const i18n = computed(() => {
|
|
38
|
+
return {
|
|
39
|
+
SIG_GROUP: `${ props.groupType === MeetingGroupType.GROUP ? t('meeting.groups') : t('meeting.sigs') }: `,
|
|
40
|
+
NEW_DATE: t('meeting.latestMeeting'),
|
|
41
|
+
EMPTY_TEXT: t('meeting.meetingEmptyText'),
|
|
42
|
+
LEARN_MORE: t('common.seeMore'),
|
|
43
|
+
JOIN_MEETING: t('meeting.joinMeeting'),
|
|
44
|
+
SIGN: t('meeting.sign'),
|
|
45
|
+
};
|
|
46
|
+
});
|
|
42
47
|
|
|
43
48
|
const getCurrentIcon = (item) => {
|
|
44
49
|
if (item.type === 'summit') return IconSummit;
|
|
@@ -276,11 +281,8 @@ const computedList = computed(() => {
|
|
|
276
281
|
}
|
|
277
282
|
|
|
278
283
|
&.o-collapse-item-expanded {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
.copy-icon {
|
|
282
|
-
display: inline-flex;
|
|
283
|
-
}
|
|
284
|
+
.copy-icon {
|
|
285
|
+
display: inline-flex;
|
|
284
286
|
}
|
|
285
287
|
}
|
|
286
288
|
}
|
|
@@ -305,9 +307,9 @@ const computedList = computed(() => {
|
|
|
305
307
|
padding: 12px 16px;
|
|
306
308
|
}
|
|
307
309
|
|
|
308
|
-
|
|
309
310
|
.o-collapse-item-title {
|
|
310
311
|
flex-grow: 1;
|
|
312
|
+
margin-bottom: 0;
|
|
311
313
|
}
|
|
312
314
|
|
|
313
315
|
|
|
@@ -333,7 +335,12 @@ const computedList = computed(() => {
|
|
|
333
335
|
.jump-detail-link {
|
|
334
336
|
padding-left: calc(var(--icon-right) + var(--icon-size2));
|
|
335
337
|
margin-top: var(--o-gap-2);
|
|
336
|
-
|
|
338
|
+
color: var(--o-color-info2);
|
|
339
|
+
@include tip1;
|
|
340
|
+
|
|
341
|
+
&:hover {
|
|
342
|
+
color: var(--o-color-primary1);
|
|
343
|
+
}
|
|
337
344
|
|
|
338
345
|
.o-icon {
|
|
339
346
|
font-size: 16px;
|
|
@@ -362,7 +369,6 @@ const computedList = computed(() => {
|
|
|
362
369
|
|
|
363
370
|
.o-icon {
|
|
364
371
|
flex-shrink: 0;
|
|
365
|
-
padding: 2px;
|
|
366
372
|
border-radius: 50%;
|
|
367
373
|
overflow: hidden;
|
|
368
374
|
color: var(--o-color-white);
|
|
@@ -378,6 +384,7 @@ const computedList = computed(() => {
|
|
|
378
384
|
|
|
379
385
|
.text {
|
|
380
386
|
display: block;
|
|
387
|
+
font-weight: 600;
|
|
381
388
|
@include text-truncate(1);
|
|
382
389
|
}
|
|
383
390
|
}
|
|
@@ -390,6 +397,7 @@ const computedList = computed(() => {
|
|
|
390
397
|
align-items: center;
|
|
391
398
|
color: var(--o-color-info3);
|
|
392
399
|
text-decoration: none;
|
|
400
|
+
font-weight: 400;
|
|
393
401
|
@include tip1;
|
|
394
402
|
|
|
395
403
|
.o-divider {
|