返回 AiToEarn
task.module.scss
根目录 / project / aitoearn-electron / src / views / task / task.module.scss
1 .publish {
2 width: 100%;
3 height: 100%;
4 display: flex;
5
6 :global {
7 .ant-segmented {
8 padding: 30px 10px;
9
10 .ant-segmented-item {
11 margin-bottom: 5px;
12 padding: 3px 40px 3px 0;
13 }
14 }
15 }
16 }
17
18 .taskContainer {
19 padding: 16px;
20 background-color: #f5f5f5;
21 min-height: 100vh;
22 }
23
24 .tabsContainer {
25 background-color: #fff;
26 padding: 0 16px;
27 margin-bottom: 16px;
28 border-radius: 8px;
29 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
30 }
31
32 .taskList {
33 overflow-y: auto;
34 padding: 16px;
35 background: #f5f5f5;
36
37 &::-webkit-scrollbar {
38 width: 6px;
39 }
40
41 &::-webkit-scrollbar-thumb {
42 background-color: rgba(0, 0, 0, 0.2);
43 border-radius: 3px;
44 }
45
46 &::-webkit-scrollbar-track {
47 background-color: transparent;
48 }
49
50 :global {
51 .ant-list {
52 min-height: 100%;
53 }
54
55 .ant-list-items {
56 display: flex;
57 flex-wrap: wrap;
58 gap: 16px;
59 justify-content: flex-start;
60 }
61
62 .ant-list-item {
63 flex: 0 0 calc(33.333% - 16px);
64 max-width: 350px;
65 margin: 0 !important;
66 }
67
68 .ant-card {
69 height: 100%;
70 display: flex;
71 flex-direction: column;
72 transition: all 0.3s;
73 max-width: 350px;
74
75 &:hover {
76 transform: translateY(-4px);
77 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
78 }
79 }
80
81 .ant-card-cover {
82 height: 180px;
83 overflow: hidden;
84 background: #fafafa;
85 display: flex;
86 align-items: center;
87 justify-content: center;
88 }
89
90 .ant-card-body {
91 flex: 1;
92 display: flex;
93 flex-direction: column;
94 padding: 16px;
95 }
96
97 .ant-card-meta {
98 flex: 1;
99 }
100
101 .ant-card-actions {
102 background: #fafafa;
103 padding: 12px 0;
104 }
105 }
106 }
107
108 .taskCard {
109 gap: 0px 28px;
110
111 .taskImage {
112 height: 200px;
113 display: flex;
114 align-items: center;
115 justify-content: center;
116 background: #fafafa;
117 overflow: hidden;
118
119 img {
120 width: 100%;
121 height: 100%;
122 object-fit: cover;
123 }
124 }
125
126 .taskTitle {
127 margin-bottom: 12px;
128
129 h5 {
130 margin: 0 0 8px 0;
131 font-size: 16px;
132 line-height: 1.4;
133 }
134 }
135
136 .taskInfo {
137 .taskProgress {
138 margin-bottom: 8px;
139 }
140
141 .ant-typography {
142 margin-bottom: 8px;
143 line-height: 1.6;
144 }
145 }
146
147 .taskDeadline {
148 margin-top: 8px;
149 padding-top: 8px;
150 border-top: 1px solid #f0f0f0;
151 }
152 }
153
154 .taskContent {
155 display: flex;
156 flex: 1;
157 margin-bottom: 12px;
158 }
159
160 .imageContainer {
161 width: 100px;
162 height: 100px;
163 flex-shrink: 0;
164 margin-right: 12px;
165 overflow: hidden;
166 border-radius: 4px;
167 }
168
169 .productImage {
170 width: 100%;
171 height: 100%;
172 object-fit: cover;
173 }
174
175 .productInfo {
176 flex: 1;
177 display: flex;
178 flex-direction: column;
179 }
180
181 .productTitle {
182 text-align: left;
183 font-size: 14px;
184 line-height: 1.4;
185 margin-bottom: 12px;
186 display: -webkit-box;
187 -webkit-line-clamp: 2;
188 -webkit-box-orient: vertical;
189 overflow: hidden;
190 text-overflow: ellipsis;
191 font-weight: normal;
192 color: #333;
193 }
194
195 .priceInfo {
196 display: flex;
197 justify-content: space-between;
198 align-items: center;
199 margin-bottom: 4px;
200 }
201
202 .price {
203 font-size: 16px;
204 font-weight: bold;
205 color: #ff4d4f;
206 }
207
208 .likes {
209 font-size: 12px;
210 color: #999;
211 }
212
213 .discountTag {
214 margin: 0;
215 display: flex;
216 gap: 4px;
217 flex-direction: row;
218 justify-content: flex-start;
219 }
220
221 .viewsInfo {
222 display: flex;
223 justify-content: space-between;
224 font-size: 12px;
225 color: #999;
226 }
227
228 .level {
229 color: #666;
230 }
231
232 .taskFooter {
233 display: flex;
234 justify-content: space-between;
235 align-items: center;
236 padding-top: 12px;
237 border-top: 1px solid #f0f0f0;
238 margin-top: auto;
239 }
240
241 .taskTips {
242 font-size: 12px;
243 color: #999;
244 display: flex;
245 align-items: center;
246 }
247
248 .infoIcon {
249 margin-left: 4px;
250 color: #999;
251 cursor: pointer;
252
253 &:hover {
254 color: #1890ff;
255 }
256 }
257
258 .applyButton {
259 background-color: #a66ae4;
260 border-color: #a66ae4;
261
262 &:hover {
263 background-color: #73d13d;
264 border-color: #73d13d;
265 }
266 }
267
268 .taskPageContainer {
269 padding: 16px;
270 background-color: #f5f5f5;
271 min-height: 100vh;
272 display: flex;
273 flex-direction: column;
274 }
275
276 .taskHeader {
277 display: flex;
278 justify-content: space-between;
279 align-items: center;
280 margin-bottom: 16px;
281 padding: 12px 16px;
282 background-color: #fff;
283 border-radius: 8px;
284 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
285 }
286
287 .taskHeaderLeft {
288 display: flex;
289 gap: 12px;
290 }
291
292 .taskButton {
293 display: flex;
294 align-items: center;
295 gap: 8px;
296 padding: 8px 16px;
297 background-color: #f5f5f5;
298 border-radius: 4px;
299 cursor: pointer;
300 transition: all 0.3s;
301 color: #666;
302
303 &:hover {
304 background-color: #e6f7ff;
305 color: #1890ff;
306 }
307
308 span {
309 font-size: 14px;
310 }
311 }
312
313 .activeTaskButton {
314 background-color: #e6f7ff;
315 color: #1890ff;
316 font-weight: 500;
317 }
318
319 .taskHeaderRight {
320 display: flex;
321 gap: 12px;
322 }
323
324 .withdrawText {
325 display: flex;
326 align-items: center;
327 gap: 8px;
328 color: #1890ff;
329 cursor: pointer;
330 font-size: 14px;
331
332 &:hover {
333 color: #40a9ff;
334 }
335 }
336
337 .taskContent {
338 background-color: #fff;
339 border-radius: 8px;
340 padding: 16px;
341 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
342 flex: 1;
343 display: flex;
344 flex-direction: column;
345 }
346
347 .taskListContainer {
348 display: flex;
349 flex-direction: column;
350 flex: 1;
351 padding: 16px 0;
352 }
353
354 .productGridContainer {
355 display: flex;
356 flex-direction: column;
357 flex: 1;
358 }
359
360 .productGrid {
361 display: grid;
362 grid-template-columns: repeat(3, 1fr);
363 gap: 24px;
364 margin-top: 16px;
365
366 @media (max-width: 1200px) {
367 grid-template-columns: repeat(2, 1fr);
368 }
369
370 @media (max-width: 768px) {
371 grid-template-columns: 1fr;
372 }
373 }
374
375 .productCard {
376 background-color: #fff;
377 border-radius: 8px;
378 overflow: hidden;
379 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
380 padding: 16px;
381 display: flex;
382 flex-direction: column;
383 transition: transform 0.2s;
384
385 &:hover {
386 transform: translateY(-3px);
387 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
388 }
389 }
390
391 .productContent {
392 display: flex;
393 margin-bottom: 12px;
394 flex: 1;
395 }
396
397 .imageContainer {
398 width: 128px;
399 height: 128px;
400 flex-shrink: 0;
401 margin-right: 12px;
402 overflow: hidden;
403 border-radius: 4px;
404 }
405
406 .productImage {
407 width: 100%;
408 height: 100%;
409 object-fit: cover;
410 }
411
412 .productInfo {
413 flex: 1;
414 display: flex;
415 flex-direction: column;
416 justify-content: space-between;
417 }
418
419 .priceRow {
420 display: flex;
421 flex-direction: column;
422 }
423
424 .price {
425 font-size: 16px;
426 font-weight: bold;
427 color: #ff4d4f;
428 }
429
430 .discountTag {
431 margin: 0;
432 display: flex;
433 gap: 4px;
434 flex-direction: row;
435 justify-content: flex-start;
436 }
437
438 .infoRow {
439 display: flex;
440 flex-direction: column;
441 gap: 4px;
442 margin-top: auto;
443 }
444
445 .infoItem {
446 display: flex;
447 font-size: 12px;
448 color: #666;
449 }
450
451 .infoLabel {
452 color: #999;
453 margin-right: 4px;
454 }
455
456 .infoValue {
457 color: #666;
458 }
459
460 .sales {
461 font-size: 12px;
462 color: #999;
463 }
464
465 .viewsInfo {
466 display: flex;
467 justify-content: space-between;
468 font-size: 12px;
469 color: #999;
470 margin-top: auto;
471 }
472
473 .level {
474 color: #666;
475 }
476
477 .taskFooter {
478 display: flex;
479 justify-content: space-between;
480 align-items: center;
481 padding-top: 12px;
482 border-top: 1px solid #f0f0f0;
483 margin-top: auto;
484 }
485
486 .taskTips {
487 font-size: 12px;
488 color: #999;
489 display: flex;
490 align-items: center;
491 }
492
493 .infoIcon {
494 margin-left: 4px;
495 color: #999;
496 cursor: pointer;
497
498 &:hover {
499 color: #1890ff;
500 }
501 }
502
503 .applyButton {
504 background-color: #a66ae4;
505 border-color: #a66ae4;
506
507 &:hover {
508 background-color: #73d13d;
509 border-color: #73d13d;
510 }
511 }
512
513 .loadMoreContainer {
514 text-align: center;
515 padding: 16px 0;
516
517 button {
518 color: #a66ae4;
519 font-size: 14px;
520
521 }
522 }
523
524 .loadingContainer {
525 display: flex;
526 justify-content: center;
527 margin-top: 32px;
528 margin-bottom: 16px;
529 }
530
531 .platformIconWrapper {
532 width: 24px;
533 height: 24px;
534 border-radius: 4px;
535 display: flex;
536 align-items: center;
537 justify-content: center;
538 cursor: pointer;
539 transition: all 0.3s;
540
541 &:hover {
542 transform: scale(1.1);
543 }
544 }
545
546 .platformIcon {
547 width: 16px;
548 height: 16px;
549 object-fit: contain;
550 }
551
552 // 响应式布局
553 @media (max-width: 1200px) {
554 .taskList {
555 :global {
556 .ant-list-item {
557 flex: 0 0 calc(50% - 16px);
558 max-width: 350px;
559 }
560 }
561 }
562 }
563
564 @media (max-width: 768px) {
565 .taskList {
566 padding: 12px;
567
568 :global {
569 .ant-list-item {
570 flex: 0 0 100%;
571 max-width: 350px;
572 }
573 }
574 }
575 }
576
577 .loadMoreTrigger {
578 height: 50px;
579 display: flex;
580 justify-content: center;
581 align-items: center;
582 margin-top: 16px;
583 }
584
585 .taskDetail {
586 padding: 16px;
587
588 .taskDetailHeader {
589 margin-bottom: 16px;
590 display: flex;
591 flex-direction: row;
592 gap: 12px;
593 }
594
595 .taskDescription {
596 max-height: 200px;
597 overflow-y: auto;
598 padding: 8px;
599 background-color: #f9f9f9;
600 border-radius: 4px;
601 }
602
603 .bannerContainer {
604 margin: 16px 0;
605 border-radius: 8px;
606 overflow: hidden;
607 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
608
609 .taskBanner {
610 :global {
611 .ant-carousel .slick-dots {
612 bottom: 16px;
613
614 li button {
615 background: rgba(255, 255, 255, 0.7);
616
617 &:hover {
618 background: #fff;
619 }
620 }
621
622 li.slick-active button {
623 background: #fff;
624 }
625 }
626
627 .ant-carousel .slick-prev,
628 .ant-carousel .slick-next {
629 z-index: 10;
630 width: 40px;
631 height: 40px;
632 background: rgba(0, 0, 0, 0.3);
633 border-radius: 50%;
634 display: flex;
635 align-items: center;
636 justify-content: center;
637
638 &:hover {
639 background: rgba(0, 0, 0, 0.5);
640 }
641
642 &:before {
643 display: none;
644 }
645 }
646 }
647 }
648
649 .bannerItem {
650 height: 300px;
651 display: flex;
652 align-items: center;
653 justify-content: center;
654 background: #f0f0f0;
655 }
656
657 .bannerImage {
658 width: 100%;
659 height: 100%;
660 object-fit: contain;
661 }
662 }
663 }
663 lines Plain Text