├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist ├── index.html └── static │ ├── css │ ├── _mixin.scss │ ├── _reset.scss │ ├── app.ddcfccc854ac502e6366b0338b032abc.css │ ├── app.ddcfccc854ac502e6366b0338b032abc.css.map │ ├── common.scss │ └── swiper4.css │ ├── dbs │ └── index.json │ ├── img │ ├── accept.png │ ├── banner.png │ ├── detail_introduce.png │ ├── detail_remark.png │ ├── detail_reward.png │ ├── detail_star_midd.png │ ├── detail_star_white.png │ ├── detail_star_yellow.png │ ├── detail_teacher.png │ ├── logo.png │ ├── logo_share.5bc4648.png │ ├── logo_share.png │ ├── me_about_us.png │ ├── me_arrow.png │ ├── me_collect.png │ ├── me_course.png │ ├── me_kfphone.png │ ├── me_student_default.png │ ├── me_try.png │ ├── my.png │ ├── userlogo.png │ └── wechat_logo.png │ └── js │ ├── 0.420017ccdac762284c3c.js │ ├── 0.420017ccdac762284c3c.js.map │ ├── 1.df56f01bd788e66a0c31.js │ ├── 1.df56f01bd788e66a0c31.js.map │ ├── 10.126e4652d393eb775d27.js │ ├── 10.126e4652d393eb775d27.js.map │ ├── 11.b1f11b8e1356a8d65722.js │ ├── 11.b1f11b8e1356a8d65722.js.map │ ├── 12.883ef26a8d77485065a8.js │ ├── 12.883ef26a8d77485065a8.js.map │ ├── 13.3c98118b60abc5785348.js │ ├── 13.3c98118b60abc5785348.js.map │ ├── 2.1d976831f5dac9c33733.js │ ├── 2.1d976831f5dac9c33733.js.map │ ├── 3.9194f3fee78d9525e66b.js │ ├── 3.9194f3fee78d9525e66b.js.map │ ├── 4.bdbef21ce78dec5b88be.js │ ├── 4.bdbef21ce78dec5b88be.js.map │ ├── 5.d101d6c2797372594bb2.js │ ├── 5.d101d6c2797372594bb2.js.map │ ├── 6.93ab7c3785bfb31f6a5c.js │ ├── 6.93ab7c3785bfb31f6a5c.js.map │ ├── 7.c6777a0dd1b7c59cece5.js │ ├── 7.c6777a0dd1b7c59cece5.js.map │ ├── 8.7f0560bd7d2100b42835.js │ ├── 8.7f0560bd7d2100b42835.js.map │ ├── 9.2c38cedbecc024d68dac.js │ ├── 9.2c38cedbecc024d68dac.js.map │ ├── app.36713eb5799930f25e89.js │ ├── app.36713eb5799930f25e89.js.map │ ├── axiosHeaders.js │ ├── manifest.7bf53608bd99f03ef1ef.js │ ├── manifest.7bf53608bd99f03ef1ef.js.map │ ├── public.js │ ├── swiper4.js │ ├── vendor.6904213a0dda04918470.js │ └── vendor.6904213a0dda04918470.js.map ├── index.html ├── package-lock.json ├── package.json ├── product ├── api_doc │ ├── CommonApi_File.md │ ├── app.md │ ├── collection.md │ ├── course.md │ ├── coursetrial.md │ ├── index.md │ ├── sms.md │ ├── struct │ │ ├── simple.md │ │ └── tableStatus.md │ ├── teacher.md │ └── user.md ├── prd │ ├── admin │ │ ├── 教师管理.png │ │ ├── 用户管理.png │ │ ├── 评价管理.png │ │ └── 课程订单管理.png │ ├── 前端资料录入.png │ ├── 教师招募H5.png │ ├── 教师管理.png │ ├── 用户管理.png │ ├── 知途家教前端原型.png │ ├── 知途家教前端原型V1.1.png │ ├── 评价管理.png │ └── 课程管理.png ├── ui │ ├── 家长端png │ │ ├── 家长端-个人中心.png │ │ ├── 家长端-个人资料.png │ │ ├── 家长端-我的收藏.png │ │ ├── 家长端-我的试讲-已完成.png │ │ ├── 家长端-我的试讲-未完成.png │ │ ├── 家长端-我的课程-已结束.png │ │ └── 家长端-我的课程-进行中.png │ ├── 教师家长相同页面 │ │ ├── 教师列表--教师类型.png │ │ ├── 教师列表-主页.png │ │ ├── 教师列表-学科-选择状态.png │ │ ├── 教师列表-学科.png │ │ ├── 教师列表-年级.png │ │ ├── 教师详情.png │ │ └── 首页.png │ ├── 教师端png │ │ ├── 教师端-个人中心.png │ │ ├── 教师端-我的试讲-已结束.png │ │ ├── 教师端-我的试讲-未完成.png │ │ ├── 教师端-我的课程-已结束.png │ │ ├── 教师端-我的课程-进行中.png │ │ └── 教师端-编辑个人资料.png │ ├── 登录注册修改密码 │ │ ├── 1-登录-注册.png │ │ ├── 1-设置密码.png │ │ └── 1-账号登录.png │ └── 知途家教1.0 界面修改建议 180120---LB.docx └── 项目截图 │ ├── 0.png │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 5.png │ ├── 分类.png │ ├── 家长.png │ ├── 收藏.png │ ├── 教师.png │ ├── 教师编辑.png │ ├── 注册.png │ ├── 登录.png │ ├── 编辑.png │ └── 详情.png ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── home.vue │ ├── public │ │ ├── about.vue │ │ ├── classification.vue │ │ ├── fastLogin.vue │ │ ├── login.vue │ │ └── register.vue │ ├── teacher │ │ ├── teacher.vue │ │ ├── teacherInfo.vue │ │ ├── teacherList.vue │ │ └── teacherXiangQing.vue │ └── user │ │ ├── user.vue │ │ ├── userCollect.vue │ │ ├── userCourse.vue │ │ └── userInfo.vue ├── main.js └── router │ └── index.js └── static ├── css ├── _mixin.scss ├── _reset.scss ├── common.scss └── swiper4.css ├── dbs └── index.json ├── img ├── accept.png ├── banner.png ├── detail_introduce.png ├── detail_remark.png ├── detail_reward.png ├── detail_star_midd.png ├── detail_star_white.png ├── detail_star_yellow.png ├── detail_teacher.png ├── logo.png ├── logo_share.png ├── me_about_us.png ├── me_arrow.png ├── me_collect.png ├── me_course.png ├── me_kfphone.png ├── me_student_default.png ├── me_try.png ├── my.png ├── userlogo.png └── wechat_logo.png └── js ├── axiosHeaders.js ├── public.js └── swiper4.js /.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-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parserOptions: { 6 | parser: 'babel-eslint' 7 | }, 8 | env: { 9 | browser: true, 10 | }, 11 | extends: [ 12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 14 | 'plugin:vue/essential', 15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 16 | 'standard' 17 | ], 18 | // required to lint *.vue files 19 | plugins: [ 20 | 'vue' 21 | ], 22 | // add your custom rules here 23 | rules: { 24 | 'no-new': 'off', 25 | //'quotes': [1, 'single'],//引号类型 `` "" '' 26 | "semi": [0, "always"], //强制语句分号结尾 27 | // allow async-await 28 | 'generator-star-spacing': 'off', 29 | // allow debugger during development 30 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 31 | "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": true }] 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /.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 | .vscode 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 知途家教移动版 2 | 3 | ## 预览截图 4 | 5 | **首页** 6 | 7 | ![首页截图](https://github.com/wwenj/zhitu-Tutor/blob/master/product/项目截图/0.png) 8 | 9 | **教师分类、教师详情页** 10 | 11 | ![教师分类、教师详情页](https://github.com/wwenj/zhitu-Tutor/blob/master/product/项目截图/1.png) 12 | 13 | **登录、注册页** 14 | 15 | ![教师分类、教师详情页](https://github.com/wwenj/zhitu-Tutor/blob/master/product/项目截图/2.png) 16 | 17 | **家长、教师个人信息页** 18 | 19 | ![教师分类、教师详情页](https://github.com/wwenj/zhitu-Tutor/blob/master/product/项目截图/3.png) 20 | 21 | **家长、教师个人编辑页** 22 | 23 | ![教师分类、教师详情页](https://github.com/wwenj/zhitu-Tutor/blob/master/product/项目截图/5.png) 24 | 25 | ## 技术选型 26 | 27 | - 移动端 28 | 29 | - **前端:** vue-cli,vue-router,mint.ui,axios,es6, 30 | 31 | - **后端:** PHP 32 | 33 | ## 功能实现 34 | 35 | 1. **首页:** 轮播,分类,个人信息,教师列表 36 | 2. **详情页:** 教师简介,预约,收藏 37 | 3. **分类页:** 年级,学科,教师类型分类 38 | 4. **登录注册页:** 个人登录,快捷登录 39 | 5. **个人信息页:** 教师,家长两种 40 | 6. **个人信息编辑页:** 教师,家长两种 41 | 7. **收藏页:** 查看家长收藏教师列表 42 | 8. **其他页面:** 我的课程(教师),我的试讲(教师),我的预约(家长),网站介绍,客服电话 43 | 44 | ## Build Setup 45 | 46 | ``` bash 47 | # 下载依赖 48 | npm install 49 | 50 | # 打开端口 localhost:8001 51 | npm run dev 52 | 53 | # build for production with minification 54 | npm run build 55 | ``` 56 | 57 | 58 | 59 | 作者 [[王文健]](http://www.wwenj.com/)
60 | 2018 年 4月 19日 -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/build/logo.png -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const config = require('../config') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const packageConfig = require('../package.json') 6 | 7 | exports.assetsPath = function (_path) { 8 | const assetsSubDirectory = process.env.NODE_ENV === 'production' 9 | ? config.build.assetsSubDirectory 10 | : config.dev.assetsSubDirectory 11 | 12 | return path.posix.join(assetsSubDirectory, _path) 13 | } 14 | 15 | exports.cssLoaders = function (options) { 16 | options = options || {} 17 | 18 | const cssLoader = { 19 | loader: 'css-loader', 20 | options: { 21 | sourceMap: options.sourceMap 22 | } 23 | } 24 | 25 | const postcssLoader = { 26 | loader: 'postcss-loader', 27 | options: { 28 | sourceMap: options.sourceMap 29 | } 30 | } 31 | 32 | // generate loader string to be used with extract text plugin 33 | function generateLoaders (loader, loaderOptions) { 34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] 35 | 36 | if (loader) { 37 | loaders.push({ 38 | loader: loader + '-loader', 39 | options: Object.assign({}, loaderOptions, { 40 | sourceMap: options.sourceMap 41 | }) 42 | }) 43 | } 44 | 45 | // Extract CSS when that option is specified 46 | // (which is the case during production build) 47 | if (options.extract) { 48 | return ExtractTextPlugin.extract({ 49 | use: loaders, 50 | fallback: 'vue-style-loader', 51 | publicPath:'../../' 52 | }) 53 | } else { 54 | return ['vue-style-loader'].concat(loaders) 55 | } 56 | } 57 | 58 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 59 | return { 60 | css: generateLoaders(), 61 | postcss: generateLoaders(), 62 | less: generateLoaders('less'), 63 | sass: generateLoaders('sass', { indentedSyntax: true }), 64 | scss: generateLoaders('sass'), 65 | stylus: generateLoaders('stylus'), 66 | styl: generateLoaders('stylus') 67 | } 68 | } 69 | 70 | // Generate loaders for standalone style files (outside of .vue) 71 | exports.styleLoaders = function (options) { 72 | const output = [] 73 | const loaders = exports.cssLoaders(options) 74 | 75 | for (const extension in loaders) { 76 | const loader = loaders[extension] 77 | output.push({ 78 | test: new RegExp('\\.' + extension + '$'), 79 | use: loader 80 | }) 81 | } 82 | 83 | return output 84 | } 85 | 86 | exports.createNotifierCallback = () => { 87 | const notifier = require('node-notifier') 88 | 89 | return (severity, errors) => { 90 | if (severity !== 'error') return 91 | 92 | const error = errors[0] 93 | const filename = error.file && error.file.split('!').pop() 94 | 95 | notifier.notify({ 96 | title: packageConfig.name, 97 | message: severity + ': ' + error.name, 98 | subtitle: filename || '', 99 | icon: path.join(__dirname, 'logo.png') 100 | }) 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const config = require('../config') 5 | const vueLoaderConfig = require('./vue-loader.conf') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | const createLintingRule = () => ({ 12 | test: /\.(js|vue)$/, 13 | loader: 'eslint-loader', 14 | enforce: 'pre', 15 | include: [resolve('src'), resolve('test')], 16 | options: { 17 | formatter: require('eslint-friendly-formatter'), 18 | emitWarning: !config.dev.showEslintErrorsInOverlay 19 | } 20 | }) 21 | 22 | module.exports = { 23 | context: path.resolve(__dirname, '../'), 24 | entry: { 25 | app: './src/main.js' 26 | }, 27 | output: { 28 | path: config.build.assetsRoot, 29 | filename: '[name].js', 30 | publicPath: process.env.NODE_ENV === 'production' 31 | ? config.build.assetsPublicPath 32 | : config.dev.assetsPublicPath 33 | }, 34 | resolve: { 35 | extensions: ['.js', '.vue', '.json'], 36 | alias: { 37 | 'vue$': 'vue/dist/vue.esm.js', 38 | '@': resolve('src'), 39 | } 40 | }, 41 | module: { 42 | rules: [ 43 | ...(config.dev.useEslint ? [createLintingRule()] : []), 44 | { 45 | test: /\.vue$/, 46 | loader: 'vue-loader', 47 | options: vueLoaderConfig 48 | }, 49 | { 50 | test: /\.js$/, 51 | loader: 'babel-loader', 52 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] 53 | }, 54 | { 55 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 56 | loader: 'url-loader', 57 | options: { 58 | limit: 10000, 59 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 60 | } 61 | }, 62 | { 63 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 64 | loader: 'url-loader', 65 | options: { 66 | limit: 10000, 67 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 68 | } 69 | }, 70 | { 71 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 72 | loader: 'url-loader', 73 | options: { 74 | limit: 10000, 75 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 76 | } 77 | } 78 | ] 79 | }, 80 | node: { 81 | // prevent webpack from injecting useless setImmediate polyfill because Vue 82 | // source contains it (although only uses it if it's native). 83 | setImmediate: false, 84 | // prevent webpack from injecting mocks to Node native modules 85 | // that does not make sense for the client 86 | dgram: 'empty', 87 | fs: 'empty', 88 | net: 'empty', 89 | tls: 'empty', 90 | child_process: 'empty' 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const webpack = require('webpack') 4 | const config = require('../config') 5 | const merge = require('webpack-merge') 6 | const path = require('path') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 11 | const portfinder = require('portfinder') 12 | 13 | const HOST = process.env.HOST 14 | const PORT = process.env.PORT && Number(process.env.PORT) 15 | 16 | const devWebpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) 19 | }, 20 | // cheap-module-eval-source-map is faster for development 21 | devtool: config.dev.devtool, 22 | 23 | // these devServer options should be customized in /config/index.js 24 | devServer: { 25 | clientLogLevel: 'warning', 26 | historyApiFallback: { 27 | rewrites: [ 28 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, 29 | ], 30 | }, 31 | hot: true, 32 | contentBase: false, // since we use CopyWebpackPlugin. 33 | compress: true, 34 | host: HOST || config.dev.host, 35 | port: PORT || config.dev.port, 36 | open: config.dev.autoOpenBrowser, 37 | overlay: config.dev.errorOverlay 38 | ? { warnings: false, errors: true } 39 | : false, 40 | publicPath: config.dev.assetsPublicPath, 41 | proxy: config.dev.proxyTable, 42 | quiet: true, // necessary for FriendlyErrorsPlugin 43 | watchOptions: { 44 | poll: config.dev.poll, 45 | } 46 | }, 47 | plugins: [ 48 | new webpack.DefinePlugin({ 49 | 'process.env': require('../config/dev.env') 50 | }), 51 | new webpack.HotModuleReplacementPlugin(), 52 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. 53 | new webpack.NoEmitOnErrorsPlugin(), 54 | // https://github.com/ampedandwired/html-webpack-plugin 55 | new HtmlWebpackPlugin({ 56 | filename: 'index.html', 57 | template: 'index.html', 58 | inject: true 59 | }), 60 | // copy custom static assets 61 | new CopyWebpackPlugin([ 62 | { 63 | from: path.resolve(__dirname, '../static'), 64 | to: config.dev.assetsSubDirectory, 65 | ignore: ['.*'] 66 | } 67 | ]) 68 | ] 69 | }) 70 | 71 | module.exports = new Promise((resolve, reject) => { 72 | portfinder.basePort = process.env.PORT || config.dev.port 73 | portfinder.getPort((err, port) => { 74 | if (err) { 75 | reject(err) 76 | } else { 77 | // publish the new Port, necessary for e2e tests 78 | process.env.PORT = port 79 | // add port to devServer config 80 | devWebpackConfig.devServer.port = port 81 | 82 | // Add FriendlyErrorsPlugin 83 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ 84 | compilationSuccessInfo: { 85 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], 86 | }, 87 | onErrors: config.dev.notifyOnErrors 88 | ? utils.createNotifierCallback() 89 | : undefined 90 | })) 91 | 92 | resolve(devWebpackConfig) 93 | } 94 | }) 95 | }) 96 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const webpack = require('webpack') 5 | const config = require('../config') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 13 | 14 | const env = require('../config/prod.env') 15 | 16 | const webpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ 19 | sourceMap: config.build.productionSourceMap, 20 | extract: true, 21 | usePostCSS: true 22 | }) 23 | }, 24 | devtool: config.build.productionSourceMap ? config.build.devtool : false, 25 | output: { 26 | // publicPath: './', 27 | path: config.build.assetsRoot, 28 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 29 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 30 | }, 31 | plugins: [ 32 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 33 | new webpack.DefinePlugin({ 34 | 'process.env': env 35 | }), 36 | new UglifyJsPlugin({ 37 | uglifyOptions: { 38 | compress: { 39 | warnings: false 40 | } 41 | }, 42 | sourceMap: config.build.productionSourceMap, 43 | parallel: true 44 | }), 45 | // extract css into its own file 46 | new ExtractTextPlugin({ 47 | filename: utils.assetsPath('css/[name].[contenthash].css'), 48 | // Setting the following option to `false` will not extract CSS from codesplit chunks. 49 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. 50 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 51 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 52 | allChunks: true, 53 | }), 54 | // Compress extracted CSS. We are using this plugin so that possible 55 | // duplicated CSS from different components can be deduped. 56 | new OptimizeCSSPlugin({ 57 | cssProcessorOptions: config.build.productionSourceMap 58 | ? { safe: true, map: { inline: false } } 59 | : { safe: true } 60 | }), 61 | // generate dist index.html with correct asset hash for caching. 62 | // you can customize output by editing /index.html 63 | // see https://github.com/ampedandwired/html-webpack-plugin 64 | new HtmlWebpackPlugin({ 65 | filename: config.build.index, 66 | template: 'index.html', 67 | inject: true, 68 | minify: { 69 | removeComments: true, 70 | collapseWhitespace: true, 71 | removeAttributeQuotes: true 72 | // more options: 73 | // https://github.com/kangax/html-minifier#options-quick-reference 74 | }, 75 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 76 | chunksSortMode: 'dependency' 77 | }), 78 | // keep module.id stable when vendor modules does not change 79 | new webpack.HashedModuleIdsPlugin(), 80 | // enable scope hoisting 81 | new webpack.optimize.ModuleConcatenationPlugin(), 82 | // split vendor js into its own file 83 | new webpack.optimize.CommonsChunkPlugin({ 84 | name: 'vendor', 85 | minChunks (module) { 86 | // any required modules inside node_modules are extracted to vendor 87 | return ( 88 | module.resource && 89 | /\.js$/.test(module.resource) && 90 | module.resource.indexOf( 91 | path.join(__dirname, '../node_modules') 92 | ) === 0 93 | ) 94 | } 95 | }), 96 | // extract webpack runtime and module manifest to its own file in order to 97 | // prevent vendor hash from being updated whenever app bundle is updated 98 | new webpack.optimize.CommonsChunkPlugin({ 99 | name: 'manifest', 100 | minChunks: Infinity 101 | }), 102 | // This instance extracts shared chunks from code splitted chunks and bundles them 103 | // in a separate chunk, similar to the vendor chunk 104 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk 105 | new webpack.optimize.CommonsChunkPlugin({ 106 | name: 'app', 107 | async: 'vendor-async', 108 | children: true, 109 | minChunks: 3 110 | }), 111 | 112 | // copy custom static assets 113 | new CopyWebpackPlugin([ 114 | { 115 | from: path.resolve(__dirname, '../static'), 116 | to: config.build.assetsSubDirectory, 117 | ignore: ['.*'] 118 | } 119 | ]) 120 | ] 121 | }) 122 | 123 | if (config.build.productionGzip) { 124 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 125 | 126 | webpackConfig.plugins.push( 127 | new CompressionWebpackPlugin({ 128 | asset: '[path].gz[query]', 129 | algorithm: 'gzip', 130 | test: new RegExp( 131 | '\\.(' + 132 | config.build.productionGzipExtensions.join('|') + 133 | ')$' 134 | ), 135 | threshold: 10240, 136 | minRatio: 0.8 137 | }) 138 | ) 139 | } 140 | 141 | if (config.build.bundleAnalyzerReport) { 142 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 143 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 144 | } 145 | 146 | module.exports = webpackConfig 147 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.3.1 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | 10 | // Paths 11 | assetsSubDirectory: 'static', 12 | assetsPublicPath: '/', 13 | proxyTable: {}, 14 | 15 | // Various Dev Server settings 16 | host: 'localhost', // can be overwritten by process.env.HOST 17 | port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 18 | autoOpenBrowser: false, 19 | errorOverlay: true, 20 | notifyOnErrors: true, 21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 22 | 23 | // Use Eslint Loader? 24 | // If true, your code will be linted during bundling and 25 | // linting errors and warnings will be shown in the console. 26 | useEslint: true, 27 | // If true, eslint errors and warnings will also be shown in the error overlay 28 | // in the browser. 29 | showEslintErrorsInOverlay: false, 30 | 31 | /** 32 | * Source Maps 33 | */ 34 | 35 | // https://webpack.js.org/configuration/devtool/#development 36 | devtool: 'cheap-module-eval-source-map', 37 | 38 | // If you have problems debugging vue-files in devtools, 39 | // set this to false - it *may* help 40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 41 | cacheBusting: true, 42 | 43 | cssSourceMap: true 44 | }, 45 | 46 | build: { 47 | // Template for index.html 48 | index: path.resolve(__dirname, '../dist/index.html'), 49 | 50 | // Paths 51 | assetsRoot: path.resolve(__dirname, '../dist'), 52 | assetsSubDirectory: 'static', 53 | assetsPublicPath: './', 54 | 55 | /** 56 | * Source Maps 57 | */ 58 | 59 | productionSourceMap: true, 60 | // https://webpack.js.org/configuration/devtool/#production 61 | devtool: '#source-map', 62 | 63 | // Gzip off by default as many popular static hosts such as 64 | // Surge or Netlify already gzip all static assets for you. 65 | // Before setting to `true`, make sure to: 66 | // npm install --save-dev compression-webpack-plugin 67 | productionGzip: false, 68 | productionGzipExtensions: ['js', 'css'], 69 | 70 | // Run the build command with an extra argument to 71 | // View the bundle analyzer report after build finishes: 72 | // `npm run build --report` 73 | // Set to `true` or `false` to always turn it on or off 74 | bundleAnalyzerReport: process.env.npm_config_report 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 知途家教
-------------------------------------------------------------------------------- /dist/static/css/_mixin.scss: -------------------------------------------------------------------------------- 1 | // rem 基准 2 | $screen-width: 37.5; 3 | 4 | @function rem($px) { 5 | @return $px / $screen-width * 1rem; 6 | } 7 | -------------------------------------------------------------------------------- /dist/static/css/common.scss: -------------------------------------------------------------------------------- 1 | @import './mixin'; 2 | 3 | .mint-cell { 4 | .mint-cell-wrapper { 5 | .mint-cell-value { 6 | span { 7 | font-size: 12px; 8 | } 9 | img { 10 | border-radius: Rem(25); 11 | width: Rem(50); 12 | margin: Rem(5); 13 | } 14 | } 15 | } 16 | } 17 | 18 | .btn-default { 19 | width: 90% !important; 20 | margin: 5% !important; 21 | } 22 | 23 | .nav-header { 24 | background: #fff !important; 25 | color: #000 !important; 26 | } 27 | 28 | .nav-body { 29 | position: absolute; 30 | left: 0; 31 | right: 0; 32 | top: 40px; 33 | } 34 | -------------------------------------------------------------------------------- /dist/static/img/accept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/accept.png -------------------------------------------------------------------------------- /dist/static/img/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/banner.png -------------------------------------------------------------------------------- /dist/static/img/detail_introduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_introduce.png -------------------------------------------------------------------------------- /dist/static/img/detail_remark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_remark.png -------------------------------------------------------------------------------- /dist/static/img/detail_reward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_reward.png -------------------------------------------------------------------------------- /dist/static/img/detail_star_midd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_star_midd.png -------------------------------------------------------------------------------- /dist/static/img/detail_star_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_star_white.png -------------------------------------------------------------------------------- /dist/static/img/detail_star_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_star_yellow.png -------------------------------------------------------------------------------- /dist/static/img/detail_teacher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/detail_teacher.png -------------------------------------------------------------------------------- /dist/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/logo.png -------------------------------------------------------------------------------- /dist/static/img/logo_share.5bc4648.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/logo_share.5bc4648.png -------------------------------------------------------------------------------- /dist/static/img/logo_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/logo_share.png -------------------------------------------------------------------------------- /dist/static/img/me_about_us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_about_us.png -------------------------------------------------------------------------------- /dist/static/img/me_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_arrow.png -------------------------------------------------------------------------------- /dist/static/img/me_collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_collect.png -------------------------------------------------------------------------------- /dist/static/img/me_course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_course.png -------------------------------------------------------------------------------- /dist/static/img/me_kfphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_kfphone.png -------------------------------------------------------------------------------- /dist/static/img/me_student_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_student_default.png -------------------------------------------------------------------------------- /dist/static/img/me_try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/me_try.png -------------------------------------------------------------------------------- /dist/static/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/my.png -------------------------------------------------------------------------------- /dist/static/img/userlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/userlogo.png -------------------------------------------------------------------------------- /dist/static/img/wechat_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/dist/static/img/wechat_logo.png -------------------------------------------------------------------------------- /dist/static/js/0.420017ccdac762284c3c.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([0],{iYWc:function(t,e){},zXZL:function(t,e,a){"use strict";var s={props:{teacherLists:{type:Array}},data:function(){return{}},mounted:function(){},methods:{toDetail:function(t){sessionStorage.setItem("teacher_id",t),location.href="#/teacher_detail"}}},n={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},t._l(t.teacherLists,function(e,s){return a("div",{key:s,staticClass:"teacher",on:{click:function(a){t.toDetail(e.id)}}},[a("img",{attrs:{src:e.image,alt:"教师头像"}}),t._v(" "),a("div",{staticClass:"teacher-con"},[a("p",{staticClass:"one"},[a("span",{staticClass:"name"},[t._v(t._s(e.name))]),t._v(" "),t._l(e.subject,function(e,s){return a("span",{key:s,staticClass:"sub"},[t._v(t._s(e.label))])}),t._v(" "),t._l(e.grade,function(e,s){return a("span",{key:s+1,staticClass:"grade"},[t._v(t._s(e.label))])}),t._v(" "),a("span",{staticClass:"tech-time"},[t._v("授课"+t._s(e.teach_time)+"小时")])],2),t._v(" "),a("p",{staticClass:"two"},[t._v("\n "+t._s(e.teach_year)+"年教龄\n ")]),t._v(" "),t._l(e.extend_tag,function(e,s){return a("p",{key:s,staticClass:"three"},[t._v("\n "+t._s(e.label)+"\n ")])})],2)])}))},staticRenderFns:[]};var i=a("VU/8")(s,n,!1,function(t){a("iYWc")},"data-v-e3e16212",null);e.a=i.exports}}); 2 | //# sourceMappingURL=0.420017ccdac762284c3c.js.map -------------------------------------------------------------------------------- /dist/static/js/0.420017ccdac762284c3c.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///src/components/teacher/teacherList.vue","webpack:///./src/components/teacher/teacherList.vue?7a58","webpack:///./src/components/teacher/teacherList.vue"],"names":["teacherList","Array","id","teacher_teacherList","render","_vm","this","_h","$createElement","_c","_self","attrs","_l","item","index","key","staticClass","on","click","$event","toDetail","src","image","alt","_v","_s","name","item1","label","item2","teach_time","teach_year","item3","staticRenderFns","Component","__webpack_require__","normalizeComponent","ssrContext","__webpack_exports__"],"mappings":"yEAwBA,IAAAA,6BAMAC,yHAgCAC,iBACA,sBC5DAC,GADiBC,OAFjB,WAA0B,IAAAC,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOT,GAAA,QAAYG,EAAAO,GAAAP,EAAA,sBAAAQ,EAAAC,GAAgD,OAAAL,EAAA,OAAiBM,IAAAD,EAAAE,YAAA,UAAAC,IAAoCC,MAAA,SAAAC,GAAyBd,EAAAe,SAAAP,EAAAX,QAAwBO,EAAA,OAAYE,OAAOU,IAAAR,EAAAS,MAAAC,IAAA,UAA+BlB,EAAAmB,GAAA,KAAAf,EAAA,OAAwBO,YAAA,gBAA0BP,EAAA,KAAUO,YAAA,QAAkBP,EAAA,QAAaO,YAAA,SAAmBX,EAAAmB,GAAAnB,EAAAoB,GAAAZ,EAAAa,SAAArB,EAAAmB,GAAA,KAAAnB,EAAAO,GAAAC,EAAA,iBAAAc,EAAAb,GAAsF,OAAAL,EAAA,QAAkBM,IAAAD,EAAAE,YAAA,QAA4BX,EAAAmB,GAAAnB,EAAAoB,GAAAE,EAAAC,YAAgCvB,EAAAmB,GAAA,KAAAnB,EAAAO,GAAAC,EAAA,eAAAgB,EAAAf,GAAwD,OAAAL,EAAA,QAAkBM,IAAAD,EAAA,EAAAE,YAAA,UAAgCX,EAAAmB,GAAAnB,EAAAoB,GAAAI,EAAAD,YAAgCvB,EAAAmB,GAAA,KAAAf,EAAA,QAAyBO,YAAA,cAAwBX,EAAAmB,GAAA,KAAAnB,EAAAoB,GAAAZ,EAAAiB,YAAA,YAAAzB,EAAAmB,GAAA,KAAAf,EAAA,KAAsEO,YAAA,QAAkBX,EAAAmB,GAAA,aAAAnB,EAAAoB,GAAAZ,EAAAkB,YAAA,iBAAA1B,EAAAmB,GAAA,KAAAnB,EAAAO,GAAAC,EAAA,oBAAAmB,EAAAlB,GAA0H,OAAAL,EAAA,KAAeM,IAAAD,EAAAE,YAAA,UAA8BX,EAAAmB,GAAA,aAAAnB,EAAAoB,GAAAO,EAAAJ,OAAA,iBAAwD,SAExjCK,oBCCjB,IAcAC,EAdAC,EAAA,OAcAC,CACApC,EACAG,GATA,EAVA,SAAAkC,GACAF,EAAA,SAaA,kBAEA,MAUAG,EAAA,EAAAJ,EAAA","file":"static/js/0.420017ccdac762284c3c.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/teacher/teacherList.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},_vm._l((_vm.teacherLists),function(item,index){return _c('div',{key:index,staticClass:\"teacher\",on:{\"click\":function($event){_vm.toDetail(item.id)}}},[_c('img',{attrs:{\"src\":item.image,\"alt\":\"教师头像\"}}),_vm._v(\" \"),_c('div',{staticClass:\"teacher-con\"},[_c('p',{staticClass:\"one\"},[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),_vm._l((item.subject),function(item1,index){return _c('span',{key:index,staticClass:\"sub\"},[_vm._v(_vm._s(item1.label))])}),_vm._v(\" \"),_vm._l((item.grade),function(item2,index){return _c('span',{key:index+1,staticClass:\"grade\"},[_vm._v(_vm._s(item2.label))])}),_vm._v(\" \"),_c('span',{staticClass:\"tech-time\"},[_vm._v(\"授课\"+_vm._s(item.teach_time)+\"小时\")])],2),_vm._v(\" \"),_c('p',{staticClass:\"two\"},[_vm._v(\"\\n \"+_vm._s(item.teach_year)+\"年教龄\\n \")]),_vm._v(\" \"),_vm._l((item.extend_tag),function(item3,index){return _c('p',{key:index,staticClass:\"three\"},[_vm._v(\"\\n \"+_vm._s(item3.label)+\"\\n \")])})],2)])}))}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e3e16212\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/teacher/teacherList.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e3e16212\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./teacherList.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./teacherList.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./teacherList.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e3e16212\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./teacherList.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-e3e16212\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/teacher/teacherList.vue\n// module id = null\n// module chunks = "],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/10.126e4652d393eb775d27.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([10],{UWEt:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={props:{},data:function(){return{newpass:""}},mounted:function(){},methods:{newPass:function(){this.axios({url:"http://api.zhituteam.com/api/user/firstSetPassword",method:"post",params:{newPass:this.newpass},withCredentials:!1,responseType:"json"}).then(function(e){if(400===e.data.error_code){var t=localStorage.getItem("zt_data"),a=JSON.parse(t);1===Number(a.role_type)?location.href="#/user":2===Number(a.role_type)&&(location.href="#/teacher")}else alert(e.data.message)}).catch(function(e){alert("ajax请求出错,错误信息:"+e)})}}},n={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"app"}},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.newpass,expression:"newpass"}],attrs:{type:"text",placeholder:"请设置密码"},domProps:{value:e.newpass},on:{input:function(t){t.target.composing||(e.newpass=t.target.value)}}}),e._v(" "),a("div",{staticClass:"button",on:{click:e.newPass}},[e._v("确认密码")]),e._v(" "),a("p",{staticClass:"info"},[e._v("登录即代表同意《知途家教》相关规定")])])},staticRenderFns:[]};var r=a("VU/8")(s,n,!1,function(e){a("uNRJ")},"data-v-b9b21eec",null);t.default=r.exports},uNRJ:function(e,t){}}); 2 | //# sourceMappingURL=10.126e4652d393eb775d27.js.map -------------------------------------------------------------------------------- /dist/static/js/10.126e4652d393eb775d27.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///src/components/public/fastLogin.vue","webpack:///./src/components/public/fastLogin.vue?c491","webpack:///./src/components/public/fastLogin.vue"],"names":["fastLogin","then","res","localData","message","catch","err","public_fastLogin","render","_vm","this","_h","$createElement","_c","_self","attrs","id","directives","name","rawName","value","expression","type","placeholder","domProps","on","input","$event","target","composing","newpass","_v","staticClass","click","newPass","staticRenderFns","Component","__webpack_require__","normalizeComponent","ssrContext","__webpack_exports__"],"mappings":"sGASA,IAAAA,2CAMA,sEAQA,4DACA,8EAFAC,KAAA,SAAAC,8BAUA,4BACA,wBACAC,yCAEA,iDAEA,+BAGAC,WAEAC,MAAA,SAAAC,0BAEAA,QC1CAC,GADiBC,OAFjB,WAA0B,IAAAC,EAAAC,KAAaC,EAAAF,EAAAG,eAA0BC,EAAAJ,EAAAK,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,SAAcI,aAAaC,KAAA,QAAAC,QAAA,UAAAC,MAAAX,EAAA,QAAAY,WAAA,YAAwEN,OAASO,KAAA,OAAAC,YAAA,SAAoCC,UAAWJ,MAAAX,EAAA,SAAsBgB,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,OAAAC,YAAsCpB,EAAAqB,QAAAH,EAAAC,OAAAR,WAAkCX,EAAAsB,GAAA,KAAAlB,EAAA,OAAwBmB,YAAA,SAAAP,IAAyBQ,MAAAxB,EAAAyB,WAAqBzB,EAAAsB,GAAA,UAAAtB,EAAAsB,GAAA,KAAAlB,EAAA,KAAuCmB,YAAA,SAAmBvB,EAAAsB,GAAA,0BAEngBI,oBCCjB,IAcAC,EAdAC,EAAA,OAcAC,CACAtC,EACAO,GATA,EAVA,SAAAgC,GACAF,EAAA,SAaA,kBAEA,MAUAG,EAAA,QAAAJ,EAAA","file":"static/js/10.126e4652d393eb775d27.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/public/fastLogin.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newpass),expression:\"newpass\"}],attrs:{\"type\":\"text\",\"placeholder\":\"请设置密码\"},domProps:{\"value\":(_vm.newpass)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newpass=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"button\",on:{\"click\":_vm.newPass}},[_vm._v(\"确认密码\")]),_vm._v(\" \"),_c('p',{staticClass:\"info\"},[_vm._v(\"登录即代表同意《知途家教》相关规定\")])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b9b21eec\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/public/fastLogin.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b9b21eec\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./fastLogin.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./fastLogin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./fastLogin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b9b21eec\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./fastLogin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b9b21eec\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/public/fastLogin.vue\n// module id = null\n// module chunks = "],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/11.b1f11b8e1356a8d65722.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([11],{"59il":function(t,s,n){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var a={data:function(){return{spanAuto:1}},mounted:function(){},methods:{start:function(){this.spanAuto=1,this.courseAjax(1)},end:function(){this.spanAuto=0,this.courseAjax(2)},courseAjax:function(t){this.axios({url:"http://api.zhituteam.com/api/course/studentlists",method:"get",params:{status:t},withCredentials:!1,responseType:"json"}).then(function(t){alert(t.data.message)}).catch(function(t){alert("ajax请求出错,错误信息:"+t)})}}},e={render:function(){var t=this.$createElement,s=this._self._c||t;return s("div",{attrs:{id:"app"}},[s("div",{staticClass:"head"},[s("span",{class:{spanAuto:this.spanAuto},on:{click:this.start}},[this._v("未开始")]),this._v(" "),s("span",{class:{spanAuto:!this.spanAuto},on:{click:this.end}},[this._v("已结束")])])])},staticRenderFns:[]};var i=n("VU/8")(a,e,!1,function(t){n("GcVd")},"data-v-6e10b583",null);s.default=i.exports},GcVd:function(t,s){}}); 2 | //# sourceMappingURL=11.b1f11b8e1356a8d65722.js.map -------------------------------------------------------------------------------- /dist/static/js/11.b1f11b8e1356a8d65722.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///src/components/user/userCourse.vue","webpack:///./src/components/user/userCourse.vue?80e0","webpack:///./src/components/user/userCourse.vue"],"names":["userCourse","status","then","res","message","catch","err","user_userCourse","render","_h","this","$createElement","_c","_self","attrs","id","staticClass","class","spanAuto","on","click","start","_v","end","staticRenderFns","Component","__webpack_require__","normalizeComponent","ssrContext","__webpack_exports__"],"mappings":"wGAUA,IAAAA,mCAKA,iEAOA,kBACA,iCAGA,kBACA,2CAKA,0DACA,qBAGAC,4CALAC,KAAA,SAAAC,gBAUAC,WACAC,MAAA,SAAAC,0BAEAA,QCzCAC,GADiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,OAAYI,YAAA,SAAmBJ,EAAA,QAAaK,OAAOC,SAAtJR,KAAsJQ,UAAsBC,IAAKC,MAAjLV,KAAiLW,SAAjLX,KAAoMY,GAAA,SAApMZ,KAAoMY,GAAA,KAAAV,EAAA,QAAyCK,OAAOC,UAApPR,KAAoPQ,UAAuBC,IAAKC,MAAhRV,KAAgRa,OAAhRb,KAAiSY,GAAA,cAE1SE,oBCCjB,IAcAC,EAdAC,EAAA,OAcAC,CACA3B,EACAO,GATA,EAVA,SAAAqB,GACAF,EAAA,SAaA,kBAEA,MAUAG,EAAA,QAAAJ,EAAA","file":"static/js/11.b1f11b8e1356a8d65722.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/user/userCourse.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"head\"},[_c('span',{class:{spanAuto:_vm.spanAuto},on:{\"click\":_vm.start}},[_vm._v(\"未开始\")]),_vm._v(\" \"),_c('span',{class:{spanAuto:!_vm.spanAuto},on:{\"click\":_vm.end}},[_vm._v(\"已结束\")])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6e10b583\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/user/userCourse.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6e10b583\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./userCourse.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userCourse.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userCourse.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e10b583\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./userCourse.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6e10b583\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/user/userCourse.vue\n// module id = null\n// module chunks = "],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/12.883ef26a8d77485065a8.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([12],{M3LS:function(t,e){},qPUa:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var c={components:{TeacherList:a("zXZL").a},data:function(){return{collectList:""}},mounted:function(){this.collectAjax()},methods:{collectAjax:function(){var t=this;this.axios({url:"http://api.zhituteam.com/api/collect/lists",method:"get",params:{offset:0,limit:6},withCredentials:!1,responseType:"json"}).then(function(e){t.collectList=e.data.data}).catch(function(t){alert("ajax请求出错,错误信息:"+t)})}}},i={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{attrs:{id:"app"}},[e("TeacherList",{attrs:{teacherLists:this.collectList.teacher}})],1)},staticRenderFns:[]};var n=a("VU/8")(c,i,!1,function(t){a("M3LS")},"data-v-5719613e",null);e.default=n.exports}}); 2 | //# sourceMappingURL=12.883ef26a8d77485065a8.js.map -------------------------------------------------------------------------------- /dist/static/js/12.883ef26a8d77485065a8.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///src/components/user/userCollect.vue","webpack:///./src/components/user/userCollect.vue?a849","webpack:///./src/components/user/userCollect.vue"],"names":["userCollect","TeacherList","collectAjax","this","then","res","data","catch","err","user_userCollect","render","_h","$createElement","_c","_self","attrs","id","teacherLists","collectList","teacher","staticRenderFns","Component","__webpack_require__","normalizeComponent","ssrContext","__webpack_exports__"],"mappings":"+HAQAA,eAIAC,sBAAA,sCAIA,6BAGAC,qDAIAC,qBAEA,oDACA,qBAEA,QAEA,4CANAC,KAAA,SAAAC,wBAWAC,OACAC,MAAA,SAAAC,0BAEAA,QCnCAC,GADiBC,OAFjB,WAA0B,IAAaC,EAAbR,KAAaS,eAA0BC,EAAvCV,KAAuCW,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,eAAoBE,OAAOE,aAA9Hd,KAA8He,YAAAC,YAAwC,IAE/KC,oBCCjB,IAcAC,EAdAC,EAAA,OAcAC,CACAvB,EACAS,GATA,EAVA,SAAAe,GACAF,EAAA,SAaA,kBAEA,MAUAG,EAAA,QAAAJ,EAAA","file":"static/js/12.883ef26a8d77485065a8.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/user/userCollect.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('TeacherList',{attrs:{\"teacherLists\":_vm.collectList.teacher}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5719613e\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/user/userCollect.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5719613e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./userCollect.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userCollect.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userCollect.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5719613e\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./userCollect.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5719613e\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/user/userCollect.vue\n// module id = null\n// module chunks = "],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/13.3c98118b60abc5785348.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([13],{IRHn:function(t,s,a){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var e={components:{TeacherList:a("zXZL").a},data:function(){return{classType:"",classData:"",headAuto:1,gradeNum:0,typeNum:0,subjectNum:0,mark:0,gradeName:"年级",subjectName:"科目",typeName:"教师类型"}},mounted:function(){this.subjectNum=sessionStorage.getItem("subjectNum"),this.classAjax()},methods:{grade:function(){this.headAuto=1,this.mark=1,this.classType=["全部","一年级","二年级","三年级","四年级","五年级","六年级","初一","初二","初三","高一","高二","高三"]},subject:function(){this.headAuto=2,this.mark=1,this.classType=["全部","语文","数学","英语","物理","化学","生物","政治","历史","地理","音乐","美术"]},type:function(){this.headAuto=3,this.mark=1,this.classType=["全部","专职老师","在校大学生"," "]},markClick:function(){this.classType="",this.mark=0},classAjax:function(){var t=this;this.axios({url:"http://api.zhituteam.com/api/teacher/lists",method:"get",params:{grade:t.gradeNum,type:t.typeNum,subject:t.subjectNum,offset:0,limit:20},withCredentials:!1,responseType:"json"}).then(function(s){t.classData=s.data.data}).catch(function(t){alert("ajax请求出错,错误信息:"+t)})},classClick:function(t,s){switch(this.headAuto){case 1:this.gradeName=s,this.gradeNum=t;break;case 2:this.subjectName=s,this.subjectNum=t>0?t+12:0;break;case 3:this.typeName=s,this.typeNum=t>0?t+23:0}this.markClick(),this.classAjax()}}},c={render:function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{attrs:{id:"app"}},[a("div",{staticClass:"head"},[a("span",{staticClass:"btm",class:1==t.headAuto?"headColor":"",on:{click:t.grade}},[t._v(t._s(t.gradeName))]),t._v("|\n "),a("span",{staticClass:"btm",class:2==t.headAuto?"headColor":"",on:{click:t.subject}},[t._v(t._s(t.subjectName))]),t._v("|\n "),a("span",{staticClass:"btm",class:3==t.headAuto?"headColor":"",on:{click:t.type}},[t._v(t._s(t.typeName))])]),t._v(" "),t.classType?a("div",{staticClass:"headOut"},t._l(t.classType,function(s,e){return a("span",{key:e,on:{click:function(a){t.classClick(e,s)}}},[t._v(t._s(s))])})):t._e(),t._v(" "),t.classData?a("TeacherList",{staticClass:"list",attrs:{teacherLists:t.classData.teacher}}):t._e(),t._v(" "),t.mark?a("div",{staticClass:"mark",on:{click:t.markClick}}):t._e()],1)},staticRenderFns:[]};var i=a("VU/8")(e,c,!1,function(t){a("Zw/0")},"data-v-1270cf69",null);s.default=i.exports},"Zw/0":function(t,s){}}); 2 | //# sourceMappingURL=13.3c98118b60abc5785348.js.map -------------------------------------------------------------------------------- /dist/static/js/7.c6777a0dd1b7c59cece5.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([7],{"5POv":function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a("mvHQ"),o=a.n(n),s={props:{},data:function(){return{yan:1,yanTime:60,flag:!0,chan:1,phone:"",code:"",data:""}},methods:{send:function(){var e=this;this.yan=0,this.flag=!1;var t=setInterval(function(){e.yanTime=e.yanTime-1,e.yanTime<0&&(e.yan=1,e.yanTime=60,e.flag=!0,clearInterval(t))},1e3);this.axios({url:"http://api.zhituteam.com/api/cmn/sms/send",method:"post",params:{code_type:1,phone:this.phone},responseType:"json"}).then(function(t){0===t.data.error_code?e.data=t.data.data:(alert(t.data.message),e.yanTime=0)}).catch(function(e){alert("ajax请求出错,错误信息:"+e)})},login:function(){var e=this,t=1;t=1===this.chan?1:2,this.axios({url:"http://api.zhituteam.com/api/user/fastLogin",method:"post",params:{code:this.code,phone:this.phone,code_no:this.data,role_type:t},responseType:"json"}).then(function(t){0===t.data.error_code?(localStorage.setItem("zt_data",o()(t.data.data)),e.axios.defaults.headers.common["access-token"]=t.data.data.token,0===t.data.data.setpass?1===t.data.data.role_type?location.href="#/user":location.href="#/teacher":location.href="#/fastLogin"):alert(t.data.message)}).catch(function(e){alert("ajax请求出错,错误信息:"+e)})},studentChoice:function(){this.chan=1},teacherChoice:function(){this.chan=0}}},i={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"app"}},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.phone,expression:"phone"}],attrs:{type:"text",placeholder:"请输入手机号"},domProps:{value:e.phone},on:{input:function(t){t.target.composing||(e.phone=t.target.value)}}}),e._v(" "),a("input",{directives:[{name:"model",rawName:"v-model",value:e.code,expression:"code"}],attrs:{type:"text",placeholder:"请输入验证码"},domProps:{value:e.code},on:{input:function(t){t.target.composing||(e.code=t.target.value)}}}),e._v(" "),a("span",{staticClass:"conmeCode",on:{click:function(t){e.flag&&e.send()}}},[1===e.yan?a("span",[e._v("获取验证码")]):e._e(),e._v(" "),0===e.yan?a("span",{staticClass:"conmeCode-two"},[e._v(e._s(e.yanTime)+"秒内有效")]):e._e()]),e._v(" "),a("div",{staticClass:"p-box"},[a("p",{class:{change:e.chan},on:{click:e.studentChoice}},[e._v("我是家长/学生")]),e._v(" "),a("p",{class:{change:!e.chan},on:{click:e.teacherChoice}},[e._v("我是教师")])]),e._v(" "),a("div",{staticClass:"button",on:{click:e.login}},[e._v("登 录")]),e._v(" "),a("p",{staticClass:"info"},[e._v("登录即代表同意《知途家教》相关规定")])])},staticRenderFns:[]};var c=a("VU/8")(s,i,!1,function(e){a("6oA+")},"data-v-78321930",null);t.default=c.exports},"6oA+":function(e,t){},FeBl:function(e,t){var a=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=a)},mvHQ:function(e,t,a){e.exports={default:a("qkKv"),__esModule:!0}},qkKv:function(e,t,a){var n=a("FeBl"),o=n.JSON||(n.JSON={stringify:JSON.stringify});e.exports=function(e){return o.stringify.apply(o,arguments)}}}); 2 | //# sourceMappingURL=7.c6777a0dd1b7c59cece5.js.map -------------------------------------------------------------------------------- /dist/static/js/8.7f0560bd7d2100b42835.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([8],{"6rku":function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=a("mvHQ"),s=a.n(o),n={props:{},data:function(){return{tell:"",password:""}},mounted:function(){},methods:{loginFunc:function(){var t=this;t.axios({url:"http://api.zhituteam.com/api/user/passwordLogin",method:"post",data:{phone:t.tell,password:t.password}}).then(function(e){0===e.data.error_code?(localStorage.setItem("zt_data",s()(e.data.data)),t.axios.defaults.headers.common["access-token"]=e.data.data.token,1===e.data.data.role_type?location.href="#/user":location.href="#/teacher"):alert(e.data.message)})},register:function(){location.href="#/register"}}},r={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.tell,expression:"tell"}],attrs:{type:"text",placeholder:"请输入手机号"},domProps:{value:t.tell},on:{input:function(e){e.target.composing||(t.tell=e.target.value)}}}),t._v(" "),a("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{type:"password",placeholder:"请输入密码"},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}}),t._v(" "),a("div",{staticClass:"button",on:{click:t.loginFunc}},[t._v("登 录")]),t._v(" "),a("p",{staticClass:"info"},[t._v("登录即代表同意《知途家教》相关规定")]),t._v(" "),a("p",{staticClass:"login-bottom"},[a("span",{staticClass:"no",on:{click:t.register}},[t._v("没有账号?快捷登录")]),t._v(" "),a("span",{staticClass:"forget"},[t._v("忘记密码")])])])},staticRenderFns:[]};var i=a("VU/8")(n,r,!1,function(t){a("9JnE")},"data-v-152b80a6",null);e.default=i.exports},"9JnE":function(t,e){},FeBl:function(t,e){var a=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=a)},mvHQ:function(t,e,a){t.exports={default:a("qkKv"),__esModule:!0}},qkKv:function(t,e,a){var o=a("FeBl"),s=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return s.stringify.apply(s,arguments)}}}); 2 | //# sourceMappingURL=8.7f0560bd7d2100b42835.js.map -------------------------------------------------------------------------------- /dist/static/js/8.7f0560bd7d2100b42835.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///src/components/public/login.vue","webpack:///./src/components/public/login.vue?1370","webpack:///./src/components/public/login.vue","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/babel-runtime/core-js/json/stringify.js","webpack:///./node_modules/core-js/library/fn/json/stringify.js"],"names":["login","this","tell","password","then","res","data","token","message","public_login","render","_vm","_h","$createElement","_c","_self","attrs","id","directives","name","rawName","value","expression","type","placeholder","domProps","on","input","$event","target","composing","_v","staticClass","click","loginFunc","register","staticRenderFns","Component","__webpack_require__","normalizeComponent","ssrContext","__webpack_exports__","core","module","exports","version","__e","default","__esModule","$JSON","JSON","stringify","it","apply","arguments"],"mappings":"gIAcAA,wCAKA,YAEA,8DAOAC,kBAEA,yDACA,qBAEAC,gBAGAC,YAPAC,KAAA,SAAAC,oEAUAC,mEAEAC,8CAEA,uBAEA,0BAQAC,8CAKA,gBCvDAC,GADiBC,OAFjB,WAA0B,IAAAC,EAAAV,KAAaW,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,SAAcI,aAAaC,KAAA,QAAAC,QAAA,UAAAC,MAAAV,EAAA,KAAAW,WAAA,SAAkEN,OAASO,KAAA,OAAAC,YAAA,UAAqCC,UAAWJ,MAAAV,EAAA,MAAmBe,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,OAAAC,YAAsCnB,EAAAT,KAAA0B,EAAAC,OAAAR,WAA+BV,EAAAoB,GAAA,KAAAjB,EAAA,SAA0BI,aAAaC,KAAA,QAAAC,QAAA,UAAAC,MAAAV,EAAA,SAAAW,WAAA,aAA0EN,OAASO,KAAA,WAAAC,YAAA,SAAwCC,UAAWJ,MAAAV,EAAA,UAAuBe,IAAKC,MAAA,SAAAC,GAAyBA,EAAAC,OAAAC,YAAsCnB,EAAAR,SAAAyB,EAAAC,OAAAR,WAAmCV,EAAAoB,GAAA,KAAAjB,EAAA,OAAwBkB,YAAA,SAAAN,IAAyBO,MAAAtB,EAAAuB,aAAuBvB,EAAAoB,GAAA,UAAApB,EAAAoB,GAAA,KAAAjB,EAAA,KAAuCkB,YAAA,SAAmBrB,EAAAoB,GAAA,uBAAApB,EAAAoB,GAAA,KAAAjB,EAAA,KAAoDkB,YAAA,iBAA2BlB,EAAA,QAAakB,YAAA,KAAAN,IAAqBO,MAAAtB,EAAAwB,YAAsBxB,EAAAoB,GAAA,eAAApB,EAAAoB,GAAA,KAAAjB,EAAA,QAA+CkB,YAAA,WAAqBrB,EAAAoB,GAAA,eAEh/BK,oBCCjB,IAcAC,EAdAC,EAAA,OAcAC,CACAvC,EACAS,GATA,EAVA,SAAA+B,GACAF,EAAA,SAaA,kBAEA,MAUAG,EAAA,QAAAJ,EAAA,mDC1BA,IAAAK,EAAAC,EAAAC,SAA6BC,QAAA,SAC7B,iBAAAC,UAAAJ,yBCDAC,EAAAC,SAAkBG,QAAAT,EAAA,QAAAU,YAAA,yBCAlB,IAAAN,EAAAJ,EAAA,QACAW,EAAAP,EAAAQ,OAAAR,EAAAQ,MAAuCC,UAAAD,KAAAC,YACvCR,EAAAC,QAAA,SAAAQ,GACA,OAAAH,EAAAE,UAAAE,MAAAJ,EAAAK","file":"static/js/8.7f0560bd7d2100b42835.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/public/login.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tell),expression:\"tell\"}],attrs:{\"type\":\"text\",\"placeholder\":\"请输入手机号\"},domProps:{\"value\":(_vm.tell)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.tell=$event.target.value}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"placeholder\":\"请输入密码\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"button\",on:{\"click\":_vm.loginFunc}},[_vm._v(\"登 录\")]),_vm._v(\" \"),_c('p',{staticClass:\"info\"},[_vm._v(\"登录即代表同意《知途家教》相关规定\")]),_vm._v(\" \"),_c('p',{staticClass:\"login-bottom\"},[_c('span',{staticClass:\"no\",on:{\"click\":_vm.register}},[_vm._v(\"没有账号?快捷登录\")]),_vm._v(\" \"),_c('span',{staticClass:\"forget\"},[_vm._v(\"忘记密码\")])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-152b80a6\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/public/login.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-152b80a6\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./login.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./login.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-152b80a6\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-152b80a6\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/public/login.vue\n// module id = null\n// module chunks = ","var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_core.js\n// module id = FeBl\n// module chunks = 7 8","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/json/stringify.js\n// module id = mvHQ\n// module chunks = 7 8","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/json/stringify.js\n// module id = qkKv\n// module chunks = 7 8"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/9.2c38cedbecc024d68dac.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([9],{H5KB:function(t,e,n){t.exports=n.p+"static/img/logo_share.5bc4648.png"},Tiku:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{id:"app"}},[i("div",{staticClass:"head"},[i("img",{attrs:{src:n("H5KB"),alt:""}})]),t._v(" "),i("p",[t._v("\n 知途家教,汇集了众多有丰富教学经验和教学特色的精英教师,\n 致力于搭建一个让家长放心、省心的家教平台。我们具有丰富的教师资源,\n 让您找好老师,找对老师!提分的捷径, 就是更有针对性的学习,\n 告别大班课,知途家教一对一,成绩提高不是梦。\n ")]),t._v(" "),i("ul",[i("li",[t._v("网站:www.zhituteam.com")]),t._v(" "),i("li",[t._v("客服电话:15611004123")]),t._v(" "),i("li",{staticStyle:{border:"none"}},[t._v("微信公众号:知途家教")])])])}]};var a=n("VU/8")(null,i,!1,function(t){n("nm7m")},"data-v-6ed95a51",null);e.default=a.exports},nm7m:function(t,e){}}); 2 | //# sourceMappingURL=9.2c38cedbecc024d68dac.js.map -------------------------------------------------------------------------------- /dist/static/js/9.2c38cedbecc024d68dac.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./static/img/logo_share.png","webpack:///./src/components/public/about.vue?1394","webpack:///./src/components/public/about.vue"],"names":["module","exports","__webpack_require__","p","about","render","this","$createElement","_self","_c","_m","staticRenderFns","_vm","_h","attrs","id","staticClass","src","alt","_v","staticStyle","border","Component","normalizeComponent","ssrContext","__webpack_exports__"],"mappings":"uCAAAA,EAAAC,QAAAC,EAAAC,EAAA,wHCAA,IAGAC,GADiBC,OAFjB,WAA0BC,KAAaC,eAAbD,KAAuCE,MAAAC,GAAwB,OAA/DH,KAA+DI,GAAA,IAExEC,iBADjB,WAAoC,IAAAC,EAAAN,KAAaO,EAAAD,EAAAL,eAA0BE,EAAAG,EAAAJ,MAAAC,IAAAI,EAAwB,OAAAJ,EAAA,OAAiBK,OAAOC,GAAA,SAAYN,EAAA,OAAYO,YAAA,SAAmBP,EAAA,OAAYK,OAAOG,IAAAf,EAAA,QAAAgB,IAAA,QAA8DN,EAAAO,GAAA,KAAAV,EAAA,KAAAG,EAAAO,GAAA,wJAAAP,EAAAO,GAAA,KAAAV,EAAA,MAAAA,EAAA,MAAAG,EAAAO,GAAA,0BAAAP,EAAAO,GAAA,KAAAV,EAAA,MAAAG,EAAAO,GAAA,sBAAAP,EAAAO,GAAA,KAAAV,EAAA,MAA6TW,aAAaC,OAAA,UAAiBT,EAAAO,GAAA,uBCEllB,IAaAG,EAbApB,EAAA,OAaAqB,CAXA,KAaAnB,GATA,EATA,SAAAoB,GACAtB,EAAA,SAYA,kBAEA,MAUAuB,EAAA,QAAAH,EAAA","file":"static/js/9.2c38cedbecc024d68dac.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/img/logo_share.5bc4648.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./static/img/logo_share.png\n// module id = H5KB\n// module chunks = 9","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"head\"},[_c('img',{attrs:{\"src\":require(\"../../../static/img/logo_share.png\"),\"alt\":\"\"}})]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n 知途家教,汇集了众多有丰富教学经验和教学特色的精英教师,\\n 致力于搭建一个让家长放心、省心的家教平台。我们具有丰富的教师资源,\\n 让您找好老师,找对老师!提分的捷径, 就是更有针对性的学习,\\n 告别大班课,知途家教一对一,成绩提高不是梦。\\n \")]),_vm._v(\" \"),_c('ul',[_c('li',[_vm._v(\"网站:www.zhituteam.com\")]),_vm._v(\" \"),_c('li',[_vm._v(\"客服电话:15611004123\")]),_vm._v(\" \"),_c('li',{staticStyle:{\"border\":\"none\"}},[_vm._v(\"微信公众号:知途家教\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6ed95a51\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/public/about.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6ed95a51\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./about.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nvar __vue_script__ = null\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6ed95a51\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./about.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6ed95a51\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/public/about.vue\n// module id = null\n// module chunks = "],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/app.36713eb5799930f25e89.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([15],{"5OHe":function(n,e){},NHnr:function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=t("7+uW"),o={render:function(){var n=this.$createElement,e=this._self._c||n;return e("div",{attrs:{id:"app"}},[e("router-view")],1)},staticRenderFns:[]};var c=t("VU/8")({},o,!1,function(n){t("f7ih")},null,null).exports,r=t("/ocq");a.a.use(r.a);var i=new r.a({routes:[{path:"/",name:"Home",component:function(n){return Promise.all([t.e(0),t.e(6)]).then(function(){var e=[t("wUZA")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/teacher_class",name:"TeacherClass",component:function(n){return Promise.all([t.e(0),t.e(13)]).then(function(){var e=[t("IRHn")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/login",name:"Login",component:function(n){return t.e(8).then(function(){var e=[t("6rku")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/user",name:"User",component:function(n){return t.e(1).then(function(){var e=[t("BWhR")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/register",name:"Register",component:function(n){return t.e(7).then(function(){var e=[t("5POv")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/teacher_detail",name:"teacherXiangQing",component:function(n){return t.e(2).then(function(){var e=[t("LrNV")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/fastlogin",name:"fastLogin",component:function(n){return t.e(10).then(function(){var e=[t("UWEt")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/teacher",name:"Teacher",component:function(n){return t.e(3).then(function(){var e=[t("SWap")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/user_info",name:"UserInfo",component:function(n){return t.e(4).then(function(){var e=[t("peQI")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/teacher_info",name:"TeacherInfo",component:function(n){return t.e(5).then(function(){var e=[t("uEYZ")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/user_collect",name:"UserCollect",component:function(n){return Promise.all([t.e(0),t.e(12)]).then(function(){var e=[t("qPUa")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/about",name:"About",component:function(n){return t.e(9).then(function(){var e=[t("Tiku")];n.apply(null,e)}.bind(this)).catch(t.oe)}},{path:"/user_course",name:"UserCourse",component:function(n){return t.e(11).then(function(){var e=[t("59il")];n.apply(null,e)}.bind(this)).catch(t.oe)}}]}),u=t("mtWM"),p=t.n(u);t("5OHe");a.a.config.productionTip=!1,a.a.prototype.axios=p.a;var l=localStorage.getItem("zt_data");if(""!==l&&l){var h=JSON.parse(l);p.a.defaults.headers.common["access-token"]=h.token}new a.a({el:"#app",router:i,components:{App:c},template:""})},f7ih:function(n,e){}},["NHnr"]); 2 | //# sourceMappingURL=app.36713eb5799930f25e89.js.map -------------------------------------------------------------------------------- /dist/static/js/app.36713eb5799930f25e89.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/App.vue?0366","webpack:///./src/App.vue","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["selectortype_template_index_0_src_App","render","_h","this","$createElement","_c","_self","attrs","id","staticRenderFns","src_App","__webpack_require__","normalizeComponent","ssrContext","vue_esm","use","vue_router_esm","router","routes","path","name","component","resolve","Promise","all","e","then","__WEBPACK_AMD_REQUIRE_ARRAY__","bind","catch","oe","config","productionTip","prototype","axios","axios_default","a","localData","localStorage","getItem","ztData","JSON","parse","defaults","headers","common","token","el","components","App","template"],"mappings":"6IAGAA,GADiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,oBAE5GI,oBCCjB,IAuBAC,EAvBAC,EAAA,OAcAC,IAEAZ,GATA,EAVA,SAAAa,GACAF,EAAA,SAaA,KAEA,MAUA,oBCnBAG,EAAA,EAAIC,IAAIC,EAAA,GAER,IAAAC,EAAA,IAAmBD,EAAA,GAEjBE,SAEIC,KAAM,IACNC,KAAM,OACNC,UAAW,SAACC,GAAD,OAAaC,QAAAC,KAAAb,EAAAc,EAAA,GAAAd,EAAAc,EAAA,KAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAIxBX,KAAM,iBACNC,KAAM,eACNC,UAAW,SAACC,GAAD,OAAaC,QAAAC,KAAAb,EAAAc,EAAA,GAAAd,EAAAc,EAAA,MAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAIxBX,KAAM,SACNC,KAAM,QACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAIxBX,KAAM,QACNC,KAAM,OACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAIxBX,KAAM,YACNC,KAAM,WACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,kBACNC,KAAM,mBACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,aACNC,KAAM,YACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,IAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,WACNC,KAAM,UACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,aACNC,KAAM,WACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,gBACNC,KAAM,cACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,gBACNC,KAAM,cACNC,UAAW,SAACC,GAAD,OAAaC,QAAAC,KAAAb,EAAAc,EAAA,GAAAd,EAAAc,EAAA,MAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,SACNC,KAAM,QACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,GAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,OAGxBX,KAAM,eACNC,KAAM,aACNC,UAAW,SAACC,GAAD,OAAaX,EAAAc,EAAA,IAAAC,KAAA,WAAQ,IAAAC,GAAChB,EAAA,SAAT,iBAAAiB,KAAAzB,OAAA0B,MAAAlB,EAAAmB,wCCtE9BhB,EAAA,EAAIiB,OAAOC,eAAgB,EAE3BlB,EAAA,EAAImB,UAAUC,MAAQC,EAAAC,EAEtB,IAAMC,EAAYC,aAAaC,QAAQ,WACvC,GAAkB,KAAdF,GAAoBA,EAAW,CACjC,IAAMG,EAASC,KAAKC,MAAML,GAC1BF,EAAAC,EAAMO,SAASC,QAAQC,OAAO,gBAAkBL,EAAOM,MAIzD,IAAIhC,EAAA,GACFiC,GAAI,OACJ9B,SACA+B,YAAcC,IAAAvC,GACdwC,SAAU","file":"static/js/app.36713eb5799930f25e89.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-65d0936e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-65d0936e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-65d0936e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\n// import Home from '@/components/home'\n// import TeacherClass from '@/components/classification'\n// import Login from '@/components/public/login'\n// import User from '@/components/user/user'\n\nVue.use(Router)\n\nexport default new Router({\n // mode: 'history',\n routes: [\n {\n path: '/',\n name: 'Home',\n component: (resolve) => require(['@/components/home'], resolve)\n // component: Home\n },\n {\n path: '/teacher_class',\n name: 'TeacherClass',\n component: (resolve) => require(['@/components/public/classification'], resolve)\n // component: TeacherClass\n },\n {\n path: '/login',\n name: 'Login',\n component: (resolve) => require(['@/components/public/login'], resolve)\n // component: Login\n },\n {\n path: '/user',\n name: 'User',\n component: (resolve) => require(['@/components/user/user'], resolve)\n // component: User\n },\n {\n path: '/register',\n name: 'Register',\n component: (resolve) => require(['@/components/public/register'], resolve)\n },\n {\n path: '/teacher_detail',\n name: 'teacherXiangQing',\n component: (resolve) => require(['@/components/teacher/teacherXiangQing'], resolve)\n },\n {\n path: '/fastlogin',\n name: 'fastLogin',\n component: (resolve) => require(['@/components/public/fastLogin'], resolve)\n },\n {\n path: '/teacher',\n name: 'Teacher',\n component: (resolve) => require(['@/components/teacher/teacher'], resolve)\n },\n {\n path: '/user_info',\n name: 'UserInfo',\n component: (resolve) => require(['@/components/user/userInfo'], resolve)\n },\n {\n path: '/teacher_info',\n name: 'TeacherInfo',\n component: (resolve) => require(['@/components/teacher/teacherInfo'], resolve)\n },\n {\n path: '/user_collect',\n name: 'UserCollect',\n component: (resolve) => require(['@/components/user/userCollect'], resolve)\n },\n {\n path: '/about',\n name: 'About',\n component: (resolve) => require(['@/components/public/about'], resolve)\n },\n {\n path: '/user_course',\n name: 'UserCourse',\n component: (resolve) => require(['@/components/user/userCourse'], resolve)\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport axios from 'axios'\nimport 'mint-ui/lib/style.css'\n// import {Indicator, Toast, InfiniteScroll} from 'mint-ui'\n\nVue.config.productionTip = false;\n\nVue.prototype.axios = axios;\n\nconst localData = localStorage.getItem('zt_data');\nif (localData !== '' && localData) {\n const ztData = JSON.parse(localData);\n axios.defaults.headers.common['access-token'] = ztData.token;\n}\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: ''\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/axiosHeaders.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import axios from 'axios' 3 | 4 | Vue.prototype.axios = axios; 5 | function setHeaders () { 6 | const localData = localStorage.getItem('zt_data'); 7 | if (localData !== '' && localData) { 8 | const ztData = JSON.parse(localData); 9 | axios.defaults.headers.common['access-token'] = ztData.token; 10 | } 11 | } 12 | 13 | export default { 14 | setHeaders: setHeaders 15 | } 16 | -------------------------------------------------------------------------------- /dist/static/js/manifest.7bf53608bd99f03ef1ef.js: -------------------------------------------------------------------------------- 1 | !function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,o,a){for(var d,f,i,u=0,b=[];u 1 && queryString[1]) || ""; 5 | return decodeURIComponent(val); 6 | } 7 | 8 | module.exports = { 9 | getQueryStr: getQueryStr 10 | }; 11 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 知途家教 8 | 79 | 80 | 81 | 82 |
83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zhitu-tutor", 3 | "version": "1.0.0", 4 | "description": "知途家教移动版", 5 | "author": "wwenj ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 9 | "start": "npm run dev", 10 | "lint": "eslint --ext .js,.vue src", 11 | "lint-fix": "eslint --fix --ext .js,.vue src", 12 | "build": "node build/build.js" 13 | }, 14 | "dependencies": { 15 | "mint-ui": "^2.2.13", 16 | "vue": "^2.5.2", 17 | "vue-router": "^3.0.1" 18 | }, 19 | "devDependencies": { 20 | "autoprefixer": "^7.1.2", 21 | "axios": "^0.18.0", 22 | "babel-core": "^6.22.1", 23 | "babel-eslint": "^8.2.1", 24 | "babel-helper-vue-jsx-merge-props": "^2.0.3", 25 | "babel-loader": "^7.1.1", 26 | "babel-plugin-syntax-jsx": "^6.18.0", 27 | "babel-plugin-transform-runtime": "^6.22.0", 28 | "babel-plugin-transform-vue-jsx": "^3.5.0", 29 | "babel-preset-env": "^1.3.2", 30 | "babel-preset-stage-2": "^6.22.0", 31 | "chalk": "^2.0.1", 32 | "copy-webpack-plugin": "^4.0.1", 33 | "css-loader": "^0.28.0", 34 | "eslint": "^4.15.0", 35 | "eslint-config-standard": "^10.2.1", 36 | "eslint-friendly-formatter": "^3.0.0", 37 | "eslint-loader": "^1.7.1", 38 | "eslint-plugin-import": "^2.7.0", 39 | "eslint-plugin-node": "^5.2.0", 40 | "eslint-plugin-promise": "^3.4.0", 41 | "eslint-plugin-standard": "^3.0.1", 42 | "eslint-plugin-vue": "^4.0.0", 43 | "extract-text-webpack-plugin": "^3.0.0", 44 | "file-loader": "^1.1.4", 45 | "friendly-errors-webpack-plugin": "^1.6.1", 46 | "html-webpack-plugin": "^2.30.1", 47 | "node-notifier": "^5.1.2", 48 | "node-sass": "^4.7.2", 49 | "optimize-css-assets-webpack-plugin": "^3.2.0", 50 | "ora": "^1.2.0", 51 | "portfinder": "^1.0.13", 52 | "postcss-import": "^11.0.0", 53 | "postcss-loader": "^2.0.8", 54 | "postcss-url": "^7.2.1", 55 | "rimraf": "^2.6.0", 56 | "sass-loader": "^6.0.7", 57 | "semver": "^5.3.0", 58 | "shelljs": "^0.7.6", 59 | "uglifyjs-webpack-plugin": "^1.1.1", 60 | "url-loader": "^0.5.8", 61 | "vue-loader": "^13.3.0", 62 | "vue-style-loader": "^3.0.1", 63 | "vue-template-compiler": "^2.5.2", 64 | "webpack": "^3.6.0", 65 | "webpack-bundle-analyzer": "^2.9.0", 66 | "webpack-dev-server": "^2.9.1", 67 | "webpack-merge": "^4.1.0" 68 | }, 69 | "engines": { 70 | "node": ">= 6.0.0", 71 | "npm": ">= 3.0.0" 72 | }, 73 | "browserslist": [ 74 | "> 1%", 75 | "last 2 versions", 76 | "not ie <= 8" 77 | ] 78 | } 79 | -------------------------------------------------------------------------------- /product/api_doc/CommonApi_File.md: -------------------------------------------------------------------------------- 1 | ## 公共接口-文件 2 | **简要描述:** 3 | 4 | - 上传文件接口 5 | 6 | **请求URL:** 7 | - ` http://xx.com/cmn/file/upload ` 8 | 9 | **请求方式:** 10 | - POST 11 | 12 | **参数:** 13 | 14 | |参数名|必选|类型|说明| 15 | |:---- |:---|:----- |----- | 16 | |app_key |否 |string |app标识 | 17 | |access_token |否 |string | 用户秘钥 | 18 | |file |是 |formData| 需要上传的文件 | 19 | 20 | 21 | **返回示例** 22 | 23 | ``` 24 | { 25 | "error_code": 0, 26 | "message": "success", 27 | "data": { 28 | "filename": 'string', 29 | "fileSignUrl": 'string' 30 | } 31 | } 32 | ``` 33 | 34 | **返回参数说明** 35 | 36 | |参数名|类型|说明| 37 | |:-----|:-----|-----| 38 | |filename| string | oss存储的文件名| 39 | |fileSignUrl| string | oss临时签名路径(有过期时间)| 40 | 41 | *** 42 | **简要描述:** 43 | 44 | - 获取文件临时路径接口 45 | 46 | **请求URL:** 47 | - ` http://xx.com/cmn/file/url ` 48 | 49 | **请求方式:** 50 | - GET 51 | 52 | **参数:** 53 | 54 | |参数名|必选|类型|说明| 55 | |:---- |:---|:----- |----- | 56 | |app_key |否 |string |app标识 | 57 | |access_token |否 |string | 用户秘钥 | 58 | |filename |是 |string| 文件名 | 59 | 60 | 61 | **返回示例** 62 | 63 | ``` 64 | { 65 | "error_code": 0, 66 | "message": "success", 67 | "data": "string" 68 | } 69 | ``` 70 | 71 | **返回参数说明** 72 | 直接返回文件地址 73 | 74 | |参数名|类型|说明| 75 | |:-----|:-----|-----| 76 | -------------------------------------------------------------------------------- /product/api_doc/app.md: -------------------------------------------------------------------------------- 1 | ## APP启动接口 2 | **简要描述:** 3 | 4 | - app启动时访问 5 | 6 | **请求URL:** 7 | - ` http://xx.com/api/app/c ` 8 | 9 | **请求方式:** 10 | - GET 11 | 12 | **参数:** 13 | 14 | |参数名|必选|类型|说明| 15 | |:---- |:---|:----- |----- | 16 | |app_key |否 |string |app标识 | 17 | |access_token |否 |string | 用户秘钥 | 18 | 19 | 20 | **返回示例** 21 | 22 | ``` 23 | { 24 | "error_code": 0, 25 | "message": "success", 26 | "data": { 27 | "version" : "", 28 | "tags" : { 29 | "subject": [ 30 | { 31 | "id" : 1, 32 | "name" : "", 33 | "icon" : "" 34 | } 35 | ], 36 | "grade": [ 37 | { 38 | "id" : 1, 39 | "name" : "", 40 | "icon" : "" 41 | } 42 | ], 43 | "type": [ 44 | { 45 | "id" : 1, 46 | "name" : "", 47 | "icon" : "" 48 | } 49 | ], 50 | "sex" : [ 51 | { 52 | "id" : 1, 53 | "name" : "男", 54 | "icon" : "" 55 | } 56 | ], 57 | "qualification" : [ 58 | { 59 | "id" : 1, 60 | "name" : "硕士", 61 | "icon" : "" 62 | } 63 | ], 64 | "city" : [ 65 | { 66 | "id" : 1, 67 | "name" : "吉林市", 68 | "icon" : "" 69 | } 70 | ] 71 | } 72 | } 73 | } 74 | ``` 75 | 76 | **返回参数说明** 77 | 78 | |参数名|类型|说明| 79 | |:-----|:-----|-----| 80 | |version| string | 静态资源version,用于清除本地缓存| 81 | |tags| string | 公共标签| 82 | 83 | *** -------------------------------------------------------------------------------- /product/api_doc/collection.md: -------------------------------------------------------------------------------- 1 | 2 | ## 收藏 3 | **简要描述:** 4 | 5 | - 收藏接口 6 | 7 | **请求URL:** 8 | - ` http://xx.com/api/collect/add ` 9 | 10 | **请求方式:** 11 | - GET 12 | 13 | **参数:** 14 | 15 | |参数名|必选|类型|说明| 16 | |:---- |:---|:----- |----- | 17 | |app_key |是 |string |app标识 | 18 | |access_token |是 |string | 用户秘钥 | 19 | |tid |是 |string | 教师id | 20 | 21 | **返回示例** 22 | 23 | ``` 24 | { 25 | "error_code": 0, 26 | "message": "success", 27 | "data": { 28 | "teacher" : { 29 | "id" : 1, 30 | "name" : "", 31 | "image" : "", 32 | "subject" : [ 33 | { 34 | "id" :1, 35 | "lebel" : "数学", 36 | "sort" : 0 37 | } 38 | ], 39 | "grade" : [ 40 | { 41 | "id" :1, 42 | "lebel" : "数学", 43 | "sort" : 0 44 | ], 45 | "extend_tag" : [ 46 | { 47 | "id" :1, 48 | "lebel" : "已认证", 49 | "sort" : 0 50 | }, 51 | { 52 | "id" :1, 53 | "lebel" : "大学生", 54 | "sort" : 0 55 | } 56 | ], 57 | "school" : "", 58 | "source" : 1, 59 | "is_confirm" : 0, 60 | "is_star" : 0, 61 | "teach_time" : 10, 62 | "teach_time" : 10, 63 | } 64 | } 65 | } 66 | ``` 67 | 68 | **返回参数说明** 69 | 70 | data 71 | 72 | |参数名|类型|说明| 73 | |:----- |:-----|----- | 74 | |teacher |object |教师详细 | 75 | 76 | 77 | ## 取消收藏 78 | **简要描述:** 79 | 80 | - 取消收藏 81 | 82 | **请求URL:** 83 | - ` http://xx.com/api/collect/del ` 84 | 85 | **请求方式:** 86 | - GET 87 | 88 | **参数:** 89 | 90 | |参数名|必选|类型|说明| 91 | |:---- |:---|:----- |----- | 92 | |app_key |是 |string |app标识 | 93 | |access_token |是 |string | 用户秘钥 | 94 | |tid |是 |string | 教师id | 95 | 96 | **返回示例** 97 | 98 | ``` 99 | { 100 | "error_code": 0, 101 | "message": "success", 102 | "data": { 103 | } 104 | } 105 | ``` 106 | 107 | 108 | 109 | 110 | 111 | ## 收藏列表 112 | **简要描述:** 113 | 114 | - 收藏列表 115 | 116 | **请求URL:** 117 | - ` http://xx.com/api/collect/lists ` 118 | 119 | **请求方式:** 120 | - GET 121 | 122 | **参数:** 123 | 124 | |参数名|必选|类型|说明| 125 | |:---- |:---|:----- |----- | 126 | |app_key |是 |string |app标识 | 127 | |access_token |是 |string | 用户秘钥 | 128 | |offset |是 |string | 偏移量 | 129 | |limit |是 |string | 每页数量 | 130 | 131 | **返回示例** 132 | 133 | ``` 134 | { 135 | "error_code": 0, 136 | "message": "success", 137 | "data": { 138 | "teacher" : [ 139 | { 140 | "id" : 1, 141 | "name" : "", 142 | "image" : "", 143 | "subject" : [ 144 | { 145 | "id" :1, 146 | "lebel" : "数学", 147 | "sort" : 0 148 | } 149 | ], 150 | "grade" : [ 151 | { 152 | "id" :1, 153 | "lebel" : "数学", 154 | "sort 155 | ], 156 | "extend_tag" : [ 157 | { 158 | "id" :1, 159 | "lebel" : "已认证", 160 | "sort" : 0 161 | }, 162 | { 163 | "id" :1, 164 | "lebel" : "大学生", 165 | "sort" : 0 166 | } 167 | ], 168 | "school" : "", 169 | "source" : 1, 170 | "is_confirm" : 0, 171 | "is_star" : 0, 172 | "teach_time" : 10, 173 | "teach_time" : 10, 174 | } 175 | ], 176 | } 177 | } 178 | ``` 179 | 180 | **返回参数说明** 181 | 182 | data 183 | 184 | |参数名|类型|说明| 185 | |:----- |:-----|----- | 186 | |teacher |array |教师列表 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | -------------------------------------------------------------------------------- /product/api_doc/course.md: -------------------------------------------------------------------------------- 1 | ## 学生端我的课程 2 | **简要描述:** 3 | 4 | - 学生端我的课程 5 | 6 | **请求URL:** 7 | - ` http://xx.com/api/course/studentlists ` 8 | 9 | **请求方式:** 10 | - GET 11 | 12 | **参数:** 13 | 14 | |参数名|必选|类型|说明| 15 | |:---- |:---|:----- |----- | 16 | |app_key |是 |string |app标识 | 17 | |access_token |是 |string | 用户秘钥 | 18 | |status |是 |string | 状态 1: 未开始 2:已结束 | 19 | 20 | **返回示例** 21 | 22 | ``` 23 | { 24 | "error_code": 0, 25 | "message": "success", 26 | "data": { 27 | "course" : { 28 | "id" : 1, 29 | "teacher_id" : 1, 30 | "teacher_name" : "", 31 | "next_teach_time" : "", 32 | "course_info" : "", 33 | "status" : 1, 34 | "finish_num" : "5", 35 | "all_num" : "10" 36 | "child" : [ 37 | { 38 | "id" : "", 39 | "start_time" : "", 40 | "status" : "", 41 | "plan" : "", 42 | "summary" : "", 43 | "question" : "", 44 | "stu_answer" :"", 45 | } 46 | ] 47 | } 48 | } 49 | } 50 | ``` 51 | 52 | **返回参数说明** 53 | 54 | |参数名|类型|说明| 55 | |:-----|:-----|-----| 56 | |child->status| string | 状态 1未开始 2已完成| 57 | |plan| string | 课前计划| 58 | |summary| string | 课后总结| 59 | |question| string | 课后作业| 60 | |stu_answer| string | 学生答案| 61 | 62 | *** 63 | 64 | ## 教师端我的课程 65 | **简要描述:** 66 | 67 | - 教师端我的课程 68 | 69 | **请求URL:** 70 | - ` http://xx.com/api/course/teacherlists ` 71 | 72 | **请求方式:** 73 | - GET 74 | 75 | **参数:** 76 | 77 | |参数名|必选|类型|说明| 78 | |:---- |:---|:----- |----- | 79 | |app_key |是 |string |app标识 | 80 | |access_token |是 |string | 用户秘钥 | 81 | |status |是 |string | 状态 1: 未开始 2:已结束 | 82 | 83 | **返回示例** 84 | 85 | ``` 86 | { 87 | "error_code": 0, 88 | "message": "success", 89 | "data": { 90 | "course" : { 91 | "id" : 1, 92 | "student_id" : 1, 93 | "student_name" : "", 94 | "next_teach_time" : "", 95 | "course_info" : "", 96 | "status" : 1, 97 | "finish_num" : "5", 98 | "all_num" : "10" 99 | "child" : [ 100 | { 101 | "id" : "", 102 | "start_time" : "", 103 | "status" : "", 104 | "plan" : "", 105 | "summary" : "", 106 | "question" : "", 107 | "stu_answer" :"", 108 | } 109 | ] 110 | } 111 | } 112 | } 113 | ``` 114 | 115 | **返回参数说明** 116 | 117 | |参数名|类型|说明| 118 | |:-----|:-----|-----| 119 | |child->status| string | 状态 1未开始 2已完成| 120 | |plan| string | 课前计划| 121 | |summary| string | 课后总结| 122 | |question| string | 课后作业| 123 | |stu_answer| string | 学生答案| 124 | 125 | *** 126 | 127 | ## 修改课程 128 | **简要描述:** 129 | 130 | - 教师端我的课程 131 | 132 | **请求URL:** 133 | - ` http://xx.com/api/coursechild/save` 134 | 135 | **请求方式:** 136 | - POST 137 | 138 | **参数:** 139 | 140 | |参数名|必选|类型|说明| 141 | |:---- |:---|:----- |----- | 142 | |app_key |是 |string |app标识 | 143 | |access_token |是 |string | 用户秘钥 | 144 | |child_course_id |是 |string | 子课程id | 145 | |plan |否 |string | 预习 | 146 | |summary |否 |string | 总结 | 147 | |question |否 |string | 作业 | 148 | |stu_answer |否 |string | 答案 | 149 | 150 | **返回示例** 151 | 152 | ``` 153 | { 154 | "error_code": 0, 155 | "message": "success", 156 | "data": [] 157 | } 158 | ``` 159 | 160 | *** -------------------------------------------------------------------------------- /product/api_doc/coursetrial.md: -------------------------------------------------------------------------------- 1 | 2 | ## 预约 3 | **简要描述:** 4 | 5 | - 预约接口 6 | 7 | **请求URL:** 8 | - ` http://xx.com/api/coursetrial/add ` 9 | 10 | **请求方式:** 11 | - GET 12 | 13 | **参数:** 14 | 15 | |参数名|必选|类型|说明| 16 | |:---- |:---|:----- |----- | 17 | |app_key |是 |string |app标识 | 18 | |access_token |是 |string | 用户秘钥 | 19 | |tid |是 |string | 教师id | 20 | 21 | **返回示例** 22 | 23 | ``` 24 | { 25 | "error_code": 0, 26 | "message": "success", 27 | "data": { 28 | } 29 | } 30 | ``` 31 | 32 | *** 33 | 34 | 35 | ## 学生端我的试听 36 | **简要描述:** 37 | 38 | - 学生端我的试听 39 | 40 | **请求URL:** 41 | - ` http://xx.com/api/coursetrial/studentlists ` 42 | 43 | **请求方式:** 44 | - GET 45 | 46 | **参数:** 47 | 48 | |参数名|必选|类型|说明| 49 | |:---- |:---|:----- |----- | 50 | |app_key |是 |string |app标识 | 51 | |access_token |是 |string | 用户秘钥 | 52 | |status |是 |string | 状态 1: 未开始 2:已结束 | 53 | 54 | **返回示例** 55 | 56 | ``` 57 | { 58 | "error_code": 0, 59 | "message": "success", 60 | "data": { 61 | "course" : { 62 | "id" : 1, 63 | "teacher_id" : 1, 64 | "teacher_name" : "", 65 | "start_time" : "", 66 | "course_info" : "", 67 | "status" : 1, 68 | } 69 | } 70 | } 71 | ``` 72 | 73 | **返回参数说明** 74 | 75 | |参数名|类型|说明| 76 | |:-----|:-----|-----| 77 | |status| string | 状态 4待处理 5 通过 6 未通过| 78 | 79 | *** 80 | 81 | ## 教师端我的试听 82 | **简要描述:** 83 | 84 | - 教师端我的试听 85 | 86 | **请求URL:** 87 | - ` http://xx.com/api/coursetrial/teacherlists ` 88 | 89 | **请求方式:** 90 | - GET 91 | 92 | **参数:** 93 | 94 | |参数名|必选|类型|说明| 95 | |:---- |:---|:----- |----- | 96 | |app_key |是 |string |app标识 | 97 | |access_token |是 |string | 用户秘钥 | 98 | |status |是 |string | 状态 1: 未开始 2:已结束 | 99 | 100 | **返回示例** 101 | 102 | ``` 103 | { 104 | "error_code": 0, 105 | "message": "success", 106 | "data": { 107 | "course" : { 108 | "id" : 1, 109 | "student_id" : 1, 110 | "student_name" : "", 111 | "phone" : "15662176002", 112 | "address" : "", 113 | "start_time" : "", 114 | "course_info" : "", 115 | "status" : 1, 116 | } 117 | } 118 | } 119 | ``` 120 | 121 | **返回参数说明** 122 | 123 | |参数名|类型|说明| 124 | |:-----|:-----|-----| 125 | |status| string | 状态 4待确认 5 通过 6 未通过| 126 | 127 | *** 128 | 129 | ## 教师端 教师结束试讲 130 | **简要描述:** 131 | 132 | - 教师试讲结束 133 | 134 | **请求URL:** 135 | - ` http://xx.com/api/coursetrial/finishteach ` 136 | 137 | **请求方式:** 138 | - GET 139 | 140 | **参数:** 141 | 142 | |参数名|必选|类型|说明| 143 | |:---- |:---|:----- |----- | 144 | |app_key |是 |string |app标识 | 145 | |access_token |是 |string | 用户秘钥 | 146 | |id |是 |string | 试讲课程id | 147 | 148 | **返回示例** 149 | 150 | ``` 151 | { 152 | "error_code": 0, 153 | "message": "success", 154 | "data": [] 155 | } 156 | ``` 157 | 158 | *** 159 | 160 | ## 学生端 通过试讲 161 | **简要描述:** 162 | 163 | - 试讲通过 164 | 165 | **请求URL:** 166 | - ` http://xx.com/api/coursetrial/agree ` 167 | 168 | **请求方式:** 169 | - GET 170 | 171 | **参数:** 172 | 173 | |参数名|必选|类型|说明| 174 | |:---- |:---|:----- |----- | 175 | |app_key |是 |string |app标识 | 176 | |access_token |是 |string | 用户秘钥 | 177 | |id |是 |string | 试讲课程id | 178 | 179 | **返回示例** 180 | 181 | ``` 182 | { 183 | "error_code": 0, 184 | "message": "success", 185 | "data": [] 186 | } 187 | ``` 188 | 189 | *** 190 | 191 | ## 学生端 不通过试讲 192 | **简要描述:** 193 | 194 | - 试讲不通过 195 | 196 | **请求URL:** 197 | - ` http://xx.com/api/coursetrial/disagree ` 198 | 199 | **请求方式:** 200 | - GET 201 | 202 | **参数:** 203 | 204 | |参数名|必选|类型|说明| 205 | |:---- |:---|:----- |----- | 206 | |app_key |是 |string |app标识 | 207 | |access_token |是 |string | 用户秘钥 | 208 | |id |是 |string | 试讲课程id | 209 | |reason |是 |string | 不通过原因 | 210 | 211 | **返回示例** 212 | 213 | ``` 214 | { 215 | "error_code": 0, 216 | "message": "success", 217 | "data": [] 218 | } 219 | ``` 220 | 221 | 222 | -------------------------------------------------------------------------------- /product/api_doc/index.md: -------------------------------------------------------------------------------- 1 | 2 | ### 注意: 所有接口都要传两个参数 app_key,access_token 3 | 4 | 5 | ## 首页 6 | **简要描述:** 7 | 8 | - 首页接口 9 | 10 | **请求URL:** 11 | - ` http://xx.com/api/index ` 12 | 13 | **请求方式:** 14 | - GET 15 | 16 | **参数:** 17 | 18 | |参数名|必选|类型|说明| 19 | |:---- |:---|:----- |----- | 20 | |app_key |是 |string |app标识 | 21 | |access_token |是 |string | 用户秘钥 | 22 | 23 | **返回示例** 24 | 25 | ``` 26 | { 27 | "error_code": 0, 28 | "message": "success", 29 | "data": { 30 | "banner":[ 31 | { 32 | "url": "", 33 | "img" :"", 34 | } 35 | ], 36 | "teacher" : [ 37 | { 38 | "id" : 1, 39 | "name" : "", 40 | "image" : "", 41 | "subject" : [ 42 | { 43 | "id" :1, 44 | "lebel" : "数学", 45 | "sort" : 0 46 | } 47 | ], 48 | "grade" : [ 49 | { 50 | "id" :1, 51 | "lebel" : "数学", 52 | "sort 53 | ], 54 | "extend_tag" : [ 55 | { 56 | "id" :1, 57 | "lebel" : "已认证", 58 | "sort" : 0 59 | }, 60 | { 61 | "id" :1, 62 | "lebel" : "大学生", 63 | "sort" : 0 64 | } 65 | ], 66 | "school" : "", 67 | "source" : 1, 68 | "is_confirm" : 0, 69 | "is_star" : 0, 70 | "teach_time" : 10, 71 | "teach_time" : 10, 72 | } 73 | ], 74 | "subjects":[ 75 | { 76 | "id" : 1, 77 | "name" : "", 78 | "icon" : "", 79 | } 80 | ] 81 | } 82 | } 83 | ``` 84 | 85 | **返回参数说明** 86 | 87 | data 88 | 89 | |参数名|类型|说明| 90 | |:----- |:-----|----- | 91 | |banner |array |首焦轮播 | 92 | |teacher |array |热推教师 | 93 | |subjects |array |学科 | 94 | 95 | 96 | teacher 97 | 98 | |参数名|类型|说明| 99 | |:----- |:-----|----- | 100 | |source |int |来源类型 1:大学生 2:编制内教师 3:职业教师 | 101 | |is_confirm |int |是否认证 1:已认证 0:未认证 | 102 | |is_star |int |明星教师 1:明星教师 0:普通教师 | 103 | |teach_year |int |教龄| 104 | |teach_time |int |授课时长 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /product/api_doc/sms.md: -------------------------------------------------------------------------------- 1 | 2 | ## 验证码相关 3 | **简要描述:** 4 | 5 | - 发送验证码 6 | 7 | **请求URL:** 8 | - ` http://xx.com/api/cmn/sms/send ` 9 | 10 | **请求方式:** 11 | - POST 12 | 13 | **参数:** 14 | 15 | |参数名|必选|类型|说明| 16 | |:---- |:---|:----- |----- | 17 | |app_key |是 |string |app标识 | 18 | |access_token |否 |string | 用户秘钥 | 19 | |phone |是 |string | 手机号 | 20 | |code_type |是 |int | 验证码类型 1=注册;2=修改密码 | 21 | 22 | **返回示例** 23 | 24 | ``` 25 | { 26 | "error_code": 0, 27 | "message": "success", 28 | "data": 'ZC1552688403887217' 29 | } 30 | ``` 31 | 32 | **返回参数说明** 33 | 34 | |参数名|类型|说明| 35 | |:----- |:-----|----- | 36 | |data |string |验证码编号,用于验证验证码 | 37 | 38 | *** 39 | -------------------------------------------------------------------------------- /product/api_doc/struct/simple.md: -------------------------------------------------------------------------------- 1 | 2 | ## 教师精简结构 3 | 4 | **简要描述:** 5 | - 教师精简结构,列表使用 6 | 7 | **返回示例** 8 | 9 | ``` 10 | { 11 | "id" : 1, 12 | "name" : "", 13 | "image" : "", 14 | "subject" : [ 15 | { 16 | "id" :1, 17 | "lebel" : "数学", 18 | "sort" : 0 19 | } 20 | ], 21 | "grade" : [ 22 | { 23 | "id" :1, 24 | "lebel" : "数学", 25 | "sort 26 | } 27 | ], 28 | "extend_tag" : [ 29 | { 30 | "id" :1, 31 | "lebel" : "已认证", 32 | "sort" : 0 33 | }, 34 | { 35 | "id" :1, 36 | "lebel" : "大学生", 37 | "sort" : 0 38 | } 39 | ], 40 | "school" : "", 41 | "source" : 1, 42 | "is_confirm" : 0, 43 | "is_star" : 0, 44 | "teach_time" : 10, 45 | "teach_time" : 10, 46 | } 47 | ``` 48 | 49 | **返回参数说明** 50 | 51 | |参数名|类型|说明| 52 | |:----- |:-----|----- | 53 | |source |int |来源类型 1:大学生 2:编制内教师 3:职业教师 | 54 | |extend_tag |arr |拓展tag | 55 | 56 | *** 57 | 58 | 59 | ## 用户精简结构 60 | 61 | **简要描述:** 62 | - 用户精简结构,列表使用 63 | 64 | **返回示例** 65 | 66 | ``` 67 | { 68 | "id" : "", 69 | "phone" : "", 70 | "name" : "", 71 | "image" : "", 72 | "home_address" : "", 73 | "school" : "", 74 | } 75 | ``` 76 | 77 | **返回参数说明** 78 | 79 | |参数名|类型|说明| 80 | |:----- |:-----|----- | 81 | |source |int |来源类型 1:大学生 2:编制内教师 3:职业教师 | 82 | |extend_tag |arr |拓展tag | 83 | 84 | *** 85 | 86 | 87 | ## 预约课精简结构 88 | 89 | *** 90 | 91 | 92 | ## 课程精简结构 93 | 94 | *** -------------------------------------------------------------------------------- /product/api_doc/struct/tableStatus.md: -------------------------------------------------------------------------------- 1 | 2 | ### 试讲表状态 3 | 4 | **数据表:** `course_trial` 5 | 6 | 7 | 8 | *status 字段* 9 | 10 | - 1 新建 11 | - 2 平台审核通过 12 | - 3 平台审核不通过 13 | - 4 教师试讲结束 14 | - 5 用户通过 15 | - 6 用户不通过 16 | - 7 平台排课完成 17 | 18 | *** 19 | 20 | ### 课程表状态 21 | 22 | **数据表:** `course` 23 | 24 | 25 | 26 | *status 字段* 27 | 28 | - 1 新建 29 | - 2 平台审核通过 30 | - 3 平台审核不通过 31 | - 4 已结束 32 | 33 | *** 34 | 35 | ### 课程子表状态 36 | 37 | **数据表:** `course_child` 38 | 39 | 40 | 41 | *status 字段* 42 | 43 | - 1 新建 44 | - 2 已完成 45 | - 3 已取消 46 | 47 | *** 48 | 49 | ### 教师表状态 50 | 51 | **数据表:** `teacher` 52 | 53 | 54 | 55 | *status 字段* 56 | 57 | - 1 未审核 58 | - 2 审核通过 59 | - 3 审核不通过 60 | - 4 注销 61 | 62 | *** 63 | 64 | ### 用户表状态 65 | 66 | **数据表:** `user` 67 | 68 | 69 | 70 | *status 字段* 71 | 72 | - 1 未审核 73 | - 2 审核通过 74 | - 3 审核不通过 75 | - 4 注销 76 | 77 | *** -------------------------------------------------------------------------------- /product/api_doc/teacher.md: -------------------------------------------------------------------------------- 1 | 2 | ## 教师列表 3 | **简要描述:** 4 | 5 | - 教师筛选列表 6 | 7 | **请求URL:** 8 | - ` http://xx.com/api/teacher/lists ` 9 | 10 | **请求方式:** 11 | - GET 12 | 13 | **参数:** 14 | 15 | |参数名|必选|类型|说明| 16 | |:---- |:---|:----- |----- | 17 | |app_key |是 |string |app标识 | 18 | |access_token |是 |string | 用户秘钥 | 19 | |subject |否 |string | 科目 | 20 | |grade |否 |string | 年纪 | 21 | |type |否 |string | 类型 | 22 | |offset |是 |string | 偏移量 | 23 | |limit |是 |string | 每页数量 | 24 | 25 | **返回示例** 26 | 27 | ``` 28 | { 29 | "error_code": 0, 30 | "message": "success", 31 | "data": { 32 | "teacher" : [ 33 | { 34 | "id" : 1, 35 | "name" : "", 36 | "image" : "", 37 | "subject" : [ 38 | { 39 | "id" :1, 40 | "lebel" : "数学", 41 | "sort" : 0 42 | } 43 | ], 44 | "grade" : [ 45 | { 46 | "id" :1, 47 | "lebel" : "数学", 48 | "sort 49 | } 50 | ], 51 | "extend_tag" : [ 52 | { 53 | "id" :1, 54 | "lebel" : "已认证", 55 | "sort" : 0 56 | }, 57 | { 58 | "id" :1, 59 | "lebel" : "大学生", 60 | "sort" : 0 61 | } 62 | ], 63 | "school" : "", 64 | "source" : 1, 65 | "is_confirm" : 0, 66 | "is_star" : 0, 67 | "teach_time" : 10, 68 | "teach_time" : 10, 69 | } 70 | ], 71 | "condition": { 72 | "subject": [ 73 | { 74 | "id" : 1, 75 | "name" : "", 76 | "icon" : "" 77 | } 78 | ], 79 | "grade": [ 80 | { 81 | "id" : 1, 82 | "name" : "", 83 | "icon" : "" 84 | } 85 | ] 86 | "type": [ 87 | { 88 | "id" : 1, 89 | "name" : "", 90 | "icon" : "" 91 | } 92 | ] 93 | } 94 | } 95 | } 96 | ``` 97 | 98 | **返回参数说明** 99 | 100 | |参数名|类型|说明| 101 | |:----- |:-----|----- | 102 | |source |int |来源类型 1:大学生 2:编制内教师 3:职业教师 | 103 | |condition |obj |所有筛选项 | 104 | 105 | *** 106 | 107 | 108 | ## 教师详情 109 | **简要描述:** 110 | 111 | - 教师详情页 112 | 113 | **请求URL:** 114 | - ` http://xx.com/api/teacher/info ` 115 | 116 | **请求方式:** 117 | - GET 118 | 119 | **参数:** 120 | 121 | |参数名|必选|类型|说明| 122 | |:---- |:---|:----- |----- | 123 | |app_key |是 |string |app标识 | 124 | |access_token |是 |string | 用户秘钥 | 125 | |id |是 |string | 教师id | 126 | 127 | **返回示例** 128 | 129 | ``` 130 | { 131 | "error_code": 0, 132 | "message": "success", 133 | "data": { 134 | "teacher" : [ 135 | { 136 | "id" : 1, 137 | "name" : "", 138 | "image" : "", 139 | "subject" : ["数学"], 140 | "grade" : ["初一","初二"], 141 | "school" : "", 142 | "source" : 1, 143 | "is_confirm" : , 144 | "teach_time" : 10, 145 | "price" : "100", 146 | "intro" : "", 147 | "teacher_case" : [ 148 | { 149 | "title" : "", 150 | "content" : "", 151 | "start_time" : "", 152 | "end_time" : "", 153 | } 154 | ], 155 | "teacher_experience" : [ 156 | { 157 | "title" : "", 158 | "content" : "", 159 | "start_time" : "", 160 | "end_time" : "", 161 | } 162 | ], 163 | "comments" : [ 164 | { 165 | "id" : "", 166 | "title" : "", 167 | "content" : "", 168 | "user_id" : "", 169 | "user" : { 170 | "id" : "", 171 | "name" : "", 172 | "phone" : "", 173 | "image" : "", 174 | }, 175 | "create_time" : "2017-11-26 11:12:24", 176 | "course_id" : "", 177 | } 178 | ], 179 | "is_collect" : 1, 180 | "is_select" : 1, 181 | } 182 | ], 183 | } 184 | } 185 | ``` 186 | 187 | **返回参数说明** 188 | 189 | |参数名|类型|说明| 190 | |:----- |:-----|----- | 191 | |source |int |来源类型 1:大学生 2:编制内教师 3:职业教师 | 192 | |condition |obj |所有筛选项 | 193 | |teacher_case |array |成功案例 | 194 | |teacher_experience |array |教学经验 | 195 | |comments |array |评论 | 196 | |is_collect |int |是否收藏 1:已收藏 0:未收藏 | 197 | |is_select |int |是否预约 1:已预约 0:未预约 | 198 | 199 | 200 | 201 | 202 | -------------------------------------------------------------------------------- /product/api_doc/user.md: -------------------------------------------------------------------------------- 1 | ##登录 2 | **简要描述:** 3 | - 密码登录接口 4 | 5 | **请求URL:** 6 | - ` http://xx.com/api/user/passwordLogin ` 7 | 8 | **请求方式:** 9 | - POST 10 | 11 | **参数:** 12 | 13 | |参数名|必选|类型|说明| 14 | |:---- |:---|:----- |----- | 15 | |app_key |是 |string |app标识 | 16 | |access_token |否 |string | 用户秘钥 | 17 | |phone |是 |string | 手机号 | 18 | |password |密码登录必须 |string | 密码| 19 | 20 | **返回示例** 21 | 22 | ``` 23 | { 24 | "error_code": 0, 25 | "message": "success", 26 | "data": { 27 | "token": 'string', 28 | "obj" : { 29 | "id" : 1, 30 | "phone" : "", 31 | "name" : "", 32 | "image" : "", 33 | }, 34 | "role_type" :1, 35 | "setpass" : 0 36 | } 37 | } 38 | ``` 39 | 40 | **返回参数说明** 41 | 42 | |参数名|类型|说明| 43 | |:-----|:-----|-----| 44 | |token| string | 用户登录token| 45 | |obj| obj | 登录用户精简结构| 46 | |role_type| int | 用户类型 1学生 2教师| 47 | |setpass| int | 首次登录设置密码 0不设置 1设置| 48 | 49 | *** 50 | 51 | **简要描述:** 52 | - 密码登录接口 53 | 54 | **请求URL:** 55 | - ` http://xx.com/api/user/fastLogin ` 56 | 57 | **请求方式:** 58 | - POST 59 | 60 | **参数:** 61 | 62 | |参数名|必选|类型|说明| 63 | |:---- |:---|:----- |----- | 64 | |app_key |是 |string |app标识 | 65 | |access_token |否 |string | 用户秘钥 | 66 | |phone |是 |string | 手机号 | 67 | |role_type| int | 用户类型 1学生 2教师| 68 | |code_no |短信登录必须 |string | 验证码编号| 69 | |code |短信登录必须 |string | 手机验证码| 70 | 71 | **返回示例** 72 | 73 | ``` 74 | { 75 | "error_code": 0, 76 | "message": "success", 77 | "data": { 78 | "token": 'string', 79 | "obj" : { 80 | "id" : 1, 81 | "phone" : "", 82 | "name" : "", 83 | "image" : "", 84 | }, 85 | "role_type" :1, 86 | "setpass" : 0 87 | } 88 | } 89 | ``` 90 | 91 | **返回参数说明** 92 | 93 | |参数名|类型|说明| 94 | |:-----|:-----|-----| 95 | |token| string | 用户登录token| 96 | |obj| obj | 登录用户精简结构| 97 | |role_type| int | 用户类型 1学生 2教师| 98 | |setpass| int | 首次登录设置密码 0不设置 1设置| 99 | 100 | *** 101 | 102 | 103 | ##忘记密码 104 | **简要描述:** 105 | - 忘记密码 106 | 107 | **请求URL:** 108 | - ` http://xx.com/api/user/forgetPassword ` 109 | 110 | **请求方式:** 111 | - POST 112 | 113 | **参数:** 114 | 115 | |参数名|必选|类型|说明| 116 | |:---- |:---|:----- |----- | 117 | |app_key |是 |string |app标识 | 118 | |access_token |是 |string | 用户秘钥 | 119 | |phone |忘记密码必须 |string | 手机号 | 120 | |code_no |忘记密码必须 |string | 验证码编号| 121 | |code |忘记密码必须 |string | 手机验证码| 122 | |newPass |是 |string || 123 | 124 | **返回示例** 125 | 126 | ``` 127 | { 128 | "error_code": 0, 129 | "message": "success", 130 | "data": [] 131 | } 132 | ``` 133 | 134 | **返回参数说明** 135 | 136 | |参数名|类型|说明| 137 | |:-----|:-----|-----| 138 | 139 | *** 140 | 141 | 142 | ##修改密码 143 | **简要描述:** 144 | - 修改密码 145 | 146 | **请求URL:** 147 | - ` http://xx.com/api/user/modifyPassword ` 148 | 149 | **请求方式:** 150 | - POST 151 | 152 | **参数:** 153 | 154 | |参数名|必选|类型|说明| 155 | |:---- |:---|:----- |----- | 156 | |app_key |是 |string |app标识 | 157 | |access_token |是 |string | 用户秘钥 | 158 | |oldPass |修改密码必须 |string | 旧密码| 159 | |newPass |是 |string |新密码| 160 | 161 | **返回示例** 162 | 163 | ``` 164 | { 165 | "error_code": 0, 166 | "message": "success", 167 | "data": [] 168 | } 169 | ``` 170 | 171 | **返回参数说明** 172 | 173 | |参数名|类型|说明| 174 | |:-----|:-----|-----| 175 | 176 | *** 177 | 178 | 179 | ##第一次忘记密码 180 | **简要描述:** 181 | - 第一次设置密码 182 | 183 | **请求URL:** 184 | - ` http://xx.com/api/user/firstSetPassword ` 185 | 186 | **请求方式:** 187 | - POST 188 | 189 | **参数:** 190 | 191 | |参数名|必选|类型|说明| 192 | |:---- |:---|:----- |----- | 193 | |app_key |是 |string |app标识 | 194 | |access_token |是 |string | 用户秘钥 | 195 | |newPass |是 |string |密码| 196 | 197 | **返回示例** 198 | 199 | ``` 200 | { 201 | "error_code": 0, 202 | "message": "success", 203 | "data": [] 204 | } 205 | ``` 206 | 207 | **返回参数说明** 208 | 209 | |参数名|类型|说明| 210 | |:-----|:-----|-----| 211 | 212 | *** 213 | 214 | 215 | ##用户中心 216 | **简要描述:** 217 | - 第一次设置密码 218 | 219 | **请求URL:** 220 | - ` http://xx.com/api/user/info ` 221 | 222 | **请求方式:** 223 | - GET 224 | 225 | **参数:** 226 | 227 | |参数名|必选|类型|说明| 228 | |:---- |:---|:----- |----- | 229 | |app_key |是 |string |app标识 | 230 | |access_token |是 |string | 用户秘钥 | 231 | 232 | **返回示例** 233 | 234 | ``` 235 | { 236 | "error_code": 0, 237 | "message": "success", 238 | "data": { 239 | "teacher" : { 240 | }, 241 | "user" : { 242 | } 243 | } 244 | } 245 | ``` 246 | 247 | **返回参数说明** 248 | 249 | |参数名|类型|说明| 250 | |:-----|:-----|-----| 251 | |teacher|obj|当前登录用户是教师时返回| 252 | |user|obj|当前登录用户是家长/学生时返回| 253 | 254 | *** 255 | 256 | ##家长编辑资料 257 | **简要描述:** 258 | - 家长编辑资料 259 | 260 | **请求URL:** 261 | - ` http://xx.com/api/user/setuserinfo ` 262 | 263 | **请求方式:** 264 | - POST 265 | 266 | **参数:** 267 | 268 | |参数名|必选|类型|说明| 269 | |:---- |:---|:----- |----- | 270 | |app_key |是 |string |app标识 | 271 | |access_token |是 |string | 用户秘钥 | 272 | |image |否 |string | 用户头像 | 273 | |name |否 |string | 用户昵称 | 274 | |grade |否 |string | 年级 | 275 | |sex |否 |string | 性别 | 276 | |home_address |否 |string | 家庭地址 | 277 | |city |否 |string | 城市 | 278 | 279 | **返回示例** 280 | 281 | ``` 282 | { 283 | "error_code": 0, 284 | "message": "success", 285 | "data": { 286 | } 287 | } 288 | ``` 289 | 290 | *** 291 | 292 | ##教师编辑资料 293 | **简要描述:** 294 | - 教师编辑资料 295 | 296 | **请求URL:** 297 | - ` http://xx.com/api/user/setuserinfo ` 298 | 299 | **请求方式:** 300 | - POST 301 | 302 | **参数:** 303 | 304 | |参数名|必选|类型|说明| 305 | |:---- |:---|:----- |----- | 306 | |app_key |是 |string |app标识 | 307 | |access_token |是 |string | 用户秘钥 | 308 | |image |否 |string | 用户头像 | 309 | |name |否 |string | 用户昵称 | 310 | |grade |否 |string | 年级 | 311 | |sex |否 |string | 性别 | 312 | |home_address |否 |string | 家庭地址 | 313 | |city |否 |string | 城市 | 314 | |school |否 |string | 学校 | 315 | |major |否 |string | 专业 | 316 | |qualification |否 |string | 学历 | 317 | |subject |否 |string | 学科 | 318 | |grade |否 |string | 年级 多选逗号分隔 | 319 | |type |否 |string | 类型 | 320 | |teach_year |否 |string | 教龄 单位 年 | 321 | |price |否 |string | 价格 单位 元/两小时(一节课是两小时) | 322 | |intro |否 |string | 个人简介 | 323 | 324 | 325 | **返回示例** 326 | 327 | ``` 328 | { 329 | "error_code": 0, 330 | "message": "success", 331 | "data": { 332 | } 333 | } 334 | ``` 335 | 336 | *** 337 | 338 | ##修改教师拓展信息 339 | **简要描述:** 340 | - 修改教师拓展信息 341 | 342 | **请求URL:** 343 | - ` http://xx.com/api/user/setteacherextend ` 344 | 345 | **请求方式:** 346 | - POST 347 | 348 | **参数:** 349 | 350 | |参数名|必选|类型|说明| 351 | |:---- |:---|:----- |----- | 352 | |app_key |是 |string |app标识 | 353 | |access_token |是 |string | 用户秘钥 | 354 | |title |否 |string | 标题 | 355 | |content |否 |string | 内容 | 356 | |start_time |否 |string | 开始时间 | 357 | |end_time |否 |string | 结束时间 | 358 | |id |否 |string | id 修改时必填 为空是新增 | 359 | |type |否 |string | 类型 1:成功案例 2:教学经历 | 360 | 361 | 362 | 363 | 364 | **返回示例** 365 | 366 | ``` 367 | { 368 | "error_code": 0, 369 | "message": "success", 370 | "data": { 371 | } 372 | } 373 | ``` 374 | 375 | *** 376 | 377 | *** 378 | 379 | ##删除教师拓展信息 380 | **简要描述:** 381 | - 删除教师拓展信息 382 | 383 | **请求URL:** 384 | - ` http://xx.com/api/user/delteacherextend ` 385 | 386 | **请求方式:** 387 | - POST 388 | 389 | **参数:** 390 | 391 | |参数名|必选|类型|说明| 392 | |:---- |:---|:----- |----- | 393 | |app_key |是 |string |app标识 | 394 | |access_token |是 |string | 用户秘钥 | 395 | |id |否 |string | id 修改时必填 为空是新增 | 396 | |type |否 |string | 类型 1:成功案例 2:教学经历 | 397 | 398 | 399 | 400 | 401 | **返回示例** 402 | 403 | ``` 404 | { 405 | "error_code": 0, 406 | "message": "success", 407 | "data": { 408 | } 409 | } 410 | ``` 411 | 412 | *** 413 | 414 | -------------------------------------------------------------------------------- /product/prd/admin/教师管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/admin/教师管理.png -------------------------------------------------------------------------------- /product/prd/admin/用户管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/admin/用户管理.png -------------------------------------------------------------------------------- /product/prd/admin/评价管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/admin/评价管理.png -------------------------------------------------------------------------------- /product/prd/admin/课程订单管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/admin/课程订单管理.png -------------------------------------------------------------------------------- /product/prd/前端资料录入.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/前端资料录入.png -------------------------------------------------------------------------------- /product/prd/教师招募H5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/教师招募H5.png -------------------------------------------------------------------------------- /product/prd/教师管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/教师管理.png -------------------------------------------------------------------------------- /product/prd/用户管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/用户管理.png -------------------------------------------------------------------------------- /product/prd/知途家教前端原型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/知途家教前端原型.png -------------------------------------------------------------------------------- /product/prd/知途家教前端原型V1.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/知途家教前端原型V1.1.png -------------------------------------------------------------------------------- /product/prd/评价管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/评价管理.png -------------------------------------------------------------------------------- /product/prd/课程管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/prd/课程管理.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-个人中心.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-个人中心.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-个人资料.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-个人资料.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-我的收藏.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-我的收藏.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-我的试讲-已完成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-我的试讲-已完成.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-我的试讲-未完成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-我的试讲-未完成.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-我的课程-已结束.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-我的课程-已结束.png -------------------------------------------------------------------------------- /product/ui/家长端png/家长端-我的课程-进行中.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/家长端png/家长端-我的课程-进行中.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师列表--教师类型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师列表--教师类型.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师列表-主页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师列表-主页.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师列表-学科-选择状态.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师列表-学科-选择状态.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师列表-学科.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师列表-学科.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师列表-年级.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师列表-年级.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/教师详情.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/教师详情.png -------------------------------------------------------------------------------- /product/ui/教师家长相同页面/首页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师家长相同页面/首页.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-个人中心.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-个人中心.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-我的试讲-已结束.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-我的试讲-已结束.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-我的试讲-未完成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-我的试讲-未完成.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-我的课程-已结束.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-我的课程-已结束.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-我的课程-进行中.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-我的课程-进行中.png -------------------------------------------------------------------------------- /product/ui/教师端png/教师端-编辑个人资料.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/教师端png/教师端-编辑个人资料.png -------------------------------------------------------------------------------- /product/ui/登录注册修改密码/1-登录-注册.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/登录注册修改密码/1-登录-注册.png -------------------------------------------------------------------------------- /product/ui/登录注册修改密码/1-设置密码.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/登录注册修改密码/1-设置密码.png -------------------------------------------------------------------------------- /product/ui/登录注册修改密码/1-账号登录.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/登录注册修改密码/1-账号登录.png -------------------------------------------------------------------------------- /product/ui/知途家教1.0 界面修改建议 180120---LB.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/ui/知途家教1.0 界面修改建议 180120---LB.docx -------------------------------------------------------------------------------- /product/项目截图/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/0.png -------------------------------------------------------------------------------- /product/项目截图/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/1.png -------------------------------------------------------------------------------- /product/项目截图/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/2.png -------------------------------------------------------------------------------- /product/项目截图/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/3.png -------------------------------------------------------------------------------- /product/项目截图/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/5.png -------------------------------------------------------------------------------- /product/项目截图/分类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/分类.png -------------------------------------------------------------------------------- /product/项目截图/家长.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/家长.png -------------------------------------------------------------------------------- /product/项目截图/收藏.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/收藏.png -------------------------------------------------------------------------------- /product/项目截图/教师.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/教师.png -------------------------------------------------------------------------------- /product/项目截图/教师编辑.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/教师编辑.png -------------------------------------------------------------------------------- /product/项目截图/注册.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/注册.png -------------------------------------------------------------------------------- /product/项目截图/登录.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/登录.png -------------------------------------------------------------------------------- /product/项目截图/编辑.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/编辑.png -------------------------------------------------------------------------------- /product/项目截图/详情.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/product/项目截图/详情.png -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 20 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/home.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 105 | 106 | 180 | -------------------------------------------------------------------------------- /src/components/public/about.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 60 | -------------------------------------------------------------------------------- /src/components/public/classification.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 111 | 112 | 195 | -------------------------------------------------------------------------------- /src/components/public/fastLogin.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 51 | 52 | 90 | -------------------------------------------------------------------------------- /src/components/public/login.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 63 | 64 | 123 | -------------------------------------------------------------------------------- /src/components/public/register.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 123 | 124 | 192 | -------------------------------------------------------------------------------- /src/components/teacher/teacher.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 90 | 91 | 239 | -------------------------------------------------------------------------------- /src/components/teacher/teacherInfo.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | -------------------------------------------------------------------------------- /src/components/teacher/teacherList.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 68 | 69 | 146 | -------------------------------------------------------------------------------- /src/components/teacher/teacherXiangQing.vue: -------------------------------------------------------------------------------- 1 | 61 | 62 | 154 | 155 | 345 | -------------------------------------------------------------------------------- /src/components/user/user.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 92 | 93 | 175 | -------------------------------------------------------------------------------- /src/components/user/userCollect.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 44 | 45 | 53 | -------------------------------------------------------------------------------- /src/components/user/userCourse.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 50 | 51 | 79 | -------------------------------------------------------------------------------- /src/components/user/userInfo.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import axios from 'axios' 7 | import 'mint-ui/lib/style.css' 8 | // import {Indicator, Toast, InfiniteScroll} from 'mint-ui' 9 | 10 | Vue.config.productionTip = false; 11 | 12 | Vue.prototype.axios = axios; 13 | 14 | const localData = localStorage.getItem('zt_data'); 15 | if (localData !== '' && localData) { 16 | const ztData = JSON.parse(localData); 17 | axios.defaults.headers.common['access-token'] = ztData.token; 18 | } 19 | 20 | /* eslint-disable no-new */ 21 | new Vue({ 22 | el: '#app', 23 | router, 24 | components: { App }, 25 | template: '' 26 | }) 27 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | // import Home from '@/components/home' 4 | // import TeacherClass from '@/components/classification' 5 | // import Login from '@/components/public/login' 6 | // import User from '@/components/user/user' 7 | 8 | Vue.use(Router) 9 | 10 | export default new Router({ 11 | // mode: 'history', 12 | routes: [ 13 | { 14 | path: '/', 15 | name: 'Home', 16 | component: (resolve) => require(['@/components/home'], resolve) 17 | // component: Home 18 | }, 19 | { 20 | path: '/teacher_class', 21 | name: 'TeacherClass', 22 | component: (resolve) => require(['@/components/public/classification'], resolve) 23 | // component: TeacherClass 24 | }, 25 | { 26 | path: '/login', 27 | name: 'Login', 28 | component: (resolve) => require(['@/components/public/login'], resolve) 29 | // component: Login 30 | }, 31 | { 32 | path: '/user', 33 | name: 'User', 34 | component: (resolve) => require(['@/components/user/user'], resolve) 35 | // component: User 36 | }, 37 | { 38 | path: '/register', 39 | name: 'Register', 40 | component: (resolve) => require(['@/components/public/register'], resolve) 41 | }, 42 | { 43 | path: '/teacher_detail', 44 | name: 'teacherXiangQing', 45 | component: (resolve) => require(['@/components/teacher/teacherXiangQing'], resolve) 46 | }, 47 | { 48 | path: '/fastlogin', 49 | name: 'fastLogin', 50 | component: (resolve) => require(['@/components/public/fastLogin'], resolve) 51 | }, 52 | { 53 | path: '/teacher', 54 | name: 'Teacher', 55 | component: (resolve) => require(['@/components/teacher/teacher'], resolve) 56 | }, 57 | { 58 | path: '/user_info', 59 | name: 'UserInfo', 60 | component: (resolve) => require(['@/components/user/userInfo'], resolve) 61 | }, 62 | { 63 | path: '/teacher_info', 64 | name: 'TeacherInfo', 65 | component: (resolve) => require(['@/components/teacher/teacherInfo'], resolve) 66 | }, 67 | { 68 | path: '/user_collect', 69 | name: 'UserCollect', 70 | component: (resolve) => require(['@/components/user/userCollect'], resolve) 71 | }, 72 | { 73 | path: '/about', 74 | name: 'About', 75 | component: (resolve) => require(['@/components/public/about'], resolve) 76 | }, 77 | { 78 | path: '/user_course', 79 | name: 'UserCourse', 80 | component: (resolve) => require(['@/components/user/userCourse'], resolve) 81 | } 82 | ] 83 | }) 84 | -------------------------------------------------------------------------------- /static/css/_mixin.scss: -------------------------------------------------------------------------------- 1 | // rem 基准 2 | $screen-width: 37.5; 3 | 4 | @function rem($px) { 5 | @return $px / $screen-width * 1rem; 6 | } 7 | -------------------------------------------------------------------------------- /static/css/common.scss: -------------------------------------------------------------------------------- 1 | @import './mixin'; 2 | 3 | .mint-cell { 4 | .mint-cell-wrapper { 5 | .mint-cell-value { 6 | span { 7 | font-size: 12px; 8 | } 9 | img { 10 | border-radius: Rem(25); 11 | width: Rem(50); 12 | margin: Rem(5); 13 | } 14 | } 15 | } 16 | } 17 | 18 | .btn-default { 19 | width: 90% !important; 20 | margin: 5% !important; 21 | } 22 | 23 | .nav-header { 24 | background: #fff !important; 25 | color: #000 !important; 26 | } 27 | 28 | .nav-body { 29 | position: absolute; 30 | left: 0; 31 | right: 0; 32 | top: 40px; 33 | } 34 | -------------------------------------------------------------------------------- /static/img/accept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/accept.png -------------------------------------------------------------------------------- /static/img/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/banner.png -------------------------------------------------------------------------------- /static/img/detail_introduce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_introduce.png -------------------------------------------------------------------------------- /static/img/detail_remark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_remark.png -------------------------------------------------------------------------------- /static/img/detail_reward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_reward.png -------------------------------------------------------------------------------- /static/img/detail_star_midd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_star_midd.png -------------------------------------------------------------------------------- /static/img/detail_star_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_star_white.png -------------------------------------------------------------------------------- /static/img/detail_star_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_star_yellow.png -------------------------------------------------------------------------------- /static/img/detail_teacher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/detail_teacher.png -------------------------------------------------------------------------------- /static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/logo.png -------------------------------------------------------------------------------- /static/img/logo_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/logo_share.png -------------------------------------------------------------------------------- /static/img/me_about_us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_about_us.png -------------------------------------------------------------------------------- /static/img/me_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_arrow.png -------------------------------------------------------------------------------- /static/img/me_collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_collect.png -------------------------------------------------------------------------------- /static/img/me_course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_course.png -------------------------------------------------------------------------------- /static/img/me_kfphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_kfphone.png -------------------------------------------------------------------------------- /static/img/me_student_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_student_default.png -------------------------------------------------------------------------------- /static/img/me_try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/me_try.png -------------------------------------------------------------------------------- /static/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/my.png -------------------------------------------------------------------------------- /static/img/userlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/userlogo.png -------------------------------------------------------------------------------- /static/img/wechat_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wwenj/zhitu-Tutor/874daf1eb66f5d7ce00537670798c53b3dcf27a0/static/img/wechat_logo.png -------------------------------------------------------------------------------- /static/js/axiosHeaders.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import axios from 'axios' 3 | 4 | Vue.prototype.axios = axios; 5 | function setHeaders () { 6 | const localData = localStorage.getItem('zt_data'); 7 | if (localData !== '' && localData) { 8 | const ztData = JSON.parse(localData); 9 | axios.defaults.headers.common['access-token'] = ztData.token; 10 | } 11 | } 12 | 13 | export default { 14 | setHeaders: setHeaders 15 | } 16 | -------------------------------------------------------------------------------- /static/js/public.js: -------------------------------------------------------------------------------- 1 | // 获取url中参数 2 | function getQueryStr(key) { 3 | var queryString = location.href.match(new RegExp("[\?\&]" + key + "=([^\&]*)(\&?)", "i")), 4 | val = (queryString && queryString.length > 1 && queryString[1]) || ""; 5 | return decodeURIComponent(val); 6 | } 7 | 8 | module.exports = { 9 | getQueryStr: getQueryStr 10 | }; 11 | --------------------------------------------------------------------------------