├── README ├── static ├── .gitkeep ├── images │ ├── jdfw.gif │ └── favicon.ico ├── css │ └── eric-meyer-reset.min.css └── group.json ├── .eslintignore ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── .gitignore ├── src ├── assets │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── images │ │ ├── main │ │ │ ├── time1.jpg │ │ │ └── detail1.jpg │ │ ├── banner │ │ │ ├── banner1.jpg │ │ │ ├── banner2.jpg │ │ │ └── banner3.jpg │ │ ├── common │ │ │ ├── ic_vote.png │ │ │ ├── ic_event_call.png │ │ │ ├── loading_green.gif │ │ │ ├── ic_action_share.png │ │ │ ├── ic_event_message.png │ │ │ ├── ic_tag_folder_up.png │ │ │ ├── ic_vendor_others.png │ │ │ ├── ic_arrow_gray_down.png │ │ │ ├── ic_tag_folder_down.png │ │ │ ├── notification_more.png │ │ │ ├── rating_star_empty.png │ │ │ ├── ic_action_share_green.png │ │ │ ├── ic_search_book_small.png │ │ │ ├── ic_subject_event_time.png │ │ │ ├── rating_star_xsmall_on.png │ │ │ ├── ic_more_action_overflow.png │ │ │ ├── rating_star_xsmall_half.png │ │ │ ├── rating_star_xsmall_off.png │ │ │ ├── ic_close_status_recommend.png │ │ │ ├── ic_event_nearby_location.png │ │ │ ├── ic_subject_event_ticket_buy.png │ │ │ └── ic_event_action_related_drama.png │ │ ├── mine │ │ │ ├── ic_my_note.png │ │ │ ├── ic_my_album.png │ │ │ ├── ic_my_books.png │ │ │ ├── ic_my_doulist.png │ │ │ ├── ic_my_events.png │ │ │ ├── ic_my_likes.png │ │ │ ├── ic_my_music.png │ │ │ ├── ic_my_orders.png │ │ │ ├── ic_my_status.png │ │ │ ├── ic_my_wallet.png │ │ │ ├── avatar_male_100.png │ │ │ ├── live_player_bg.jpg │ │ │ ├── ic_my_movies_tvs.png │ │ │ ├── ic_mine_notification.png │ │ │ └── ic_latest_group_topics.png │ │ ├── group │ │ │ ├── ic_group_banner.png │ │ │ ├── ic_group_comment_1_50.png │ │ │ ├── ic_group_search_small.png │ │ │ ├── ic_rec_group_banner_6.png │ │ │ ├── ic_group_check_anonymous.png │ │ │ └── ic_group_checked_anonymous.png │ │ ├── footer │ │ │ ├── ic_tab_home_active.png │ │ │ ├── ic_tab_home_normal.png │ │ │ ├── ic_tab_group_active.png │ │ │ ├── ic_tab_group_normal.png │ │ │ ├── ic_tab_profile_active.png │ │ │ ├── ic_tab_profile_normal.png │ │ │ ├── ic_tab_status_active.png │ │ │ ├── ic_tab_status_normal.png │ │ │ ├── ic_tab_subject_active.png │ │ │ └── ic_tab_subject_normal.png │ │ └── broadcast │ │ │ └── ic_status_anonymous_header.png │ └── css │ │ ├── common.styl │ │ └── common.css ├── pages │ ├── mine │ │ ├── images │ │ │ └── time1.jpg │ │ └── mine.vue │ ├── video │ │ ├── movie │ │ │ ├── images │ │ │ │ ├── star.png │ │ │ │ ├── movie.jpg │ │ │ │ └── star1.png │ │ │ ├── movieToplist │ │ │ │ └── movieToplist.vue │ │ │ ├── movieSearch │ │ │ │ └── movieSearch.vue │ │ │ ├── movieMore │ │ │ │ └── movieMore.vue │ │ │ └── movieDetail │ │ │ │ └── movieDetail.vue │ │ ├── tv │ │ │ ├── tvMore │ │ │ │ └── tvMore.vue │ │ │ └── tv.vue │ │ ├── city │ │ │ ├── cityMore │ │ │ │ └── cityMore.vue │ │ │ ├── cityDetail │ │ │ │ └── cityDetail.vue │ │ │ └── city.vue │ │ ├── music │ │ │ ├── musicMore │ │ │ │ └── musicMore.vue │ │ │ ├── musicDetail │ │ │ │ └── musicDetail.vue │ │ │ └── music.vue │ │ ├── video.vue │ │ ├── book │ │ │ ├── fictionMore │ │ │ │ └── fictionMore.vue │ │ │ ├── newBookMore │ │ │ │ └── newBookMore.vue │ │ │ ├── bookDetail │ │ │ │ └── bookDetail.vue │ │ │ └── book.vue │ │ └── interestedMore │ │ │ └── interestedMore.vue │ ├── register │ │ └── register.vue │ ├── login │ │ └── login.vue │ ├── main.vue │ ├── group │ │ ├── group.vue │ │ └── groupDetail │ │ │ └── groupDetail.vue │ └── broadcast │ │ ├── broadcastDetail │ │ └── broadcastDetail.vue │ │ └── broadcast.vue ├── vuex │ ├── modules │ │ ├── home.js │ │ ├── main.js │ │ └── video.js │ ├── store.js │ └── types.js ├── App.vue ├── components │ ├── loading.vue │ ├── group.vue │ ├── star.vue │ ├── cityMoreItem.vue │ ├── musicMoreItem.vue │ ├── tvMoreItem.vue │ ├── groupItem.vue │ ├── rating.vue │ ├── bookMoreItem.vue │ ├── banner.vue │ ├── header.vue │ ├── bookFiction.vue │ ├── movieMoreItem.vue │ ├── interestedMoreItem.vue │ └── scroller.vue ├── main.js ├── router │ └── index.js └── fetch │ └── api.js ├── .editorconfig ├── .idea ├── misc.xml ├── vcs.xml ├── inspectionProfiles │ └── Project_Default.xml ├── modules.xml ├── douban.iml └── watcherTasks.xml ├── .postcssrc.js ├── .babelrc ├── .eslintrc.js ├── package.json ├── index.html └── README.md /README: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /static/images/jdfw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/static/images/jdfw.gif -------------------------------------------------------------------------------- /static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/static/images/favicon.ico -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | -------------------------------------------------------------------------------- /src/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/assets/images/main/time1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/main/time1.jpg -------------------------------------------------------------------------------- /src/pages/mine/images/time1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/pages/mine/images/time1.jpg -------------------------------------------------------------------------------- /src/assets/images/main/detail1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/main/detail1.jpg -------------------------------------------------------------------------------- /src/assets/images/banner/banner1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/banner/banner1.jpg -------------------------------------------------------------------------------- /src/assets/images/banner/banner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/banner/banner2.jpg -------------------------------------------------------------------------------- /src/assets/images/banner/banner3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/banner/banner3.jpg -------------------------------------------------------------------------------- /src/assets/images/common/ic_vote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_vote.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_note.png -------------------------------------------------------------------------------- /src/pages/video/movie/images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/pages/video/movie/images/star.png -------------------------------------------------------------------------------- /src/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_album.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_books.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_doulist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_doulist.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_events.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_likes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_likes.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_music.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_orders.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_status.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_wallet.png -------------------------------------------------------------------------------- /src/pages/video/movie/images/movie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/pages/video/movie/images/movie.jpg -------------------------------------------------------------------------------- /src/pages/video/movie/images/star1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/pages/video/movie/images/star1.png -------------------------------------------------------------------------------- /src/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/images/common/ic_event_call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_event_call.png -------------------------------------------------------------------------------- /src/assets/images/common/loading_green.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/loading_green.gif -------------------------------------------------------------------------------- /src/assets/images/mine/avatar_male_100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/avatar_male_100.png -------------------------------------------------------------------------------- /src/assets/images/mine/live_player_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/live_player_bg.jpg -------------------------------------------------------------------------------- /src/assets/images/common/ic_action_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_action_share.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_event_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_event_message.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_tag_folder_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_tag_folder_up.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_vendor_others.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_vendor_others.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_group_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_group_banner.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_my_movies_tvs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_my_movies_tvs.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_arrow_gray_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_arrow_gray_down.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_tag_folder_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_tag_folder_down.png -------------------------------------------------------------------------------- /src/assets/images/common/notification_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/notification_more.png -------------------------------------------------------------------------------- /src/assets/images/common/rating_star_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/rating_star_empty.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_home_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_home_active.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_home_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_home_normal.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_mine_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_mine_notification.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_action_share_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_action_share_green.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_search_book_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_search_book_small.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_subject_event_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_subject_event_time.png -------------------------------------------------------------------------------- /src/assets/images/common/rating_star_xsmall_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/rating_star_xsmall_on.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_group_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_group_active.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_group_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_group_normal.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_profile_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_profile_active.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_profile_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_profile_normal.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_status_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_status_active.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_status_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_status_normal.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_subject_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_subject_active.png -------------------------------------------------------------------------------- /src/assets/images/footer/ic_tab_subject_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/footer/ic_tab_subject_normal.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_group_comment_1_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_group_comment_1_50.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_group_search_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_group_search_small.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_rec_group_banner_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_rec_group_banner_6.png -------------------------------------------------------------------------------- /src/assets/images/mine/ic_latest_group_topics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/mine/ic_latest_group_topics.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_more_action_overflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_more_action_overflow.png -------------------------------------------------------------------------------- /src/assets/images/common/rating_star_xsmall_half.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/rating_star_xsmall_half.png -------------------------------------------------------------------------------- /src/assets/images/common/rating_star_xsmall_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/rating_star_xsmall_off.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_group_check_anonymous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_group_check_anonymous.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_close_status_recommend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_close_status_recommend.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_event_nearby_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_event_nearby_location.png -------------------------------------------------------------------------------- /src/assets/images/group/ic_group_checked_anonymous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/group/ic_group_checked_anonymous.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_subject_event_ticket_buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_subject_event_ticket_buy.png -------------------------------------------------------------------------------- /src/assets/images/broadcast/ic_status_anonymous_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/broadcast/ic_status_anonymous_header.png -------------------------------------------------------------------------------- /src/assets/images/common/ic_event_action_related_drama.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liangjilin/douban/HEAD/src/assets/images/common/ic_event_action_related_drama.png -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | module.exports = merge(prodEnv, { 4 | NODE_ENV: '"development"' 5 | }) 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/vuex/modules/home.js: -------------------------------------------------------------------------------- 1 | // import * as types from '../types' 2 | 3 | const state = { 4 | 5 | } 6 | 7 | const getters = { 8 | 9 | } 10 | 11 | const actions = { 12 | 13 | } 14 | 15 | const mutations = { 16 | 17 | } 18 | 19 | export default { 20 | state, 21 | getters, 22 | actions, 23 | mutations 24 | } 25 | -------------------------------------------------------------------------------- /src/vuex/modules/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Ausu on 2017/5/23. 3 | */ 4 | const state = { 5 | 6 | } 7 | 8 | const getters = { 9 | 10 | } 11 | 12 | const actions = { 13 | 14 | } 15 | 16 | const mutations = { 17 | 18 | } 19 | 20 | export default { 21 | state, 22 | getters, 23 | actions, 24 | mutations 25 | } 26 | -------------------------------------------------------------------------------- /src/vuex/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | import main from './modules/main' 5 | import home from './modules/home' 6 | import video from './modules/video' 7 | 8 | Vue.use(Vuex) 9 | 10 | export default new Vuex.Store({ 11 | modules: { 12 | main, 13 | home, 14 | video 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 10 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /.idea/douban.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/loading.vue: -------------------------------------------------------------------------------- 1 | 6 | 17 | 24 | -------------------------------------------------------------------------------- /src/components/group.vue: -------------------------------------------------------------------------------- 1 | 7 | 10 | 27 | -------------------------------------------------------------------------------- /src/components/star.vue: -------------------------------------------------------------------------------- 1 | 8 | 11 | 26 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // http://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 13 | extends: 'standard', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // add your custom rules here 19 | 'rules': { 20 | // allow paren-less arrow functions 21 | 'arrow-parens': 0, 22 | // allow async-await 23 | 'generator-star-spacing': 0, 24 | // allow debugger during development 25 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /static/css/eric-meyer-reset.min.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0} -------------------------------------------------------------------------------- /src/components/cityMoreItem.vue: -------------------------------------------------------------------------------- 1 | 12 | 15 | 25 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import MintUi from 'mint-ui' 7 | import 'mint-ui/lib/style.css' 8 | import store from './vuex/store' 9 | 10 | Vue.config.productionTip = false 11 | Vue.use(MintUi) 12 | 13 | /* eslint-disable no-new */ 14 | new Vue({ 15 | el: '#app', 16 | router, 17 | store, 18 | template: '', 19 | components: { App } 20 | }) 21 | // 打包改為-->打包APK時用到 22 | // document.addEventListener('deviceready', () => { 23 | // new Vue({ 24 | // el: '#app', 25 | // router, 26 | // store, 27 | // template: '', 28 | // components: { App } 29 | // }) 30 | // window.navigator.splashscreen.hide() 31 | // }, false) 32 | -------------------------------------------------------------------------------- /src/components/musicMoreItem.vue: -------------------------------------------------------------------------------- 1 | 15 | 18 | 32 | -------------------------------------------------------------------------------- /src/components/tvMoreItem.vue: -------------------------------------------------------------------------------- 1 | 15 | 17 | 31 | -------------------------------------------------------------------------------- /src/components/groupItem.vue: -------------------------------------------------------------------------------- 1 | 18 | 21 | 32 | -------------------------------------------------------------------------------- /src/assets/css/common.styl: -------------------------------------------------------------------------------- 1 | body 2 | width 7.5rem 3 | min-height 100% 4 | margin 0 auto 5 | box-sizing border-box 6 | position relative 7 | overflow-x hidden 8 | font-family "Microsoft Yahei",Arial 9 | font-size 14px 10 | background-color #f0f0f0 11 | color #333 12 | -webkit-overflow-scrolling touch 13 | .color33 14 | color #333!important 15 | .colorAaa 16 | color #aaa!important 17 | .colorRed 18 | color #f94848!important 19 | .colorGreen 20 | color #42bd56!important 21 | .paddingTop50 22 | padding-top 50px 23 | // >右箭头 24 | .fa-angle-right 25 | font-size 18px 26 | color #333 27 | a 28 | text-decoration none 29 | .rating 30 | color #aaa 31 | font-size 14px 32 | margin-top .1rem 33 | text-align left 34 | .borderBottom 35 | border-bottom 1px solid #ddd!important 36 | // 官方售票 37 | .officialTicket 38 | display inline-block 39 | margin-left .2rem 40 | font-size 12px 41 | padding 0 .05rem 42 | color #f94848 43 | border 1px solid #f94848 44 | border-radius 3px 45 | -------------------------------------------------------------------------------- /.idea/watcherTasks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /src/assets/css/common.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 7.5rem; 3 | min-height: 100%; 4 | margin: 0 auto; 5 | box-sizing: border-box; 6 | position: relative; 7 | overflow-x: hidden; 8 | font-family: "Microsoft Yahei", Arial; 9 | font-size: 14px; 10 | background-color: #f0f0f0; 11 | color: #333; 12 | -webkit-overflow-scrolling: touch; 13 | } 14 | .color33 { 15 | color: #333 !important; 16 | } 17 | .colorAaa { 18 | color: #aaa !important; 19 | } 20 | .colorRed { 21 | color: #f94848 !important; 22 | } 23 | .colorGreen { 24 | color: #42bd56 !important; 25 | } 26 | .paddingTop50 { 27 | padding-top: 50px; 28 | } 29 | .fa-angle-right { 30 | font-size: 18px; 31 | color: #333; 32 | } 33 | a { 34 | text-decoration: none; 35 | } 36 | .rating { 37 | color: #aaa; 38 | font-size: 14px; 39 | margin-top: 0.1rem; 40 | text-align: left; 41 | } 42 | .borderBottom { 43 | border-bottom: 1px solid #ddd !important; 44 | } 45 | .officialTicket { 46 | display: inline-block; 47 | margin-left: 0.2rem; 48 | font-size: 12px; 49 | padding: 0 0.05rem; 50 | color: #f94848; 51 | border: 1px solid #f94848; 52 | border-radius: 3px; 53 | } 54 | -------------------------------------------------------------------------------- /src/components/rating.vue: -------------------------------------------------------------------------------- 1 | 8 | 25 | 45 | -------------------------------------------------------------------------------- /src/components/bookMoreItem.vue: -------------------------------------------------------------------------------- 1 | 15 | 35 | 49 | -------------------------------------------------------------------------------- /src/components/banner.vue: -------------------------------------------------------------------------------- 1 | 20 | 48 | 55 | -------------------------------------------------------------------------------- /src/components/header.vue: -------------------------------------------------------------------------------- 1 | 14 | 55 | 69 | -------------------------------------------------------------------------------- /src/vuex/types.js: -------------------------------------------------------------------------------- 1 | // 创建操作类型(定义常量) 2 | 3 | // 正在热映 4 | export const GET_HOT_MOVIE = 'GET_HOT_MOVIE' 5 | // 即将上映 6 | export const GET_COMING_MOVIE = 'GET_COMING_MOVIE' 7 | // 榜单_top250 8 | export const GET_TOP250_MOVIE = 'GET_TOP250_MOVIE' 9 | // 榜单_口碑 10 | export const GET_REPUTATION_MOVIE = 'GET_REPUTATION_MOVIE' 11 | // 榜单_新片 12 | export const GET_NEW_MOVIE = 'GET_NEW_MOVIE' 13 | // 榜单_北美票房 14 | export const GET_NORTHUSA_MOVIE = 'GET_NORTHUSA_MOVIE' 15 | 16 | // 图书-----新书 17 | export const GET_BOOK_NEW = 'GET_BOOK_NEW' 18 | // 图书-----虚构类 19 | export const GET_BOOK_FICTION = 'GET_BOOK_FICTION' 20 | // 图书-----非虚构类 21 | export const GET_BOOK_NOFICTION = 'GET_BOOK_NOFICTION' 22 | // 图书-----豆瓣书店 23 | export const GET_BOOK_STORE = 'GET_BOOK_STORE' 24 | // 图书-----原创 25 | export const GET_BOOK_ORIGINAL = 'GET_BOOK_ORIGINAL' 26 | // 图书-----特价 27 | export const GET_BOOK_SPECIALPRICE = 'GET_BOOK_SPECIALPRICE' 28 | // 图书-----畅销 29 | export const GET_BOOK_SELLING = 'GET_BOOK_SELLING' 30 | 31 | // 音乐-----华语 32 | export const GET_MUSIC_CHINESE = 'GET_MUSIC_CHINESE' 33 | // 音乐-----欧美 34 | export const GET_MUSIC_USA = 'GET_MUSIC_USA' 35 | // 音乐-----日韩 36 | export const GET_MUSIC_JAPAN_KOREA = 'GET_MUSIC_JAPAN_KOREA' 37 | // 音乐-----热门 38 | export const GET_MUSIC_HOT = 'GET_MUSIC_HOT' 39 | 40 | // 同城-----热门活动 41 | export const GET_CITY_HOT = 'GET_CITY_HOT' 42 | // 同城-----电影 43 | export const GET_CITY_MOVIE = 'GET_CITY_MOVIE' 44 | // 同城-----音乐 45 | export const GET_CITY_MUSIC = 'GET_CITY_MUSIC' 46 | // 同城-----旅行 47 | export const GET_CITY_TRAVEL = 'GET_CITY_TRAVEL' 48 | // 同城-----运动 49 | export const GET_CITY_SPORTS = 'GET_CITY_SPORTS' 50 | -------------------------------------------------------------------------------- /src/components/bookFiction.vue: -------------------------------------------------------------------------------- 1 | 15 | 48 | 62 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 8070, 27 | autoOpenBrowser: true, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | proxyTable: { 31 | // '/api': { 32 | // target: 'https://api.douban.com', 33 | // changeOrigin: true, 34 | // pathRewrite:{ 35 | // '^/api': '' 36 | // } 37 | // } 38 | }, 39 | // CSS Sourcemaps off by default because relative paths are "buggy" 40 | // with this option, according to the CSS-Loader README 41 | // (https://github.com/webpack/css-loader#sourcemaps) 42 | // In our experience, they generally work as expected, 43 | // just be aware of this issue when enabling this option. 44 | cssSourceMap: false 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/pages/video/tv/tvMore/tvMore.vue: -------------------------------------------------------------------------------- 1 | 14 | 16 | 54 | -------------------------------------------------------------------------------- /src/pages/video/city/cityMore/cityMore.vue: -------------------------------------------------------------------------------- 1 | 14 | 16 | 54 | -------------------------------------------------------------------------------- /src/pages/video/music/musicMore/musicMore.vue: -------------------------------------------------------------------------------- 1 | 14 | 17 | 55 | -------------------------------------------------------------------------------- /src/pages/video/video.vue: -------------------------------------------------------------------------------- 1 | 29 | 46 | 68 | -------------------------------------------------------------------------------- /src/pages/video/book/fictionMore/fictionMore.vue: -------------------------------------------------------------------------------- 1 | 14 | 19 | 57 | -------------------------------------------------------------------------------- /src/pages/register/register.vue: -------------------------------------------------------------------------------- 1 | 24 | 62 | 77 | -------------------------------------------------------------------------------- /src/components/movieMoreItem.vue: -------------------------------------------------------------------------------- 1 | 14 | 66 | 80 | -------------------------------------------------------------------------------- /src/pages/login/login.vue: -------------------------------------------------------------------------------- 1 | 20 | 83 | 97 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "douban", 3 | "version": "1.0.0", 4 | "description": "豆瓣电影,图书,音乐,广播,小组。", 5 | "author": "jilin", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "start": "node build/dev-server.js", 10 | "build": "node build/build.js", 11 | "lint": "eslint --ext .js,.vue src" 12 | }, 13 | "dependencies": { 14 | "axios": "^0.16.1", 15 | "mint-ui": "^2.2.6", 16 | "qs": "^6.4.0", 17 | "stylus": "^0.54.5", 18 | "stylus-loader": "^3.0.1", 19 | "vue": "^2.2.6", 20 | "vue-router": "^2.3.1", 21 | "vuex": "^2.3.1" 22 | }, 23 | "devDependencies": { 24 | "autoprefixer": "^6.7.2", 25 | "babel-core": "^6.22.1", 26 | "babel-eslint": "^7.1.1", 27 | "babel-loader": "^6.2.10", 28 | "babel-plugin-transform-runtime": "^6.22.0", 29 | "babel-preset-env": "^1.3.2", 30 | "babel-preset-stage-2": "^6.22.0", 31 | "babel-register": "^6.22.0", 32 | "chalk": "^1.1.3", 33 | "connect-history-api-fallback": "^1.3.0", 34 | "copy-webpack-plugin": "^4.0.1", 35 | "css-loader": "^0.28.0", 36 | "eslint": "^3.19.0", 37 | "eslint-friendly-formatter": "^2.0.7", 38 | "eslint-loader": "^1.7.1", 39 | "eslint-plugin-html": "^2.0.0", 40 | "eslint-config-standard": "^6.2.1", 41 | "eslint-plugin-promise": "^3.4.0", 42 | "eslint-plugin-standard": "^2.0.1", 43 | "eventsource-polyfill": "^0.9.6", 44 | "express": "^4.14.1", 45 | "extract-text-webpack-plugin": "^2.0.0", 46 | "file-loader": "^0.11.1", 47 | "friendly-errors-webpack-plugin": "^1.1.3", 48 | "html-webpack-plugin": "^2.28.0", 49 | "http-proxy-middleware": "^0.17.3", 50 | "webpack-bundle-analyzer": "^2.2.1", 51 | "semver": "^5.3.0", 52 | "shelljs": "^0.7.6", 53 | "opn": "^4.0.2", 54 | "optimize-css-assets-webpack-plugin": "^1.3.0", 55 | "ora": "^1.2.0", 56 | "rimraf": "^2.6.0", 57 | "url-loader": "^0.5.8", 58 | "vue-loader": "^11.3.4", 59 | "vue-style-loader": "^2.0.5", 60 | "vue-template-compiler": "^2.2.6", 61 | "webpack": "^2.3.3", 62 | "webpack-dev-middleware": "^1.10.0", 63 | "webpack-hot-middleware": "^2.18.0", 64 | "webpack-merge": "^4.1.0" 65 | }, 66 | "engines": { 67 | "node": ">= 4.0.0", 68 | "npm": ">= 3.0.0" 69 | }, 70 | "browserslist": [ 71 | "> 1%", 72 | "last 2 versions", 73 | "not ie <= 8" 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /src/pages/video/interestedMore/interestedMore.vue: -------------------------------------------------------------------------------- 1 | 15 | 27 | 67 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | douban 22 | 23 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/pages/video/book/newBookMore/newBookMore.vue: -------------------------------------------------------------------------------- 1 | 25 | 53 | 92 | -------------------------------------------------------------------------------- /src/pages/video/movie/movieToplist/movieToplist.vue: -------------------------------------------------------------------------------- 1 | 29 | 84 | 105 | -------------------------------------------------------------------------------- /src/pages/main.vue: -------------------------------------------------------------------------------- 1 | 54 | 65 | 89 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import Main from '@/pages/main.vue' 4 | import Login from '@/pages/login/login.vue' 5 | import Register from '@/pages/register/register.vue' 6 | import MovieDetail from '@/pages/video/movie/movieDetail/movieDetail.vue' 7 | import MovieSearch from '@/pages/video/movie/movieSearch/movieSearch.vue' 8 | import MovieMore from '@/pages/video/movie/movieMore/movieMore.vue' 9 | import MovieToplist from '@/pages/video/movie/movieToplist/movieToplist.vue' 10 | import BookDetail from '@/pages/video/book/bookDetail/bookDetail.vue' 11 | import NewBookMore from '@/pages/video/book/NewBookMore/newBookMore.vue' 12 | import FictionMore from '@/pages/video/book/fictionMore/fictionMore.vue' 13 | import MusicMore from '@/pages/video/music/musicMore/musicMore.vue' 14 | import MusicDetail from '@/pages/video/music/musicDetail/musicDetail.vue' 15 | import TvMore from '@/pages/video/tv/tvMore/tvMore.vue' 16 | import CityMore from '@/pages/video/city/cityMore/cityMore.vue' 17 | import CityDetail from '@/pages/video/city/cityDetail/cityDetail.vue' 18 | 19 | import InterestedMore from '@/pages/video/interestedMore/interestedMore.vue' // 更多感兴趣 20 | 21 | import BroadcastDetail from '@/pages/broadcast/broadcastDetail/broadcastDetail.vue' // 广播详情 22 | import GroupDetail from '@/pages/group/groupDetail/groupDetail.vue' // 小组详情 23 | 24 | Vue.use(Router) 25 | 26 | export default new Router({ 27 | routes: [ 28 | { 29 | path: '/', 30 | name: 'main', 31 | component: Main 32 | }, 33 | { 34 | path: '/login', 35 | name: 'login', 36 | component: Login 37 | }, 38 | { 39 | path: '/register', 40 | name: 'register', 41 | component: Register 42 | }, 43 | { 44 | path: '/movieDetail', 45 | name: 'movieDetail', 46 | component: MovieDetail 47 | }, 48 | { 49 | path: '/movieMore', 50 | name: 'movieMore', 51 | component: MovieMore 52 | }, 53 | { 54 | path: '/movieSearch', 55 | name: 'movieSearch', 56 | component: MovieSearch 57 | }, 58 | { 59 | path: '/movieToplist', 60 | name: 'movieToplist', 61 | component: MovieToplist 62 | }, 63 | { 64 | path: '/newBookMore', 65 | name: 'newBookMore', 66 | component: NewBookMore 67 | }, 68 | { 69 | path: '/fictionMore', 70 | name: 'fictionMore', 71 | component: FictionMore 72 | }, 73 | { 74 | path: '/bookDetail', 75 | name: 'bookDetail', 76 | component: BookDetail 77 | }, 78 | { 79 | path: '/musicMore', 80 | name: 'musicMore', 81 | component: MusicMore 82 | }, 83 | { 84 | path: '/musicDetail', 85 | name: 'musicDetail', 86 | component: MusicDetail 87 | }, 88 | { 89 | path: '/tvMore', 90 | name: 'tvMore', 91 | component: TvMore 92 | }, 93 | { 94 | path: '/cityMore', 95 | name: 'cityMore', 96 | component: CityMore 97 | }, 98 | { 99 | path: '/cityDetail', 100 | name: 'cityDetail', 101 | component: CityDetail 102 | }, 103 | { 104 | path: '/broadcastDetail', 105 | name: 'broadcastDetail', 106 | component: BroadcastDetail 107 | }, 108 | { 109 | path: '/groupDetail', 110 | name: 'groupDetail', 111 | component: GroupDetail 112 | }, 113 | { 114 | path: '/interestedMore', 115 | name: 'interestedMore', 116 | component: InterestedMore 117 | } 118 | ] 119 | }) 120 | -------------------------------------------------------------------------------- /src/pages/video/city/cityDetail/cityDetail.vue: -------------------------------------------------------------------------------- 1 | 66 | 68 | 96 | -------------------------------------------------------------------------------- /src/fetch/api.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import qs from 'qs' 3 | 4 | // axios 配置 5 | axios.defaults.timeout = 5000 // 响应时间 6 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN 7 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' // 配置请求头 8 | axios.defaults.headers = {'X-Requested-With': 'XMLHttpRequest'} 9 | axios.defaults.baseURL = 'https://api.douban.com' // 配置接口地址 10 | 11 | // POST传参序列化(添加请求拦截器) 12 | axios.interceptors.request.use((config) => { 13 | // 在发送请求之前做某件事 14 | if (config.method === 'get') { 15 | config.data = qs.stringify(config.data) 16 | } 17 | return config 18 | }, (error) => { 19 | console.log('错误的传参') 20 | return Promise.reject(error) 21 | }) 22 | 23 | // 返回状态判断(添加响应拦截器) 24 | axios.interceptors.response.use((res) => { 25 | // 对响应数据做些事 26 | if (res.statusText !== 'OK') { 27 | // _.toast(res.data.msg) 28 | return Promise.reject(res) 29 | } 30 | return res 31 | }, (error) => { 32 | console.log('网络异常') 33 | return Promise.reject(error) 34 | }) 35 | 36 | // 返回一个Promise(发送post请求) 37 | export function fetch (url, params) { 38 | return new Promise((resolve, reject) => { 39 | axios.get(url, params) 40 | .then(response => { 41 | resolve(response.data) 42 | }).catch((error) => { 43 | reject(error) 44 | }) 45 | }) 46 | } 47 | 48 | export default { 49 | hotMovie () { 50 | return fetch('/v2/movie/in_theaters') 51 | }, 52 | comingMovie () { 53 | return fetch('/v2/movie/coming_soon') 54 | }, 55 | top250Movie () { 56 | return fetch('/v2/movie/top250') 57 | }, 58 | reputationMovie () { 59 | return fetch('/v2/movie/weekly') 60 | }, 61 | newMovie () { 62 | return fetch('/v2/movie/new_movies') 63 | }, 64 | northUsaMovie () { 65 | return fetch('/v2/movie/us_box') 66 | }, 67 | commentsMovie () { 68 | return fetch('/v2/movie/subject/:id/reviews') // 影评 69 | }, 70 | movieDetail (id) { 71 | return fetch('/v2/movie/subject/' + id) // 电影详情 72 | }, 73 | movieSearch (tagName) { 74 | return fetch('/v2/movie/search?tag=' + tagName) // 电影搜索 75 | }, 76 | bookNew () { 77 | return fetch('/v2/book/search?tag=新书&count=10') // 新书 78 | }, 79 | bookFiction () { 80 | return fetch('/v2/book/search?q=虚构类&count=10') // 虚构类的图书 81 | }, 82 | bookNoFiction () { 83 | return fetch('/v2/book/search?q=非虚构类&count=10') // 非虚构类的图书 84 | }, 85 | bookStore () { 86 | return fetch('/v2/book/search?tag=豆瓣&count=10') // 豆瓣书店 87 | }, 88 | bookOriginal () { 89 | return fetch('/v2/book/search?tag=原创&count=10') // 原创 90 | }, 91 | bookSpecialPrice () { 92 | return fetch('/v2/book/search?tag=电子书&count=10') // 特价电子书 93 | }, 94 | bookSelling () { 95 | return fetch('/v2/book/search?tag=畅销&count=10') // 畅销 96 | }, 97 | musicChinese () { 98 | return fetch('v2/music/search?tag=华语&count=10') // 华语新碟榜 99 | }, 100 | musicUsa () { 101 | return fetch('v2/music/search?tag=欧美&count=10') // 欧美新碟榜 102 | }, 103 | musicJapanKorea () { 104 | return fetch('v2/music/search?tag=日韩&count=10') // 日韩新碟榜 105 | }, 106 | musicHot () { 107 | return fetch('v2/music/search?tag=热门&count=10') // 热门单曲榜 108 | }, 109 | cityHot () { 110 | return fetch('v2/event/list?loc=118282&count=10') // 城市 热门活动 111 | }, 112 | cityMovie () { 113 | return fetch('v2/event/list?loc=118282&start=10&count=10') // 城市---电影类 114 | }, 115 | cityMusic () { 116 | return fetch('v2/event/list?loc=108288&count=10') // 城市---音乐类 117 | }, 118 | cityTravel () { 119 | return fetch('v2/event/list?loc=108296&count=10') // 城市---旅行类 120 | }, 121 | citySports () { 122 | return fetch('v2/event/list?loc=118281&count=10') // 城市---运动类 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /src/pages/video/city/city.vue: -------------------------------------------------------------------------------- 1 | 42 | 75 | 104 | -------------------------------------------------------------------------------- /src/pages/video/music/musicDetail/musicDetail.vue: -------------------------------------------------------------------------------- 1 | 68 | 74 | 105 | 106 | -------------------------------------------------------------------------------- /src/components/interestedMoreItem.vue: -------------------------------------------------------------------------------- 1 | 61 | 91 | 111 | -------------------------------------------------------------------------------- /src/pages/video/book/bookDetail/bookDetail.vue: -------------------------------------------------------------------------------- 1 | 71 | 86 | 117 | 118 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 豆瓣APP 2 | 3 | > 豆瓣电影,图书,音乐,广播,小组。vue2.0 + vue-router + axios + vuex + mint-ui 4 | 5 | # 运行项目 6 | 7 | ``` bash 8 | # git clone git@github.com:liangjilin/douban.git 9 | 10 | # install dependencies 11 | npm install 12 | 13 | # serve with hot reload at localhost:8080 14 | npm run dev 15 | 16 | ``` 17 | # 效果图 18 | 19 | ![text](../master/static/images/jdfw.gif) 20 | 21 | # 项目结构 22 | ```javascript 23 | . 24 | ├── README.md 25 | ├── build // vue-cli 自带的配置文件 26 | │   ├── build.js 27 | │   ├── check-versions.js 28 | │   ├── dev-client.js 29 | │   ├── dev-server.js 30 | │   ├── utils.js 31 | │   ├── webpack.base.conf.js 32 | │   ├── webpack.dev.conf.js 33 | │   └── webpack.prod.conf.js 34 | ├── config // vue-cli 自带的配置文件 35 | │   ├── dev.env.js 36 | │   ├── index.js 37 | │   └── prod.env.js 38 | ├── package.json 39 | ├── src 40 | │   ├── App.vue 41 | │   ├── assets 42 | │   │   ├── css 43 | │ │ │ ├──common.styl 44 | │ │ │ │ ├──common.css 45 | │ │ │ │ ├──cfont-awesome.min 46 | │   │   ├── fonts 47 | │   │   └── images 48 | │   ├── components 49 | │   │   ├── banner.vue // 50 | │   │   ├── bookFiction.vue 51 | │   │   ├── bookMoreItem.vue 52 | │   │   ├── cityMoreItem.vue 53 | │   │   ├── header.vue 54 | │   │   ├── loading.vue 55 | │   │   ├── movieMoreItem.vue 56 | │   │   ├── musicMoreItem.vue 57 | │   │   ├── rating.vue 58 | │   │   ├── scroller.vue 59 | │   │   ├── star.vue 60 | │   │   └── tvMoreItem.vue 61 | │   ├── main.js // 入口文件 62 | │   ├── router // 路由 63 | │   │   ├── index.js 64 | │   ├── data // 自己写的模仿数据 65 | │   │   ├── homeData.json 66 | │   ├── fetch // fetch API 67 | │   │   ├── api.js // axios配置及API封装 68 | │   ├── vuex // 数据管理 69 | │   │   ├── modules 70 | │   │   │ ├── home.js 71 | │   │   │ ├── main.js 72 | │   │   │   └── video.js 73 | │   │   ├── store.js 74 | │   │   └── types.js 75 | │   └── pages 76 | │   ├── main.vue // 底部导航及页面绑定 77 | │   ├── home 78 | │   │   └── home.vue // 首页 79 | │   ├── video // 书影音 80 | │   │   ├── movie // 电影 81 | │   │ │   ├── movie.vue 82 | │   │ │   ├── movieDetail 83 | │   │ │   │ └── movieDetail.vue // 电影详情 84 | │   │ │   ├── movieMore 85 | │   │ │   │ └── movieMore.vue // 正在热映 86 | │   │ │   ├── movieSearch 87 | │   │ │   │ └── movieSearch.vue // 即将上映 88 | │   │ │   └── movieToplist 89 | │   │ │   │ └── movieToplist.vue // 榜单 90 | │   │   ├── book // 图书 91 | │   │ │   ├── book.vue 92 | │   │ │   ├── bookDetail 93 | │   │ │   │ └── bookDetail.vue // 图书详情 94 | │   │ │   ├── fictionMore 95 | │   │ │   │ └── fictionMore.vue // 查看更多图书 96 | │   │ │   └── newBookMore 97 | │   │ │   │ └── newBookMore.vue // 新书速递 98 | │   │   ├── city // 同城 99 | │   │ │   ├── city.vue 100 | │   │ │   ├── cityDetail 101 | │   │ │   │ └── cityDetail.vue // 同城详情 102 | │   │ │   ├── cityMore 103 | │   │ │   │ └── cityMore.vue // 查看更多同城 104 | │   │   ├── tv // 电视 105 | │   │ │   ├── tv.vue 106 | │   │ │   ├── tvMore 107 | │   │ │   │ └── tvMore.vue // 查看更多电视剧 108 | │   │   └── music // 音乐 109 | │   │ │   ├── music.vue 110 | │   │ │   ├── musicDetail 111 | │   │ │   │ └── musicDetail.vue // music详情 112 | │   │ │   ├── musicMore 113 | │   │ │   │ └── musicMore.vue // 查看更多music 114 | │   ├── broadcast 115 | │   │ ├── broadcast.vue 116 | │   │ └── broadcastDetail 117 | │   │ │ └── broadcastDetail.vue // 广播详情 118 | │   ├── group 119 | │   │ └── group.vue // 小组 120 | │   ├── mine 121 | │   │ └── mine.vue // 小组 122 | │   ├── login 123 | │   │ └── login.vue // 登录 124 | │   └── register 125 | │   └── register.vue // 注册 126 | ├── static 127 | │   ├── css 128 | │   │   └──eric-meyer-reset.min.css // css reset 129 | │   └── images 130 | │      └──favicon.ico // icon 131 | └── tree.md 132 | ``` 133 | # 豆瓣API 134 | 该应用使用了下面4个api: 135 | * `/v2/book` 图书; 136 | * `/v2/movie` 电影; 137 | * `/v2/music` 音乐; 138 | * `v2/event` 同城。 139 | 140 | >更多关于豆瓣的api可以前往[豆瓣api官网](https://developers.douban.com/wiki/?title=guide)查看。 141 | 142 | 需要注意的是,由于豆瓣api的跨域问题,并不能直接通过ajax请求访问。不过vue-cli提供了代理的配置。 143 | 我们需要在`/config/index.js`中配置代理: 144 | ```javascript 145 | dev: { 146 | env: require('./dev.env'), 147 | port: 8070, 148 | autoOpenBrowser: true, 149 | assetsSubDirectory: 'static', 150 | assetsPublicPath: '/', 151 | proxyTable: { 152 | '/api': { 153 | target: 'https://api.douban.com', 154 | changeOrigin: true, 155 | pathRewrite:{ 156 | '^/api': '' 157 | } 158 | } 159 | } 160 | ``` 161 | # 关于相关依赖那些事 162 | 163 | vue-router, 请看[vue路由配置](https://router.vuejs.org/zh-cn/)。 164 | axios请求,请用力戳[Axios文档](https://www.npmjs.com/package/axios)。 165 | 亦或你想了解关于页面或跨组件数据通讯等的用法,请点击传送门[Vuex文档](https://vuex.vuejs.org/zh-cn/)。 166 | 还是饿了么移动端组件库mint-ui,[mint-ui官方文档](http://mint-ui.github.io/docs/#/)。 167 | 168 | -------------------------------------------------------------------------------- /src/pages/group/group.vue: -------------------------------------------------------------------------------- 1 | 24 | 130 | 179 | -------------------------------------------------------------------------------- /src/pages/video/music/music.vue: -------------------------------------------------------------------------------- 1 | 101 | 106 | 138 | -------------------------------------------------------------------------------- /src/pages/video/movie/movieSearch/movieSearch.vue: -------------------------------------------------------------------------------- 1 | 71 | 144 | 194 | -------------------------------------------------------------------------------- /src/pages/broadcast/broadcastDetail/broadcastDetail.vue: -------------------------------------------------------------------------------- 1 | 66 | 191 | 206 | -------------------------------------------------------------------------------- /src/pages/mine/mine.vue: -------------------------------------------------------------------------------- 1 | 132 | 241 | 248 | -------------------------------------------------------------------------------- /static/group.json: -------------------------------------------------------------------------------- 1 | { 2 | "object": [ 3 | { 4 | "type": "影视", 5 | "data": [ 6 | { 7 | "title": "异地恋:爱是最大救赎", 8 | "subtype": "group", 9 | "id": 1234, 10 | "images": { 11 | "small": "https://img3.doubanio.com/icon/g24916-11.jpg" 12 | }, 13 | "group_member": 2736, 14 | "group_topic": { 15 | "title": "a7出租老男孩一枚,先到先得。。。。。" 16 | } 17 | }, 18 | { 19 | "title": "我要女朋友", 20 | "subtype": "group", 21 | "id": 1234, 22 | "images": { 23 | "small": "https://img3.doubanio.com/icon/g64343-1.jpg" 24 | }, 25 | "group_member": 8536, 26 | "group_topic": { 27 | "title": "万水千山总是情 来个真爱行不行" 28 | } 29 | }, 30 | { 31 | "title": "加入这个组你就会有男朋友", 32 | "subtype": "group", 33 | "id": 1234, 34 | "images": { 35 | "small": "https://img3.doubanio.com/icon/g233931-6.jpg" 36 | }, 37 | "group_member": 245983, 38 | "group_topic": { 39 | "title": "【有图】慢慢来,我不急,反正都等了那么久了" 40 | } 41 | } 42 | ] 43 | }, 44 | { 45 | "type": "读书", 46 | "data": [ 47 | { 48 | "title": "双鱼座到碗里来(不关注组长进不来)", 49 | "subtype": "group", 50 | "id": 1234, 51 | "images": { 52 | "small": "https://img3.doubanio.com/icon/g10813-13.jpg" 53 | }, 54 | "group_member": 64769, 55 | "group_topic": { 56 | "title": "双鱼男感觉像农村里受气的小媳妇" 57 | } 58 | }, 59 | { 60 | "title": "我爱我恨水瓶男", 61 | "subtype": "group", 62 | "id": 1234, 63 | "images": { 64 | "small": "https://img3.doubanio.com/icon/g141197-2.jpg" 65 | }, 66 | "group_member": 25882, 67 | "group_topic": { 68 | "title": "有经验的姐妹们帮帮我" 69 | } 70 | }, 71 | { 72 | "title": "★星译社ATS★", 73 | "subtype": "group", 74 | "id": 1234, 75 | "images": { 76 | "small": "https://img1.doubanio.com/icon/g104169-148.jpg" 77 | }, 78 | "group_member": 6679, 79 | "group_topic": { 80 | "title": "(周运)阿莎莉娅每周能量运势6.12-6.18(全待)" 81 | } 82 | } 83 | ] 84 | }, 85 | { 86 | "type": "音乐", 87 | "data": [ 88 | { 89 | "title": "我们的云南谁的丽江 | 旅行", 90 | "subtype": "group", 91 | "id": 1234, 92 | "images": { 93 | "small": "https://img3.doubanio.com/icon/g116533-6.jpg" 94 | }, 95 | "group_member": 128660, 96 | "group_topic": { 97 | "title": "云南丽江七日游" 98 | } 99 | }, 100 | { 101 | "title": "台灣自由行", 102 | "subtype": "group", 103 | "id": 1234, 104 | "images": { 105 | "small": "https://img1.doubanio.com/icon/g346974-9.jpg" 106 | }, 107 | "group_member": 106565, 108 | "group_topic": { 109 | "title": "6.30-7.7杭州出发台湾自由行~有一起的小伙伴吗?" 110 | } 111 | }, 112 | { 113 | "title": "去义工旅行(微信:Yigongtrip)", 114 | "subtype": "group", 115 | "id": 1234, 116 | "images": { 117 | "small": "https://img1.doubanio.com/icon/g312709-19.jpg" 118 | }, 119 | "group_member": 86786, 120 | "group_topic": { 121 | "title": "兴坪三十度灰青年旅舍义工招募贴" 122 | } 123 | } 124 | ] 125 | }, 126 | { 127 | "type": "同城", 128 | "data": [ 129 | { 130 | "title": "成都租房", 131 | "subtype": "group", 132 | "id": 1234, 133 | "images": { 134 | "small": "https://img3.doubanio.com/icon/g117205-2.jpg" 135 | }, 136 | "group_member": 43736, 137 | "group_topic": { 138 | "title": "天府四街临江苑套一出租个人 无中介费噢" 139 | } 140 | }, 141 | { 142 | "title": "北京租房(非中介)", 143 | "subtype": "group", 144 | "id": 1234, 145 | "images": { 146 | "small": "https://img3.doubanio.com/icon/g279962-3.jpg" 147 | }, 148 | "group_member": 53736, 149 | "group_topic": { 150 | "title": "9号线丰台南路站看丹桥新华街四里,次卧出租,押一付一" 151 | } 152 | }, 153 | { 154 | "title": "深圳福田租房(个人房源免费推广)", 155 | "subtype": "group", 156 | "id": 1234, 157 | "images": { 158 | "small": "https://img3.doubanio.com/icon/g117205-2.jpg" 159 | }, 160 | "group_member": 4373, 161 | "group_topic": { 162 | "title": "福田福民岗厦复式单间整租,2800,可短租" 163 | } 164 | } 165 | ] 166 | }, 167 | { 168 | "type": "高校", 169 | "data": [ 170 | { 171 | "title": "想不想很多人帮你", 172 | "subtype": "group", 173 | "id": 1234, 174 | "images": { 175 | "small": "https://img1.doubanio.com/icon/g14859-17.jpg" 176 | }, 177 | "group_member": 431999, 178 | "group_topic": { 179 | "title": "想转专业去学日语大家有神马建议,想转专业去学日语大家有神马建议" 180 | } 181 | }, 182 | { 183 | "title": "我们都有秘密", 184 | "subtype": "group", 185 | "id": 1234, 186 | "images": { 187 | "small": "https://img5.doubanio.com/icon/g399184-6.jpg" 188 | }, 189 | "group_member": 96960, 190 | "group_topic": { 191 | "title": "北京 征个女生,要年轻漂亮,心地善良,孝顺" 192 | } 193 | }, 194 | { 195 | "title": "文艺青年装逼会", 196 | "subtype": "group", 197 | "id": 1234, 198 | "images": { 199 | "small": "https://img1.doubanio.com/icon/g17947-8.jpg" 200 | }, 201 | "group_member": 437361, 202 | "group_topic": { 203 | "title": "文艺青年装逼会,在这里,没人在乎你的出生,你的身份,你的工作,只要你有才华,尽情装B吧" 204 | } 205 | } 206 | ] 207 | }, 208 | { 209 | "type": "职场", 210 | "data": [ 211 | { 212 | "title": "我爱代购&海淘☺微信号", 213 | "subtype": "group", 214 | "id": 1234, 215 | "images": { 216 | "small": "https://img5.doubanio.com/icon/g37539-6.jpg" 217 | }, 218 | "group_member": 43129, 219 | "group_topic": { 220 | "title": "靠谱小日代 薇信直播定位+邮寄单号 可拼邮可直邮 保证品 ~笔芯" 221 | } 222 | }, 223 | { 224 | "title": "PiaPia团✿团购", 225 | "subtype": "group", 226 | "id": 1234, 227 | "images": { 228 | "small": "https://img3.doubanio.com/icon/g573696-2.jpg" 229 | }, 230 | "group_member": 21960, 231 | "group_topic": { 232 | "title": "【想买】之前团过的包要吗?要就快来吧" 233 | } 234 | }, 235 | { 236 | "title": "我们一起海淘", 237 | "subtype": "group", 238 | "id": 1234, 239 | "images": { 240 | "small": "https://img3.doubanio.com/icon/g25704-22.jpg" 241 | }, 242 | "group_member": 2361, 243 | "group_topic": { 244 | "title": "靠谱小日代 薇信直播定位+邮寄单号 可拼邮可直邮 保正品~笔芯" 245 | } 246 | } 247 | ] 248 | } 249 | ] 250 | } 251 | -------------------------------------------------------------------------------- /src/pages/broadcast/broadcast.vue: -------------------------------------------------------------------------------- 1 | 76 | 194 | 201 | -------------------------------------------------------------------------------- /src/pages/video/movie/movieMore/movieMore.vue: -------------------------------------------------------------------------------- 1 | 35 | 120 | 234 | -------------------------------------------------------------------------------- /src/pages/video/tv/tv.vue: -------------------------------------------------------------------------------- 1 | 124 | 166 | 201 | -------------------------------------------------------------------------------- /src/components/scroller.vue: -------------------------------------------------------------------------------- 1 | 58 | 203 | 226 | -------------------------------------------------------------------------------- /src/vuex/modules/video.js: -------------------------------------------------------------------------------- 1 | import api from '../../fetch/api' 2 | import * as types from '../types' 3 | 4 | const state = { 5 | movie_hot: [], 6 | movie_coming: [], 7 | movie_top250: [], 8 | movie_reputation: [], 9 | movie_new: [], 10 | movie_northUsa: [], 11 | movie_search_tag: [{ 12 | forms: [ 13 | {name: '电影'}, 14 | {name: '电视剧'}, 15 | {name: '综艺'}, 16 | {name: '动画'}, 17 | {name: '纪录片'}, 18 | {name: '短片'} 19 | ], 20 | regions: [ 21 | {name: '大陆'}, 22 | {name: '美国'}, 23 | {name: '香港'}, 24 | {name: '台湾'}, 25 | {name: '日本'}, 26 | {name: '韩国'}, 27 | {name: '英国'}, 28 | {name: '法国'}, 29 | {name: '德国'}, 30 | {name: '意大利'}, 31 | {name: '西班牙'}, 32 | {name: '印度'}, 33 | {name: '泰国'}, 34 | {name: '俄罗斯'}, 35 | {name: '伊朗'}, 36 | {name: '加拿大'}, 37 | {name: '澳大利亚'}, 38 | {name: '爱尔兰'}, 39 | {name: '瑞典'}, 40 | {name: '巴西'}, 41 | {name: '丹麦'} 42 | ], 43 | types: [ 44 | {name: '剧情'}, 45 | {name: '爱情'}, 46 | {name: '喜剧'}, 47 | {name: '科幻'}, 48 | {name: '动作'}, 49 | {name: '悬疑'}, 50 | {name: '犯罪'}, 51 | {name: '恐怖'}, 52 | {name: '青春'}, 53 | {name: '励志'}, 54 | {name: '战争'}, 55 | {name: '文艺'}, 56 | {name: '魔幻'}, 57 | {name: '黑色幽默'}, 58 | {name: '传记'}, 59 | {name: '情色'}, 60 | {name: '暴力'}, 61 | {name: '音乐'}, 62 | {name: '家庭'} 63 | ], 64 | specials: [ 65 | {name: '经典'}, 66 | {name: '豆瓣高分'}, 67 | {name: '冷门佳片'}, 68 | {name: '+自定义标签'} 69 | ] 70 | }], 71 | book_new: [], 72 | book_fiction: [], 73 | book_noFiction: [], 74 | book_store: [], 75 | book_Original: [], 76 | book_SpecialPrice: [], 77 | book_Selling: [], 78 | musicChinese: [], 79 | musicUsa: [], 80 | musicJapanKorea: [], 81 | musicHot: [], 82 | cityHot: [], 83 | cityMovie: [], 84 | cityMusic: [], 85 | cityTravel: [], 86 | citySports: [] 87 | } 88 | 89 | const getters = { 90 | // 电影 91 | movie_hot_list: state => state.movie_hot, 92 | movie_coming_list: state => state.movie_coming, 93 | movie_top250_list: state => state.movie_top250, 94 | movie_reputation_list: state => state.movie_reputation, 95 | movie_new_list: state => state.movie_new, 96 | movie_northUsa_list: state => state.movie_northUsa, 97 | movie_search_tag: state => state.movie_search_tag, 98 | // 图书类 99 | book_new: state => state.book_new, 100 | book_fiction: state => state.book_fiction, 101 | book_noFiction: state => state.book_noFiction, 102 | book_store: state => state.book_store, 103 | book_Original: state => state.book_Original, 104 | book_SpecialPrice: state => state.book_SpecialPrice, 105 | book_Selling: state => state.book_Selling, 106 | // 音乐 107 | music_Chinese: state => state.musicChinese, 108 | music_Usa: state => state.musicUsa, 109 | music_JapanKorea: state => state.musicJapanKorea, 110 | music_Hot: state => state.musicHot, 111 | // 同城 112 | city_Hot: state => state.cityHot, 113 | city_Movie: state => state.cityMovie, 114 | city_Music: state => state.cityMusic, 115 | city_Travel: state => state.cityTravel, 116 | city_Sports: state => state.citySports 117 | } 118 | 119 | const actions = { 120 | // 电影 121 | getHotMovie ({ commit }) { 122 | api.hotMovie().then(res => { 123 | commit(types.GET_HOT_MOVIE, res) 124 | }) 125 | }, 126 | getComingMovie ({commit}) { 127 | api.comingMovie().then(res => { 128 | commit(types.GET_COMING_MOVIE, res) 129 | }) 130 | }, 131 | getTop250Movie ({commit}) { 132 | api.top250Movie().then(res => { 133 | commit(types.GET_TOP250_MOVIE, res) 134 | }) 135 | }, 136 | getReputationMovie ({commit}) { 137 | api.reputationMovie().then(res => { 138 | commit(types.GET_REPUTATION_MOVIE, res) 139 | }) 140 | }, 141 | getNewMovie ({commit}) { 142 | api.newMovie().then(res => { 143 | commit(types.GET_NEW_MOVIE, res) 144 | }) 145 | }, 146 | getNorthUsaMovie ({commit}) { 147 | api.northUsaMovie().then(res => { 148 | commit(types.GET_NORTHUSA_MOVIE, res) 149 | }) 150 | }, 151 | getCommentsMovie ({commit}) { 152 | api.commentsMovie().then(res => { 153 | console.log(res) 154 | }) 155 | }, 156 | // 图书 157 | getNewBook ({commit}) { 158 | api.bookNew().then(res => { 159 | commit(types.GET_BOOK_NEW, res) 160 | }) 161 | }, 162 | getFictionBook ({commit}) { 163 | api.bookFiction().then(res => { 164 | commit(types.GET_BOOK_FICTION, res) 165 | }) 166 | }, 167 | getNoFictionBook ({commit}) { 168 | api.bookNoFiction().then(res => { 169 | commit(types.GET_BOOK_NOFICTION, res) 170 | }) 171 | }, 172 | getStoreBook ({commit}) { 173 | api.bookStore().then(res => { 174 | commit(types.GET_BOOK_STORE, res) 175 | }) 176 | }, 177 | getOriginalBook ({commit}) { 178 | api.bookOriginal().then(res => { 179 | commit(types.GET_BOOK_ORIGINAL, res) 180 | }) 181 | }, 182 | getSpecialPriceBook ({commit}) { 183 | api.bookSpecialPrice().then(res => { 184 | commit(types.GET_BOOK_SPECIALPRICE, res) 185 | }) 186 | }, 187 | getSellingBook ({commit}) { 188 | api.bookSelling().then(res => { 189 | commit(types.GET_BOOK_SELLING, res) 190 | }) 191 | }, 192 | // 音乐 193 | getMusicChinese ({commit}) { 194 | api.musicChinese().then(res => { 195 | commit(types.GET_MUSIC_CHINESE, res) 196 | }) 197 | }, 198 | getMusicUsa ({commit}) { 199 | api.musicUsa().then(res => { 200 | commit(types.GET_MUSIC_USA, res) 201 | }) 202 | }, 203 | getMusicJapanKorea ({commit}) { 204 | api.musicJapanKorea().then(res => { 205 | commit(types.GET_MUSIC_JAPAN_KOREA, res) 206 | }) 207 | }, 208 | getMusicHot ({commit}) { 209 | api.musicHot().then(res => { 210 | commit(types.GET_MUSIC_HOT, res) 211 | }) 212 | }, 213 | getCityHot ({commit}) { 214 | api.cityHot().then(res => { 215 | commit(types.GET_CITY_HOT, res) 216 | }) 217 | }, 218 | getCityMovie ({commit}) { 219 | api.cityMovie().then(res => { 220 | commit(types.GET_CITY_MOVIE, res) 221 | }) 222 | }, 223 | getCityMusic ({commit}) { 224 | api.cityMusic().then(res => { 225 | commit(types.GET_CITY_MUSIC, res) 226 | }) 227 | }, 228 | getCityTravel ({commit}) { 229 | api.cityTravel().then(res => { 230 | commit(types.GET_CITY_TRAVEL, res) 231 | }) 232 | }, 233 | getCitySports ({commit}) { 234 | api.citySports().then(res => { 235 | commit(types.GET_CITY_SPORTS, res) 236 | }) 237 | } 238 | } 239 | 240 | const mutations = { 241 | // 电影 242 | [types.GET_HOT_MOVIE] (state, res) { 243 | state.movie_hot = res.subjects 244 | }, 245 | [types.GET_COMING_MOVIE] (state, res) { 246 | state.movie_coming = res.subjects 247 | }, 248 | [types.GET_TOP250_MOVIE] (state, res) { 249 | state.movie_top250 = res.subjects 250 | }, 251 | [types.GET_REPUTATION_MOVIE] (state, res) { 252 | state.movie_reputation = res.subjects 253 | }, 254 | [types.GET_NEW_MOVIE] (state, res) { 255 | state.movie_new = res.subjects 256 | }, 257 | [types.GET_NORTHUSA_MOVIE] (state, res) { 258 | state.movie_northUsa = res.subjects 259 | }, 260 | // 图书 261 | [types.GET_BOOK_NEW] (state, res) { // 新书 262 | state.book_new = res.books 263 | }, 264 | [types.GET_BOOK_FICTION] (state, res) { // 虚构类 265 | state.book_fiction = res.books 266 | }, 267 | [types.GET_BOOK_NOFICTION] (state, res) { // 非虚构类 268 | state.book_noFiction = res.books 269 | }, 270 | [types.GET_BOOK_STORE] (state, res) { // 豆瓣书店 271 | state.book_store = res.books 272 | }, 273 | [types.GET_BOOK_ORIGINAL] (state, res) { // 原创 274 | state.book_Original = res.books 275 | }, 276 | [types.GET_BOOK_SPECIALPRICE] (state, res) { // 特价电子书 277 | state.book_SpecialPrice = res.books 278 | }, 279 | [types.GET_BOOK_SELLING] (state, res) { // 畅销图书榜 280 | state.book_Selling = res.books 281 | }, 282 | // 音乐 283 | [types.GET_MUSIC_CHINESE] (state, res) { // 华语 284 | state.musicChinese = res.musics 285 | }, 286 | [types.GET_MUSIC_USA] (state, res) { // 欧美 287 | state.musicUsa = res.musics 288 | }, 289 | [types.GET_MUSIC_JAPAN_KOREA] (state, res) { // 日韩 290 | state.musicJapanKorea = res.musics 291 | }, 292 | [types.GET_MUSIC_HOT] (state, res) { // 热门 293 | state.musicHot = res.musics 294 | }, 295 | // 同城 296 | [types.GET_CITY_HOT] (state, res) { // 城市---热门活动 297 | state.cityHot = res.events 298 | }, 299 | [types.GET_CITY_MOVIE] (state, res) { // 城市---电影 300 | state.cityMovie = res.events 301 | }, 302 | [types.GET_CITY_MUSIC] (state, res) { // 城市---音乐 303 | state.cityMusic = res.events 304 | }, 305 | [types.GET_CITY_TRAVEL] (state, res) { // 城市---旅行 306 | state.cityTravel = res.events 307 | }, 308 | [types.GET_CITY_SPORTS] (state, res) { // 城市---运动 309 | state.citySports = res.events 310 | } 311 | } 312 | 313 | export default { 314 | state, 315 | getters, 316 | actions, 317 | mutations 318 | } 319 | -------------------------------------------------------------------------------- /src/pages/group/groupDetail/groupDetail.vue: -------------------------------------------------------------------------------- 1 | 77 | 278 | 322 | -------------------------------------------------------------------------------- /src/pages/video/book/book.vue: -------------------------------------------------------------------------------- 1 | 149 | 223 | 263 | -------------------------------------------------------------------------------- /src/pages/video/movie/movieDetail/movieDetail.vue: -------------------------------------------------------------------------------- 1 | 100 | 303 | 344 | --------------------------------------------------------------------------------