From c7b1177c8d5f7b4d78b73410bbc30743e029a6fa Mon Sep 17 00:00:00 2001 From: educoder_weapp Date: Sat, 26 Oct 2019 17:48:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=8D=87=E7=BA=A7UI,=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bowerrc | 3 - .gitignore | 1 + README.md | 21 +- app.json | 34 +- components/icon/myicon.wxss | 19 +- constants/api.js | 0 constants/appconstants.js | 0 images/1.png | Bin 41726 -> 0 bytes images/2.png | Bin 41412 -> 0 bytes images/3.png | Bin 74425 -> 0 bytes images/avatar.png | Bin 0 -> 10742 bytes images/course.png | Bin 1018 -> 0 bytes images/cry.png | Bin 0 -> 21821 bytes images/none.png | Bin 0 -> 19568 bytes images/none2.png | Bin 0 -> 14938 bytes images/tabbar-icon/tabbar_contact_default.png | Bin 0 -> 416 bytes images/tabbar-icon/tabbar_contact_pressed.png | Bin 0 -> 222 bytes images/tabbar-icon/tabbar_record_default.png | Bin 0 -> 943 bytes images/tabbar-icon/tabbar_record_pressed.png | Bin 0 -> 773 bytes .../tabbar-icon/tabbar_settings_default.png | Bin 0 -> 1179 bytes .../tabbar-icon/tabbar_settings_pressed.png | Bin 0 -> 1108 bytes images/tabbar-icon/tabbar_sign_default.png | Bin 0 -> 719 bytes images/tabbar-icon/tabbar_sign_pressed.png | Bin 0 -> 604 bytes images/topic.png | Bin 29130 -> 0 bytes .../{shouquan/shouquan.js => about/about.js} | 13 +- .../outside.json => about/about.json} | 0 pages/about/about.wxml | 24 + pages/about/about.wxss | 1 + pages/addclass/addclass.js | 65 +-- pages/addclass/addclass.wxml | 16 +- pages/addclass/addclass.wxss | 39 +- pages/classdetail/classdetail.js | 37 +- pages/classdetail/classdetail.wxml | 5 +- pages/classdetail/classdetail.wxss | 20 +- pages/classes/classes.js | 44 +- pages/classes/classes.wxml | 37 +- pages/classes/classes.wxss | 33 +- pages/classroom/classroom.js | 11 +- pages/classroom/classroom.wxml | 25 +- pages/classroom/classroom.wxss | 22 +- pages/classsetting/classsetting.js | 2 +- pages/classsetting/classsetting.wxss | 1 - pages/config/config.js | 24 - pages/config/config.json | 1 - pages/config/config.wxml | 13 - pages/config/config.wxss | 1 - pages/createclass/createclass.js | 108 ++++ .../createclass.json} | 0 pages/createclass/createclass.wxml | 13 + pages/createclass/createclass.wxss | 30 + pages/game/game.js | 253 --------- pages/game/game.json | 1 - pages/game/game.wxml | 33 -- pages/game/game.wxss | 191 ------- pages/https/https.js | 54 -- pages/https/https.json | 1 - pages/https/https.wxml | 15 - pages/https/https.wxss | 1 - pages/index/index.js | 25 - pages/index/index.json | 3 - pages/index/index.wxml | 11 - pages/index/index.wxss | 41 -- pages/outside/outside.js | 74 --- pages/outside/outside.wxml | 7 - pages/outside/outside.wxss | 18 - pages/session/session.js | 67 --- pages/session/session.json | 1 - pages/session/session.wxml | 16 - pages/session/session.wxss | 1 - pages/setting/setting.js | 20 +- pages/setting/setting.wxml | 13 +- pages/setting/setting.wxss | 22 +- pages/shouquan/shouquan.wxml | 5 - pages/shouquan/shouquan.wxss | 0 pages/websocket/websocket.js | 109 ---- pages/websocket/websocket.json | 1 - pages/websocket/websocket.wxml | 17 - pages/websocket/websocket.wxss | 1 - vendors/wafer-client-sdk/.bower.json | 42 -- vendors/wafer-client-sdk/LICENSE | 24 - vendors/wafer-client-sdk/README.md | 247 -------- vendors/wafer-client-sdk/bower.json | 32 -- vendors/wafer-client-sdk/index.js | 26 - vendors/wafer-client-sdk/lib/constants.js | 20 - vendors/wafer-client-sdk/lib/login.js | 175 ------ vendors/wafer-client-sdk/lib/request.js | 125 ----- vendors/wafer-client-sdk/lib/session.js | 18 - vendors/wafer-client-sdk/lib/tunnel.js | 528 ------------------ vendors/wafer-client-sdk/lib/utils.js | 18 - vendors/wafer-client-sdk/lib/wxTunnel.js | 32 -- 读我.txt | 15 - 91 files changed, 460 insertions(+), 2506 deletions(-) delete mode 100644 .bowerrc delete mode 100644 constants/api.js delete mode 100644 constants/appconstants.js delete mode 100644 images/1.png delete mode 100644 images/2.png delete mode 100644 images/3.png create mode 100644 images/avatar.png delete mode 100644 images/course.png create mode 100644 images/cry.png create mode 100644 images/none.png create mode 100644 images/none2.png create mode 100644 images/tabbar-icon/tabbar_contact_default.png create mode 100644 images/tabbar-icon/tabbar_contact_pressed.png create mode 100644 images/tabbar-icon/tabbar_record_default.png create mode 100644 images/tabbar-icon/tabbar_record_pressed.png create mode 100644 images/tabbar-icon/tabbar_settings_default.png create mode 100644 images/tabbar-icon/tabbar_settings_pressed.png create mode 100644 images/tabbar-icon/tabbar_sign_default.png create mode 100644 images/tabbar-icon/tabbar_sign_pressed.png delete mode 100644 images/topic.png rename pages/{shouquan/shouquan.js => about/about.js} (75%) rename pages/{outside/outside.json => about/about.json} (100%) create mode 100644 pages/about/about.wxml create mode 100644 pages/about/about.wxss delete mode 100644 pages/config/config.js delete mode 100644 pages/config/config.json delete mode 100644 pages/config/config.wxml delete mode 100644 pages/config/config.wxss create mode 100644 pages/createclass/createclass.js rename pages/{shouquan/shouquan.json => createclass/createclass.json} (100%) create mode 100644 pages/createclass/createclass.wxml create mode 100644 pages/createclass/createclass.wxss delete mode 100644 pages/game/game.js delete mode 100644 pages/game/game.json delete mode 100644 pages/game/game.wxml delete mode 100644 pages/game/game.wxss delete mode 100644 pages/https/https.js delete mode 100644 pages/https/https.json delete mode 100644 pages/https/https.wxml delete mode 100644 pages/https/https.wxss delete mode 100644 pages/index/index.js delete mode 100644 pages/index/index.json delete mode 100644 pages/index/index.wxml delete mode 100644 pages/index/index.wxss delete mode 100644 pages/outside/outside.js delete mode 100644 pages/outside/outside.wxml delete mode 100644 pages/outside/outside.wxss delete mode 100644 pages/session/session.js delete mode 100644 pages/session/session.json delete mode 100644 pages/session/session.wxml delete mode 100644 pages/session/session.wxss delete mode 100644 pages/shouquan/shouquan.wxml delete mode 100644 pages/shouquan/shouquan.wxss delete mode 100644 pages/websocket/websocket.js delete mode 100644 pages/websocket/websocket.json delete mode 100644 pages/websocket/websocket.wxml delete mode 100644 pages/websocket/websocket.wxss delete mode 100644 vendors/wafer-client-sdk/.bower.json delete mode 100644 vendors/wafer-client-sdk/LICENSE delete mode 100644 vendors/wafer-client-sdk/README.md delete mode 100644 vendors/wafer-client-sdk/bower.json delete mode 100644 vendors/wafer-client-sdk/index.js delete mode 100644 vendors/wafer-client-sdk/lib/constants.js delete mode 100644 vendors/wafer-client-sdk/lib/login.js delete mode 100644 vendors/wafer-client-sdk/lib/request.js delete mode 100644 vendors/wafer-client-sdk/lib/session.js delete mode 100644 vendors/wafer-client-sdk/lib/tunnel.js delete mode 100644 vendors/wafer-client-sdk/lib/utils.js delete mode 100644 vendors/wafer-client-sdk/lib/wxTunnel.js delete mode 100644 读我.txt diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 7c05067..0000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "vendors" -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 154f96c..d9e1198 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ $RECYCLE.BIN/ .Trashes lib_refer +towxml project.config.json # Node.js diff --git a/README.md b/README.md index 7b7a1c0..7b96e6a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -使用说明 -======== +# 功能介绍 -使用代码前,请先修改 `app.js` 里面的域名配置。 \ No newline at end of file +- 学员可以在点击右下角”加入课堂”选择课程加入,教员可以在“加入课堂中”新建课程 + +- 长按相应课程可以退出学习 + +- 进入课堂界面会显示在位,头像为彩色,若退出课堂界面则会显示灰色头像 + +- 教员在课堂界面中可以直观地看到学员在位情况,可以选择学员让其起立回答问题,并且对学员可以进行加分、减分操作 + +- 学员可以收到教员让其起立提问、回答的提示,还可以点击“我要提问、回答” + +- 在课堂界面右下角进入“更多”可以查看本课堂的课程文件资源 + +- 教员可以在课程的设置界面中更新课程的名称,还可以将学员移除本课程的学习 + +## 其他 + +- 用户可以在设置中更改姓名、用户名 \ No newline at end of file diff --git a/app.json b/app.json index 2969b24..0d211d2 100644 --- a/app.json +++ b/app.json @@ -1,28 +1,38 @@ { "pages": [ - "pages/classes/classes", "pages/changeuser/changeuser", - "pages/index/index", - "pages/config/config", - "pages/https/https", - "pages/session/session", - "pages/websocket/websocket", - "pages/game/game", - "pages/shouquan/shouquan", - "pages/outside/outside", "pages/setting/setting", "pages/user/user", "pages/addclass/addclass", "pages/classdetail/classdetail", "pages/classroom/classroom", - "pages/classsetting/classsetting" + "pages/classsetting/classsetting", + "pages/about/about", + "pages/createclass/createclass" ], "window": { "backgroundTextStyle": "light", - "navigationBarBackgroundColor": "#fff", - "navigationBarTitleText": " ", + "navigationBarBackgroundColor": "#f2f2f2", + "navigationBarTitleText": "积分教室", "navigationBarTextStyle": "black" }, + "tabBar": { + "selectedColor": "#00C7B7", + "list": [ + { + "pagePath": "pages/classes/classes", + "text": "学习", + "iconPath": "images/tabbar-icon/tabbar_contact_default.png", + "selectedIconPath": "images/tabbar-icon/tabbar_contact_pressed.png" + }, + { + "pagePath": "pages/setting/setting", + "iconPath": "images/tabbar-icon/tabbar_settings_default.png", + "selectedIconPath": "images/tabbar-icon/tabbar_settings_pressed.png", + "text": "设置" + } + ] + }, "sitemapLocation": "sitemap.json" } \ No newline at end of file diff --git a/components/icon/myicon.wxss b/components/icon/myicon.wxss index 2091f3b..c1f795e 100644 --- a/components/icon/myicon.wxss +++ b/components/icon/myicon.wxss @@ -1,11 +1,10 @@ @font-face {font-family: "iconfont"; - src: url('iconfont.eot?t=1571919948950'); /* IE9 */ - src: url('iconfont.eot?t=1571919948950#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('iconfont.woff?t=1571919948950') format('woff'), - url('iconfont.ttf?t=1571919948950') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1571919948950#iconfont') format('svg'); /* iOS 4.1- */ - + src: url('iconfont.eot?t=1572072148156'); /* IE9 */ + src: url('iconfont.eot?t=1572072148156#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1572072148156') format('woff'), + url('iconfont.ttf?t=1572072148156') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1572072148156#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { @@ -27,7 +26,7 @@ content: "\e647"; } .myicon-question:before { - content: "\e670"; + content: "\e648"; } .myicon-internet_class:before { @@ -38,6 +37,10 @@ content: "\e637"; } +.myicon-add:before { + content: "\e600"; +} + .myicon__info { color: #fff; left: 100%; diff --git a/constants/api.js b/constants/api.js deleted file mode 100644 index e69de29..0000000 diff --git a/constants/appconstants.js b/constants/appconstants.js deleted file mode 100644 index e69de29..0000000 diff --git a/images/1.png b/images/1.png deleted file mode 100644 index 11b1459caef7fd2da4969dd383df07051924e402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41726 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 brt#WCVi&W{%(pkG(Wy7ky?CJvW*_=Lh)8^c diff --git a/images/3.png b/images/3.png deleted file mode 100644 index 99de0401466f5c29ec1b672fdf3d7b161798c43b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74425 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

btuJfA&P zw-1IfF)mrw-jY&bd`7o5)ZF<>L>L0SeqQtSRnwZXS4{OTEN~j>@>_xlnQQO_d{9R8 z&~g6Od5J>vhUJwIY?wqV7Z9pu;)PO)pO;q>%w^OD57#4FlyJqzXul|lDNN&t?iN=& zsGaQ3^<`X(e2LHRRfzX2rmP@W@y5g$6Q5A|;J1!5p64|10~S%OKdoLt&mUyA^pIHu z|At}((e==}#)XlH;_nmn+*$?Gijg}&f0)|{GlfEksF?Tix*fUxa^MX<;klHB?i#=G z3bd*Taa|q9s;KHkMdZom8;s}4YyA1!!S05Cg`v|}+2TgDK(w)-zBSm(G+%?vO6-yg zoYhR6MTD@A4W_DC4JvkK6y}71OGjG$?=M?9tmr zCsFz07c%ZWMih^MSoNVOko=5x;FkPEa<7stBvZU_4H&CF>cLjZA#y@79ab>v*_0=C zV#&hb=+ZsMfOu4d%ZK-pWgvTP0qQAjeMDrr=gjX-w22P&>q3Rt=YVh( zTbtfRXjM^<;{9SYz+kLT+kBM-BPmWlBHNatVxV?f8)uI!99}A!i4P&wNBMwOU8D@L*zYPvdpUDtu`s%%r5+Wto9F2wA6MG_=nbeCdzv%auX<1TqC`7-^j0!h z)CQz{*%YJNiGh`e@c8k4xrvXzlad2Qb^?pqDq_W!wV2l4S!zDP0>FX-)K}Y{%p2`q z`V=0sGRt*I)PL6Bw|=~hDq1{^ZtGfSL%$%&p*M_g$!-`?>V<-3m9)Z;ha+l0t?|jFcQ}K$d=Bl4k6pg#5hf!LB(BMQf^(3bP(cb5|1jY{*>t8 zJQ?B4d>Os^e^~kkhrGY{@66?8E-t$kS6k+?ZQEXL*;;ljEZgQM+qT`}@9g_Lf53g- z*EyG77w_Gy!(m0rXU0^)%l9UG zA=f4WWcCDD$08cP%URy(%0=tkfmv~d7PO++?c1|(C6(Czn$h))g%{MN)Z z=Qqw#!X^)QSb58X0!icZQDx0)Y2x~$yX!qK(#bUn8VvghYu6t3S6onQ1Ha7@A zCN;t0sl(1gXH2QD{z-yOM*M}jPH9gPbT z^TC_c%*_Afp-Q?T@bS^}@nPf?xM~b18th`k=!II3*i_?uxPzkpxIO0f-QC^yOiEn{ zFsv>vBuL29?MU5O>5=uF_DX-Om1=tFm@ruID`Gn72G3t_+;|lt^#k{?Y)gw^ zr~9Rw(=8luTcB7grpwDc-TM5Ye9_5N0kEAq{iz0x63_ZO6S4KEDj`S;TAqO*Y;+%P zGechF(eL6&vnC8081G0 zcZE|jF-Ap?`^}N^&Jy3SJm2|(@Z5)CGi=|e4k(4PyXYd~svL>WRfTf&5?}U@G7Xjj z1EWIp)iYUgQ)|1sgLj4?6c$20OiL5CpfyZm^Z5E8G{i%U zXzd#vDkdqvLE6NioKika*5RI1Er%KPcz-6BQ610P|E{~8f`)+36RDF{ee~!8;9Qwt zFa?2*?2V|$+|hyv3D1~*?QZ^(S`f!%hkn!d7iWnNX3xz!JOJhyN=+GyY{Q8jka{j_ zD@IxU*Zbw@$AY&l+1he#3O~uISEl-?+OIom$n2DaZ|v8oY2ByyZ#Y20Oow(1;?5p_ z4~a)*e?Eok#m4z545JyLBb$8U8f%@;0sXAa)W#PCL+5yV8Y@rnv}fRtA2QBm7mrSs zMf(H?1rtONP0v@bJXDnB7wXuW-6z5mqWWJN({2zO zfNb>LNd2k=^i)m<4pGCjq?}LMuFBn`$&4w%K%S&Lb__B5V4u3_Ta2u1Y7` z_TW~I0ko$@)*F2|%7r{5rQI9a>3=C~QO!I0*G)Mv5bgOjU`TzFH z>>EeG{Ma_~WWl7znr0m|x-YiXCaZNYLmMmFD8T4hzpV&~bq$Aj1HD;(aPHTH1(eJ5 zn=fBj6z1~ygxuo$Q9(nAYa|I!2l%mgSpxN%QzB)oq$dmExAhT|u1}!RkNGI($1GZ2 zmCd|hD9XVKQjREL$%Qh!=}$L}m#m;X_^b!|TolcBb~CN6r*yP#t-P#yHE3(rrFFNL zm)iqWx`kvS2Ww4vL21oG&s;#R_$uY^eefp6LWF$?kgOq$E@$hBK~C^nJt2?*N`S#% zhi~8!_5A2PLXR9;AU?BLo#;>gO-fBTSoyG|d5Se+1I63^dAgWfisQq_zQcn+d~eOmg$1 zMg_$)$Ar;Io~-E?=>GRO96M*w8)!jX`~A{yOn^{sI>)0#3Aq`Qea1pp+KDF<#*evu?36mF3i0vQvVQf__d{7F zzdN%bee+a2!-CR!ARjDj5*Xv`L2s`4$%G)D44maDN9ejcIT)6-m7P zO>l>x{B4k>diL(ksFm!Cms_&qfQz`e)nmBoQY$G4N#5N$WHe|Xe5gZFZT2RN z$W54-2wa#@FBNHR!%JCNS$@&$C0j1ab9ZfSKtlR2kdvd|zM0P{sLkTRAr8>X+6H-F zIfS<|Z_Fj{u>v<-S-gklK(*du9(H zL;I8Zx$Q%paLCAzAGT*Ba`T;c(#`|kyZ2x|gmkUh^Oo`W${AZ!X^zX8*$| z2BIUDlEOS*(v);iIW!tV=JKK|AuZrV{bvSr@#bB>SC&-c*4h5k2O)@u4=X870I$-> zB~6!}+kB}F(6e6@sCC~HkxaH?JTolHdM$&|7S^XeIu;!sF#RjlYxQ-tN8!l+gU5)q zmDy}7t+Du_PLHCFU5;Pd-+-V}fgKwN6iBE}H$4a`X+b6USl3;<)_X)K)aU-N6r;gi zXQ`&`DXmv?b(|uZ<13h=!agxxRv~{<*pR`@+;}Kjb!my;>k>gDqCHPL1{Zk0s;}sl zTHGpvN||47;s2!`0=>SQ`}I7_4@o;$w&F~}`F;@S7Y=;9i*fd7B7Kc8H_?>tZkp*G zIIJ}Ahv>i{#iH8$DUD%4->^$h$r{;e5wp~E{3uOJ{my7$(ED~&@L!h1mOF8$=mtdi z=n?!C)-AR)@Mxqt_kzn|=FlAu1GBk={4}MKGP$I$M1PL53k!dKgF$|XX9Fn886=%EWcNHVup&ZwE^pm`~4#Y+Lyz9+TksYRP=aD+-9|w zvtdN4$Z&8Mgkvn?ft9oGib~8SyAFPEnud z4*&IAQ23Dta4^WBEjF6a0NL&D{eBiFAUu^YYT4ySn)3uxT3X6_3;BvohRO%(R^r&} zgp&ll@SlnH;=UcOT5N}#gB}1p4meOX&RlcX%ZI7Zb8GtQ@1G3>xq5M(dpO1Y=$x5+ zqtg!b9v{w?GQ~L#Sg6x$UaUK55dA^CP4}~{5&91Crcgoo#~)(z=}Rz{T+0zPcIh>) zj7q#n!Wt*<@;z}5g?JPgSf%{||8FXb+m5T%isSm2=IzTsDT^@FtI=jYMqDXb21qLG zxhj^=_&9DO!;`&0KVS!sN?~9u;hyuS?y1Empu~ktH!6I!5ZdR$W1-d`SPR5_v1xpq zl?HA7>1peaT7Rdw)(|HBAE$T9^5E^x3Y?&8vP<;XCewo`28} zi*@Bu==ll(UVu`@exwSg(vSN{3um37$SMY0{x!Y#MdWVXbRh+;%KMmb1ylt`WV!Fo z-d?gW>^IcL^jJivR=;sJ9WF$?mFJzgf$fguaL^YOY?Yb^3spwVs~0}8JNuuV=sZTw zEorD|1Cr#3e{>l_9Swc4^J`S-#tx6R1217tG#)3!SyuFR2cnSK zTfYkj7@~(ng_mp45nGtRcg8p|la74KryRd!#ES0k2gVy>>C{oL3P09s4>g82X|5WY zuwq^w&gUW5$w&4Ju_6XXXC~P9kUFman{u?^{|dFP@OIfz@lBL?s?z^01hgM7YFD+9 zrQ0dwQ}acpdi?f_UMJ?O9U$Yvgob>`SkgRAX?oR$+^lZ7rrI*BSu{VLTKvs#M&ABt z8XZK))TM<4b|g%@YYtCprPY5}>a6&WgfD?yn+ZUsp*lB;H=WEJb7m@K4V6G)i086* z{L0D`;3e8W%hf(;ul9LIU#f-Jhb}lDuf&SojrEbSVvzc@Yjn$E|C{HRH7!Ej_2nh; zxUvi3x}ZN*%r#$fud?JQa~3O=ls6jocC=LvJHwKa6+yze_?&XM6wEaK=ebIpu7^gb zwx^VIUc0f(;0>PzUK{fG51I&XcE={x2Oz>63QcdC-ILdE_jbIYX!V`r|7Gzv8#t2n zlAA>Sg*lpedEGFLD8FEN2ca+aur_$zlf|CYs&Z5tkB%$-)w9WAS4PC6E?C$1g&0w7 z*?E-`0)`O)JY6I|;qLjNE2W#~<1Dg+&WebW*-X#9eaR+iC9YhIQnFSvk>f&|wT}@p z&e_nxU-NsdUBY1+TRzDVmnVh|rPCVG(n3Xk9_?*st3o-j12|-Y-#vMb`qWTd_7{ma zlq_OE2k8_^DywcS?LxsYCcy{g+OaJnRCv**N+_sjc}v6ZL228J&*#a1&)82d1Z%9u z(jo&4*xDDJzJdA@{1RwP5W3zN^#@I>dbW#VG$laA^i;?2M8US4f0*%>Z=l0y{^d0! zGLotYTF*G(4TJ7{<;0Yty+4pWf6HMS+iJpnBB=E)Q=%W1du9b0oaeOTWr4^&=^@=c z{~8#4xK8R5nhpIX*Wbg);kiI2nao`x8FOvjfNjBKr=z1IOR}R6iL!7?u9TJZJN=8v zX~7n&g^1rfBrL~+K?Owa71Ni-sLyx+F(a+iY}l;I9UUJZR+(k~v*t~nxBQMg8H#6~ zACH}r{MMpc2`4$_Fi+px4$vb#kOu4QSow(}zbYKCXZlu!r*>xpp4&o0Lyd*) zRcVxX1Pkbdv>JE?Vpvw*Jjc3 z%F*`yn9%zA59o~v5Y9<9(<{g4l(9e8n6I9rovB8?XV5on3{#0u(wuqO`xdM+Q+@MC zjJ@3)@7ArMJCW_ffV?W`GG_a+o_mZ2U~^6{?yzox{Y^(jTOjbg)AF)7jk+D^tr&MQ zVMUCf&PFgn5ly7}5q-n2o5;0zNK2{o<2!{p&8^yi5 z7koiNSP1zNSQxcnKj{b0?bYZ5b1IUP&UG|vv{k2RY{#>ZLamj)q7gNo0vW4J12Ih` zYH=ZCL{^OVBqZg_C>5q0E~Eo6CN`9Y6D?Y}N7J7VyW&dDX#rxvfi5oh<}I*fM;kg~&_rZ&H;3-MJyMUL4ie(5OU zm5B}OI+4tyC9rXok!E&60Kos(h)(Oq zFPh?=+A&V`rH<<`BysWMyD#XvYNe&qO!j};pNd$w0!J7bvT<%uEs#K0cdfnR2e|K& zJh~d#DYqa$|G?GgQp0FtHrhh5!|%2mKjD1y`{26cdpg_V%oj{+2jCR58%L41Z$ZuJrxlozMACRQ7OGsl=gdsyC5 zecoU=FQ_4vPV zMvH^!pJbJLu7Usc88InP8%&C4uiXj_=mX&qt==tJx>lK`2?M-mRSH z6(ZU{PE7qV4bSDB=k*h*uu9)_#&%lo#)3h-JNJ?v41{(VYxwTawcA4d+^-!4AkqQb z;-XR}b%sO7{63xMQ(T=>LXM-O4=VxXq0zy-wUh1ZY48^s(l*6Up=zJ!q+ZVYYN(Yu zR-E5KU@7T-y_uwrMM`UhQUtr^{Ih`Uwicq24{vb$JqCNOYW(BW&s%3D+hrnJx4*+- z-fy43G}QDq;%Vz=qXdw{w~p}LGi(LwA+^TR%WvKD5}|5#STZrS4$;zA#Qomrx8_Oq z2a1;cw-RA86XCh2Bl(*KtS14)TaU}L8q+W8L&xgWPY!nIr?l!-3K)%@LWCqK4EeP+ z&+JS+b=pVwa`^1umx_$^5*Pm-gxg>WSW9f-qX9Ohh$mXu(Htq*H8*hE3Ik3RVq<^v zE?cmKOdi*eSQ87WYOgE`ks36;m_nrf^XYb zL)abUtE3H(!WRl>`N(LX@{M})_-6~LXlDS9Bc=|AlVKH@ex%nBHIrn##FeAr%7OOD zr|b)FHI=*P1`&(uXI!kIoxMV8nyHC1V*ANJ&@d7$*|_;qMFZlUiIMdLi?{TPGjYPh zPl5+fvJ9!J43oc(w3cG`u+hQZ#n7tB#!4YVj4^veZU?i6C#*zliI+LOHFusLT2+q* zuK&^!hc2;#!)Y4FK%}yhgC(5`g6%wBwnsy_CcgN&(G%#XqjPiwr&)uw5eL1txQ8&d zFAC7|AT_HTeEj!4r5ss>kr%;g2RoBHI%u<&Uv@hO%>;?7Amf#d0oESeLt_;GbXk7s z_zG^^SpHVxp+umH`hDwOo#8!kfT@KLDgF>5rtPQbi-A%y_Jm!DmoY*n4N*D5M_(9d z!iKY)Jn?9$MqaYbf4doT;VIKwU&r8;e-;J_VHv?Y=iJ$7!uQ#M*0H=_gZA3W*^wWq z>|v*Hc%oUZ`3z2(OjQJQQU*7oLZfnX+W0mN;SsgmP6|>}307_0_vI5;kaJPWuN0M#t59#c8bZbW7rHARKr(XU`5wS%f1md zBB=`8jY35(l;MOri`ojTEvX@fgIIPg8Z_OS8yb*m?~rW`4k7XSJ~sx@S25=UkKw+_ zQKm*oB=DNNk8YD4=}H@`JW-K+2pcl{-3pN-96jw$v6W;!$ToznD$TL0_A-GaP%N{n z7e33bAfBe~9&RTIMytRV3(z$a^Rq9JRAed9uevy)oku$$8`|diri8Ol(69XaZl!Pl zgwH32TaH#gw@@COeUU4a6uQe609Oh4YMGhrV;n9*B>t{4tN#;ZvT>SWxdT_le|sYS zMyvfJteu!0;Baav$W9Fjx%Z1`f|`rQ#p@h)N1u+8;zPm-t>fdzfmi9F+eZhqTzTi6 z_)!wQbl~cV)&_8azLMsb5@cDg*VR> zB0pPOR|zNsX5kd_5M<#ljrS|a_uT@=wslcUtD0KNOMmL_&T+WI#1xXOjVpo@AwGDW zuTb7UuX9T_sEDoIXF8poFOM(N$E5GC>}PtNdyIJud~ML}LOy1f{lj{7xleB$w3Mp} z3yYwi5}&A1L?T#)VWl<3G{pFa=8$DCBGhQP*~netoMd%b)eTc zyoZ5LVRMzn)%CSakY(-P){jE|ensa_swt?7imFUbNq;DoS*SU6cP71T?{?aQ|Est| z9^44<@xIn>b~|TM%k-jSE)s29K!8rB{HAb&CTVCoaJ13M)meNF}&4liexC55Qa8I z{is8-$jC@GvqQ~ll)Une2ZlHZ@6a6h+nOqz5QlwP0hK7i#c14_V9i;J$0Xtw>mWMS zKk5H|tAou@iD5pM{sVK*1|cvCpH(P|Zx2EK)XD18f5`CLk9QKuH#g4mpM!UHjQ<`s z*zWb+6gPiU7u2Yn5&LbuJRZqTy7BpwMv5oQi78>#+M99a&inZoXS_UI?Us9LJK532 z1{$48eO+rAAw&K(&@fP1I27Wmy}SMIl?{PdRnA`-a;s00;FXDyQMOQzBe9B9P*vU1L<4p8W%zN+ z*n1dS&$htQ${J>>#$XZ!SxjCT6Uy;*Mv1?sBU1K*E(cyR5oto6SoFootGvKpcYJ{m zmGKvAt1}WpgGOkm#vk#C#e6x;SOReWRl0qClyOaFCB*r!`7n;X!0tRVb76kwJ&sbK zN3)mVz3mz?G^nJPE73Ttyj+}mguob&iqU^%zo84JdQax>)mprSIxXD2S;?T8AzE)R zvvDTrxD{l?UsWN{TyXilOR*|#Yv`r@xWClcxWidjh!nXL%J?NDKD|g&W*MOE8r|ckevn~F?*T-`RY>Dd*-*-~EWvuq7 zx%_MIys3Z@x<7!Ab}_qGJZH^2IK@0C;ow5C_)}pZ`h;d6g820D~VA?h|!3ir^{NVdKfV%{j0ZA>(cWWLR>2iNG zPPMDj`mK_jhjvow$?JG_dM7)AQn&GArDG2cp#h!BvK;v4boi8@Y=#2;Tv>9rWg+Pg zjZ0Poj~!dLiuCl<{}6FbJ{j(y0~dGQ+fGeIJsgQEzbhJ!nO1*Ni6K_urYisMgwhg~ zWdshVF}7-y?X%`9>-jUST;8Fh>A=Jc193fNEfez|TmU1n{2yNdkjkD)18_T#QPikX-VuvbLOswr! zr5uWZh&U}K!3Z;O^<@M_9VL1y7e?@YFBfaaI!$_>{@$9n zIOIXZp_f(V=idv~v7*;p0`qBD#8@F zPWcd!cTt&WcIA;m9j_zwfDG8)*pAmN*7?)qv+uJr|LF)VVBjK1-@m($;*pY)ihHtc z)yDj8pj-B_x@cnfYlGzXe0)cQhPG$!0-whMbYg1N1p81NzH=D+4)a+{&J1JWM`?^x0 zU5C#FWiqBCQg6`5Lqkk4BzdOcmRC?9s@a3e{H~10@+PD{V9nNPNpfK1VbjMwAXi4o zNquYkPekDIfw74rJd8cxt=KGd{aQ6fY2|N`dffR~XT0Rt_Z0W*o{?5};#mm&y)4UU zCxJgHM@ijiH&>_Ueea9Ez!(b-z)n=Dcj@DjkuOt{frN4&kek)5#5l-n z3h%`zhv{jZgm*~}A5Yl|^Rck8NmLDHQm-u18-J&zqkA{}8{_M4y|mo+k5ENBv#}Zs zF+G_-IS`Qi-GD1Exu(k@b=I?m6fQwHgoara9WX3eI4-yxCg7N%(^W;w$#`uqEb z$J?EXC}C;4^Ayy52>hBmhqrb-Q~zipp?7L=mDKk*$Nc;Wm%`&lyZ95kh=@}gm6Vfw z>nW#2zYmU9NMBy+%LFIvV1g3$aIrY)a5!c`s-~#siHv8x<`OPBkPv?3a7)#_p^OG& zs?|z;QNxMYV`e_)ttSkmA2VQgxu1bN%SNLidNWh|d8%({ey_u`c;+> z!JD(o6mm<#Qp&OSemfwo+`I)V^dM2~o1qaLgHLz?_0)KxyodfGm7g-``xVG$d^2c(5neIiUx~?U&F6SC7}6&vArS*_*QA{h z(FyuN zsuc4-rtSFpQlvFJY8-nd0!Z#3tnCojSNtz*Fuv zijDGK`glQQNvw5G*e4e@=W$szaY|Pkn?FIC9w_>1nu^{cXZ{CgYPhl~y~q%>bfwmW z&}QoKjrtJ0un6`WYu{{&B85h{ttpl(_qx)Uq9j(p(#Fup9Aq2@+*Q`7d`c?K=%>+R z=Hx)H!V4&&%(TmZ+IoVH$7<<1Bp|8V>1F?=M{(CWRE(yN<_1+3iaUNQZ-3B!qWSLN zfVsgEd>j8kJWAlm{@4MHnD-Y`usN1h5%PwnMHXy06wF0Hv@-kJ=cCB`&q-6wrqw7` zB<-hC$E={>QBeE?i*141Gk;YS;x-7GhR6pmRD8LwFMZVuKuqA#reKjTLh+~CE29-W zxylNT4}QXWiQOF2(a3ySvXl`(V4vys*It;X?>UoE-i{`q2=pq7cbAYIjJ?%Zwh0<` z8*wUxfJBXnPi)c>Q2)E*el^YO+sNI^|XOAZWuA(Wk)Lw4i43`_n}m=ZLSy636I0cx5K1NQ^w3p*wXUQ@}HIG z6JOypwcfYrCcUPb1rs&gz#3Ur7hxWWDJ2bCxz7-=>y0BFq<$P%bdL_4EY?4$Q{D;f%<*}k7 z)?VFZtr+X1EtyDMYNS+>w@g~Gub#xpEHKlySze4zQk+oWDGS!41RG$2*K0FEVbjq} zW){`p9pva;m1KTAAFi2ooMR zvp<-vVIGIhGijD9j}nZ;rN__kRSj)MMkzK!LN1Na>M+d~VuUFPZNlh|^UKQqbH-b> z$z6~gPlJLv;P*VrG%HKb-aSd^S4|54DIlQq-LVH7S2I*aU2(3S1y_IBf6X=Q1OQ3O zMe{eobsb6<7nj1GgSuhY#zPM!e~64;V42nMa27*U)Yi#HxK1e#D=m*g2Q))#oJXk< ze*lZB*T6KSy0wG-KHj=^h?x!;b>^D()&EC;Hg*Xk7qQ6r%vCV%IyJb!!dLjA%{(!@ zXeD*^k5nosltgnbk`ajj{NYElyUwu0MRJvLspG#XP&ju%dCQKIKGF~d>@n&xq5OMq z$*L%A$Fsx!Z4M3&2{~Ux#9$YIsd%mlY4D<_+q8Ixe%A7`0(UQ^Q@J=a>^%Ft_nu6M z=IG#Oofw0Ri<+h`tyB9T`C;WzHM@L08(!P*+V92`)th;HvPN4U9x434E*G3rS97Xdo@bw&l{<#YHEo))c#K&*u>CCt@-;izmsF4ENUpz z!otFGeM$WPKLj|VOc9NADI~FuQ#_S;t-ta(u7-v%`tq=Q7Zb_Jx~IKepqU_=wbG9i z6UD;ZGD)b@UCmNwlL5G(+`x9^DS&pDWEZP#;lt~@%4r9PZN0P4T17_+%IZUndzv#3 zY2(tZUAfBAb^cNkRI_)eYierB1W!6WH=iXDf-th*b9V0+Dkjno<2|!*;MI>(@nRHu zf`3(PAxlegl}U$2$A)f4u@D%&#$lJaKx?t{e1GMwF#d1ul zz$UG_-g0c~z$cZh$>d@LVC7Xt2>f^AJk9BXVk50Y5jKvc45_JZZDKAK%S%)2wEpzY zpY~X}l#ST9FBPTQQJQ4&r;3>@5rvN8f38X%x2w@J#bj!s2I~sJDBR6H0-+K<>{JpQ zR^}KUc6U(pupxZNJ`jc8Ym*TGWF?ia0f?mXMMmAW>CrHcwOzeMLCPu(+<|Z9LPouL z-OtwoB{a%V<@Q5y37c=EA~RxT7>EbSffD`kTri}V`)*RYgu?-4-F%#S9cinlNA+qr zjf#nK40m@#S6p1&UtckBZnMy@JUv;~TB4eo8X;esGyYY(NgvOQ!C#}9FzHhM*Zt=d znkFi3*}&cSTHDb6c^HqqL^nx}GU+I^;h?;JyyfAPzss zn}^o0;04JTlQmiLXBtWY+evrFo(=dR8fsT_?VPtW`gu0KpY83 zrv{{lsyDyzYzHn*4Qml3WjOb;fJlLpz{ty&C-kR_kyvVmrRM+>HCpJB6Exyrs;sJ~ zc~R+gj4BAjc}>E8ELI9;wtz`+LcsZ{z{&Ftm*z=4(*Lx?at%5l@VN#Ll&AUJ_NCd4 z?sFCM=n&cV8CmuALl|7FP(NKkUJFjHb8ut&BQ$-AY}Q*bnSFMFjPZ z!;=jGdGaeqGxU%Qu+K_ts#eU(*_W*!72gMBqy_-tU}?r@gJt^g+L@e~NZ=TX$~mVHfB>Slrl*%@%j zDBz_vHB&*Oo1&?ExEMXR`XN3x_;hw#LF%Q_?*_pK5dtmzO5~?8o?CaL8aM#7Msn+x zCD_W2Qc^!|M-$mtKdErmQSuBQ(7HG5YNmYuOF=_FUFTCxD+J+n6E~(>$Un5EBL#S1 z0Dl`ZL_=a`yxiO}yuOw$8fTEG8*>p82nPuARR|4IH)k)Y{RH{f{S}iiN4sr`N?brc z6vW-7Q1tY1?Jq<7fD^E@LrbUgGVJv)yQT9^ZfJMN#~8tQ%Xg1uHi`=KB5`>V8aDCD zssyCaxn5cf0L5OojV~Zv72%pnAR}vkfRf{LO^6_1of)im+s7RaD_f<+SIyw{E$bZ^ zAY62nm5qF#I3Kg~QE`2Np-X=PxS?CiqO|Kyd?fvO!jigF)LeM3vyWxu%au%2ayxtU z%pBD=ZT9ngq|9VPm6qlmXKbGNDY=?%jAg$~i6l6NMwyfL_Dl(L!oX`h>jYTR+rT^? zYo!&Oe!69?fBDnoCE>_{P3Ai1JA~cu5Anc9 zL$7o{;=LvXd3D4`NrW-UETAj*dFVf+sS!217~(!>jQ|}Gt#Q_$o}}wgehOpIsp}HM z^Z8cS$b$xeijR{GOmV4Q%v7^#b!156bt*CyEo;?ugO;8iGbz)z0zR@4T8pRAgDc?I5M}1qmJEtvGiZY{qM&dlU~>jkgi$o&4%KbP#K*8mn6;7!H11 z_4QF|eN6!TI6FT<@@uZhZSsz0k3=La*k$A={s>o+IvuxXAa) z37OcdSLOGZle$w)G2dBX21Z5Tu`LYNbA)AJp(VgEZ6Oy&QA zUO6Z0-lbo4Ds+UzaZw?S&R3rfXDRZg8`AXD8KmcJsJbdGmo(xdts6k!nIrOur2YE^ z73B}Ivi2GJgo>2}FEE$qx)hPKZ@y&Uq3keSVC_F?ru9>vw( zRe=Te-)5=#E|RR(r(tw+P@!-s$VtlxO0x<<-vAe*yR&`l7c>d0svGttlzuhvlIMX$ z#){W9XGZ&Kx{gP+E#EOsXXeANN^R#m3$gk(CwWN3C@5fBllCT5x-<~cc{~ga zavZom^^)841SCgU-C`BNulm^Yu!u zR2;I^V?LFHw)Q@=#Bbb%cXdIMmC>_YT+(Fvt%Ec0lddkln~#u=>9G*81w~i1z{PG> ztHfmtFwlpjZ~9E{CP;4c`LsACl~XlUQj zKNhI^{SFoZUBfeKMYJ&R;74>)*`iE6#w1n)4M}s`bi-3xM{76TROQi6X}%7=oHIHt z_5M}<&&$oFonnx=Eqd4hA3aC`F>T*5DNs7tADL$v#K3UbiD}R9#Wfy@(xxr5CTprR zz3K9abS^0VUGkwxP*qoBnv1jDfUgglT_3>dv+NcF{4AK)Q8ZI&NgMV>vEE*|ZpU+! zWVc7x{XYvrjs~()>4Pcp@+UW^d)Nsv+N4h-rRPfsdFQ@CtubhTFIR#pHW|Rsqo7n9 zZo2{<;L!^GUPw{UokQgoOUt z5*6N9dd!wE=W2!rHgE#+gp-~=x&7`;{0lRK$dc$f9!(D#{z_Bdtz)x6SEitjlCl0< zdq(r<)RdxyA)T&Xi6ugvEQdZtf|}zOkmlo>8(#088)yH_zvuvPt{CO0 zs|!g~q;-}Ygw)ms2^Fowrd$qTVj^4pB%P6FYc6y<;&Qrs9}6}^HW`FRLQ%^9i((<3 zj_eE#RGiyvzgWm(0p|H!ht=@jG7Tz?w~8nl$TrjER;0SR7TG$d7f%W_p+Vva``z}O-LhymhJ(c=Ik&E_aFGo&bH_KSBTY$$vJ`#`?IK%d?h60> z$B8gb)n>tCJ?)U$Y6<3-* zALLAxii;K5*zGpUP7N2QQ~=v7TA*qxbK+RdCcqvJDbBOO^adRMAz4L7GHv9a|G1+E zr`Zix-9~0J>f6jt%edav9?nv!j%7GXfn(0PO{QkHV$?||t^9ZPu$K^ai)opFUBvyT z)L{p8h1&=8eTyxJR`1*zpN83~cxa22>g!CjqE49XD2pri8uR*{kM6#d!EVv-*2yaB z>Df^zGr%JFLtmyulKJ^ue`P~alR)CVx*j+?O=o@@rt`S%`AdmCC&PQhA}JwpPU9Ez@a*3+wzYiZ++?2`e*68no6vTYvP3@)Q zV0Hj}YsPc8;gEJ?YEXBog%Y(S$i@~~TYbHA#XO?uD^Q(-TglPPNxu3g`O)ppPv0Yj zm^+?W7k^q&!V&+yy+1oou<`li7W=7N#;$UEBU8tC1tZvHxE@J*SmJlIva-e@zRJ0= ziRV#0Gq?lW(N~f2uEq(mvPCfL`4ySQ!alkfOKd2}DC*P3X=^f%xGSjQd{f8xwtKcC zIp8{6&t+nlT*y*n<~woHD`8M|iBEIO^EGGQu?GXSG5(c>wcXiL$0x9CDOJ3FlfWUM z^7*7|8O@!qdHl90{NG7VL-;f|Z2C7`?*(T`hWE@9o#4&UsKDKxFVijqV-WL=^tX*= zQYyi=o8fJ+b{U|ChJE7;Fs`q6Rcy%zD}D45pR`5Y%>Hh^a7!v0Zb91YPs2(Zdl^t6 z{@_&8b~i1uE@~}FGJX`&P|1iCMR18m93Ryd0#B?KYbje8c=8{;{;*=>7%RXZz?|}L zoO)N=V-E#!&g;0R_Vy7!^c}cpIZ76yas1Tmbs!?#M`~$HA_R%5w!4FCnrUGI0)m|$ zSo$F@?R}d2b?44-tk=T=Zu|*kE7W0$xUaz|Jm5qQH`bw>fRl873tL+*Vlnwuz0^=HppA2o3^?rMd3Y~&`TV?>O{Arf=g+pW1{P|uMOu=&tm!2+9L=2&Ik_e( zlGJ*n&e7=0IHeL0lWcYyOyt$d`rQ*lUfss23eqOo$GbBRq2*tfoBWuFR!o8~4|0pB z#|!Ry+S=)nERn?1_rN(FaCqu3I&Q0sC7o7(D2lP}abb%y-09*g=gYQve&8Perr)#1 znnpwck8cWBV;ztTE8e9~yZycY~=AJ_2ez{UAlc`JNrGwr4cZztQd zFW_U!WatSd@)lZNh>;FJ@p^rp4n{k;zg=jZD)GcTG+>ky!uiA2o}SDk=-B#;6uje$ zqYaEkwPVI39|yAScru3x6upx#0~4s(A{R!ue!BGm8^ zRn?;S5|PFEQUQeWoiGC8XZwYLz+7n5+ad!Ud$|n0KfOQa;@}z{ke-VdQFodyFe9Eg zuUKkKr1Vtx0poYQc%Mh-rf(}iVt(Q4u!Uymp0v@Y!|yGY z##bKGVD#d3wLmXR_vz)SV*L3RIKxC%XZb;@N7LocS3tr0Rg@8Tvnd|rWOgld?bGto zvDlsb{Fld7Mm|TXjxb;KN(w=02DDX=7vDEu3lA#Eo640|a>CN=<3M9vSOf^8I$?1P z!YOfE|yG zP1sPFA=qc&Wt!BRhpXIgO)*i`_`J5vQ|$l4c)D%z^Snf{*eyj%B3h{lPv_fB091vQ z5ETF3j>=HOexJOEfVDsSd_nupJy;hlzsor$dXLc*NTB97;+%1T%Z!(!FcoD*YODGh zYJ?Mn5DIQRhgaVhTPLTQ6WScYB-}$$1h+lxUue^U2pLc?{t9-XKVXARefiZaQ@f1` z%ehMYnpb>RO`e{;Htp4Y@4J^N(dT3c_^dl{re+2#4QO=?+cf+`7_>TO#eQi6cWe6D z0)(XnKAkBF&Fhy@0tJ*r<@XDW$%7!Hc5;30!*3U>%*{iIu9{B;vlE6qwon0;Uz-~S zg9FROcN?}z4fUQ#4t%uDQcPG(J(2xkB)xnV4AtBx8ap>uW&(rch z&@B+dug-32kH+J46${X~oR;;6V_qb0;Kw!LlMvl49n%1DD!Tsq3II#K(4l`W;`-7Cq2shpJ#AN0l ziP|24ZV@NR)So>s#@b&0&dsTMT=#fTqRt(heWxM*Y-tC!!S zime$xB(H*OMq;>Io$eS0@T0QK(ob~1#a?c2Q;Z2R<3Lh9!z^>*3G2rauSTmYa%dnY zmN-fR3BJz#<314TI1V%mm7+N-F4HvByoyx!$4-#>XtgMgB+Ft_C;t-x9WX#7`0*>K zO`m$bTr;=W`ZkZt0;9TK*cdAiC)sP>R-<3L2NCf`&sH^R9(Pfcms{04oxH)3@`}gmERTznG z{X3yh?bG9D!hp4`hIH#5Cug;?4#B^_^9x)TOSAm;r$s4I<|qevuR3k!PiM!EirooQ zdniXKN(jCvYFK!qHw%)vDgpr?1_^H`KRXnnZ0vPrI|m(LCg8oz z!Q=Sf?~0cufQ&R++WdpMQb}lqo9_3l+VA#LQ&Wv!lC&}RQlRoxhz1^rSXqfh5rFAC zE>V7(agO;0?8(P6%H@mvgiqp`UR!)#bq~u%9o|2Kx=Or?^cvMZH?(B`GWHOW6pf68 z62T?i1@ShyaCGV@2XQ_qDDN?90Vty(PBNv`?)GM*_vBQw&zv+Y77VBezz=oYPQ>*& z9p~iWie-rY{l~5rqp<(j1LS}BOF+F26iM1{#>6R!GVex5MnQA5m>m9_9Iu$1>9J^+1+&4tgw*NZSW(`{Ggb}+$P!^TAzS@wI5HFlPL8_x2& zie?V!NhPZ^pXq$ZV|P@n_m{oti2YZwdz*nMh^Z z5Es9VeYCO1-Oxb$mD!xlaMFo)KY!O==r0O4u&he$^}ojxA`4U}j6r109@RpbHDO37 zGDA>egS)->afvoFr<&4Wje;1wujAfr-gMK-4o>lX{m+ULNj1a$;RBn+^W@w0IvB6a z|1cw!%dbEClY!9SyY4s^Pz)bcTiG)8npl}0+{~v*0njM0{`U9$U%Y@)h6ojI2yNhT zQhxll-*H?gFGBRv< zBib<;ig(wL<6l@apTiED#UzTB5kg7KvQ+OG zmK67sSiMKPzoG?{gS)Ak>GgFr5%WCcut2s}^wTW+i_V4?M`hG6&;&Tor=!=HULJ2A zEBxpy%Hrk)wT0sJ|K>9=MEhQk415RMSmJ4Ob>#GZOG`*pD)>KasKal-6ZUrN#Ozve zNw|a<_k8xuhuM|?>;sSt*4y#=+Jk<5P`9^iclmS_30-hB!KI$x+tB_9RqqZ$IgTZw zw9TK(9|+sZrNHQ*JN!#Qa8~s>r^_xb8?V;$W1{Nu>^H_bo-?Yw&97Hzc1Yrso2_7- zAcauK3wqA`y|f8dq1649j0xuq(tO>=%al{5#qs0^d8P%e7J$;y`VjG-_b1behG^sa z-X4N5C zTEkw9#e&^QFpaj%%*u@ht^kpSzD8F7FRRF5^yg@G&F{FNp5(EtPg1^D87*(8=W9>K z?LmK=0U<}R%WtRSDs}J4$_0y~s;+pdrg59L>><5H$5CvZn;Zp3H^NY~206Ts*Gk6{ z+S|Ndx5wE{O^5GtEis{w9}5OX?nxfZFshAkm2z4%6p9mvif>vsGqWQ70Ts#7|JX}K z&kf!|74%SW)?_AUuCl*gx}A?}NExDIxaqk>0n=>pbZ$~Q-|(j%#f`4C68uxPA7q24 zfEvhXbR0O4^{Ywv*z67bA4^vmP)F0N4^W)qQrwFbEAEuyP~5e+YjH2`9NY>Nhl9II zaV;*z-QAtLyx;x3yR(@jlgT7cGLz$7$z)F@>d6}J$7n+L{aL=R4RiVBsYWC>&fic5 zri8pIk2{1i8#F}9wtC6{ER#*(M1zsQs{!Bv--QBa59W@9lxSsDRcf)sE3x2?3|^PY zr>BX>g%{8MzsuDghqiJ4p^b(^Zumd;&gy}UAzc%>r_AvZ$tKVO&{;dY?og#dBPcPL z>O73t&+)q?^21V$ zXrqclSYqPAkC|J3-AYj7BtaF6{N0T}uQ7q**BJQyshXD3;q69=EtG>yQB0kKGsSM3 zK*W3UHwg)uKxU132MQz9V=YAA3y^G;3B5>Wrn5#EgYKBKM)VCSBR4~I6oI69t!$n6 z)EB*!^Y#ZSW1DxPF;Kc#Thp5{NeAdnpfh<7Sz{op5~U#aM*1MI|7Q8~6l_}mi)DDv zxJ5Xz-GwDCqv-xV40LAK>@v*qa($Bg->}zVQDjYG09zH!B(vD#Kxnh3>hViOaXD9$?Qo1?&tS1(cJ2A8u?g97BZY!^RB*@Q%J3eSrGvFx3>u zuV{xm+Ua;<#wo?4ilsds`d#PG@lD~#RkRnUKbRJ#y6-^3*b&HmlB%kS`z(VHSYXLF zre+4;>Jt8xh5*Sn5Se9Na7KL#87})Bxjw)n`8Uvt4?P3S1Q!sO?1BPKX!{jyP?D4X z0lZ--Zdc&@6*$5#g1;I9Wnn-$YH#3D!^kYPkRZ)Ukegp7WA2I**i|U4+dmMX4#yI4 zF$I=EaiK*WIN#cPLw)Xd0=N286k8z0+kk{sCXIwQHaCGl1Rl2cxrq#*{n}-3`D?_G z?rM&TKx^O+N?z6qK&rSj5ZK_?ECJJ*8ArM3^b7DbHR~)05#d3i`APPT$A-TQJP20M z0VjmHXq>};pDc?}=Su+;NU^wy!`cYlqsB6t^a6+h-DRB+)(ts?0q7}|E)*67U}Gl_WnK_ezXyf#dZ2qK$DboYnh}BEsoPIrh1&hI zWhX8KjB2%`1{fWL?k&Pt#@WU0$_@;WsX!K7k;WZODWh)ppOAo}zXajVI}eShNkR0t zlNAj%q<+~6FgJ5mWaJ>S2PE)(NWY7s`5?`Pu%CM%KU#WWqT=$h z8VpPG?^`NkXrj9)P;c4uf)^+Dc9H@Ae1`n$_S8UtYvR_{5YfyZ77v_jh=-BRk5G??S&i0L7g!OVrT7 z@cx$;_1{+;n}#-lJhA|8xii2~wFK~+CoX1CL;+QdVj7g<>>3ATbPLGH;JR|z=~rEP zy`*)SR<-!cGEFz>bXo8Utdx z!_!}5_qp{;7fS`{V5orW=sk<2&M~o!o~E^Yi&23v$(pM6H~5qq^B{IsRALZ1ET%sc zVvq=+JKM8p`EQRGRoJvhRMgdFq*P&2;XrqKWNQPRFWylhiZ*ZDs+dH^Bu0pWwefcUoof1^_xqe>OtlazfX2pzXi4c*7ygGBXmN8V1SKh5CI5I8fvwv5hpOF zXi&nIDDVJQTrTR`G4ua(@%2R^&{Gb$pET)40URU<^m;heJ!H8D42ksiUoA7<&LrX{ zB~4O_DG+FtaK3-&48{9)lk9EXa;%DjH!cVOcAd4YESHvIe5hDhf73b3Hp?g=q&UFv z-$ydxXwqcgy`c02#*O*k1_c25OHSY!!Ulj|zti4c?$7IcRRA-Pc3Iwr%`aRZWh34i z)y#@}d%j;MESKR{8l~{IakWa11=jUBfq@(y3l=UQj!2@<1L7$?odd;R-YfxtU#o|N z1aTV9aMpwEfv>L*mzTvq2rR1sF*cAMkh%qDh~WTQwdT33RQ72CKz+Wyu#5)QZ^9x% zwe_g!|4(L$n*7fldKA^n!y6yz1<>1obC#K&dpcl*y_j=l{PPM6frG7G4NBpg1e_rN z#Z+cyB>%|{u+d7&Q9yc5{i_gwH1SiP3D5tz7gYvT4RFd83KL;C0juvH!pvKcfCjMt z(H`@rtwY6j;0+))hzc-sJ%p&o9blDTg`x$ou#8NE7hsIuhF*00(P0KXzypGSbq?|+94`Sd`o{CL!p(2%g$i&KH3g2?iOr^FiHdEI;sJhE z0U_}%^f-K>x@g%98vJVj*e1UY0IvP>xfFxeN zT2Sm*6v6ejim+_v{b2W55(sg=i5dWyDl|LoQvhw(r~;s==#fx#-xs<(DXu0>1w_Eh zJbpraIB?OwX5%gif(7SQ)n>Ey;iE?TAVJBZ0pn%RA0)GzxfU9`j7ME1iUSf0&Ms_Cy z7BvoC^hlLs7K_tvUpEOwj5$T)J)H7yO#Q_X1j~aCR{gAXQbLgD#RbJ4>!~1_{y`hn z{+B?NpO`zUPI%s~GHtefB>}qkL6ZkPk}RF%Akf*qdm49KLW()13RlH;Fmw-JueiL$ zDYSEeC1u|8-vB1|=!6?4>(fe*s)rJzQ)O35a!cJUSejakjd`Jn2534hS zrzCn7>gFuO-+LEEl~#$8rrqLz1y*r2jU6WpwNdP!Yu6vv)?VWfQ0wYD>B90o6)HvDow^0Zv zjB*iJJp|(o$x$qWdc(-Dp`J*n-i#Uz$|`*73;ota6vwX2&G%Op{m!-Byf38@B|r>z zDeR;`HUFYoS^&7uQNE7ZDLW@T?ql?a+$*vxOpC0AF%2jsHC386<(4=b5C~OP-J7KN zZ;S{w*?fA=*VV!CfF5S`Z?097%f)?8D%BIsDo!F2kB?*zMk*~@3oXA)N@j~LZu~u# z$d1(yuEVM`Q-{|>57=8|@yJF;N2?7Ee3EB39zOyqxei zyJvHh{dI8`+JPu{PU_k{uTWf7$#0&4|4IYZ+jUdK;#800XX%kI?{-#+&r4D6#@w;) z%!O+CZc%^K1C29i-f+ClE%je#;&K265+jBN`=cjw^NkLoV29NhUkp6!U--^Ry36!p{d2x$BeI}-H zb#3Q{B%vU*?Seor*eGz{R-eb=q#w2H0E}Hu%bBDy8jbYha`a_yN5FvYBc>C!Pa27S z&F|a~noP&8Qqt2>E-)4k(q#oOUaj9#*=v_R4tgO$fxPIMIOk_!hbvQ}cksQgU2WG{ zbr$emTGZ+sCVga3VqFdUbK8+QzSSK>8*Yis+_+iHB1Bvfqf4O31uN+2d;$Q6QgWLG zWT4KhW*4dI30N7s)>LS!2P8BB&zZdFcx{2d0emDU&LaJrn#8b!BG(Vwkp5MONZ=R5 z*IKQG{+~`!d3WgmB;eh7;jqDigV^X?=z2BdhwxL7Md2-5)NXZ zZK%NK^YIs=pMbl7OU|kmZ02SeYl;N+X5jxk-EBN$n|Q-YqB{^?@$^hmocV2oYf>;> zG}B}GS|e7onMJWz(u$o*q#{2jv*8@A#((2;G%v`{SN@Yf6h3cJ)?2(56(-N&ulC9_m0zG{a@2VGZw|ruS z9hk!-4aj?r4#`w<<;D-wqH(HKno%p-+^9Hkh#qS(+YVn(t#mo21LM+&1Hrjy7JwVn zAF1XMHj7CJu*qIq&c9iv+wbey6{e&)X(w|Pc$i1hYL%o;P@Wl<>P2cZtcj;tS7tHv;;q~R1}&C-LL3ZM z2P%mDfsTM9K)`eL-F?g}1($i7>f-_$l5<>9MCGumr``fQzOvVvA1a-NKA!k0j=R!= z*;unKu~~mn(ndZ_PWVRwvBdK)HasoJJeD9(yYpG64`-K?@-DuE-k_AqDwHDg^p{D& z@h2z))-NdzftDRgjQVvv2PvLn0zMGA6XKYoj`KQUX?h5^H1N5q765dUg#eqB-HnJ` z&JAiPF9yGuz=*=JVmO)x?Ui#CpDu@h_N@H$xvNUQtd(uUjFaEc0YNl6$j>e)t?Vj# zQnx^0>OBMfsb3LR$MAHwt12J+LZ+vsC1iSfTJrVfIlsPM?cwHl@n#nQty)-G#`W}w zBEEy3Tv}S11y0I~FS@VZ?(R)gR8*2;VnKo31{T)VTgoP{{CNvv5bx6HUbN{=FTAl| ziIl-}(1R;UCD8AtUx}iDuI8ta0#4?OO^KTyo->hCp2`bAJe6IPQUd%%3mFjS+aEt! z-Oj$JI(Ah}3Q+0-H&0V>)LlC+#pY7ck(VET8?Uj#vv|)JmxN6dHCh&zhEDl@ltRh@ z$^tRs-3<9s>5Blf3JKVJC5iH%2!Xm z>CTs_xT%^BXr=+Kp4ycs0?g=cZ+yOLhJ@N|NFM9-CqCq%ywYl|9VSh>Ylz1E;^C>3 zqhmF2RJshCwzZcaER3G8m=v`44x$$qVfxp>Z$TPrTMDu;HwP?*I)8vYMd{yO` z2&j@Zx-+?M6vd%%##kT~fa`HH(NI#P6i`lqA_T1oEw>ab&jv(`k|A)`BQ z;O=q9KK}fmH~3F|$y-Qk5VeI|xrh91V zCpFFt1q|T1gI<)?G>vkTLj((NWz9_Wamk2#Lj>JD=NWn>tgTCbc|CFC&sW6gxSne| zE)@k(aiT{zb6G@kV`AAGC-CCW97j5IZ>?C3C0{^1G#f2*M}D;l&zkH?%E`&q=849P zOl&5}srO&o&1?=s&3=(~16)EP&O(U+;wKp=ge*nU`>5&!&(Nltfansx@^X{j_p z#mRutYgzT>rS=ZMJ5D65XcU$s;!^92!GDPPx#H72?C{%z3SLzvaoy}2xa2Q)yG`fC zQle(H+cuoL>y60Z&`@|V``#i#BwxapK5U z%$ILqr}-%9mk!63$O{F-05J=`_ut5;Hic?CVxY1?RXSdK3_V;Bm#mUoHgvGi%N0iI z=Y3lIrOnfR#NK|NZ6zWpC5bZ!%E!UL*yLff(^ef99Q9!tHlf5;e?#||I#)04kYbl# zmVmpeLHv07=GYi!|5M=KRE8eYZWVccRVA7RoazaNZ0(fbhJ`-B3mNFZBgH>hM||5d z2g@Gsb3@wc=5+1Tu4H0%m(72FkU|MZIZdY*YTSmlu#Ad5U3D&dTDxVIJ~{Ea2coY+ zf;Ix}`|oD@N?bBLNcjuG!LILn{#ibRu{YFK67YgLlRaEytPcH6+{l_&8qLbhJ=;Nw zG`b$(6M2;uHJ!%J?_OT5Iu3tQFE$^`3(qQP$v-3k+0Tn3BQ7cTuNpTADnnWN-uilO zMg_e8Y!ds#_1}BU!YAn+?r>cDj7LD8H0o@cA5~~S22?n0?tA%dB(b}9`xgJvO4PoLh`1M&z&G#yY|Mgj$PLM)U{*rI!H_H8T zz}!%CjDDPJ=5vsa>pxgbJiOh8!nAS4P-cZ=lIxefRjI{gqlcQDM&M4XuVqA~06Pa6 z=o0}@{FK3!hk?_dY6Y)7`csmblgZwEs~ZM%uu)%hQWn2k`Y)%R@%rA|H4*@yC#FBcDerxFoxZga2buOv!yYsG5~V-{*XU;o?Lh>wce3F6ri+{IukDbUw{ZKV zq`(E6^entQ3@X*l+}Hh59c}1H{gqbe{_pbV@139yegOgII~>S9A9;t$Y1ZbA5g`Zh zXi*N*?3)87?*P<#B#vKG1ZM6JAN8`5sY7nS+Tk%49K=A3Uqg;J@xK z2%xi!yqK=++;ifL=bANj=u*~&XjNYVPH#YOQ-`Dm;tgEV?vQpLBWr!*WI3GQ|TKo8$ z#fjqr%6>)h)XT}wyAa~7;AepTlC6l;vAX4JKVRoCES~2*@{7B&DdR=|hOPA$ySPT~ zF}(DLc>7Sx4&~F5Uda2$w5+)XCt&R2zP^vB+`!mJbo4b7uq9%9{xkc%A$sTcA&_sO zSM7U0cbf0+2A9>@>TIzmYEs|tCsGKtA5;9}epGF`O|miuFxT^Gi;LI-HWegT)kRv@)Qxm5O*LwTvy`kASlziOuqSgMa>W3b+p zb7?DKK>PWW03b-kr#q!&9SJ3cfyXp(JP0kCfv`V3+`KrGAbC3M&`(5Olj$q{F^Yh! zs`MBt-%MKJZ#uX1=dAnerxzNu;j^!Bp3ii|#S1hK0);D{UtblyYb%Ouy>Lq#=ebeo z0p?h*Cfem9t98ooI6M-gw~eoH#IB6h$ni;;KAk)|ZjlSPD1*u5&g z+#He){VU8m+E$%)ZYX_J_0+{7Pj->@ECV3lzfuyYvh7jeu|b`#pPc^~;+DerWQ)rQ zd==m)nb_*-8HiHXqhc1g2cztzb+*9kOO5?KK<>sH2(Gk9jVPN)@v?q2^V`p0OCdRm1U|>3PqkMXoII&-|Dz#IE-uXc zzKL6k7$W^>dC(W6rNv_pIR8p2N~V;uVQxjpNhP@KdwX`}6}6e9#opttfd1b-J1&Y9 zO8cpfP9QpAcy99a57th79C%7h-?p>+8<$EtmS{h(+@G9yA3R)gn5UlXgh~LM35Ym1 zfY3Mr@5iX~cMZ!>Ji2vu(t!mSQ^+H2S649$;b^AKB4$&%_gAHw%>3t!?we!sLucgh z@d>YBeWfp$096BBWg#-qI&XhCVln}9_Qd#+Yk3patq~P}i5=zH)#E`*o z*B4rOevbaX4w>skk%Pve>QAcLcO;jU%*)I}+L z3=MONprE&>CU% zyS&nzA#vK~@5g1p)V=e(>n_P-Lw!$2=LWphGpHS~N$nB6KamLJCG%gG9h&^n_KlsA zgEGGNT?~&?Vw_}$9 z%vOMqk31k|n79RMYWhsqT7G$uu+#YAp;nrU&`)UN(_cjkjIoj_nJ-uOG$fYkQ3&>I zx@4=a_s0J?Pn}bJ_V3$$+kv=oTqO&`2T&*Jfk@fpytxTi+1=Y^LeHXb&hi_&P-A-lnm_aPrR?H?Gz;t?5qW+J@2pF_4G#i6ipRVb6@u -|options.error | (error) => void | 登录失败的回调 -|options.complete | () => void | 登录完成后回调,无论成功还是失败 - -### Tunnel - -表示一个信道。由于小程序的限制,同一时间只能有一个打开的信道。 - -#### constructor - -##### 语法 -```js -var tunnel = new Tunnel(tunnelUrl); -``` - -#### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|tunnelUrl   |String   | 会话服务登录地址 - - -#### on -监听信道上的事件。信道上事件包括系统事件和服务器推送消息。 - -##### 语法 -```js -tunnel.on(type, listener); -``` - -##### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|type       |string     | 监听的事件类型 -|listener     |(message?: any) => void | 监听器,具体类型的事件发生时调用监听器。如果是消息,则会有消息内容。 - -##### 事件 -|事件 |说明 -|-------------|------------------------------- -|connect |信道连接成功后回调 -|close |信道关闭后回调 -|reconnecting |信道发生重连时回调 -|reconnected |信道重连成功后回调 -|error |信道发生错误后回调 -|[message]   |信道服务器推送过来的消息类型,如果消息类型和上面内置的时间类型冲突,需要在监听的时候在消息类型前加 `@` -|\*           |监听所有事件和消息,监听器第一个参数接收到时间或消息类型  - -#### open -打开信道,建立连接。由于小程序的限制,同一时间只能有一个打开的信道。 - -##### 语法 -```js -tunnel.open(); -``` - -#### emit -向信道推送消息。 - -##### 语法 -```js -tunnel.emit(type, content); -``` - -##### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|type       |string       | 要推送的消息的类型 -|content |any | 要推送的消息的内容 - -#### close -关闭信道 - -##### 语法 -```js -tunnel.close(); -``` - -## LICENSE - -[MIT](LICENSE) diff --git a/vendors/wafer-client-sdk/bower.json b/vendors/wafer-client-sdk/bower.json deleted file mode 100644 index 7019494..0000000 --- a/vendors/wafer-client-sdk/bower.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "wafer-client-sdk", - "description": "QCloud 微信小程序客户端 SDK", - "main": "index.js", - "authors": [ - "Tencent Cloud" - ], - "license": "MIT", - "keywords": [ - "qcloud", - "weapp", - "wechat", - "sdk", - "client", - "auth", - "websocket" - ], - "homepage": "", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests", - "typings.json", - "jsconfig.json", - "package.json", - ".npmignore", - ".travis.yml", - ".gitignore" - ] -} diff --git a/vendors/wafer-client-sdk/index.js b/vendors/wafer-client-sdk/index.js deleted file mode 100644 index 709a172..0000000 --- a/vendors/wafer-client-sdk/index.js +++ /dev/null @@ -1,26 +0,0 @@ -var constants = require('./lib/constants'); -var login = require('./lib/login'); -var Session = require('./lib/session'); -var request = require('./lib/request'); -var Tunnel = require('./lib/tunnel'); - -var exports = module.exports = { - login: login.login, - setLoginUrl: login.setLoginUrl, - LoginError: login.LoginError, - - clearSession: Session.clear, - - request: request.request, - buildSessionHeader: request.buildSessionHeader, - RequestError: request.RequestError, - - Tunnel: Tunnel, -}; - -// 导出错误类型码 -Object.keys(constants).forEach(function (key) { - if (key.indexOf('ERR_') === 0) { - exports[key] = constants[key]; - } -}); \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/constants.js b/vendors/wafer-client-sdk/lib/constants.js deleted file mode 100644 index fbede43..0000000 --- a/vendors/wafer-client-sdk/lib/constants.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - WX_HEADER_CODE: 'X-WX-Code', - WX_HEADER_ENCRYPTED_DATA: 'X-WX-Encrypted-Data', - WX_HEADER_IV: 'X-WX-IV', - WX_HEADER_ID: 'X-WX-Id', - WX_HEADER_SKEY: 'X-WX-Skey', - - WX_SESSION_MAGIC_ID: 'F2C224D4-2BCE-4C64-AF9F-A6D872000D1A', - - ERR_INVALID_PARAMS: 'ERR_INVALID_PARAMS', - - ERR_WX_LOGIN_FAILED: 'ERR_WX_LOGIN_FAILED', - ERR_WX_GET_USER_INFO: 'ERR_WX_GET_USER_INFO', - ERR_LOGIN_TIMEOUT: 'ERR_LOGIN_TIMEOUT', - ERR_LOGIN_FAILED: 'ERR_LOGIN_FAILED', - ERR_LOGIN_SESSION_NOT_RECEIVED: 'ERR_LOGIN_MISSING_SESSION', - - ERR_INVALID_SESSION: 'ERR_INVALID_SESSION', - ERR_CHECK_LOGIN_FAILED: 'ERR_CHECK_LOGIN_FAILED', -}; \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/login.js b/vendors/wafer-client-sdk/lib/login.js deleted file mode 100644 index 3212d6a..0000000 --- a/vendors/wafer-client-sdk/lib/login.js +++ /dev/null @@ -1,175 +0,0 @@ -var utils = require('./utils'); -var constants = require('./constants'); -var Session = require('./session'); - -/*** - * @class - * 表示登录过程中发生的异常 - */ -var LoginError = (function () { - function LoginError(type, message) { - Error.call(this, message); - this.type = type; - this.message = message; - } - - LoginError.prototype = new Error(); - LoginError.prototype.constructor = LoginError; - - return LoginError; -})(); - -/** - * 微信登录,获取 code 和 encryptData - */ -var getWxLoginResult = function getLoginCode(callback) { - wx.login({ - success: function (loginResult) { - - wx.getUserInfo({ - withCredentials: true, - success: function (res) { - //此处为获取微信信息后的业务方法 - - callback(null, { - code: loginResult.code, - encryptedData: userResult.encryptedData, - iv: userResult.iv, - userInfo: userResult.userInfo, - }); - }, - fail: function () { - //获取用户信息失败后。请跳转授权页面 - wx.showModal({ - title: '警告', - content: '尚未进行授权,请点击确定跳转到授权页面进行授权。', - success: function (res) { - if (res.confirm) { - console.log('用户点击确定') - wx.navigateTo({ - url: '../shouquan/shouquan', - }) - } - } - }) - }, - }); - }, - - fail: function (loginError) { - var error = new LoginError(constants.ERR_WX_LOGIN_FAILED, '微信登录失败,请检查网络状态'); - error.detail = loginError; - callback(error, null); - }, - }); -}; - -var noop = function noop() {}; -var defaultOptions = { - method: 'GET', - success: noop, - fail: noop, - loginUrl: null, -}; - -/** - * @method - * 进行服务器登录,以获得登录会话 - * - * @param {Object} options 登录配置 - * @param {string} options.loginUrl 登录使用的 URL,服务器应该在这个 URL 上处理登录请求 - * @param {string} [options.method] 请求使用的 HTTP 方法,默认为 "GET" - * @param {Function} options.success(userInfo) 登录成功后的回调函数,参数 userInfo 微信用户信息 - * @param {Function} options.fail(error) 登录失败后的回调函数,参数 error 错误信息 - */ -var login = function login(options) { - options = utils.extend({}, defaultOptions, options); - - if (!defaultOptions.loginUrl) { - options.fail(new LoginError(constants.ERR_INVALID_PARAMS, '登录错误:缺少登录地址,请通过 setLoginUrl() 方法设置登录地址')); - return; - } - - var doLogin = () => getWxLoginResult(function (wxLoginError, wxLoginResult) { - if (wxLoginError) { - options.fail(wxLoginError); - return; - } - - var userInfo = wxLoginResult.userInfo; - - // 构造请求头,包含 code、encryptedData 和 iv - var code = wxLoginResult.code; - var encryptedData = wxLoginResult.encryptedData; - var iv = wxLoginResult.iv; - var header = {}; - - header[constants.WX_HEADER_CODE] = code; - header[constants.WX_HEADER_ENCRYPTED_DATA] = encryptedData; - header[constants.WX_HEADER_IV] = iv; - - // 请求服务器登录地址,获得会话信息 - wx.request({ - url: options.loginUrl, - header: header, - method: options.method, - data: options.data, - - success: function (result) { - var data = result.data; - - // 成功地响应会话信息 - if (data && data[constants.WX_SESSION_MAGIC_ID]) { - if (data.session) { - data.session.userInfo = userInfo; - Session.set(data.session); - options.success(userInfo); - } else { - var errorMessage = '登录失败(' + data.error + '):' + (data.message || '未知错误'); - var noSessionError = new LoginError(constants.ERR_LOGIN_SESSION_NOT_RECEIVED, errorMessage); - options.fail(noSessionError); - } - - // 没有正确响应会话信息 - } else { - var errorMessage = '登录请求没有包含会话响应,请确保服务器处理 `' + options.loginUrl + '` 的时候正确使用了 SDK 输出登录结果'; - var noSessionError = new LoginError(constants.ERR_LOGIN_SESSION_NOT_RECEIVED, errorMessage); - options.fail(noSessionError); - } - }, - - // 响应错误 - fail: function (loginResponseError) { - var error = new LoginError(constants.ERR_LOGIN_FAILED, '登录失败,可能是网络错误或者服务器发生异常'); - options.fail(error); - }, - }); - }); - - var session = Session.get(); - if (session) { - wx.checkSession({ - success: function () { - options.success(session.userInfo); - }, - - fail: function () { - Session.clear(); - doLogin(); - }, - }); - } else { - doLogin(); - } -}; - -var setLoginUrl = function (loginUrl) { - defaultOptions.loginUrl = loginUrl; -}; - -module.exports = { - LoginError: LoginError, - login: login, - setLoginUrl: setLoginUrl, -}; - diff --git a/vendors/wafer-client-sdk/lib/request.js b/vendors/wafer-client-sdk/lib/request.js deleted file mode 100644 index 1797283..0000000 --- a/vendors/wafer-client-sdk/lib/request.js +++ /dev/null @@ -1,125 +0,0 @@ -var constants = require('./constants'); -var utils = require('./utils'); -var Session = require('./session'); -var loginLib = require('./login'); - -var noop = function noop() {}; - -var buildSessionHeader = function buildSessionHeader() { - var session = Session.get(); - var header = {}; - - if (session && session.id && session.skey) { - header[constants.WX_HEADER_ID] = session.id; - header[constants.WX_HEADER_SKEY] = session.skey; - } - - return header; -}; - -/*** - * @class - * 表示请求过程中发生的异常 - */ -var RequestError = (function () { - function RequestError(type, message) { - Error.call(this, message); - this.type = type; - this.message = message; - } - - RequestError.prototype = new Error(); - RequestError.prototype.constructor = RequestError; - - return RequestError; -})(); - -function request(options) { - if (typeof options !== 'object') { - var message = '请求传参应为 object 类型,但实际传了 ' + (typeof options) + ' 类型'; - throw new RequestError(constants.ERR_INVALID_PARAMS, message); - } - - var requireLogin = options.login; - var success = options.success || noop; - var fail = options.fail || noop; - var complete = options.complete || noop; - var originHeader = options.header || {}; - - // 成功回调 - var callSuccess = function () { - success.apply(null, arguments); - complete.apply(null, arguments); - }; - - // 失败回调 - var callFail = function (error) { - fail.call(null, error); - complete.call(null, error); - }; - - // 是否已经进行过重试 - var hasRetried = false; - - if (requireLogin) { - doRequestWithLogin(); - } else { - doRequest(); - } - - // 登录后再请求 - function doRequestWithLogin() { - loginLib.login({ success: doRequest, fail: callFail }); - } - - // 实际进行请求的方法 - function doRequest() { - var authHeader = buildSessionHeader(); - - wx.request(utils.extend({}, options, { - header: utils.extend({}, originHeader, authHeader), - - success: function (response) { - var data = response.data; - - // 如果响应的数据里面包含 SDK Magic ID,表示被服务端 SDK 处理过,此时一定包含登录态失败的信息 - if (data && data[constants.WX_SESSION_MAGIC_ID]) { - // 清除登录态 - Session.clear(); - - var error, message; - if (data.error === constants.ERR_INVALID_SESSION) { - // 如果是登录态无效,并且还没重试过,会尝试登录后刷新凭据重新请求 - if (!hasRetried) { - hasRetried = true; - doRequestWithLogin(); - return; - } - - message = '登录态已过期'; - error = new RequestError(data.error, message); - - } else { - message = '鉴权服务器检查登录态发生错误(' + (data.error || 'OTHER') + '):' + (data.message || '未知错误'); - error = new RequestError(constants.ERR_CHECK_LOGIN_FAILED, message); - } - - callFail(error); - return; - } - - callSuccess.apply(null, arguments); - }, - - fail: callFail, - complete: noop, - })); - }; - -}; - -module.exports = { - RequestError: RequestError, - request: request, - buildSessionHeader: buildSessionHeader -}; \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/session.js b/vendors/wafer-client-sdk/lib/session.js deleted file mode 100644 index eb37d82..0000000 --- a/vendors/wafer-client-sdk/lib/session.js +++ /dev/null @@ -1,18 +0,0 @@ -var constants = require('./constants'); -var SESSION_KEY = 'weapp_session_' + constants.WX_SESSION_MAGIC_ID; - -var Session = { - get: function () { - return wx.getStorageSync(SESSION_KEY) || null; - }, - - set: function (session) { - wx.setStorageSync(SESSION_KEY, session); - }, - - clear: function () { - wx.removeStorageSync(SESSION_KEY); - }, -}; - -module.exports = Session; \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/tunnel.js b/vendors/wafer-client-sdk/lib/tunnel.js deleted file mode 100644 index e94c7df..0000000 --- a/vendors/wafer-client-sdk/lib/tunnel.js +++ /dev/null @@ -1,528 +0,0 @@ -var requestLib = require('./request'); -var wxTunnel = require('./wxTunnel'); - -/** - * 当前打开的信道,同一时间只能有一个信道打开 - */ -var currentTunnel = null; - -// 信道状态枚举 -var STATUS_CLOSED = Tunnel.STATUS_CLOSED = 'CLOSED'; -var STATUS_CONNECTING = Tunnel.STATUS_CONNECTING = 'CONNECTING'; -var STATUS_ACTIVE = Tunnel.STATUS_ACTIVE = 'ACTIVE'; -var STATUS_RECONNECTING = Tunnel.STATUS_RECONNECTING = 'RECONNECTING'; - -// 错误类型枚举 -var ERR_CONNECT_SERVICE = Tunnel.ERR_CONNECT_SERVICE = 1001; -var ERR_CONNECT_SOCKET = Tunnel.ERR_CONNECT_SOCKET = 1002; -var ERR_RECONNECT = Tunnel.ERR_RECONNECT = 2001; -var ERR_SOCKET_ERROR = Tunnel.ERR_SOCKET_ERROR = 3001; - -// 包类型枚举 -var PACKET_TYPE_MESSAGE = 'message'; -var PACKET_TYPE_PING = 'ping'; -var PACKET_TYPE_PONG = 'pong'; -var PACKET_TYPE_TIMEOUT = 'timeout'; -var PACKET_TYPE_CLOSE = 'close'; - -// 断线重连最多尝试 5 次 -var DEFAULT_MAX_RECONNECT_TRY_TIMES = 5; - -// 每次重连前,等待时间的增量值 -var DEFAULT_RECONNECT_TIME_INCREASE = 1000; - -function Tunnel(serviceUrl) { - if (currentTunnel && currentTunnel.status !== STATUS_CLOSED) { - throw new Error('当前有未关闭的信道,请先关闭之前的信道,再打开新信道'); - } - - currentTunnel = this; - - // 等确认微信小程序全面支持 ES6 就不用那么麻烦了 - var me = this; - - //========================================================================= - // 暴露实例状态以及方法 - //========================================================================= - this.serviceUrl = serviceUrl; - this.socketUrl = null; - this.status = null; - - this.open = openConnect; - this.on = registerEventHandler; - this.emit = emitMessagePacket; - this.close = close; - - this.isClosed = isClosed; - this.isConnecting = isConnecting; - this.isActive = isActive; - this.isReconnecting = isReconnecting; - - - //========================================================================= - // 信道状态处理,状态说明: - // closed - 已关闭 - // connecting - 首次连接 - // active - 当前信道已经在工作 - // reconnecting - 断线重连中 - //========================================================================= - function isClosed() { return me.status === STATUS_CLOSED; } - function isConnecting() { return me.status === STATUS_CONNECTING; } - function isActive() { return me.status === STATUS_ACTIVE; } - function isReconnecting() { return me.status === STATUS_RECONNECTING; } - - function setStatus(status) { - var lastStatus = me.status; - if (lastStatus !== status) { - me.status = status; - } - } - - // 初始为关闭状态 - setStatus(STATUS_CLOSED); - - - //========================================================================= - // 信道事件处理机制 - // 信道事件包括: - // connect - 连接已建立 - // close - 连接被关闭(包括主动关闭和被动关闭) - // reconnecting - 开始重连 - // reconnect - 重连成功 - // error - 发生错误,其中包括连接失败、重连失败、解包失败等等 - // [message] - 信道服务器发送过来的其它事件类型,如果事件类型和上面内置的事件类型冲突,将在事件类型前面添加前缀 `@` - //========================================================================= - var preservedEventTypes = 'connect,close,reconnecting,reconnect,error'.split(','); - var eventHandlers = []; - - /** - * 注册消息处理函数 - * @param {string} messageType 支持内置消息类型("connect"|"close"|"reconnecting"|"reconnect"|"error")以及业务消息类型 - */ - function registerEventHandler(eventType, eventHandler) { - if (typeof eventHandler === 'function') { - eventHandlers.push([eventType, eventHandler]); - } - } - - /** - * 派发事件,通知所有处理函数进行处理 - */ - function dispatchEvent(eventType, eventPayload) { - eventHandlers.forEach(function (handler) { - var handleType = handler[0]; - var handleFn = handler[1]; - - if (handleType === '*') { - handleFn(eventType, eventPayload); - } else if (handleType === eventType) { - handleFn(eventPayload); - } - }); - } - - /** - * 派发事件,事件类型和系统保留冲突的,事件名会自动加上 '@' 前缀 - */ - function dispatchEscapedEvent(eventType, eventPayload) { - if (preservedEventTypes.indexOf(eventType) > -1) { - eventType = '@' + eventType; - } - - dispatchEvent(eventType, eventPayload); - } - - - //========================================================================= - // 信道连接控制 - //========================================================================= - var isFirstConnection = true; - var isOpening = false; - - /** - * 连接信道服务器,获取 WebSocket 连接地址,获取地址成功后,开始进行 WebSocket 连接 - */ - function openConnect() { - if (isOpening) return; - isOpening = true; - - // 只有关闭状态才会重新进入准备中 - setStatus(isFirstConnection ? STATUS_CONNECTING : STATUS_RECONNECTING); - - requestLib.request({ - url: serviceUrl, - method: 'GET', - success: function (response) { - if (+response.statusCode === 200 && response.data && response.data.url) { - openSocket(me.socketUrl = response.data.url); - } else { - dispatchConnectServiceError(response); - } - }, - fail: dispatchConnectServiceError, - complete: () => isOpening = false, - }); - - function dispatchConnectServiceError(detail) { - if (isFirstConnection) { - setStatus(STATUS_CLOSED); - - dispatchEvent('error', { - code: ERR_CONNECT_SERVICE, - message: '连接信道服务失败,网络错误或者信道服务没有正确响应', - detail: detail || null, - }); - - } else { - startReconnect(detail); - } - } - } - - /** - * 打开 WebSocket 连接,打开后,注册微信的 Socket 处理方法 - */ - function openSocket(url) { - wxTunnel.listen({ - onOpen: handleSocketOpen, - onMessage: handleSocketMessage, - onClose: handleSocketClose, - onError: handleSocketError, - }); - - wx.connectSocket({ url: url }); - isFirstConnection = false; - } - - - //========================================================================= - // 处理消息通讯 - // - // packet - 数据包,序列化形式为 `${type}` 或者 `${type}:${content}` - // packet.type - 包类型,包括 message, ping, pong, close - // packet.content? - 当包类型为 message 的时候,会附带 message 数据 - // - // message - 消息体,会使用 JSON 序列化后作为 packet.content - // message.type - 消息类型,表示业务消息类型 - // message.content? - 消息实体,可以为任意类型,表示消息的附带数据,也可以为空 - // - // 数据包示例: - // - 'ping' 表示 Ping 数据包 - // - 'message:{"type":"speak","content":"hello"}' 表示一个打招呼的数据包 - //========================================================================= - - // 连接还没成功建立的时候,需要发送的包会先存放到队列里 - var queuedPackets = []; - - /** - * WebSocket 打开之后,更新状态,同时发送所有遗留的数据包 - */ - function handleSocketOpen() { - /* istanbul ignore else */ - if (isConnecting()) { - dispatchEvent('connect'); - - } - else if (isReconnecting()) { - dispatchEvent('reconnect'); - resetReconnectionContext(); - } - - setStatus(STATUS_ACTIVE); - emitQueuedPackets(); - nextPing(); - } - - /** - * 收到 WebSocket 数据包,交给处理函数 - */ - function handleSocketMessage(message) { - resolvePacket(message.data); - } - - /** - * 发送数据包,如果信道没有激活,将先存放队列 - */ - function emitPacket(packet) { - if (isActive()) { - sendPacket(packet); - } else { - queuedPackets.push(packet); - } - } - - /** - * 数据包推送到信道 - */ - function sendPacket(packet) { - var encodedPacket = [packet.type]; - - if (packet.content) { - encodedPacket.push(JSON.stringify(packet.content)); - } - - wx.sendSocketMessage({ - data: encodedPacket.join(':'), - fail: handleSocketError, - }); - } - - function emitQueuedPackets() { - queuedPackets.forEach(emitPacket); - - // empty queued packets - queuedPackets.length = 0; - } - - /** - * 发送消息包 - */ - function emitMessagePacket(messageType, messageContent) { - var packet = { - type: PACKET_TYPE_MESSAGE, - content: { - type: messageType, - content: messageContent, - }, - }; - - emitPacket(packet); - } - - /** - * 发送 Ping 包 - */ - function emitPingPacket() { - emitPacket({ type: PACKET_TYPE_PING }); - } - - /** - * 发送关闭包 - */ - function emitClosePacket() { - emitPacket({ type: PACKET_TYPE_CLOSE }); - } - - /** - * 解析并处理从信道接收到的包 - */ - function resolvePacket(raw) { - var packetParts = raw.split(':'); - var packetType = packetParts.shift(); - var packetContent = packetParts.join(':') || null; - var packet = { type: packetType }; - - if (packetContent) { - try { - packet.content = JSON.parse(packetContent); - } catch (e) {} - } - - switch (packet.type) { - case PACKET_TYPE_MESSAGE: - handleMessagePacket(packet); - break; - case PACKET_TYPE_PONG: - handlePongPacket(packet); - break; - case PACKET_TYPE_TIMEOUT: - handleTimeoutPacket(packet); - break; - case PACKET_TYPE_CLOSE: - handleClosePacket(packet); - break; - default: - handleUnknownPacket(packet); - break; - } - } - - /** - * 收到消息包,直接 dispatch 给处理函数 - */ - function handleMessagePacket(packet) { - var message = packet.content; - dispatchEscapedEvent(message.type, message.content); - } - - - //========================================================================= - // 心跳、断开与重连处理 - //========================================================================= - - /** - * Ping-Pong 心跳检测超时控制,这个值有两个作用: - * 1. 表示收到服务器的 Pong 相应之后,过多久再发下一次 Ping - * 2. 如果 Ping 发送之后,超过这个时间还没收到 Pong,断开与服务器的连接 - * 该值将在与信道服务器建立连接后被更新 - */ - let pingPongTimeout = 15000; - let pingTimer = 0; - let pongTimer = 0; - - /** - * 信道服务器返回 Ping-Pong 控制超时时间 - */ - function handleTimeoutPacket(packet) { - var timeout = packet.content * 1000; - /* istanbul ignore else */ - if (!isNaN(timeout)) { - pingPongTimeout = timeout; - ping(); - } - } - - /** - * 收到服务器 Pong 响应,定时发送下一个 Ping - */ - function handlePongPacket(packet) { - nextPing(); - } - - /** - * 发送下一个 Ping 包 - */ - function nextPing() { - clearTimeout(pingTimer); - clearTimeout(pongTimer); - pingTimer = setTimeout(ping, pingPongTimeout); - } - - /** - * 发送 Ping,等待 Pong - */ - function ping() { - /* istanbul ignore else */ - if (isActive()) { - emitPingPacket(); - - // 超时没有响应,关闭信道 - pongTimer = setTimeout(handlePongTimeout, pingPongTimeout); - } - } - - /** - * Pong 超时没有响应,信道可能已经不可用,需要断开重连 - */ - function handlePongTimeout() { - startReconnect('服务器已失去响应'); - } - - // 已经重连失败的次数 - var reconnectTryTimes = 0; - - // 最多允许失败次数 - var maxReconnectTryTimes = Tunnel.MAX_RECONNECT_TRY_TIMES || DEFAULT_MAX_RECONNECT_TRY_TIMES; - - // 重连前等待的时间 - var waitBeforeReconnect = 0; - - // 重连前等待时间增量 - var reconnectTimeIncrease = Tunnel.RECONNECT_TIME_INCREASE || DEFAULT_RECONNECT_TIME_INCREASE; - - var reconnectTimer = 0; - - function startReconnect(lastError) { - if (reconnectTryTimes >= maxReconnectTryTimes) { - close(); - - dispatchEvent('error', { - code: ERR_RECONNECT, - message: '重连失败', - detail: lastError, - }); - } - else { - wx.closeSocket(); - waitBeforeReconnect += reconnectTimeIncrease; - setStatus(STATUS_RECONNECTING); - reconnectTimer = setTimeout(doReconnect, waitBeforeReconnect); - } - - if (reconnectTryTimes === 0) { - dispatchEvent('reconnecting'); - } - - reconnectTryTimes += 1; - } - - function doReconnect() { - openConnect(); - } - - function resetReconnectionContext() { - reconnectTryTimes = 0; - waitBeforeReconnect = 0; - } - - /** - * 收到服务器的关闭请求 - */ - function handleClosePacket(packet) { - close(); - } - - function handleUnknownPacket(packet) { - // throw away - } - - var isClosing = false; - - /** - * 收到 WebSocket 断开的消息,处理断开逻辑 - */ - function handleSocketClose() { - /* istanbul ignore if */ - if (isClosing) return; - - /* istanbul ignore else */ - if (isActive()) { - // 意外断开的情况,进行重连 - startReconnect('链接已断开'); - } - } - - function close() { - isClosing = true; - closeSocket(); - setStatus(STATUS_CLOSED); - resetReconnectionContext(); - isFirstConnection = false; - clearTimeout(pingTimer); - clearTimeout(pongTimer); - clearTimeout(reconnectTimer); - dispatchEvent('close'); - isClosing = false; - } - - function closeSocket(emitClose) { - if (isActive() && emitClose !== false) { - emitClosePacket(); - } - - wx.closeSocket(); - } - - - //========================================================================= - // 错误处理 - //========================================================================= - - /** - * 错误处理 - */ - function handleSocketError(detail) { - switch (me.status) { - case Tunnel.STATUS_CONNECTING: - dispatchEvent('error', { - code: ERR_SOCKET_ERROR, - message: '连接信道失败,网络错误或者信道服务不可用', - detail: detail, - }); - break; - } - } - -} - -module.exports = Tunnel; \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/utils.js b/vendors/wafer-client-sdk/lib/utils.js deleted file mode 100644 index 67fdcd4..0000000 --- a/vendors/wafer-client-sdk/lib/utils.js +++ /dev/null @@ -1,18 +0,0 @@ - -/** - * 拓展对象 - */ -exports.extend = function extend(target) { - var sources = Array.prototype.slice.call(arguments, 1); - - for (var i = 0; i < sources.length; i += 1) { - var source = sources[i]; - for (var key in source) { - if (source.hasOwnProperty(key)) { - target[key] = source[key]; - } - } - } - - return target; -}; \ No newline at end of file diff --git a/vendors/wafer-client-sdk/lib/wxTunnel.js b/vendors/wafer-client-sdk/lib/wxTunnel.js deleted file mode 100644 index a1d32be..0000000 --- a/vendors/wafer-client-sdk/lib/wxTunnel.js +++ /dev/null @@ -1,32 +0,0 @@ -/* istanbul ignore next */ -const noop = () => void(0); - -let onOpen, onClose, onMessage, onError; - -/* istanbul ignore next */ -function listen(listener) { - if (listener) { - onOpen = listener.onOpen; - onClose = listener.onClose; - onMessage = listener.onMessage; - onError = listener.onError; - } else { - onOpen = noop; - onClose = noop; - onMessage = noop; - onError = noop; - } -} - -/* istanbul ignore next */ -function bind() { - wx.onSocketOpen(result => onOpen(result)); - wx.onSocketClose(result => onClose(result)); - wx.onSocketMessage(result => onMessage(result)); - wx.onSocketError(error => onError(error)); -} - -listen(null); -bind(); - -module.exports = { listen }; \ No newline at end of file diff --git a/读我.txt b/读我.txt deleted file mode 100644 index 47dd6d7..0000000 --- a/读我.txt +++ /dev/null @@ -1,15 +0,0 @@ -# 后台数据交互部分日志 - -## 已完成-登录微信公众平台,前往 设置 > 开发设置 > 服务器配置 > 「修改」 链接,增加下述域名为白名单中的域名 -request合法域名 -fqcxn98z.api.lncldglobal.com -fqcxn98z.engine.lncldglobal.com -fqcxn98z.rtm.lncldglobal.com -fqcxn98z.push.lncldglobal.com -app-router.leancloud.cn -socket合法域名 -us-w1-backend2.leancloud.cn -us-w1-backend3.leancloud.cn -us-w1-backend4.leancloud.cn -us-w1-backend5.leancloud.cn -us-w1-backend6.leancloud.cn

S?Fwg?EA}ECxyq$FUaR}b`-eU0%Y`grVtiTsd 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 of}&kN{@#Fl+uFIp-4%0cS}o$2uSyP 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 literal 0 HcmV?d00001 diff --git a/images/none.png b/images/none.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b5fbbb5aaeec9cd87ee9f4e08ad3a137f5c80f GIT binary patch literal 19568 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 CD2GJ= literal 0 HcmV?d00001 diff --git a/images/none2.png b/images/none2.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b3318c8bf9d7fe8f2264f28cc6c01d86abe835 GIT binary patch literal 14938 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 Hr-UW|ElG?8 literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_contact_pressed.png b/images/tabbar-icon/tabbar_contact_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..67a97912b09c35ae5d135966ebb30375722a21cf GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u#3?$#IayJ4}q5(c3u0WdM_;xhZ%<6j|D9%pjo-U3d8t30$HsoqB;AwrRv9vg_;F|Oc#V;J^(oX*ES74E5 zstxGc@w5NFP=&y%EhmJ}&r?6CdOj(Z<(47)nI}88H#a}`D|%zumHLKDJ;lnv{b>^4 z(;^`1n?Kva@tNqRZ=A-@1UKE(UT1%E+SO+nZ`hRYZR++-ivsz8!PC{xWt~$(698J< BRZ0K= literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_record_default.png b/images/tabbar-icon/tabbar_record_default.png new file mode 100644 index 0000000000000000000000000000000000000000..cfeba6345bbf714ced9da39178ead45f7f2a0244 GIT binary patch literal 943 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sO9OmDT!A#Rx)ZayBa6Bd5HYI( z*&xKA4JOqbfNZD~M1i^^vzjAB4VVP6nIKx!ogs=LA}nf7Km;@ytPIKk8pWpW#0WDJ zsF6Y4kpW0*x`Gs|IkCbVz^v&8GEK{aS;J-R#^!54hZ>gz`2{n)h`My@_nV_^Kg2$C zS9+NrNci$(?bHc5A%YKXY$@y@b+k) z7>ncmPdCo08`^Kr*>AugQn}NAp89q3=6&Kq0<%q@EaKnSIN|5#=_`Ims5re2cy8R6 zX13z}m#h5~4&2|P!=KXkC?el(b((^_{Oauc4SDey2ThCx{NkT(u$&O_c>28CT$YP3 zIo(%D*V%Khu=|7UpHh9PiQ!r2BL#0}_i0Z2`np#(;ps1rIY+Kb>|?&&w0R<@?n0#l zvl13F{&Hp0I`LVraYKJKia87gyZPahGFG`ts|FD=x7!?Vq9Q=p0e{xm{|-^5;udFHoJ^G@0{L zvD@|NL+1qCr3)f0ycbtIy_Gogz`54RCtSk+>e_d9{Q30T>(x8i`c;Y3&NMXq5C5gWsoSR_es#5!uFK?Jq#MLva@Gr=87^2Bx_Gln|yM`{t2Rd zOO7co>)ZTsqn`m)+d=`F^wA9Njl3M4iR@mo|TR b|AX0he~_3+N8MFmf@bh^^>bP0l+XkKmD7fr literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_record_pressed.png b/images/tabbar-icon/tabbar_record_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..af3e6bead7608ab396046d00a30c920ae1bc2614 GIT binary patch literal 773 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-ss{?#OT!A$6@$C#JwlQqp%y8x; z)A8-hCw2fun2+yZ0wE9s%-s%TLlDEUtq=u3lJ)owhU429PVQtn0aOW60FpYfo#ohe zmJ>S|jzP6R1y6vvP?g(&%9xLD1EFI(7*6eEJ-!p9?BW6DGkcg%?P5N&oB8BU=5u?Q z&+lWtdW8A%p(8=^nLy|2mjw9*Gi;JzV!L+e$ETMMj{ko9ys1oZ*_>&HTA~+EwK@rS8?yS50$zI2i95njh53 zNR_3leL6dYW!ulHBmHJ9T}?_~1wuOKN%Cx%Fd=I3?gfk-oJVBum8VQ9 zYutRgM(Y&I8J@Q(1;lYo2P2R6tSZq(oYG=KX z4iBi}e{@yx?Ai+xoFD4VyA;HCJ8SAMum7Dw{Fj5KE-I4Wp#A*Dsx4RAlXqTjm@K1t zs(jXbRlyg2r#39$o>$!VJV8-$>%AYn!i{a0ngf~|B!umC&&A)FGq|E%Gqu? zRS9zMulbX^w}j*5mH#(i%dYeK{BUupoyx%#R)K4l6f)hcnfD~(&6i)2?bqUB>|K`& z&wfy3A$MYakZ^aw8-_|tDQH)%(rw=f;0W!WdYN{c^6o&enA6m_*GIeOb@@@pm=`9-LTrb&l)ie}4^3 zZ_W7XYK5|QexD!tr`-f zrwXrLKNITQS<52)hlx>X8B!fIo)Pev$bGe#{4K3hKM73Gnb@yzS!OB z*F7oRfWe`nBxF)^KPk_Z;;czab3OnnoYpH&_(4J-aq$U-*2$WpL^qNl?c_dIUyll zzxCeyc#Bkr}z&Fc-lSCH2nC+t%|}86op!IoGOwdHuRK zB`uP{A(2TndKm*px$((R?WodgS317*W>s=rl@R!SkZs0Vhm9fo7rp!SDn4gb=iJY! zKW_1V)QUeEljrmMF7J~#ZeO{$CD+)ZzCU{$yGnQ3-C89j^To&eHWy7iwdG&Ci9!0_ z`x$lmNe}s!{pLFTGrhW&xy6m4=ghrylW(OA_uBfe^=sUZ%qj7y`rq=8>EZI!Nq2wN Qn1D(dPgg&ebxsLQ02LbkivR!s literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_settings_pressed.png b/images/tabbar-icon/tabbar_settings_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1aa7ea849b8757c1952cf64595403358ec361 GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s8v}eoT!A#hsh!Nnw=2&l zJomr;##DighJHnVCKNySHQ2m6>a5oT{{y>EXP7p>|2(;KMz?!+efWXCQ#R+jUp|U$ zJfonaVfoFUb@$J2|KeY;+}e9=?HZmRhuA0g#oQ9Nh@NB{vfA=ZRl=G_+P`J)pOJ1+ z)8k)|_Lg_I!fZabYVT$T&qGqCkG^UiFN+lRdXW{j%#7pn$xZ)wmK*DGdhAOxeb0SI zS!s%v(VtnHG`rlMI~_WIvB>O=cemZ|m)^M?3;MUlJ=?#KXKADKwSSWrX>_UAP2j0r zl+$Frbd}5fZ$~%n;&$?^G!+OgyZC8>p=@UIx+{Aoi`@Cq%C9;*&0*d{E_RLw5z~^^ zb1#Z}u-aK#D&G9$OgS<3qJP1&wO)lk_sY7e_T7iop>nR|Oyz{TR~FA-e6t|!%&f5N zjE3nFTUT{!91~VK61%Ya#{<2Hu-!*WPlxMU+RlMzh6diF4Y{9OP4_G8X5FK8+rzOdGWgMRm$j!pt$zCGIA09&t^-A-%*WEM-<)Q8(DLIR z`vmWToG;fd%ij61*H}E5;n$y-@* zx3_2CvxD0o=nJd+?bvHwe7^9@?IRyMf6aJ#=yK@Y*LRsOo{naewQ;at%yrk%*U#hu zzeCNf_5%ygF*v6Mip}M}`Tkv)>9<*n{Qqx}{JVSi*G+4pH(NF(v-sBT-}`l<%9^+N zdG9|?*~2gRO-w{)^2hFL`EzD&5O{OV%87U8QM+fCzZ|i=%bha!mbk{HUIzs literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_sign_default.png b/images/tabbar-icon/tabbar_sign_default.png new file mode 100644 index 0000000000000000000000000000000000000000..62bafa4dad97ebd2f3aaecd66972168b40e47907 GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S$pJngu0Wbm-Dyyv&5_%;0G(w} z666=m@Qvy9uMcO1msGGHP|i<|lYVsBnV0j~`gzg8cE*}_R`q83T1c>-*t=zVz5bL? zRZp9x^KS!vwA<6gF~s8Z-l?z4Rv8Gia)~bEq>vuKz&X#ZvkBnXY zxjp61xzh7TejC4B^H^g-N8<0?TffA9?&&jd>HGJ)^ulzVfE5NJuS9t7+^C!%)bufB z;~j|b?m94QUW(p9{)@<(;X@~^dA4@1Qlm0bD!DwXSz@dT50b@7aV6^A*F zS?%8U-piL~YVT^7RY6-9zBZCM94PzW@lzthq4e?O)tu3IOH%-J-mH=6>Guc z6DQ~1V>|SzT=uwIq=og5T`flzH1B%)fWxx+PC)#FkXq*>%G)>+l0JE=vNb-8tqtE` zp1r?yacrW<$WoXW1OUvuo_i*HK$i8JrF zO=Wv!6)k(m^?>8|!><+`?M-q~ow@7Qoe$s2*L)5?U{u?oRQTC)a?F~8lTO5)U6RB1 zYyY<;71Rmzb9QKY49!EJm^N|rq@zA7Z0BQ{<-K~LB+b;f6m^Y@@)N7 i-SEGBaZ&g3pU4_Xxm~zc+@A(a0t}w6elF{r5}E*2i6txm literal 0 HcmV?d00001 diff --git a/images/tabbar-icon/tabbar_sign_pressed.png b/images/tabbar-icon/tabbar_sign_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..916b658015866f96f0599c46b45becea7ded6a81 GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S-T`Ry*ISGGyb8usMrjq2z=@aXd^k0Pds`KBU8+YTvo`U=sPjeHwE34YA z#U`jLGB7X(c)B=-Se)K_^>$H{fdJcs`HK~llqwiL25epX?Zf{6k3(~<51J|-E?IV8 zbf@C%yKmV3r%ht@dvsB@=aiP4xP9@BM@#h$IQzZ5{8-i=6)t6pH7M?{dd<2-vbW7> zilOz6^%=J}1sgSPD!O_0W9YeMTV}3wxp3+)?-BWceEX35(x+dt)$I#hdcM$j(LJ#h zSF?In-TDk&s;_jET!XjV~ZA@BRttXD{W1KZ*4%5HBLlMt@ zzU66AwQpoz`fFj+Y2gNr4q>m4kM9;_$4s3fbEm`3l4(Z8vbdS2AGKC2fAX}=&r?}z zQSgMXFAmDxy<48gP<-3vmHF#m{(+*M+4IkTJ9*zh-6rC`$nWgbZNDnnr!QXA^-(;Y Xne*Btr5Wr!pk(6d>gTe~DWM4f;OG~S literal 0 HcmV?d00001 diff --git a/images/topic.png b/images/topic.png deleted file mode 100644 index f3da4cbe5dfae3ee915caa098ffe5b4f6271456d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29130 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 t;ci&}cRJnw9n<&!e_r9~IQ#=B + +# 功能介绍 + +- 学员可以在点击右下角”加入课堂”选择课程加入,教员可以在“加入课堂中”新建课程 + +- 长按相应课程可以退出学习 + +- 进入课堂界面会显示在位,头像为彩色,若退出课堂界面则会显示灰色头像 + +- 教员在课堂界面中可以直观地看到学员在位情况,可以选择学员让其起立回答问题,并且对学员可以进行加分、减分操作 + +- 学员可以收到教员让其起立提问、回答的提示,还可以点击“我要提问、回答” + +- 在课堂界面右下角进入“更多”可以查看本课堂的课程文件资源 + +- 教员可以在课程的设置界面中更新课程的名称,还可以将学员移除本课程的学习 + +## 其他 + +- 用户可以在设置中更改姓名、用户名 + + + \ No newline at end of file diff --git a/pages/about/about.wxss b/pages/about/about.wxss new file mode 100644 index 0000000..0d61e08 --- /dev/null +++ b/pages/about/about.wxss @@ -0,0 +1 @@ +/* pages/about/about.wxss */ \ No newline at end of file diff --git a/pages/addclass/addclass.js b/pages/addclass/addclass.js index 2d5c12f..57fb704 100644 --- a/pages/addclass/addclass.js +++ b/pages/addclass/addclass.js @@ -10,52 +10,12 @@ Page({ * 页面的初始数据 */ classes: [], + current_user: null, data: { - new_classname:'', - new_class_teacher_username: '', + loading: true, classes: [] }, - updateName: function ({detail: {value}}){ - this.setData({new_classname:value}); - }, - create_class: function(event){ - let {new_classname} = this.data; - new_classname = new_classname.trim(); - if(new_classname==""){ - wx.showToast({ - title:"课程名称不能为空", - icon: "none" - }) - return; - } - class_ = new Class({ - name: new_classname, - teacher: AV.User.current() - }) - presence = new Presence({ - user: AV.User.current(), - class: class_ - }); - wx.showLoading({ - title: '请稍候', - }) - presence.save().then(()=>{ - wx.hideLoading(); - wx.showToast({ - title: '创建成功,可在首页课程列表以教师身份进入课堂', - icon:"none", - duration: 4000 - }); - this.setData({new_classname: ""}); - }, - ()=>{ - wx.hideLoading(); - wx.showToast({ - title: '操作失败', - icon: "none" - }); - }); - }, + add_class:function(event){ class_id = event.currentTarget.dataset.id; class_name = event.currentTarget.dataset.name; @@ -101,29 +61,36 @@ Page({ query = new AV.Query("Presence"); query.equalTo("user", AV.User.current()); query.include("class"); - query.find().then(this.set_presences.bind(this)); + return query.find().then(this.set_presences.bind(this)); }, set_presences: function(presences){ console.log("set_presences"); console.log(presences); present_class_ids = presences.map(presence=>presence.get("class").id); - classes =this.classes.map(class_=>{ - if(present_class_ids.indexOf(class_.id)>-1){ + classes = []; + current_user = this.current_user; + this.classes.map(class_=>{ + teacher = class_.get("teacher"); + if(present_class_ids.indexOf(class_.id)>-1 || current_user.id==teacher.id){ class_.set("present", true); }else{ class_.set("present", false); + classes.push(class_); } - return class_; }); console.log(classes); this.setData(jsonify({classes})); + this.setData({loading: false}); }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { - this.pull_classes().then(this.pull_presences); - this.setData({new_class_teacher_username: AV.User.current().get("username")}); + wx.showLoading({ + title: '加载中', + }) + this.current_user = AV.User.current(); + this.pull_classes().then(this.pull_presences).then(wx.hideLoading); }, /** diff --git a/pages/addclass/addclass.wxml b/pages/addclass/addclass.wxml index d63e6fa..b47f841 100644 --- a/pages/addclass/addclass.wxml +++ b/pages/addclass/addclass.wxml @@ -1,18 +1,9 @@ - - 创建我的课程 - - 课程名称: - - - - 教师用户名: - - - + - 可加入学习: + + 没有可以加入的课程了 - \ No newline at end of file diff --git a/pages/addclass/addclass.wxss b/pages/addclass/addclass.wxss index 4713583..b65d64d 100644 --- a/pages/addclass/addclass.wxss +++ b/pages/addclass/addclass.wxss @@ -16,7 +16,7 @@ position: relative; } .class-item:after { - content: '加入学习>'; + content: '加入 >'; display: block; position: absolute; right: 3rpx; @@ -31,35 +31,16 @@ vertical-align: middle; } -.input-wrap { - background: #fff; - border-bottom: 1px solid #eee; - margin: 0 -12px; - padding: 0 12px; - height: 46px; - line-height: 46px; +.none-content{ + align-self: center; } - -.info-input { - font-size: 18px; - line-height: 100%; - height: 100%; -} - -.disabled{ - color: #999; +text.none-content{ + font-size: 16px; + margin-top: 32rpx; } -.label { - color: #999; - display: inline; +image.none-content{ + margin-top: 120rpx; + height: 160rpx; + width: 180rpx; } - -.create-class{ - bottom: 0; -} - -button{ - margin: 4px 26px; - font-size: 14px; -} \ No newline at end of file diff --git a/pages/classdetail/classdetail.js b/pages/classdetail/classdetail.js index 9972e17..a9ff2d6 100644 --- a/pages/classdetail/classdetail.js +++ b/pages/classdetail/classdetail.js @@ -11,6 +11,7 @@ Page({ class: null, pic_urls: [], data: { + loading: true, files:[] }, @@ -26,7 +27,40 @@ Page({ }) }, del_file: function(event){ - + objectid = event.currentTarget.dataset.id; + fileid = event.currentTarget.dataset.fileid; + pull_files = this.pull_files.bind(this); + wx.showModal({ + title: '确认', + content: '删除该资源吗?', + success(res){ + if(res.confirm){ + file = new AV.Object.createWithoutData("File_", objectid); + file.destroy().then(()=>{ + wx.cloud.deleteFile({ + fileList:[fileid], + success:()=>{ + wx.showToast({ + title: '删除成功', + }); + pull_files(); + }, + fail:()=>{ + wx.showToast({ + title: '删除失败', + icon: "none" + }) + } + }); + + },()=>{ + wx.showToast({ + title: '操作失败', + icon:"none" + }) + })} + } + }) }, download: function(event){ console.log(event); @@ -141,6 +175,7 @@ Page({ return file; }) this.setData(jsonify({files})); + this.setData({loading: false}); console.log(this.data); }, /** diff --git a/pages/classdetail/classdetail.wxml b/pages/classdetail/classdetail.wxml index 6768c45..d85075f 100644 --- a/pages/classdetail/classdetail.wxml +++ b/pages/classdetail/classdetail.wxml @@ -2,10 +2,13 @@ 课堂资源 + + + - + {{file.filename}} 上传者:{{file.uploader_username}} diff --git a/pages/classdetail/classdetail.wxss b/pages/classdetail/classdetail.wxss index f57e050..82cc1e7 100644 --- a/pages/classdetail/classdetail.wxss +++ b/pages/classdetail/classdetail.wxss @@ -29,7 +29,19 @@ button{ vertical-align: center; font-size: 14px; } -.upload-file{ - background: white; - -} \ No newline at end of file + +.no-file-view{ + width: 100%; +} +text.no-file{ + font-size: 16px; + margin-top: 32rpx; + vertical-align: center; +} + +image.no-file{ + margin-top: 120rpx; + height: 160rpx; + width: 180rpx; + vertical-align: center; +} diff --git a/pages/classes/classes.js b/pages/classes/classes.js index 3533bdc..e0fafdc 100644 --- a/pages/classes/classes.js +++ b/pages/classes/classes.js @@ -18,16 +18,25 @@ Page({ class.name 课程名称 */ data: { - //classes: [{objectId: "232323", "name":"测试"}] - classes: [] + classes: [], + loading: true, }, presences: [], classes: [], + add_class:function(event){ + wx.navigateTo({ + url: '../addclass/addclass', + }) + }, del_class: function(event){ class_id = event.currentTarget.dataset.class_id; class_name = event.currentTarget.dataset.class_name; presence = this.presences.filter(presence=>presence.get("class").id==class_id)[0]; - pull_classes = this.pull_classes.bind(this); + if(presence==null){ + console.warn("presence not in list, is it the teacher's classroom?") + return; + } + pull_presences = this.pull_presences.bind(this); wx.showModal({ title: '退出学习', content: '退出学习会清零你该门课程的分数', @@ -37,7 +46,7 @@ Page({ title: '请稍候', }) presence.destroy().then(() => { - pull_classes(); + pull_presences(); wx.hideLoading(); wx.showToast({ title: '退出成功', @@ -76,16 +85,22 @@ Page({ }, - pull_classes: function(){ - console.log("classes.pull_classes"); + pull_presences: function(){ + console.log("classes.pull_presences"); var query = new AV.Query("Presence"); query.equalTo("user", AV.User.current()); query.include("class"); - query.find().then((presences) => { + return query.find().then((presences) => { this.presences = presences; - this.classes = presences.map((presence) => {return presence.get("class")}); - console.log(this.classes); - this.setData(jsonify({ classes: this.classes })); + classes = presences.map((presence) => {return presence.get("class")}); + query = new AV.Query("Class_"); + query.equalTo("teacher", AV.User.current()); + query.include("teacher"); + query.find().then(myclasses=>{ + this.setData(jsonify({classes: classes.concat(myclasses), loading: false})); + }) + console.log(classes); + }) }, /** @@ -93,7 +108,12 @@ Page({ */ onShow: function () { console.log("classes.onShow()"); - this.pull_classes(); + if(this.data.loading){ + wx.showLoading({ + title: '加载中', + }) + } + this.pull_presences().then(wx.hideLoading); }, /** @@ -114,7 +134,7 @@ Page({ * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { - this.pull_classes(); + this.pull_presences(); }, /** diff --git a/pages/classes/classes.wxml b/pages/classes/classes.wxml index 8bf3225..909f1c7 100644 --- a/pages/classes/classes.wxml +++ b/pages/classes/classes.wxml @@ -6,43 +6,18 @@ classes: 课程列表 type: Array class.name 课程名称 --> + - 你还没有加入任何课堂 + + 你的课程表空空如也 - + {{class.name}} - - # 项目简介 - - ## 学员可以在点击右下角”加入课堂”选择课程加入,教员可以在“加入课堂中”新建课程 - - ## 长按相应课程可以退出学习 - - ## 进入课堂界面会显示在位,头像为彩色,若退出课堂界面则会显示灰色头像 - - ## 教员在课堂界面中可以直观地看到学员在位情况,可以选择学员让其起立回答问题,并且对学员可以进行加分、减分操作 - - ## 学员可以收到教员让其起立提问、回答的提示,还可以点击“我要提问、回答” - - ## 在课堂界面右下角进入“更多”可以查看本课堂的课程文件资源 - - ## 教员可以在课程的设置界面中更新课程的名称,还可以将学员移除本课程的学习 - - ## 其他 - - ### 用户可以在设置中更改姓名、用户名 - - ### 为方便测试,在设置中可以选择测试用户登陆 + + - - - - - 设置 - 加入课堂 - diff --git a/pages/classes/classes.wxss b/pages/classes/classes.wxss index 5aab06c..3865df4 100644 --- a/pages/classes/classes.wxss +++ b/pages/classes/classes.wxss @@ -33,30 +33,27 @@ .classroom-icon{ margin-left: 2px; margin-right: 10px; + } -.footer { +.add-class{ position: fixed; + right: 0; + margin-right: 48rpx; + margin-bottom: 36rpx; bottom: 0; - height: 44px; - width: 100%; - line-height: 44px; - color: #666; - border-top: 1px solid #eee; - background: #fff; - font-size: 16px; - text-align: center; } -.tappable{ - color: #1aad19; - padding: 0 12px; - position: absolute; +.none-content{ + align-self: center; } - -.addclass{ - right:0; +text.none-content{ + font-size: 16px; } -.setting{ - left:0; + +image.none-content{ + margin-top: 120rpx; + height: 240rpx; + width: 220rpx; } + diff --git a/pages/classroom/classroom.js b/pages/classroom/classroom.js index e1db95e..a74252f 100644 --- a/pages/classroom/classroom.js +++ b/pages/classroom/classroom.js @@ -22,8 +22,9 @@ Page({ asking_presence: null, idStudentMap: {}, data: { - //以下数据的同步由该代码文件实现,数据的呈现由classroom.wxml实现 + loading: true, students: [], // 该课程所有的学生, 元素类型见上文中的student + student_num: 0, current_user: null, //目前登陆的用户,类型为对象,属性有objectId,username, name teacher: null, select_stu_id: '', @@ -79,6 +80,8 @@ Page({ }).catch(console.error); }, close_conversation: function(event){ + console.log("close conversation"); + console.log(event); this.setData({show_conversation: false}); this.messageSubscription.unsubscribe(); this.messageUnbind(); @@ -159,6 +162,7 @@ Page({ set_presence: function(presences){ console.log("set_presence"); console.log(presences); + pull_presence = this.pull_presence.bind(this); this.presences = presences; students = this.presences.map((presence)=>{ student = presence.get("user"); @@ -167,7 +171,9 @@ Page({ if(students.length==1){ student = students[0]; }else{ - student.fetch(); + console.warn("pull_presence because new student join"); + pull_presence(); + return; } } this.idStudentMap[student.id]=student; @@ -182,6 +188,7 @@ Page({ }); this.students = students; this.setData(jsonify({students})); + this.setData({loading:false}) return presences; }, diff --git a/pages/classroom/classroom.wxml b/pages/classroom/classroom.wxml index 5ed07e1..2b60ea2 100644 --- a/pages/classroom/classroom.wxml +++ b/pages/classroom/classroom.wxml @@ -1,6 +1,6 @@ - - - + + + @@ -19,7 +19,12 @@ 发送 - 课程名称:{{class_name}} 教员姓名:{{teacher.name}} + + 课程名称:{{class_name}} 教员姓名:{{teacher.name}} + + + 还没有学员加入 + - - + diff --git a/pages/classroom/classroom.wxss b/pages/classroom/classroom.wxss index a961e3a..62a50b5 100644 --- a/pages/classroom/classroom.wxss +++ b/pages/classroom/classroom.wxss @@ -38,10 +38,7 @@ movable-view{ .send-message:hover{ opacity: 0.6; } -.classroom{ - width: 100%; - height: 100%; -} + .student-list{ display: -webkit-flex; @@ -100,3 +97,20 @@ button{ .white{ background: white; } + +.no-student-view{ + vertical-align: center; + align-items: center; + align-self: center; + +} +text.no-student{ + font-size: 16px; + margin-top: 32rpx; +} + +image.no-student{ + margin-top: 120rpx; + height: 160rpx; + width: 180rpx; +} diff --git a/pages/classsetting/classsetting.js b/pages/classsetting/classsetting.js index 2a9a8ec..b5aa4b3 100644 --- a/pages/classsetting/classsetting.js +++ b/pages/classsetting/classsetting.js @@ -24,7 +24,7 @@ Page({ wx.showToast({ title:"更新成功" }); - this.setData({classname: new_classname}); + this.setData({classname: new_classname, new_classname: ""}); },()=>{ wx.showToast({ title:"操作失败", diff --git a/pages/classsetting/classsetting.wxss b/pages/classsetting/classsetting.wxss index ba47c04..f37cc36 100644 --- a/pages/classsetting/classsetting.wxss +++ b/pages/classsetting/classsetting.wxss @@ -48,6 +48,5 @@ button{ .footer{ position: fixed; bottom: 0; - background: white; width: 100%; } \ No newline at end of file diff --git a/pages/config/config.js b/pages/config/config.js deleted file mode 100644 index 6ebcd28..0000000 --- a/pages/config/config.js +++ /dev/null @@ -1,24 +0,0 @@ -const app = getApp(); -const config = app.config; -const lab = require('../../lib/lab'); - -const done = config.host != '<请配置访问域名>'; - - -Page({ - data: { - done, - status: done ? 'success' : 'waiting', - host: config.host, - hintLine1: done ? '域名已配置' : '请修改小程序源码 app.js', - hintLine2: done ? '小程序实验将使用下面域名进行' : '配置小程序使用的服务器域名' - }, - goBack() { - wx.navigateBack(); - }, - onShow() { - if (done) { - lab.finish('config'); - } - } -}); \ No newline at end of file diff --git a/pages/config/config.json b/pages/config/config.json deleted file mode 100644 index 9e26dfe..0000000 --- a/pages/config/config.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pages/config/config.wxml b/pages/config/config.wxml deleted file mode 100644 index 9094a34..0000000 --- a/pages/config/config.wxml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - {{hintLine1}} - {{hintLine2}} - - - {{host}} - - - \ No newline at end of file diff --git a/pages/config/config.wxss b/pages/config/config.wxss deleted file mode 100644 index 93bf0aa..0000000 --- a/pages/config/config.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/config/config.wxss */ \ No newline at end of file diff --git a/pages/createclass/createclass.js b/pages/createclass/createclass.js new file mode 100644 index 0000000..9c07459 --- /dev/null +++ b/pages/createclass/createclass.js @@ -0,0 +1,108 @@ +// pages/createclass/createclass.js +const AV = require("../../lib/av-live-query-weapp-min") +const Presence = require("../../model/presence") +const Class = require("../../model/class") + + +Page({ + + /** + * 页面的初始数据 + */ + data: { + new_classname: '', + new_class_teacher_username: '', + }, + updateName: function ({ detail: { value } }) { + this.setData({ new_classname: value }); + }, + create_class: function (event) { + let { new_classname } = this.data; + new_classname = new_classname.trim(); + if (new_classname == "") { + wx.showToast({ + title: "课程名称不能为空", + icon: "none" + }) + return; + } + class_ = new Class({ + name: new_classname, + teacher: AV.User.current() + }) + wx.showLoading({ + title: '请稍候', + }) + class_.save().then(() => { + wx.hideLoading(); + wx.showToast({ + title: '创建成功,可在首页课程列表以教师身份进入课堂', + icon: "none", + duration: 4000 + }); + this.setData({ new_classname: "" }); + }, + () => { + wx.hideLoading(); + wx.showToast({ + title: '操作失败', + icon: "none" + }); + }); + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.setData({ new_class_teacher_username: AV.User.current().get("username") }); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/shouquan/shouquan.json b/pages/createclass/createclass.json similarity index 100% rename from pages/shouquan/shouquan.json rename to pages/createclass/createclass.json diff --git a/pages/createclass/createclass.wxml b/pages/createclass/createclass.wxml new file mode 100644 index 0000000..bbc27b1 --- /dev/null +++ b/pages/createclass/createclass.wxml @@ -0,0 +1,13 @@ + + + 创建我的课程 + + 课程名称: + + + + 教师用户名: + + + + \ No newline at end of file diff --git a/pages/createclass/createclass.wxss b/pages/createclass/createclass.wxss new file mode 100644 index 0000000..9529f2b --- /dev/null +++ b/pages/createclass/createclass.wxss @@ -0,0 +1,30 @@ + +.input-wrap { + background: #fff; + border-bottom: 1px solid #eee; + margin: 0 -12px; + padding: 0 12px; + height: 46px; + line-height: 46px; +} + +.info-input { + font-size: 18px; + line-height: 100%; + height: 100%; +} + +.disabled{ + color: #999; +} + +.label { + color: #999; + display: inline; +} + + +button{ + margin: 4px 26px; + font-size: 16px; +} \ No newline at end of file diff --git a/pages/game/game.js b/pages/game/game.js deleted file mode 100644 index 5ea0b56..0000000 --- a/pages/game/game.js +++ /dev/null @@ -1,253 +0,0 @@ -"use strict"; - -require('../../lib/regenerator-runtime'); - -const regeneratorRuntime = global.regeneratorRuntime; - -// 引入 co 和 promisify 帮助我们进行异步处理 -const co = require('../../lib/co'); -const promisify = require('../../lib/promisify'); - -// 引入 Wafer 客户端 SDK 支持会话 -const wafer = require('../../vendors/wafer-client-sdk/index'); - -// 简单的小程序 WebSocket 信道封装 -const Tunnel = require('../../lib/tunnel'); - -// 登录接口转成返回 Promise 形式 -const login = promisify(wafer.login); - -// 获得小程序实例 -const app = getApp(); - -// 用于记录实验成功 -const lab = require('../../lib/lab'); - -// 设置会话登录地址 -wafer.setLoginUrl(`https://${app.config.host}/login`); - -// 文案 -const WIN_TEXTS = ['很棒', '秒杀', '赢了', 'Winner', '胜利', '不要大意', '无敌啊']; -const LOSE_TEXTS = ['失误', '卧槽', '不可能', 'Loser', '行不行啊', '加油', '大侠再来']; -const EQ_TEXTS = ['平局', '平分秋色', '对方学你', '照镜子', '半斤八两', '换一个', '一样的']; -const pickText = texts => texts[Math.floor(texts.length * Math.random())]; - -// 定义页面 -Page({ - data: { - // 是否已经和服务器连接 - connected: false, - - // 游戏是否进行中 - playing: false, - - // 当前需要展示的游戏信息 - gameInfo: "", - - // 开始游戏按钮文本 - startButtonText: "开始", - - //「我」的信息,包括昵称、头像、分数、选择 - myName: "", - myAvatar: null, - myScore: 0, - myStreak: 0, - myChoice: Math.floor(Math.random() * 10000) % 3 + 1, - - //「你」的信息 - youHere: false, - yourName: "", - yourAvatar: null, - yourScore: 0, - yourStreak: 0, - yourChoice: 1, - yourMove: 0, - - // 取得胜利的是谁 - win: null - }, - - // 页面显示后,开始连接 - onShow: function() { - this.begin(); - }, - - // 进行登录和链接,完成后开始启动游戏服务 - begin: co.wrap(function *() { - try { - this.setData({ gameInfo: "正在登陆" }); - yield login(); - - this.setData({ gameInfo: "正在连接"}); - yield this.connect(); - } catch (error) { - console.error('error on login or connect: ', error); - } - this.serve(); - }), - - // 链接到服务器后进行身份识别 - connect: co.wrap(function *() { - - const tunnel = this.tunnel = new Tunnel(); - try { - yield tunnel.connect(`wss://${app.config.host}/game`, wafer.buildSessionHeader()); - } catch (connectError) { - console.error({ connectError }); - this.setData({ gameInfo: "连接错误" }); - throw connectError; - } - tunnel.on('close', () => { - this.setData({ - connected: false, - gameInfo: "连接已中断" - }); - }); - this.setData({ - gameInfo: "准备", - connected: true, - gameState: 'connected' - }); - return new Promise((resolve, reject) => { - // 10 秒后超时 - const timeout = setTimeout(() => reject, 10000); - tunnel.on('id', ({ uname, uid, uavatar }) => { - this.uid = uid; - this.setData({ - myName: uname, - myAvatar: uavatar - }); - resolve(tunnel); - clearTimeout(timeout); - }); - }); - }), - - // 开始进行游戏服务 - serve: co.wrap(function *() { - const tunnel = this.tunnel; - - // 游戏开始,初始化对方信息,启动计时器 - tunnel.on('start', packet => { - const you = packet.players.filter(user => user.uid !== this.uid).pop(); - - this.setData({ - playing: false, - done: false, - finding: true, - gameInfo: '正在寻找玩伴...' - }); - setTimeout(() => { - this.setData({ - youHere: true, - yourName: you.uname, - yourAvatar: you.uavatar, - finding: false, - playing: true, - gameInfo: "准备" - }); - }, 10); - - let gameTime = packet.gameTime; - clearInterval(this.countdownId); - this.countdownId = setInterval(() => { - if (gameTime > 0) { - this.setData({ gameInfo: --gameTime }); - } else { - clearInterval(this.countdownId); - } - }, 1000); - - this.tunnel.emit('choice', { choice: this.data.myChoice }); - }); - - // 对方有动静的时候,触发提醒 - let movementTimer = 0; - const movementTimeout = 300; - tunnel.on('movement', packet => { - const lastMove = this.lastMove; - - this.setData({ yourMove: lastMove == 1 ? 2 : 1 }); - - clearTimeout(movementTimer); - movementTimer = setTimeout(() => { - this.lastMove = this.data.yourMove; - this.setData({ yourMove: 0 }); - }, 300); - }); - - // 服务器通知结果 - tunnel.on('result', packet => { - - // 清除计时器 - clearInterval(this.countdownId); - - // 双方结果 - const myResult = packet.result.find(x => x.uid == this.uid); - const yourResult = packet.result.find(x => x.uid != this.uid); - - // 本局结果 - let gameInfo, win = 'nobody'; - - if (myResult.roundScore == 0 && yourResult.roundScore == 0) { - gameInfo = pickText(EQ_TEXTS); - } - else if (myResult.roundScore > 0) { - gameInfo = pickText(WIN_TEXTS); - win = 'me'; - } - else { - gameInfo = pickText(LOSE_TEXTS); - win = 'you' - } - - // 更新到视图 - this.setData({ - gameInfo, - myScore: myResult.totalScore, - myStreak: myResult.winStreak, - yourChoice: yourResult.choice, - yourScore: yourResult.totalScore, - yourStreak: yourResult.winStreak, - gameState: 'finish', - win, - startButtonText: win == 'you' ? "不服" : "再来", - done: true - }); - - lab.finish('game'); - setTimeout(() => this.setData({ playing: false }), 1000); - }); - }), - - requestComputer() { - if (this.tunnel) { - this.tunnel.emit('requestComputer'); - } - }, - - // 点击开始游戏按钮,发送加入游戏请求 - startGame: co.wrap(function *() { - if (this.data.playing) return; - if (!this.data.connected) return; - - this.setData({ - playing: false, - done: false, - finding: true, - gameInfo: '正在寻找玩伴...' - }); - this.tunnel.emit('join'); - }), - - // 点击手势,更新选择是石头、剪刀还是布 - switchChoice(e) { - if (!this.data.playing) return; - let myChoice = this.data.myChoice + 1; - if (myChoice == 4) { - myChoice = 1; - } - this.setData({ myChoice }); - this.tunnel.emit('choice', { choice: myChoice }); - } -}); diff --git a/pages/game/game.json b/pages/game/game.json deleted file mode 100644 index 9e26dfe..0000000 --- a/pages/game/game.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pages/game/game.wxml b/pages/game/game.wxml deleted file mode 100644 index 8595afb..0000000 --- a/pages/game/game.wxml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - {{myName}} - 得分 {{myScore}} - - - 连胜 {{myStreak}} - - - - - - - - - {{yourName}} - 得分 {{yourScore}} - - - 连胜 {{yourStreak}} - - - - {{gameInfo}} - - - - \ No newline at end of file diff --git a/pages/game/game.wxss b/pages/game/game.wxss deleted file mode 100644 index 9787c90..0000000 --- a/pages/game/game.wxss +++ /dev/null @@ -1,191 +0,0 @@ -.root { - overflow: hidden; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.my-side { - width: 1500rpx; - height: 1500rpx; - position: absolute; - bottom: -1125rpx; - left: -375rpx; - border-radius: 100%; - background: lightskyblue; - overflow: visible; -} - -.your-side { - width: 1500rpx; - height: 1500rpx; - position: absolute; - top: -1500rpx; - left: -375rpx; - border-radius: 100%; - background: lightpink; - overflow: visible; - transition: top ease 0.6s; -} - -.your-side.here { - top: -1125rpx; -} - -.avatar { - position: absolute; - width: 172rpx; - height: 172rpx; - border-radius: 100%; - border: 8rpx solid white; - background-color: #f0f0f0; -} - -.hand { - position: absolute; - width: 187rpx; - height: 187rpx; - border-radius: 100%; - overflow: visible; -} - -.score, .streak { - position: absolute; - color: #334567; - width: 225rpx; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.streak { - text-align: right; -} - -.my-side .avatar { - left: 656.25rpx; - top: -93.75rpx; - transition: top ease .2s; -} - -.my-side .hand { - left: 656.25rpx; - top: 150rpx; - transition: top ease .2s; -} - -.root.playing .my-side .hand:active { - transform: scale(1.3); -} - -.root.done .my-side .avatar { - top: 168.75rpx; -} - -.root.done .my-side .hand { - top: -112.5rpx; -} - -.my-side .score { - left: 412.5rpx; - bottom: 1162.5rpx; -} - -.my-side .streak { - right: 412.5rpx; - bottom: 1162.5rpx; -} - -.your-side .avatar { - left: 656.25rpx; - bottom: -93.75rpx; - transition: all ease .2s; - opacity: 0; -} - -.your-side.here .avatar { - opacity: 1; -} -.your-side.move-1 .avatar { - transform: rotate(15deg); -} -.your-side.move-2 .avatar { - transform: rotate(-15deg); -} - -.your-side .hand { - left: 656.25rpx; - bottom: 150rpx; - opacity: 0; - transition: bottom ease .2s; - transform: rotate(180deg); -} - -.root.done .your-side .avatar { - bottom: 168.75rpx; -} - -.root.done .your-side .hand { - bottom: -93.75rpx; - opacity: 1; -} - -.your-side .score { - left: 412.5rpx; - top: 1106.25rpx; -} - -.your-side .streak { - right: 412.5rpx; - top: 1106.25rpx; -} - - -.start-game, .request-computer { - position: absolute; - width: 200rpx; - height: 80rpx; - line-height: 80rpx; - margin-left: -100rpx; - bottom: 500rpx; - left: 50%; - display: none; -} - -.request-computer { - width: 300rpx; - margin-left: -150rpx; -} - -.root.finding .request-computer { - display: block; -} - -.root.connected .start-game { - display: block; -} - -.root.connected.playing .start-game, -.root.finding .start-game { - display: none; -} - -.game-info { - font-size: 75rpx; - position: absolute; - width: 750rpx; - height: 112.5rpx; - line-height: 112.5rpx; - margin-top: -56.25rpx; - bottom: 600rpx; - left: 0; - text-align: center; - opacity: 1; -} - -.root.connected.root.playing .game-info, -.root.connected.root.done .game-info { - opacity: 1; -} diff --git a/pages/https/https.js b/pages/https/https.js deleted file mode 100644 index d51aa2e..0000000 --- a/pages/https/https.js +++ /dev/null @@ -1,54 +0,0 @@ -const app = getApp(); -const config = app.config; -const lab = require('../../lib/lab'); - -Page({ - data: { - status: 'waiting', - url: 'https://' + config.host + '/hello', - requesting: false, - hintLine1: '完成服务器开发,', - hintLine2: '使得下面的地址可以访问' - }, - request() { - this.setData({ - requesting: true, - status: 'waiting', - hintLine1: '正在发送', - hintLine2: '...' - }); - wx.request({ - url: this.data.url, - method: 'GET', - success: (res) => { - if (+res.statusCode == 200) { - this.setData({ - status: 'success', - hintLine1: '服务器响应成功', - hintLine2: '返回:' + res.data - }); - lab.finish('https'); - } else { - this.setData({ - status: 'warn', - hintLine1: '响应错误', - hintLine2: '响应码:' + res.statusCode - }); - } - }, - fail: (res) => { - console.log(res); - this.setData({ - status: 'warn', - hintLine1: '请求失败', - hintLine2: res.errMsg - }); - }, - complete: () => { - this.setData({ - requesting: false - }); - } - }); - } -}); \ No newline at end of file diff --git a/pages/https/https.json b/pages/https/https.json deleted file mode 100644 index 9e26dfe..0000000 --- a/pages/https/https.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pages/https/https.wxml b/pages/https/https.wxml deleted file mode 100644 index ce75548..0000000 --- a/pages/https/https.wxml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - {{hintLine1}} - {{hintLine2}} - - - {{url}} - - - - - \ No newline at end of file diff --git a/pages/https/https.wxss b/pages/https/https.wxss deleted file mode 100644 index 8b52cef..0000000 --- a/pages/https/https.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/https/https.wxss */ \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js deleted file mode 100644 index 7d68f54..0000000 --- a/pages/index/index.js +++ /dev/null @@ -1,25 +0,0 @@ -const lab = require('../../lib/lab'); - -Page({ - data: { - labs: [ - { id: 'config', title: '实验准备:配置请求域名' }, - { id: 'https', title: '实验一:HTTPS' }, - { id: 'session', title: '实验二:会话' }, - { id: 'websocket', title: '实验三:WebSocket' }, - { id: 'game', title: '实验四:剪刀石头布小游戏' }, - { id: "classes", title: "进入教室"} - ], - done: lab.getFinishLabs() - }, - - onShow() { - console.log({ done: lab.getFinishLabs() }); - this.setData({ done: lab.getFinishLabs() }); - }, - - clear() { - lab.clear(); - this.setData({ done: lab.getFinishLabs() }); - } -}); \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json deleted file mode 100644 index 834c3dd..0000000 --- a/pages/index/index.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "navigationBarTitleText": "积分教室" -} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml deleted file mode 100644 index 2d696b0..0000000 --- a/pages/index/index.wxml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - {{lab.title}} - - - - - - \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss deleted file mode 100644 index a680707..0000000 --- a/pages/index/index.wxss +++ /dev/null @@ -1,41 +0,0 @@ -/* pages/index/index.wxss */ -.index { - font-family: 'PingFang SC'; -} - -.nav { - display: flex; - flex-direction: column; - padding: 0 50rpx; -} - -.nav navigator { - padding: 30rpx 0; - border-bottom: 1rpx solid #EEE; - position: relative; -} - -.nav navigator:after { - content: '>'; - display: block; - position: absolute; - right: 3rpx; - top: 50%; - height: 40rpx; - line-height: 40rpx; - margin-top: -20rpx; - color: #999; -} - -.nav navigator icon, -.nav navigator text { - vertical-align: middle; -} - -.nav navigator icon { - margin-right: 25rpx; -} - -.clear { - margin: 100rpx 50rpx; -} \ No newline at end of file diff --git a/pages/outside/outside.js b/pages/outside/outside.js deleted file mode 100644 index c0d981c..0000000 --- a/pages/outside/outside.js +++ /dev/null @@ -1,74 +0,0 @@ -// pages/outside/outside.js -Page({ - - /** - * 页面的初始数据 - */ - data: { - name: 'Hello World', - src: '/images/weixin.jpg' - }, - getMyInfo: function (e) { - console.log(e.detail.userInfo) - let info = e.detail.userInfo; - this.setData({ - name: info.nickName,//更新名称 - src: info.avatarUrl//更新图片来源 - }) - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/pages/outside/outside.wxml b/pages/outside/outside.wxml deleted file mode 100644 index 1ef6496..0000000 --- a/pages/outside/outside.wxml +++ /dev/null @@ -1,7 +0,0 @@ - - - {{name}} - - - - \ No newline at end of file diff --git a/pages/outside/outside.wxss b/pages/outside/outside.wxss deleted file mode 100644 index 4a0f3a2..0000000 --- a/pages/outside/outside.wxss +++ /dev/null @@ -1,18 +0,0 @@ -/* 样式设计 */ -.container{ - height: 90vh; /*高100视窗,这里写100%无效的*/ - display: flex; /*flex布局方法*/ - flex-direction: column;/*垂直布局*/ - align-items: center;/*水平方向居中*/ - justify-content: space-around;/*垂直方向分散布局*/ -} -.abc{ - width: 400rpx;/*图片宽度*/ - border-radius: 50%;/*4个角变为圆角形状*/ -} -text{ - font-size: 50rpx;/*字体大小*/ - color: red; - background-color: blue; - border:5rpx solid paleturquoise; -} diff --git a/pages/session/session.js b/pages/session/session.js deleted file mode 100644 index df218f7..0000000 --- a/pages/session/session.js +++ /dev/null @@ -1,67 +0,0 @@ -const app = getApp(); -const config = app.config; -const wafer = require('../../vendors/wafer-client-sdk/index'); -const lab = require('../../lib/lab'); - -wafer.setLoginUrl(`https://` + config.host + '/login'); - -Page({ - data: { - status: 'waiting', - url: 'https://' + config.host + '/me', - requesting: false, - hintLine1: '完成服务器开发,', - hintLine2: '让服务器可以识别小程序会话' - }, - request() { - this.setData({ - requesting: true, - status: 'waiting', - hintLine1: '正在发送', - hintLine2: '...' - }); - wafer.request({ - login: true, - url: this.data.url, - method: 'GET', - success: (res) => { - if (+res.statusCode == 200) { - if (res.data.openId) { - this.setData({ - status: 'success', - hintLine1: '成功获取会话', - hintLine2: res.data.nickName, - avatarUrl: res.data.avatarUrl - }); - lab.finish('session'); - } else { - this.setData({ - status: 'warn', - hintLine1: '会话获取失败', - hintLine2: '未获取到 openId' - }); - console.error('会话获取失败', res.data); - } - } else { - this.setData({ - status: 'warn', - hintLine1: '响应错误', - hintLine2: '响应码:' + res.statusCode - }); - } - }, - fail: (error) => { - this.setData({ - status: 'warn', - hintLine1: '获取失败', - hintLine2: error.message - }); - }, - complete: () => { - this.setData({ - requesting: false - }); - } - }); - } -}); \ No newline at end of file diff --git a/pages/session/session.json b/pages/session/session.json deleted file mode 100644 index 9e26dfe..0000000 --- a/pages/session/session.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pages/session/session.wxml b/pages/session/session.wxml deleted file mode 100644 index f3a2b8c..0000000 --- a/pages/session/session.wxml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - {{hintLine1}} - {{hintLine2}} - - - {{url}} - - - - - \ No newline at end of file diff --git a/pages/session/session.wxss b/pages/session/session.wxss deleted file mode 100644 index 7aa605e..0000000 --- a/pages/session/session.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/session/session.wxss */ \ No newline at end of file diff --git a/pages/setting/setting.js b/pages/setting/setting.js index 3054f84..c2d9ae1 100644 --- a/pages/setting/setting.js +++ b/pages/setting/setting.js @@ -1,4 +1,20 @@ - +const AV = require("../../lib/av-live-query-weapp-min") Page({ - + data:{ + current_user: null + }, + enter_usersetting: function(event){ + wx.navigateTo({ + url: '../user/user' + }) + }, + enter_changeuser: function(event){ + console.log(event); + wx.navigateTo({ + url: '../changeuser/changeuser' + }) + }, + onShow: function(){ + this.setData({current_user: AV.User.current().toJSON()}) + } }) \ No newline at end of file diff --git a/pages/setting/setting.wxml b/pages/setting/setting.wxml index ea2bee9..c1136e4 100644 --- a/pages/setting/setting.wxml +++ b/pages/setting/setting.wxml @@ -1,4 +1,13 @@ - 登陆信息修改 - 更换登陆用户 + + + {{current_user.name}} | {{current_user.username}} + + + 登陆信息修改 + + 加入课程 + 创建课程 + 关于 + \ No newline at end of file diff --git a/pages/setting/setting.wxss b/pages/setting/setting.wxss index c758974..af1b29a 100644 --- a/pages/setting/setting.wxss +++ b/pages/setting/setting.wxss @@ -1,7 +1,27 @@ -.navigator { +.nav { background: white; border-bottom: 1px solid #eee; padding: 0 12px; height: 46px; line-height: 46px; } + +.user-view{ + display: flex; + flex-direction: column; +} + +.user{ + align-self: center; +} +text.user{ + font-size: 16px; + margin-top: 5px; + margin-bottom: 8px; +} + +image.user{ + margin-top: 10rpx; + height: 120rpx; + width: 120rpx; +} diff --git a/pages/shouquan/shouquan.wxml b/pages/shouquan/shouquan.wxml deleted file mode 100644 index f2d6e00..0000000 --- a/pages/shouquan/shouquan.wxml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/shouquan/shouquan.wxss b/pages/shouquan/shouquan.wxss deleted file mode 100644 index e69de29..0000000 diff --git a/pages/websocket/websocket.js b/pages/websocket/websocket.js deleted file mode 100644 index 021915f..0000000 --- a/pages/websocket/websocket.js +++ /dev/null @@ -1,109 +0,0 @@ -const app = getApp(); -const config = app.config; -const wafer = require('../../vendors/wafer-client-sdk/index'); -const lab = require('../../lib/lab'); - -Page({ - data: { - status: 'waiting', - url: 'wss://' + config.host + '/ws', - connecting: false, - hintLine1: '完成服务器开发,', - hintLine2: '让服务器支持 WebSocket 连接' - }, - - /** - * WebSocket 是否已经连接 - */ - socketOpen: false, - - /** - * 开始连接 WebSocket - */ - connect() { - this.setData({ - status: 'waiting', - connecting: true, - hintLine1: '正在连接', - hintLine2: '...' - }); - this.listen(); - wafer.setLoginUrl(`https://${config.host}/login`); - wafer.login({ - success: () => { - const header = wafer.buildSessionHeader(); - const query = Object.keys(header).map(key => `${key}=${encodeURIComponent(header[key])}`).join('&'); - wx.connectSocket({ - // 小程序 wx.connectSocket() API header 参数无效,把会话信息附加在 URL 上 - url: `${this.data.url}?${query}`, - header - }); - }, - fail: (err) => { - this.setData({ - status: 'warn', - connecting: false, - hintLine1: '登录失败', - hintLine2: err.message || err - }); - } - }); - }, - - /** - * 监听 WebSocket 事件 - */ - listen() { - wx.onSocketOpen(() => { - this.socketOpen = true; - this.setData({ - status: 'success', - connecting: false, - hintLine1: '连接成功', - hintLine2: '现在可以通过 WebSocket 发送接收消息了' - }); - console.info('WebSocket 已连接'); - }); - wx.onSocketMessage((message) => { - this.setData({ - hintLine2: message.data - }); - lab.finish('websocket'); - }); - wx.onSocketClose(() => { - this.setData({ - status: 'waiting', - hintLine1: 'WebSocket 已关闭' - }); - console.info('WebSocket 已关闭'); - }); - wx.onSocketError(() => { - setTimeout(() => { - this.setData({ - status: 'warn', - connecting: false, - hintLine1: '发生错误', - hintLine2: 'WebSocket 连接建立失败' - }); - }); - console.error('WebSocket 错误'); - }); - }, - - /** - * 发送一个包含当前时间信息的消息 - */ - send() { - wx.sendSocketMessage({ - data: new Date().toTimeString().split(' ').shift() + '.' + (new Date().getMilliseconds()) - }); - }, - - /** - * 关闭 WebSocket 连接 - */ - close() { - this.socketOpen = false; - wx.closeSocket(); - } -}); \ No newline at end of file diff --git a/pages/websocket/websocket.json b/pages/websocket/websocket.json deleted file mode 100644 index 9e26dfe..0000000 --- a/pages/websocket/websocket.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/pages/websocket/websocket.wxml b/pages/websocket/websocket.wxml deleted file mode 100644 index 2c2af45..0000000 --- a/pages/websocket/websocket.wxml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - {{hintLine1}} - {{hintLine2}} - - - {{url}} - - - - - - - \ No newline at end of file diff --git a/pages/websocket/websocket.wxss b/pages/websocket/websocket.wxss deleted file mode 100644 index 36bb319..0000000 --- a/pages/websocket/websocket.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/websocket/websocket.wxss */ \ No newline at end of file diff --git a/vendors/wafer-client-sdk/.bower.json b/vendors/wafer-client-sdk/.bower.json deleted file mode 100644 index 05d43a6..0000000 --- a/vendors/wafer-client-sdk/.bower.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "wafer-client-sdk", - "description": "QCloud 微信小程序客户端 SDK", - "main": "index.js", - "authors": [ - "Tencent Cloud" - ], - "license": "MIT", - "keywords": [ - "qcloud", - "weapp", - "wechat", - "sdk", - "client", - "auth", - "websocket" - ], - "homepage": "https://github.com/tencentyun/wafer-client-sdk", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests", - "typings.json", - "jsconfig.json", - "package.json", - ".npmignore", - ".travis.yml", - ".gitignore" - ], - "version": "0.8.4", - "_release": "0.8.4", - "_resolution": { - "type": "version", - "tag": "v0.8.4", - "commit": "3f605d1aa5bd0206bb9368586f4acb104f5f8ae5" - }, - "_source": "https://github.com/tencentyun/wafer-client-sdk.git", - "_target": "^0.8.3", - "_originalSource": "wafer-client-sdk" -} \ No newline at end of file diff --git a/vendors/wafer-client-sdk/LICENSE b/vendors/wafer-client-sdk/LICENSE deleted file mode 100644 index 7bb43b8..0000000 --- a/vendors/wafer-client-sdk/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -LICENSE - "MIT License" - -Copyright (c) 2016 by Tencent Cloud - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendors/wafer-client-sdk/README.md b/vendors/wafer-client-sdk/README.md deleted file mode 100644 index 5c4f392..0000000 --- a/vendors/wafer-client-sdk/README.md +++ /dev/null @@ -1,247 +0,0 @@ -# 微信小程序客户端腾讯云增强 SDK - -[![Build Status](https://travis-ci.org/tencentyun/wafer-client-sdk.svg?branch=master)](https://travis-ci.org/tencentyun/wafer-client-sdk) -[![Coverage Status](https://coveralls.io/repos/github/tencentyun/wafer-client-sdk/badge.svg?branch=master)](https://coveralls.io/github/tencentyun/wafer-client-sdk?branch=master) -[![License](https://img.shields.io/github/license/tencentyun/wafer-client-sdk.svg)](LICENSE) - -本 项目是 [Wafer](https://github.com/tencentyun/wafer-solution) 的组成部分,为小程序客户端开发提供 SDK 支持会话服务和信道服务。 - -## SDK 获取与安装 - -解决方案[客户端 Demo](https://github.com/tencentyun/wafer-client-demo) 已经集成并使用最新版的 SDK,需要快速了解的可以从 Demo 开始。 - -如果需要单独开始,本 SDK 已经发布为 bower 模块,可以直接安装到小程序目录中。 - -```sh -npm install -g bower -bower install wafer-client-sdk -``` - -安装之后,就可以使用 `require` 引用 SDK 模块: - -```js -var qcloud = require('./bower_components/wafer-client-sdk/index.js'); -``` - -## 会话服务 - -[会话服务](https://github.com/tencentyun/wafer-solution/wiki/%E4%BC%9A%E8%AF%9D%E6%9C%8D%E5%8A%A1)让小程序拥有会话管理能力。 - -### 登录 - -登录可以在小程序和服务器之间建立会话,服务器由此可以获取到用户的标识和信息。 - -```js -var qcloud = require('./bower_components/qcloud-weapp-client-sdk/index.js'); - -// 设置登录地址 -qcloud.setLoginUrl('https://199447.qcloud.la/login'); -qcloud.login({ - success: function (userInfo) { - console.log('登录成功', userInfo); - }, - fail: function (err) { - console.log('登录失败', err); - } -}); -``` -本 SDK 需要配合云端 SDK 才能提供完整会话服务。通过 [setLoginUrl](#setLoginUrl) 设置登录地址,云服务器在该地址上使用云端 SDK 处理登录请求。 - -> `setLoginUrl` 方法设置登录地址之后会一直有效,因此你可以在微信小程序启动时设置。 - -登录成功后,可以获取到当前微信用户的基本信息。 - -### 请求 - -如果希望小程序的网络请求包含会话,登录之后使用 [request](#request) 方法进行网络请求即可。 - -```js -qcloud.request({ - url: 'http://199447.qcloud.la/user', - success: function (response) { - console.log(response); - }, - fail: function (err) { - console.log(err); - } -}); -``` - -如果调用 `request` 之前还没有登录,则请求不会带有会话。`request` 方法也支持 `login` 参数支持在请求之前自动登录。 - -```js -// 使用 login 参数之前,需要设置登录地址 -qcloud.setLoginUrl('https://199447.qcloud.la/login'); -qcloud.request({ - login: true, - url: 'http://199447.qcloud.la/user', - success: function (response) { - console.log(response); - }, - fail: function (err) { - console.log(err); - } -}); -``` - -关于会话服务详细技术说明,请参考 [Wiki](https://github.com/tencentyun/wafer-solution/wiki/%E4%BC%9A%E8%AF%9D%E6%9C%8D%E5%8A%A1)。 - -## 信道服务 - -[信道服务](https://github.com/tencentyun/wafer-solution/wiki/%E4%BF%A1%E9%81%93%E6%9C%8D%E5%8A%A1)小程序支持利用腾讯云的信道资源使用 WebSocket 服务。 - -```js -// 创建信道,需要给定后台服务地址 -var tunnel = this.tunnel = new qcloud.Tunnel('https://199447.qcloud.la/tunnel'); - -// 监听信道内置消息,包括 connect/close/reconnecting/reconnect/error -tunnel.on('connect', () => console.log('WebSocket 信道已连接')); -tunnel.on('close', () => console.log('WebSocket 信道已断开')); -tunnel.on('reconnecting', () => console.log('WebSocket 信道正在重连...')); -tunnel.on('reconnect', () => console.log('WebSocket 信道重连成功')); -tunnel.on('error', error => console.error('信道发生错误:', error)); - -// 监听自定义消息(服务器进行推送) -tunnel.on('speak', speak => console.log('收到 speak 消息:', speak)); - -// 打开信道 -tunnel.open(); -// 发送消息 -tunnel.emit('speak', { word: "hello", who: { nickName: "techird" }}); -// 关闭信道 -tunnel.close(); -``` - -信道服务同样需要业务服务器配合云端 SDK 支持,构造信道实例的时候需要提供业务服务器提供的信道服务地址。通过监听信道消息以及自定义消息来通过信道实现业务。 - -关于信道使用的更完整实例,建议参考客户端 Demo 中的[三木聊天室应用源码](https://github.com/tencentyun/wafer-client-demo/blob/master/pages/chat/chat.js)。 - -关于信道服务详细技术说明,请参考 [Wiki](https://github.com/tencentyun/wafer-solution/wiki/%E4%BF%A1%E9%81%93%E6%9C%8D%E5%8A%A1)。 - -## API - - -### setLoginUrl -设置会话服务登录地址。 - -#### 语法 -```js -qcloud.setLoginUrl(loginUrl); -``` - -#### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|loginUrl |string |会话服务登录地址 - -### login -登录,建立微信小程序会话。 - -#### 语法 -```js -qcloud.login(options); -``` - -#### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|options     |PlainObject   |会话服务登录地址 -|options.success | () => void | 登录成功的回调 -|options.error | (error) => void | 登录失败的回调 - - -### request -进行带会话的请求。 - -#### 语法 -```js -qcloud.request(options); -``` - -#### 参数 -|参数         |类型 |说明 -|-------------|---------------|-------------- -|options     |PlainObject   | 会话服务登录地址 -|options.login | bool         | 是否自动登录以获取会话,默认为 false -|options.url   | string       | 必填,要请求的地址 -|options.header | PlainObject | 请求头设置,不允许设置 Referer -|options.method | string     | 请求的方法,默认为 GET -|options.success | (response) => void | 登录成功的回调。