├── .gitignore ├── LICENSE ├── README.md ├── app.js ├── app.json ├── app.wxss ├── assets └── imges │ ├── course-select.png │ ├── course.png │ ├── discovery-select.png │ ├── discovery.png │ ├── dynamic-select.png │ ├── dynamic.png │ ├── me-select.png │ └── me.png ├── components ├── card │ ├── vui-card.js │ ├── vui-card.json │ ├── vui-card.wxml │ └── vui-card.wxss ├── courseList │ ├── vui-course-list.js │ ├── vui-course-list.json │ ├── vui-course-list.wxml │ └── vui-course-list.wxss ├── dialog │ ├── dialog.js │ ├── dialog.json │ ├── dialog.wxml │ └── dialog.wxss ├── icon │ ├── vui-icon.js │ ├── vui-icon.json │ ├── vui-icon.wxml │ └── vui-icon.wxss └── video │ ├── vui-video.js │ ├── vui-video.json │ ├── vui-video.wxml │ └── vui-video.wxss ├── image ├── course.png ├── details.png ├── home.png └── me.png ├── pages ├── course │ ├── course.js │ ├── course.json │ ├── course.wxml │ └── course.wxss ├── courseDetails │ ├── courseDetails.js │ ├── courseDetails.json │ ├── courseDetails.wxml │ └── courseDetails.wxss ├── dynamic │ ├── dynamic.js │ ├── dynamic.json │ ├── dynamic.wxml │ └── dynamic.wxss ├── index │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── me │ ├── me.js │ ├── me.json │ ├── me.wxml │ └── me.wxss ├── nominate │ ├── nominate.js │ ├── nominate.json │ ├── nominate.wxml │ └── nominate.wxss ├── org │ ├── org.js │ ├── org.json │ ├── org.wxml │ └── org.wxss ├── search │ ├── search.js │ ├── search.json │ ├── search.wxml │ └── search.wxss ├── setting │ ├── setting.js │ ├── setting.json │ ├── setting.wxml │ └── setting.wxss └── user │ ├── user.js │ ├── user.json │ ├── user.wxml │ └── user.wxss ├── project.config.json ├── sitemap.json ├── templates ├── tmpl.wxml └── tmpl.wxss └── utils └── util.js /.gitignore: -------------------------------------------------------------------------------- 1 | # 忽略文件 2 | .idea -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 赵云兴 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # edu-wechat 2 | 码小课--小程序 3 | 4 | - [x] 首页 5 | - [x] 课程页面 6 | - [ ] 动态 7 | - [x] 我的 8 | - [x] 用户页面 9 | - [ ] 搜索页面 10 | 11 | ## 效果图展示 12 | 13 | ### 首页 14 | 15 | ![首页](https://gitee.com/zhaoyunxing92/resource/raw/master/wechat/home.png) 16 | 17 | ### 我的 18 | 19 | ![我的](https://gitee.com/zhaoyunxing92/resource/raw/master/wechat/wechat-me.png) 20 | 21 | ### 课程列表 22 | 23 | ![课程列表](https://gitee.com/zhaoyunxing92/resource/raw/master/wechat/course.png) 24 | 25 | ### 课程详情 26 | 27 | ![课程详情](https://gitee.com/zhaoyunxing92/resource/raw/master/wechat/details.png) 28 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | 4 | onLaunch: function () { 5 | // 显示动态数字 6 | wx.setTabBarBadge({ 7 | index: 2, 8 | text: '9+' 9 | }) 10 | // // 登录 11 | // wx.login({ 12 | // success: res => { 13 | // // 发送 res.code 到后台换取 openId, sessionKey, unionId 14 | // console.log(res.code) 15 | // } 16 | // }) 17 | // // 获取用户信息 18 | // wx.getSetting({ 19 | // success: res => { 20 | // if (res.authSetting['scope.userInfo']) { 21 | // // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 22 | // wx.getUserInfo({ 23 | // success: res => { 24 | // // 可以将 res 发送给后台解码出 unionId 25 | // this.globalData.userInfo = res.userInfo 26 | // console.log(res.userInfo) 27 | // // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 28 | // // 所以此处加入 callback 以防止这种情况 29 | // if (this.userInfoReadyCallback) { 30 | // this.userInfoReadyCallback(res) 31 | // } 32 | // } 33 | // }) 34 | // } 35 | // } 36 | // }) 37 | }, 38 | globalData: { 39 | // Info: null, 40 | // 推荐课程 41 | nominateList: [ 42 | 43 | { 44 | "id": 1001, 45 | "cover": "http://mvimg2.meitudata.com/5abf7d38dd1633882.jpg", 46 | "playUrl":"http://mvvideo10.meitudata.com/5abdf80eef17c6493_H264_3.mp4", 47 | "browse": 3650, 48 | "collect": 87, 49 | "op": 7487, 50 | "share": 9879, 51 | "like": 157, 52 | "price": 0, 53 | "tyep": 2, 54 | "name": "人鱼的眼泪史莱姆教程", 55 | "summary":"人鱼的眼泪史莱姆教程,今天配音了,嗓子还是哑手还是胖不要建议😑我还是你们的小阔爱咩,炸评最多送转发@★XuFei~许菲★手作 @菲菲姐夫 @璐璐吖✨ @美拍小助手 #i like 美拍##手工##史莱姆#", 56 | "author": { 57 | "id": 1000, 58 | "name": "sunny", 59 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 60 | } 61 | }, { 62 | "id": 1002, 63 | "cover": "http://mvimg1.meitudata.com/5abded5954d057076.jpg", 64 | "playUrl": "http://mvvideo10.meitudata.com/5abded59446e96967_H264_13.mp4", 65 | "browse": 3650, 66 | "collect": 87, 67 | "op": 7487, 68 | "share": 9879, 69 | "like": 157, 70 | "price": 85.7, 71 | "tyep": 2, 72 | "name": "You Are The Reason", 73 | "summary": "晚安翻唱#我甘愿翻山越岭,穿过海洋,只为陪伴着你。歌曲:You Are The Reason - 原唱:Calum Scott)", 74 | "author": { 75 | "id": "user_id", 76 | "name": "sunny", 77 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 78 | } 79 | }, { 80 | "id": 1002, 81 | "cover": "http://mvimg1.meitudata.com/5abdf8a14048a8887.jpg", 82 | "browse": 3650, 83 | "collect": 87, 84 | "op": 7487, 85 | "share": 9879, 86 | "like": 157, 87 | "price": 85.7, 88 | "tyep": 2, 89 | "name": "【🌊辰叔美拍】好久不见🤟🏾 更一个简短的牛头...", 90 | "summary":"【🌊辰叔美拍】好久不见🤟🏾 更一个简短的牛头...", 91 | "author": { 92 | "id": 1000, 93 | "name": "sunny", 94 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 95 | } 96 | } 97 | ], 98 | //课程列表 99 | courseList: [ 100 | { 101 | "id": 1001, 102 | "cover": "http://mvimg11.meitudata.com/5abf6708db7b19559.jpg", 103 | "playUrl":"http://mvvideo11.meitudata.com/5abf6708db7ea5754.mp4", 104 | "browse": 3650, 105 | "collect": 87, 106 | "op": 7487, 107 | "share": 9879, 108 | "like": 157, 109 | "price": 0, 110 | "tyep": 2, 111 | "name": "起喝优乐美的爱情", 112 | "summary": "一起喝优乐美的爱情,你要不要?#飞碟神曲#《有奶茶,中国人就不会害怕世界末日》片尾曲,改编自#周杰伦#《我不配》#音乐#", 113 | "author": { 114 | "id": "user_id", 115 | "name": "sunny", 116 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 117 | } 118 | }, { 119 | "id": 1002, 120 | "cover": "http://mvimg1.meitudata.com/5abded5954d057076.jpg", 121 | "playUrl":"http://mvvideo10.meitudata.com/5abded59446e96967_H264_13.mp4", 122 | "browse": 3650, 123 | "collect": 87, 124 | "op": 7487, 125 | "share": 9879, 126 | "like": 157, 127 | "price": 85.7, 128 | "tyep": 2, 129 | "name": "You Are The Reason", 130 | "summary": "晚安翻唱#我甘愿翻山越岭,穿过海洋,只为陪伴着你。歌曲:You Are The Reason - 原唱:Calum Scott)", 131 | "author": { 132 | "id": "user_id", 133 | "name": "sunny", 134 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 135 | } 136 | }, { 137 | "id": 1003, 138 | "cover": "http://mvimg11.meitudata.com/5a9a9b8121b441409.jpg", 139 | "playUrl":"http://mvvideo11.meitudata.com/5a9a9b80b7f603108_H264_13.mp4", 140 | "browse": 3650, 141 | "collect": 87, 142 | "op": 7487, 143 | "share": 9879, 144 | "like": 157, 145 | "price": 85.7, 146 | "tyep": 2, 147 | "name": "无知并身无", 148 | "summary": "【科特KurtSchneider美拍】#晚安翻唱#我们年轻、无知并身无...", 149 | "author": { 150 | "id": "user_id", 151 | "name": "sunny", 152 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 153 | } 154 | }, { 155 | "id": 1004, 156 | "cover": "http://mvimg10.meitudata.com/5abe26fb65b474150.jpg", 157 | "playUrl":"http://mvvideo10.meitudata.com/5abe27ac3ad862822.mp4", 158 | "browse": 3650, 159 | "collect": 87, 160 | "op": 7487, 161 | "share": 9879, 162 | "like": 157, 163 | "price": 85.7, 164 | "tyep": 2, 165 | "name": "MAMAMOO", 166 | "summary": "【韩流音悦Tai美拍】#韩流新歌速递#마마무(MAMAMOO) ...", 167 | "author": { 168 | "id": "user_id", 169 | "name": "sunny", 170 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 171 | } 172 | }, { 173 | "id": 1004, 174 | "cover": "http://mvimg10.meitudata.com/5abf6a2eecd4b9159.jpg", 175 | "playUrl":"http://mvvideo11.meitudata.com/5abf409ed68963024_H264_3.mp4", 176 | "browse": 3650, 177 | "collect": 87, 178 | "op": 7487, 179 | "share": 9879, 180 | "like": 157, 181 | "price": 85.7, 182 | "tyep": 2, 183 | "name": "提了个琴美拍", 184 | "summary": "【提了个琴美拍】#音乐#HAVANA (Violin Cover by ...", 185 | "author": { 186 | "id": "user_id", 187 | "name": "sunny", 188 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 189 | } 190 | }, { 191 | "id": 1004, 192 | "cover": "http://mvimg11.meitudata.com/5ac0edf1ddc0b9473.jpg", 193 | "playUrl":"http://mvvideo11.meitudata.com/5ac0ed7746b5b8217_H264_3.mp4", 194 | "browse": 3650, 195 | "collect": 87, 196 | "op": 7487, 197 | "share": 9879, 198 | "like": 157, 199 | "price": 85.7, 200 | "tyep": 2, 201 | "summary": "Tinashe", 202 | "name": "Tinashe - Me So Bad (Official Video) ft. Ty Dolla $ign, French Montana ", 203 | "author": { 204 | "id": "user_id", 205 | "name": "sunny", 206 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 207 | } 208 | }, { 209 | "id": 1002, 210 | "cover": "http://mvimg11.meitudata.com/5a589c7fbe9f17604.jpg", 211 | "playUrl": "http://mvvideo11.meitudata.com/5a589c54780d5578_H264_3.mp4", 212 | "browse": 3650, 213 | "collect": 87, 214 | "op": 7487, 215 | "share": 9879, 216 | "like": 157, 217 | "price": 85.7, 218 | "tyep": 2, 219 | "name": "You Are The Reason", 220 | "summary": "晚安翻唱#我甘愿翻山越岭,穿过海洋,只为陪伴着你。歌曲:You Are The Reason - 原唱:Calum Scott)", 221 | "author": { 222 | "id": "user_id", 223 | "name": "sunny", 224 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 225 | } 226 | } 227 | ], 228 | //首页轮播图数据 229 | swiperList: [{ 230 | "id": 1002, 231 | "cover": "http://mvimg1.meitudata.com/5abded5954d057076.jpg", 232 | "playUrl": "http://mvvideo10.meitudata.com/5abded59446e96967_H264_13.mp4", 233 | "browse": 3650, 234 | "collect": 87, 235 | "op": 7487, 236 | "share": 9879, 237 | "like": 157, 238 | "price": 85.7, 239 | "tyep": 2, 240 | "name": "You Are The Reason", 241 | "summary": "晚安翻唱#我甘愿翻山越岭,穿过海洋,只为陪伴着你。歌曲:You Are The Reason - 原唱:Calum Scott)", 242 | "author": { 243 | "id": "user_id", 244 | "name": "sunny", 245 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png" 246 | } 247 | }, 248 | { 249 | "id": 10001, 250 | "cover": "http://mvimg10.meitudata.com/5abdef97d617e8241.jpg", 251 | "playUrl": "http://mvvideo10.meitudata.com/5abdef97ca4d91880_H264_13.mp4", 252 | "name": "Alyson Stoner", 253 | "summary": "Evolution of K-POP - 翻唱制作:Alyson Stoner ", 254 | "like": 1580, 255 | "collect": 587, 256 | "op": 87, 257 | "share": 79, 258 | "author": { 259 | "id": 1000, 260 | "name": "sunny", 261 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 262 | } 263 | }, 264 | { 265 | "id": 10002, 266 | "cover": "http://mvimg11.meitudata.com/5a8818e47fe779475.jpg", 267 | "playUrl": "http://mvvideo10.meitudata.com/5a8818309202a409_H264_13.mp4", 268 | "name": "Medicine", 269 | "summary": "我知道没有你我也很坚强,你的离开不会让我伤心太久,我已经不在乎了,你不能再左右我的心了。(歌曲:Medicine - 原唱:Kelly Clarkson - 翻唱制作:KHS)", 270 | "like": 10, 271 | "collect": 87, 272 | "op": 7487, 273 | "share": 9879, 274 | "author": { 275 | "id": 1000, 276 | "name": "sunny", 277 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 278 | } 279 | }, 280 | 281 | { 282 | "cover": "http://mvimg10.meitudata.com/5aaa6470d3b959174.jpg", 283 | "playUrl": "http://mvvideo11.meitudata.com/5aaa6470c82e81959_H264_13.mp4", 284 | "id": 10005, 285 | "name": "The Middle", 286 | "summary": "亲爱的,你为何不愿意做出一点让步,做出一点牺牲,我快要被逼疯了", 287 | "like": 8810, 288 | "collect": 87, 289 | "op": 7487, 290 | "share": 9879, 291 | "author": { 292 | "id": 1000, 293 | "name": "sunny", 294 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 295 | } 296 | }, { 297 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 298 | "playUrl": "http://mvvideo10.meitudata.com/5a4f7d70ef4f42024_H264_3.mp4", 299 | "id": 10004, 300 | "name": "Madilyn Bailey", 301 | "summary": "来自英国的两位抒情派歌手,你们喜欢他俩组合吗?(歌曲:ADELE vs SAM SMITH Mashup - 翻唱制作:Madilyn Bailey )", 302 | "like": 8810, 303 | "collect": 87, 304 | "op": 7487, 305 | "share": 9879, 306 | "author": { 307 | "id": 1000, 308 | "name": "sunny", 309 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 310 | } 311 | } 312 | ], 313 | // 课程发言数据 314 | courseOpinions: [ 315 | { 316 | "id": "1", 317 | "name": "sunny", 318 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 319 | "content": "视频不错", 320 | "likes": 8, 321 | "time": "2018.02.25" 322 | }, 323 | { 324 | "id": "1", 325 | "name": "abpj2gdu", 326 | "cover": "https://gitee.com/uploads/56/1167256_sunny9.png", 327 | "content": "测试数据", 328 | "likes": 4, 329 | "time": "2018-02-06" 330 | }, 331 | { 332 | "id": "1", 333 | "name": "sunny", 334 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 335 | "content": "曾经的我有很多兄弟姐妹,他们流入世界各地,为人类造福,可是快乐总是那么的短暂", 336 | "likes": 8, 337 | "time": "2018.02.25" 338 | }, 339 | { 340 | "id": "1", 341 | "name": "sunny", 342 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 343 | "content": "曾经的我有很多兄弟姐妹,他们流入世界各地,为人类造福,可是快乐总是那么的短暂", 344 | "likes": 8, 345 | "time": "2018.02.25" 346 | }, 347 | { 348 | "id": "1", 349 | "name": "sunny", 350 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 351 | "content": "曾经的我有很多兄弟姐妹,他们流入世界各地,为人类造福,可是快乐总是那么的短暂", 352 | "likes": 8, 353 | "time": "2018.02.25" 354 | }, 355 | { 356 | "id": "1", 357 | "name": "sunny", 358 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 359 | "content": "我的兄弟姐妹流着泪默默祈祷,却无济于事。人们把自然水随便的用,大人洗完菜后一大盆还很干净的水就泼在地上,小孩在水里踩,把水放在杯子里,加点肥皂水吹泡泡,吹不了就倒掉重做,一直做好才行,浪费了多少水!", 360 | "likes": 8, 361 | "time": "2018.02.25" 362 | }, 363 | { 364 | "id": "1", 365 | "name": "sunny", 366 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 367 | "content": "我的兄弟姐妹流着泪默默祈祷,却无济于事。人们把自然水随便的用,大人洗完菜后一大盆还很干净的水就泼在地上,小孩在水里踩,把水放在杯子里,加点肥皂水吹泡泡,吹不了就倒掉重做,一直做好才行,浪费了多少水!", 368 | "likes": 8, 369 | "time": "2018.02.25" 370 | }, 371 | { 372 | "id": "1", 373 | "name": "sunny", 374 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 375 | "content": "水,是生命之源;水,是造福人类的;水,为人类无私奉献,你们却眼睁睁地看着水慢慢消失", 376 | "likes": 8, 377 | "time": "2018.02.25" 378 | }, 379 | { 380 | "id": "1", 381 | "name": "sunny", 382 | "cover": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg", 383 | "content": "水到最后没有了,你们只能哭泣,我是最后一滴水,你们哭泣的泪水,请保护水源,不浪费。否则,连我这最后一滴水,也将消失在那茫茫的宇宙中。", 384 | "likes": 8, 385 | "time": "2018.02.25" 386 | } 387 | ], 388 | //课程课件 389 | courseFiles: [ 390 | { 391 | "name": "打开调试模式才能打开该文件.docx", 392 | "url": "http://mvimg11.meitudata.com/5a4f81c39fa589605.jpg" 393 | } 394 | ] 395 | } 396 | }) -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | "pages/index/index", 4 | "pages/courseDetails/courseDetails", 5 | "pages/me/me", 6 | "pages/dynamic/dynamic", 7 | "pages/course/course", 8 | "pages/org/org", 9 | "pages/search/search", 10 | "pages/nominate/nominate", 11 | "pages/user/user", 12 | "pages/setting/setting" 13 | ], 14 | "window": { 15 | "navigationBarBackgroundColor": "#fff", 16 | "navigationBarTextStyle": "black", 17 | "backgroundColor": "#eeeeee", 18 | "backgroundTextStyle": "dark", 19 | "enablePullDownRefresh": false 20 | }, 21 | "tabBar": { 22 | "position": "bottom", 23 | "selectedColor": "#b4e131", 24 | "color": "#707070", 25 | "borderStyle": "white", 26 | "list": [ 27 | { 28 | "pagePath": "pages/index/index", 29 | "text": "发现", 30 | "iconPath": "assets/imges/discovery.png", 31 | "selectedIconPath": "assets/imges/discovery-select.png" 32 | }, 33 | { 34 | "pagePath": "pages/course/course", 35 | "text": "课程", 36 | "iconPath": "assets/imges/course.png", 37 | "selectedIconPath": "assets/imges/course-select.png" 38 | }, 39 | { 40 | "pagePath": "pages/dynamic/dynamic", 41 | "text": "动态", 42 | "iconPath": "assets/imges/dynamic.png", 43 | "selectedIconPath": "assets/imges/dynamic-select.png" 44 | }, 45 | { 46 | "pagePath": "pages/me/me", 47 | "text": "我的", 48 | "iconPath": "assets/imges/me.png", 49 | "selectedIconPath": "assets/imges/me-select.png" 50 | } 51 | ] 52 | }, 53 | "sitemapLocation": "sitemap.json" 54 | } -------------------------------------------------------------------------------- /app.wxss: -------------------------------------------------------------------------------- 1 | /*page设置默认背景 */ 2 | page { 3 | background-color: #f5f5f5; 4 | } 5 | /*文本内容容器*/ 6 | .container{ 7 | margin-bottom: 20rpx; 8 | background-color: #fff 9 | } 10 | /*课程搜索 */ 11 | .course-search { 12 | height:70rpx; 13 | line-height:80rpx; 14 | border:solid 1rpx #eee; 15 | border-radius:36rpx; 16 | background-color:#f5f5f5; 17 | } 18 | /* 公共卡片css */ 19 | .vui-card-title{ 20 | color: #333; 21 | } 22 | /*更多 */ 23 | .vui-card-extra{ 24 | padding: 8rpx 0; 25 | line-height: 25rpx; 26 | height: 25rpx; 27 | float: right; 28 | font-size: 30rpx; 29 | color: #707070; 30 | } 31 | /*视频播放导航菜单 */ 32 | 33 | .vui-menu { 34 | width: 100%; 35 | height: 90rpx; 36 | line-height: 90rpx; 37 | display: inline-block; 38 | background-color: #fff; 39 | box-shadow: 0 2rpx 10rpx 0 #d7d7d7; 40 | text-align: center; 41 | font-size: 32rpx; 42 | } 43 | 44 | .vui-menu-avtive { 45 | color: #a3d900 !important; 46 | } 47 | 48 | .vui-menu-item-3, .vui-menu-item-4, .vui-menu-item-5 { 49 | float: left; 50 | box-sizing: border-box; 51 | color: #868686; 52 | /* border-right: solid 1rpx #f8f6f6; */ 53 | } 54 | 55 | .vui-menu-item-3 { 56 | width: 33.3%; 57 | } 58 | 59 | .vui-menu-item-4 { 60 | width: 25%; 61 | } 62 | 63 | .vui-menu-item-5 { 64 | width: 20%; 65 | } 66 | 67 | /* .vui-menu-item-3:last-child,.vui-menu-item-4:last-child,.vui-menu-item-5:last-child { 68 | border-right: none; 69 | } */ 70 | 71 | 72 | /*用户模块 */ 73 | .vui-user { 74 | display: inline-block; 75 | width: 100%; 76 | height: 100rpx; 77 | } 78 | 79 | /*用户头像 */ 80 | .vui-user-cover { 81 | width: 90rpx; 82 | height: 90rpx; 83 | border-radius: 45rpx; 84 | float: left; 85 | } 86 | 87 | /*用户名称 */ 88 | .vui-user-name{ 89 | color: #3c8dff; 90 | display: inline-block; 91 | margin: -25rpx 15rpx; 92 | } 93 | /*发言列表、动态类别 */ 94 | /*发言模板 */ 95 | 96 | .course-opinion { 97 | width: 96%; 98 | margin-bottom: 70rpx; 99 | } 100 | 101 | /*课程发言用户 */ 102 | 103 | .course-opinion-user { 104 | height: 90rpx; 105 | line-height: 90rpx; 106 | } 107 | 108 | /*发言用户头像 */ 109 | 110 | .course-opinion-user-cover { 111 | height: 80rpx; 112 | width: 80rpx; 113 | border-radius: 40rpx; 114 | margin-top: 12rpx; 115 | float: left; 116 | } 117 | 118 | /*发言用户作者 */ 119 | 120 | .course-opinion-user-name { 121 | color: #3c8dff; 122 | display: inline-block; 123 | margin: 0rpx 18rpx; 124 | } 125 | 126 | /*发言时间 */ 127 | 128 | .course-opinion-user-time { 129 | color: #999; 130 | font-size: 28rpx; 131 | } 132 | 133 | /*发言内容 */ 134 | 135 | .course-opinion-content { 136 | font-size: 28rpx; 137 | color: #707070; 138 | margin-top: 15rpx; 139 | } 140 | 141 | /* 142 | 收藏的状态:#f77000 143 | 激活状态:#b4e131 144 | */ -------------------------------------------------------------------------------- /assets/imges/course-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/course-select.png -------------------------------------------------------------------------------- /assets/imges/course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/course.png -------------------------------------------------------------------------------- /assets/imges/discovery-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/discovery-select.png -------------------------------------------------------------------------------- /assets/imges/discovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/discovery.png -------------------------------------------------------------------------------- /assets/imges/dynamic-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/dynamic-select.png -------------------------------------------------------------------------------- /assets/imges/dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/dynamic.png -------------------------------------------------------------------------------- /assets/imges/me-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/me-select.png -------------------------------------------------------------------------------- /assets/imges/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhaoyunxing92/edu/7f60ee58bc5aac5b59376db507666ca5f42f28e5/assets/imges/me.png -------------------------------------------------------------------------------- /components/card/vui-card.js: -------------------------------------------------------------------------------- 1 | Component({ 2 | options: { 3 | multipleSlots: true // 在组件定义时的选项中启用多slot支持 4 | }, 5 | }) 6 | -------------------------------------------------------------------------------- /components/card/vui-card.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } -------------------------------------------------------------------------------- /components/card/vui-card.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /components/card/vui-card.wxss: -------------------------------------------------------------------------------- 1 | .vui-card { 2 | /* margin-top: 30rpx; */ 3 | background-color: #fff; 4 | padding: 15rpx; 5 | } -------------------------------------------------------------------------------- /components/courseList/vui-course-list.js: -------------------------------------------------------------------------------- 1 | // components/courseList/vui-course-list.js 2 | Component({ 3 | /** 4 | * 组件的属性列表 5 | */ 6 | properties: { 7 | // 课程 8 | courses: { 9 | type: Array, 10 | value: [] 11 | }, 12 | //点击用户头像是否跳转 13 | noSkip:{ 14 | type:Boolean, 15 | value: false 16 | } 17 | }, 18 | /** 19 | * 组件的方法列表 20 | */ 21 | methods: { 22 | //跳转 23 | _navigateTo(env){ 24 | let path = env.currentTarget.dataset.path; 25 | let item = env.currentTarget.dataset.item; 26 | let skip = env.currentTarget.dataset.skip; 27 | if (skip){ 28 | wx.navigateTo({ 29 | url: path + '?item=' + JSON.stringify(item) 30 | }) 31 | } 32 | 33 | } 34 | } 35 | }) 36 | -------------------------------------------------------------------------------- /components/courseList/vui-course-list.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "i": "../icon/vui-icon" 5 | } 6 | } -------------------------------------------------------------------------------- /components/courseList/vui-course-list.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{item.name}} 7 | 8 | 9 | 10 | 11 | 12 | {{item.price==0?'免费':item.price}} 13 | 14 | 15 | 16 | 17 | {{item.browse}} 18 | 19 | 20 | 21 | 22 | {{item.collect}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{item.author.name}} 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /components/courseList/vui-course-list.wxss: -------------------------------------------------------------------------------- 1 | .course-list { 2 | padding: 15rpx; 3 | background-color: #fff; 4 | } 5 | .course-item { 6 | display: block; 7 | border-bottom: solid 1rpx #f5f5f5; 8 | height: 240rpx; 9 | width: 100%; 10 | } 11 | 12 | .course-item:last-child { 13 | border: none; 14 | } 15 | 16 | .course-item-cover, .course-item-info { 17 | height: 200rpx; 18 | margin: 20rpx 0; 19 | } 20 | 21 | /*课程封面 */ 22 | 23 | .course-item-cover { 24 | float: left; 25 | width: 45%; 26 | border-radius: 10rpx; 27 | } 28 | 29 | /*课程信息 */ 30 | 31 | .course-item-info { 32 | width: 52%; 33 | float: right; 34 | height: 200rpx; 35 | } 36 | 37 | /*课程标题 */ 38 | 39 | .course-title { 40 | float: left; 41 | font-size: 28rpx; 42 | width: 100%; 43 | overflow: hidden; 44 | text-overflow: ellipsis; 45 | white-space: nowrap; 46 | } 47 | 48 | .course-stat { 49 | font-size: 25rpx; 50 | color: #ccc; 51 | width: 100%; 52 | display: inline-block; 53 | line-height:90rpx; 54 | } 55 | 56 | .course-stat-item { 57 | display: inline-block; 58 | width: 33%; 59 | } 60 | 61 | /*组织 */ 62 | .course-author, .course-stat { 63 | line-height: 90rpx; 64 | height: 80rpx; 65 | } 66 | 67 | /*课程来源名称 */ 68 | 69 | .course-author-name { 70 | color: #707070; 71 | font-size: 30rpx; 72 | margin-left: 10rpx; 73 | display: inline-block; 74 | } 75 | 76 | /*课程来源logo */ 77 | 78 | .course-author-cover { 79 | height: 60rpx; 80 | width: 60rpx; 81 | border-radius: 30rpx; 82 | float: left; 83 | margin-top: 15rpx; 84 | } 85 | 86 | .has-price { 87 | color: red; 88 | } 89 | -------------------------------------------------------------------------------- /components/dialog/dialog.js: -------------------------------------------------------------------------------- 1 | Component({ 2 | options: { 3 | multipleSlots: true // 在组件定义时的选项中启用多slot支持 4 | }, 5 | /** 6 | * 组件的属性列表 7 | * 用于组件自定义设置 8 | */ 9 | properties: { 10 | // 弹窗标题 11 | title: { // 属性名 12 | type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型) 13 | value: '标题' // 属性初始值(可选),如果未指定则会根据类型选择一个 14 | }, 15 | // 弹窗内容 16 | content: { 17 | type: String, 18 | value: '弹窗内容' 19 | }, 20 | // 弹窗取消按钮文字 21 | cancelText: { 22 | type: String, 23 | value: '取消' 24 | }, 25 | // 弹窗确认按钮文字 26 | confirmText: { 27 | type: String, 28 | value: '确定' 29 | } 30 | }, 31 | 32 | /** 33 | * 私有数据,组件的初始数据 34 | * 可用于模版渲染 35 | */ 36 | data: { 37 | // 弹窗显示控制 38 | isShow: false 39 | }, 40 | 41 | /** 42 | * 组件的方法列表 43 | * 更新属性和数据的方法与更新页面数据的方法类似 44 | */ 45 | methods: { 46 | /* 47 | * 公有方法 48 | */ 49 | 50 | //隐藏弹框 51 | hideDialog() { 52 | this.setData({ 53 | isShow: !this.data.isShow 54 | }) 55 | }, 56 | //展示弹框 57 | showDialog() { 58 | this.setData({ 59 | isShow: !this.data.isShow 60 | }) 61 | }, 62 | /* 63 | * 内部私有方法建议以下划线开头 64 | * triggerEvent 用于触发事件 65 | */ 66 | _cancelEvent() { 67 | //触发取消回调 68 | this.triggerEvent("cancelEvent") 69 | }, 70 | _confirmEvent() { 71 | //触发成功回调 72 | this.triggerEvent("confirmEvent"); 73 | } 74 | } 75 | }) -------------------------------------------------------------------------------- /components/dialog/dialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /components/dialog/dialog.wxml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /components/dialog/dialog.wxss: -------------------------------------------------------------------------------- 1 | /* components/Dialog/dialog.wxss */ 2 | .wx-mask{ 3 | position: fixed; 4 | z-index: 1000; 5 | top: 0; 6 | right: 0; 7 | left: 0; 8 | bottom: 0; 9 | background: rgba(0, 0, 0, 0.3); 10 | } 11 | .wx-dialog{ 12 | position: fixed; 13 | z-index: 5000; 14 | width: 80%; 15 | max-width: 600rpx; 16 | top: 50%; 17 | left: 50%; 18 | -webkit-transform: translate(-50%, -50%); 19 | transform: translate(-50%, -50%); 20 | background-color: #FFFFFF; 21 | text-align: center; 22 | border-radius: 3px; 23 | overflow: hidden; 24 | } 25 | .wx-dialog-title{ 26 | font-size: 18px; 27 | padding: 15px 15px 5px; 28 | } 29 | .wx-dialog-content{ 30 | padding: 15px 15px 5px; 31 | min-height: 40px; 32 | font-size: 16px; 33 | line-height: 1.3; 34 | word-wrap: break-word; 35 | word-break: break-all; 36 | color: #999999; 37 | } 38 | .wx-dialog-footer{ 39 | display: flex; 40 | align-items: center; 41 | position: relative; 42 | line-height: 45px; 43 | font-size: 17px; 44 | } 45 | .wx-dialog-footer::before{ 46 | content: ''; 47 | position: absolute; 48 | left: 0; 49 | top: 0; 50 | right: 0; 51 | height: 1px; 52 | border-top: 1px solid #D5D5D6; 53 | color: #D5D5D6; 54 | -webkit-transform-origin: 0 0; 55 | transform-origin: 0 0; 56 | -webkit-transform: scaleY(0.5); 57 | transform: scaleY(0.5); 58 | } 59 | .wx-dialog-btn{ 60 | display: block; 61 | -webkit-flex: 1; 62 | flex: 1; 63 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 64 | position: relative; 65 | } 66 | .wx-dialog-footer .wx-dialog-btn:nth-of-type(1){ 67 | color: #353535; 68 | } 69 | .wx-dialog-footer .wx-dialog-btn:nth-of-type(2){ 70 | color: #3CC51F; 71 | } 72 | .wx-dialog-footer .wx-dialog-btn:nth-of-type(2):after{ 73 | content: " "; 74 | position: absolute; 75 | left: 0; 76 | top: 0; 77 | width: 1px; 78 | bottom: 0; 79 | border-left: 1px solid #D5D5D6; 80 | color: #D5D5D6; 81 | -webkit-transform-origin: 0 0; 82 | transform-origin: 0 0; 83 | -webkit-transform: scaleX(0.5); 84 | transform: scaleX(0.5); 85 | } 86 | -------------------------------------------------------------------------------- /components/icon/vui-icon.js: -------------------------------------------------------------------------------- 1 | Component({ 2 | properties: { 3 | // icon名称 4 | name: { 5 | type: String, 6 | value: "" 7 | }, 8 | color: { 9 | type: String, 10 | value: '', 11 | }, 12 | size: { 13 | type: String, 14 | value: '30', 15 | } 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /components/icon/vui-icon.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } -------------------------------------------------------------------------------- /components/icon/vui-icon.wxml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /components/icon/vui-icon.wxss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'vui-icon'; 3 | src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff'); 4 | font-weight: normal; 5 | font-style: normal; 6 | } 7 | .vui-icon{ 8 | font-family: 'vui-icon' !important; 9 | font-style: normal; 10 | font-weight: normal; 11 | font-variant: normal; 12 | text-transform: none; 13 | margin:0 5rpx; 14 | line-height: 1; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | .icon-setting:before { 20 | content: "\e90d"; 21 | } 22 | .icon-thumb:before { 23 | content: "\e903"; 24 | } 25 | .icon-following:before { 26 | content: "\e904"; 27 | } 28 | .icon-browse:before { 29 | content: "\e906"; 30 | } 31 | .icon-book:before { 32 | content: "\e909"; 33 | } 34 | .icon-fans:before { 35 | content: "\e90c"; 36 | } 37 | .icon-share:before { 38 | content: "\e90a"; 39 | } 40 | .icon-send:before { 41 | content: "\e90b"; 42 | } 43 | .icon-collect:before { 44 | content: "\e900"; 45 | } 46 | .icon-money:before { 47 | content: "\e901"; 48 | } 49 | .icon-hot:before { 50 | content: "\e902"; 51 | } 52 | .icon-info:before { 53 | content: "\e905"; 54 | } 55 | .icon-more:before { 56 | content: "\e907"; 57 | } 58 | .icon-recommend:before { 59 | content: "\e908"; 60 | } 61 | -------------------------------------------------------------------------------- /components/video/vui-video.js: -------------------------------------------------------------------------------- 1 | Component({ 2 | options: { 3 | multipleSlots: true // 在组件定义时的选项中启用多slot支持 4 | }, 5 | /** 6 | * 组件的属性列表 7 | * 用于组件自定义设置 8 | */ 9 | properties: { 10 | initialTime:{// 开始时间 11 | type: String, 12 | value: '0' 13 | }, 14 | url:{//播放地址 15 | type: String 16 | }, 17 | danmuList: {//弹幕列表 18 | type: Array, 19 | value: [] 20 | }, 21 | // 视频封面 22 | cover: { 23 | type: String, 24 | value: '' 25 | }, 26 | // 弹窗确认按钮文字 27 | confirmText: { 28 | type: String, 29 | value: '确定' 30 | } 31 | }, 32 | 33 | /** 34 | * 私有数据,组件的初始数据 35 | * 可用于模版渲染 36 | */ 37 | data: { 38 | // 弹窗显示控制 39 | isShow: false 40 | }, 41 | 42 | /** 43 | * 组件的方法列表 44 | * 更新属性和数据的方法与更新页面数据的方法类似 45 | */ 46 | methods: { 47 | /* 48 | * 公有方法 49 | */ 50 | 51 | //隐藏弹框 52 | hideDialog() { 53 | this.setData({ 54 | isShow: !this.data.isShow 55 | }) 56 | }, 57 | //展示弹框 58 | showDialog() { 59 | this.setData({ 60 | isShow: !this.data.isShow 61 | }) 62 | }, 63 | /* 64 | * 内部私有方法建议以下划线开头 65 | * triggerEvent 用于触发事件 66 | */ 67 | _cancelEvent() { 68 | //触发取消回调 69 | this.triggerEvent("cancelEvent") 70 | }, 71 | _confirmEvent() { 72 | //触发成功回调 73 | this.triggerEvent("confirmEvent"); 74 | } 75 | } 76 | }) -------------------------------------------------------------------------------- /components/video/vui-video.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /components/video/vui-video.wxml: -------------------------------------------------------------------------------- 1 | 2 |