From fad84e5bf37c6d2f1c24ca52d710e4bc6a01fcd8 Mon Sep 17 00:00:00 2001 From: Phoenix <64720302+Concur-max@users.noreply.github.com> Date: Thu, 15 May 2025 16:07:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BB=84=E4=BB=B6=E5=92=8CAP?= =?UTF-8?q?I=EF=BC=8C=E6=96=B0=E5=A2=9ENImage=E6=94=AF=E6=8C=81=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E8=B0=83=E6=95=B4=E4=B8=BB=E9=A2=98=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=EF=BC=8C=E5=88=A0=E9=99=A4=E4=B8=8D=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E7=89=87=EF=BC=8C=E6=94=B9=E8=BF=9B=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=95=8C=E9=9D=A2=E5=92=8C=E4=BA=A4=E4=BA=92=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 1 + src/api/auth.js | 4 + src/api/contact.js | 6 +- src/assets/css/define/theme.less | 2 +- src/assets/image/excel-icon.png | Bin 0 -> 1140 bytes src/assets/image/excel-text.png | Bin 0 -> 2350 bytes src/assets/image/file-icon.png | Bin 0 -> 1109 bytes src/assets/image/file-text.png | Bin 0 -> 2225 bytes .../{file-paper-line@2x.png => pdf-icon.png} | Bin src/assets/image/pdf-text.png | Bin 0 -> 1819 bytes src/assets/image/ppt-icon.png | Bin 0 -> 1127 bytes src/assets/image/ppt-text.png | Bin 0 -> 1540 bytes src/assets/image/word-icon.png | Bin 0 -> 1149 bytes src/assets/image/word-text.png | Bin 0 -> 2999 bytes src/components/talk/message/FileMessage.vue | 166 +++++-- src/components/talk/message/VideoMessage.vue | 6 +- src/components/user/ContactModal.vue | 17 +- src/components/user/UserCardModal.vue | 431 +++++++----------- src/store/modules/uploads.ts | 40 +- src/store/modules/user.ts | 4 +- src/utils/auth.js | 2 +- .../message/inner/panel/PanelContent.vue | 131 ++---- src/views/message/inner/panel/PanelFooter.vue | 50 +- 23 files changed, 383 insertions(+), 477 deletions(-) create mode 100644 src/assets/image/excel-icon.png create mode 100644 src/assets/image/excel-text.png create mode 100644 src/assets/image/file-icon.png create mode 100644 src/assets/image/file-text.png rename src/assets/image/{file-paper-line@2x.png => pdf-icon.png} (100%) create mode 100644 src/assets/image/pdf-text.png create mode 100644 src/assets/image/ppt-icon.png create mode 100644 src/assets/image/ppt-text.png create mode 100644 src/assets/image/word-icon.png create mode 100644 src/assets/image/word-text.png diff --git a/components.d.ts b/components.d.ts index b178d34..58e27a4 100644 --- a/components.d.ts +++ b/components.d.ts @@ -52,6 +52,7 @@ declare module 'vue' { NButton: typeof import('naive-ui')['NButton'] NEmpty: typeof import('naive-ui')['NEmpty'] NIcon: typeof import('naive-ui')['NIcon'] + NImage: typeof import('naive-ui')['NImage'] NInput: typeof import('naive-ui')['NInput'] NModal: typeof import('naive-ui')['NModal'] NoticeEditor: typeof import('./src/components/group/manage/NoticeEditor.vue')['default'] diff --git a/src/api/auth.js b/src/api/auth.js index 779fe4d..ce636eb 100644 --- a/src/api/auth.js +++ b/src/api/auth.js @@ -25,3 +25,7 @@ export const ServeRefreshToken = () => { export const ServeForgetPassword = (data) => { return post('/api/v1/auth/forget', data) } +// 获取用户信息服务 +export const GetUserInfo = (data) => { + return post('/api/v1/users/info', data) +} \ No newline at end of file diff --git a/src/api/contact.js b/src/api/contact.js index cfdba05..0259036 100644 --- a/src/api/contact.js +++ b/src/api/contact.js @@ -45,10 +45,12 @@ export const ServeFindFriendApplyNum = () => { } // 搜索用户信息服务接口 +// export const ServeSearchUser = (data) => { +// return get('/api/v1/contact/detail', data) +// } export const ServeSearchUser = (data) => { - return get('/api/v1/contact/detail', data) + return post('/api/v1/users/info', data) } - // 搜索用户信息服务接口 export const ServeContactGroupList = (data) => { return get('/api/v1/contact/group/list', data) diff --git a/src/assets/css/define/theme.less b/src/assets/css/define/theme.less index ada3007..cb12e6d 100644 --- a/src/assets/css/define/theme.less +++ b/src/assets/css/define/theme.less @@ -1,6 +1,6 @@ // 默认主题 html { - --im-primary-color: #1890ff; + --im-primary-color: #462AA0; --im-bg-color: #ffffff; --line-border-color: #f5f5f5; --border-color: #eeeaea; diff --git a/src/assets/image/excel-icon.png b/src/assets/image/excel-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f831d060dfa47f63b0b619f4055ede22747f4245 GIT binary patch literal 1140 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 literal 0 HcmV?d00001 diff --git a/src/assets/image/file-paper-line@2x.png b/src/assets/image/pdf-icon.png similarity index 100% rename from src/assets/image/file-paper-line@2x.png rename to src/assets/image/pdf-icon.png diff --git a/src/assets/image/pdf-text.png b/src/assets/image/pdf-text.png new file mode 100644 index 0000000000000000000000000000000000000000..88569615cbac48eca1ccdbdbbd8ad5123ff32129 GIT binary patch literal 1819 zcmb7_`#%$m0>-x)w#hy0&C<+}$*s90%qDWbG?$gz@qREmywOB*$=oW}MwD{NIpjLz z_G+(dB-hP}T$0J1^|dm+FBCaqJ25Ve?0P@{B7WPY<|)~(FmTUk(M?z zM|h6mf%Vo@wBmB~nwxR2SG zZmyXFZsU9Sx| zBOi8;DMD$3*>Gb^LF47-jUsEOY}^STkdj*XrAb13Li*x`p5YtqvTc9{53lB!;I&^{ zlF559L_@W?zr8C!L`o@$2wFT}3v$B`gNfP=SiEq#1M=(cWugB&@G%m?2nm@hEIq_B zpt@5kO<`8mcU-73T;9_^Ot&;Y{xi18Br0y4^>!_vr0pNJ_1Af8Vx7RBm!YGSnI00^ zc?gC#i}u{(h}cuQY27^gR|ATA`JX-?W%StpmctBEfQi1~W`o~Gp1y~H(P@fJQ@FEo zM$_O9K7YPH$U88&U%lteErkx+NQEX2h5-{<_Er5RB6j%)2C zmvl-p0sdzQ1j)a}nr&4Vx>V!1zmVkFb4s**vEZxwQrY&tYi!I@dbEH)R!PPe8a~Mt zfRf^Z9e-SRCRF01{by>EqBr!A)Nsmk#8&9$DMKwe1+2^yE9Dep`Is%w;n zj(PwMlTDYsV#y!1s;;d}2m}+^TAupy0+TBxt#h+|jv3ok)(hh`_Pm(*xpQY?jMqIT zzQ>$&8RQ_3aR$0$UJkn`X+3}`ZJ$3SV7cSrB#ET4-eXTy)UyDwRHNc30{hzHEOzB3 zHA+S8@o~b#W@g)uh4)j=Okr=;GynB>Ty6_XT$;&$q)GA zYtG;tq2i=AIGp*j+8s>1H#ntTxxvE(oLd=iQH&%Zalg8~RQ?~D3I*6gMoTq3!i;L3 zB1th0A$>!|WTRzgpqP&ColMSe_pAz6W1lV4nNwGRRBO}PdC3Xsu zgcSytmZmXCD3Gn3jwtlTvSf0s90PsHo%ikQ-424jV10y^eT6Dk4`q6kK<6L~YzRjd z^xD``xM*{sK4Ug=KKZ&rW8``bEW9_*n+CJVu5%^JEv0BMka9GHSLG_Qes3IMn~#i2%~kNY7oU5FdGB!8 zH(CGh9E%`ZTyb;M6}OwKUNqPv3*%pZ!PYWKn;$U9sPbY}H(>Ejx|yf&yX=2OUJAGu7w4XI=e|yPGr9+8_D9M%Yo+;J5x#{Cs<#EdB#P zVi2W&Ig%5dm&LCIm}ju97IgCCaMV>fm1F}ywZzr?x;Vi`U|-)$1MSWB^%?_%-L$IM z1eLBfk9L=<2Zz|rjY9-V9r2=Ov*yj;};jayOcHAbteTeRDc!>aQPsQU% z7bH^MD>_}fWWZy1^schXr|(S8Cc15f-dUzMd=u0wIYQ7yqc&CzALL!N{=QrH%PN8= z3zpixy35zv?r0~jugqPr#}zUIZiONWr=mpkwcRqIl6K;fjF8y!qdBx3w`#ELG((4U z0XK``La}~i7uA>D(kMk`%FR)q!ijGX#P;BTLUxwfn>*9>VXWqm9a)Xi4`h8vQ>33z zV!qT3414)`#?KpX>LbxEi854JNihn9xsdBvx1hMydA*S%E_|c H!Y}E+9E4G( literal 0 HcmV?d00001 diff --git a/src/assets/image/ppt-icon.png b/src/assets/image/ppt-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2498d710f6763c8cf301391554b4cb14770376ef GIT binary patch literal 1127 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-HD>U{UmRaSW-5 zdpp-ZM>JIA*nZ<_OD=6tP~2g_62Y)fG9tsLXHz3<+e}Rz(@hBv51E9CADh}}%I(X; z$)y;$ZNY|1XLw9aHwc&tiL34V9%J$`KFR68434Cr7c!S7Ef>joFI#Yy zV-N2-%5mj!=0*Egst%1Wa_0Fk-tbuQki%xtuO-tPI@fGoJ?+Kjf{SlTW;e)v6e=+5 zJ|6N!Vq>f7f-dejrc)+$zDkxtX7lbc)VMQlvu77cI6YrD;f(zjhNHh5;x^h{ZJwyF z@4VsM#_1c@FHrQ@v--!r{|O8m?z&D@7iX|>XLOU(IKc5oVH%Uhff)^jHtG#bJ)9E9 zi-!hRPK|MXe_maU)J3)HGxJW(zyIdvm+i0D?J~2`-~5DIFsFRZ)%WwiZDovjVa!&` z+IlZW`d47X##F8a49QH#KF(p_GEhs9InNoP$F%CAdYQ!g(#WIyFE6OhuMc?l*Ky4$ z;n*;iHRh`=W=^|XyDqn4f0M?6)=%r6i(C+hcu~Z~;kzZ#o-2bxr^J%AMeWuGc~%n^ zv0ZbRoP=|4^fO5@amV^GF6=aWv;0?K)VH{jwOX5hWD8cNeYE-;wo2#c(Z`1j!{fT= zy$;X3SbUei&8T00x8DA+t6nztM%y_y{9dv3n)Ihl|35oTz4u*T+ir?he?Rl5F6(Kc z96;4{HZ8SEx*jY-0<`Hsn0^i_OniO zjyoN>MTM!Us-*m)e%kCayMyzbIZ;4yEiZePCcH_{p9TLt=(qdLXWz?b}y+f+GW0XMZ>|vTK?Zwy|Px? zw6phs)7;2L`-Wc*VPE?HhM%uid+=_N(c3rEJ&rL{nq65Ibx`?J-2q!Ojud@|y)ucMjyssCp zHAE=yB68Cz#|aTSwJ;qL3Z46Wzx!|>p6B`SJkPi1_grK#oi){s)Bym{-0wm=xS{NS z08`oE2~n)whJaBAo%aFdvaKHgK)HE8&A}_qPmy;#RPT`9FG+#*v^#S=z7YW$2h1=B zX?Q~L_v|34EbMC$eOnyscE<_9OT#C&y4&#t_c9%w;Iq0Z$sI8PL7tF{x9A*(Pt0XC zdK*lKdfNh1n8%6n_aC19JbE;+aYQj#T(p#%IJ?$NvT0b0%7jmh6S0<9mMz!N;ej2k zEP2#yOy_*QWOg}x+~+`QDM`dqI28$ zK=o>&lEy;1H}ICk#buB7ua2N za5wZplU6*~K3S+l>{~LvC#m;;X9F}1lJWHwdb+y_z?KC1hJQYR&wM`teMt{GCR0dD1q)q79eix$2qt&JmCa(`&Q^ioP5D zcvP#PYmW+DTX>oe8ci`2n6X1D1=I5FK4f<)KQ~L9T2;Eq*s2<`xBdxg?cU)rO{^H! z5Hb?^7q&&OxmHJ4TDz4P|ADUR1!rNMpN$V7`Ffa;h-wXDF3)M>RQi*XxrH%`BqQKDKlF{87zf|l@m}}849>clVzR*NWIS`;(jR-@@Onox zH+d4ewb4{Dxn!WM5nD4F9ldM0G>%)kcU>Do@$5O5%|DdneFT zSe4I6L>=qo(BRX2&PVg}^X~LUX~@jrW_iTx*U~~?88LV0xtT9Fx3iNS8r#(y78Vu1 zcoc%HTxCSs^85(3Jt|f`g7hQ17h=9re?Gwk3mqt&Si-_E&1=nNMFpzAC`2x!U@`Wy z%lWQRme0GEda=XZw@?5Hxj12zK<<3bcojSSW>xl%v(i$gIJ8roVfU&zY_ZQIWD7w8 zyvzfHyQ*V;c5J85P5$WwmtBasl$DC2WDX22v`|!2PI!0V(l%}#*zd%omG5Jp{~LNn Bv>*Tg literal 0 HcmV?d00001 diff --git a/src/assets/image/word-icon.png b/src/assets/image/word-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ced9c7106151f994e54129c98880acf6d8f3d57d GIT binary patch literal 1149 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-HD>U@`Y}aSW-5 zdpp-ZLnK||*!=QEh9XNuylgu%GK{>J+J>-f-238Sw{O}uTaB*|7Pbq``W9f*InP$3 zBO#P)ZFsJ7+5Xt(0G8?%Tep09;5z$m!(V3B&ZEsrLU$`qA9L#|{e0GB{vNf@PiFjl zR=e;0_tVCw-MULy2_y3z~n0`2Mlyd6T1i&iapx=P$?|D-)Bakby? zyta)j3uMuMzPJ7LF5!Tq8JAU$7js?E@ROdb^g{hg0gKU>Ju|%zBs|*YIVR7SQZ+pK+ZIOf@=?;u-AJXlZZ!knNA7owe z%8(=PmfUMg&+r-rrR-<7eG3?8y1b6Q&l6kiCom&#@uXee0+roNJthGSf*q|?+S>wQrhC&-@2gYM8J&$iPa2cp2$ed>jXfR}aTw&J0)Wa!pd^4j+ zg3keqdAtLoH6nt=b~`)vmAe@_?v z5%ehQZ!x3Ymt{o zK5akCW`Awgw^I&L(ejRd&nmv1zw^mqk$KA9Y2CHjaeMxnv*-(a`meCy7qiPd<_OLN z=X;#1er$a?>3Uk+3z_Bbj0GjnRvTZ}o#U`fB6H`G&p+6I32)EZc_LrwMf8shzYl@| zN57`M-|N`(Hp9MZX=O}lHEYpFyUZ=l$8;8MW!_$Cm#b3?^NxpYw5*oHxGfb+T>s zqt&T=b*w-0V^(eD>{-uVUryp(E813TD zki)lo^HN*i(Elt?x}*1M^ZWPa?!EkWOB~~7^RTwpeB~sPZ&I1{an^LB{Ts5MED72 literal 0 HcmV?d00001 diff --git a/src/assets/image/word-text.png b/src/assets/image/word-text.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a75367effc2dabfa6588896550963c801185b GIT binary patch literal 2999 zcmai$XE@sn?=xF}*a(1NZ zAArK{8tVc05xyS)zz||;plgTn*vg9zwwvJZ>*%O6B^u~Je4xSuTqYS=wgiWt;|U3A z^Y?$ty0||0;-JBA6dq9NB3NHlQ{OcmP^oAowPL5?lJRrF^3aHt;b7(iVTGd-J>7;* zF+fWQr3D^dY&5;bswfNukrY)#*DlbbE0H6=!{XM?MsnuE=(|y^<@erG4{X;nHfPeU zJh@}%vvmiP17mD2F`a4{bj+w!tkZkAua#MkrL(P*DcWPg14@&(HsWb(A;dyWr#TBq z6`OJ-)M+P1SPBROpM(ngnQvQ^=N5xWjdJEdJtAp|$*h4-igNFmXfEynT6!UC(4uRPNBI#H80HsCdE`i7vWwQz;{Pn^d{d%!AK$cT%jEvL(t2#7oKvWq{(f7+XW(L*m69_YOLLa7b4i(}uj zl2w&^6?9$>8~X73%@5Iw=7FwSu5=UGv!f{=TWMTgX5W5Pw7b2M4%zcGo%0L&+USk# z%Y13y>gm{OU{~wQQs>1FrSlh6C`{MwUos&atN!v#m)q~STcBRJ4&OL|o(>->na{^E zHA}bPu(tM{0G9IsD|mb3C%Oj_xU7?h9l+E;r0ME#0M`Co<<*Ft3r~{=-5InX!J3|k z!rP`yv}}MYM+l0Kj&#AXNSjXXd5g0(5&HH4`ngR86-;SNK`3Jk;N|KFUREhMx5WFqAD9vS=OgSRpOE|jx~xjLpudhRX=wle{P>0rJB{r z$YsmEx?)sXh>TjbXBoNIi?q~l@xZ-0p=?s`&XZc14YG0+w*28dYL%93?#!UZY#y;I z*6Q=*c1kH}#c$|5M85@h=_hlrX-+*&Gs*O3ifb%C5^UmfU2xU8wi7A&!%$p$;KrKf3sJ#tlTszpPD?$HWv4a z32+U3)W}+(##P-QiqlG?*O_gY5=7Gw6)}R?KD}~dCQKP9wkxT)-nh9Tj9=ow7|%sK z=YqARG4OfIC_U=CsmDAg(iVBKroY?O!_kDvIzB+M94Yw5&D|t~Vk+VR3LRQTr{g7N z*lC><2uv>-Wbw7xc7}VC>CEm#mlVWn3O(o;7gTcuM;id zpZ4joD}u5^bcZv}Lh=zQM{vdk1eX}Dq^N+=*|BIy^~ov>z2B`e4-4}=Y9h!6{YuT(fd zqho!#khQSCdoT7Mf4@s^Wx(u)NSGEFSv&0zBW}F8|HX z&8U|n7xNeEJY|58WysyExXdol-|^gq{D5=FzZ||ZeTsRfSjGPy>~+7zefmAO2@gk^ zlFJkm?}2G>+*)U5=Z&qbuPXn<6U0+_oCNOcklFZBf3 z0B#OMpZ!594j_v&c&2p^peFiIyWOhN)By!MgR+LDnE$)7)Cjh**XSPXeq#}<{-#H& zC7_%cKB&U=RVv|xLFi=9CU*GbYkQ556aF-NOj2SBdzIlp5|FiZ0RG?F(j_%9uyXRE z9xpau)JnlXud0` zzp1#p+y=y*@1ZtY39Pz({bpYZFj`l=S#tnFWq<74umc{KIF5u#0cu&{C{D%dG6gp7 zyfo8Kmk&$b^#A-0B4@6hQ_{j_# zk-BAfH8rTSJ;5(poeVslH%PST9UefD${X=xTg>WNvZhSp8-4C_wNd6q=V}awfJ4xZFmc|D>rGeF^ z-(Jj+V>S{L*Xy import { fileFormatSize } from '@/utils/strings' -import { download, getFileNameSuffix } from '@/utils/functions' import { ref, computed } from 'vue' +import { useUploadsStore } from '@/store' +import pptText from '@/assets/image/ppt-text.png' +import excelText from '@/assets/image/excel-text.png' +import wordText from '@/assets/image/word-text.png' +import pdfText from '@/assets/image/pdf-text.png' +import fileText from '@/assets/image/file-text.png' // 定义组件属性 const props = defineProps({ @@ -22,54 +27,76 @@ const props = defineProps({ } }) -// 控制文件上传时的播放状态 +const uploadsStore = useUploadsStore() const isPlaying = ref(false) -/** - * 切换播放状态 - * 在上传过程中可以暂停/继续 - */ -const togglePlay = () => { - isPlaying.value = !isPlaying.value - console.log('播放状态:', isPlaying.value ? '播放中' : '暂停') +// 文件类型配置 +const fileTypes = { + PDF: { icon: pdfText, color: '#DE4E4E', type: 'PDF' }, + PPT: { icon: pptText, color: '#B74B2B', type: 'PPT' }, + EXCEL: { icon: excelText, color: '#3C7F4B', type: 'EXCEL' }, + WORD: { icon: wordText, color: '#2750B2', type: 'WORD' }, + DEFAULT: { icon: fileText, color: '#747474', type: '文件' } } -/** - * 从文件URL中提取并返回大写的文件扩展名 - * @param {string} url - 文件的URL或名称 - * @returns {string} 大写的文件扩展名 - */ -function getFileExtensionUpperCase(url) { - // 从URL提取文件名 - const fileName = url.split('/').pop() - // 提取扩展名并转换为大写 - return fileName.split('.').pop().toUpperCase() +// Excel文件扩展名映射 +const EXCEL_EXTENSIONS = ['XLS', 'XLSX', 'CSV'] +// Word文件扩展名映射 +const WORD_EXTENSIONS = ['DOC', 'DOCX', 'RTF', 'DOT', 'DOTX'] +// PPT文件扩展名映射 +const PPT_EXTENSIONS = ['PPT', 'PPTX', 'PPS', 'PPSX'] + +// 获取文件类型信息 +const fileInfo = computed(() => { + const extension = getFileExtension(props.extra.name) + if (EXCEL_EXTENSIONS.includes(extension)) { + return fileTypes.EXCEL + } + if (WORD_EXTENSIONS.includes(extension)) { + return fileTypes.WORD + } + if (PPT_EXTENSIONS.includes(extension)) { + return fileTypes.PPT + } + return fileTypes[extension] || fileTypes.DEFAULT +}) + +// 获取文件扩展名 +function getFileExtension(filename) { + const parts = filename.split('.') + return parts.length > 1 ? parts.pop().toUpperCase() : '' +} + +// 切换播放状态 +const togglePlay = () => { + isPlaying.value = !isPlaying.value + + if (props.extra.is_uploading && props.extra.upload_id) { + const action = isPlaying.value ? 'resumeUpload' : 'pauseUpload' + uploadsStore[action](props.extra.upload_id) + } } // 计算SVG圆环进度条的参数 -const radius = 9 // 圆环半径 -const circumference = computed(() => 2 * Math.PI * radius) // 计算圆周长 -// 根据上传百分比计算描边偏移量 +const radius = 9 +const circumference = computed(() => 2 * Math.PI * radius) const strokeDashoffset = computed(() => - circumference.value * (1 - props.extra.percentage / 100) + circumference.value * (1 - (props.extra.percentage || 0) / 100) ) diff --git a/src/components/talk/message/VideoMessage.vue b/src/components/talk/message/VideoMessage.vue index 8cc9c7a..3c7ea80 100644 --- a/src/components/talk/message/VideoMessage.vue +++ b/src/components/talk/message/VideoMessage.vue @@ -100,7 +100,7 @@ async function onPlay() { function pauseUpload(e) { e.stopPropagation() if (props.extra.is_uploading && props.extra.upload_id) { - uploadsStore.pauseVideoUpload(props.extra.upload_id) + uploadsStore.pauseUpload(props.extra.upload_id) isPaused.value = true } } @@ -110,7 +110,7 @@ function resumeUpload(e) { console.log('resumeUpload') e.stopPropagation() if (props.extra.is_uploading && props.extra.upload_id) { - uploadsStore.resumeVideoUpload(props.extra.upload_id) + uploadsStore.resumeUpload(props.extra.upload_id) isPaused.value = false } } @@ -123,7 +123,7 @@ function retryUpload(e) { uploadFailed.value = false // 恢复上传 - uploadsStore.resumeVideoUpload(props.extra.upload_id) + uploadsStore.resumeUpload(props.extra.upload_id) message.success('正在重新上传视频...') } } diff --git a/src/components/user/ContactModal.vue b/src/components/user/ContactModal.vue index e278080..ad8d1a5 100644 --- a/src/components/user/ContactModal.vue +++ b/src/components/user/ContactModal.vue @@ -4,7 +4,7 @@ import { NModal, NInput, NScrollbar, NCheckbox, NTabs, NTab } from 'naive-ui' import { Search, Delete } from '@icon-park/vue-next' import { ServeGetContacts } from '@/api/contact' import { ServeGetGroups } from '@/api/group' - +import XNModal from '@/components/x-naive-ui/x-n-modal/index.vue' const emit = defineEmits(['close', 'on-submit']) interface Item { @@ -130,20 +130,12 @@ onLoad() - +