fI^KE@@y%Js}%ypL^VhK8=~C@b@Qh1@EvT
z!KG2YMN2hl4zr@Hfx@>~Jq=puo3fB8N9GZsU@^;s9y?jF6Bm~4^!3}ey4bXhhE1;c
zdHlk%J$kZ|eY4T=ZWgQ`DBax{IXY)A|6I5Khi`wX+h}wygOKn|kbb0)=78%%jec6S
zf7V)dJ=E$gd*XC8i;x2>BwjjHeaJNu`QTL5Hk;ideRp-mzVS)L4!#yA*DF_7y4v7<
z$3Jruk}If);mR%+3PKs}I)!mWr3skU{!+?x#}Pd8zT4F1%8alO7#g~^!!?<3`Iqj|
zg}nZ8`sRTnvez2vG_9qH`}Fj7-x@Lut6U!7*hlGtAOlCz?-@86r?zjkY?fWS6hde>
z;nI0@V|uaHeZ4q$e%Wy}!dbrp>Ki*TG3wHJ^!xG@@weY^xlZYt*MzRn@TB7uvI|Si
zTt%E;Y`RWo+ppt2{zOd9M2u6%Z#QhNBI5VC_65BQpCXRAb{s>wTu0)9`$*&xKKCbL
za{6X$q1Qw-2~*xgkVzjEB2+tJH)pCT@0$=2lRC!TQ6?%=t$HxY$`
zhVv9sCW$oih*&0naEw^~F=%)bG3xy}@KdTKn&R?G6){Yb|^DJ@>Sj_mP-o
zO%xr&EKFJ!=gM7KoHPOPK1`!!?St1fG0W~O{$(fxj;Qs3*`E(H->ENro)DaBmTf@+M-t
z9M0Inn~WbXWEMw+V!pFD2$wKkY!TrLuL33_MrNOPAu?E5!&8MmV-fz%1aZcK2xVjd
zf)u+pr%%s6h!v{E5)kHsI(J5}#Miqp>oBh3G7GdOd$JG$O1P-Cy^n=j6~;U7o`h;a
zSB0%U%!ih5vC=K+*E6gLaAijP3zlLM4zVI3B)siiwAJ<&EAHC^;CX683$snE$dudf
z?`0}McD2qXSBy3Azv$QIQK8`L4HobsdJAkbQ7YMOSmK*hsNU;HM9%CF)(^~s7hZ|)
z=gJ(+(}v~_M2F6
z22bDc81qgsJyes=$txak2HRo#EiW8F5ClOG1VIo4K@bE%unpxe-OCg*8eHHC00000
LNkvXXu0mjf?&nz4
literal 0
HcmV?d00001
diff --git a/static/tab-home-active.svg b/static/tab-home-active.svg
new file mode 100644
index 0000000..a017d6c
--- /dev/null
+++ b/static/tab-home-active.svg
@@ -0,0 +1,5 @@
+
diff --git a/static/tab-home.png b/static/tab-home.png
new file mode 100644
index 0000000000000000000000000000000000000000..debac2240b482ee2b031cd91819db2dd186204e1
GIT binary patch
literal 1257
zcmV=P)?1IM4Qlr^bJsXqiHBF1*$%@aW1^k01|C!Z6n#091l9S5lyoWWOnPB
zP0mj`TCF^5&;EU8=IoiXj1dGu5ClOG1VIo4K@bGdFSOPVb6I#^C@2VJX1RnbT)}T#
znu<`y;<0lMS2~}Yp`13);dN{$GcZuxlT+pZSMUv&<}Ql0b%TbG<{Zz%e*8YRQ_xyJ
zDijO~1vlM<>nZ3>^iZw!6KuPZ$(-HAm3c!bxRb1S>y1luTgbxe_3FW2e
zIk5E6Cz0*ZBcr%hUUZxr%?+*f?hrzngDy94{KJoX&Udmf5_ye+k;wL~mUUjWb80x_
zTSJEVK$p&A7}JZ*uIt753*Wg7X=%RpDj;T-1tvxvI*)N*k|O?cebseH*S#imv)a7i
z^zSQUYqh@;6|qvSx_KfFX>Im-6S2D|VqL7+Y$hrqexGY!FuL$4qM3E=I6lfH>WLM1
zPvjD&y@}Y}eY0tv6T2c__9mi`=6BbQpTBT1Q4znLn|Bvc!KybAC3f~IT7(J&j6#1qTaYh~v?bPSr_M2x!uRU9uxW^XXr5Y>KZWn&VeUa#A+
z_gtTyL-52HbE4?l>8a=}4hq@H;vDH@aaMX{aVA}}IKj+`?yK{?_E|fhShrivCr+OE
zBKB|lU!7ybiQ+!PbQWe~aFN&y{QT-dIrb0^C{8p(N!`f3t2Tx|8290$96pKQ5zjHn
z5N8$cEuv8#MZ|KrWN*laaanjam027ShRH
z2=4}e1hL102n8~gUKmnsj@Ei_yFxWx0^SO0-x@8
z)(^2ztHOBq-IGu)=&G>woB7c4E!HOWi7&G>AQa>R^};Mm6GED?pafL#E=wb#^X8Q2
zp$#p}HnB95Q|3V2666@ex00GU@W06Fk*9<*KlE2XxP;LH+fHOKj+BK%SfToWz3-Ng
zh1Y_O1C!wJ;UkZ51#cy>$#tK2H@a_`?qxd#t@Uo6hnKKE5EG-0!qvHgudq-vm~4#K
z7s$2Q*L@Rf26x|Z8}r{{dboq<-B&zjupPGF@xl=VK@bE%5ClOG1VIo4>nnc)i2Af!
T?
+
+
+
+
diff --git a/static/tab-mine-active.png b/static/tab-mine-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8e50d9c0e40c8aaa3bfb3317a527a98c018f894
GIT binary patch
literal 1271
zcmVMHI)UzbJ@9`6EF5KBB_^z>kw}NIf+3oR$WZ
z1V~9ev(O6x@mn0A{=T9A-POGVpLI3Q6{duE+Db)a@)Cl9?%ixed!
z>)Ewu)|rp=Q^qqd|%(>PS))N0d5DOp9iU~ry<^I4^>lKr~~xxux_L$C_N5B
z|JD}qR)_l~5XIfBd%!JR>K8z&g^mb#JH&-*aG_oe0^G{7On?8McY#pjofK~k`C8v_>=60ilOYC;8?l6)abpxE|q56W=&mNfO#a%w<57
zo}jy;$>csfF^i4H62^hf`{4Mjk%-awTupz1uC!o-z&lCXY`xkO*zPJ;MjA%f4UCjcMZ8XXc;*T~
z#RNl-ICAm^CgGzmZkT(c2!Xi*B&f!Wp7}eGh$m0a8H>n;nqV%_Qz$-czAkC}>hxSP
z5x+GTk<5vDB##QJ=9BpNON-$gg|sf%){s#}I>{uG-dO1RWFo4wb_E375xbx2hYXVKo3$l;dxhl-`aWwS@*sRVjY*KvHZJbA
zZ=tb-?;kVU_O0!W;ZycRlwm%#iAaqjM=PkO*DpY*=_bB@BuN2cwe?8N?TIMVi)l`V
zj7nXfeN)9Nlk-@)RSKg|`cA*^OHvB^Ur*En)JN-NXu1Qp3SHBdPuDdC>aR?NvryNZ>#XHM9mv*=MeSp*k;~z>IBVm}Z~f{$IQkFGTF>^%w+Hl?Wf4a+=Ygy7@3Ews{y<9a@@;5BU35N;
zF(sG7ZPcL}cZ+Bs-Zk2ZIGaeP-&q^d`^*002ovPDHLkV1i*-WoG~Y
literal 0
HcmV?d00001
diff --git a/static/tab-mine-active.svg b/static/tab-mine-active.svg
new file mode 100644
index 0000000..8ac09a5
--- /dev/null
+++ b/static/tab-mine-active.svg
@@ -0,0 +1,5 @@
+
diff --git a/static/tab-mine.png b/static/tab-mine.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3d7de5017c9d506fdcd9b038bcca4e442168a6a
GIT binary patch
literal 1301
zcmV+w1?u{VP)qE6#cW3wB
znQiBjoa}9PH#_sqnb|XE&JyDBcsw4D$K&yMJRXn7TAYjjd7*_&nT!l3i2z)B~a1vAlZlrA#P_-
z+(|)BL=i25eNVZ1s;%wN7P8(ELbNa_?WSB_NlCoF8>n9x6nEis$a;i{(jyGyxrT_h
zYPidZ0u;BC^@F~Ja``Oda-kUlu9!FL6x54Ch)pER?AgkungJcmQ
z#9b8RH#P-aVdMFHc`M1B2XZy;fOsqC$qz6Y%XejP87ZcPF&e6nmC@5yy$s=zb)iXD4=(VWM%;?wNcsqet$~-9w)1-$N^caIwmYgKnP{1HO5n65y&x?j+PscKtya^OgNMz8
zKWn^ZEc6Pgi9`i&Xmd(y|lDsB;wN2AG%cT
zG89o>!8JT_1qQ{PrXF#;Z$KxZr?=nO8!^2`T!ALY#*BUXc_I-%KKYsXkOp~%xIhrd
z2aG)dMLd~M#81pc425(dA4!)Js>Yq@`Jg|Mi0}7)m`p@afo%=Raz@&`6UkpJm4qV7
zFRcoQdmSudN`EcGP{o9ElNS;__b*SJvl=r}(Q$9mPM}q~4~M~X9OmX~y7R!xiJy%Y
z1o9qhA{K;vB8^U<;W94zvaha>9_vZvxuHSnacd&t<`7G(BV2`vg=%$XO#y$cR`si|
zzm=YV%d3|st%+Cw^?aJ0LBmwn;P9xvI5n+*o1G0)VR-y$YFZBrk7_7(r20Ixy`Y}6
zCL)FhEaeW_FsorsBRr8=FuR_Z@|?(Qd7{-hG2z>Jf7eTT{M*y|>b2{7etsb|{Eh#^
zbIlU5Amn4#L=20MxLL!8N5|F-Y499g(;N}S-BwpD6x3YYMvsh+MGmSPFQmL_Ja2J}IBHOhV2IOsFrAgjf7lnqHjGP%(`cOU;)3@yN<`e9%v?V4>b2{!MZ|j=CZY@Z
zLG=wbqba@n7W`a}e4Tqwv>X^W6>9z5k#?M)Q&`SMm*N{&&$
z%++lF#rbv}$SrM0zhGghcZT_VOdP?vEf;%p$D
zer2u9F|NK#$@9)&GC>G&8`+3Z(Q!ZS`(kxg^sNSY6Eo6`%e_G$@3Y+prw~H4U~v)F
z#-OKCF5B_Dlkf;Khr4ok-uj-1$K&yMJRXn7
+
+
+
+
diff --git a/utils/api.js b/utils/api.js
index b8d79b3..6d84dcb 100644
--- a/utils/api.js
+++ b/utils/api.js
@@ -1,50 +1,75 @@
import config from '../config.js'
-import storage from './storage.js'
const request = (options) => {
return new Promise((resolve, reject) => {
+ const fullUrl = config.baseUrl + options.url
+ console.log('=== 请求开始 ===')
+ console.log('URL:', fullUrl)
+ console.log('Method:', options.method || 'GET')
+ console.log('Data:', options.data)
+
uni.request({
- url: config.baseUrl + options.url,
+ url: fullUrl,
method: options.method || 'GET',
data: options.data || {},
header: {
'Content-Type': 'application/json',
- 'Authorization': storage.getToken() ? `Bearer ${storage.getToken()}` : '',
...options.header
},
timeout: config.timeout,
success: (res) => {
+ console.log('=== 请求成功 ===')
+ console.log('StatusCode:', res.statusCode)
+ console.log('Response:', res.data)
+
const { statusCode, data } = res
if (statusCode === 200) {
if (data.code === 0 || data.success === true) {
resolve(data)
} else {
- uni.showToast({
- title: data.message || '请求失败',
- icon: 'none'
+ console.error('=== 业务错误 ===')
+ console.error('Code:', data.code)
+ console.error('Message:', data.message)
+ uni.showModal({
+ title: '请求失败',
+ content: data.message || '服务器返回错误',
+ showCancel: false
})
reject(data)
}
- } else if (statusCode === 401) {
- storage.removeToken()
- storage.removeUserInfo()
- uni.reLaunch({
- url: '/pages/login/login'
- })
- reject(res)
} else {
- uni.showToast({
+ console.error('=== HTTP错误 ===')
+ console.error('StatusCode:', statusCode)
+ console.error('Response:', data)
+ uni.showModal({
title: '网络错误',
- icon: 'none'
+ content: `状态码: ${statusCode}`,
+ showCancel: false
})
reject(res)
}
},
fail: (err) => {
- uni.showToast({
- title: '网络连接失败',
- icon: 'none'
+ console.error('=== 请求失败 ===')
+ console.error('Error:', err)
+ console.error('Error Message:', err.errMsg)
+
+ let errorMsg = '网络连接失败'
+ if (err.errMsg) {
+ if (err.errMsg.includes('timeout')) {
+ errorMsg = '请求超时,请检查网络'
+ } else if (err.errMsg.includes('fail')) {
+ errorMsg = '网络连接失败,请检查网络设置'
+ } else if (err.errMsg.includes('request:fail')) {
+ errorMsg = `连接失败: ${err.errMsg}`
+ }
+ }
+
+ uni.showModal({
+ title: '错误',
+ content: errorMsg,
+ showCancel: false
})
reject(err)
}
@@ -53,21 +78,21 @@ const request = (options) => {
}
const api = {
- login(phone, code) {
+ wxLogin(code) {
return request({
url: config.api.login,
method: 'POST',
data: {
- phone,
- code
+ wxMiniCode: code
}
})
},
- getQuestion() {
+ getQuestion(categorySn) {
return request({
url: config.api.getQuestion,
- method: 'POST'
+ method: 'POST',
+ data: categorySn ? { category_sn: categorySn } : {}
})
},
@@ -82,6 +107,13 @@ const api = {
})
},
+ getAllCategory() {
+ return request({
+ url: config.api.getAllCategory,
+ method: 'POST'
+ })
+ },
+
get(url, data = {}) {
return request({
url,