@opendesign-plus-test/components 0.0.1-rc.59 → 0.0.1-rc.60

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.
Files changed (47) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +28 -28
  3. package/dist/components/OBanner.vue.d.ts +11 -0
  4. package/dist/components/OHeaderSearch.vue.d.ts +22 -22
  5. package/dist/components/OHeaderUser.vue.d.ts +1 -1
  6. package/dist/components/OThemeSwitcher.vue.d.ts +1 -1
  7. package/dist/components/activity/OActivityMyCalendar.vue.d.ts +4 -4
  8. package/dist/components/activity/index.d.ts +2 -2
  9. package/dist/components/header/types.d.ts +0 -1
  10. package/dist/components/meeting/OMeetingCalendar.vue.d.ts +2 -2
  11. package/dist/components/meeting/OMeetingForm.vue.d.ts +2 -0
  12. package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +4 -4
  13. package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +1 -1
  14. package/dist/components/meeting/index.d.ts +9 -3
  15. package/dist/components/meeting/types.d.ts +4 -2
  16. package/dist/components/search/OSearchInput.vue.d.ts +22 -22
  17. package/dist/components/search/index.d.ts +11 -11
  18. package/dist/components/search/internal/SearchImageInput.vue.d.ts +17 -17
  19. package/dist/components.cjs.js +39 -39
  20. package/dist/components.css +1 -1
  21. package/dist/components.es.js +8558 -8725
  22. package/dist/index.d.ts +2 -3
  23. package/package.json +3 -3
  24. package/scripts/generate-components-index.js +1 -1
  25. package/src/components/OBanner.vue +398 -0
  26. package/src/components/OHeaderSearch.vue +1 -1
  27. package/src/components/activity/OActivityMyCalendar.vue +1 -1
  28. package/src/components/header/types.ts +0 -1
  29. package/src/components/meeting/OMeetingCalendar.vue +4 -4
  30. package/src/components/meeting/OMeetingForm.vue +13 -21
  31. package/src/components/meeting/components/OMeetingCalendarList.vue +2 -6
  32. package/src/components/meeting/components/OMeetingDetail.vue +3 -17
  33. package/src/components/meeting/types.ts +4 -2
  34. package/src/components/search/OSearchInput.vue +2 -2
  35. package/src/i18n/en.ts +1 -1
  36. package/src/i18n/zh.ts +1 -1
  37. package/src/index.ts +3 -4
  38. package/dist/components/OLanguageSwitcher.vue.d.ts +0 -49
  39. package/dist/components/banner/OBanner.vue.d.ts +0 -13
  40. package/dist/components/banner/OBannerContent.vue.d.ts +0 -7
  41. package/dist/components/banner/index.d.ts +0 -68
  42. package/dist/components/banner/types.d.ts +0 -31
  43. package/src/components/OLanguageSwitcher.vue +0 -211
  44. package/src/components/banner/OBanner.vue +0 -288
  45. package/src/components/banner/OBannerContent.vue +0 -175
  46. package/src/components/banner/index.ts +0 -18
  47. package/src/components/banner/types.ts +0 -39
package/dist/index.d.ts CHANGED
@@ -1,15 +1,14 @@
1
+ import { default as OBanner } from './components/OBanner.vue';
1
2
  import { default as OCookieNotice } from './components/OCookieNotice.vue';
2
3
  import { default as OFooter } from './components/OFooter.vue';
3
4
  import { default as OHeaderSearch } from './components/OHeaderSearch.vue';
4
5
  import { default as OHeaderUser } from './components/OHeaderUser.vue';
5
- import { default as OLanguageSwitcher } from './components/OLanguageSwitcher.vue';
6
6
  import { default as OPlusConfigProvider } from './components/OPlusConfigProvider.vue';
7
7
  import { default as OSection } from './components/OSection.vue';
8
8
  import { default as OSourceCode } from './components/OSourceCode.vue';
9
9
  import { default as OThemeSwitcher } from './components/OThemeSwitcher.vue';
10
- export { OCookieNotice, OFooter, OHeaderSearch, OHeaderUser, OLanguageSwitcher, OPlusConfigProvider, OSection, OSourceCode, OThemeSwitcher };
10
+ export { OBanner, OCookieNotice, OFooter, OHeaderSearch, OHeaderUser, OPlusConfigProvider, OSection, OSourceCode, OThemeSwitcher };
11
11
  export * from './components/activity';
12
- export * from './components/banner';
13
12
  export * from './components/element-plus';
14
13
  export * from './components/events';
15
14
  export * from './components/header';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendesign-plus-test/components",
3
- "version": "0.0.1-rc.59",
3
+ "version": "0.0.1-rc.60",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -32,8 +32,8 @@
32
32
  "dayjs": "^1.11.13",
33
33
  "video.js": "^8.23.7",
34
34
  "vue-dompurify-html": "^3.1.2",
35
- "@opendesign-plus/composables": "0.0.1-rc.8",
36
- "@opendesign-plus/styles": "0.0.1-rc.2"
35
+ "@opendesign-plus/styles": "0.0.1-rc.2",
36
+ "@opendesign-plus/composables": "0.0.1-rc.8"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@vitejs/plugin-vue": "^5.1.0",
@@ -77,7 +77,7 @@ export default {
77
77
  }
78
78
  };
79
79
  `;
80
-
80
+
81
81
  // 写入文件
82
82
  fs.writeFileSync(indexFilePath, indexContent, 'utf-8');
83
83
  console.log(`组件索引文件已生成: ${indexFilePath}`);
@@ -0,0 +1,398 @@
1
+ <script setup lang="ts">
2
+ import { OButton, OCarousel, OCarouselItem, OFigure } from '@opensig/opendesign';
3
+ import { computed, ref } from 'vue';
4
+
5
+ import { useScreen, useTheme } from '@opendesign-plus/composables';
6
+ import ContentWrapper from './common/ContentWrapper.vue';
7
+
8
+ const props = withDefaults(defineProps<{
9
+ options: any;
10
+ size: string;
11
+ contentJustifyCenter: boolean;
12
+ }>(), {
13
+ options: undefined,
14
+ size: 'large',
15
+ contentJustifyCenter: false,
16
+ });
17
+
18
+ const { isLight } = useTheme('opendesignplus', document.domain || 'localhost');
19
+ const { isPhone } = useScreen();
20
+
21
+ const bannerInfo = computed(() => props.options);
22
+
23
+ // 主题切换
24
+ const theme = ref('');
25
+ const onBeforeChange = (idx: number) => {
26
+ setTimeout(() => {
27
+ theme.value = bannerInfo.value[idx].bg_theme ?? 'light';
28
+ }, 100);
29
+ };
30
+
31
+ // banner跳转
32
+ const onClick = (href: string, hasBtn: boolean | undefined) => {
33
+ if (href && !hasBtn) {
34
+ window.open(href);
35
+ }
36
+ };
37
+ </script>
38
+
39
+ <template>
40
+ <div :class="['home-banner', size]">
41
+ <div v-if="size === 'tiny'">
42
+ {{ bannerInfo[1].title }}
43
+ </div>
44
+
45
+ <OCarousel
46
+ v-else-if="!isPhone"
47
+ class="banner-carousel"
48
+ effect="toggle"
49
+ active-class="current-slide"
50
+ indicator-click
51
+ :auto-play="true"
52
+ :data-o-theme="theme"
53
+ @before-change="onBeforeChange"
54
+ >
55
+ <OCarouselItem v-for="(info, index) in bannerInfo" :key="index" class="banner-item" :class="`banner-item${index}`">
56
+ <OFigure
57
+ class="banner-bg"
58
+ :src="info.bg"
59
+ :class="{
60
+ 'with-sticky-bg': info.withStickyBg,
61
+ 'in-dark': !isLight,
62
+ 'cursor-pointer': info.href && !info.btn,
63
+ }"
64
+ :style="{
65
+ '--pad-offset': info.pad_offset,
66
+ }"
67
+ @click="onClick(info.href, info.btn)"
68
+ >
69
+ <ContentWrapper class="banner-wrapper" :class="['banner-wrapper', contentJustifyCenter ? 'content-center' : '']">
70
+ <div class="banner-content">
71
+ <img v-if="!isPhone && info.attach" :src="info.attach" class="banner-attach" />
72
+
73
+ <!-- 标题 -->
74
+ <div class="banner-title" v-if="info.title">{{ info.title }}</div>
75
+ <!-- 副标题 -->
76
+ <div class="banner-subtitle" v-if="info.subtitle">{{ info.subtitle }}</div>
77
+ <div
78
+ class="banner-text"
79
+ v-if="info.bg_text"
80
+ :style="{
81
+ backgroundImage: `url(${info.bg_text})`,
82
+ '--pc-width': info.pc_text_width,
83
+ '--pc-height': info.pc_text_height,
84
+ '--pad-width': info.pad_text_width,
85
+ '--pad-height': info.pad_text_height,
86
+ }"
87
+ ></div>
88
+ <!-- 操作按钮 -->
89
+ <div v-if="info.btn" class="banner-opts">
90
+ <OButton :href="info.href" target="_blank" variant="solid" color="primary" :size="size">
91
+ {{ info.btn }}
92
+ </OButton>
93
+ </div>
94
+ </div>
95
+ </ContentWrapper>
96
+ </OFigure>
97
+ </OCarouselItem>
98
+ </OCarousel>
99
+
100
+ <OCarousel
101
+ v-else-if="isPhone"
102
+ class="banner-carousel"
103
+ effect="gallery"
104
+ indicator-click
105
+ :data-o-theme="theme"
106
+ arrow="never"
107
+ :auto-play="true"
108
+ @before-change="onBeforeChange"
109
+ >
110
+ <OCarouselItem
111
+ v-for="(info, index) in bannerInfo"
112
+ class="banner-item"
113
+ :class="`banner-item${index}`"
114
+ :key="index">
115
+ <ContentWrapper class="banner-wrapper">
116
+ <OFigure class="banner-bg" :src="info.bg" @click="onClick(info.href)" />
117
+ </ContentWrapper>
118
+ </OCarouselItem>
119
+ </OCarousel>
120
+ </div>
121
+ </template>
122
+
123
+ <style lang="scss" scoped>
124
+ .home-banner {
125
+ overflow: hidden;
126
+ position: relative;
127
+
128
+ &.tiny {
129
+ @include display2;
130
+ font-weight: 500;
131
+ margin: var(--o-gap-8) 0;
132
+ color: var(--o-color-info1);
133
+ }
134
+
135
+ .banner-title {
136
+ color: var(--o-color-info1);
137
+ font-weight: 500;
138
+ font-size: 48px; // 基础字体大小
139
+ margin-bottom: 8px;
140
+ }
141
+
142
+ .banner-subtitle {
143
+ color: var(--o-color-info1);
144
+ margin-top: 8px;
145
+ font-size: 16px;
146
+ }
147
+
148
+ .banner-text {
149
+ height: var(--pc-height);
150
+ width: var(--pc-width);
151
+ background-size: contain;
152
+ background-repeat: no-repeat;
153
+
154
+ @include respond('pad') {
155
+ height: var(--pad-height);
156
+ width: var(--pad-width);
157
+ }
158
+ }
159
+
160
+ &.large {
161
+ --banner-height: 460px;
162
+ height: var(--banner-height);
163
+
164
+ .banner-title {
165
+ @include display1;
166
+ }
167
+
168
+ .banner-subtitle {
169
+ @include h4;
170
+ }
171
+
172
+ @include respond('laptop-pc_s') {
173
+ --banner-height: 400px;
174
+ }
175
+
176
+ @include respond('pad_h') {
177
+ --banner-height: 360px;
178
+ }
179
+
180
+ @include respond('<=pad_v') {
181
+ --banner-height: 184px;
182
+ }
183
+ }
184
+
185
+ &.medium {
186
+ --banner-height: 360px;
187
+ height: var(--banner-height);
188
+
189
+ .banner-title {
190
+ @include display2;
191
+ }
192
+
193
+ .banner-subtitle {
194
+ @include text2;
195
+ }
196
+
197
+ @include respond('laptop-pc_s') {
198
+ --banner-height: 280px;
199
+ }
200
+
201
+ @include respond('pad_h') {
202
+ --banner-height: 220px;
203
+ }
204
+
205
+ @include respond('<=pad_v') {
206
+ --banner-height: 120px;
207
+ }
208
+
209
+ .banner-text {
210
+ --pc-height: 100px !important;
211
+ --pc-width: 500px !important;
212
+
213
+ @include respond('pad') {
214
+ --pc-height: 60px !important;
215
+ --pc-width: 300px !important;
216
+ }
217
+ }
218
+ }
219
+
220
+ &.small {
221
+ --banner-height: 280px;
222
+ height: var(--banner-height);
223
+
224
+ .banner-title {
225
+ @include display2;
226
+ }
227
+
228
+ .banner-subtitle {
229
+ @include text2;
230
+ }
231
+
232
+ @include respond('laptop-pc_s') {
233
+ --banner-height: 220px;
234
+ }
235
+
236
+ @include respond('pad_h') {
237
+ --banner-height: 180px;
238
+ }
239
+
240
+ @include respond('<=pad_v') {
241
+ display: none;
242
+ }
243
+
244
+ .banner-text {
245
+ --pc-height: 80px !important;
246
+ --pc-width: 400px !important;
247
+
248
+ @include respond('pad') {
249
+ --pc-height: 50px !important;
250
+ --pc-width: 250px !important;
251
+ }
252
+ }
253
+ }
254
+
255
+ :deep(.o-btn) {
256
+ border-radius: var(--btn-height);
257
+ }
258
+ }
259
+
260
+ .banner-carousel {
261
+ width: 100%;
262
+ height: 100%;
263
+ @include respond('>pad_v') {
264
+ --carousel-indicator-offset: 53px;
265
+ }
266
+
267
+ @include respond('<=pad_v') {
268
+ --carousel-indicator-offset: 1px;
269
+ }
270
+
271
+ :deep(.o-carousel-indicator-bar) {
272
+ height: 24px;
273
+ }
274
+ }
275
+
276
+ .banner-item {
277
+ width: 100%;
278
+ height: 100%;
279
+ }
280
+
281
+ .banner-bg {
282
+ width: 100%;
283
+ height: 100%;
284
+
285
+ :deep(.o-figure-img) {
286
+ width: 100%;
287
+ height: 100%;
288
+ }
289
+
290
+ @include respond('pad') {
291
+ :deep(.o-figure-img) {
292
+ transition: object-position 0.3s ease;
293
+ object-position: var(--pad-offset);
294
+ }
295
+ }
296
+
297
+ @include respond('phone') {
298
+ --figure-radius: 4px;
299
+ }
300
+ }
301
+
302
+ .banner-wrapper {
303
+ height: 100%;
304
+
305
+ &.content-center {
306
+ display: flex;
307
+ justify-content: center;
308
+
309
+ & .banner-content {
310
+ align-items: center;
311
+ }
312
+ }
313
+ }
314
+
315
+ .banner-content {
316
+ height: 100%;
317
+ display: inline-flex;
318
+ flex-direction: column;
319
+ justify-content: center;
320
+ position: relative;
321
+ }
322
+
323
+ .banner-opts {
324
+ margin-top: 24px;
325
+ --d: 20px;
326
+ }
327
+
328
+ @keyframes fade-up {
329
+ from {
330
+ transform: translateY(var(--d));
331
+ opacity: 0;
332
+ }
333
+ to {
334
+ transform: translateY(0);
335
+ opacity: 1;
336
+ }
337
+ }
338
+
339
+ .current-slide {
340
+ .banner-title {
341
+ animation: fade-up 400ms ease-in;
342
+ }
343
+ .banner-subtitle {
344
+ animation: fade-up 400ms ease-in;
345
+ }
346
+ .banner-text {
347
+ animation: fade-up 400ms ease-in;
348
+ }
349
+ .banner-opts {
350
+ animation: fade-up 400ms ease-in;
351
+ }
352
+ }
353
+
354
+ .in-dark.with-sticky-bg {
355
+ :deep(.o-figure-img) {
356
+ @include img-in-dark;
357
+ }
358
+ }
359
+ .cursor-pointer {
360
+ cursor: pointer;
361
+ }
362
+ </style>
363
+
364
+ <style lang="scss" scoped>
365
+ // 定制修改item1
366
+ .banner-item0 {
367
+ .banner-attach {
368
+ height: 120px;
369
+
370
+ @include respond('pad') {
371
+ height: 80px;
372
+ }
373
+ }
374
+ }
375
+
376
+ .banner-item1 {
377
+ .banner-attach {
378
+ height: 156px;
379
+
380
+ @include respond('pad') {
381
+ height: 120px;
382
+ }
383
+ }
384
+ }
385
+
386
+ // 定制修改item2
387
+ .banner-item2 {
388
+ .banner-content {
389
+ width: 100%;
390
+ justify-content: center;
391
+ }
392
+ .banner-attach {
393
+ height: 38%;
394
+ margin-top: -60px;
395
+ object-fit: contain;
396
+ }
397
+ }
398
+ </style>
@@ -214,7 +214,7 @@ const handleClear = () => {
214
214
  const handleSuggestClick = (item: OSearchRecommendItem) => {
215
215
  emit('recommend-click', item);
216
216
  innerValue.value = item.key;
217
- runSearch();
217
+ runSearch(item.key);
218
218
  };
219
219
 
220
220
  const handleRecommendClick = (val: string) => {
@@ -410,7 +410,7 @@ const confirmDelete = () => {
410
410
  }
411
411
  dialogLoading.value = true;
412
412
  props.deleteActivityRequest(currentRow.value?.id)
413
- .then((flag: any) => {
413
+ .then((flag) => {
414
414
  if (typeof flag === 'boolean' && !flag) {
415
415
  return;
416
416
  }
@@ -35,7 +35,6 @@ export interface NavItemT {
35
35
  withPicture: boolean; // 快捷链接是否显示缩略图
36
36
  children: ChildrenItemT[]; // 导航子项
37
37
  shortcut: ShortcutItemT[]; // 右侧快捷链接
38
- tag?: string; // 标签
39
38
  }
40
39
 
41
40
  export interface CodeItemT {
@@ -82,8 +82,8 @@ const getSummitData = async (date: string) => {
82
82
  return {
83
83
  ...v,
84
84
  type: CalendarDataType.SUMMIT,
85
- start_date_time: `${ formatDate(v.start_date) } ${ v.start || '' }`,
86
- end_date_time: `${ formatDate(v.end_date) } ${ v.end || '' }`,
85
+ start_date_time: `${ formatDate(v.start_date) } ${ v.start }`,
86
+ end_date_time: `${ formatDate(v.end_date) } ${ v.end }`,
87
87
  };
88
88
  });
89
89
  } else {
@@ -97,8 +97,8 @@ const getActivityData = async (date: string) => {
97
97
  return {
98
98
  ...v,
99
99
  type: CalendarDataType.EVENTS,
100
- start_date_time: `${ formatDate(v.start_date) } ${ v.start || '' }`,
101
- end_date_time: `${ formatDate(v.end_date) } ${ v.end || '' }`,
100
+ start_date_time: `${ formatDate(v.start_date) } ${ v.start }`,
101
+ end_date_time: `${ formatDate(v.end_date) } ${ v.end }`,
102
102
  };
103
103
  });
104
104
  } else {
@@ -19,15 +19,7 @@ import {
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 {
23
- CycleSubItemT,
24
- MeetingFormPropsT,
25
- MeetingGroupType,
26
- MeetingItemT,
27
- MeetingPostT,
28
- OptionItemT,
29
- PlatformT,
30
- } from './types';
22
+ import { CycleSubItemT, MeetingFormPropsT, MeetingGroupType, MeetingPostT, OptionItemT, PlatformT } from './types';
31
23
  import dayjs from 'dayjs';
32
24
  import { findLabelFromOptions, formatDateNumber, getDateNumber } from './utils';
33
25
  import { EMAIL_REGEX, INTERVAL_DAY, INTERVAL_MONTH, INTERVAL_WEEK } from './config';
@@ -39,6 +31,8 @@ import { ValidatorResultT } from '@opensig/opendesign/lib/form/types';
39
31
  const { t, locale, cycleTypeOptions0, intervalWeekOptions, getPlatformLabel } = useMeetingConfig();
40
32
 
41
33
  const props = withDefaults(defineProps<MeetingFormPropsT>(), {
34
+ isSub: false,
35
+ isEdit: false,
42
36
  showBtns: true,
43
37
  groupType: MeetingGroupType.SIG,
44
38
  });
@@ -47,8 +41,6 @@ const message = useMessage(null);
47
41
  const cycleTypeOptions = cycleTypeOptions0;
48
42
  const weekOptions = intervalWeekOptions;
49
43
 
50
- const isEdit = computed(() => Object.keys(props?.data || {}).length > 0);
51
- const isSub = computed(() => !!props.subId);
52
44
  const intervalTypeMax = computed(() => {
53
45
  return findLabelFromOptions(form.value.cycle_type, cycleTypeOptions.value, 'max');
54
46
  });
@@ -210,7 +202,7 @@ const rules = computed<Record<string, RulesT[]>>(() => {
210
202
  email_list: [
211
203
  {
212
204
  validator: (value: any) => {
213
- if (isEdit.value) {
205
+ if (props.isEdit) {
214
206
  return {} as unknown as ValidatorResultT;
215
207
  }
216
208
  const str = value.replaceAll(' ', '').replaceAll(',', ';') || '';
@@ -295,7 +287,7 @@ const getPropData = () => {
295
287
  ...(is_cycle
296
288
  ? {
297
289
  date_range: [cycle_start_date, cycle_end_date],
298
- cycle_point: cycle_point?.map((v) => parseInt(v as unknown as string)) || [],
290
+ cycle_point: cycle_point?.map((v) => parseInt(v)) || [],
299
291
  cycle_interval: cycle_interval || 1,
300
292
  time: `${ cycle_start }-${ cycle_end }`,
301
293
  start: cycle_start,
@@ -309,13 +301,13 @@ watch(
309
301
  () => props.data,
310
302
  (data) => {
311
303
  if (data) {
312
- const propData = getPropData() as unknown as MeetingItemT;
313
- const sub = propData?.cycle_sub?.find((v) => v.sub_id === (props.subId)) || {} as unknown as CycleSubItemT;
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;
314
306
  const { mid, date, start, end, sub_id } = sub;
315
307
  Object.assign(
316
308
  form.value,
317
309
  propData,
318
- isSub.value
310
+ props.isSub
319
311
  ? {
320
312
  is_cycle: false,
321
313
  mid,
@@ -376,12 +368,12 @@ const changeIntervalType = () => {
376
368
  };
377
369
 
378
370
  const changeIsCycle = () => {
379
- form.value.platform = typeOptions.value.find(v => (v.value as unknown as string).toLowerCase() === 'welink')?.value as unknown as string || 'WeLink';
371
+ form.value.platform = 'WELINK';
380
372
  };
381
373
 
382
374
  const { lePadV } = useScreen();
383
375
  const confirm = async () => {
384
- let type = isEdit.value ? t('meeting.editSuccess') : t('meeting.booSuccess');
376
+ let type = props.isEdit ? t('meeting.editSuccess') : t('meeting.booSuccess');
385
377
  try {
386
378
  loading.value = true;
387
379
  const valid = await formRef.value.validate();
@@ -439,8 +431,8 @@ const confirm = async () => {
439
431
  end,
440
432
  };
441
433
  }
442
- if (isEdit.value) {
443
- if (isSub.value) {
434
+ if (props.isEdit) {
435
+ if (props.isSub) {
444
436
  const { mid, sub_id } = form.value;
445
437
  const { date, start, end } = params;
446
438
  flag = await props?.editSubMeetingRequest(sub_id, {
@@ -490,7 +482,7 @@ onMounted(() => {
490
482
 
491
483
  const changeSig = (sig: any) => {
492
484
  const find = sigOptions.value.find((v) => v.value === sig);
493
- if (!isEdit.value) {
485
+ if (!props.isEdit) {
494
486
  form.value.etherpad = find?.etherpad || '';
495
487
  form.value.email_list = find?.email_list || '';
496
488
  }
@@ -90,11 +90,7 @@ const computedList = computed<any[]>(() => {
90
90
  dateRange = `${ formatDate(v.start_date) } ${ v.start }-${ formatDate(v.end_date) } ${ v.end }`;
91
91
  }
92
92
  } else {
93
- if (v.start_date === v.end_date) {
94
- dateRange = formatDate(v.start_date, 'YYYY/MM/DD');
95
- } else {
96
- dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD') }-${ formatDate(v.end_date, 'YYYY/MM/DD') }`;
97
- }
93
+ dateRange = `${ formatDate(v.start_date, 'YYYY/MM/DD HH:mm') } ${ formatDate(v.end_date, 'YYYY/MM/DD HH:mm') }`;
98
94
  }
99
95
 
100
96
  return {
@@ -173,7 +169,7 @@ const computedList = computed<any[]>(() => {
173
169
  <OCollapseItem v-for="(item, index) in computedList" :key="item.id" :value="item.id">
174
170
  <template #title>
175
171
  <div class="meet-title-left">
176
- <div class="meet-title" :title="item.topic || item.name || item.title">
172
+ <div class="meet-title" :title="item.topic || item.name">
177
173
  <OIcon
178
174
  :style="{
179
175
  backgroundColor: `${getConfig(item.type, 'color')}`
@@ -5,7 +5,6 @@ import { CalendarDataType, MeetingItemT } from '../types.ts';
5
5
  import MoreText from '@/components/common/MoreText.vue';
6
6
  import { formatDate } from '@/components/meeting/utils.ts';
7
7
  import { useMeetingConfig } from '../composables/useMeetingConfig';
8
- import { useI18n } from '@/i18n';
9
8
 
10
9
  const props = defineProps<{
11
10
  data: MeetingItemT;
@@ -14,8 +13,7 @@ const props = defineProps<{
14
13
  page?: CalendarDataType
15
14
  }>();
16
15
  const { t, getPlatformLabel } = useMeetingConfig();
17
- const { locale } = useI18n();
18
- const isZh = computed(() => locale.value === 'zh');
16
+
19
17
  // 会议详情配置
20
18
  const infoList = computed(() =>
21
19
  [
@@ -85,15 +83,11 @@ const columns = computed<ColumnItemT[]>(() => {
85
83
  });
86
84
 
87
85
  const domRef = ref([]);
88
- const SPLIT_MARK = '|';
89
86
  // 复制会议内容
90
87
  const copyInfo = () => {
91
88
  try {
92
- const colon = isZh.value ? '' : ': ';
93
- let text = `${ t('meeting.meetingTopic') }${ colon }${ props.data.topic || props.data.name || props.data.title }\n`;
94
- text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => {
95
- return `${ pre }${ cur.textContent ? cur.textContent.replace(SPLIT_MARK, colon) : '' }\n`;
96
- }, '');
89
+ let text = `${ t('meeting.meetingTopic') + props.data.topic }\n`;
90
+ text += [...domRef.value].reduce((pre, cur: HTMLDivElement) => `${ pre }${ cur.textContent }\n`, '');
97
91
  navigator.clipboard.writeText(text);
98
92
  return Promise.resolve();
99
93
  } catch (e) {
@@ -120,7 +114,6 @@ defineExpose({ copyInfo });
120
114
  >
121
115
  <template v-if="getField(info.key) && !info.isRecord">
122
116
  <span class="label">{{ info.label }}</span>
123
- <span class="split-mark">{{ SPLIT_MARK }}</span>
124
117
  <MoreText :show="show" v-if="info.ellipsis" :text="getField(info.key) || '-'" />
125
118
  <OLink
126
119
  v-else-if="info.isLink"
@@ -197,13 +190,6 @@ defineExpose({ copyInfo });
197
190
  }
198
191
  }
199
192
 
200
- .split-mark {
201
- width: 0;
202
- height: 0;
203
- opacity: 0;
204
- overflow: hidden;
205
- }
206
-
207
193
  &.type_events {
208
194
  .label {
209
195
  width: 6em;