├── static
├── .gitkeep
├── avatars
│ └── .gitkeep
└── favicon.ico
├── .eslintignore
├── src
├── common
│ ├── js
│ │ ├── config.js
│ │ ├── user.js
│ │ ├── util.js
│ │ ├── jsonp.js
│ │ ├── cache.js
│ │ ├── http.js
│ │ └── dom.js
│ ├── stylus
│ │ ├── index.styl
│ │ ├── base.styl
│ │ ├── mixin.styl
│ │ ├── variable.styl
│ │ ├── reset.styl
│ │ └── icon.styl
│ ├── image
│ │ ├── default.png
│ │ └── favicon.ico
│ └── fonts
│ │ ├── music-icon.eot
│ │ ├── music-icon.ttf
│ │ ├── music-icon.woff
│ │ └── music-icon.svg
├── assets
│ └── logo.png
├── base
│ ├── loading
│ │ ├── loading.gif
│ │ └── loading.vue
│ ├── scroll
│ │ └── scroll.vue
│ └── slider
│ │ └── slider.vue
├── components
│ ├── home
│ │ ├── add@2x.png
│ │ ├── add@3x.png
│ │ ├── tag@2x.png
│ │ ├── tag@3x.png
│ │ ├── edit@2x.png
│ │ ├── edit@3x.png
│ │ ├── logo@2x.png
│ │ ├── logo@3x.png
│ │ ├── delete@2x.png
│ │ ├── delete@3x.png
│ │ └── home.vue
│ ├── editor
│ │ ├── book@2x.png
│ │ ├── book@3x.png
│ │ ├── data@2x.png
│ │ ├── data@3x.png
│ │ ├── paper@2x.png
│ │ ├── paper@3x.png
│ │ ├── talk@2x.png
│ │ ├── talk@3x.png
│ │ └── editor.vue
│ ├── navigation
│ │ ├── logo@2x.png
│ │ ├── logo@3x.png
│ │ └── navigation.vue
│ ├── star
│ │ ├── star24_off@2x.png
│ │ ├── star24_off@3x.png
│ │ ├── star24_on@2x.png
│ │ ├── star24_on@3x.png
│ │ ├── star36_off@2x.png
│ │ ├── star36_off@3x.png
│ │ ├── star36_on@2x.png
│ │ ├── star36_on@3x.png
│ │ ├── star48_off@2x.png
│ │ ├── star48_off@3x.png
│ │ ├── star48_on@2x.png
│ │ ├── star48_on@3x.png
│ │ ├── star24_half@2x.png
│ │ ├── star24_half@3x.png
│ │ ├── star36_half@2x.png
│ │ ├── star36_half@3x.png
│ │ ├── star48_half@2x.png
│ │ ├── star48_half@3x.png
│ │ └── star.vue
│ ├── user
│ │ ├── authentication.png
│ │ └── user.vue
│ ├── tab
│ │ └── tab.vue
│ ├── search
│ │ └── search.vue
│ └── creation
│ │ └── creation.vue
├── store
│ ├── state.js
│ ├── mutation-types.js
│ ├── getters.js
│ ├── index.js
│ ├── actions.js
│ └── mutations.js
├── App.vue
├── api
│ ├── user.js
│ └── philosopher.js
├── main.js
└── router
│ └── index.js
├── config
├── prod.env.js
├── dev.env.js
└── index.js
├── dist
├── static
│ ├── img
│ │ ├── book@3x.f2655e5.png
│ │ ├── data@3x.46226f5.png
│ │ ├── logo@2x.91bbab7.png
│ │ ├── logo@3x.6eaf066.png
│ │ ├── talk@2x.f422c40.png
│ │ ├── talk@3x.b813a7c.png
│ │ ├── paper@3x.7e10509.png
│ │ └── music-icon.1c1933b.svg
│ ├── js
│ │ ├── manifest.4e9eae02e3aee9fca6db.js
│ │ ├── app.744d9d6f59ac97d2c7f4.js
│ │ ├── manifest.4e9eae02e3aee9fca6db.js.map
│ │ └── 3.e0c7256b65cd3c34ae73.js
│ └── css
│ │ └── app.3a2eca7f7653faac7482aa6b921f0077.css.map
└── index.html
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── .babelrc
├── index.html
├── .eslintrc.js
├── README.md
├── prod.server.js
└── package.json
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/avatars/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/src/common/js/config.js:
--------------------------------------------------------------------------------
1 | export const HOST = 'http://localhost:9001'
2 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/static/favicon.ico
--------------------------------------------------------------------------------
/src/common/stylus/index.styl:
--------------------------------------------------------------------------------
1 | @import "./reset.styl"
2 | @import "./base.styl"
3 | @import "./icon.styl"
--------------------------------------------------------------------------------
/src/base/loading/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/base/loading/loading.gif
--------------------------------------------------------------------------------
/src/common/image/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/image/default.png
--------------------------------------------------------------------------------
/src/common/image/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/image/favicon.ico
--------------------------------------------------------------------------------
/src/components/home/add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/add@2x.png
--------------------------------------------------------------------------------
/src/components/home/add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/add@3x.png
--------------------------------------------------------------------------------
/src/components/home/tag@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/tag@2x.png
--------------------------------------------------------------------------------
/src/components/home/tag@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/tag@3x.png
--------------------------------------------------------------------------------
/src/common/fonts/music-icon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.eot
--------------------------------------------------------------------------------
/src/common/fonts/music-icon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.ttf
--------------------------------------------------------------------------------
/src/common/fonts/music-icon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.woff
--------------------------------------------------------------------------------
/src/components/home/edit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/edit@2x.png
--------------------------------------------------------------------------------
/src/components/home/edit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/edit@3x.png
--------------------------------------------------------------------------------
/src/components/home/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/logo@2x.png
--------------------------------------------------------------------------------
/src/components/home/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/logo@3x.png
--------------------------------------------------------------------------------
/dist/static/img/book@3x.f2655e5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/book@3x.f2655e5.png
--------------------------------------------------------------------------------
/dist/static/img/data@3x.46226f5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/data@3x.46226f5.png
--------------------------------------------------------------------------------
/dist/static/img/logo@2x.91bbab7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/logo@2x.91bbab7.png
--------------------------------------------------------------------------------
/dist/static/img/logo@3x.6eaf066.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/logo@3x.6eaf066.png
--------------------------------------------------------------------------------
/dist/static/img/talk@2x.f422c40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/talk@2x.f422c40.png
--------------------------------------------------------------------------------
/dist/static/img/talk@3x.b813a7c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/talk@3x.b813a7c.png
--------------------------------------------------------------------------------
/src/components/editor/book@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/book@2x.png
--------------------------------------------------------------------------------
/src/components/editor/book@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/book@3x.png
--------------------------------------------------------------------------------
/src/components/editor/data@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/data@2x.png
--------------------------------------------------------------------------------
/src/components/editor/data@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/data@3x.png
--------------------------------------------------------------------------------
/src/components/editor/paper@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/paper@2x.png
--------------------------------------------------------------------------------
/src/components/editor/paper@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/paper@3x.png
--------------------------------------------------------------------------------
/src/components/editor/talk@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/talk@2x.png
--------------------------------------------------------------------------------
/src/components/editor/talk@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/talk@3x.png
--------------------------------------------------------------------------------
/src/components/home/delete@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/delete@2x.png
--------------------------------------------------------------------------------
/src/components/home/delete@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/delete@3x.png
--------------------------------------------------------------------------------
/dist/static/img/paper@3x.7e10509.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/paper@3x.7e10509.png
--------------------------------------------------------------------------------
/src/components/navigation/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/navigation/logo@2x.png
--------------------------------------------------------------------------------
/src/components/navigation/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/navigation/logo@3x.png
--------------------------------------------------------------------------------
/src/components/star/star24_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_off@3x.png
--------------------------------------------------------------------------------
/src/components/star/star24_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_on@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_off@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_on@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_off@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_off@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_off@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_off@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_on@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_on@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_on@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_on@3x.png
--------------------------------------------------------------------------------
/src/components/star/star24_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star24_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_half@3x.png
--------------------------------------------------------------------------------
/src/components/star/star36_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star36_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_half@3x.png
--------------------------------------------------------------------------------
/src/components/star/star48_half@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_half@2x.png
--------------------------------------------------------------------------------
/src/components/star/star48_half@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_half@3x.png
--------------------------------------------------------------------------------
/src/components/user/authentication.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/user/authentication.png
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var prodEnv = require('./prod.env')
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | })
7 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | npm-debug.log*
4 | yarn-debug.log*
5 | yarn-error.log*
6 |
7 | # Editor directories and files
8 | .idea
9 | *.suo
10 | *.ntvs*
11 | *.njsproj
12 | *.sln
13 |
14 | static/avatars/*.png
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserslist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/common/stylus/base.styl:
--------------------------------------------------------------------------------
1 | @import "variable.styl"
2 |
3 | body, html
4 | line-height: 1
5 | font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback'
6 | user-select: none
7 | -webkit-tap-highlight-color: transparent
8 | background: $color-background
9 | color: $color-text
--------------------------------------------------------------------------------
/src/store/state.js:
--------------------------------------------------------------------------------
1 | import { loadToken, loadTimestamp, loadUid, loadUser } from 'common/js/cache'
2 |
3 | const state = {
4 | token: loadToken(),
5 | timestamp: loadTimestamp(),
6 | uid: loadUid(),
7 | user: loadUser(),
8 | philosopherList: [],
9 | philosopher: {},
10 | listRefresh: 0
11 | }
12 |
13 | export default state
14 |
--------------------------------------------------------------------------------
/src/common/js/user.js:
--------------------------------------------------------------------------------
1 | export default class User {
2 | constructor ({id, username, password, sex, school, className, phoneNumber, state}) {
3 | this.id = id
4 | this.username = username
5 | this.password = ''
6 | this.sex = sex
7 | this.school = school
8 | this.className = className
9 | this.phoneNumber = phoneNumber
10 | this.state = state
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/store/mutation-types.js:
--------------------------------------------------------------------------------
1 | export const SET_TOKEN = 'SET_TOKEN'
2 |
3 | export const SET_TIMESTAMP = 'SET_TIMESTAMP'
4 |
5 | export const SET_UID = 'SET_UID'
6 |
7 | export const SET_USER = 'SET_USER'
8 |
9 | export const SET_PHILOSOPHERLIST = 'SET_PHILOSOPHERLIST'
10 |
11 | export const SET_PHILOSOPHER = 'SET_PHILOSOPHER'
12 |
13 | export const SET_LISTREFRESH = 'SET_LISTREFRESH'
14 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-runtime"],
12 | "env": {
13 | "test": {
14 | "presets": ["env", "stage-2"],
15 | "plugins": ["istanbul"]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/store/getters.js:
--------------------------------------------------------------------------------
1 | export const token = state => state.token
2 |
3 | export const timestamp = state => state.timestamp
4 |
5 | export const uid = state => state.uid
6 |
7 | export const user = state => state.user
8 |
9 | export const philosopherList = state => state.philosopherList
10 |
11 | export const philosopher = state => state.philosopher
12 |
13 | export const listRefresh = state => state.listRefresh
14 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 | Sophia: 哲学知识共享社区
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
19 |
20 |
22 |
--------------------------------------------------------------------------------
/src/common/stylus/mixin.styl:
--------------------------------------------------------------------------------
1 | border-1px($color)
2 | position: relative
3 | &:after
4 | display: block
5 | position: absolute
6 | left: 0
7 | bottom: 0
8 | width: 100%
9 | border-top: 1px solid $color
10 | content: ' '
11 |
12 | border-none()
13 | &:after
14 | display: none
15 |
16 | bg-image($url)
17 | background-image: url($url + "@2x.png")
18 | @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3)
19 | background-image: url($url + "@3x.png")
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import * as actions from './actions'
4 | import * as getters from './getters'
5 | import state from './state'
6 | import mutations from './mutations'
7 | import createLogger from 'vuex/dist/logger'
8 |
9 | Vue.use(Vuex)
10 |
11 | const debug = process.env.NODE_ENV !== 'production'
12 |
13 | export default new Vuex.Store({
14 | actions,
15 | getters,
16 | state,
17 | mutations,
18 | strict: debug,
19 | plugins: debug ? [createLogger()] : []
20 | })
21 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 | Philosopher
--------------------------------------------------------------------------------
/src/api/user.js:
--------------------------------------------------------------------------------
1 | import jsonp from 'common/js/jsonp'
2 | import {HOST} from 'common/js/config'
3 |
4 | export function login(params) {
5 | const url = HOST + '/users/login'
6 | return jsonp(url, params)
7 | }
8 |
9 | export function register(params) {
10 | const url = HOST + '/users/register'
11 | return jsonp(url, params)
12 | }
13 |
14 | export function code(params) {
15 | const url = HOST + '/util/code'
16 | return jsonp(url, params)
17 | }
18 |
19 | export function updateFace(params) {
20 | const url = HOST + '/users/update_face'
21 | return jsonp(url, params)
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import 'babel-polyfill'
2 | import Vue from 'vue'
3 | import App from './App'
4 | import router from './router'
5 | import fastclick from 'fastclick'
6 | import VueLazyload from 'vue-lazyload'
7 | import store from './store'
8 | import VueSweetAlert from 'vue-sweetalert'
9 |
10 | import 'common/stylus/index.styl'
11 |
12 | fastclick.attach(document.body)
13 |
14 | Vue.use(VueLazyload, {
15 | loading: require('common/image/default.png')
16 | })
17 | Vue.use(VueSweetAlert)
18 |
19 | /* eslint-disable no-new */
20 | new Vue({
21 | el: '#app',
22 | router,
23 | store,
24 | render: h => h(App)
25 | })
26 |
--------------------------------------------------------------------------------
/src/store/actions.js:
--------------------------------------------------------------------------------
1 | import * as types from './mutation-types'
2 | import {saveToken, saveTimestamp, saveUid, saveUser} from 'common/js/cache'
3 |
4 | export const saveLogin = function ({commit}, data) {
5 | commit(types.SET_TOKEN, saveToken(data.token))
6 | commit(types.SET_TIMESTAMP, saveTimestamp(data.timestamp))
7 | commit(types.SET_UID, saveUid(data.uid))
8 | commit(types.SET_USER, saveUser(data.user))
9 | }
10 |
11 | export const clearLogin = function ({commit}) {
12 | commit(types.SET_TOKEN, '')
13 | commit(types.SET_TIMESTAMP, '')
14 | commit(types.SET_UID, '')
15 | commit(types.SET_USER, {})
16 | }
17 |
--------------------------------------------------------------------------------
/src/common/stylus/variable.styl:
--------------------------------------------------------------------------------
1 | // 颜色定义规范
2 | $color-background = #222
3 | $color-background-d = rgba(0, 0, 0, 0.3)
4 | $color-highlight-background = #333
5 | $color-dialog-background = #666
6 | $color-theme = #ffcd32
7 | $color-theme-d = rgba(255, 205, 49, 0.5)
8 | $color-sub-theme = #d93f30
9 | $color-text = #333
10 | $color-text-d = rgba(66, 185, 131, 0.8)
11 | $color-text-l = rgba(66, 185, 131, 0.5)
12 | $color-text-ll = rgba(66, 185, 131, 0.3)
13 |
14 | //字体定义规范
15 | $font-size-small-s = 10px
16 | $font-size-small = 12px
17 | $font-size-medium = 14px
18 | $font-size-medium-x = 16px
19 | $font-size-large = 18px
20 | $font-size-large-x = 22px
21 |
--------------------------------------------------------------------------------
/src/common/js/util.js:
--------------------------------------------------------------------------------
1 | function getRandomInt(min, max) {
2 | return Math.floor(Math.random() * (max - min + 1) + min)
3 | }
4 |
5 | export function shuffle(arr) {
6 | let _arr = arr.slice()
7 | for (let i = 0; i < _arr.length; i++) {
8 | let j = getRandomInt(0, i)
9 | let t = _arr[i]
10 | _arr[i] = _arr[j]
11 | _arr[j] = t
12 | }
13 | return _arr
14 | }
15 |
16 | export function debounce(func, delay) {
17 | let timer
18 |
19 | return function (...args) {
20 | if (timer) {
21 | clearTimeout(timer)
22 | }
23 | timer = setTimeout(() => {
24 | func.apply(this, args)
25 | }, delay)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/common/js/jsonp.js:
--------------------------------------------------------------------------------
1 | import originJsonp from 'jsonp'
2 |
3 | export default function jsonp(url, data, option) {
4 | url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
5 |
6 | return new Promise((resolve, reject) => {
7 | originJsonp(url, option, (err, data) => {
8 | if (!err) {
9 | resolve(data)
10 | } else {
11 | reject(err)
12 | }
13 | })
14 | })
15 | }
16 |
17 | export function param(data) {
18 | let url = ''
19 | for (let k in data) {
20 | let value = data[k] !== undefined ? data[k] : ''
21 | url += '&' + k + '=' + encodeURIComponent(value)
22 | }
23 | return url ? url.substring(1) : ''
24 | }
25 |
--------------------------------------------------------------------------------
/src/base/loading/loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
{{title}}
5 |
6 |
7 |
17 |
28 |
--------------------------------------------------------------------------------
/src/store/mutations.js:
--------------------------------------------------------------------------------
1 | import * as types from './mutation-types'
2 |
3 | const mutations = {
4 | [types.SET_TOKEN](state, token) {
5 | state.token = token
6 | },
7 | [types.SET_TIMESTAMP](state, timestamp) {
8 | state.timestamp = timestamp
9 | },
10 | [types.SET_UID](state, uid) {
11 | state.uid = uid
12 | },
13 | [types.SET_USER](state, user) {
14 | state.user = user
15 | },
16 | [types.SET_PHILOSOPHERLIST](state, philosopherList) {
17 | state.philosopherList = philosopherList
18 | },
19 | [types.SET_PHILOSOPHER](state, philosopher) {
20 | state.philosopher = philosopher
21 | },
22 | [types.SET_LISTREFRESH](state, listRefresh) {
23 | state.listRefresh = listRefresh
24 | }
25 | }
26 |
27 | export default mutations
28 |
--------------------------------------------------------------------------------
/.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 | 'space-before-function-paren': 0
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/common/js/cache.js:
--------------------------------------------------------------------------------
1 | import storage from 'good-storage'
2 |
3 | const TOKEN_KEY = '__token__'
4 | const TIMESTAMP_KEY = '__timestamp__'
5 | const UID_KEY = '__uid__'
6 | const USER_KEY = '__user__'
7 |
8 | export function saveToken(token) {
9 | storage.set(TOKEN_KEY, token)
10 | return token
11 | }
12 |
13 | export function loadToken() {
14 | return storage.get(TOKEN_KEY, [])
15 | }
16 |
17 | export function saveTimestamp(timestamp) {
18 | storage.set(TIMESTAMP_KEY, timestamp)
19 | return timestamp
20 | }
21 |
22 | export function loadTimestamp() {
23 | return storage.get(TIMESTAMP_KEY, [])
24 | }
25 |
26 | export function saveUid(uid) {
27 | storage.set(UID_KEY, uid)
28 | return uid
29 | }
30 |
31 | export function loadUid() {
32 | return storage.get(UID_KEY, [])
33 | }
34 |
35 | export function saveUser(user) {
36 | storage.set(USER_KEY, user)
37 | return user
38 | }
39 |
40 | export function loadUser() {
41 | return storage.get(USER_KEY, [])
42 | }
43 |
44 | export function clearCache() {
45 | return storage.clear()
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 |
4 | const Home = (resolve) => {
5 | import('components/home/home').then((module) => {
6 | resolve(module)
7 | })
8 | }
9 |
10 | const User = (resolve) => {
11 | import('components/user/user').then((module) => {
12 | resolve(module)
13 | })
14 | }
15 |
16 | const Creation = (resolve) => {
17 | import('components/creation/creation').then((module) => {
18 | resolve(module)
19 | })
20 | }
21 |
22 | const Editor = (resolve) => {
23 | import('components/editor/editor').then((module) => {
24 | resolve(module)
25 | })
26 | }
27 |
28 | Vue.use(Router)
29 |
30 | export default new Router({
31 | routes: [
32 | {
33 | path: '/',
34 | redirect: '/home'
35 | },
36 | {
37 | path: '/home',
38 | component: Home
39 | },
40 | {
41 | path: '/user',
42 | component: User
43 | },
44 | {
45 | path: '/creation',
46 | component: Creation
47 | },
48 | {
49 | path: '/editor',
50 | component: Editor
51 | }
52 | ]
53 | })
54 |
--------------------------------------------------------------------------------
/src/common/js/http.js:
--------------------------------------------------------------------------------
1 | export function get (url) {
2 | return new Promise((resolve, reject) => {
3 | fetch(url)
4 | .then(response => response.json())
5 | .then(result => {
6 | resolve(result)
7 | })
8 | .catch(error => {
9 | reject(error)
10 | })
11 | })
12 | }
13 | export function post (url, data) {
14 | return new Promise((resolve, reject) => {
15 | fetch(url, {
16 | method: 'POST',
17 | headers: {
18 | 'Accept': 'application/json',
19 | 'Content-Type': 'application/x-www-form-urlencoded'
20 | },
21 | body: changeData(data)
22 | })
23 | .then(response => response.json())
24 | .then(result => {
25 | resolve(result)
26 | })
27 | .catch(error => {
28 | reject(error)
29 | })
30 | })
31 | }
32 |
33 | function changeData (obj) {
34 | let prop = ''
35 | let str = ''
36 | let i = 0
37 | for (prop in obj) {
38 | if (!prop) {
39 | return
40 | }
41 | if (i === 0) {
42 | str += prop + '=' + obj[prop]
43 | } else {
44 | str += '&' + prop + '=' + obj[prop]
45 | }
46 | i++
47 | }
48 | return str
49 | }
50 |
--------------------------------------------------------------------------------
/src/components/tab/tab.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 主页
5 |
6 |
7 | 记录
8 |
9 |
10 | 统计
11 |
12 |
13 | 我的
14 |
15 |
16 |
17 |
18 |
21 |
22 |
42 |
--------------------------------------------------------------------------------
/src/common/js/dom.js:
--------------------------------------------------------------------------------
1 | export function hasClass(el, className) {
2 | let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')
3 | return reg.test(el.className)
4 | }
5 |
6 | export function addClass(el, className) {
7 | if (hasClass(el, className)) {
8 | return
9 | }
10 |
11 | let newClass = el.className.split(' ')
12 | newClass.push(className)
13 | el.className = newClass.join(' ')
14 | }
15 |
16 | export function getData(el, name, val) {
17 | const prefix = 'data-'
18 | if (val) {
19 | return el.setAttribute(prefix + name, val)
20 | }
21 | return el.getAttribute(prefix + name)
22 | }
23 |
24 | let elementStyle = document.createElement('div').style
25 |
26 | let vendor = (() => {
27 | let transformNames = {
28 | webkit: 'webkitTransform',
29 | Moz: 'MozTransform',
30 | O: 'OTransform',
31 | ms: 'msTransform',
32 | standard: 'transform'
33 | }
34 |
35 | for (let key in transformNames) {
36 | if (elementStyle[transformNames[key]] !== undefined) {
37 | return key
38 | }
39 | }
40 |
41 | return false
42 | })()
43 |
44 | export function prefixStyle(style) {
45 | if (vendor === false) {
46 | return false
47 | }
48 |
49 | if (vendor === 'standard') {
50 | return style
51 | }
52 |
53 | return vendor + style.charAt(0).toUpperCase() + style.substr(1)
54 | }
55 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sophia:哲学知识共享社区
2 |
3 | > * 线上地址:[https://sopher.group](https://sopher.group)
4 |
5 | 
6 |
7 | ## Platform
8 |
9 | 1. [Chrome App 下载](https://chrome.google.com/webstore/detail/sophia/fdcjoploijfcbdkbjlnnpkianblaghmi)
10 | 2. [MacOS App 下载](http://airing.ursb.me/app/Sophia%20for%20Mac.zip)
11 | 3. [Windows 应用下载](http://airing.ursb.me/app/Sophia%20for%20Win.zip)
12 | 4. [Linux App 下载](http://airing.ursb.me/app/Sophia%20for%20Linux.zip)
13 |
14 | > 注:目前暂不适配移动端。
15 |
16 | ## GitHub
17 |
18 | * 前端:[https://github.com/airingursb/sophia](https://github.com/airingursb/sophia)
19 |
20 | * 服务端:[https://github.com/airingursb/sophia-back-end](https://github.com/airingursb/sophia-back-end)
21 |
22 | ## Technology
23 |
24 | * 前端:vue-cil + vue2 + vuex + vue-router
25 |
26 | * 服务端:express + sequelize
27 |
28 | * 服务器环境:ubuntu14.04 + nginx + mysql + nodejs + pm2
29 |
30 | ## Build Setup
31 |
32 | ``` bash
33 | # install dependencies
34 | npm install
35 |
36 | # serve with hot reload at localhost:8080
37 | npm run dev
38 |
39 | # build for production with minification
40 | npm run build
41 |
42 | # build for production and view the bundle analyzer report
43 | npm run build --report
44 | ```
45 |
46 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
47 |
--------------------------------------------------------------------------------
/src/common/stylus/reset.styl:
--------------------------------------------------------------------------------
1 | /**
2 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
3 | * http://cssreset.com
4 | */
5 | html, body, div, span, applet, object, iframe,
6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
7 | a, abbr, acronym, address, big, cite, code,
8 | del, dfn, em, img, ins, kbd, q, s, samp,
9 | small, strike, strong, sub, sup, tt, var,
10 | b, u, i, center,
11 | dl, dt, dd, ol, ul, li,
12 | fieldset, form, label, legend,
13 | table, caption, tbody, tfoot, thead, tr, th, td,
14 | article, aside, canvas, details, embed,
15 | figure, figcaption, footer, header,
16 | menu, nav, output, ruby, section, summary,
17 | time, mark, audio, video, input
18 | margin: 0
19 | padding: 0
20 | border: 0
21 | font-size: 100%
22 | font-weight: normal
23 | vertical-align: baseline
24 |
25 | /* HTML5 display-role reset for older browsers */
26 | article, aside, details, figcaption, figure,
27 | footer, header, menu, nav, section
28 | display: block
29 |
30 | body
31 | line-height: 1
32 |
33 | blockquote, q
34 | quotes: none
35 |
36 | blockquote:before, blockquote:after,
37 | q:before, q:after
38 | content: none
39 |
40 | table
41 | border-collapse: collapse
42 | border-spacing: 0
43 |
44 | /* custom */
45 |
46 | a
47 | color: #7e8c8d
48 | -webkit-backface-visibility: hidden
49 | text-decoration: none
50 |
51 | li
52 | list-style: none
53 |
54 | body
55 | -webkit-text-size-adjust: none
56 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
57 |
--------------------------------------------------------------------------------
/prod.server.js:
--------------------------------------------------------------------------------
1 | var express = require('express')
2 |
3 | var app = express()
4 | var port = process.env.PORT || '9000'
5 |
6 | var apiRoutes = express.Router()
7 | var multiparty = require('multiparty')
8 | var fs = require('fs')
9 |
10 | apiRoutes.post('/upload', function (req, res, next) {
11 | var form = new multiparty.Form({uploadDir: './static/avatars/'})
12 | form.parse(req, function (err, fields, files) {
13 | var filesTmp = JSON.stringify(files, null, 2)
14 | if (err) {
15 | console.log('parse error: ' + err)
16 | return res.json({status: 1})
17 | } else {
18 | console.log('parse files: ' + filesTmp)
19 | console.log(files)
20 | var uploadedPath = files.img[0].path
21 | var dstPath = './static/avatars/' + fields['timestamp'][0] + '.png'
22 | fs.rename(uploadedPath, dstPath, function (err) {
23 | if (err) {
24 | console.log('rename error: ' + err)
25 | return res.json({status: 1})
26 | } else {
27 | console.log('rename ok')
28 | }
29 | })
30 | }
31 | // res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
32 | // res.write('received upload:\n\n');
33 | // res.end(util.inspect({fields: fields, files: filesTmp}));
34 | return res.json({status: 0})
35 | })
36 | })
37 |
38 | app.use('/api', apiRoutes)
39 |
40 | app.use(express.static('./dist'))
41 |
42 | module.exports = app.listen(port, function (err) {
43 | if (err) {
44 | console.log(err)
45 | return
46 | }
47 | console.log('Listening at http://localhost:' + port + '\n')
48 | })
49 |
--------------------------------------------------------------------------------
/src/api/philosopher.js:
--------------------------------------------------------------------------------
1 | import jsonp from 'common/js/jsonp'
2 | import { HOST } from 'common/js/config'
3 |
4 | export function showList (params) {
5 | const url = HOST + '/philosophers/show_list'
6 | return jsonp(url, params)
7 | }
8 |
9 | export function showTags (params) {
10 | const url = HOST + '/philosophers/show_tags'
11 | return jsonp(url, params)
12 | }
13 |
14 | export function showDetail (params) {
15 | const url = HOST + '/philosophers/show_detail'
16 | return jsonp(url, params)
17 | }
18 |
19 | export function search (params) {
20 | const url = HOST + '/philosophers/search'
21 | return jsonp(url, params)
22 | }
23 |
24 | export function addPhilosopher (params) {
25 | const url = HOST + '/philosophers/add_philosopher'
26 | return jsonp(url, params)
27 | }
28 |
29 | export function addIdea (params) {
30 | const url = HOST + '/philosophers/add_idea'
31 | return jsonp(url, params)
32 | }
33 |
34 | export function addWorks (params) {
35 | const url = HOST + '/philosophers/add_works'
36 | return jsonp(url, params)
37 | }
38 |
39 | export function addPaper (params) {
40 | const url = HOST + '/philosophers/add_paper'
41 | return jsonp(url, params)
42 | }
43 |
44 | export function addData (params) {
45 | const url = HOST + '/philosophers/add_data'
46 | return jsonp(url, params)
47 | }
48 |
49 | export function addComment (params) {
50 | const url = HOST + '/philosophers/add_comment'
51 | return jsonp(url, params)
52 | }
53 |
54 | export function addTag (params) {
55 | const url = HOST + '/philosophers/add_tag'
56 | return jsonp(url, params)
57 | }
58 |
--------------------------------------------------------------------------------
/dist/static/js/manifest.4e9eae02e3aee9fca6db.js:
--------------------------------------------------------------------------------
1 | !function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,d=0,s=[];d
2 |
3 |
4 |
5 |
Sophia
6 |
![]()
9 |
10 |
11 |
12 |
13 |
39 |
40 |
76 |
--------------------------------------------------------------------------------
/src/common/stylus/icon.styl:
--------------------------------------------------------------------------------
1 | @font-face
2 | font-family: 'music-icon'
3 | src: url('../fonts/music-icon.eot?2qevqt')
4 | src: url('../fonts/music-icon.eot?2qevqt#iefix') format('embedded-opentype'),
5 | url('../fonts/music-icon.ttf?2qevqt') format('truetype'),
6 | url('../fonts/music-icon.woff?2qevqt') format('woff'),
7 | url('../fonts/music-icon.svg?2qevqt#music-icon') format('svg')
8 | font-weight: normal
9 | font-style: normal
10 |
11 | [class^="icon-"], [class*=" icon-"]
12 | /* use !important to prevent issues with browser extensions that change fonts */
13 | font-family: 'music-icon' !important
14 | speak: none
15 | font-style: normal
16 | font-weight: normal
17 | font-variant: normal
18 | text-transform: none
19 | line-height: 1
20 |
21 | /* Better Font Rendering =========== */
22 | -webkit-font-smoothing: antialiased
23 | -moz-osx-font-smoothing: grayscale
24 |
25 | .icon-ok:before
26 | content: "\e900"
27 |
28 | .icon-close:before
29 | content: "\e901"
30 |
31 | .icon-add:before
32 | content: "\e902"
33 |
34 | .icon-play-mini:before
35 | content: "\e903"
36 |
37 | .icon-playlist:before
38 | content: "\e904"
39 |
40 | .icon-music:before
41 | content: "\e905"
42 |
43 | .icon-search:before
44 | content: "\e906"
45 |
46 | .icon-clear:before
47 | content: "\e907"
48 |
49 | .icon-delete:before
50 | content: "\e908"
51 |
52 | .icon-favorite:before
53 | content: "\e909"
54 |
55 | .icon-not-favorite:before
56 | content: "\e90a"
57 |
58 | .icon-pause:before
59 | content: "\e90b"
60 |
61 | .icon-play:before
62 | content: "\e90c"
63 |
64 | .icon-prev:before
65 | content: "\e90d"
66 |
67 | .icon-loop:before
68 | content: "\e90e"
69 |
70 | .icon-sequence:before
71 | content: "\e90f"
72 |
73 | .icon-random:before
74 | content: "\e910"
75 |
76 | .icon-back:before
77 | content: "\e911"
78 |
79 | .icon-mine:before
80 | content: "\e912"
81 |
82 | .icon-next:before
83 | content: "\e913"
84 |
85 | .icon-dismiss:before
86 | content: "\e914"
87 |
88 | .icon-pause-mini:before
89 | content: "\e915"
90 |
--------------------------------------------------------------------------------
/src/components/search/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
63 |
64 |
92 |
--------------------------------------------------------------------------------
/src/components/star/star.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
45 |
46 |
97 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "philosopher",
3 | "version": "1.0.0",
4 | "description": "philosopher",
5 | "author": "Airing ",
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 | "babel-runtime": "^6.0.0",
15 | "better-scroll": "^0.3.3",
16 | "fastclick": "^1.0.6",
17 | "good-storage": "^1.0.1",
18 | "jsonp": "^0.2.1",
19 | "multiparty": "^4.1.3",
20 | "sha1": "^1.1.1",
21 | "sweetalert2": "^6.6.6",
22 | "vue": "^2.3.3",
23 | "vue-image-crop-upload": "^1.3.14",
24 | "vue-lazyload": "^1.0.3",
25 | "vue-router": "^2.6.0",
26 | "vue-sweetalert": "^0.1.18",
27 | "vuex": "^2.3.1"
28 | },
29 | "devDependencies": {
30 | "autoprefixer": "^6.7.2",
31 | "babel-core": "^6.22.1",
32 | "babel-eslint": "^7.1.1",
33 | "babel-loader": "^6.2.10",
34 | "babel-plugin-transform-runtime": "^6.22.0",
35 | "babel-polyfill": "^6.23.0",
36 | "babel-preset-env": "^1.3.2",
37 | "babel-preset-stage-2": "^6.22.0",
38 | "babel-register": "^6.22.0",
39 | "chalk": "^1.1.3",
40 | "connect-history-api-fallback": "^1.3.0",
41 | "copy-webpack-plugin": "^4.0.1",
42 | "css-loader": "^0.28.0",
43 | "eslint": "^3.19.0",
44 | "eslint-config-standard": "^6.2.1",
45 | "eslint-friendly-formatter": "^2.0.7",
46 | "eslint-loader": "^1.7.1",
47 | "eslint-plugin-html": "^2.0.0",
48 | "eslint-plugin-promise": "^3.4.0",
49 | "eslint-plugin-standard": "^2.0.1",
50 | "eventsource-polyfill": "^0.9.6",
51 | "express": "^4.14.1",
52 | "extract-text-webpack-plugin": "^2.0.0",
53 | "file-loader": "^0.11.1",
54 | "friendly-errors-webpack-plugin": "^1.1.3",
55 | "html-webpack-plugin": "^2.28.0",
56 | "http-proxy-middleware": "^0.17.3",
57 | "opn": "^4.0.2",
58 | "optimize-css-assets-webpack-plugin": "^1.3.0",
59 | "ora": "^1.2.0",
60 | "rimraf": "^2.6.0",
61 | "semver": "^5.3.0",
62 | "shelljs": "^0.7.6",
63 | "stylus": "^0.54.5",
64 | "stylus-loader": "^2.1.1",
65 | "url-loader": "^0.5.8",
66 | "vconsole": "^2.5.2",
67 | "vue-loader": "^11.3.4",
68 | "vue-style-loader": "^2.0.5",
69 | "vue-template-compiler": "^2.3.3",
70 | "webpack": "^2.3.3",
71 | "webpack-bundle-analyzer": "^2.2.1",
72 | "webpack-dev-middleware": "^1.10.0",
73 | "webpack-hot-middleware": "^2.18.0",
74 | "webpack-merge": "^4.1.0"
75 | },
76 | "engines": {
77 | "node": ">= 4.0.0",
78 | "npm": ">= 3.0.0"
79 | },
80 | "browserslist": [
81 | "> 1%",
82 | "last 2 versions",
83 | "not ie <= 8"
84 | ]
85 | }
86 |
--------------------------------------------------------------------------------
/src/base/scroll/scroll.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
109 |
110 |
113 |
--------------------------------------------------------------------------------
/src/components/creation/creation.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
68 |
69 |
115 |
--------------------------------------------------------------------------------
/src/components/user/user.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
![]()
6 |
18 |
19 |
20 | 姓名:{{this.user.username}}
21 |
22 |
23 | 性别:{{this.user.sex === 0 ? '男' : '女'}}
24 | 学校:{{this.user.school}}
25 | 班级:{{this.user.className}}
26 | 退出登录
27 |
28 |
29 |
30 |
31 |
115 |
116 |
164 |
--------------------------------------------------------------------------------
/src/base/slider/slider.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
151 |
152 |
194 |
--------------------------------------------------------------------------------
/dist/static/css/app.3a2eca7f7653faac7482aa6b921f0077.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./src/components/navigation/navigation.vue","webpack:///./src/common/stylus/src/common/stylus/reset.styl","webpack:///./src/common/stylus/index.styl","webpack:///./src/common/stylus/src/common/stylus/base.styl","webpack:///./src/common/stylus/src/common/stylus/icon.styl"],"names":[],"mappings":"AACA,6BACE,eACA,MACA,OACA,WACA,YACA,8BACA,YAAc,CAEhB,oCACE,gBAAkB,CAEpB,0CACE,qBACA,WACA,YACA,+CACA,0BACA,2BAA6B,CAE/B,qEACA,0CACI,8CAAqC,CACxC,CAED,0CACE,qBACA,oBACA,mBACA,eACA,WACA,0BACA,gBAAkB,CAEpB,qCACE,YACA,WACA,YACA,kBAAoB,CACrB,cCpCD,0ZAaE,SACA,UACA,SACA,eACA,gBACA,wBCiED,uED5DC,cCwED,KDrEC,cCwED,aDrEC,YCyED,oDDrEC,aC2ED,MDxEC,yBACA,iBC2ED,EDtEC,cACA,mCACA,qBCyED,GDtEC,gBCyED,KDtEC,8BACA,0CErDF,UACE,cACA,yEACA,iBACA,wCACA,gBACA,WCRF,WACE,uBACA,kCACA,wMAIA,gBACA,kBAEF,iCAEE,iCACA,WACA,kBACA,gBACA,oBACA,oBACA,cAGA,mCACA,kCAEF,gBACE,gBAEF,mBACE,gBAEF,iBACE,gBAEF,uBACE,gBAEF,sBACE,gBAEF,mBACE,gBAEF,oBACE,gBAEF,mBACE,gBAEF,oBACE,gBAEF,sBACE,gBAEF,0BACE,gBAEF,mBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,sBACE,gBAEF,oBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,qBACE,gBAEF,wBACE,gBFwID","file":"static/css/app.3a2eca7f7653faac7482aa6b921f0077.css","sourcesContent":["\n.navigation[data-v-fca0deae] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n background: rgba(47,47,47,0.98);\n z-index: 9996;\n}\n.navigation .title[data-v-fca0deae] {\n margin: 10px 20px;\n}\n.navigation .title .logo[data-v-fca0deae] {\n display: inline-block;\n width: 30px;\n height: 30px;\n background-image: url(\"logo@2x.png\");\n background-size: 30px 30px;\n background-repeat: no-repeat;\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) {\n.navigation .title .logo[data-v-fca0deae] {\n background-image: url(\"logo@3x.png\");\n}\n}\n.navigation .title .name[data-v-fca0deae] {\n display: inline-block;\n margin: 6px 0 0 10px;\n vertical-align: top;\n font-size: 18px;\n color: #fff;\n font-family: \"Comic Sans MS\";\n line-height: 18px;\n}\n.navigation .avatar[data-v-fca0deae] {\n float: right;\n width: 30px;\n height: 30px;\n border-radius: 30px;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/navigation/navigation.vue","/**\n * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)\n * http://cssreset.com\n */\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video, input\n margin: 0\n padding: 0\n border: 0\n font-size: 100%\n font-weight: normal\n vertical-align: baseline\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, menu, nav, section\n display: block\n\nbody\n line-height: 1\n\nblockquote, q\n quotes: none\n\nblockquote:before, blockquote:after,\nq:before, q:after\n content: none\n\ntable\n border-collapse: collapse\n border-spacing: 0\n\n/* custom */\n\na\n color: #7e8c8d\n -webkit-backface-visibility: hidden\n text-decoration: none\n\nli\n list-style: none\n\nbody\n -webkit-text-size-adjust: none\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0)\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/reset.styl","html,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo,\ninput {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-weight: normal;\n vertical-align: baseline;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nmenu,\nnav,\nsection {\n display: block;\n}\nbody {\n line-height: 1;\n}\nblockquote,\nq {\n quotes: none;\n}\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n content: none;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\na {\n color: #7e8c8d;\n -webkit-backface-visibility: hidden;\n text-decoration: none;\n}\nli {\n list-style: none;\n}\nbody {\n -webkit-text-size-adjust: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\nbody,\nhtml {\n line-height: 1;\n font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback';\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n background: #222;\n color: #333;\n}\n@font-face {\n font-family: 'music-icon';\n src: url(\"../fonts/music-icon.eot?2qevqt\");\n src: url(\"../fonts/music-icon.eot?2qevqt#iefix\") format('embedded-opentype'), url(\"../fonts/music-icon.ttf?2qevqt\") format('truetype'), url(\"../fonts/music-icon.woff?2qevqt\") format('woff'), url(\"../fonts/music-icon.svg?2qevqt#music-icon\") format('svg');\n font-weight: normal;\n font-style: normal;\n}\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n/* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'music-icon' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n/* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.icon-ok:before {\n content: \"\\e900\";\n}\n.icon-close:before {\n content: \"\\e901\";\n}\n.icon-add:before {\n content: \"\\e902\";\n}\n.icon-play-mini:before {\n content: \"\\e903\";\n}\n.icon-playlist:before {\n content: \"\\e904\";\n}\n.icon-music:before {\n content: \"\\e905\";\n}\n.icon-search:before {\n content: \"\\e906\";\n}\n.icon-clear:before {\n content: \"\\e907\";\n}\n.icon-delete:before {\n content: \"\\e908\";\n}\n.icon-favorite:before {\n content: \"\\e909\";\n}\n.icon-not-favorite:before {\n content: \"\\e90a\";\n}\n.icon-pause:before {\n content: \"\\e90b\";\n}\n.icon-play:before {\n content: \"\\e90c\";\n}\n.icon-prev:before {\n content: \"\\e90d\";\n}\n.icon-loop:before {\n content: \"\\e90e\";\n}\n.icon-sequence:before {\n content: \"\\e90f\";\n}\n.icon-random:before {\n content: \"\\e910\";\n}\n.icon-back:before {\n content: \"\\e911\";\n}\n.icon-mine:before {\n content: \"\\e912\";\n}\n.icon-next:before {\n content: \"\\e913\";\n}\n.icon-dismiss:before {\n content: \"\\e914\";\n}\n.icon-pause-mini:before {\n content: \"\\e915\";\n}\n/*# sourceMappingURL=src/common/stylus/index.css.map */\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/index.styl","@import \"variable.styl\"\n\nbody, html\n line-height: 1\n font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback'\n user-select: none\n -webkit-tap-highlight-color: transparent\n background: $color-background\n color: $color-text\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/base.styl","@font-face\n font-family: 'music-icon'\n src: url('../fonts/music-icon.eot?2qevqt')\n src: url('../fonts/music-icon.eot?2qevqt#iefix') format('embedded-opentype'),\n url('../fonts/music-icon.ttf?2qevqt') format('truetype'),\n url('../fonts/music-icon.woff?2qevqt') format('woff'),\n url('../fonts/music-icon.svg?2qevqt#music-icon') format('svg')\n font-weight: normal\n font-style: normal\n\n[class^=\"icon-\"], [class*=\" icon-\"]\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'music-icon' !important\n speak: none\n font-style: normal\n font-weight: normal\n font-variant: normal\n text-transform: none\n line-height: 1\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n.icon-ok:before\n content: \"\\e900\"\n\n.icon-close:before\n content: \"\\e901\"\n\n.icon-add:before\n content: \"\\e902\"\n\n.icon-play-mini:before\n content: \"\\e903\"\n\n.icon-playlist:before\n content: \"\\e904\"\n\n.icon-music:before\n content: \"\\e905\"\n\n.icon-search:before\n content: \"\\e906\"\n\n.icon-clear:before\n content: \"\\e907\"\n\n.icon-delete:before\n content: \"\\e908\"\n\n.icon-favorite:before\n content: \"\\e909\"\n\n.icon-not-favorite:before\n content: \"\\e90a\"\n\n.icon-pause:before\n content: \"\\e90b\"\n\n.icon-play:before\n content: \"\\e90c\"\n\n.icon-prev:before\n content: \"\\e90d\"\n\n.icon-loop:before\n content: \"\\e90e\"\n\n.icon-sequence:before\n content: \"\\e90f\"\n\n.icon-random:before\n content: \"\\e910\"\n\n.icon-back:before\n content: \"\\e911\"\n\n.icon-mine:before\n content: \"\\e912\"\n\n.icon-next:before\n content: \"\\e913\"\n\n.icon-dismiss:before\n content: \"\\e914\"\n\n.icon-pause-mini:before\n content: \"\\e915\"\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/icon.styl"],"sourceRoot":""}
--------------------------------------------------------------------------------
/src/components/editor/editor.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 添加哲学思想
7 |
8 |
9 |
10 | 添加著作
11 |
12 |
13 |
14 | 添加论文
15 |
16 |
17 |
18 | 添加相关资源
19 |
20 |
21 |
22 |
23 |
24 |
226 |
227 |
304 |
--------------------------------------------------------------------------------
/dist/static/js/app.744d9d6f59ac97d2c7f4.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([5],{100:function(n,t,e){"use strict";e.d(t,"a",function(){return o}),e.d(t,"b",function(){return i}),e.d(t,"c",function(){return r}),e.d(t,"d",function(){return u}),e.d(t,"e",function(){return s}),e.d(t,"f",function(){return A});var o="SET_TOKEN",i="SET_TIMESTAMP",r="SET_UID",u="SET_USER",s="SET_PHILOSOPHERLIST",A="SET_PHILOSOPHER"},130:function(n,t,e){"use strict";var o=e(60),i=e(365),r=function(n){e.e(0).then(e.bind(null,372)).then(function(t){n(t)})},u=function(n){e.e(1).then(e.bind(null,373)).then(function(t){n(t)})},s=function(n){e.e(3).then(e.bind(null,370)).then(function(t){n(t)})},A=function(n){e.e(2).then(e.bind(null,371)).then(function(t){n(t)})};o.a.use(i.a),t.a=new i.a({routes:[{path:"/",redirect:"/home"},{path:"/home",component:r},{path:"/user",component:u},{path:"/creation",component:s},{path:"/editor",component:A}]})},131:function(n,t,e){"use strict";var o=e(60),i=e(96),r=e(162),u=e(163),s=e(165),A=e(164),c=e(367);e.n(c);o.a.use(i.b);t.a=new i.b.Store({actions:r,getters:u,state:s.a,mutations:A.a,strict:!1,plugins:[]})},133:function(n,t){},135:function(n,t){n.exports="data:image/png;base64,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"},137:function(n,t,e){e(358);var o=e(95)(e(166),e(363),"data-v-344543de",null);n.exports=o.exports},161:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(132),i=(e.n(o),e(60)),r=e(137),u=e.n(r),s=e(130),A=e(134),c=e.n(A),a=e(136),f=e.n(a),d=e(131),p=e(138),h=e.n(p),g=e(133);e.n(g);c.a.attach(document.body),i.a.use(f.a,{loading:e(135)}),i.a.use(h.a),new i.a({el:"#app",router:s.a,store:d.a,render:function(n){return n(u.a)}})},162:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),e.d(t,"saveLogin",function(){return r});var o=e(100),i=e(99),r=function(n,t){var r=n.commit;r(o.a,e.i(i.e)(t.token)),r(o.b,e.i(i.f)(t.timestamp)),r(o.c,e.i(i.g)(t.uid)),r(o.d,e.i(i.h)(t.user))}},163:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),e.d(t,"token",function(){return o}),e.d(t,"timestamp",function(){return i}),e.d(t,"uid",function(){return r}),e.d(t,"user",function(){return u}),e.d(t,"philosopherList",function(){return s}),e.d(t,"philosopher",function(){return A});var o=function(n){return n.token},i=function(n){return n.timestamp},r=function(n){return n.uid},u=function(n){return n.user},s=function(n){return n.philosopherList},A=function(n){return n.philosopher}},164:function(n,t,e){"use strict";var o,i=e(169),r=e.n(i),u=e(100),s=(o={},r()(o,u.a,function(n,t){n.token=t}),r()(o,u.b,function(n,t){n.timestamp=t}),r()(o,u.c,function(n,t){n.uid=t}),r()(o,u.d,function(n,t){n.user=t}),r()(o,u.e,function(n,t){n.philosopherList=t}),r()(o,u.f,function(n,t){n.philosopher=t}),o);t.a=s},165:function(n,t,e){"use strict";var o=e(99),i={token:e.i(o.a)(),timestamp:e.i(o.b)(),uid:e.i(o.c)(),user:e.i(o.d)(),philosopherList:[],philosopher:{}};t.a=i},166:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(362),i=e.n(o);t.default={components:{Navigation:i.a}}},167:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(150),i=e.n(o),r=e(96);t.default={computed:i()({},e.i(r.a)(["token","user"])),methods:{selectUser:function(){0!==this.token.length&&this.$router.push({path:"/user"})},selectHome:function(){this.$router.push({path:"/home"})}}}},358:function(n,t){},359:function(n,t){},362:function(n,t,e){e(359);var o=e(95)(e(167),e(364),"data-v-fca0deae",null);n.exports=o.exports},363:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{attrs:{id:"app"},on:{touchmove:function(n){n.preventDefault()}}},[e("navigation"),n._v(" "),e("keep-alive",[e("router-view")],1)],1)},staticRenderFns:[]}},364:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"navigation"},[e("div",{staticClass:"title"},[e("span",{staticClass:"logo",on:{click:n.selectHome}}),n._v(" "),e("h1",{staticClass:"name",on:{click:n.selectHome}},[n._v("Philosopher")]),n._v(" "),e("img",{staticClass:"avatar",attrs:{src:this.user.face?this.user.face:"http://airing.ursb.me/image/cover/philosopherlogo.png"},on:{click:n.selectUser}})])])},staticRenderFns:[]}},99:function(n,t,e){"use strict";function o(n){return d.a.set(p,n),n}function i(){return d.a.get(p,[])}function r(n){return d.a.set(h,n),n}function u(){return d.a.get(h,[])}function s(n){return d.a.set(g,n),n}function A(){return d.a.get(g,[])}function c(n){return d.a.set(l,n),n}function a(){return d.a.get(l,[])}t.e=o,t.a=i,t.f=r,t.b=u,t.g=s,t.c=A,t.h=c,t.d=a;var f=e(360),d=e.n(f),p="__token__",h="__timestamp__",g="__uid__",l="__user__"}},[161]);
2 | //# sourceMappingURL=app.744d9d6f59ac97d2c7f4.js.map
--------------------------------------------------------------------------------
/dist/static/js/manifest.4e9eae02e3aee9fca6db.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///static/js/manifest.4e9eae02e3aee9fca6db.js","webpack:///webpack/bootstrap 6d728a5f6ba5e1815b1b"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","6","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","1","2","3","4","5","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"CAAS,SAAUA,GCuCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA1DA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,GAAAX,GAAAY,EAAAC,EAAAT,EAAA,EAAAU,KACQV,EAAAK,EAAAM,OAAoBX,IAC5BQ,EAAAH,EAAAL,GACAY,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAZ,IAAAU,GACAQ,OAAAC,UAAAC,eAAAd,KAAAI,EAAAV,KACAF,EAAAE,GAAAU,EAAAV,GAIA,KADAO,KAAAE,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAP,EAAA,EAAYA,EAAAO,EAAAI,OAA2BX,IACvCS,EAAAd,IAAAuB,EAAAX,EAAAP,GAGA,OAAAS,GAIA,IAAAZ,MAGAe,GACAO,EAAA,EA6BAxB,GAAAyB,EAAA,SAAAZ,GA+BA,QAAAa,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAf,EAAAJ,EACA,KAAAmB,IACAA,GACAA,EAAA,MAAAC,OAAA,iBAAApB,EAAA,aAEAI,EAAAJ,OAAAqB,IAvCA,GAAAC,GAAAlB,EAAAJ,EACA,QAAAsB,EACA,UAAAC,SAAA,SAAAC,GAA0CA,KAI1C,IAAAF,EACA,MAAAA,GAAA,EAIA,IAAAG,GAAA,GAAAF,SAAA,SAAAC,EAAAE,GACAJ,EAAAlB,EAAAJ,IAAAwB,EAAAE,IAEAJ,GAAA,GAAAG,CAGA,IAAAE,GAAAC,SAAAC,qBAAA,WACAf,EAAAc,SAAAE,cAAA,SACAhB,GAAAiB,KAAA,kBACAjB,EAAAkB,QAAA,QACAlB,EAAAmB,OAAA,EACAnB,EAAAI,QAAA,KAEA/B,EAAA+C,IACApB,EAAAqB,aAAA,QAAAhD,EAAA+C,IAEApB,EAAAsB,IAAAjD,EAAAkD,EAAA,aAAArC,EAAA,KAAwEsC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,wBAAkK3C,GAAA,KAC1O,IAAAkB,GAAA0B,WAAA/B,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAc,EAAAkB,YAAA/B,GAEAW,GAIAtC,EAAA2D,EAAA5D,EAGAC,EAAA4D,EAAA1D,EAGAF,EAAAK,EAAA,SAAAwD,GAA2C,MAAAA,IAG3C7D,EAAA8D,EAAA,SAAA3D,EAAA4D,EAAAC,GACAhE,EAAAiE,EAAA9D,EAAA4D,IACA5C,OAAA+C,eAAA/D,EAAA4D,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAhE,EAAAsE,EAAA,SAAAlE,GACA,GAAA4D,GAAA5D,KAAAmE,WACA,WAA2B,MAAAnE,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAA8D,EAAAE,EAAA,IAAAA,GACAA,GAIAhE,EAAAiE,EAAA,SAAAO,EAAAC,GAAsD,MAAAtD,QAAAC,UAAAC,eAAAd,KAAAiE,EAAAC,IAGtDzE,EAAAkD,EAAA,IAGAlD,EAAA0E,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"static/js/manifest.4e9eae02e3aee9fca6db.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t6: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"1df99d4dc9159fc89686\",\"1\":\"5cce9b65d007edcdad47\",\"2\":\"1b2ff7728b78ef15c317\",\"3\":\"e0c7256b65cd3c34ae73\",\"4\":\"9e860e10a2289eea7f2b\",\"5\":\"744d9d6f59ac97d2c7f4\"}[chunkId] + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// static/js/manifest.4e9eae02e3aee9fca6db.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t6: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"1df99d4dc9159fc89686\",\"1\":\"5cce9b65d007edcdad47\",\"2\":\"1b2ff7728b78ef15c317\",\"3\":\"e0c7256b65cd3c34ae73\",\"4\":\"9e860e10a2289eea7f2b\",\"5\":\"744d9d6f59ac97d2c7f4\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6d728a5f6ba5e1815b1b"],"sourceRoot":""}
--------------------------------------------------------------------------------
/dist/static/js/3.e0c7256b65cd3c34ae73.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([3],{370:function(e,t,n){n(467);var r=n(95)(n(424),n(519),"data-v-d70a5e6e",null);e.exports=r.exports},374:function(e,t,n){var r=n(152)("wks"),o=n(149),i=n(61).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},375:function(e,t){e.exports={}},376:function(e,t,n){var r=n(92).f,o=n(141),i=n(374)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},377:function(e,t){e.exports=!0},378:function(e,t,n){var r=n(142),o=n(374)("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=a(t=Object(e),o))?n:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},379:function(e,t,n){e.exports=n(61).document&&document.documentElement},380:function(e,t,n){"use strict";var r=n(377),o=n(93),i=n(386),a=n(140),s=n(141),c=n(375),u=n(397),f=n(376),l=n(402),p=n(374)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,v,A,m,g){u(n,t,v);var y,x,w,b=function(e){if(!d&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",B="values"==A,_=!1,k=e.prototype,E=k[p]||k["@@iterator"]||A&&k[A],T=E||b(A),S=A?B?b("entries"):T:void 0,j="Array"==t?k.entries||E:E;if(j&&(w=l(j.call(new e)))!==Object.prototype&&(f(w,C,!0),r||s(w,p)||a(w,p,h)),B&&E&&"values"!==E.name&&(_=!0,T=function(){return E.call(this)}),r&&!g||!d&&!_&&k[p]||a(k,p,T),c[t]=T,c[C]=h,A)if(y={values:B?T:b("values"),keys:m?T:b("keys"),entries:S},g)for(x in y)x in k||i(k,x,y[x]);else o(o.P+o.F*(d||_),t,y);return y}},381:function(e,t,n){var r,o,i,a=n(143),s=n(394),c=n(379),u=n(145),f=n(61),l=f.process,p=f.setImmediate,d=f.clearImmediate,h=f.MessageChannel,v=0,A={},m=function(){var e=+this;if(A.hasOwnProperty(e)){var t=A[e];delete A[e],t()}},g=function(e){m.call(e.data)};p&&d||(p=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return A[++v]=function(){s("function"==typeof e?e:Function(e),t)},r(v),v},d=function(e){delete A[e]},"process"==n(142)(l)?r=function(e){l.nextTick(a(m,e,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=g,r=a(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(e){f.postMessage(e+"","*")},f.addEventListener("message",g,!1)):r="onreadystatechange"in u("script")?function(e){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),m.call(e)}}:function(e){setTimeout(a(m,e,1),0)}),e.exports={set:p,clear:d}},382:function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r="http://localhost:9001"},383:function(e,t,n){"use strict";function r(e,t,n){return e+=(e.indexOf("?")<0?"?":"&")+o(t),new a.a(function(t,r){c()(e,n,function(e,n){e?r(e):t(n)})})}function o(e){var t="";for(var n in e){var r=void 0!==e[n]?e[n]:"";t+="&"+n+"="+encodeURIComponent(r)}return t?t.substring(1):""}t.a=r;var i=n(384),a=n.n(i),s=n(412),c=n.n(s)},384:function(e,t,n){e.exports={default:n(390),__esModule:!0}},385:function(e,t,n){var r=n(139),o=n(401),i=n(151),a=n(147)("IE_PROTO"),s=function(){},c=function(){var e,t=n(145)("iframe"),r=i.length;for(t.style.display="none",n(379).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("
466 |
467 |
820 |
--------------------------------------------------------------------------------