From f4a6cbf46559f816df8774b0fe77f6df92710da6 Mon Sep 17 00:00:00 2001 From: chenJinxu <2183691628@qq.com> Date: Thu, 21 Dec 2023 16:41:28 +0800 Subject: [PATCH] =?UTF-8?q?`2023=E5=B9=B412=E6=9C=8821=E6=97=A5`=20FETURE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加 情绪,情绪周报和体征详情页面 --- README.md | 4 + src/assets/css/mixin.scss | 6 + src/assets/today/icons/2_33.png | Bin 0 -> 574 bytes src/assets/today/icons/down.png | Bin 0 -> 440 bytes src/assets/today/icons/more.png | Bin 0 -> 661 bytes src/assets/today/icons/select_down.png | Bin 0 -> 406 bytes src/assets/today/icons/statistical_form.png | Bin 0 -> 1135 bytes src/assets/today/icons/up.png | Bin 0 -> 419 bytes src/assets/today/icons/week_report.png | Bin 0 -> 2706 bytes src/assets/today/images/no_data_01.png | Bin 0 -> 24470 bytes src/config/models.js | 37 + src/router/router.config.js | 18 + src/store/index.js | 25 +- src/views/today/emotionDetails.vue | 1470 +++++++++++++++++++ src/views/today/index.vue | 105 +- src/views/today/report.vue | 970 ++++++++++++ src/views/today/scss/emotion-details.scss | 536 +++++++ src/views/today/scss/report.scss | 321 ++++ src/views/today/scss/signs-details.scss | 386 +++++ src/views/today/signsDetails.vue | 417 ++++++ 20 files changed, 4248 insertions(+), 47 deletions(-) create mode 100644 src/assets/today/icons/2_33.png create mode 100644 src/assets/today/icons/down.png create mode 100644 src/assets/today/icons/more.png create mode 100644 src/assets/today/icons/select_down.png create mode 100644 src/assets/today/icons/statistical_form.png create mode 100644 src/assets/today/icons/up.png create mode 100644 src/assets/today/icons/week_report.png create mode 100644 src/assets/today/images/no_data_01.png create mode 100644 src/views/today/emotionDetails.vue create mode 100644 src/views/today/report.vue create mode 100644 src/views/today/scss/emotion-details.scss create mode 100644 src/views/today/scss/report.scss create mode 100644 src/views/today/scss/signs-details.scss create mode 100644 src/views/today/signsDetails.vue diff --git a/README.md b/README.md index 0388989..8b9a234 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,7 @@ npm run lint - 增加 路由拦截 - 增加 登陆和绑定页面 - 修改 tabbar 图标 + +`2023年12月21日` FETURE + +- 增加 情绪,情绪周报和体征详情页面 diff --git a/src/assets/css/mixin.scss b/src/assets/css/mixin.scss index aaf8601..e0bb39b 100644 --- a/src/assets/css/mixin.scss +++ b/src/assets/css/mixin.scss @@ -7,6 +7,12 @@ $border_color: #d1d1d1; $green: #189b3b; $next_green: #8ccd9d; $red: #ff8c8c; +$com_blue: #2ea7e0; +$com_red: #ff5f8b; +$com_light_green: #8dc21f; + +// 灰色线条 +$lineGray: #F5F5F5; // 清除浮动 @mixin clearfix { diff --git a/src/assets/today/icons/2_33.png b/src/assets/today/icons/2_33.png new file mode 100644 index 0000000000000000000000000000000000000000..02189a88c327451d31ff0468d32df310970901af GIT binary patch literal 574 zcmV-E0>S->P)O)Cp{F<=Knxz`k^j9>ev2V*7QSDsq4h{l&$KA2Js%?<}}j92z0p>&>n-X=?BX{ zkR6`sd`U*z6EWr^{M=Hl4k%!0P!mP7vk<&~onOL16`5!}i+I~xlA}c*)(9X)rVNE7 zeJ#lQ9%iAImc;YmB8yLxNt~D-TfNwHN5aKlirdr z_UonMkUHr6iQgl!SN&wTovazZC#6o+0^M_+Nv6pdfU0Z{RYtw)rqNndTi0!Z24kgm zB9xqmb{;fTrI-qpEf>gMXli@Ypw3kG$xy)_yyMlaj~ml|JNybT0FOJ*?4rZ|0{{R3 M07*qoM6N<$f^8EFF8}}l literal 0 HcmV?d00001 diff --git a/src/assets/today/icons/down.png b/src/assets/today/icons/down.png new file mode 100644 index 0000000000000000000000000000000000000000..077e205c5fd09b0f130f553f1bd1e9546ecb9f95 GIT binary patch literal 440 zcmV;p0Z0CcP)Px$a!Eu%R5(xVR6R=rK@fejdv^vTos}Xs2E;;a#4<>}NWg&p0xtnE{sJpYe}b`) zMEnIoFq(^pjcBEXl{Q+4Vq+&_a<@B@Xe1;TuoW`p?7X+kwGBdsKp*W#f@a2qAev!j5Vae3M0f^6{1A*Xp+dQfY#5D3 z9Yl-Zpn&%DTDD?bhQw#8?J&ERoD`Cd$dvQi*8>@ZA;3ysv#+wHWc}sWo;fEm4k0T> zNG|vd)kk2ANcatPrG;2MSgO8$Z`f7q=gVWh@>~*_?IH5?%Tj%Px%Pf0{UR5(wK)Xi%XQ4j#|nc2KeD42tys31LvpeGST51yo874fDBf+9o=NClH- z(+xdzFBbM~;-P|GETU9eiWCp(MQ`Fip!MQGf~bh#LCn{7_q~xAUUD{1_fH z^RUrq9M@XkM8vzTR%_AoycjldFbINgLWu1qH;SSlpU+Phi^XV|HE<%E&E5{fa3go6 z-ELp>Jg+kdBLEm&0ssjB77>9`>IpMnnwpyWnT8EqKS2=OFc=YqZQBrr;Y-W1E|<&Y z&;9UknBda@@R*2lhzMHix6FLOah%nE@n6scecwM!M9%$mMc5==FN@1EJ@6xsj2P86t9-8BA}P`N8PuXdxBO&CTV*FuY~kb|H$Qb)=MP zbUGc^Y*1e)rQC^#W`d5HO6E>$YiosSwR#@_xNkdr-``C{PZ9BuLChQz(fLZHvXVME zzV9C(qD3LZL8X*w`gZ`Ba2#hTbylU6ClK+TWm$Vnl2YnxCX+c^DwSTRZb!XdKgG-o z0I)UL#}7)Wv0AOxOx;J{_s0a>00001b5ch_0Itp) z=>Px$P)S5VR47x0kUdKSK@f&#_Lh@_2$qVKO8$l@+L*$^QY_Raf|j{k6HpEmF4-+E zM6^>2v5i`Ztsh`#?LV*-%#m=nH!CNJBz{geyz{*8%%D;#1b}=LMJvAVzrsJ&Xf%d8 zolYG9Mo~(6n#<)@Tdmfm=Xpy2VE*EjQU{LXY_;3%dkn*HBuSDc=X^Fz(`(mt3%|ii zsT0Q78WBBPmNkdjU>JsDTI)N;*c1`fqbPEH-`D*nQp#;a3;^IoYh5Up%TFJ0R!XS} z0JyPjJ0HjKp6j~10FdcMO1X}R$Htg9t@T2sQhCUjPdICWAeiKw-!jI=(=^@pJa4C3 ztu9-Zbq)Xt5lssr9(#cUaCd_l0B8churcNk5sO(m5fz0HXZ@#qgEO&Kt1U9dE^OOo zL7p=llv0H%g__Kw{729prC`fX7ke8UO$Q07*qoM6N<$f`zB3 AvH$=8 literal 0 HcmV?d00001 diff --git a/src/assets/today/icons/statistical_form.png b/src/assets/today/icons/statistical_form.png new file mode 100644 index 0000000000000000000000000000000000000000..08f9e30b7b6216c0f6bee2f75c7843a2d6637012 GIT binary patch literal 1135 zcmV-#1d#iQP)Px(DM>^@R7gv`mu+ZUWfaHHd7gW3nyyVY=X^^-r?SED%cc&oR6lIO{Gx+G3x3(s zrmG-0)>KeYT%1sb=0(cH>1?aWil!(7@#VurWKO1ADI$Vnb!Ba`PN*~OmYd$&`#eW( zx@KwKnsn;@dY|+EJ^zz)&pAP;;%SSM)-XQqR_Yq=5S%tMA@7q?{51GN(+~bPC+Pf6{pSTU4J0L4X8IxmoOjC9FF z6hhTCw~fwUzxwS!(DTH;SYoS?@CGv2p{UM!%hbzBQi`+J&Uhak89|YQc7_vSMbmnPwJiPBrMHCBrNBTW zxebuM0|1u<+CLQZ9mzud(aFa+vTuN(zKSoXYNt7HH2Iw7Y<$Pi=YBWT%p>RzP1G@$ z`VnKieWkSK3ZbBS)e26RVmhOV35V0Y(a>jiVAoq$?j>$rtj1ww=wGJ>g1*Pg=>#H| zpLMKp9i7)xLl}r8UsN2Eyr_Lf%9BEyE70I04Qk#`{9>0(Vd4j|H6Lb%zs$_WaI z7>FiTK3E`NLj{S0LqXr6S}vQbiPb`h=!jI z@+QctRB8;uKqQd@hVK6ZjEF!)Gj@7EV_a>mG*xOeQua7kG_Wi)j$P5@Zq?a%!pyAv zo!u&2bGl$Yef>$?)0bGU*3qws?C$*S;8p>J@i$UC2|(L06e2d|N*n}aul?7*D-yi= zLD18eZA=~g(;K*uV?^Znw;kr`O=b+Sb@=6`zjH%85V^7w&^o!eOw`<@D%|yk9%9Qt zkLPr@cjuoDL=$@f=olhbiHavhty!?!C6O>BvAsjRo=m3q&>eD(=-W$tpmNDv7$;Yr`8twO>?qu$YOLS2PG7gL@+1<%9GdASoIj^UGq#aAHl@F`~&0*1!~1&RG|O>002ovPDHLkV1k|D BBrgB} literal 0 HcmV?d00001 diff --git a/src/assets/today/icons/up.png b/src/assets/today/icons/up.png new file mode 100644 index 0000000000000000000000000000000000000000..a502063f09453161135cdf717ce3f0fb93de4921 GIT binary patch literal 419 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 M07*qoM6N<$f`CjM7ytkO literal 0 HcmV?d00001 diff --git a/src/assets/today/images/no_data_01.png b/src/assets/today/images/no_data_01.png new file mode 100644 index 0000000000000000000000000000000000000000..9a84f953d3651c1f79a2eb35d89c8f53ab620b05 GIT binary patch literal 24470 zcmV)iK%&2iP)PyA07*naRCr$Oy$P6QNmVC)PDI@0?U`9wS(Q~?UDaK^(=^a*F366cs3U%;{LvA| zWn2(cMnMr-L}vya@N*D#22e*<5ygE_7!(v_6Ga*j=%%-->e_OD@7*mT&i^}c?|u2+ ztCy8)Rb^)7{V1wB^Dc4Y#`(ore&-y7y<^AD01-(52mn9<07g+%S4vF@;avj&HET^R z)w(5wxE>G>0MQM|e*+*Qi~|9!`tk@!1akmDM05ra?*^hX*4nT7N-YQ>I{?tJHanrU zK3l0&+I%hmXaGnM(X9H6y%Vy0tDTa?W>ijN7z+l9b= zsiD9cGll>Y%Jaqo-veU-v^HR^9r(ktOKSm!Vibsg00=^efj>$~kOCk{GtgN!PXMz* z%6VU6VlB;BqPxOMc%LA%D5bm$0KN(UDI#WjpLqMvz#cek({EIO!PiCx4p5doQy@IS z5QIsb))BEzz&kn#0N_8R2H^fCB32Dn*9x}i-H8ZU6)CZ#?{ABU7IUqm9fW>cNo*Tq zK89ZKfr^AP0Ps(HV6jCXVvBFH2M$|2q3gX}VH)^Jl1z&rn4;7^1CgGUXmik7x?Ttg zah$NoYfEIM5R3#Y_{-wB-iKbs^9zI`Ry~ZhAP@xrsxS<|S_4AhR|6$a6XE;O7ay=m zayAHphYAg2&m_5w-)i_#d*E<|CZC8NnHV^%)9fjh=oYf}P6C|P#sFE%TfZR!&AaXu z8sa5?ENefApnyoC5U8XC1bRpc_0K5m=cMO~u-5&!j)4`%NH7tFvOI9#ShK}75{ zJeFnp$K#B?KFhLW01#TD013&GWl6D@X*k>VF>ETaazQ{S1+vN%d!Bb+=;22_PyH4E z+=qzl?A$vp@eJ&N!zG&F!XMDcvg`&z`CP5d(}YluZFktYj}ZbHrxff6W1BZ>x+lp5a(F6cIt`lX? zFh)PgTDsX1)rcqspoAlXZpH5%>zx4(u(0bQ5QrSLX-g@-ET#Hzt>S$E06vL`v+KR- z-uWxfz}_O=qSZk}w*kNl+uh`e#+oBq8|idoHWhgD+dH;)2B?VEAfQsxNFg7rSA&lL zz?%^93tRiJtMhJq;IP5(UYHHzsWDHontn9Z=BZj6Ysp3;kK=QQaqqZ1Ghi)|Cs0(B zlEPQ=Lqg&2_)>lt0Ot10j*WeUJ#bj(ycMAE_)e1k2Qu)i%;?*VrWBE)K5hYf;rFzK zbE|l>8THyZ~0DNK(B-S^>d*HB+`68n4i!=ShQIy_V zfP^K0t3JZ8jw!sXr(&+X2_evgq5t{NQ*S}Uw_nyl?BIv(fx{{vZ()HZywE&FTk{&7 z>6@*kCC(YxGaGi)s<%KCN-65nQ(sa-zAE$O-?jD}m>2zsd*HCb^bpbUZepKhta*N> z^_^s?O9Y9VFoApe!cM{l)*o!1Oo9j;?Wjp5Kcl32M>P=dN5p$}((7EVvF?Gx&`cB2 zq}KMwyGizgM%#)dYZ3NHHmP9Q!)1ko;>4u-m5(c??c4Jjoof{U3Jwj zd?Ff4GW)zVG0!(vKinA0QHMRB!tPqs z1_!O_TRTzmOIn));J6927kSvtt9?!H#)%!|DJ9R;D#0t2!oOJ4WxMdCs}3BB5adm1 zYJMTr=DAs>&lXjSuDZF{h3k2%UWv^O<#}q#SMt5SFMkC9zI?UuB(5rfAff}>+MkTN z>2tNUW0vfKK*43uuBv(1Dhb-n_hAy7B})QDOG!B&1m3%SC77Dc1!}H}I}Waec_mVH;6 z>KP&SvLd(pqTHtA;~G2|_-dc>ymwVR`9Bcx{%tzeEg9CX1qUMXGh_Z^X6y^&Bt1ly zW?jNVUhi-(?_o=p&((92a^1N4oI*^5fp^N2;!U2EZ$rd%H_pVa1P3CzHr3|Wqa=Hj zHaZcoR~~&gF5WBoP8LWiDT7+*|BI6HMTmInN{;7JJbPDx16OP|2EIMb%zuyKE+Puf zgV;-*z7#8G@18sZoOsu$g+Yc2U+zo!XS=C{-L3%#BHAA%+0SR0{T8h?t9d%_x3G8Y z&A_Fb0oVUSpi)8vfv5f?2o(Dwm|eT$k6j@=MDz{qZu+`3Gvf%v?8d!gZw4;=3=mM@ zd;VO#>b(pR|KYL^V2dBPqrrjAh%7VDOH%WTnbusnl^KpZ`kl7;`|kMLm8JO$5At^Z zwmeMXDOC%6`C8ADOu^o<-MzN^WUsim+e8OdW?!Bp*|Srv7sXyr#+?lWMI?z|LJ466 zf-#nau~ubTt8O=KCOV_3ePgrRebHJX>3OOZ2Hu}%O8iP=hngANeV#`yc;+s2BK@0* z&W->XV@MC2}BJL=f>lRP||X-Z$CNxw0UQeOz<0xWyjutSzyPD$okIY@>q zNEBqOm1$}!##(P-sXMJLRai5()?lVJp9|U$WLb3T&fAXPn`W9D3h#&m(M2<=zOOP* zct7F$`0*Vv@M4fV1{`>|h%@tpX=;AVa*=1C%oX_ANwaI-`#o9J@RBl^vAfiJ{v3|47 zvT*{~m5D7ITV31lDj`sxKEHI-_v8(=&pb&=JwGb~k-}X3QkI&eVH7>esVqxQ@QaP5R4zum*AJ?EDdH>9+A!-8mUMaSBWA zZr77=a(Zg~e$V%VnfdO`QIbyaD4p41EfXEUXbbK3(##z8-VqT4%Bc8#^<mZ8u;-gv(y9| z(=wZ1>^3SDzw3FPj+3-Cw-DWt89SB(0-GDK9JwHXPPda?dvNR%ll#V(j4?YtGO@m| z2V7;!4@2M9Lhq*$@ve1Ve@RZ?7T`ccH*~t`uO~X=*tXd#_`3SHE)$Z<{WVE4A1q){ z31VNO(L~Z1<{&x4j06aZ)70-oaaC*M?cdjO-JQ02uK8I~NEUzSEJfADPIMTBcfBQ2 z9Kmo7%EIwje(0r61g)z2?D6XkKBzUR)!%;io#CRr2r7^&u2uY>Ld36L>9@S%;6OxE zog{rrn&|)uc5DXQ<@}H=(8`lp9A}}Y1Z!DqK3t0@wsdm_D+C!A2;GzD)?YA8LGK1EdUu2h_NC;lwskj=re2gnv z>H3O-gYz*Y`prq4dMI2SzAHMOov_}701`s#2Tq*6ZvW)?Y0p;~YYdwhyX!BziR=3> zC9SRMMp137QJW6}Kl$Xp-Tj0p$)?Afb@2V5&y*n0#zGRcPd@HZH-0=#O|V5{*y*<+ zu74VYeusSZ!ul2TL2T8cSoa6v9unO+dv%g#M~ecTS8Ocn9{d%&08!X;GxJlmir=o+ ztKHIc*vOEi6lQL*-D=hAi$u8zvK5Dv(z4&cS2Fwb=kEQQ)R@Bp&4MSxpw_5`MjPN( zAxle(Gk4r{&Br|7+j0$NE8gP@-h-7pKk()K)zEwOmC_)th(K~*LT&BqI_>yYKIQZqjill{9D1&+kVhnw%J$v4xLfy^~^z&{IlltyRCN;wdlt z)Lr*{-Qr?<@{ZfC`#S-IU%dO|Q}<2o_fDTao!x%(HUDp7tkvD@d#rc7JLY_%YONlA zQ3=77r7nAgv&#++42c%t)tyfA1WT41m0tES?3l$dVxXC}N(!<9<>riu;@+N=`o0rq zj!sYQJ0;}Cd=Nqid*al&BS#J&yx*8CcPJ8o@2TvgpZU_)962y{@8LuH&+(@|eP(vz z^ItjfbvGV6@TnV)9Xc5$>7F^U@`B_V7h|I~MHu#dgygBga~eb%V8((wsRzHzfp`{S#v|#+V+f(Ir>0 zdEu+fn4Ik>C7St#c5QsDxwPkiTzv(x140N1e9 zabrw^C@(7tu62yt|GcgAALeh%gi4)dp6~nV`a_!p51l@L_`uY}2_Xa*Wmt6zc?aAH z)tpv+k;`-fkwGb?*Qomc6A?djnI5}_FS$h{A)<#Rsd-(T>h4~v`;AX(UTX33eYe#{ z%KVCj#rDMX!O0WGn5&Ybu-Y7L#qWtoRsz2o_>xIdU*3v)u6B>rVScqctl{@WbflY_ zU(Qlp0U+)tv3G1>1`H9NIWs?f=-~LtOXaH(Agp1R#u~p-4paoWCb(CZYXhHkO_wky zg#EsLAlm4Auc#vO8n~p#8kfMv$3R5YZmfSk)A|Nx%x?Tndsp%doOtNmk!ug_e~@z# zF2&L9#1+ulZVyd#Gq zh0rHXpFOsJa{QDM@{(-RQJjSBC~h8{96tqw!q|~{4qPVIWp-J(bV*!0@*`b_K}#v> zK_K4|DD~b;`M6684&98tUZ?3xjIkYXUiQ6X!!uwlGB})_oj+I$gQc)qDUzx-e8-U& zN&wsLMm6RpG#j;@K_s>G>& zNt)Rk(3Kb7JGN>DN>SW0uJZ~5>lb9OkL#1Bv*}S-SD+j-&;K1fYs_m&EfZ ziHOUPZP~roIbU0KI)dPqOj~ukExeBaP>5!+8#UUC-La_y`%c0hIBekr@3dPHAz@gp zhJPa^{Lxk=Xl#6+hZ?SvG_5q?O?3eRp~orA4jasq{2>UNq+d0E9* zv0VqPnl+7r$8Ds3bcef?wOJ5_4Mu4$S-3TK{a6>gx&Uvge&| z;fExyp4{%l%`@lQk3D>#^|8SB5=+~+u?n}Xw_urxz!jX4fvt!S4SZX{1?ydnX9fWQ z+Gr*{D`!Yg|IN*5TvfR(oaen;U4j`vz##C|SAC@zAU4fL z-jWYaMBm(vbumk|hP17I5^w7Hs-KuiTdS18$)h!K;pxFz9Wy13aFP2TFlSH%;sJ+&}Z}*3vZh zedcH#r#}XP`s8ibPkm4uQ{xiv+w&cB3bPaQA_*L9wAI?pI z1Dg|>f$xcuCFm*Ms9mRO0BtglEr3opIk2=C-L47haU4&_Y32oC=x7PUMT8gy z>NS79QT4|29<_a2dmjY${#pFPsaY-`E1v=fDbCqpV**SNMH>M!A!S<%m{(HGNQJYW zQj4s0aMmYxOl3ypQauuXT>73Ud+!0g;y=h#DM7oH;!1FnYLtcP&zbc+K-dGi(bVhGxp zIVHuXm8U+d1R85ye}zl+&iQvKq9t5qNlL-hxosRLtvI!fI8Mi+B%MxE)5?rJXsn%J zg-1H4!*Z;s&;)WpW?AGM3F)zHlP^VQq7~F#_o-6Si|HD8v7$Nl!0YyYR$Rc=WbdL< z6Jf(9?`-9Mhit)!4kEM#U`GgSqu@?l)KyA$gcM5%*zr7}1&S0AwWqKnl}d^vFO_8! zZbovhl50^Z;ip|Bw$`%lEtZy|skz1I_9)3F zjj`j_QXPOKH=*sXv^Ol!!-Bw2mt`5~Gy@?8)T$Mjny9+>?WqC7FEsG0-a)#cFkCd9a(FeH0zbO`JQ-)dkn01@`c;O0rCifdw~0k9~~#U)`^lM-87p@5`832 z)1y+VK07AwT0QC*`QuSSEQA9Hr2wWU8^FNm%nGjD;$oVG*)X6TEThEma|Xw=x_QzE zF+EV~zbAi>RCAkdgj8DxUhH_a7R-@@&3En}uRUPQ)!7+q?Q4xlO4+K0-tQvfr`LYn z@|ha~2QJ{EExfeTi9#W`nDov%0#9{5|JAeK5heOgYYkLGAFe+<0lc%4vB0vz3*H$O zWusSHw3N?V$gv=G>XqORE1^6=27G4%tacE$iW41ct#1g!D9!3o9Pf`4voF(nN^5(K zv9?Nt0q^V%LPj7#??D>`iSja~M7)12WN--CFA>GD6H5L)Z_U+8#l=Q@%F&Q1F>H$T z{1$!V8XjV~;Ea1WaKMylR#7|1*>jdS)>?a{oiK-zNZ-?<+Wd z&A9U`uszOeGq=H6d&q5O))?}=zGxX=oMXr)`PhKbTLhWF-J-4?jNtPI$z7ZE5*T>$P>X~jdFzy z`xpw4?7wJuJmnqv9vtIj;g3?z@+Jogxj9pi?DG)Oss~@;Npa7^Z<_u+t#!CnRk&Au z@D4peN+APJe8BU(br+^x!{-=Ua76Ve)jyu4y17H=OW%Fs{IlcOJcc*L>#i9GPpP5} ze4#1y0fW;LO3+|7wL_0wt8jh@qWJ^k)i)}o*iz}0WgnUwUelQ+coHBywcLyuTQhAT zN;ITt21&}qqymswc#O$Ie*>yQ0T?dWI^^(JhbF;T=PA+I*9y@PR4>#H2Ek%|rbKS~ zWE|fnfH>8Vq+BN^2ZDUjanxgDE67-)iB|0|j~#4%T3gHgH8*&tjXi&-UFG>|vE!@X z-jBGnp0TfcQnM_3VwBi#C9>;QQ`R%EOLQ(KnNjyVIP;&iw)>7ux1d!I-Hx{GV<yBG2%gvaF`s=*J?6Z+DhhA-v9YSNb+e*>r$Y zdirzcUXO>+e_bKJImi?s!h-3Xc{(?Z9MI$rJ^nlQGa}@qN&uzQ%)VB@=j~%~T$Zj2 zfq`F&oq~K;n&$URGXn|xC>)6PYXz%)hOPO%l;VMhAD@0>W^_Go_Oo}aFav^{7ga;` z%j@AitQQ=f-ih?niEL*ls&XhqdgAolqqyVNvFS0;TIbmY#ZF#o52eQ70HXkl(hreG zGYY>%Ay9k^DaF4W*+2dsLObkxAR?1!ORoXKu*aP!G>7tDPSy+XDV2&+!1G8#A7B*! zcDud1t}lY&Y>nLHA!G+DYdWl56#vcI2Ji6B@kpJqX2_@2oq)U5&<7F4`}5Bk2%=aQ z8cR-ma@6fjmvTqgT?YWJ@dl(A#%;a z`5r9a%bM#B?)w$rS4m$*X3m~n%CvnBB0k9pWB~w$(oi@*OMxyJhZg~k{JLc@D1jk& z29}yejvl$zQ5p%wH6tY>so-sxr z+CTQT1Cz}!8KZe^?r9LCCdz{FLy`JQy>YFPi#3BomSta`YWq}<^lj#2Ua4!H*(+7& z)Y;h|-alTyElqW#kabI1k9+5LULV?B#^rWD1mHtA9h-WS@)QR|i$LslANA!QpA;Z{B|hYN-kK^_uj$JZQJ7`+1#zk; zwwMukS!YNhE_UPizk`qsjs!TND|rk>R3ZnAK8>Nz$51*8b79SaA=e)G2b`D)U%2V$ zf#23z*Yg*n%vkyl#+Yxon1CCV1Q92%-f8_#G zB?rQKEr6wV1W9UK8u#`;5UQd2hg*&v{G&9V`#tSp^hd+cSF@fc{tqIq+S*{P;BZ}> z>gQ*fu32d>Bh-Z#lOA*Lv1F zVJ+3^PXS=-;zHS{{`U*^kdT)eODWYkD3$(*Y8Z60M(;CfUP~R!5uF9(W~w?|f|vlBkot2n60}3fsT*G2}8*t7ow)V7{jax{tGGc|YxC`v@EN@bMZXWA&y-kpEarQC>3l2&cTg+n zb554$j`UG1CsQqJCI#!W-#qE_Veol@ub@`(;QU-0V%8j(Pf`5265nn;&$Pxy*B{;Y z`muUt#%jCQ)OW<>5mM*}-sc0Q-nZJ^t_luBG?AwI#YtwCc7%pG;*Et6h78r0qVyLD ztlu*S`YF+UeuY6ULvCi2=0ndBS@<0CXhRVil=#`(k5B(rs?3ndE1+}W@>ObU~ zgLaw&-q zk|p1#xj5JkKJq9fHWu5_tC^Z#l7p6g4E<(8L4GQjio-sJoCMX!lyrtVXAaO;A9mx^ zudzvCEF8^J{bJ7894(X=@iFu{3J08zWrO>EA4AEF=;u2O{cI&4!*Dp%X$_4^t|L&3*_79=RI9sq}S>A~^MY4~5{De1!gcI>GPp7z)4{@+b71mifbaNuC2v zOQKwBsCZ7J;_xMF4g=ue(z%h<_HDmS@Hnlt=Wf4#`nAGyz_6n?w@WbLylT9l68vp| zc-OkYfvM7ofp5;z?3gt`LdczqzGzUO=ysyy(NUbdKuB40?8rV6R7r4JDO~A7o$jPRf5w9p2R4!)x`)@ z&8qJT!0^G;hGDa!1TxR_w!QXH)}-)+`1_l#-~V3WYI66lU*m|KBh2JH9e0ISQwGyRzMa_X3kx62|H#3GEJ3AK`mSK@6Bkd&Ffljyk0swiV<-Cf1R%9E{yz1!nb?*Pgtnrmn2O8~^9dpwFlEm)CI%VSPz_3uU=gZhEtA!D!+KwB#?bSm2|U53 z#mFSei-E(fohbW8BG}1&C@z>FrqBt3WT~4xt{uhCw3ZH7f(n2YtU34BZ(whN%dN1~ zHP&=IDbCev)sK$1DtFf^{)4D(RYP9K0STg%%uPBoFLy~!eL_08^Sj@ynk&I)Z8gDZ zm{OgaRs^+*&sDZ_vnsD*4d>@LTA_QC>3)Z*lyX~`7loB%xbTidJU`Z|{@p~qde7uU z?OtPy(%ROCfPtr!y_3RNI%=$bEE#BO{_ucWp#6g9d7t4DeVD5cyV{Y72tlpl{S6}i z`zRz?@#VFq=R`U?#B~T(gP@)EdtOvRLgM@bnV!m`>`-c{qO}<#AVpkBoByHkIb7UT zdFqYLT6lNhiIi(P8fz6<7)Z}Xg1Fs@UstJA52jh_Qm#wk>-h@`MrIEt)|CWqJu(7 zWYdsO$_vm~$c#DbEBP1Adi5VISmvwjW`BiOQQj$~a3tqpBseg)A<69b#>Paud1iRQ zODQZT87axhWO)l1_OY-ib~@eP;p%B&pk6Db;zAi0+eyf1bHrLx*M=TrjJcHvDnw9| zQljHZxIB)FBu5n{NPn(GKS63Z9NM3ku`)0W0ZJh*d@mM;Mm>PQ%ZuIQ>W*vc4(I0< z2ON_9WH(MYSn6mZ$biuSy<})FJ?McD&8*@;IP^!G~7KZ@Vtn?BxFoIiuFy_ z(hWw#xY7E!A$t=W_vMz>AFdpTS`7FKE)0FHdVQadqTk=)K%me-*zw5W%jJ9Jug7G! z8Rj{RFe{d|4@Woxc2HibgXe}F$6PTxj$`(X-1pc!Z+wmK`6VE%>Kh=UE?E2;W6X~b z*&xrG=_?1=mq*hpE?j6&ME3vf-`{#OSzF}FT&g#{V)rGKvKoN-C*Sw~d3Y2f1wTpj z^RnDAbG05ML73Tv&YM9{w;K4b;Zj>`oeW16;2ntT#|x1V816YC03^=NcYa?Wgk`2@ zkA2yThHx4DWtZ51BeO^k@Bi5-Q)A_*#Ih;DAW;n!R040=|54PP7KK@nq?wCM^zt%> z$y}}@SODyU*vwIC2Dvt492mF~`Yxix^O1*9r4*+g`|#thu2w@=19YK?~NLY@I*9ouKfp6A%_M^Ek6Id*wJ`Vy5g(6 zyBPvq=7jV4T*0X?y0KP*(?D1=_l~+}HtT^iA(kzQT;xiJB!ff$F$yGDXv1)0eP;4! zb7iR%vNVHCXAT^OkMg+;4tGBM_$%v;YF;mImBVOT*Vep(EFH`NAs2cFLVcW;(l?a* z9+uBx1CZMgjE_}b+pJaYa~V3j@L*^UL+>vUai;(EF3=p3gl@HH9$!?Jz8Xymkb*^3 zn)9>m-xC5l)zEvT?|ZB{Y-T=42oay3U3!~R!hu7-Y0 <%3MZ7hZ7- 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 literal 0 HcmV?d00001 diff --git a/src/config/models.js b/src/config/models.js index 8265168..7daa88b 100644 --- a/src/config/models.js +++ b/src/config/models.js @@ -92,3 +92,40 @@ export const ErrorAMapMsgModel = { OVER_DIRECTION_RANGE: 'OVER_DIRECTION_RANGE', // 使用路径规划服务接口时可能出现该问题,路线计算失败,通常是由于道路起点和终点距离过长导致 NO_DATA: 'NO_DATA' // 此错误在服务接口status='complete'时的result.info值出现,故判断时需要注意(与以上的错误不一样,status!=='complete') }; +// 情绪模型 +export const EmotionModel = { + // 抑郁 + depression: { + name: '抑郁', + type: 2, + title1: '抑郁倾向', + article1: `

设备所检测的是个体的抑郁倾向。通过将个人的生理特征(脉搏波、心率变异性等)和行为习惯(运动、作息等)与临床诊断为抑郁症的患者的相应特征进行对比,判断出个体的抑郁倾向(即抑郁症的可能性)程度。抑郁倾向持续的时间越长、程度越严重,代表患有抑郁症的风险就越大。

`, + title2: '抑郁倾向算法原理', + article2: `

1.研究发现,抑郁症等情绪障碍可能会引起个体外周生理系统反应的钝化,因此患者可能在面临危险、压力等应激状态下表现出较低的生理反应唤醒水平。这一点能够通过皮肤电、心率变异性等生理特征的周期性变化来判断。

+

2.抑郁症等情绪障碍的患者会出现明显的失眠、运动少、和生物钟紊乱,算法能够有效分析判断出这些异常的行为特征。

` + }, + // 压力 + stress: { + name: '压力', + type: 1, + title1: '压力', + article1: `

心理压力是指个体面对实际上的或认识上的至关重要的环境要求时,产生的通过各种生理和心理反应表现出来的身心紧张状态,也被称为心理应激。在心理学中,压力或应激一般指紧张感和压力感。

`, + title2: '压力算法原理', + article2: `

压力的生理反应可以涉及全身各个系统和器官,大脑皮质通过自主神经系统传递关于血管压力的感觉信号,这部分感受器可以感知应激反应带来的血压波动,发挥感受压力的作用。设备通过脉搏波显性反馈压力血氧反应指数,从而更加科学的判断个体的压力水平。

` + }, + // 疲劳 + tiredness: { + name: '疲劳', + type: 3, + title1: '疲劳', + article1: `

疲劳分为两类「生理疲劳」和「心理疲劳」。两者有本质区别,前者是:心里想做但身体无力,后者是:身体有力但心里不想做。

+

生理疲劳:人体因生理状态而产生的困倦和技能失调的现象,指工作活动主要由身体肌肉承担产生的疲劳,又称肌肉疲劳、体力疲劳。

+

心理疲劳:长期、单调、高压力的工作引发的力竭性心理反应,又被称为心理耗竭。主要指肌肉工作强度不大,由于工作中信息加工要求较高和情绪压力较大,或由于工作过于单调而产生的疲劳。

`, + title2: '疲劳算法原理', + article2: `

设备的疲劳值是生理疲劳和心理疲劳的综合值,主要通过个体日常生活中的心率,心率变异性的变化及运动体力的变化情况来进行科学计算而来。

` + } +}; + +//心理健康相关接口地址 +export const PsyBaseUrl = + process.env.NODE_ENV === 'production' ? 'https://dbmq.rzliot.com/auth_heart' : 'https://dbmq.rzliot.com/heart'; diff --git a/src/router/router.config.js b/src/router/router.config.js index 3046ba0..f896040 100644 --- a/src/router/router.config.js +++ b/src/router/router.config.js @@ -259,6 +259,24 @@ export const constantRouterMap = [ name: 'bind', component: () => import('@/views/login/bindDevices'), meta: { title: '绑定设备', keepAlive: false } + }, + { + path: '/emotionDetails', + name: 'emotionDetails', + component: () => import('@/views/today/emotionDetails'), + meta: { title: '情绪监测', keepAlive: false } + }, + { + path: '/signsDetails', + name: 'signsDetails', + component: () => import('@/views/today/signsDetails'), + meta: { title: '体征监测', keepAlive: false } + }, + { + path: '/report', + name: 'report', + component: () => import('@/views/today/report'), + meta: { title: '心理监测周报', keepAlive: false } } ] } diff --git a/src/store/index.js b/src/store/index.js index 7478e1c..46e1453 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -48,13 +48,20 @@ export default new Vuex.Store({ watchRole: '', iotCardTitle: '', //物联网卡商名字 fromRuoter: null, - deviceVersion: '' //设备版本号 + deviceVersion: '', //设备版本号 + ssjlToken: '', //b端接口token + tabClick: '' //心理监测点击tab }, mutations: { authToken(state, token) { state.authToken = token; window.localStorage[prefix + 'authToken'] = token; }, + ssjlToken(state, ssjlToken) { + state.ssjlToken = ssjlToken; + window.localStorage[prefix + 'ssjlToken'] = ssjlToken; + }, + userId(state, userId) { state.userId = userId; window.localStorage[prefix + 'userId'] = userId; @@ -167,6 +174,10 @@ export default new Vuex.Store({ deviceVersion(state, deviceVersion) { state.deviceVersion = deviceVersion; window.localStorage[prefix + 'deviceVersion'] = deviceVersion; + }, + tabClick(state, tabClick) { + state.tabClick = tabClick; + window.localStorage[prefix + 'tabClick'] = tabClick; } }, getters: { @@ -177,6 +188,14 @@ export default new Vuex.Store({ return window.localStorage[prefix + 'authToken'] == null ? '' : window.localStorage[prefix + 'authToken']; } }, + ssjlToken: state => { + if (state.ssjlToken != '') { + return state.ssjlToken; + } else { + return window.localStorage[prefix + 'ssjlToken'] == null ? '' : window.localStorage[prefix + 'ssjlToken']; + } + }, + userId: state => { if (state.userId != '') return state.userId; return window.localStorage[prefix + 'userId'] == null ? '' : window.localStorage[prefix + 'userId']; @@ -298,6 +317,10 @@ export default new Vuex.Store({ deviceVersion: state => { if (state.deviceVersion != '') return state.deviceVersion; return window.localStorage[prefix + 'deviceVersion'] == null ? '' : window.localStorage[prefix + 'deviceVersion']; + }, + tabClick: state => { + if (state.tabClick != '') return state.tabClick; + return window.localStorage[prefix + 'tabClick'] == null ? '' : window.localStorage[prefix + 'tabClick']; } }, actions: {}, diff --git a/src/views/today/emotionDetails.vue b/src/views/today/emotionDetails.vue new file mode 100644 index 0000000..e1d43c8 --- /dev/null +++ b/src/views/today/emotionDetails.vue @@ -0,0 +1,1470 @@ + + + + + + diff --git a/src/views/today/index.vue b/src/views/today/index.vue index 7133c26..e5e2e86 100644 --- a/src/views/today/index.vue +++ b/src/views/today/index.vue @@ -4,7 +4,7 @@
- +

状态优秀

    @@ -15,12 +15,11 @@
-

工作学习要有度,适当摸鱼也很好,不用太卷哟!保持张弛 -有度的节奏,是应对压力的有效方法。 -综合今日的HRV(MSSD)和静息心率情况看,你今天整体状 -态优秀,身体压力状态较小,能很好应对今日工作生活中的 -挑战,请继续保持优秀状态。 -相信自己,你一定可以实现你的目标!

+

+ 工作学习要有度,适当摸鱼也很好,不用太卷哟!保持张弛 有度的节奏,是应对压力的有效方法。 + 综合今日的HRV(MSSD)和静息心率情况看,你今天整体状 态优秀,身体压力状态较小,能很好应对今日工作生活中的 + 挑战,请继续保持优秀状态。 相信自己,你一定可以实现你的目标! +


详细解读

@@ -33,7 +32,7 @@
-
+

今日情绪感知

4.28

@@ -63,7 +62,7 @@
-
+

今体征感知

4.28

@@ -86,7 +85,10 @@
-

温馨提示:检测数据仅供参考,不可做医疗诊断和治疗依据,在运动、工作等场景会影响健康检测。

+

+ 温馨提示:检测数据仅供参考,不可做医疗诊断和治疗依据,在运动、工作等场景会影响健康检测。 +

@@ -108,22 +110,22 @@

多走4567步

@@ -174,19 +176,11 @@
  • -

    - 健康同学 测量的 - 什么压力? - 测量原理是什么? -

    +

    健康同学 测量的 什么压力? 测量原理是什么?

  • -

    - 健康同学 测量的 - 什么压力? - 测量原理是什么? -

    +

    健康同学 测量的 什么压力? 测量原理是什么?

@@ -195,19 +189,14 @@ - +
diff --git a/src/views/today/report.vue b/src/views/today/report.vue new file mode 100644 index 0000000..553e7e9 --- /dev/null +++ b/src/views/today/report.vue @@ -0,0 +1,970 @@ + + + + + diff --git a/src/views/today/scss/emotion-details.scss b/src/views/today/scss/emotion-details.scss new file mode 100644 index 0000000..346f269 --- /dev/null +++ b/src/views/today/scss/emotion-details.scss @@ -0,0 +1,536 @@ +.psychological-container{ + min-height: 100vh; + width: 100%; + overflow: hidden; + background-color: #fff; + .tab-bar{ + padding: 20px; + position: relative; + .date-tab-con { + height: 50px; + display: flex; + justify-content: flex-start; + align-items: center; + background: #EEEEEE; + border-top-left-radius: 40px; + border-top-right-radius: 40px; + border-bottom-left-radius: 40px; + border-bottom-right-radius: 40px; + .date-tab-list { + display: flex; + justify-content: space-around; + align-items: center; + color: #fff; + flex: 1; + height: 50px; + .date-tab-item { + position: relative; + padding: 0 20px; + height: 100%; + width: 100%; + border-radius: 40px; + color: #6D6D6D; + font-size: 28px; + font-weight: bold; + @include center(); + + img { + height: 50px; + width: 50px; + padding: 0 16px; + } + .more { + width: 20px; + height: 12px; + } + /* &.active::after { + content: ''; + width: 88px; + position: absolute; + right: 25%; + bottom: -20px; + box-sizing: border-box; + border-bottom: 8px solid $green; + } */ + &.active { + color: #333; + background-color: $green; + } + &.notClick { + background-color: $border_color; + color: #fff; + border: 1px solid #fff; + } + } + .date-tab-item:nth-child(3) { + border-right: 1px solid #E0E0E0; + } + /* .date-tab-item:first-child { + border-top-left-radius: 15px; + border-bottom-left-radius: 15px; + } + .date-tab-item:last-child { + border-top-right-radius: 15px; + border-bottom-right-radius: 15px; + } */ + } + } + } + .psy-tab-bar { + height: 50px; + position: relative; + margin: 20px 0 40px 0; + padding: 0 20px; + .psy-tab-con { + background-color: #EEEEEE; + border-top-left-radius: 40px; + border-top-right-radius: 40px; + border-bottom-left-radius: 40px; + border-bottom-right-radius: 40px; + .psy-tab-list { + display: flex; + justify-content: space-around; + align-items: center; + color: #fff; + height: 50px; + width: 100%; + /* background-color: red; */ + .psy-tab-item { + position: relative; + padding: 0 20px; + color: #6D6D6D; + height: 100%; + width: 100%; + font-size: 28px; + border-radius: 40px; + font-weight: bold; + @include center(); + &.active { + color: #333; + background-color: $green; + } + } + } + } + } + .main { + position: relative; + height: calc(100vh - 200px); + overflow: scroll; + .top { + flex: 1; + .title { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0px 32px 20px 26px; + font-size: 36px; + .title-left { + font-weight: bold; + .van-icon { + margin-left: 5px; + font-size: 18px; + } + } + } + .monitoring-count { + text-align: left; + padding: 6px 28px; + line-height: 40px; + p { + font-size: 24px; + color: #8B8B8B; + } + } + .pie-chart-con { + flex: 1; + padding: 10px 0 20px 0; + display: flex; + justify-content: space-between; + align-items: flex-start; + .pie-chart-left { + position: relative; + height: 300px; + padding-left: 30px; + width: 35%; + @include center(); + #pieChart { + height: 212px; + width: 212px; + } + } + .pie-chart-right { + height: 300px; + width: 65%; + padding-right: 40px; + @include center(); + .list { + flex-direction: column; + .item { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 24px; + padding: 18px 0; + .item-left { + display: flex; + justify-content: flex-start; + align-items: center; + padding-right: 20px; + .circle { + height: 24px; + width: 24px; + margin: 0 8px; + } + span { + font-size: 24px; + } + .text { + color: #000; + font-size: 24px; + } + } + .item-right { + display: flex; + justify-content: center; + align-items: center; + } + } + } + } + } + .statistics { + position: relative; + padding: 0px 20px 10px 20px; + .list { + flex: 1; + width: 100%; + display: flex; + justify-content: space-around; + align-items: center; + font-size: 32px; + .item { + @include center(); + width: 126px; + padding: 20px; + /* height: px2rem(136); */ + flex-direction: column; + /* border: 1px solid $border_color; + border-radius: 30px; */ + .top { + font-size: 24px; + } + .middle { + font-size: 48px; + font-weight: bold; + padding: 10px; + } + .bottom { + font-size: 18px + } + } + } + } + } + .line { + position: relative; + height: 22px; + background-color: $lineGray; + } + .bottom { + flex: 1; + .echart-container { + height: 500px; + background-color:#fff; + padding: 0 10px; + .echart { + height: 500px; + padding: 0 10px; + } + } + .line-gray { + height: 22px; + width: 100%; + background-color: $lineGray; + margin-top: 20px; + } + .result { + .result-con { + height: 100%; + background-color: #fff; + border-radius: 20px; + &.reminder { + padding: 0 32px 40px 32px; + } + .title { + display: flex; + justify-content: flex-start; + align-items: flex-start; + flex-direction: column; + margin-bottom: 20px; + span { + font-size: 36px; + font-weight: bold; + } + .font-28 { + font-weight: 400; + font-size: 26px; + color: #8B8B8B; + text-align: left; + } + .title-no-data { + padding: 68px 0 26px 30px; + } + p { + font-size: 24px; + color: $green; + } + .title-emo { + font-size: 48px; + padding: 28px 0 42px 0; + text-align: left; + } + .no-data { + height: 500px; + width: 100%; + @include center(); + flex-direction: column; + img { + height: 220px; + width: 350px; + } + p { + color: #999; + font-size: 24px; + padding: 40px 0 130px 0; + } + } + } + .title-text { + padding: 68px 0 26px 30px; + } + .title-reminder { + padding: 68px 0 0 0; + } + .friendly-reminder, .warm-reminder { + display: flex; + justify-content: flex-start; + align-items: flex-start; + flex-direction: column; + margin-bottom: 20px; + background-color: #F2F2F2; + padding: 40px 38px 38px 28px; + p { + font-weight: bold; + text-align: left; + padding-bottom: 22px; + font-size: 30px; + } + span { + text-align: left; + font-size: 24px; + } + } + .mood-list { + display: grid; + grid-template-columns: repeat(2, 1fr); //定义了一个 2x2 的网格布 + grid-template-rows: repeat(2, 1fr); + gap: 42px; + //width: 100%; + padding: 0 88px 40px 74px; + .item { + width: 274px; + height: 188px; + /* padding: px2rem(47) px2rem(57) px2rem(49) px2rem(57); */ + background-color: #F2F6FF; + @include center(); + flex-direction: column; + p { + font-size: 24px; + padding: 0; + color: #666666; + .day { + padding: 10px; + font-size: 56px; + } + .day-text { + font-size: 24px + } + } + } + } + .mood-list-no-data { + height: 500px; + width: 100%; + .no-data { + @include center(); + flex-direction: column; + img { + height: 220px; + width: 350px; + } + p { + color: #999; + font-size: 24px; + padding: 40px 0 130px 0; + } + } + } + } + } + } + &.report { + position: relative; + height: calc(100vh - 300px); + overflow: scroll; + background-color: #f5f5f5; + .content { + position: relative; + .list { + position: relative; + + .item { + display: flex; + justify-content: space-between; + align-items: flex-end; + padding: 68px 30px; + background-color: #fff; + margin-bottom: 22px; + .left { + display: flex; + justify-content: flex-start; + align-items: flex-start; + img { + height: 50px; + width: 50px; + } + .middle { + .title, + .overall, + .trend { + display: flex; + justify-content: flex-start; + align-items: center; + padding-left: 26px; + span, + p { + font-size: 36px; + font-family: Source Han Sans CN; + font-weight: 400; + color: #8d8d8d; + line-height: 60px; + } + } + .title { + span { + padding-right: 40px; + } + p { + color: #282828; + } + } + .overall { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + .left { + p { + padding-left: 40px; + font-weight: bold; + } + } + .right { + img { + height: 30px; + width: 18px; + } + } + } + .trend { + align-items: flex-start; + text-align: left; + } + } + } + .right { + img { + width: 18px; + height: 30px; + } + } + } + &.no-data { + height: calc(100vh - 200px); + width: 100%; + @include center(); + flex-direction: column; + img { + height: 220px; + width: 350px; + } + p { + color: #999; + font-size: 32px; + padding: 40px 0 130px 0; + } + } + } + } + } + } + + .title { + font-size: 32px; + } + .van-popup { + flex: 1; + max-height: 600px; + width: 100%; + background-color: $background; + } + .popup { + /* height: 100%; + width: 100%; */ + background-color: $background; + padding: 40px; + .item { + flex: 1; + padding: 20px; + margin: 30px 0; + text-align: left; + font-size: 28px; + background-color: #fff; + border-radius: 20px; + p { + margin: 10px 0; + } + h5 { + margin: 10px 0; + font-size: 32px; + } + &.first { + padding-top: 0; + } + &.science-tips { + .tips { + width: 120px; + height: 40px; + color: #fff; + @include center(); + background-color: red; + border-top-left-radius: 40px; + border-top-right-radius: 30px; + border-bottom-right-radius: 30px; + } + } + } + .van-button { + height: 40px; + background-color: $green; + color: #fff; + border-radius: 20px; + } + } +} \ No newline at end of file diff --git a/src/views/today/scss/report.scss b/src/views/today/scss/report.scss new file mode 100644 index 0000000..f698601 --- /dev/null +++ b/src/views/today/scss/report.scss @@ -0,0 +1,321 @@ +.report { + height: 100vh; + width: 100%; + overflow: hidden; + background-color: #F5F5F5; + font-family: Source Han Sans CN; + + .main { + height: calc(100vh - 90px); + overflow: scroll; + background-color: #fff; + + .line { + height: 22px; + background-color: $lineGray; + } + + .overall-rating { + padding: 46px 30px; + margin-bottom: 18px; + + .con { + padding: 34px 36px; + display: flex; + justify-content: flex-start; + align-items: flex-start; + flex-direction: column; + font-size: 28px; + background: #FFFFFF; + border: 1px solid #535353; + box-shadow: 2px 10px 0px 0px $green; + border-radius: 10px; + + p { + font-size: 36px; + font-family: Source Han Sans CN; + color: #666666; + + .bold { + color: #282828; + font-weight: bold; + } + } + + .space-between { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + + .time { + font-size: 24px; + } + } + + .normal { + font-size: 26px; + line-height: 42px; + text-align: left; + color: #666666; + } + + .bold-pro { + color: #282828; + font-size: 48px; + font-weight: bold; + padding: 24px 0; + } + } + } + + .pie-chart-top { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: 46px 30px 32px 30px; + + p { + font-size: 24px; + font-family: Source Han Sans CN; + line-height: 42px; + } + + .bold { + font-size: 36px; + font-weight: bold; + color: #282828; + line-height: 36px; + } + } + + .count { + padding: 0 30px 10px 30px; + text-align: left; + + p { + font-size: 24px; + font-family: Source Han Sans CN; + font-weight: 400; + color: #8B8B8B; + line-height: 36px; + } + } + + .pie-chart-con { + flex: 1; + padding: 10px 0 20px 0; + display: flex; + justify-content: space-between; + align-items: flex-start; + background-color: #fff; + + .pie-chart-left { + position: relative; + height: 300px; + padding-left: 30px; + width: 35%; + @include center(); + + #pieChart { + height: 212px; + width: 212px; + } + } + + .pie-chart-right { + height: 300px; + width: 65%; + @include center(); + + .list { + display: flex; + justify-content: center; + flex-direction: column; + .item { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 24px; + padding: 18px 0; + .item-left { + display: flex; + justify-content: flex-start; + align-items: center; + padding-right: 20px; + + .circle { + height: 24px; + width: 24px; + margin: 0 8px; + } + + span { + font-size: 24px; + } + + .text { + color: #000; + font-size: 24px; + } + } + + .item-right { + @include center(); + span { + font-size: 24px; + } + } + .status { + padding: 0 10px; + @include center(); + img { + height: 30px; + width: 18px; + padding: 0 6px ; + } + } + } + } + } + } + + .statistics { + position: relative; + padding: 10px 28px 10px 28px; + .list { + flex: 1; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 32px; + + .item { + @include center(); + width: 136px; + padding: 10px; + /* height: px2rem(136); */ + flex-direction: column; + border: 1px solid $border_color; + border-radius: 30px; + .top { + font-size: 24px; + } + + .middle { + font-size: 48px; + font-weight: bold; + padding: 10px; + } + + .bottom { + font-size: 18px + } + } + } + } + + .bar-chart { + height: 700px; + background-color: #fff; + padding: 0 10px; + + .echart { + height: 700px; + padding: 0 10px; + } + } + + .advice { + padding: 52px 30px 60px 30px; + + .content { + background: #F2F6FF; + border-radius: 20px; + padding: 40px 30px; + text-align: left; + + p { + font-size: 30px; + font-weight: 400; + color: #707070; + line-height: 46px; + } + + .title { + font-size: 36px; + font-weight: bold; + color: $green; + line-height: 36px; + padding-bottom: 26px; + } + } + } + + .overview { + padding: 0 30px 32px 30px; + + .content { + .title { + text-align: left; + + .title-text { + font-size: 36px; + font-weight: bold; + color: #282828; + line-height: 36px; + } + + .mood-list { + display: grid; + grid-template-columns: repeat(2, 1fr); //定义了一个 2x2 的网格布 + grid-template-rows: repeat(2, 1fr); + gap: 42px; + padding: 42px 42px 44px 40px; + + .item { + width: 214px; + height: 198px; + background-color: #F2F6FF; + display: flex; + justify-content: center; + align-items: flex-start; + flex-direction: column; + padding-left: 60px; + + p { + font-size: 28px; + padding: 0; + color: #666666; + @include center(); + /* align-items: flex-end; */ + .day { + /* padding: 5px; */ + font-size: 56px; + } + + .day-text { + font-size: 24px; + padding: 0 10px; + } + img { + height: 30px; + width: 18px; + } + } + } + } + } + } + } + &.no-data { + @include center(); + flex-direction: column; + p { + font-size: 32px; + } + } + } +} \ No newline at end of file diff --git a/src/views/today/scss/signs-details.scss b/src/views/today/scss/signs-details.scss new file mode 100644 index 0000000..22f6214 --- /dev/null +++ b/src/views/today/scss/signs-details.scss @@ -0,0 +1,386 @@ +.signs { + min-height: 100vh; + width: 100%; + overflow: hidden; + background-color: #fff; + .main { + position: relative; + height: calc(100vh - 100px); + overflow: scroll; + .date { + padding: 20px 40px; + color: #8B8B8B; + display: flex; + justify-content: space-between; + align-items: center; + /* justify-content: space-around; */ + .left{ + font-size: 28px; + } + .right { + font-size: 32px; + } + } + .circle { + position: relative; + padding: 80px; + display: flex; + justify-content: center; + align-items: center; + .van-circle { + height: 200px !important; + width: 200px !important; + position: relative; + .circle-text { + height: 100%; + padding: 0 20px; + display: flex; + justify-content: center; + align-items: center; + .left { + @include center(); + font-size: 62px; + color: #333; + } + .right { + display: flex; + justify-content: flex-start; + align-self: center; + flex-direction: column; + img { + height: 50px; + width: 50px; + margin: 0 10px; + object-fit: contain; + } + span { + font-size: 18px; + } + } + /* flex-direction: column; */ + } + } + .circle-white { + position:absolute; + bottom: 78px; + right: 45%; + height: 50px; + width: 50px; + border: 2px solid; + border-radius: 50%; + background: #fff; + } + } + .progress { + position: relative; + flex: 1; + font-size: 30px; + padding: 0 40px; + display: flex; + justify-content: space-between; + align-items: center; + .progress-circle { + position: absolute; + top: -12px; + left: 0; + height: 35px; + width: 35px; + background-color: #fff; + border-radius: 50%; + border: 12px solid; + z-index: 99; + } + .state-item { + width: 100%; + .state-line { + position: relative; + height: 30px; + font-size: 32px; + &.low { + border-top-left-radius: 20px; + border-bottom-left-radius: 20px; + } + &.blue { + background-color: $green; + } + &.hight { + background-color: $com_red; + border-top-right-radius: 20px; + border-bottom-right-radius: 20px; + } + } + .state-text { + padding: 40px 0 40px 0; + @include center(); + color: #333; + font-weight: bold; + } + } + } + .statistics { + position: relative; + padding: 0px 28px 10px 28px; + .list { + flex: 1; + width: 100%; + display: flex; + justify-content: space-around; + align-items: center; + font-size: 32px; + .item { + display: flex; + justify-content: flex-start; + align-items: flex-start; + width: 126px; + padding: 30px 60px 30px 20px; + /* height: px2rem(136); */ + flex-direction: column; + border: 1px solid $border_color; + border-radius: 30px; + color: #fff; + .top { + font-size: 24px; + } + .middle { + font-size: 48px; + /* padding: 10px; */ + } + .bottom { + font-size: 24px + } + .line { + height: 3px; + width: 100%; + margin: 5px 0; + background-color: #fff; + @include center(); + } + } + } + } + .warn-tips { + padding: 40px 40px; + display: flex; + justify-content: flex-start; + align-items: center; + .left { + img { + height: 60px; + width: 60px; + object-fit: contain; + margin-right: 30px; + } + } + .right { + font-size: 28px; + .orange { + color: #edb21d; + } + } + } + .tab-bar{ + padding: 20px 40px; + position: relative; + .date-tab-con { + height: 50px; + display: flex; + justify-content: flex-start; + align-items: center; + background: #fff; + border-top-left-radius: 40px; + border-top-right-radius: 40px; + border-bottom-left-radius: 40px; + border-bottom-right-radius: 40px; + .date-tab-list { + display: flex; + justify-content: space-around; + align-items: center; + color: #fff; + flex: 1; + height: 50px; + .date-tab-item { + position: relative; + margin: 0 8px; + height: 100%; + width: 100%; + border-radius: 40px; + color: #6D6D6D; + font-size: 28px; + font-weight: bold; + @include center(); + background-color: #e6e6e6; + img { + height: 50px; + width: 50px; + padding: 0 16px; + } + .more { + width: 20px; + height: 12px; + } + /* &.active::after { + content: ''; + width: 88px; + position: absolute; + right: 25%; + bottom: -20px; + box-sizing: border-box; + border-bottom: 8px solid $green; + } */ + &.active { + color: #333; + background-color: $green; + } + &.notClick { + background-color: $border_color; + color: #fff; + border: 1px solid #fff; + } + } + .date-tab-item:nth-child(3) { + border-right: 1px solid #E0E0E0; + } + /* .date-tab-item:first-child { + border-top-left-radius: 15px; + border-bottom-left-radius: 15px; + } + .date-tab-item:last-child { + border-top-right-radius: 15px; + border-bottom-right-radius: 15px; + } */ + } + img { + height: 50xp; + width: 50px; + object-fit: contain; + } + } + } + .line-chart-con { + height: 600px; + padding: 20px; + .line-chart { + height: 580px; + padding: 20px; + background-color:#fff; + border: 1px solid $com_light_green; + border-radius: 40px; + } + } + .bottom { + flex: 1; + .result { + padding: 20px 40px; + .result-con { + .title { + span { + font-size: 46px; + font-weight: bold; + } + + } + .status { + display: flex; + flex-wrap: wrap; + align-items: center; + align-content: space-between; + justify-content: space-between; + width: 100%; + margin: 20px 0; + p { + font-size: 52px; + color: $green; + font-weight: bold; + } + ul { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: flex-start; + li { + width: 40px; + height: 30px; + border-radius: 20px; + position: relative; + & + li { + margin-left: 10px; + } + &.toobad { + background-color: #ff5f8b; + &:after{ + background-color: #ff5f8b; + } + } + &.ordinary { + background-color: #2ea7e0; + &:after{ + background-color: #2ea7e0; + } + } + &.sameas { + background-color: #8dc21f; + &:after{ + background-color: #8dc21f; + } + } + &.excellent { + background-color: #179b3b; + &:after{ + background-color: #179b3b; + } + } + &.active { + width: 240px; + &:after { + opacity: 1; + } + &:before { + opacity: 1; + } + } + &:after { + content: ''; + display: block; + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + width: 60px; + height: 60px; + opacity: 0; + border-radius: 50%; + } + &:before { + content: ''; + display: block; + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + width: 35px; + height: 35px; + opacity: 0; + border-radius: 50%; + background-color:#fff; + z-index: 2; + } + } + } + } + .tips { + font-size: 24px; + } + } + } + .wran-tips { + padding: 20px 40px 50px 40px; + font-size: 24px; + .tips-title { + font-weight: bold; + padding: 20px 0; + color: #333; + } + } + } + } +} \ No newline at end of file diff --git a/src/views/today/signsDetails.vue b/src/views/today/signsDetails.vue new file mode 100644 index 0000000..a5bc3d8 --- /dev/null +++ b/src/views/today/signsDetails.vue @@ -0,0 +1,417 @@ + + + + +