@opendesign-plus-test/components 0.0.1-rc.82 → 0.0.1-rc.84

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 (210) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +10 -10
  3. package/dist/components/config-provider/OPlusConfigProvider.vue.d.ts +2 -2
  4. package/dist/components/config-provider/index.d.ts +3 -3
  5. package/dist/components/meeting/composables/useMeetingConfig.d.ts +1 -1
  6. package/dist/components.cjs.js +33 -33
  7. package/dist/components.css +1 -1
  8. package/dist/components.es.js +1511 -1504
  9. package/dist/treeshaking/components/banner/OBanner.css +37 -37
  10. package/dist/treeshaking/components/banner/OBanner.vue.mjs +1 -1
  11. package/dist/treeshaking/components/banner/OBanner.vue2.mjs +2 -1
  12. package/dist/treeshaking/components/banner/OBanner2.css +10 -10
  13. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue.d.ts +2 -2
  14. package/dist/treeshaking/components/config-provider/index.d.ts +3 -3
  15. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue.mjs +1 -1
  16. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue2.mjs +1 -1
  17. package/dist/treeshaking/components/cookie-notice/OCookieNotice2.css +62 -62
  18. package/dist/treeshaking/components/events/OEventsApply.vue.mjs +1 -1
  19. package/dist/treeshaking/components/header/OHeader.css +12 -12
  20. package/dist/treeshaking/components/header/OHeader.vue.mjs +1 -1
  21. package/dist/treeshaking/components/header/OHeader.vue2.mjs +1 -1
  22. package/dist/treeshaking/components/header/components/HeaderContent.css +235 -235
  23. package/dist/treeshaking/components/header/components/HeaderContent.vue.mjs +1 -1
  24. package/dist/treeshaking/components/header/components/HeaderContent.vue2.mjs +3 -2
  25. package/dist/treeshaking/components/header/components/HeaderNav.css +26 -26
  26. package/dist/treeshaking/components/header/components/HeaderNav.vue.mjs +1 -1
  27. package/dist/treeshaking/components/header/components/HeaderNav.vue2.mjs +1 -1
  28. package/dist/treeshaking/components/meeting/composables/useMeetingConfig.d.ts +1 -1
  29. package/dist/treeshaking/i18n/index.mjs +1 -1
  30. package/dist/treeshaking/shared/theme.mjs +13 -0
  31. package/package.json +4 -1
  32. package/docs/design.md +0 -27
  33. package/docs/design_banner.md +0 -41
  34. package/docs/design_section.md +0 -27
  35. package/plugins/css-inject-plugin.ts +0 -37
  36. package/scripts/build.js +0 -17
  37. package/scripts/generate-components-index.js +0 -62
  38. package/src/assets/events/svg-icons/icon-checked.svg +0 -3
  39. package/src/assets/events/svg-icons/icon-competition.svg +0 -7
  40. package/src/assets/events/svg-icons/icon-events.svg +0 -4
  41. package/src/assets/events/svg-icons/icon-release.svg +0 -4
  42. package/src/assets/events/svg-icons/icon-summit.svg +0 -4
  43. package/src/assets/meeting/empty.png +0 -0
  44. package/src/assets/meeting/svg-icons/icon-all.svg +0 -4
  45. package/src/assets/meeting/svg-icons/icon-backward.svg +0 -4
  46. package/src/assets/meeting/svg-icons/icon-calendar.svg +0 -3
  47. package/src/assets/meeting/svg-icons/icon-cancel.svg +0 -4
  48. package/src/assets/meeting/svg-icons/icon-captions.svg +0 -4
  49. package/src/assets/meeting/svg-icons/icon-close-captions.svg +0 -6
  50. package/src/assets/meeting/svg-icons/icon-close-fullscreen.svg +0 -6
  51. package/src/assets/meeting/svg-icons/icon-copy.svg +0 -4
  52. package/src/assets/meeting/svg-icons/icon-create.svg +0 -5
  53. package/src/assets/meeting/svg-icons/icon-delete.svg +0 -7
  54. package/src/assets/meeting/svg-icons/icon-empty.svg +0 -65
  55. package/src/assets/meeting/svg-icons/icon-event.svg +0 -4
  56. package/src/assets/meeting/svg-icons/icon-export.svg +0 -3
  57. package/src/assets/meeting/svg-icons/icon-forward.svg +0 -4
  58. package/src/assets/meeting/svg-icons/icon-fullscreen.svg +0 -6
  59. package/src/assets/meeting/svg-icons/icon-help.svg +0 -3
  60. package/src/assets/meeting/svg-icons/icon-important.svg +0 -4
  61. package/src/assets/meeting/svg-icons/icon-info.svg +0 -3
  62. package/src/assets/meeting/svg-icons/icon-meet.svg +0 -4
  63. package/src/assets/meeting/svg-icons/icon-meeting-message.svg +0 -5
  64. package/src/assets/meeting/svg-icons/icon-meeting.svg +0 -4
  65. package/src/assets/meeting/svg-icons/icon-play.svg +0 -5
  66. package/src/assets/meeting/svg-icons/icon-playing-tip.svg +0 -7
  67. package/src/assets/meeting/svg-icons/icon-playing.svg +0 -5
  68. package/src/assets/meeting/svg-icons/icon-question.svg +0 -4
  69. package/src/assets/meeting/svg-icons/icon-sound.svg +0 -5
  70. package/src/assets/meeting/svg-icons/icon-speaker.svg +0 -3
  71. package/src/assets/meeting/svg-icons/icon-summit.svg +0 -4
  72. package/src/assets/meeting/svg-icons/icon-telligent.svg +0 -3
  73. package/src/assets/meeting/svg-icons/icon-tip.svg +0 -3
  74. package/src/assets/meeting/svg-icons/icon-todo.svg +0 -4
  75. package/src/assets/meeting/transparent.png +0 -0
  76. package/src/assets/styles/element-plus.scss +0 -283
  77. package/src/assets/svg-icons/icon-arrow-left.svg +0 -3
  78. package/src/assets/svg-icons/icon-avatar-line.svg +0 -3
  79. package/src/assets/svg-icons/icon-caret-left.svg +0 -3
  80. package/src/assets/svg-icons/icon-caret-right.svg +0 -3
  81. package/src/assets/svg-icons/icon-chevron-down.svg +0 -3
  82. package/src/assets/svg-icons/icon-chevron-right.svg +0 -3
  83. package/src/assets/svg-icons/icon-chevron-up.svg +0 -3
  84. package/src/assets/svg-icons/icon-close.svg +0 -3
  85. package/src/assets/svg-icons/icon-delete-hover.svg +0 -4
  86. package/src/assets/svg-icons/icon-delete.svg +0 -7
  87. package/src/assets/svg-icons/icon-filter.svg +0 -3
  88. package/src/assets/svg-icons/icon-header-back.svg +0 -3
  89. package/src/assets/svg-icons/icon-header-delete.svg +0 -3
  90. package/src/assets/svg-icons/icon-header-menu.svg +0 -3
  91. package/src/assets/svg-icons/icon-header-person.svg +0 -3
  92. package/src/assets/svg-icons/icon-header-search.svg +0 -4
  93. package/src/assets/svg-icons/icon-image-close.svg +0 -4
  94. package/src/assets/svg-icons/icon-image-upload.svg +0 -3
  95. package/src/assets/svg-icons/icon-image-zoomin.svg +0 -3
  96. package/src/assets/svg-icons/icon-loading.svg +0 -4
  97. package/src/assets/svg-icons/icon-locale.svg +0 -3
  98. package/src/assets/svg-icons/icon-log-off.svg +0 -3
  99. package/src/assets/svg-icons/icon-message.svg +0 -3
  100. package/src/assets/svg-icons/icon-moon.svg +0 -3
  101. package/src/assets/svg-icons/icon-outlink.svg +0 -3
  102. package/src/assets/svg-icons/icon-overview.svg +0 -3
  103. package/src/assets/svg-icons/icon-refresh.svg +0 -3
  104. package/src/assets/svg-icons/icon-search.svg +0 -3
  105. package/src/assets/svg-icons/icon-setting.svg +0 -3
  106. package/src/assets/svg-icons/icon-sun.svg +0 -3
  107. package/src/assets/svg-icons/icon-tips.svg +0 -3
  108. package/src/components/activity/OActivityApproval.vue +0 -868
  109. package/src/components/activity/OActivityForm.vue +0 -548
  110. package/src/components/activity/OActivityMyCalendar.vue +0 -1540
  111. package/src/components/activity/composables/useActivityConfig.ts +0 -141
  112. package/src/components/activity/config.ts +0 -1
  113. package/src/components/activity/index.ts +0 -24
  114. package/src/components/activity/types.ts +0 -95
  115. package/src/components/banner/OBanner.vue +0 -288
  116. package/src/components/banner/OBannerContent.vue +0 -175
  117. package/src/components/banner/index.ts +0 -18
  118. package/src/components/banner/types.ts +0 -39
  119. package/src/components/common/AppAvatar.vue +0 -83
  120. package/src/components/common/ClientOnly.vue +0 -13
  121. package/src/components/common/ContentWrapper.vue +0 -82
  122. package/src/components/common/MoreText.vue +0 -124
  123. package/src/components/common/ThFilter.vue +0 -330
  124. package/src/components/config-provider/OPlusConfigProvider.vue +0 -32
  125. package/src/components/config-provider/index.ts +0 -10
  126. package/src/components/cookie-notice/OCookieNotice.vue +0 -575
  127. package/src/components/cookie-notice/index.ts +0 -10
  128. package/src/components/element-plus/OElCookieNotice.vue +0 -603
  129. package/src/components/element-plus/index.ts +0 -3
  130. package/src/components/events/OEventsApply.vue +0 -509
  131. package/src/components/events/OEventsCalendar.vue +0 -600
  132. package/src/components/events/OEventsList.vue +0 -461
  133. package/src/components/events/config.ts +0 -35
  134. package/src/components/events/index.ts +0 -24
  135. package/src/components/events/types.ts +0 -84
  136. package/src/components/events/utils.ts +0 -9
  137. package/src/components/footer/OFooter.vue +0 -577
  138. package/src/components/footer/index.ts +0 -10
  139. package/src/components/header/OHeader.vue +0 -157
  140. package/src/components/header/OHeaderMobile.vue +0 -184
  141. package/src/components/header/components/HeaderContent.vue +0 -1125
  142. package/src/components/header/components/HeaderNav.vue +0 -278
  143. package/src/components/header/components/HeaderNavMobile.vue +0 -380
  144. package/src/components/header/index.ts +0 -18
  145. package/src/components/header/types.ts +0 -96
  146. package/src/components/header-language-switcher/OHeaderLanguageSwitcher.vue +0 -249
  147. package/src/components/header-language-switcher/index.ts +0 -10
  148. package/src/components/header-search/OHeaderSearch.vue +0 -628
  149. package/src/components/header-search/index.ts +0 -10
  150. package/src/components/header-source-code/OHeaderSourceCode.vue +0 -151
  151. package/src/components/header-source-code/index.ts +0 -10
  152. package/src/components/header-theme/OHeaderTheme.vue +0 -132
  153. package/src/components/header-theme/index.ts +0 -10
  154. package/src/components/header-user/OHeaderUser.vue +0 -249
  155. package/src/components/header-user/index.ts +0 -10
  156. package/src/components/meeting/OMeetingCalendar.vue +0 -943
  157. package/src/components/meeting/OMeetingForm.vue +0 -1131
  158. package/src/components/meeting/OMeetingMyCalendar.vue +0 -1628
  159. package/src/components/meeting/OMeetingPlayback.vue +0 -469
  160. package/src/components/meeting/OMeetingSigCalendar.vue +0 -500
  161. package/src/components/meeting/components/OMeetingCalendarList.vue +0 -626
  162. package/src/components/meeting/components/OMeetingCalendarSelector.vue +0 -213
  163. package/src/components/meeting/components/OMeetingDetail.vue +0 -285
  164. package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +0 -615
  165. package/src/components/meeting/components/OMeetingPlaybackVideo.vue +0 -741
  166. package/src/components/meeting/components/OMeetingSigAside.vue +0 -205
  167. package/src/components/meeting/composables/useMeetingConfig.ts +0 -108
  168. package/src/components/meeting/config.ts +0 -48
  169. package/src/components/meeting/index.ts +0 -45
  170. package/src/components/meeting/types.ts +0 -270
  171. package/src/components/meeting/utils.ts +0 -70
  172. package/src/components/search/OSearchInput.vue +0 -526
  173. package/src/components/search/composables/useImageSearch.ts +0 -157
  174. package/src/components/search/composables/useKeywordHighlight.ts +0 -30
  175. package/src/components/search/composables/useSearchHistory.ts +0 -75
  176. package/src/components/search/index.ts +0 -23
  177. package/src/components/search/internal/HighlightText.vue +0 -37
  178. package/src/components/search/internal/SearchImageInput.vue +0 -498
  179. package/src/components/search/internal/SearchPanel.vue +0 -431
  180. package/src/components/search/types.ts +0 -25
  181. package/src/components/section/OSection.vue +0 -178
  182. package/src/components/section/index.ts +0 -10
  183. package/src/draft/Banner.vue +0 -265
  184. package/src/draft/ButtonCards.vue +0 -106
  185. package/src/draft/Feature.vue +0 -134
  186. package/src/draft/Footer.vue +0 -519
  187. package/src/draft/HorizontalAnchor.vue +0 -165
  188. package/src/draft/ItemSwiper.vue +0 -133
  189. package/src/draft/Logo.vue +0 -141
  190. package/src/draft/LogoCard.vue +0 -75
  191. package/src/draft/LogoV2.vue +0 -19
  192. package/src/draft/MainCard.vue +0 -38
  193. package/src/draft/MultiCard.vue +0 -95
  194. package/src/draft/MultiIconCard.vue +0 -74
  195. package/src/draft/OInfoCard.vue +0 -176
  196. package/src/draft/Process.vue +0 -81
  197. package/src/draft/Section.vue +0 -167
  198. package/src/draft/SingleTabCard.vue +0 -85
  199. package/src/draft/SliderCard.vue +0 -111
  200. package/src/env.d.ts +0 -16
  201. package/src/i18n/en.ts +0 -278
  202. package/src/i18n/index.ts +0 -56
  203. package/src/i18n/zh.ts +0 -268
  204. package/src/index.ts +0 -18
  205. package/src/shared/provide.ts +0 -6
  206. package/src/shims-vue-dompurify-html.d.ts +0 -17
  207. package/src/vue.d.ts +0 -10
  208. package/tsconfig.json +0 -37
  209. package/vite.config.ts +0 -123
  210. package/vite.treeshaking.config.ts +0 -127
@@ -1,868 +0,0 @@
1
- <script setup lang="ts">
2
- import { ElTable, ElTableColumn, dayjs } from 'element-plus';
3
- import {
4
- DialogActionT,
5
- OCollapse,
6
- OCollapseItem,
7
- ODialog,
8
- OForm,
9
- OFormItem, OLink,
10
- OPagination,
11
- OTag,
12
- OTextarea,
13
- useMessage,
14
- } from '@opensig/opendesign';
15
- import { useScreen } from '@opendesign-plus/composables';
16
- import { onMounted, watch, ref, reactive, computed } from 'vue';
17
- import { ActivityItemT, ActivityTablePropsT, ReviewParamsT } from './types';
18
- import { useActivityConfig } from './composables/useActivityConfig';
19
- import ThFilter from '../common/ThFilter.vue';
20
- import OMeetingDetail from '@/components/meeting/components/OMeetingDetail.vue';
21
- import { useI18n } from '@/i18n';
22
- import { CalendarDataType, MeetingItemT } from '@/components/meeting';
23
-
24
- const { t, locale } = useI18n();
25
- const isZh = computed(() => locale.value === 'zh');
26
- const { approvalStatusMap, statusMap, activityTypeMap } = useActivityConfig();
27
-
28
- const message = useMessage(null);
29
- const { isPhone, lePadV } = useScreen();
30
- const props = defineProps<ActivityTablePropsT>();
31
- const params = reactive<ReviewParamsT>({
32
- page: 1,
33
- size: 10,
34
- status: '',
35
- is_delete: 0,
36
- search: '',
37
- sponsor: '',
38
- order_by: '',
39
- });
40
-
41
- // -------------------- 申请人 --------------------
42
- const applicantValue = ref<string[]>([]);
43
- const applicantOptions = computed(() => props.applicantList.map(v => ({ value: v, label: v })));
44
-
45
- const filterApplicantList = () => {
46
- params.sponsor = applicantValue.value.join(',');
47
- };
48
-
49
- // -------------------- 时间排序 --------------------
50
- const order_by = ref('desc');
51
- const sortTime = () => {
52
- order_by.value = order_by.value === 'asc' ? 'desc' : 'asc';
53
- params.order_by = order_by.value;
54
- };
55
-
56
- // -------------------- 状态 --------------------
57
- const statusValue = ref();
58
- const statusOptions = computed(() => {
59
- const list: { label: string; value: string | number }[] = [];
60
- approvalStatusMap.value.forEach((item) => {
61
- list.push(item);
62
- });
63
- return list.slice(1);
64
- });
65
- const filterStatusList = () => {
66
- params.status = statusValue.value;
67
- if (statusValue.value === 'cancel') {
68
- params.is_delete = 1;
69
- } else {
70
- params.is_delete = 0;
71
- }
72
- };
73
-
74
- const tableData = ref<ActivityItemT[]>([]);
75
- const total = ref(0);
76
-
77
- const COUNT_PER_PAGE = [10, 20, 30, 40];
78
-
79
- const getData = async () => {
80
- const { page, size, status, sponsor, order_by, search, is_delete } = params;
81
- let paramsData = { page, size, sponsor, order_by, search } as ReviewParamsT;
82
- if (status !== 'all' && status !== '') {
83
- paramsData.is_delete = is_delete;
84
- }
85
- if (status === 'cancel') {
86
- paramsData.status = '';
87
- } else {
88
- paramsData.status = status;
89
- }
90
- if (!props.getTableDataRequest) {
91
- return;
92
- }
93
- const res = await props.getTableDataRequest(paramsData);
94
- tableData.value = (res.data || [])
95
- .map((item: ActivityItemT) => {
96
- const { start_date, end_date, start, end, activity_type } = item;
97
- return [
98
- {
99
- ...item,
100
- time: `${ start_date }-${ end }`,
101
- start_date_time: `${ start_date } ${ start }`,
102
- end_date_time: `${ end_date } ${ end }`,
103
- type: CalendarDataType.EVENTS,
104
- dateRange: `${ start_date } ${ start }-${ end_date } ${ end }`,
105
- activity_type: activityTypeMap.value.get(activity_type)?.label,
106
- },
107
- ];
108
- })
109
- .flat();
110
- total.value = res.total;
111
- };
112
-
113
- const onPaginationChange = (val: { page: number; pageSize: number }) => {
114
- if (val.pageSize !== params.size) {
115
- params.page = 1;
116
- } else {
117
- params.page = val.page;
118
- }
119
- params.size = val.pageSize;
120
- getData();
121
- };
122
-
123
- // -------------------- 活动审核弹窗 --------------------
124
- const form = ref({
125
- reason: '',
126
- });
127
- const formRef = ref(); // 表单实例
128
- const loading = ref(false); // 提交状态
129
- const currentRow = ref<ActivityItemT | null>(null); // 当前活动详情
130
- const digTitle = ref('');
131
- const reviewStatus = ref(0);
132
- const reviewVisible = ref(false);
133
-
134
- // 表单校验规则
135
- const rules = ref({
136
- reason: [{ required: true, message: t('meeting.enterReviewNotes') }],
137
- });
138
-
139
- const confirm = async () => {
140
- if (!props.approveActivityRequest || !props.rejectActivityRequest) {
141
- return;
142
- }
143
- try {
144
- loading.value = true;
145
- const valid = await formRef.value?.validate();
146
- if (!valid || valid.some((v: any) => !!v)) {
147
- loading.value = false;
148
- return;
149
- }
150
- if (reviewStatus.value === 1) {
151
- await props.approveActivityRequest(currentRow.value?.id, form.value);
152
- } else {
153
- await props.rejectActivityRequest(currentRow.value?.id, form.value);
154
- }
155
- getData();
156
- cancel();
157
- message.success({
158
- content: t('meeting.reviewSuccess', [currentRow.value?.title]),
159
- });
160
- } finally {
161
- reviewVisible.value = false;
162
- loading.value = false;
163
- }
164
- };
165
- const cancel = () => {
166
- reviewVisible.value = false;
167
- cancelVisible.value = false;
168
- loading.value = false;
169
- form.value.reason = '';
170
- };
171
-
172
- const confirmCancel = async () => {
173
- if (props.deleteActivityRequest && props.cancelActivityRequest) {
174
- try {
175
- loading.value = true;
176
- if (cancelStatus.value === 1) {
177
- await props.cancelActivityRequest(currentRow.value!.id, form.value);
178
- } else {
179
- await props.deleteActivityRequest(currentRow.value!.id, form.value);
180
- }
181
- getData();
182
- cancel();
183
- message.success({
184
- content: t('meeting.activityActionSuccess', [currentRow.value?.title, cancelText.value]),
185
- });
186
- } finally {
187
- loading.value = false;
188
- cancelVisible.value = false;
189
- }
190
- }
191
- };
192
-
193
- // -------------------- 审核操作 --------------------
194
- const cancelVisible = ref(false);
195
- const cancelTitle = ref('');
196
- const cancelText = ref('');
197
- const cancelStatus = ref(0);
198
-
199
- const deleteItem = (row: ActivityItemT) => {
200
- cancelTitle.value = t('meeting.deleteActivity');
201
- cancelText.value = t('meeting.deleteActivity').toLowerCase();
202
- currentRow.value = row;
203
- cancelStatus.value = 0;
204
- cancelVisible.value = true;
205
- };
206
- const cancelItem = (row: ActivityItemT) => {
207
- cancelTitle.value = t('meeting.cancelActivity');
208
- cancelText.value = t('common.cancel').toLowerCase();
209
- currentRow.value = row;
210
- cancelStatus.value = 1;
211
- cancelVisible.value = true;
212
- };
213
- const passItem = (row: ActivityItemT) => {
214
- currentRow.value = row;
215
- digTitle.value = t('meeting.approveReview');
216
- reviewStatus.value = 1;
217
- reviewVisible.value = true;
218
- };
219
- const rejectItem = (row: ActivityItemT) => {
220
- currentRow.value = row;
221
- digTitle.value = t('meeting.rejectReview');
222
- reviewStatus.value = 0;
223
- reviewVisible.value = true;
224
- };
225
-
226
- const expandList = ref<string[]>([]);
227
- const expandedRows = ref<string[]>([]);
228
-
229
- const getActivityDetail = (id: number) => {
230
- const val = id.toString();
231
- if (!props.getActivityDetailRequest) {
232
- return;
233
- }
234
- if (!expandList.value.includes(val)) {
235
- expandList.value.push(val);
236
- props.getActivityDetailRequest(val).then((res: ActivityItemT) => {
237
- tableData.value?.forEach((item) => {
238
- if (item.id === res.id) {
239
- item.approve_record = res.approve_record;
240
- item.approver = res.approver;
241
- }
242
- });
243
- });
244
- }
245
- const index = expandedRows.value.indexOf(val);
246
- if (!expandedRows.value.includes(val)) {
247
- expandedRows.value.push(val);
248
- } else {
249
- expandedRows.value.splice(index, 1); // 收起
250
- }
251
- };
252
-
253
- const expandChange = (val: ActivityItemT) => {
254
- getActivityDetail(val.id);
255
- };
256
-
257
- const getRowKey = (row: ActivityItemT): string => {
258
- return row.id.toString();
259
- };
260
-
261
- // -------------------- 移动端 ---------------------
262
- const expanded = ref<(string | number)[]>([]); // 展开的数据,id
263
- const change = (val: (string | number)[]) => {
264
- if (val.length) {
265
- val.forEach((item) => {
266
- getActivityDetail(item as number);
267
- });
268
- }
269
- };
270
-
271
- const detailRefs = ref<Record<number, any>>({});
272
- const getDetailRefs = (insRef: any, id: number) => {
273
- if (insRef && id) {
274
- detailRefs.value[id] = insRef;
275
- }
276
- };
277
-
278
- onMounted(() => {
279
- getData();
280
- });
281
-
282
- // -------------------- 监听查询参数变化,更新数据 ---------------------
283
- watch(
284
- () => [params.status, params.sponsor, params.order_by, params.search, params.is_delete],
285
- () => {
286
- getData();
287
- },
288
- { deep: true },
289
- );
290
-
291
- const cancelActions = computed<DialogActionT[]>(() => {
292
- return [{
293
- id: 'confirm',
294
- loading: loading.value,
295
- color: 'primary',
296
- variant: lePadV.value ? 'text' : 'solid',
297
- round: 'pill',
298
- size: 'large',
299
- label: t('meeting.confirmBtn'),
300
- onClick: () => {
301
- confirmCancel();
302
- },
303
- }, {
304
- id: 'cancel',
305
- color: 'primary',
306
- variant: lePadV.value ? 'text' : 'outline',
307
- round: 'pill',
308
- size: 'large',
309
- label: t('meeting.cancelBtn'),
310
- onClick: () => {
311
- cancel();
312
- },
313
- }];
314
- });
315
- const reviewActions = computed<DialogActionT[]>(() => {
316
- return [{
317
- id: 'confirm',
318
- loading: loading.value,
319
- color: 'primary',
320
- variant: lePadV.value ? 'text' : 'solid',
321
- round: 'pill',
322
- size: 'large',
323
- label: t('meeting.confirmBtn'),
324
- onClick: () => {
325
- confirm();
326
- },
327
- }, {
328
- id: 'cancel',
329
- color: 'primary',
330
- variant: lePadV.value ? 'text' : 'outline',
331
- round: 'pill',
332
- size: 'large',
333
- label: t('meeting.cancelBtn'),
334
- onClick: () => {
335
- cancel();
336
- },
337
- }];
338
- });
339
- </script>
340
-
341
- <template>
342
- <div class="o-activity-table">
343
- <div class="table-wrapper" v-if="!isPhone">
344
- <ElTable :data="tableData" @expand-change="expandChange" :row-key="getRowKey" :expand-row-keys="expandedRows">
345
- <ElTableColumn type="expand">
346
- <template #default="props">
347
- <div class="expand-detail">
348
- <OMeetingDetail :data="props.row" :page="CalendarDataType.APPROVAL" show />
349
- </div>
350
- </template>
351
- </ElTableColumn>
352
- <ElTableColumn :label="t('meeting.activityName')" prop="title" />
353
- <ElTableColumn prop="sponsor">
354
- <template #header>
355
- <ThFilter
356
- v-model="applicantValue"
357
- @confirm="filterApplicantList"
358
- :list="applicantOptions"
359
- :multiple="true"
360
- >
361
-
362
- <template #empty>
363
- <slot name="filter-empty"></slot>
364
- </template>
365
- {{ t('meeting.applicant') }}
366
- </ThFilter>
367
- </template>
368
- </ElTableColumn>
369
- <ElTableColumn prop="create_time">
370
- <template #header>
371
- <div class="sort-time" @click="sortTime">
372
- <span>{{ t('meeting.submissionTime') }}</span>
373
- <div class="sort-btn">
374
- <div class="sort-asc sort-item" :class="{ active: order_by === 'asc' }"></div>
375
- <div class="sort-desc sort-item" :class="{ active: order_by === 'desc' }"></div>
376
- </div>
377
- </div>
378
- </template>
379
- <template #default="scope">
380
- {{ dayjs(scope.row.create_time).format('YYYY/MM/DD HH:mm:ss') }}
381
- </template>
382
- </ElTableColumn>
383
- <ElTableColumn prop="status" width="90px">
384
- <template #header>
385
- <ThFilter
386
- v-model="statusValue"
387
- @confirm="filterStatusList"
388
- :list="statusOptions"
389
- >
390
- <template #empty>
391
- <slot name="filter-empty"></slot>
392
- </template>
393
- {{ t('meeting.status') }}
394
- </ThFilter>
395
- </template>
396
- <template #default="scope">
397
- <OTag
398
- v-if="scope.row.is_delete !== 1"
399
- color="primary"
400
- variant="outline"
401
- :class="[`tag-${statusMap.get(scope.row.status)?.id}`]"
402
- >
403
- {{
404
- statusMap.get(scope.row.status)?.text
405
- }}
406
- </OTag>
407
- <OTag v-else color="primary" variant="outline" class="tag-cancel">{{ t('meeting.statusCanceled') }}</OTag>
408
- </template>
409
- </ElTableColumn>
410
- <ElTableColumn :label="t('meeting.action')">
411
- <template #default="scope">
412
- <div class="activity-btn">
413
- <OLink
414
- v-if="scope.row.status === 7 || scope.row.is_delete"
415
- color="danger"
416
- @click="deleteItem(scope.row)">
417
- {{ t('meeting.deleteActivity') }}
418
- </OLink>
419
- <OLink
420
- v-if="(scope.row.status === 3 || scope.row.status === 4) && scope.row.is_delete !== 1"
421
- color="danger"
422
- @click="cancelItem(scope.row)"
423
- >
424
- {{ t('meeting.cancelActivity') }}
425
- </OLink>
426
- <OLink v-if="scope.row.status === 2" color="primary" @click="passItem(scope.row)">
427
- {{ t('meeting.approve') }}
428
- </OLink>
429
- <OLink v-if="scope.row.status === 2" color="primary" @click="rejectItem(scope.row)">
430
- {{ t('meeting.reject') }}
431
- </OLink>
432
- </div>
433
- </template>
434
- </ElTableColumn>
435
- </ElTable>
436
- <div v-if="total > COUNT_PER_PAGE[0]" class="pagination-wrapper">
437
- <OPagination
438
- :total="total"
439
- :page="params.page"
440
- :page-size="params.size"
441
- :page-sizes="COUNT_PER_PAGE"
442
- :layout="['total', 'jumper', 'pager', 'pagesize']"
443
- :show-more="false"
444
- @change="onPaginationChange"
445
- />
446
- </div>
447
- </div>
448
- <div v-else class="collapse-wrapper">
449
- <OCollapse v-model="expanded" :accordion="isPhone" @change="change">
450
- <template v-for="(act) in tableData" :key="act.id">
451
- <div class="title-top">
452
- <p class="act-title">{{ act.title }}</p>
453
- <OTag v-if="act.is_delete !== 1" color="primary" variant="outline"
454
- :class="[`tag-${statusMap.get(act.status)?.id}`]">
455
- {{
456
- statusMap.get(act.status)?.text
457
- }}
458
- </OTag>
459
- <OTag v-else color="primary" variant="outline" class="tag-cancel">{{ t('meeting.statusCanceled') }}</OTag>
460
- </div>
461
- <OCollapseItem :value="act.id">
462
- <template #title>
463
- <div class="act-sponsor">
464
- <p class="sponsor">{{ act.sponsor }}</p>
465
- <p>{{ dayjs(act.create_time).format('YYYY/MM/DD HH:mm:ss') }}</p>
466
- </div>
467
- <div class="activity-btn">
468
- <OLink
469
- v-if="act.status === 7 || act.is_delete"
470
- color="danger"
471
- variant="text"
472
- @click.stop="deleteItem(act)"
473
- >
474
- {{ t('meeting.deleteActivity') }}
475
- </OLink>
476
- <OLink
477
- v-if="(act.status === 3 || act.status === 4) && act.is_delete !== 1"
478
- color="danger"
479
- variant="text"
480
- @click.stop="cancelItem(act)"
481
- >
482
- {{ t('meeting.cancelActivity') }}
483
- </OLink>
484
- <OLink
485
- v-if="act.status === 2"
486
- color="primary"
487
- variant="text"
488
- @click.stop="passItem(act)"
489
- >
490
- {{ t('meeting.approve') }}
491
- </OLink>
492
- <OLink
493
- v-if="act.status === 2"
494
- color="primary"
495
- variant="text"
496
- @click.stop="rejectItem(act)"
497
- >
498
- {{ t('meeting.reject') }}
499
- </OLink>
500
- </div>
501
- </template>
502
- <div class="activity-detail">
503
- <OMeetingDetail
504
- :show="expanded.includes(act.id)"
505
- :data="act as unknown as MeetingItemT"
506
- :ref="(insRef) => getDetailRefs(insRef, act.id)"
507
- :page="CalendarDataType.APPROVAL"
508
- />
509
- </div>
510
- </OCollapseItem>
511
- </template>
512
- </OCollapse>
513
- <!-- 分页 -->
514
- <div v-if="total > COUNT_PER_PAGE[0]" class="pagination">
515
- <OPagination
516
- :total="total"
517
- :page="params.page"
518
- :page-size="params.size"
519
- :page-sizes="COUNT_PER_PAGE"
520
- :layout="['total', 'jumper', 'pager', 'pagesize']"
521
- :show-more="false"
522
- :simple="true"
523
- @change="onPaginationChange"
524
- />
525
- </div>
526
- </div>
527
- <ODialog
528
- v-model:visible="reviewVisible"
529
- :phone-half-full="lePadV"
530
- main-class="handle-dialog-approval review-dialog"
531
- :actions="reviewActions"
532
- >
533
- <template #header>{{ digTitle }}</template>
534
- <div class="dialog-content">
535
- <OForm :model="form" ref="formRef" has-required layout="v" class="form-wrapper">
536
- <OFormItem
537
- :rules="rules.reason"
538
- :label="`${t('meeting.reviewNotesLabel')}${isZh ? ':' : ': '}`"
539
- field="reason"
540
- >
541
- <OTextarea
542
- size="large"
543
- :placeholder="t('meeting.enterReviewNotes')"
544
- :rows="4"
545
- resize="none"
546
- :max-length="1000"
547
- :input-on-outlimit="false"
548
- v-model="form.reason"
549
- />
550
- </OFormItem>
551
- </OForm>
552
- </div>
553
- </ODialog>
554
- <!-- 取消活动弹窗 -->
555
- <ODialog
556
- v-model:visible="cancelVisible"
557
- :phone-half-full="lePadV"
558
- main-class="handle-dialog-approval cancel-dialog"
559
- :actions="cancelActions"
560
- >
561
- <template #header>{{ cancelTitle }}</template>
562
- <div class="dialog-content">
563
- {{ cancelStatus === 1 ? t('meeting.confirmCancelActivity', [currentRow?.title]) : t('meeting.confirmDeleteActivity', [currentRow?.title])
564
- }}
565
- </div>
566
- </ODialog>
567
- </div>
568
- </template>
569
-
570
- <style lang="scss">
571
- .o-activity-table {
572
- --activity-card-radius: var(--o-radius-xs);
573
- --activity-input-radius: var(--o-radius-xs);
574
- .table-wrapper {
575
- .el-table {
576
- border-top: none;
577
- }
578
-
579
- .el-table__header {
580
- margin-bottom: 0;
581
- }
582
- }
583
-
584
- .expand-detail {
585
- padding: 16px 60px;
586
- background-color: var(--o-color-fill3);
587
- }
588
-
589
- .activity-btn {
590
- .o-btn + .o-btn {
591
- margin-left: 24px;
592
- }
593
-
594
- @include respond('<=pad_v') {
595
- .o-btn + .o-btn {
596
- margin-left: 16px;
597
- }
598
- }
599
- @include respond('phone') {
600
- margin-top: 8px;
601
- .o-btn + .o-btn {
602
- margin-left: 12px;
603
- }
604
- }
605
- }
606
-
607
- .o-btn-text {
608
- @include hover {
609
- background-color: transparent;
610
- color: var(--o-color-primary1);
611
- }
612
- }
613
-
614
- .o-btn.o-btn-text {
615
- padding-left: 0 !important;
616
- padding-right: 0 !important;
617
- min-width: auto;
618
- }
619
-
620
- .o-tag {
621
- --tag-radius: 100px;
622
- font-weight: 500;
623
- padding: 0 8px;
624
- height: 24px;
625
- line-height: 24px !important;
626
- @include tip1;
627
-
628
- .o-tag-label {
629
- transform: none !important;
630
- }
631
-
632
- &.o-tag-outline {
633
- --tag-bd-color: transparent;
634
- --tag-color: #fff;
635
- }
636
-
637
- &.tag-under-review {
638
- --tag-bg-color: rgb(var(--o-blue-6));
639
- }
640
-
641
- &.tag-draft,
642
- &.tag-cancel {
643
- --tag-color: var(--o-color-info3);
644
- --tag-bg-color: var(--o-color-control1-light);
645
- }
646
-
647
- &.tag-registration,
648
- &.tag-in-progress,
649
- &.tag-ended {
650
- --tag-bg-color: var(--o-color-success1);
651
- }
652
-
653
- &.tag-reject {
654
- --tag-bg-color: var(--o-color-warning1);
655
- }
656
- }
657
-
658
-
659
-
660
- .sort-time {
661
- display: flex;
662
- align-items: center;
663
- cursor: pointer;
664
- }
665
-
666
- .sort-btn {
667
- margin-left: 4px;
668
- }
669
-
670
- .sort-item {
671
- width: 0;
672
- height: 0;
673
- border: 5px solid transparent;
674
- }
675
-
676
- .sort-asc {
677
- border-bottom-color: var(--o-color-info2);
678
- margin-bottom: 2px;
679
-
680
- &.active {
681
- border-bottom-color: var(--o-color-primary1);
682
- }
683
- }
684
-
685
- .sort-desc {
686
- border-top-color: var(--o-color-info2);
687
- margin-top: 2px;
688
-
689
- &.active {
690
- border-top-color: var(--o-color-primary1);
691
- }
692
- }
693
-
694
- .el-table {
695
- --el-table-header-bg-color: rgba(235, 241, 250, 1);
696
- color: var(--o-color-info1);
697
- @include text1;
698
-
699
- .el-table__header-wrapper {
700
- border-radius: var(--activity-card-radius) var(--activity-card-radius) 0 0;
701
-
702
- .el-table__cell {
703
- padding: 12px 0 11px;
704
- }
705
-
706
- .cell {
707
- color: var(--o-color-info2);
708
- font-weight: 600;
709
- @include text1;
710
- }
711
- }
712
-
713
- .el-table__expanded-cell {
714
- padding: 0;
715
- }
716
-
717
- .cell {
718
- white-space: nowrap;
719
- }
720
- }
721
-
722
- .pagination, .pagination-wrapper {
723
- margin-top: var(--o-gap-6);
724
- display: flex;
725
- align-items: center;
726
- justify-content: flex-end;
727
- }
728
-
729
- .o-textarea {
730
- --_box-radius: var(--activity-input-radius);
731
- }
732
-
733
- .dialog-footer {
734
- display: flex;
735
- justify-content: center;
736
- align-items: center;
737
-
738
- .o-btn + .o-btn {
739
- margin-left: 16px;
740
- }
741
-
742
- @include respond('<=pad_v') {
743
- .o-btn {
744
- width: 140px;
745
- color: var(--o-color-info1);
746
- padding: 6px 24px !important;
747
- }
748
- .o-btn + .o-btn {
749
- margin-left: 0;
750
- }
751
- }
752
- }
753
-
754
- .collapse-wrapper {
755
- .o-tag {
756
- height: 24px;
757
- }
758
-
759
- .o-collapse {
760
- padding: 0;
761
- border-radius: var(--activity-card-radius);
762
-
763
- .o-collapse-item {
764
- --collapse-item-header-padding: 8px 0 12px;
765
-
766
- &:last-child {
767
- padding-bottom: 16px;
768
- }
769
- }
770
-
771
- .act-sponsor {
772
- display: flex;
773
- align-items: center;
774
- color: var(--o-color-info3);
775
- margin-right: 16px;
776
- @include text1;
777
- }
778
-
779
- .sponsor {
780
- margin-right: 12px;
781
- @include text-truncate(1);
782
- }
783
-
784
- .o-collapse-item-icon {
785
- transform: rotate(0deg);
786
- width: 24px;
787
- height: 24px;
788
- }
789
-
790
- .o-collapse-item-expanded .o-collapse-item-icon {
791
- transform: rotate(90deg);
792
- }
793
-
794
- .o-collapse-item-header {
795
- border-bottom: 1px solid var(--o-color-control4);
796
- margin: 0 16px;
797
- }
798
- }
799
-
800
- .activity-detail {
801
- padding: 12px 16px;
802
- background-color: rgba(243, 246, 250, 1);
803
- }
804
-
805
- .pagination {
806
- justify-content: center;
807
- margin-top: 24px;
808
- }
809
- }
810
-
811
- .title-top {
812
- display: flex;
813
- align-items: center;
814
- justify-content: space-between;
815
- padding: 12px 16px 0;
816
-
817
- .act-title {
818
- color: var(--o-color-info1);
819
- margin-right: 12px;
820
- font-weight: 600;
821
- @include text1;
822
- @include text-truncate(1);
823
- }
824
- }
825
- }
826
-
827
- </style>
828
-
829
- <style lang="scss">
830
- .handle-dialog-approval {
831
- --activity-card-radius: var(--o-radius-xs);
832
- --dlg-width: 450px;
833
- --dlg-radius: var(--activity-card-radius);
834
- @include respond('<=pad_v') {
835
- width: 100%;
836
- --dlg-radius: var(--activity-card-radius) var(--activity-card-radius) 0 0;
837
- }
838
- }
839
-
840
- .cancel-dialog {
841
- .o-dlg-footer {
842
- margin-top: var(--o-gap-5);
843
- }
844
- }
845
- .review-dialog {
846
- --dlg-width: 690px;
847
- --activity-input-radius: var(--o-radius-xs);
848
-
849
- .o-form {
850
- width: 450px;
851
- margin: 0 auto;
852
-
853
- .o-form-item-label {
854
- margin-bottom: var(--o-gap-2);
855
- }
856
-
857
- .o-textarea {
858
- width: 100%;
859
- --_box-radius: var(--activity-input-radius);
860
- }
861
- }
862
-
863
- .o-dlg-footer {
864
- margin-top: var(--o-gap-6);
865
- }
866
- }
867
-
868
- </style>