From c969677ef60a579942c2584da21dfdbeef69ed39 Mon Sep 17 00:00:00 2001 From: KQL Date: Thu, 11 Sep 2025 15:51:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD=E5=92=8C=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E6=8E=92=E5=90=8D=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复课程列表单元展开/收起功能 - 优化日历页面跳转到课程列表的延迟时间 - 恢复复合技能课和垂直技能课的分割线及收缩功能 - 添加班级排名第一二三名的特殊样式图标 - 修复Collapse组件onChange事件处理 - 优化课程自动选中和滚动定位功能 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .claude/settings.local.json | 3 +- src/assets/images/Rank/first_icon.png | Bin 4170 -> 3925 bytes src/assets/images/Rank/icon1.png | Bin 0 -> 12477 bytes src/assets/images/Rank/icon2.png | Bin 0 -> 13134 bytes src/assets/images/Rank/icon3.png | Bin 0 -> 13212 bytes src/assets/images/Rank/second_icon.png | Bin 3695 -> 4400 bytes src/assets/images/Rank/third_icon.png | Bin 3656 -> 4494 bytes src/components/ClassRank/index.jsx | 5 +- src/components/CourseList/index.css | 30 ++++ src/components/CourseList/index.jsx | 154 ++++++++++++++++-- src/components/PublicCourseList/index.css | 30 ++++ src/components/PublicCourseList/index.jsx | 122 +++++++++++++- .../components/EventDetailModal.jsx | 4 + src/pages/LivePage/index.jsx | 30 ++-- src/pages/PublicCourses/index.jsx | 26 +-- test-arco-collapse.html | 100 ++++++++++++ test-collapse-controlled.html | 88 ++++++++++ test-collapse.html | 54 ++++++ 18 files changed, 599 insertions(+), 47 deletions(-) create mode 100644 src/assets/images/Rank/icon1.png create mode 100644 src/assets/images/Rank/icon2.png create mode 100644 src/assets/images/Rank/icon3.png create mode 100644 test-arco-collapse.html create mode 100644 test-collapse-controlled.html create mode 100644 test-collapse.html diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 0b58d5a..0d04352 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -56,7 +56,8 @@ "Bash(xxd:*)", "Bash(kill:*)", "Bash(find:*)", - "Bash(pgrep:*)" + "Bash(pgrep:*)", + "Bash(npm start)" ], "deny": [], "ask": [] diff --git a/src/assets/images/Rank/first_icon.png b/src/assets/images/Rank/first_icon.png index 4f36b708c82f7b4bc8a455e4e7cc990e7f3a9551..aa9584d3a17eaa5e8b8a13698accb0e827b49f7d 100644 GIT binary patch delta 3877 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℘c9Il!1JJUz|aUJ*jk*rFxo~1=HTu-Q@3mr zltDdU<$7921=PNa=I~(l8YgsYS`culsYnK3)v{z7i2@Z`trP&z)}}6q<*fkQHs^pJ ztUhnjD@~>E>6R|6=(Y4E9n<9cE{FV`z!{Fg6_^mNf<({!>l1Mz=53A?Ak{uxd8X2v zh%T5zwNL4NC;k>+%kr9*PFafeHg20-5Xdj^SLR^qi9C2(^d+}zzHK!oDO>f$w7-?} z?G_BJz%-$w7;qpigo>lJ|EmLHgDWsy`I<5%dbBjLSX+{R1Zd<;EpYkNuPdX8>f4a3gI|hO=5@g!f2{(fnwHKS ztUo|z8VC2fi{Sbd^pz#qL=**&?lmIhX&?ee?ic+8r{MtfhmM@pkUv^A7;AdGJ1qL;%d(^e-f_HbajAoZR#`4qhC&n zlQIAmQA67jW*gXj87P@Ll>U@0wU7fTXb`4&6)TmD>4QV6(OghSgoG4@R{fRGARo=l z<1=5^X;g2{`@Zym22@ZncL%parV3aE@7wCPnb9G%`)R0l$(~76e1iX`EDXJ+;GY6% z0zY{iLgOL+&eM;=6`HOJP~y86R^miFR4|;qc)1SZK*4AVNcDe=sXTZkpkl!cC;;Lg z7B+3|0LFe-Zr+)5+737d^kv*e2Oe7y*;O!^u#j=LG{37O=(v58&RiFeLFH4r;273E zI#*UilC=yem~5Qo`eXooBb>@Vwpmps<}aoLx^gIW$2tcehbuT;CFX0KjypbeEY8Ox zjtNT;n!g3^P2^w<94c_Q2xbkKIv64cYR1*e7j-n0uLrU>BgiNChqfz5FSVrYP6{q) zQfj{vv~|>1$C*A*25TIk3t&6{FnH5H7#%&>ywJ1fQ;DB3bo*+7*BAwPL}h^0nX_C} z13#KA_34xNkDtDR_HMTm!c~@N@n3#6&dd>GS^%eQIFkoVbD`StQfkkfr}c&cSCw}sCBsth|<0f@Tf)<5Sbb*p4j)nu7Vz}UGTK=T8%1UL|F8%IF>$& zYSV&f?C0jnvm`?~j~DH?Av3)|-D7?E2K;FZ?i_(DJY995Y!W^BFa9WMoQFG^N5REW zR|OnZ%-p0#QHJ;EC3YG_JkV)O>Hfcopa=+`N_}foE1Xn@2 zDnZ#K`u4*M@$0B+LSag(G>+FMT~B$mHJHnr&N~&`P1uF$Usobg6j=Ob?&jYmfcjgf9T#>y8mSd@tzquGm{@)Ib23s`8G zZl;k#Wy;kWS+rwaj~5{AP1|NJQilK`w^gkR%w6@%V_%eC3{~{4bB)mp3vwD21gKzy z_FB-^D@xX@RcbMdP(@>%7KLN5G5HYw?&1)xqI6Y*Qc?!zdeoZfy+iYDEz_jXX08@! zD{atavK3k}P!Dt0nvglpF@C#!g0?AI`EW&W1q#5F^+=SJ@4NP?>O=VyN!9n_SOl7p z$QCWo+1XW+GE6cNW@(wjYfc63EAj9@#XFDT{l|~NRha%3Ud|E4*&Atk00000NkvXX Hu0mjfN52=K literal 0 HcmV?d00001 diff --git a/src/assets/images/Rank/icon2.png b/src/assets/images/Rank/icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..b15a4f793c5aef790a8b17fcfcf7174e60384fae GIT binary patch literal 13134 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/Rank/icon3.png b/src/assets/images/Rank/icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1f8375c0f02dcdd49ff2c2a3f14154ad1547d7 GIT binary patch literal 13212 zcmV;NGh@t&P)@~0drDELIAGL9O(c600d`2O+f$vv5yP*~;YhM9*#%I4 zq}Z`dLluNKVA*rm?IQrwBkgt=n`wv9!PdaW z5NI?|7@-z!|A~+Nk8yajyjkX1zJJ%h-AaH{G)Gf|gD`Q^w*NK(Z@}`pfiePb6ku)) zAdCcn_#HM9z!-$MO*9H|gVKNLlhQXX1QSRDx4!S+y)gy)W_e?lJ$L=`jyBOwAl9m= zP*Kk?0${vNIE6^#bF*QxH9!*>aBAVgrQu><>OzueRN;|MrLOr0dHdj z)@T&P2qBD7JAP-tfd`%gA5rARklJTLjQ?Ue4kiY0=uKe0S(kBnRpg>Hrh)URv3X+8ogts3>IoH+@XS?Fi2J8DMWz<%xLM1kBA% z{OqrPbpp<@^abU?dp~>^c@Z|F@#ht(1G!_t_>I^t5FykcE8iJl zxr1V@0(ZWAi=7Yh8)LDsCR@5JzjWEjb}QU^>pXyY^!}YAFgr8~1MRVa7C<{nbD-7A zpQW@?8yeqRAjg({(6KG0?3XS7d#D@ImXEf6ua9cGdfaL4=AKZ_X?Lw&E3B>)U6{~O zQM=1EIvbF>+-lkPRPO+EwyP~W2CQnSEz2AlO>T1=o7ZcXA6w9xn6FE@=S#o5BP!3% zpul26paRaOjxsUuu?_Eyl{}G%2P_sKLxC;VY3Gl}&!h2>$)v0Ch;eMSrsf8x$G2?1 zw`V`_rT_n#v37PbVPnMDXr$@UlvIiJk8(G_EKF$zH#QXpoOMV5m@N*sTda$+B3qqo zrMSQB$<}eCfU;bQh2hwjvbZNhi~0gH0kIVZJ|55A9M9UUoksv^Kc?oC24MQmeL^{g ze@6>$d+h`D1Y8lZpbfGOya-k;HJ89UMYac z&E5(4u`UCenkVB`EWC`Z=nkdspi};YOq5ME*ih?HX>-;PR&>m25-UR-kC(VJhA$8F z3t#qr`9JIk?HEI<-m!)jP&seSbleC<`b{WYL4mZL3e!AR#iJ{-3?!~FFrS*dYki3Q zI2LP|hzCxja12`m6YaUV$sufw7e_ z2~-O^n<+r8Pl%JjTQnjoOYXD{8V{-hQ#ze4fRkaM6POA{pxa~TSMb#-5T2T8mN_6;~e7z*8#AMurS{!6{DpRM~4ASP5AEViBoaE)+PZ zCQt)da*hsskuU!MOc(@L|hHs>R47^LInxqhQ2Hwlg>JEXbzQnR?s5N{? z6PyW(XD_2b9CB4Un7fQMm?b7{l8SU3rB^(*qEh;sG<{+qz^(b$ zgMajyyW%NZ4KM(e1t6nw6}r&8b+%lVytOPbqaAAlZOSaifV0>gf-C#naV!uMY@kUP zLIvj0Kihd*REoQz<|Htxk?}HMK=P=ADn%_P0Vq`fEa#f;m5n0p(sQOhRZ5c|Z|XkA zD+1LXgBmCqd_e1m%E*lcm{Ik|fV(d1f8}-PK9j%p%^kygF^`!jd|;#Hj9PV`www{% z&A=$oIe#F(Tfc-UJNuH{!WQBkKlShb=dQHp2N96b?cbRyYKLM##khN&Rnj19WoUpE z*gI(+&*sw^k&tXux{{2V>S$9pKzoNBp(A4JrVo7Te~srKQqpF@(9E8A`lx~ri2rBH z5Nf3gB?il*8JYqHZ`Ig+$d;RQAc>%|zN)->Zf(_x$SVLtpG^=8F8(()*T!4lbHmji zjyrb>vste}fzpTNM2CuR#(*}KG?&%8xpKT*PsbGiYU?Z4?qn@f5Bos@#`5t>RvOH} zBX>) z+Y(rjrQ=y1VoRwyPe9?l2C2(n+h8`)JH9fR5~3eZ^=?4A1RV_6rkpf&LYrkUw-B zIdFGW>@-k36Svc|5IW(hAY3h2Vq)%&u}nTfD4z5?Y0HvQmVF_VFA0p7u3ITggw~g= zz*sY+7 z>IA$}y#P|AV0jKVAaUQR=`(P8dIpPpvPQYlL6kO2>q3r)#eQd#Tnrc%ov#hIUK2Z@ z#!y7{!+19W`A==Aj(5J^>aER3`{X!R?mNt?wxwy%Ylsj;9)U!lq6~O8ccF~{*lurYHIynV(k;`$#P>?E) zv{x>1^7J&!wdY8s=M0mVs)!ar^~$6!=EQhH2Et+qa2m>_RgJ4&27z2WiKhPPmz>zy zva_BZsVCWDx#GiL*cpdrx9T5xwNQ&@v6ot&G&ooxN(5OD1ah`@QmmAAuW~7sAr$;< zltrzBuvy%C>&6XQX;p=Ypo%QZM}|NKX#pl%MgeI$hVp(Wf83TT9wlKE4bG(VHvHtk zY)Z+0!F^X{^orqP8U-excnZV@GyQ8*COmK@9B|iHIOMQITsM)Y4NNhTmhvy)AgNO^ zP1@YfzLgOQ%=BfF9$jC`HN-GG!|8q(eUTiw&;mGP#hTRFB1zuV zXDW!m=mng`FMG9@nsY&JsR&rK1kn#rImub6at5s)Sq8&HgMe7Gqydz}6p@s=w*`kQoEg223hB#tJX8b)WDO0-K6Ao35wCvUz3|1 zxJ_aYh@9+VIWs#4(`RN(7eoNgIR%l2p~XJU4N`OC$pk#&i|QyjA$Ad!b9|3d&7e?wpE=lUw77$GA>1I0^7dFVN`?i8nyttcte3a;;^MOew&un;AwD zRzeBj$Xr*61J|xvuA=kxqe?->*J2ZHjEfIyb4R>zz`46v@sPQCSlm?sTP^|ys)m)_ znxNLwc^}RKTjIJ>_>wHKVYcSF$$G|xUf(sLL*a8JU=hCH*Mv;bbYtTON!ZO)>-Fzyr=f;7wyfT`3|-F+`nK5*Lr`Jg%L=PgbAERr>Eh ztYBmun>%9@0A@r>-N>;dXw0Yha?>$(J#t-@RtGf*F$pA2Gn+6m3GyG2_9-2A zW_A{4XWJTQ32LaSpCiC7YEmxcd_K|8pe-e7UI9Rz1vT#MC=;{O)7zm>Y4!Ut0&`ca z{LVZ`V#lgDp!BOGd4$AS;Y-t$xy{=05wcQ{)IfnvLwInT)@N37PCzP4mn^EN8g#s(WwBvyQDG>Hjx6VgyJtgN=6X@95ejFhrWOeLW{ZU{0HL(WQbs-A#Z z%;Gi6Mw$f$wWWS2JGj2mVg@vtvI3g9N!yl) zBJeHtuC9rn$6R7%#Sc~n1;D{WEl3Q*=Gr{Cz`r(!I1d%aA3O!^j6<3DVDDEvw3g^O zV)@^^F?EaG1$>9%!BgE5JI&G;l&Ngo@>>bjyFqBY=xW2KmMkLaJ~p4SkH;R(1Y6g< z-4UXcU06A6wbPb+xnkMks=d_JIMu!2v${e#vSCcxTz>+P{IX{<#pvol%RdqEC z#IYTD*l`C+BC1>`kYytkK>)@x+B2~F*$9D}5u4;OTTlTK95G2_Q*2qjqfg#}(+V_O z%Hv2rjuD15yG-nsvZ|wqUj@g>LULi2UJYpb+1x$ys-P^j4Q!*da8~Nh|Ef{71~bW_ zd{jQBLv3|UJhxmOghWD%i!WrGa8K$K^jTcj%iJ(rZn7? zO0Y^$lEhaCrZZ#`1$3=YgNUa8lBLuPuS+=cnB@xZ_`s*Wx(m*tAe?2{f6ph=&B^yi zQI8a1*nMaXpcJc2$~eyYkt$4H=9K+FQbyqVs(_!BtO%x@Q`I+i?I!C?gKJET0DdC4 zxthnNflZcV3$6helxm3u59|s8Iq*5_Eo`icQ*h!|wD!Y*Y)wPzkyUeFBo?PAaFSpeepsVaU)nh|Gz5zmEsS%^L#*QB4L4+{-(7#204I?a8i<{_TDN+IKaRYC(mJ&N&Bf`a zhk9QxiF%Z=3sv39@&MX{tY7zj;8S1O0%utU&-TDgTYh`|sk=XMM{L>e7FP>_^Mss# z%_9V*$tu z_X|wRfOOW1)NrY(%NM`zpZ?>UaY0N>381+5xzp3rGx+@(w6ndfEGXEGbBRLa)U#Y-?vHLY4Xg6r3< z2J>111Igw|<)(t!=rTSv@hrUb(qTAq>^Ph{bsBn=C5soq+BK{2(hck3()H`K{nQwb z`qN_3?)#zRGj|Zo>&V*(?nVgdSLL$v$>v?K*%EhLgsifz<;P|)@>#1*eG@y)a@I^K zW#2dcg&qQ^y zVt?>TIq=dU_^)?;1I}kz7{Pe^$9~DTC--uCdKSO^-3Q^3AMS(smTRxs1UKJwePK|w z;$|uIE}gjRkH7t0n0V#@oJ(1{WHDT_ZVg03K#LbI62OC~zA(%;|MUSkI&~c8TM|Hj z>L0xu7DWavb(=2OHt2WNwGIH2v1$B&{hAdDPMO~|@4{mFGSySp!?Ct{Lr_#3y_+mr z2^9{wl2&VKU@qJ=-=`3qT}F*fOw&rVYQM4V{bAxI3U6z{b}) zMfywe_!+!9?NB9a>Oug1ko+%ZDXY)=7=jmGJPhZ%TyfbYsuaM!)HBb&h`;~kyUz)b zsXYF~e)!VY?t{IL{=FJNk+CfBkofV;%q*O1IT;ym-~MOd8~6Pw=4<&OVj!er&IORE zoI3pq{MiG41yjdPfOj2hSJVFF>bB1Vg_ID410^FYdc^g~5=qdgm4q}{$#QChct6>E zH0x{5p-78_!nt`!?VacHSde*xGL@KW-V)nAY4`16k083h%qAO96FVf6Zk#}fO+gW} zB#MAtF#r*u%`|Z(T}!Y1e#H+_mt!5sAKSMd&Ud*of)X@AO7O_zPvKYZ`IDY*>U_#~ z{$>w6xaUzIjZIm7f~;C0I&$RvJe+OsBYz)_!P6P(WwlKSOO8$*gV$1$>-#rap#(L22i z!UUGkDWWQCB1s$&wT^!26+xBh>MTuHwS2b~3N~=kf3dnM{>w5dSz7(J$jaJ`3zt zue=vg+vbv%IDk6<&JCF71j-1=9ei=7_3~sh5*L*$eq^ph6$Gcyi=WONl02W_=MKIIfBv1n z?Fr7rhCg`h3HY%a-y!|O5>NKN-dnHQ2=95<^_<|7PG=P|JV&MvSK*^c$NccOa3Q;^DqAD!5l|+E2mFSJCKje>}q74GU-#!L*=TX3iQYipMoc!einL_1jvv4+&`hqHmp;Y zOYPunAzZd$E&YoR|1_*wy|QN=4?q5-W09h&hmQ1Sy|h%3K>8|?62X$VfAde=4C`ao zwOdI*JQ;zT`ZY8-2-m&+t*~;%G9qOz8v&n)Sri%c?blr0vputOvmk8%a`Ca$1yHl6 zj#bbD3@Cz0Vu#54tbVy40J)W1UZY6k0Fe7Gk#*VDW-}LgeI8u2@OC(dGH*~umfRda zM$5_+SvOcOO|s6ov<7K74E#VFVxsqtPSp7>CM6<|EM*?FR2kF>oV=fEm$eC6zfW3J zSv^-#1?>3m!Iyf+n#pA=r`4-u#C6zx(L7&+}6jgU%R^JxhEpqiN}qJ^9*1LP+>?1*s=$0n?HjXa#^b4m20)3UPQ%`Sc#AOTwD#Vk$Shb0w+|* zD?1nqf=@1xJ5L7TOdq#%!SHbLHr;YS62**4pJK^p54_m({P(`=ov=L4H@bFM9@-Q# z1K`q2)?)nYS=XVMX)VlOWH!?$$ul@Km7ehSGPt{kCMS{-?5ieuR8O=5H+UqMtys~usRDA^m^ywEdX;r+R&pKrqSX?-wC~A2puB416?}=( ze>Mheyv6d8nXFh=uUdi7r$|_kSh5#WM%NX}ayerI2cVqn=@mn#vSRu2stviH5p*%k z0no$;=Ixo8x$IV_^{~B4ic8a~o+3kZ#%O$} z#Xd|K6Fr>2gq+_4f2VxxlrRR&z!mi`Sj z@N8HeFgsm05{~nx7bPiEz(Z6$pOe&=3#$vP0`CV6-@c?U{736N+8 zdU*+{EMvDam45ML%AoFj4h{;y zfj^x=bb(ASFQ(d7^-yJ0eW}R-YZFIQd0BO#e3Ns&7O#}zLDBj>`*K^;ms{@pd}PaC zKRdQOD^M~^ZY|B?1q;M@48=_oAW|g*@pD5BAZ!Z8va@xkioGdoI0fVtM~EQYfH8)< z4VIU^dB$@^o>XIJ1_IS8>kZPL z%K=ZE?7fg+I3}Hn!$NT6$W&JYmdeqi$MWBNOJd25S6)^c;~rXk^7Je7V#rjE961Wl zJ%12JqYKYrZ4Y27N3nW&gPj9B#skFomDm4bWSqzx`$=#Yd)-Rr1Wdu*eZwV%eV}PJ{SynQxDD4AqnM!WD zu&0EX(JNM@MizQ+;+2PQBUoOFe15E0nRYXIeuj=#$u2{aTEDUhAIJwAaP3!TPBs={| zZ};}eeG{qO>HbZq+|q^@BOf;Y=A8M}T43QGNVZ1bLsC~*LIQAOl~uvgKimM+t*q!R zU9E-H2xGkzFLNJ_@M40U@G9k1LAmelPj00kuS2)Fov%aLz`Wiwi4b(|Qr zpME)>dcV?5eVDIaMO2l=hETh%T>weOKK#b04ofV9#1>VOEqYO@H)bJwGS1pHt3b`N zxk9#Lq)$mp;7Fg+pzTI=XgQ87br-{x*1`63U)Qf+Ez+h4-q*~OsedW%TboxBsYx_f zkX^kPSHtR+D*+tgfawlB^W4G2ir6ay``m#SVC6_zhilq}6(g2!R3F2I$VSvn^JlPC zVU*mUE!kK_q?5lHR^?fH%qOXv$6YN|xj7S^6(PCXA0xS)2T;bId|Z^AYqohag9*4t zK$x7!22LBwOpyKfJdcGHJ5UwGxgI-)A~#vt1f+@30I3F%Jny)3-C*ly@jPApP!^K+ zDl+MB#-*OJ8RiAz-O7m*r&xXcjc<;wIhpNDM^xP^)Vb>O1g1bRv|g< zEA5Th&_&TrT^gq+)~;Ed78scPN@kcGi}4tnEO{IKD*@ASS6p@pCANH`$E|Tkj!rqF z3eMs>P3QthzaJWHuzfmnP>(s|-SQdArA73C?@9%7bvrgBYM1~}ca~jaHoCOp|NiG+ zyzN7u_)6D@FiYtR$|t}6iOun2%q$d{Rpb}Kh~klJEEo-P>qNm>Fq(MpVBrB)3|UmiT;}pG>L7y$Fxj90c{5yCo-K$Re(ZQ}W?Hd)iC9GCar>2M*|H@) z*(xm}KYrpArj;yWm8nRI{GHoX$#OK()gV4JyTN|jRZ^fS6 zNl$ApDeZP|99&U@4pBTdA5#$&H`#UIj5qua2JTh6p$)B8XE2iaK%|C)fH zt4PEUs0%6aVmg?g*G9&sh(RZVL%y3uGjb);rDG?0CwkH|bGWbN;=vYDCXZmj@F4YF zME=;5VC>3r1Y7nbl1@K8^zh?x%A$|!x^A@^xPH&b85vn2W5n*LqQD)+CRd(8D{+-R zi&g+>u4?da>Q?#sLeReuyYccs>7d(XxGmv{{+0(26!^xc=i}fPA-^Ao#>+VdBqngI z>~o_r7B9*Z`cPYv0SDz#l;sckfLixe=Lt5a=@IBtdNO621_|xCt)*_hbp=beft6e2 z!omT4c$N?J>$Y8eZ+-Eg1L4i` zv^X@fCAIeAggd{R6DYn8 z*b}hn$_;eM`gJ^rSl_|G@=AbAD`t9?t2bQ%OBXK&PQKvbKFOdZWl^}jR}sm*dE4}l z9CO(xJKNkq)eCjpIMJszoIu{Q6{kOXviGvI?v*0|f1j?j&0I{;B}7|1hujYUk=lFz z_3z)=yvClpZXY>0eKI|rafDhh77yPTTR9qQ9gUseNB~-oy%*E22n}Yey*lzoS1hTA zw=!Gqh90FSC_`xP5Q|czBQ+P;arMF^D!~BWcR*&rFcJ5R$DiVaS$jMR@>smU_|VXj ziJP|F`I??lp^BR?r><2M8<;DL?s!u!@(l*?L@N}G$NJn{oaPzT1K=Ek1C+XNH@xE- z{N6*4^sMLq{P6?$zIWdUH(dKx5ayDmCl_~51mvqd%jc%+->xi>T7U9Y+*hK?s%IIZ zKBW%8o=(oPA_hRYt0Z|7@V$rj!iIJ0X#M&%m{<6Se*lF-5*h=u$Np!Y$LIPypPu_!aVb&Pm28PwZ|irjWlvDXS~inUbRaW|St+$-@t;Y;R*cZYIJPhWa5Bu$ zM65o6ZUTOUMFAvB)2Y}8w$lZmWps4fraUlJ-rY!QV$9uE*m6G+kM&vex_rq}kT^uH zZ**d;nWjx{xb7Nw_|YeN*7es9?uCc;K9;8imM$$%e?NKhbh#DlRmzRmy$#Bf=87|! zuG!ChO}9v;1{Ver(-Jsa{B?Kpw|jo?wvi>Xi$~{L zky)t~nH4uChK(1C+q5wrG9qm+{}{Xa#O&~rg^4Zi=yv_CpxpnzKlRZ#Qlnz}qfLy6 z#)&v9Gd>rSkm-;ptjTzh@r4U zI)S*(N2iYWWXh2hOO1IXZsf*``z%2~1wQl_aHUk=CZ!*CSNrKCB~g$v8entU>j zZEBACi@VAWnj2ZCTj)eJq65wgH$MhoO;)tGDcY{XqBXg+xL8axeagZ9ZUS@R_~j z-5My*B@<4QBY?lfU2)>O=K$yFkQ~R_lWq0-&Xr6`l48#f{mka*s_yPP&p4lQ_2`xG z<73xBb`k+3B1{X1drpUxcv4*i0GBlvo)q^Rl#v7=fh9$7`0%*_uvr!@TnN{^q-lm1!D`j7l$9j%Sm9wmk;$;zUBNX0rKw#aWR;J zlN*`l2S51Jx4?aW^1y2bW^!3?y#5;QM{&wUNsshl$;Gh^-d$(KH*=PR*8-~F4xOD{ z5ROWRG@0^TN?I&%!#m#rgM$Ova)CvM{t-;50R?yi;oDXwz{_`dLl%Ax>_op~&gsEf zZ=_NymV~%K?jXrW^jx1!n>NCgmtRUGvMW_LJRV_4^zmbbN|)G?eD@m^makqe0#Is< z1Hw(AitCs+$vLkckoLdJcBX>h=I-*N9^+i3MXhegmn~U>n&ah!m>eXowXlm=e9kf9 z^>2R*q`xPgnuPt&9>{lW^aALT$Zi`i-;f^aOzYOJ*7()Z_Liba)ejF1;iiq3L)Bz% zcU~6AX)sIXc+Z2(vk=E#WLlhb8XO$Nv3Fie*Ic~`(>!C096)54G4Ikz+fzHYs1yOpvvpub)Vnz(zkvi2XYk=a*~5BZ)J5m zKY^!G9B7EVTWtF|aVy(hj{$QBtuPS>^6jjy;rV=eW)^2>X6VGpS8#Y}fQE*KacFoD zh6furBs)`7F&d$NgEL}D}q?j%N3?c}AYDtfgOVo*=v?r}QO%JPD zyg0{wj`jW7l4)!h1Cav=qp@plcbI~#fze5CMHCpA&9%Vlx_KMDcOrct13kfl1q;$2 z>TtL?8(iJi58*k1DK?%s}6_Ei>Lj#FjS z`AXn@{tg#CUzCW1eaf#v-Clc~BB0zPD-CfkT_fS7AaN_8)tcjsGMFl+ao3}g9Gy}zzPrwCOE__fD?d8xY$93{1WYz%;_NWH(@l$!H z2QLHD*P9u;b;8FOftI6M55NUjE_hI;7paH>h5)TUIbQe-uv{VT^3SS|Hif|Uz(N{3&FWZ*#0K-w2`*FoBw zw}K^u)aWROp*>WW7;{(!I9a{bR8f zqR|9c&XDRvkoyrmYc$*EuAu~4frD98j^Hloo5IAn$ZOC^+Y8`tNh+r_o-;#r0;u`~ zYar<(F6DTOokR0g?~eO|J|KPi&_@rO( zqdAZ(8XJQGsq^lQ{I)2IX-m&Eh9z!`S^yBc^g!UK4Smh<69c6biUXa!3;lr2FmmEb*i~Z23>yA#DOvCAXm7Oa!~g0!XUU zEI#cbSFnzGa5y$2f?7(@XruL2hZtvOKL)SSi#rX_lNG3|s#hUN$Owb0<3RmzTC4V=FOZEUy zndHj71IzOJ+?L zAh=_k0+WjkE5%kIE8vt^8t00lRu2Rwg@l?0yNTPig^ZqTzc`e-#?XupRA2W7c@IJlS(pmGCC;rYRaLIXI4b?UB1sar-04u&^q z?#ZqQ${fIJHMI?TkOEX{mxbbPKWNSTMlK$Enit%X1|IYYPbU`q?cF<{px9axk|utCz&GK{LDL zIMxh_fnJg`?ikr$O|~=6+2sVPBqSb%_ErpwzoK(-nZ1SO3NwStl-fL_fy_PRDsKwt zZPC7f&)?}$jT8T-o5$jqZjXtbZE%s4i_U%ZB|rQtw0FcY-I}&*#xSM=3HCtTBYP4X z$kFOHlClz??pD{Bn^)%SG^I*GZ}YTtj5iE6Rl)GkC+Yb%@w}gleFZYUp;WuJzWwYR zu;GBZ-DQz^36k{@A)2|BX;8U#Szzp9Rk;=j>j^_zBZTqf7-PHU^hQ3h;mZ1@ucczz z4FiMQwv>AmFPd^ugHp==uiQS`9vavI0X9d~9?d&dnMC8rwgD^fN>L#5MpkA`T8RI~ z^~yo+4O&8EX8*f^hQUE(F`hFYV6G!7Nc^>+UV2W|(+5$nMXs&Y^~sD=K@sTjVoAsv zI O0000$ literal 0 HcmV?d00001 diff --git a/src/assets/images/Rank/second_icon.png b/src/assets/images/Rank/second_icon.png index 8c7c3d003d7ebb40783f0062d698d61a4f9db5ff..d05bd5106e505ffc523f59528a959d43d93abf0b 100644 GIT binary patch delta 4355 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 delta 3645 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 diff --git a/src/components/ClassRank/index.jsx b/src/components/ClassRank/index.jsx index 39f2e40..a228121 100644 --- a/src/components/ClassRank/index.jsx +++ b/src/components/ClassRank/index.jsx @@ -19,10 +19,9 @@ const Rank = ({ className, data, loading }) => { return (
-

- icon +

- 班级排名 + 班级排名

{loading ? ( diff --git a/src/components/CourseList/index.css b/src/components/CourseList/index.css index 44a2023..bc12dca 100644 --- a/src/components/CourseList/index.css +++ b/src/components/CourseList/index.css @@ -416,4 +416,34 @@ display: block !important; -webkit-line-clamp: unset !important; -webkit-box-orient: unset !important; +} + +/* 高亮动画效果 */ +@keyframes highlightPulse { + 0% { + background-color: transparent; + box-shadow: none; + } + 25% { + background-color: rgba(102, 126, 234, 0.1); + box-shadow: 0 0 10px rgba(102, 126, 234, 0.3); + } + 50% { + background-color: rgba(102, 126, 234, 0.2); + box-shadow: 0 0 15px rgba(102, 126, 234, 0.4); + } + 75% { + background-color: rgba(102, 126, 234, 0.1); + box-shadow: 0 0 10px rgba(102, 126, 234, 0.3); + } + 100% { + background-color: transparent; + box-shadow: none; + } +} + +.highlight-animation { + animation: highlightPulse 2s ease-in-out; + border-radius: 4px; + transition: all 0.3s ease; } \ No newline at end of file diff --git a/src/components/CourseList/index.jsx b/src/components/CourseList/index.jsx index d206b2e..7c73aa4 100644 --- a/src/components/CourseList/index.jsx +++ b/src/components/CourseList/index.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, forwardRef, useImperativeHandle } from "react"; import { Collapse, Timeline, Spin } from "@arco-design/web-react"; import { IconDown, IconRight } from "@arco-design/web-react/icon"; import { getCourseLiveList } from "@/services/courseLive"; @@ -7,11 +7,17 @@ import "./index.css"; const TimelineItem = Timeline.Item; const CollapseItem = Collapse.Item; -const CourseList = ({ className = "", onCourseClick }) => { +const CourseList = forwardRef(({ className = "", onCourseClick }, ref) => { const [compoundCourseList, setCompoundCourseList] = useState([]); const [verticalCourseList, setVerticalCourseList] = useState([]); const [loading, setLoading] = useState(false); const [selectedCourseId, setSelectedCourseId] = useState(null); + const [activeKeys, setActiveKeys] = useState([]); // 控制展开的单元 + + // 调试 activeKeys 变化 + useEffect(() => { + console.log('CourseList - activeKeys changed:', activeKeys); + }, [activeKeys]); // 控制各分类的展开/收缩状态,默认全部展开 const [categoryExpanded, setCategoryExpanded] = useState({ @@ -19,6 +25,101 @@ const CourseList = ({ className = "", onCourseClick }) => { 'vertical': true // 垂直提升课 }); + // 暴露方法给父组件调用 + useImperativeHandle(ref, () => ({ + selectCourse: (courseId, courseName) => { + console.log('CourseList - selectCourse called:', courseId, courseName); + console.log('CourseList - compoundCourseList:', compoundCourseList); + console.log('CourseList - verticalCourseList:', verticalCourseList); + + // 在两个列表中查找课程 + const allLists = [ + { list: compoundCourseList, type: 'compound' }, + { list: verticalCourseList, type: 'vertical' } + ]; + + for (const { list, type } of allLists) { + for (let i = 0; i < list.length; i++) { + const unit = list[i]; + console.log(`Checking ${type} unit ${i}:`, unit.unitName, 'courses:', unit.courses?.length); + + if (!unit.courses) { + console.log(`Unit ${unit.unitName} has no courses`); + continue; + } + + const course = unit.courses.find(c => { + const matches = c.courseId === courseId || c.courseName === courseName; + if (matches) { + console.log('Found matching course:', c); + } + return matches; + }); + + if (course) { + console.log('CourseList - Found course:', course.courseName, 'in', type, 'list'); + + // 展开对应的单元 + // 计算正确的 activeKey + let activeKey; + if (type === 'compound') { + activeKey = String(i + 1); + } else { + // 垂直课程使用特定的前缀 + activeKey = `vertical-${i + 1}`; + } + + // 如果单元未展开,则添加到 activeKeys 中 + setActiveKeys(prevKeys => { + if (!prevKeys.includes(activeKey)) { + console.log('Adding activeKey:', activeKey, 'to existing keys:', prevKeys); + return [...prevKeys, activeKey]; + } + return prevKeys; + }); + + // 设置选中的课程 + console.log('Setting selectedCourseId to:', course.courseId); + setSelectedCourseId(course.courseId); + + // 触发点击事件 + if (onCourseClick) { + console.log('Triggering onCourseClick with course:', course); + onCourseClick({ + ...course, + unitName: unit.unitName, + unitPoster: unit.unitPoster + }); + } + + // 滚动到对应的课程位置 + // 需要等待折叠面板展开动画完成 + setTimeout(() => { + // 找到对应的课程元素并滚动到视图中 + const courseElements = document.querySelectorAll('.time-line-item'); + courseElements.forEach(element => { + const courseText = element.querySelector('p')?.textContent; + if (courseText === course.courseName) { + console.log('Scrolling to course element in CourseList'); + element.scrollIntoView({ behavior: 'smooth', block: 'center' }); + // 添加高亮效果 + element.classList.add('highlight-animation'); + setTimeout(() => { + element.classList.remove('highlight-animation'); + }, 2000); + } + }); + }, 300); // 等待折叠面板展开 + + return; // 找到后退出 + } + } + } + + console.log('Course not found in any list:', courseId, courseName); + } + }), [compoundCourseList, verticalCourseList, onCourseClick]); + useEffect(() => { fetchCourseList(); }, []); @@ -132,11 +233,40 @@ const CourseList = ({ className = "", onCourseClick }) => {

课程列表

{ + console.log('Collapse onChange received:', keys, 'type:', typeof keys); + + // Arco Collapse 在受控模式下,当点击时: + // - 如果是字符串,表示点击了某个面板,需要切换它的展开/收起状态 + // - 如果是数组,表示新的展开状态 + if (typeof keys === 'string') { + // 切换单个面板的展开/收起状态 + setActiveKeys(prevKeys => { + const keyStr = String(keys); + const newKeys = [...prevKeys]; + const index = newKeys.indexOf(keyStr); + if (index > -1) { + // 如果已展开,则收起 + newKeys.splice(index, 1); + } else { + // 如果已收起,则展开 + newKeys.push(keyStr); + } + console.log('Toggling key:', keyStr, 'New activeKeys:', newKeys); + return newKeys; + }); + } else if (Array.isArray(keys)) { + // 直接设置新的展开状态 + setActiveKeys(keys); + } else { + // 处理 undefined/null 的情况 + setActiveKeys([]); + } + }} > {/* 复合能力课分割线 */} {compoundCourseList.length > 0 && ( @@ -145,15 +275,13 @@ const CourseList = ({ className = "", onCourseClick }) => { onClick={() => setCategoryExpanded(prev => ({ ...prev, compound: !prev.compound }))} > - - 复合能力课 - + 复合技能课
)} {/* 复合能力课部分 */} -
+
{compoundCourseList.map((unit, index) => ( { ))} - ))} + ))}
{/* 垂直能力课分割线 */} @@ -205,15 +333,13 @@ const CourseList = ({ className = "", onCourseClick }) => { onClick={() => setCategoryExpanded(prev => ({ ...prev, vertical: !prev.vertical }))} > - - 垂直能力课 - + 垂直技能课
)} {/* 垂直能力课部分 */} -
+
{verticalCourseList.map((unit, index) => { // 检查单元是否包含可试看课程 const hasPreviewCourse = unit.courses.some(course => course.canPreview); @@ -299,6 +425,6 @@ const CourseList = ({ className = "", onCourseClick }) => {
); -}; +}); export default CourseList; diff --git a/src/components/PublicCourseList/index.css b/src/components/PublicCourseList/index.css index b225e64..cbed9bc 100644 --- a/src/components/PublicCourseList/index.css +++ b/src/components/PublicCourseList/index.css @@ -411,4 +411,34 @@ display: block !important; -webkit-line-clamp: unset !important; -webkit-box-orient: unset !important; +} + +/* 高亮动画效果 */ +@keyframes highlightPulse { + 0% { + background-color: transparent; + box-shadow: none; + } + 25% { + background-color: rgba(102, 126, 234, 0.1); + box-shadow: 0 0 10px rgba(102, 126, 234, 0.3); + } + 50% { + background-color: rgba(102, 126, 234, 0.2); + box-shadow: 0 0 15px rgba(102, 126, 234, 0.4); + } + 75% { + background-color: rgba(102, 126, 234, 0.1); + box-shadow: 0 0 10px rgba(102, 126, 234, 0.3); + } + 100% { + background-color: transparent; + box-shadow: none; + } +} + +.highlight-animation { + animation: highlightPulse 2s ease-in-out; + border-radius: 4px; + transition: all 0.3s ease; } \ No newline at end of file diff --git a/src/components/PublicCourseList/index.jsx b/src/components/PublicCourseList/index.jsx index b25fda1..1bb526b 100644 --- a/src/components/PublicCourseList/index.jsx +++ b/src/components/PublicCourseList/index.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, forwardRef, useImperativeHandle } from "react"; import { Collapse, Timeline, Spin } from "@arco-design/web-react"; import { IconDown, IconRight } from "@arco-design/web-react/icon"; import { getPublicCourseLiveList } from "@/services/courseLive"; @@ -9,10 +9,11 @@ import "./index.css"; const TimelineItem = Timeline.Item; const CollapseItem = Collapse.Item; -const PublicCourseList = ({ className = "", onCourseClick }) => { +const PublicCourseList = forwardRef(({ className = "", onCourseClick }, ref) => { const [courseLiveList, setCourseLiveList] = useState([]); const [loading, setLoading] = useState(false); const [selectedCourseId, setSelectedCourseId] = useState(null); + const [activeKeys, setActiveKeys] = useState([]); // 控制各分类的展开/收缩状态,默认全部展开 const [categoryExpanded, setCategoryExpanded] = useState({ @@ -25,6 +26,88 @@ const PublicCourseList = ({ className = "", onCourseClick }) => { fetchCourseList(); }, []); + // 暴露方法给父组件调用 + useImperativeHandle(ref, () => ({ + selectCourse: (courseId, courseName) => { + console.log('PublicCourseList - selectCourse called:', courseId, courseName); + console.log('PublicCourseList - Current courseLiveList:', courseLiveList); + + // 查找课程并触发点击 + for (let i = 0; i < courseLiveList.length; i++) { + const unit = courseLiveList[i]; + console.log(`Checking unit ${i}:`, unit.unitName, 'courses:', unit.courses?.length); + + if (!unit.courses) { + console.log(`Unit ${unit.unitName} has no courses`); + continue; + } + + const courseIndex = unit.courses.findIndex(c => { + const matches = c.courseId === courseId || c.courseName === courseName; + if (matches) { + console.log('Found matching course:', c); + } + return matches; + }); + + if (courseIndex !== -1) { + const course = unit.courses[courseIndex]; + + // 展开对应的单元 - 使用正确的索引 + const activeKey = String(i + 1); + + // 如果单元未展开,则添加到 activeKeys 中 + setActiveKeys(prevKeys => { + if (!prevKeys.includes(activeKey)) { + console.log('Adding activeKey:', activeKey, 'to existing keys:', prevKeys); + return [...prevKeys, activeKey]; + } + return prevKeys; + }); + + // 设置选中的课程 + console.log('Setting selectedCourseId to:', course.courseId); + setSelectedCourseId(course.courseId); + + // 触发点击事件 + if (onCourseClick) { + console.log('Triggering onCourseClick with course:', course); + onCourseClick({ + ...course, + unitName: unit.unitName, + unitPoster: unit.unitPoster || "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/public_bg/recuW7gMz6sRee.jpg" + }); + } + + // 滚动到对应的单元和课程位置 + // 需要等待折叠面板展开动画完成 + setTimeout(() => { + const unitElement = document.querySelector(`.course-list-item:nth-child(${i + 1})`); + if (unitElement) { + console.log('Scrolling to unit element'); + unitElement.scrollIntoView({ behavior: 'smooth', block: 'center' }); + } + + // 查找并滚动到具体课程 + const courseElements = document.querySelectorAll('.time-line-item'); + courseElements.forEach(element => { + const courseText = element.querySelector('p')?.textContent; + if (courseText === course.courseName) { + console.log('Scrolling to course element'); + element.scrollIntoView({ behavior: 'smooth', block: 'center' }); + } + }); + }, 300); // 等待折叠面板展开 + + console.log('Course found and selected:', course.courseName); + return; // 找到后退出 + } + } + + console.log('Course not found:', courseId, courseName); + } + }), [courseLiveList, onCourseClick]); + const fetchCourseList = async () => { setLoading(true); try { @@ -92,11 +175,40 @@ const PublicCourseList = ({ className = "", onCourseClick }) => {

公共课程列表

{ + console.log('PublicCourseList Collapse onChange received:', keys, 'type:', typeof keys); + + // Arco Collapse 在受控模式下,当点击时: + // - 如果是字符串,表示点击了某个面板,需要切换它的展开/收起状态 + // - 如果是数组,表示新的展开状态 + if (typeof keys === 'string') { + // 切换单个面板的展开/收起状态 + setActiveKeys(prevKeys => { + const keyStr = String(keys); + const newKeys = [...prevKeys]; + const index = newKeys.indexOf(keyStr); + if (index > -1) { + // 如果已展开,则收起 + newKeys.splice(index, 1); + } else { + // 如果已收起,则展开 + newKeys.push(keyStr); + } + console.log('Toggling key:', keyStr, 'New activeKeys:', newKeys); + return newKeys; + }); + } else if (Array.isArray(keys)) { + // 直接设置新的展开状态 + setActiveKeys(keys); + } else { + // 处理 undefined/null 的情况 + setActiveKeys([]); + } + }} > {courseLiveList.map((unit, index) => { // 判断当前单元属于哪个分类 @@ -239,6 +351,6 @@ const PublicCourseList = ({ className = "", onCourseClick }) => {
); -}; +}); export default PublicCourseList; \ No newline at end of file diff --git a/src/pages/CalendarPage/components/EventDetailModal.jsx b/src/pages/CalendarPage/components/EventDetailModal.jsx index 12fbf63..b90913d 100644 --- a/src/pages/CalendarPage/components/EventDetailModal.jsx +++ b/src/pages/CalendarPage/components/EventDetailModal.jsx @@ -110,6 +110,8 @@ const EventDetailModal = ({ isOpen, event, onClose }) => { // 处理课程点击 - 跳转到对应的课程页面 const handleCourseClick = (eventItem) => { + console.log('EventDetailModal - Clicked event:', eventItem); + // 构建URL参数 const params = new URLSearchParams(); if (eventItem.id) { @@ -119,6 +121,8 @@ const EventDetailModal = ({ isOpen, event, onClose }) => { params.append('courseTitle', eventItem.title); } + console.log('EventDetailModal - Navigate params:', params.toString()); + // 根据课程类型跳转到不同页面 switch(eventItem.type) { case 'compound-skill': diff --git a/src/pages/LivePage/index.jsx b/src/pages/LivePage/index.jsx index 3263c0a..6e58245 100644 --- a/src/pages/LivePage/index.jsx +++ b/src/pages/LivePage/index.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { useSearchParams } from "react-router-dom"; import CoursesVideoPlayer from "@/components/CoursesVideoPlayer"; import CourseList from "@/components/CourseList"; @@ -8,26 +8,25 @@ import "./index.css"; const LivePage = () => { const [selectedCourse, setSelectedCourse] = useState(null); const [searchParams] = useSearchParams(); + const courseListRef = useRef(null); // 检查URL参数,如果有courseId或courseTitle则自动打开对应课程 useEffect(() => { const courseId = searchParams.get('courseId'); const courseTitle = searchParams.get('courseTitle'); + console.log('LivePage - URL params:', { courseId, courseTitle }); + if (courseId || courseTitle) { - // 查找对应的课程 - const allCourses = [ - ...(mockData.compoundSkillCourses || []), - ...(mockData.verticalSkillCourses || []) - ]; + // 需要给组件时间加载数据 + const timer = setTimeout(() => { + if (courseListRef.current) { + console.log('LivePage - Calling selectCourse via ref'); + courseListRef.current.selectCourse(courseId, courseTitle); + } + }, 500); // 等待数据加载 - const targetCourse = allCourses.find(course => - course.id === courseId || course.title === courseTitle - ); - - if (targetCourse) { - setSelectedCourse(targetCourse); - } + return () => clearTimeout(timer); } }, [searchParams]); @@ -39,7 +38,10 @@ const LivePage = () => {
- +
); diff --git a/src/pages/PublicCourses/index.jsx b/src/pages/PublicCourses/index.jsx index 7bafff8..5dd5781 100644 --- a/src/pages/PublicCourses/index.jsx +++ b/src/pages/PublicCourses/index.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { useSearchParams } from "react-router-dom"; import CoursesVideoPlayer from "@/components/CoursesVideoPlayer"; import PublicCourseList from "@/components/PublicCourseList"; @@ -9,22 +9,25 @@ const PublicCourses = () => { // 默认不选中任何课程,显示黑屏状态 const [selectedCourse, setSelectedCourse] = useState(null); const [searchParams] = useSearchParams(); + const publicCourseListRef = useRef(null); // 检查URL参数,如果有courseId则自动打开对应课程 useEffect(() => { const courseId = searchParams.get('courseId'); const courseTitle = searchParams.get('courseTitle'); + console.log('PublicCourses - URL params:', { courseId, courseTitle }); + if (courseId || courseTitle) { - // 查找对应的课程 - const publicCourses = mockData.publicCourses || []; - const targetCourse = publicCourses.find(course => - course.id === courseId || course.title === courseTitle - ); + // 需要给组件时间加载数据 + const timer = setTimeout(() => { + if (publicCourseListRef.current) { + console.log('PublicCourses - Calling selectCourse via ref'); + publicCourseListRef.current.selectCourse(courseId, courseTitle); + } + }, 500); // 等待数据加载 - if (targetCourse) { - setSelectedCourse(targetCourse); - } + return () => clearTimeout(timer); } }, [searchParams]); @@ -41,7 +44,10 @@ const PublicCourses = () => { unitPosters={mockData.publicCourseBackgrounds} isPublicCourse={true} /> - + ); diff --git a/test-arco-collapse.html b/test-arco-collapse.html new file mode 100644 index 0000000..35031ed --- /dev/null +++ b/test-arco-collapse.html @@ -0,0 +1,100 @@ + + + + Test Arco Collapse Behavior + + + +
+ + + + + + + + + \ No newline at end of file diff --git a/test-collapse-controlled.html b/test-collapse-controlled.html new file mode 100644 index 0000000..a04f50d --- /dev/null +++ b/test-collapse-controlled.html @@ -0,0 +1,88 @@ + + + + Test Controlled Collapse + + + +
+ + + + + + + + + \ No newline at end of file diff --git a/test-collapse.html b/test-collapse.html new file mode 100644 index 0000000..8afec70 --- /dev/null +++ b/test-collapse.html @@ -0,0 +1,54 @@ + + + + Test Collapse + + + +
+ + + + + + + + + \ No newline at end of file