diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..41789ca --- /dev/null +++ b/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": ["es2015", "stage-2"], + "plugins": ["transform-runtime"], + "comments": false +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..fb7ce66 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,180 @@ +{ + "env": { + "browser": true, + "node": true + }, + "ecmaFeatures": { + "arrowFunctions": true, + "destructuring": true, + "classes": true, + "defaultParams": true, + "blockBindings": true, + "modules": true, + "objectLiteralComputedProperties": true, + "objectLiteralShorthandMethods": true, + "objectLiteralShorthandProperties": true, + "restParams": true, + "spread": true, + "forOf": true, + "generators": true, + "templateStrings": true, + "superInFunctions": true, + "experimentalObjectRestSpread": true + }, + + "rules": { + "accessor-pairs": 2, + "array-bracket-spacing": 0, + "block-scoped-var": 0, + "brace-style": [2, "allman", { "allowSingleLine": true }], + "camelcase": 0, + "comma-dangle": [2, "never"], + "comma-spacing": [2, { "before": false, "after": true }], + "comma-style": [2, "last"], + "complexity": 0, + "computed-property-spacing": 0, + "consistent-return": 0, + "consistent-this": 0, + "constructor-super": 2, + "curly": [2, "multi-line"], + "default-case": 0, + "dot-location": [2, "property"], + "dot-notation": 0, + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "func-names": 0, + "func-style": 0, + "generator-star-spacing": [2, { "before": true, "after": true }], + "guard-for-in": 0, + "handle-callback-err": [2, "^(err|error)$" ], + "indent": [2, 2, { "SwitchCase": 1 }], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "linebreak-style": 0, + "lines-around-comment": 0, + "max-nested-callbacks": 0, + "new-cap": [2, { "newIsCap": true, "capIsNew": false }], + "new-parens": 2, + "newline-after-var": 0, + "no-alert": 0, + "no-array-constructor": 2, + "no-caller": 2, + "no-catch-shadow": 0, + "no-cond-assign": 2, + "no-console": 0, + "no-constant-condition": 0, + "no-continue": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-div-regex": 0, + "no-dupe-args": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-else-return": 0, + "no-empty": 0, + "no-empty-character-class": 2, + "no-empty-label": 2, + "no-eq-null": 0, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 0, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inline-comments": 0, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-lonely-if": 0, + "no-loop-func": 0, + "no-mixed-requires": 0, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [2, { "max": 1 }], + "no-native-reassign": 2, + "no-negated-in-lhs": 2, + "no-nested-ternary": 0, + "no-new": 2, + "no-new-func": 0, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-param-reassign": 0, + "no-path-concat": 0, + "no-process-env": 0, + "no-process-exit": 0, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-restricted-modules": 0, + "no-return-assign": 2, + "no-script-url": 0, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow": 0, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-sync": 0, + "no-ternary": 0, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 2, + "no-undef": 2, + "no-undef-init": 2, + "no-undefined": 0, + "no-underscore-dangle": 0, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": 2, + "no-unreachable": 2, + "no-unused-expressions": 0, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + "no-use-before-define": 0, + "no-var": 0, + "no-void": 0, + "no-warning-comments": 0, + "no-with": 2, + "object-curly-spacing": 0, + "object-shorthand": 0, + "one-var": [2, { "initialized": "never" }], + "operator-assignment": 0, + "operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": 0, + "prefer-const": 0, + "quote-props": 0, + "quotes": [2, "single", "avoid-escape"], + "radix": 2, + "semi": [2, "never"], + "semi-spacing": 0, + "sort-vars": 0, + "space-after-keywords": [2, "always"], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "always"], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!"] }], + "strict": 0, + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 2, + "vars-on-top": 0, + "wrap-iife": [2, "any"], + "wrap-regex": 0, + "yoda": [2, "never"] + } +} diff --git a/.gitignore b/.gitignore index e920c16..884e68a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,33 +1,15 @@ -# Logs +.DS_Store logs *.log npm-debug.log* - -# Runtime data pids *.pid *.seed - -# Directory for instrumented libs generated by jscoverage/JSCover lib-cov - -# Coverage directory used by tools like istanbul coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt - -# node-waf configuration .lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory +dist/ node_modules - -# Optional npm cache directory .npm - -# Optional REPL history .node_repl_history diff --git a/README.md b/README.md index 27acd30..94bf705 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,16 @@ # vue-sui-demo vue 和 sui-mobile 结合的demo,禁用了sui自带的路由,使用vue-router + +> Vue-SUI-Demo Project + +## Build Setup + +``` bash +# install dependencies +npm install + +# serve with hot reload at localhost:8080 +npm run dev + +# build for production with minification +npm run build diff --git a/build/dev-server.js b/build/dev-server.js new file mode 100644 index 0000000..31ad68f --- /dev/null +++ b/build/dev-server.js @@ -0,0 +1,31 @@ +var path = require('path') +var express = require('express') +var webpack = require('webpack') +var config = require('./webpack.dev.conf') +var favicon = require('express-favicon') + +var app = express() +var compiler = webpack(config) +app.use('/lib', express.static(path.join(__dirname, '../src/lib'))) + +app.use(favicon(path.join(__dirname, '../favicon.ico'))) +// handle fallback for HTML5 history API +app.use(require('connect-history-api-fallback')()) + +// serve webpack bundle output +app.use(require('webpack-dev-middleware')(compiler, { + noInfo: true, + publicPath: config.output.publicPath +})) + +// enable hot-reload and state-preserving +// compilation error display +app.use(require('webpack-hot-middleware')(compiler)) + +app.listen(8000, '127.0.0.1', function(err) { + if (err) { + console.log(err) + return + } + console.log('Listening at http://127.0.0.1:8000') +}) diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js new file mode 100644 index 0000000..1ca5b06 --- /dev/null +++ b/build/webpack.base.conf.js @@ -0,0 +1,64 @@ +var path = require('path') + +module.exports = { + entry: { + app: './src/app.js' + }, + output: { + path: path.resolve(__dirname, '../dist/static'), + publicPath: '/static/', + filename: '[name].js' + }, + externals: { + // require("jquery") is external and available + // on the global var jQuery + 'zepto': 'Zepto' + }, + resolve: { + extensions: ['', '.js', '.vue', '.less'], + alias: { + 'src': path.resolve(__dirname, '../src') + } + }, + resolveLoader: { + root: path.join(__dirname, 'node_modules'), + }, + module: { + loaders: [ + { + test: /\.vue$/, + loader: 'vue' + }, + { + test: /\.js$/, + loader: 'babel!eslint', + exclude: /node_modules|vue\/dist|vue-router\/|vue-loader\/|vue-hot-reload-api\// + }, + { + test: /\.json$/, + loader: 'json' + }, + { + test: /\.less$/, + loader: 'css!less' + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'url', + query: { + limit: 10000, + name: '[name].[ext]?[hash]' + } + } + ] + }, + vue: { + loaders: { + js: 'babel!eslint', + less: 'vue-style!css!less' + } + }, + eslint: { + formatter: require('eslint-friendly-formatter') + } +} diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js new file mode 100644 index 0000000..f8036af --- /dev/null +++ b/build/webpack.dev.conf.js @@ -0,0 +1,39 @@ +var webpack = require('webpack') +var config = require('./webpack.base.conf') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var BrowserSyncPlugin = require('browser-sync-webpack-plugin') +config.devtool = 'eval-source-map' + +// add hot-reload related code to entry chunk +config.entry.app = [ + 'eventsource-polyfill', + 'webpack-hot-middleware/client?quiet=true&reload=true', + config.entry.app +] + +config.output.publicPath = '/' + +config.plugins = (config.plugins || []).concat([ + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.HotModuleReplacementPlugin(), + new webpack.NoErrorsPlugin(), + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'src/index.html' + }), + new BrowserSyncPlugin( + // BrowserSync options + { + host: '127.0.0.1', + port: 8080, + proxy: 'http://127.0.0.1:8000/', + logConnections: false, + notify: false + }, + // plugin options + { + reload: true + }) +]) + +module.exports = config diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js new file mode 100644 index 0000000..56f1116 --- /dev/null +++ b/build/webpack.prod.conf.js @@ -0,0 +1,57 @@ +var webpack = require('webpack') +var config = require('./webpack.base.conf') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var HtmlWebpackPlugin = require('html-webpack-plugin') + +// naming output files with hashes for better caching. +// dist/index.html will be auto-generated with correct URLs. +config.output.filename = '[name].[chunkhash].js' +config.output.chunkFilename = '[id].[chunkhash].js' + +// whether to generate source map for production files. +// disabling this can speed up the build. +var SOURCE_MAP = false + +config.devtool = SOURCE_MAP ? 'source-map' : false + +// generate loader string to be used with extract text plugin +function generateExtractLoaders (loaders) { + return loaders.map(function (loader) { + return loader + '-loader' + (SOURCE_MAP ? '?sourceMap' : '') + }).join('!') +} + +config.vue.loaders = { + js: 'babel!eslint', + // http://vuejs.github.io/vue-loader/configurations/extract-css.html + css: ExtractTextPlugin.extract('vue-style-loader', generateExtractLoaders(['css'])), + less: ExtractTextPlugin.extract('vue-style-loader', generateExtractLoaders(['css', 'less'])), + sass: ExtractTextPlugin.extract('vue-style-loader', generateExtractLoaders(['css', 'sass'])), + stylus: ExtractTextPlugin.extract('vue-style-loader', generateExtractLoaders(['css', 'stylus'])) +} + +config.plugins = (config.plugins || []).concat([ + // http://vuejs.github.io/vue-loader/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: '"production"' + } + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + } + }), + new webpack.optimize.OccurenceOrderPlugin(), + // extract css into its own file + new ExtractTextPlugin('[name].[contenthash].css'), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /build/index.template.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: '../index.html', + template: 'src/index.html' + }) +]) + +module.exports = config diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..59a01a5 Binary files /dev/null and b/favicon.ico differ diff --git a/index.js b/index.js new file mode 100644 index 0000000..a5fabbb --- /dev/null +++ b/index.js @@ -0,0 +1,18 @@ +var express = require('express'); +var path = require('path'); +var app = express(); + +app.use('/static', express.static(path.join(__dirname, './dist/static'))); + +app.get('/', function (req, res) { + res.sendFile('index.html', { root: path.join(__dirname, './dist') }); +}); + +var server = app.listen(3030, '127.0.0.1', function () { + + var host = server.address().address; + var port = server.address().port; + + console.log('vue-sui-demo listening at http://%s:%s', host, port); + +}); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..29d7ce5 --- /dev/null +++ b/package.json @@ -0,0 +1,65 @@ +{ + "name": "vue-sui-demo", + "description": "vue combine with sui-mobile", + "author": "eteplus ", + "scripts": { + "main": "node index.js", + "dev": "node build/dev-server.js", + "build": "rimraf dist && webpack --progress --hide-modules --config build/webpack.prod.conf.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/eteplus/vue-sui-demo.git" + }, + "dependencies": { + "vue": "^1.0.15", + "vue-resource": "^0.6.1", + "vue-router": "^0.7.9" + }, + "devDependencies": { + "babel-core": "^6.0.0", + "babel-loader": "^6.0.0", + "babel-plugin-transform-runtime": "^6.0.0", + "babel-preset-es2015": "^6.0.0", + "babel-preset-stage-2": "^6.0.0", + "babel-runtime": "^5.8.0", + "browser-sync": "^2.11.1", + "k-plugin": "^1.0.1", + "classnames": "^2.2.3", + "connect-history-api-fallback": "^1.1.0", + "css-loader": "^0.23.0", + "eslint": "^1.10.3", + "eslint-friendly-formatter": "^1.2.2", + "eslint-loader": "^1.2.0", + "eventsource-polyfill": "^0.9.6", + "express": "^4.13.3", + "express-favicon": "^1.0.1", + "extract-text-webpack-plugin": "^0.9.1", + "file-loader": "^0.8.4", + "function-bind": "^1.0.2", + "html-webpack-plugin": "^1.7.0", + "inject-loader": "^2.0.1", + "jasmine-core": "^2.4.1", + "json-loader": "^0.5.4", + "karma": "^0.13.15", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-spec-reporter": "0.0.23", + "karma-webpack": "^1.7.0", + "less": "^2.6.0", + "less-loader": "^2.2.2", + "phantomjs": "^1.9.19", + "rimraf": "^2.5.0", + "swiper": "^3.3.0", + "url-loader": "^0.5.7", + "vue-hot-reload-api": "^1.2.0", + "vue-html-loader": "^1.0.0", + "vue-loader": "^8.0.0", + "vue-style-loader": "^1.0.0", + "webpack": "^1.12.2", + "webpack-dev-middleware": "^1.4.0", + "webpack-dev-server": "^1.14.1", + "webpack-hot-middleware": "^2.6.0" + }, + "license": "MIT" +} diff --git a/src/app.js b/src/app.js new file mode 100644 index 0000000..e3b733c --- /dev/null +++ b/src/app.js @@ -0,0 +1,28 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' +import VueResource from 'vue-resource' +import routerConfig from './router' +import pullToRefresh from './directives/pullToRefresh' +import app from './main' + +// Router +Vue.use(VueRouter) + +const router = new VueRouter({ + hashbang: true +}) + +routerConfig(router) + +// Resource +Vue.use(VueResource) + +Vue.http.options.root = '/api' +Vue.http.options.emulateJSON = true + +// Directive +Vue.directive('pullToRefresh', pullToRefresh) + +router.start(app, '#app') + +window.router = router diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100755 index 0000000..b37c5eb Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/assets/qrcode.jpg b/src/assets/qrcode.jpg new file mode 100644 index 0000000..7dd9b10 Binary files /dev/null and b/src/assets/qrcode.jpg differ diff --git a/src/components/Bar.vue b/src/components/Bar.vue new file mode 100644 index 0000000..5b9d140 --- /dev/null +++ b/src/components/Bar.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/src/components/BarTabItem.vue b/src/components/BarTabItem.vue new file mode 100644 index 0000000..dbed9b8 --- /dev/null +++ b/src/components/BarTabItem.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/src/components/Button.vue b/src/components/Button.vue new file mode 100644 index 0000000..1d3e347 --- /dev/null +++ b/src/components/Button.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/src/components/ButtonGroup.vue b/src/components/ButtonGroup.vue new file mode 100644 index 0000000..3273fe2 --- /dev/null +++ b/src/components/ButtonGroup.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/src/components/Card.vue b/src/components/Card.vue new file mode 100644 index 0000000..f0f45a5 --- /dev/null +++ b/src/components/Card.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/src/components/CardItem.vue b/src/components/CardItem.vue new file mode 100644 index 0000000..73fd4d5 --- /dev/null +++ b/src/components/CardItem.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/src/components/Content.vue b/src/components/Content.vue new file mode 100644 index 0000000..ba2dd37 --- /dev/null +++ b/src/components/Content.vue @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/src/components/Iconfont.vue b/src/components/Iconfont.vue new file mode 100644 index 0000000..8b9551d --- /dev/null +++ b/src/components/Iconfont.vue @@ -0,0 +1,35 @@ + + + \ No newline at end of file diff --git a/src/components/List.vue b/src/components/List.vue new file mode 100644 index 0000000..cce020a --- /dev/null +++ b/src/components/List.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/src/components/ListItem.vue b/src/components/ListItem.vue new file mode 100644 index 0000000..629aea8 --- /dev/null +++ b/src/components/ListItem.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/src/components/PullToRefreshLayer.vue b/src/components/PullToRefreshLayer.vue new file mode 100644 index 0000000..946c580 --- /dev/null +++ b/src/components/PullToRefreshLayer.vue @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/components/Slider.vue b/src/components/Slider.vue new file mode 100644 index 0000000..11063f6 --- /dev/null +++ b/src/components/Slider.vue @@ -0,0 +1,344 @@ + + + + + \ No newline at end of file diff --git a/src/components/Tab.vue b/src/components/Tab.vue new file mode 100644 index 0000000..c53ecfb --- /dev/null +++ b/src/components/Tab.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/components/Tabs.vue b/src/components/Tabs.vue new file mode 100644 index 0000000..49d8d94 --- /dev/null +++ b/src/components/Tabs.vue @@ -0,0 +1,62 @@ + + + \ No newline at end of file diff --git a/src/directives/pullToRefresh.js b/src/directives/pullToRefresh.js new file mode 100644 index 0000000..85f5303 --- /dev/null +++ b/src/directives/pullToRefresh.js @@ -0,0 +1,15 @@ +import $ from 'zepto' + +export default { + params: ['action', 'distance'], + bind () { + let el = $(this.el) + el.addClass('content') + el.addClass('pull-to-refresh-content') + el.attr('data-ptr-distance', this.params.distance) + $(el).on('refresh', function (e) { + this.vm[this.params.action]() + }.bind(this)) + } +} + diff --git a/src/filters.js b/src/filters.js new file mode 100644 index 0000000..e69de29 diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..13a462f --- /dev/null +++ b/src/index.html @@ -0,0 +1,32 @@ + + + + + + forward + + + + + + + {% for (var css in o.htmlWebpackPlugin.files.css) { %} + + {% } %} + + +
+
+ + + + + {% for (var chunk in o.htmlWebpackPlugin.files.chunks) { %} + + {% } %} + + diff --git a/src/main.vue b/src/main.vue new file mode 100644 index 0000000..0ba0348 --- /dev/null +++ b/src/main.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/router.js b/src/router.js new file mode 100644 index 0000000..fc2833a --- /dev/null +++ b/src/router.js @@ -0,0 +1,79 @@ +import Home from './views/home' +import Article from './views/article' +import User from './views/user' +import More from './views/more' +import Feedback from './views/more/feedback' +import About from './views/more/about' +import Rank from './views/home/rank' +import Tasks from './views/home/tasks' +import Invite from './views/home/invite' +import Profile from './views/user/profile' +import Profit from './views/user/profit' +import ProfitRecord from './views/user/profitRecord' +import Withdraw from './views/user/withdraw' +import $ from 'zepto' + +export default function (router) { + router.map({ + '/home': { + component: Home + }, + '/home/rank': { + component: Rank + }, + '/home/tasks': { + component: Tasks + }, + '/home/invite': { + component: Invite + }, + '/article': { + component: Article + }, + '/user': { + component: User + }, + '/user/withdraw': { + component: Withdraw + }, + '/user/profile': { + component: Profile + }, + '/user/profit': { + component: Profit + }, + '/user/profit/record': { + component: ProfitRecord + }, + '/more': { + component: More + }, + '/more/feedback': { + component: Feedback + }, + '/more/about': { + component: About + } + }) + router.redirect({ + '/': '/home' + }) + + router.beforeEach(function ({to, from, next}) { + let toPath = to.path + let fromPath = from.path + console.log('to: ' + toPath + ' from: ' + fromPath) + if (toPath.replace(/[^/]/g, '').length > 1) { + router.app.isIndex = false + } + else { + router.app.isIndex = true + } + next() + }) + + router.afterEach(function ({to}) { + console.log(`成功浏览到: ${to.path}`) + $.refreshScroller() + }) +} diff --git a/src/views/article.vue b/src/views/article.vue new file mode 100644 index 0000000..981f528 --- /dev/null +++ b/src/views/article.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/src/views/home.vue b/src/views/home.vue new file mode 100644 index 0000000..cde71da --- /dev/null +++ b/src/views/home.vue @@ -0,0 +1,174 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/invite.vue b/src/views/home/invite.vue new file mode 100644 index 0000000..73228a1 --- /dev/null +++ b/src/views/home/invite.vue @@ -0,0 +1,136 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/rank.vue b/src/views/home/rank.vue new file mode 100644 index 0000000..691ed2a --- /dev/null +++ b/src/views/home/rank.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/tasks.vue b/src/views/home/tasks.vue new file mode 100644 index 0000000..591d44a --- /dev/null +++ b/src/views/home/tasks.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/src/views/more.vue b/src/views/more.vue new file mode 100644 index 0000000..a1227be --- /dev/null +++ b/src/views/more.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/views/more/about.vue b/src/views/more/about.vue new file mode 100644 index 0000000..6f6c52b --- /dev/null +++ b/src/views/more/about.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/src/views/more/feedback.vue b/src/views/more/feedback.vue new file mode 100644 index 0000000..0faa62b --- /dev/null +++ b/src/views/more/feedback.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/src/views/user.vue b/src/views/user.vue new file mode 100644 index 0000000..d8db6a5 --- /dev/null +++ b/src/views/user.vue @@ -0,0 +1,183 @@ + + + + + \ No newline at end of file diff --git a/src/views/user/profile.vue b/src/views/user/profile.vue new file mode 100644 index 0000000..73591d0 --- /dev/null +++ b/src/views/user/profile.vue @@ -0,0 +1,162 @@ + + + + \ No newline at end of file diff --git a/src/views/user/profit.vue b/src/views/user/profit.vue new file mode 100644 index 0000000..5d26f6e --- /dev/null +++ b/src/views/user/profit.vue @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/src/views/user/profitRecord.vue b/src/views/user/profitRecord.vue new file mode 100644 index 0000000..57b390b --- /dev/null +++ b/src/views/user/profitRecord.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/src/views/user/withdraw.vue b/src/views/user/withdraw.vue new file mode 100644 index 0000000..9998023 --- /dev/null +++ b/src/views/user/withdraw.vue @@ -0,0 +1,190 @@ + + + + +