├── .babelrc ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── 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 ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ ├── css │ │ ├── base.css │ │ ├── jm_GoodsTopBox.css │ │ ├── jm_topbar.css │ │ └── stylexm.css │ ├── img │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── bg-thin.jpg │ │ ├── chevron-left.png │ │ ├── chevron-right.png │ │ ├── goodstopbox_1.jpg │ │ ├── icon-mi.png │ │ ├── icon-search-white.png │ │ ├── icon-search.png │ │ ├── thin-tv01.png │ │ ├── thin-tv02.png │ │ ├── top-end.jpg │ │ ├── top-tv.png │ │ ├── top-yu.jpg │ │ ├── tverweima.png │ │ ├── vedio.png │ │ └── win.gif │ ├── js │ │ ├── gVerify.js │ │ ├── jquery-3.1.1.js │ │ └── sectionSlide.js │ ├── logo.png │ └── style │ │ └── font-awesome-4.7.0 │ │ ├── HELP-US-OUT.txt │ │ ├── css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ │ ├── less │ │ ├── animated.less │ │ ├── bordered-pulled.less │ │ ├── core.less │ │ ├── fixed-width.less │ │ ├── font-awesome.less │ │ ├── icons.less │ │ ├── larger.less │ │ ├── list.less │ │ ├── mixins.less │ │ ├── path.less │ │ ├── rotated-flipped.less │ │ ├── screen-reader.less │ │ ├── stacked.less │ │ └── variables.less │ │ └── scss │ │ ├── _animated.scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _screen-reader.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ └── font-awesome.scss ├── components │ ├── First.vue │ ├── Goods.vue │ ├── GoodsAccessories.vue │ ├── GoodsAround.vue │ ├── GoodsCollocation.vue │ ├── GoodsContent.vue │ ├── GoodsDetail.vue │ ├── GoodsTopBox.vue │ ├── Hello.vue │ ├── HotProduct.vue │ ├── NavBar.vue │ ├── Recommand.vue │ ├── TopBanner.vue │ ├── TopBar.vue │ ├── TopHeader.vue │ ├── TopSub.vue │ ├── Video.vue │ ├── common │ │ ├── GoodsContentSlide.vue │ │ ├── GoodsHeader.vue │ │ ├── GoodsLeft.vue │ │ ├── GoodsRight.vue │ │ ├── GoodsTop.vue │ │ ├── slide.vue │ │ ├── yxmvideo1.vue │ │ ├── yxmvideo2.vue │ │ ├── yxmvideo3.vue │ │ └── yxmvideo4.vue │ ├── detail │ │ ├── NavBar.vue │ │ ├── mitv.vue │ │ ├── sectionAtions.vue │ │ ├── sectionAtoms.vue │ │ ├── sectionChildren.vue │ │ ├── sectionChip.vue │ │ ├── sectionFeatures.vue │ │ ├── sectionFooter.vue │ │ ├── sectionHdzone.vue │ │ ├── sectionInstall.vue │ │ ├── sectionPlace.vue │ │ ├── sectionReading.vue │ │ ├── sectionRecommend.vue │ │ ├── sectionScreen.vue │ │ ├── sectionSmart.vue │ │ ├── sectionSound.vue │ │ ├── sectionStory.vue │ │ ├── sectionThin.vue │ │ ├── sectionTop.vue │ │ ├── sectionVip.vue │ │ └── sectionVoice.vue │ ├── mi-footer.vue │ ├── mi_login.vue │ ├── mi_regist.vue │ └── yxmvideo.vue ├── global │ └── api.js ├── jquery-1.11.3.js ├── main.js └── router │ └── index.js ├── static ├── .gitkeep ├── data │ ├── Recommand.json │ ├── goodscontent.json │ ├── goodtop-box.json │ └── yxmdata.json └── font-awesome-4.7.0 │ ├── HELP-US-OUT.txt │ ├── css │ ├── font-awesome.css │ └── font-awesome.min.css │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 │ ├── less │ ├── animated.less │ ├── bordered-pulled.less │ ├── core.less │ ├── fixed-width.less │ ├── font-awesome.less │ ├── icons.less │ ├── larger.less │ ├── list.less │ ├── mixins.less │ ├── path.less │ ├── rotated-flipped.less │ ├── screen-reader.less │ ├── stacked.less │ └── variables.less │ └── scss │ ├── _animated.scss │ ├── _bordered-pulled.scss │ ├── _core.scss │ ├── _fixed-width.scss │ ├── _icons.scss │ ├── _larger.scss │ ├── _list.scss │ ├── _mixins.scss │ ├── _path.scss │ ├── _rotated-flipped.scss │ ├── _screen-reader.scss │ ├── _stacked.scss │ ├── _variables.scss │ └── font-awesome.scss └── 文档 ├── 交付文档 ├── YZC999.pptx ├── 代码自测结果表.xlsx ├── 周均梅个人文档 │ ├── 个人日报_周均梅.xlsx │ ├── 周均梅-.实训调查报告.xlsx │ ├── 周均梅-个人总结报告.xlsx │ └── 周均梅实训总结.docx ├── 杨晓敏个人文档 │ ├── 个人日报_杨晓敏 .xlsx │ ├── 杨晓敏个人总结报告.xlsx │ ├── 杨晓敏学员实训总结.docx │ └── 杨晓敏实训调查报告.xlsx ├── 概要设计说明书.docx ├── 用户手册.docx ├── 详细设计说明书.docx ├── 软件需求规格说明书.docx ├── 问题管理表 .xlsx ├── 陈秋宇个人文档 │ ├── 个人报告_陈秋宇.xlsx │ ├── 陈秋宇个人总结报告.xlsx │ ├── 陈秋宇实训总结.docx │ └── 陈秋宇实训调查报告.xlsx ├── 项目周报.xlsx └── 项目总结报告.xlsx ├── 交付文档模板 ├── 01.软件需求规格说明书(模板).docx ├── 03.详细设计说明书.docx ├── 04.代码自测结果表(模板).xlsx ├── 05.用户手册(模板).docx ├── 06.个人日报 .xlsx ├── 07.项目周报.xlsx ├── 10.项目总结报告.xlsx ├── 11.个人总结报告.xlsx ├── 12.项目汇报答辩(不限模板与格式).pptx ├── ~$.概要设计说明书(模板).docx ├── 【样例】04.学员实训总结(模板).docx ├── 【样例】05.实训调查报告(模板).xlsx ├── 概要设计说明书.docx └── 问题管理表.xlsx └── 项目组内文档 ├── ~$高仿小米官网的进度.xlsx └── 高仿小米官网的进度.xlsx /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": ["istanbul"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 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 | // to edit target browsers: use "browserslist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mi_vue 2 | 3 | > A Vue.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | ``` 20 | 21 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 22 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | console.log(chalk.cyan(' Build complete.\n')) 30 | console.log(chalk.yellow( 31 | ' Tip: built files are meant to be served over an HTTP server.\n' + 32 | ' Opening index.html over file:// won\'t work.\n' 33 | )) 34 | }) 35 | }) 36 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: () => {}, 33 | heartbeat: 2000 34 | }) 35 | // force page reload when html-webpack-plugin template changes 36 | compiler.plugin('compilation', function (compilation) { 37 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 38 | hotMiddleware.publish({ action: 'reload' }) 39 | cb() 40 | }) 41 | }) 42 | 43 | // proxy api requests 44 | Object.keys(proxyTable).forEach(function (context) { 45 | var options = proxyTable[context] 46 | if (typeof options === 'string') { 47 | options = { target: options } 48 | } 49 | app.use(proxyMiddleware(options.filter || context, options)) 50 | }) 51 | 52 | // handle fallback for HTML5 history API 53 | app.use(require('connect-history-api-fallback')()) 54 | 55 | // serve webpack bundle output 56 | app.use(devMiddleware) 57 | 58 | // enable hot-reload and state-preserving 59 | // compilation error display 60 | app.use(hotMiddleware) 61 | 62 | // serve pure static assets 63 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 64 | app.use(staticPath, express.static('./static')) 65 | 66 | var uri = 'http://localhost:' + port 67 | 68 | var _resolve 69 | var readyPromise = new Promise(resolve => { 70 | _resolve = resolve 71 | }) 72 | 73 | console.log('> Starting dev server...') 74 | devMiddleware.waitUntilValid(() => { 75 | console.log('> Listening at ' + uri + '\n') 76 | // when env is testing, don't need open it 77 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 78 | opn(uri) 79 | } 80 | _resolve() 81 | }) 82 | 83 | var server = app.listen(port) 84 | 85 | module.exports = { 86 | ready: readyPromise, 87 | close: () => { 88 | server.close() 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }), 12 | transformToRequire: { 13 | video: 'src', 14 | source: 'src', 15 | img: 'src', 16 | image: 'xlink:href' 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | console.log("-----------------------------------",process.env.NODE_ENV) 10 | 11 | 12 | module.exports = { 13 | entry: { 14 | app: './src/main.js' 15 | }, 16 | output: { 17 | path: config.build.assetsRoot, 18 | filename: '[name].js', 19 | publicPath: process.env.NODE_ENV === 'production' 20 | ? config.build.assetsPublicPath 21 | : config.dev.assetsPublicPath 22 | }, 23 | resolve: { 24 | extensions: ['.js', '.vue', '.json'], 25 | alias: { 26 | 'vue$': 'vue/dist/vue.esm.js', 27 | '@': resolve('src') 28 | } 29 | }, 30 | module: { 31 | rules: [ 32 | { 33 | test: /\.vue$/, 34 | loader: 'vue-loader', 35 | options: vueLoaderConfig 36 | }, 37 | { 38 | test: /\.js$/, 39 | loader: 'babel-loader', 40 | include: [resolve('src'), resolve('test')] 41 | }, 42 | { 43 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 44 | loader: 'url-loader', 45 | options: { 46 | limit: 10000, 47 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 48 | } 49 | }, 50 | { 51 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 52 | loader: 'url-loader', 53 | options: { 54 | limit: 10000, 55 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 56 | } 57 | }, 58 | { 59 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 60 | loader: 'url-loader', 61 | options: { 62 | limit: 10000, 63 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 64 | } 65 | } 66 | ] 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var CopyWebpackPlugin = require('copy-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 11 | 12 | var env = config.build.env 13 | 14 | var webpackConfig = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ 17 | sourceMap: config.build.productionSourceMap, 18 | extract: true 19 | }) 20 | }, 21 | devtool: config.build.productionSourceMap ? '#source-map' : false, 22 | output: { 23 | path: config.build.assetsRoot, 24 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 25 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 26 | }, 27 | plugins: [ 28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 29 | new webpack.DefinePlugin({ 30 | 'process.env': env 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | }, 36 | sourceMap: true 37 | }), 38 | // extract css into its own file 39 | new ExtractTextPlugin({ 40 | filename: utils.assetsPath('css/[name].[contenthash].css') 41 | }), 42 | // Compress extracted CSS. We are using this plugin so that possible 43 | // duplicated CSS from different components can be deduped. 44 | new OptimizeCSSPlugin({ 45 | cssProcessorOptions: { 46 | safe: true 47 | } 48 | }), 49 | // generate dist index.html with correct asset hash for caching. 50 | // you can customize output by editing /index.html 51 | // see https://github.com/ampedandwired/html-webpack-plugin 52 | new HtmlWebpackPlugin({ 53 | filename: config.build.index, 54 | template: 'index.html', 55 | inject: true, 56 | minify: { 57 | removeComments: true, 58 | collapseWhitespace: true, 59 | removeAttributeQuotes: true 60 | // more options: 61 | // https://github.com/kangax/html-minifier#options-quick-reference 62 | }, 63 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 64 | chunksSortMode: 'dependency' 65 | }), 66 | // split vendor js into its own file 67 | new webpack.optimize.CommonsChunkPlugin({ 68 | name: 'vendor', 69 | minChunks: function (module, count) { 70 | // any required modules inside node_modules are extracted to vendor 71 | return ( 72 | module.resource && 73 | /\.js$/.test(module.resource) && 74 | module.resource.indexOf( 75 | path.join(__dirname, '../node_modules') 76 | ) === 0 77 | ) 78 | } 79 | }), 80 | // extract webpack runtime and module manifest to its own file in order to 81 | // prevent vendor hash from being updated whenever app bundle is updated 82 | new webpack.optimize.CommonsChunkPlugin({ 83 | name: 'manifest', 84 | chunks: ['vendor'] 85 | }), 86 | // copy custom static assets 87 | new CopyWebpackPlugin([ 88 | { 89 | from: path.resolve(__dirname, '../static'), 90 | to: config.build.assetsSubDirectory, 91 | ignore: ['.*'] 92 | } 93 | ]) 94 | ] 95 | }) 96 | 97 | if (config.build.productionGzip) { 98 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 99 | 100 | webpackConfig.plugins.push( 101 | new CompressionWebpackPlugin({ 102 | asset: '[path].gz[query]', 103 | algorithm: 'gzip', 104 | test: new RegExp( 105 | '\\.(' + 106 | config.build.productionGzipExtensions.join('|') + 107 | ')$' 108 | ), 109 | threshold: 10240, 110 | minRatio: 0.8 111 | }) 112 | ) 113 | } 114 | 115 | if (config.build.bundleAnalyzerReport) { 116 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 117 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 118 | } 119 | 120 | module.exports = webpackConfig 121 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: './', 11 | staticPath: './static', 12 | productionSourceMap: true, 13 | // Gzip off by default as many popular static hosts such as 14 | // Surge or Netlify already gzip all static assets for you. 15 | // Before setting to `true`, make sure to: 16 | // npm install --save-dev compression-webpack-plugin 17 | productionGzip: false, 18 | productionGzipExtensions: ['js', 'css'], 19 | // Run the build command with an extra argument to 20 | // View the bundle analyzer report after build finishes: 21 | // `npm run build --report` 22 | // Set to `true` or `false` to always turn it on or off 23 | bundleAnalyzerReport: process.env.npm_config_report 24 | }, 25 | dev: { 26 | env: require('./dev.env'), 27 | port: 8090, 28 | autoOpenBrowser: true, 29 | assetsSubDirectory: 'static', 30 | assetsPublicPath: '/', 31 | staticPath: '/static/', 32 | proxyTable: {}, 33 | // CSS Sourcemaps off by default because relative paths are "buggy" 34 | // with this option, according to the CSS-Loader README 35 | // (https://github.com/webpack/css-loader#sourcemaps) 36 | // In our experience, they generally work as expected, 37 | // just be aware of this issue when enabling this option. 38 | cssSourceMap: false 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | mi_vue 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 22 | 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mi_vue", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "cqu <1300084719@qq.com>", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "start": "node build/dev-server.js", 10 | "build": "node build/build.js" 11 | }, 12 | "dependencies": { 13 | "element-ui": "^1.4.1", 14 | "vue": "^2.3.3", 15 | "vue-resource": "^1.3.4", 16 | "vue-router": "^2.6.0", 17 | "vue-video-player": "^3.1.4" 18 | }, 19 | "devDependencies": { 20 | "autoprefixer": "^7.1.2", 21 | "babel-core": "^6.22.1", 22 | "babel-loader": "^7.1.1", 23 | "babel-plugin-transform-runtime": "^6.22.0", 24 | "babel-preset-env": "^1.3.2", 25 | "babel-preset-stage-2": "^6.22.0", 26 | "babel-register": "^6.22.0", 27 | "chalk": "^2.0.1", 28 | "connect-history-api-fallback": "^1.3.0", 29 | "copy-webpack-plugin": "^4.0.1", 30 | "css-loader": "^0.28.0", 31 | "cssnano": "^3.10.0", 32 | "eventsource-polyfill": "^0.9.6", 33 | "express": "^4.14.1", 34 | "extract-text-webpack-plugin": "^2.0.0", 35 | "file-loader": "^0.11.1", 36 | "friendly-errors-webpack-plugin": "^1.1.3", 37 | "html-webpack-plugin": "^2.28.0", 38 | "http-proxy-middleware": "^0.17.3", 39 | "webpack-bundle-analyzer": "^2.2.1", 40 | "semver": "^5.3.0", 41 | "shelljs": "^0.7.6", 42 | "opn": "^5.1.0", 43 | "optimize-css-assets-webpack-plugin": "^2.0.0", 44 | "ora": "^1.2.0", 45 | "rimraf": "^2.6.0", 46 | "url-loader": "^0.5.8", 47 | "vue-loader": "^12.1.0", 48 | "vue-style-loader": "^3.0.1", 49 | "vue-template-compiler": "^2.3.3", 50 | "webpack": "^2.6.1", 51 | "webpack-dev-middleware": "^1.10.0", 52 | "webpack-hot-middleware": "^2.18.0", 53 | "webpack-merge": "^4.1.0" 54 | }, 55 | "engines": { 56 | "node": ">= 4.0.0", 57 | "npm": ">= 3.0.0" 58 | }, 59 | "browserslist": [ 60 | "> 1%", 61 | "last 2 versions", 62 | "not ie <= 8" 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | 32 | -------------------------------------------------------------------------------- /src/assets/css/base.css: -------------------------------------------------------------------------------- 1 | *{ 2 | margin: 0; 3 | padding: 0; 4 | } 5 | html { 6 | width: 100%; 7 | height: 100%; 8 | } 9 | 10 | body { 11 | font-family: Helvetica, Arial, "Microsoft Yahei", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif; 12 | width: 100%; 13 | height: 100%; 14 | } 15 | 16 | ul { 17 | margin: 0; 18 | padding: 0; 19 | list-style: none; 20 | } 21 | 22 | .clearfix:after { 23 | content: "."; 24 | display: block; 25 | height: 0; 26 | clear: both; 27 | visibility: hidden 28 | } 29 | .clearfix { 30 | *+height: 1%; 31 | } 32 | 33 | a { 34 | text-decoration: none; 35 | color: #333; 36 | } 37 | -------------------------------------------------------------------------------- /src/assets/css/jm_GoodsTopBox.css: -------------------------------------------------------------------------------- 1 | ul { 2 | margin: 0; 3 | padding: 0; 4 | list-style: none; 5 | } 6 | 7 | .clearfix:after { 8 | content: "."; 9 | display: block; 10 | height: 0; 11 | clear: both; 12 | visibility: hidden 13 | } 14 | .clearfix { 15 | *+height: 1%; 16 | } 17 | 18 | a { 19 | text-decoration: none; 20 | color: #333; 21 | } 22 | 23 | .box-container{ 24 | width: 100%; 25 | height: auto; 26 | background-color: #f5f5f5; 27 | /*margin-bottom: 26px;*/ 28 | padding-top: 60px; 29 | } 30 | 31 | .boxs{ 32 | width: 90%; 33 | height: auto; 34 | margin: 0 auto; 35 | position: relative; 36 | } 37 | 38 | .boxs-top{ 39 | width: 100%; 40 | height: 58px; 41 | } 42 | 43 | .top-title{ 44 | color: #333333; 45 | float: left; 46 | font-size: 22px; 47 | font-weight: 200; 48 | line-height: 58px; 49 | margin:0; 50 | } 51 | 52 | .top-sub{ 53 | color: #424242; 54 | float: right; 55 | display: block; 56 | font-size: 16px; 57 | line-height: 58px; 58 | cursor: pointer; 59 | } 60 | .top-sub:hover{ 61 | color: #ff6700; 62 | } 63 | 64 | .sub-icon{ 65 | color: #b0b0b0; 66 | font-size: 20px; 67 | } 68 | .sub-icon:hover{ 69 | color: #ff6700; 70 | } 71 | 72 | .box-left{ 73 | float: left; 74 | width: 20%; 75 | height: 614px; 76 | cursor: pointer; 77 | transition:all 0.3s; 78 | } 79 | .box-left img{ 80 | width: 100%; 81 | height: 614px; 82 | } 83 | .box-left:hover,.box-item:hover{ 84 | transform: translateY(-1px); 85 | box-shadow: 5px 5px 20px #ccc; 86 | } 87 | 88 | .box-right{ 89 | float: left; 90 | width: 80%; 91 | height: 628px; 92 | } 93 | 94 | .box-list{ 95 | width: 100%; 96 | height: 100%; 97 | background: #f5f5f5; 98 | display: flex; 99 | justify-content:flex-start; 100 | flex-flow:row wrap; 101 | list-style: none; 102 | } 103 | 104 | /*.box-item{ 105 | width: 234px; 106 | height: 260px; 107 | padding: 20px 0; 108 | background: #fff; 109 | position: relative; 110 | margin: 0 0 14px 20px; 111 | transition:all 0.3s; 112 | }*/ 113 | .box-item{ 114 | width: 23%; 115 | height: auto; 116 | padding: 20px 0; 117 | background: #fff; 118 | position: relative; 119 | margin-left: 2%; 120 | margin-bottom: 16px; 121 | -webkit-transition: all 0.3s; 122 | transition: all 0.3s; 123 | } 124 | 125 | .discount-label{ 126 | width: 64px; 127 | height: 20px; 128 | line-height: 20px; 129 | position: absolute; 130 | top: 0; 131 | left: 50%; 132 | margin-left: -32px; 133 | font-size: 12px; 134 | color: #fff; 135 | text-align: center; 136 | z-index: 4; 137 | } 138 | 139 | .free { background-color: #ffac13; } 140 | .new { background-color: #83c44e; } 141 | .discount { background-color: #e53935; } 142 | 143 | 144 | .old-price{ 145 | color: #b0b0b0; 146 | text-decoration: line-through; 147 | } 148 | 149 | .box-right img{ 150 | display: block; 151 | width: 160px; 152 | height: 160px; 153 | margin: 0 auto; 154 | } 155 | 156 | .box-title{ 157 | font-size: 14px; 158 | color: #333; 159 | text-align: center; 160 | font-weight: normal; 161 | } 162 | 163 | .box-desc{ 164 | height: 18px; 165 | font-size: 12px; 166 | text-align: center; 167 | color: #b0b0b0; 168 | overflow: hidden; 169 | margin: 0 10px 10px; 170 | text-overflow:ellipsis; 171 | white-space: nowrap; 172 | } 173 | 174 | .box-price{ 175 | color: #ff6700; 176 | font-size: 14px; 177 | text-align: center; 178 | } 179 | 180 | 181 | /*@import url(https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css);*/ -------------------------------------------------------------------------------- /src/assets/css/jm_topbar.css: -------------------------------------------------------------------------------- 1 | body{ 2 | margin: 0 0; 3 | } 4 | .clearfix:after { 5 | content: "."; 6 | display: block; 7 | height: 0; 8 | clear: both; 9 | visibility: hidden 10 | } 11 | .clearfix { 12 | *+height: 1%; 13 | } 14 | 15 | 16 | .top-container{ 17 | width: 100%; 18 | height: 40px; 19 | background-color: #333333; 20 | } 21 | 22 | .jm .top-bar{ 23 | width: 90%; 24 | margin: 0 auto; 25 | position: relative; 26 | font-size: 12px; 27 | z-index: 11; 28 | } 29 | 30 | .jm .topbar-nav{ 31 | float: left; 32 | display: inline-block; 33 | height: 40px; 34 | line-height: 40px; 35 | overflow: hidden; 36 | } 37 | 38 | .jm .nav-wrap{ 39 | display: inline-block; 40 | margin: 0; 41 | padding: 0; 42 | list-style: none; 43 | } 44 | 45 | .jm .nav-wrap>.nav{ 46 | display: inline-block; 47 | text-decoration: none; 48 | height: 40px; 49 | line-height: 40px; 50 | padding-left: 5px; 51 | } 52 | 53 | .jm .nav-wrap>.nav>.nav-name{ 54 | display: inline-block; 55 | text-decoration: none; 56 | font-size: 12px; 57 | color: #b0b0b0; 58 | 59 | } 60 | .jm .nav-wrap>.nav>.nav-name:hover{ 61 | color: #fff; 62 | } 63 | 64 | .jm .nav-wrap>.nav>.nav-separate{ 65 | display: inline-block; 66 | color: #b0b0b0; 67 | margin-left: 5px; 68 | } 69 | 70 | 71 | .jm .topbar-info{ 72 | position: absolute; 73 | top: 0; 74 | right: 140px; 75 | height: 40px; 76 | line-height: 40px; 77 | } 78 | 79 | .jm .topbar-info>a{ 80 | color: #b0b0b0; 81 | text-decoration: none; 82 | } 83 | .jm .topbar-info a:hover{ 84 | color: #ffffff; 85 | } 86 | 87 | .jm .topbar-info>.nav-separate,.nav-wrap>.nav-separate{ 88 | color: #b0b0b0; 89 | } 90 | 91 | .jm .topbar-cart{ 92 | position: relative; 93 | float: right; 94 | width: 120px; 95 | height: 40px; 96 | line-height: 40px; 97 | cursor: pointer; 98 | background: #424242; 99 | } 100 | 101 | .jm .topbar-cart>.active{ 102 | background: #ffffff; 103 | } 104 | 105 | .jm .topbar-cart>.cart :hover{ 106 | color: #ff6700; 107 | } 108 | 109 | .jm .topbar-cart>.cart>a{ 110 | display: block; 111 | width: 100%; 112 | height: 100%; 113 | padding-left: 40px; 114 | color: #b0b0b0; 115 | text-decoration: none; 116 | box-sizing:border-box; 117 | } 118 | 119 | .jm .topbar-cart>.cart>span{ 120 | color: #b0b0b0; 121 | } 122 | 123 | .jm .topbar-cart>.cart>.icon-cart{ 124 | position: absolute; 125 | left: 15px; 126 | top:10px; 127 | font-size: 20px; 128 | color: #b0b0b0; 129 | } 130 | 131 | .jm .topbar-cart>.cart-list{ 132 | position: absolute; 133 | width: 316px; 134 | height: 96px; 135 | top: 40px; 136 | right: 0; 137 | line-height: 96px; 138 | text-align: center; 139 | color: #b0b0b0; 140 | background: #ffffff; 141 | box-shadow: 0 0 5px #ccc; 142 | overflow: hidden; 143 | z-index: 10; 144 | } 145 | 146 | .jm .cart-list.fadein-transition{ 147 | transition: all 10s ease; 148 | height: 96px; 149 | } 150 | 151 | .jm .fadein-enter, .fadein-leave{ 152 | height: 0; 153 | } 154 | 155 | 156 | /*@import url(https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css);*/ -------------------------------------------------------------------------------- /src/assets/img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/1.jpg -------------------------------------------------------------------------------- /src/assets/img/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/2.jpg -------------------------------------------------------------------------------- /src/assets/img/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/3.jpg -------------------------------------------------------------------------------- /src/assets/img/bg-thin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/bg-thin.jpg -------------------------------------------------------------------------------- /src/assets/img/chevron-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/chevron-left.png -------------------------------------------------------------------------------- /src/assets/img/chevron-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/chevron-right.png -------------------------------------------------------------------------------- /src/assets/img/goodstopbox_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/goodstopbox_1.jpg -------------------------------------------------------------------------------- /src/assets/img/icon-mi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/icon-mi.png -------------------------------------------------------------------------------- /src/assets/img/icon-search-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/icon-search-white.png -------------------------------------------------------------------------------- /src/assets/img/icon-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/icon-search.png -------------------------------------------------------------------------------- /src/assets/img/thin-tv01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/thin-tv01.png -------------------------------------------------------------------------------- /src/assets/img/thin-tv02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/thin-tv02.png -------------------------------------------------------------------------------- /src/assets/img/top-end.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/top-end.jpg -------------------------------------------------------------------------------- /src/assets/img/top-tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/top-tv.png -------------------------------------------------------------------------------- /src/assets/img/top-yu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/top-yu.jpg -------------------------------------------------------------------------------- /src/assets/img/tverweima.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/tverweima.png -------------------------------------------------------------------------------- /src/assets/img/vedio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/vedio.png -------------------------------------------------------------------------------- /src/assets/img/win.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/img/win.gif -------------------------------------------------------------------------------- /src/assets/js/gVerify.js: -------------------------------------------------------------------------------- 1 | !(function(window, document) { 2 | function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数 3 | this.options = { //默认options参数值 4 | id: "", //容器Id 5 | canvasId: "verifyCanvas", //canvas的ID 6 | width: "100", //默认canvas宽度 7 | height: "30", //默认canvas高度 8 | type: "blend", //图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母 9 | code: "" 10 | } 11 | 12 | if(Object.prototype.toString.call(options) == "[object Object]"){//判断传入参数类型 13 | for(var i in options) { //根据传入的参数,修改默认参数值 14 | this.options[i] = options[i]; 15 | } 16 | }else{ 17 | this.options.id = options; 18 | } 19 | 20 | this.options.numArr = "0,1,2,3,4,5,6,7,8,9".split(","); 21 | this.options.letterArr = getAllLetter(); 22 | 23 | this._init(); 24 | this.refresh(); 25 | } 26 | 27 | GVerify.prototype = { 28 | /**版本号**/ 29 | version: '1.0.0', 30 | 31 | /**初始化方法**/ 32 | _init: function() { 33 | var con = document.getElementById(this.options.id); 34 | var canvas = document.createElement("canvas"); 35 | this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100"; 36 | this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30"; 37 | canvas.id = this.options.canvasId; 38 | canvas.width = this.options.width; 39 | canvas.height = this.options.height; 40 | canvas.style.cursor = "pointer"; 41 | canvas.innerHTML = "您的浏览器版本不支持canvas"; 42 | con.appendChild(canvas); 43 | var parent = this; 44 | canvas.onclick = function(){ 45 | parent.refresh(); 46 | } 47 | }, 48 | 49 | /**生成验证码**/ 50 | refresh: function() { 51 | var canvas = document.getElementById(this.options.canvasId); 52 | if(canvas.getContext) { 53 | var ctx = canvas.getContext('2d'); 54 | } 55 | ctx.textBaseline = "middle"; 56 | 57 | ctx.fillStyle = randomColor(180, 240); 58 | ctx.fillRect(0, 0, this.options.width, this.options.height); 59 | 60 | if(this.options.type == "blend") { //判断验证码类型 61 | var txtArr = this.options.numArr.concat(this.options.letterArr); 62 | } else if(this.options.type == "number") { 63 | var txtArr = this.options.numArr; 64 | } else { 65 | var txtArr = this.options.letterArr; 66 | } 67 | 68 | for(var i = 1; i <= 4; i++) { 69 | var txt = txtArr[randomNum(0, txtArr.length)]; 70 | this.options.code += txt; 71 | ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; //随机生成字体大小 72 | ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色 73 | ctx.shadowOffsetX = randomNum(-3, 3); 74 | ctx.shadowOffsetY = randomNum(-3, 3); 75 | ctx.shadowBlur = randomNum(-3, 3); 76 | ctx.shadowColor = "rgba(0, 0, 0, 0.3)"; 77 | var x = this.options.width / 5 * i; 78 | var y = this.options.height / 2; 79 | var deg = randomNum(-30, 30); 80 | /**设置旋转角度和坐标原点**/ 81 | ctx.translate(x, y); 82 | ctx.rotate(deg * Math.PI / 180); 83 | ctx.fillText(txt, 0, 0); 84 | /**恢复旋转角度和坐标原点**/ 85 | ctx.rotate(-deg * Math.PI / 180); 86 | ctx.translate(-x, -y); 87 | } 88 | /**绘制干扰线**/ 89 | for(var i = 0; i < 4; i++) { 90 | ctx.strokeStyle = randomColor(40, 180); 91 | ctx.beginPath(); 92 | ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height)); 93 | ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height)); 94 | ctx.stroke(); 95 | } 96 | /**绘制干扰点**/ 97 | for(var i = 0; i < this.options.width/4; i++) { 98 | ctx.fillStyle = randomColor(0, 255); 99 | ctx.beginPath(); 100 | ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI); 101 | ctx.fill(); 102 | } 103 | }, 104 | 105 | /**验证验证码**/ 106 | validate: function(code){ 107 | var code = code.toLowerCase(); 108 | var v_code = this.options.code.toLowerCase(); 109 | if(code == v_code){ 110 | return true; 111 | }else{ 112 | return false; 113 | } 114 | } 115 | } 116 | /**生成字母数组**/ 117 | function getAllLetter() { 118 | var letterStr = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; 119 | return letterStr.split(","); 120 | } 121 | /**生成一个随机数**/ 122 | function randomNum(min, max) { 123 | return Math.floor(Math.random() * (max - min) + min); 124 | } 125 | /**生成一个随机色**/ 126 | function randomColor(min, max) { 127 | var r = randomNum(min, max); 128 | var g = randomNum(min, max); 129 | var b = randomNum(min, max); 130 | return "rgb(" + r + "," + g + "," + b + ")"; 131 | } 132 | window.GVerify = GVerify; 133 | })(window, document); -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/HELP-US-OUT.txt: -------------------------------------------------------------------------------- 1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, 2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, 3 | comprehensive icon sets or copy and paste your own. 4 | 5 | Please. Check it out. 6 | 7 | -Dave Gandy 8 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/style/font-awesome-4.7.0/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/assets/style/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix} { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .@{fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /src/assets/style/font-awesome-4.7.0/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /src/components/First.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 33 | 34 | 49 | -------------------------------------------------------------------------------- /src/components/Goods.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 37 | 38 | 44 | -------------------------------------------------------------------------------- /src/components/GoodsContent.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 79 | 80 | 88 | -------------------------------------------------------------------------------- /src/components/GoodsDetail.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 24 | 25 | 31 | -------------------------------------------------------------------------------- /src/components/GoodsTopBox.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 81 | 82 | -------------------------------------------------------------------------------- /src/components/Hello.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 35 | 54 | -------------------------------------------------------------------------------- /src/components/HotProduct.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 38 | 39 | 105 | -------------------------------------------------------------------------------- /src/components/NavBar.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 40 | -------------------------------------------------------------------------------- /src/components/Recommand.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 76 | 77 | 137 | -------------------------------------------------------------------------------- /src/components/TopBar.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 95 | 96 | -------------------------------------------------------------------------------- /src/components/TopSub.vue: -------------------------------------------------------------------------------- 1 | 71 | 72 | 73 | 86 | 87 | 207 | -------------------------------------------------------------------------------- /src/components/common/GoodsContentSlide.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 80 | 81 | -------------------------------------------------------------------------------- /src/components/common/GoodsHeader.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | 21 | -------------------------------------------------------------------------------- /src/components/common/GoodsLeft.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/common/GoodsTop.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /src/components/common/slide.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 30 | 31 | 53 | -------------------------------------------------------------------------------- /src/components/common/yxmvideo1.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /src/components/common/yxmvideo2.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /src/components/common/yxmvideo3.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /src/components/common/yxmvideo4.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /src/components/detail/NavBar.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 40 | -------------------------------------------------------------------------------- /src/components/detail/mitv.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 77 | 78 | 94 | -------------------------------------------------------------------------------- /src/components/detail/sectionAtions.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/src/components/detail/sectionAtions.vue -------------------------------------------------------------------------------- /src/components/detail/sectionAtoms.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /src/components/detail/sectionChildren.vue: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /src/components/detail/sectionChip.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 39 | 40 | -------------------------------------------------------------------------------- /src/components/detail/sectionFeatures.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 32 | 33 | 93 | -------------------------------------------------------------------------------- /src/components/detail/sectionFooter.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 50 | 51 | 130 | 131 | -------------------------------------------------------------------------------- /src/components/detail/sectionHdzone.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 41 | 42 | -------------------------------------------------------------------------------- /src/components/detail/sectionInstall.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /src/components/detail/sectionPlace.vue: -------------------------------------------------------------------------------- 1 | 43 | -------------------------------------------------------------------------------- /src/components/detail/sectionReading.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /src/components/detail/sectionRecommend.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/detail/sectionScreen.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /src/components/detail/sectionSmart.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 50 | 51 | -------------------------------------------------------------------------------- /src/components/detail/sectionSound.vue: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /src/components/detail/sectionStory.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | 23 | -------------------------------------------------------------------------------- /src/components/detail/sectionThin.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 36 | 37 | 164 | -------------------------------------------------------------------------------- /src/components/detail/sectionVip.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 31 | 32 | 39 | -------------------------------------------------------------------------------- /src/components/detail/sectionVoice.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /src/components/mi_login.vue: -------------------------------------------------------------------------------- 1 | 82 | 83 | 84 | 193 | 194 | -------------------------------------------------------------------------------- /src/components/yxmvideo.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /src/global/api.js: -------------------------------------------------------------------------------- 1 | //接口配置 2 | 3 | //把全体接口封装在的前端配置文件(序号与接口文档一一对应),多个环境配置时可快速切换整站式的全部接口,不用逐个页面去改。 4 | const config = require('../../config'); 5 | 6 | let url = { 7 | apiUrl: "/ccp-web/api", //接口路径 8 | //ctxPath: "/ccp-web/dist", //tomcat服务dist目录 9 | ctxPath: "/dist", //node服务dist目录 10 | 11 | //staticPath:config.dev.staticPath, //开发环境静态资源路径 12 | staticPath: process.env.NODE_ENV !== 'development' ? config.build.staticPath: config.dev.staticPath 13 | }; 14 | 15 | //----------------请注意:如果正式环境,不需要本地json数据模拟,请删除以上代码和api中的模拟接口。---------------- 16 | 17 | 18 | export const api = { 19 | 20 | //'login':'http://localhost:80/dataJson/login.json',//ngxin 21 | 'goodtopbox':url.staticPath+'/data/goodtop-box.json',//获取goodtop-box模拟接口 22 | 'Recommand':url.staticPath+'/data/Recommand.json',//Recommand模拟接口 23 | 'yxmdata':url.staticPath+'/data/yxmdata.json'//yxmdata模拟接口 24 | 25 | } -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import VueResource from 'vue-resource' 7 | 8 | import ElementUI from 'element-ui' 9 | import VueVideoPlayer from 'vue-video-player' 10 | import 'element-ui/lib/theme-default/index.css' 11 | 12 | 13 | import './assets/js/jquery-3.1.1.js' 14 | import './assets/js/gVerify.js' 15 | import './assets/css/base.css' 16 | 17 | Vue.use(VueVideoPlayer) 18 | Vue.use(ElementUI) 19 | Vue.use(VueResource) 20 | 21 | 22 | Vue.config.productionTip = false 23 | 24 | /* eslint-disable no-new */ 25 | new Vue({ 26 | el: '#app', 27 | router, 28 | template: '', 29 | components: { App } 30 | }) 31 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import First from '@/components/First' 4 | import Regist from '@/components/mi_regist' 5 | import Login from '@/components/mi_login' 6 | import GoodsDetail from '@/components/GoodsDetail' 7 | 8 | Vue.use(Router) 9 | 10 | // const User = { 11 | // template: ` 12 | //
13 | //

User {{ $route.params.id }}

14 | // 15 | //
16 | // ` 17 | // } 18 | const router = new Router({ 19 | routes: [ 20 | { 21 | // 重定向到首页 22 | path: '/', 23 | redirect: '/First' 24 | }, 25 | { 26 | path: '/First', 27 | component: First 28 | }, 29 | { 30 | path: '/mi_regist', 31 | component: Regist 32 | }, 33 | { 34 | path:'/mi_login', 35 | component:Login 36 | }, 37 | { 38 | path:'/GoodsDetail', 39 | component:GoodsDetail 40 | } 41 | // { 42 | // path: '/user', 43 | // component: User, 44 | // children:[ 45 | // { path: 'mi_regist', component: Regist } 46 | // ] 47 | // } 48 | ] 49 | }) 50 | 51 | export default router; 52 | // const app = new Vue({ 53 | // router 54 | // }).$mount('#app') 55 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/.gitkeep -------------------------------------------------------------------------------- /static/data/Recommand.json: -------------------------------------------------------------------------------- 1 | { 2 | "recomends": [ 3 | { 4 | "sourceUrl": "//item.mi.com/1154300011.html", 5 | "imgUrl": "//i1.mifile.cn/a1/T1.VVgBjAT1RXrhCrK.jpg?width=140&height=140", 6 | "name": "小米电视主机", 7 | "price": "999", 8 | "favorable": "102" 9 | }, 10 | { 11 | "sourceUrl": "//item.mi.com/1153300030.html", 12 | "imgUrl": "//i1.mifile.cn/a1/T1LrdvBbAT1RXrhCrK.jpg?width=140&height=140", 13 | "name": "小米手环", 14 | "price": "69", 15 | "favorable": "11.8万" 16 | }, 17 | { 18 | "sourceUrl": "//item.mi.com/1155100006.html", 19 | "imgUrl": "//i1.mifile.cn/a1/T1_tEgBmVv1RXrhCrK.jpg?width=140&height=140", 20 | "name": "米兔儿童电话手表", 21 | "price": "299", 22 | "favorable": "7865" 23 | }, 24 | { 25 | "sourceUrl": "//item.mi.com/1154100018.html", 26 | "imgUrl": "//i1.mifile.cn/a1/T1TpZ_ByYv1R4cSCrK.png?width=140&height=140", 27 | "name": "小米低音炮", 28 | "price": "599", 29 | "favorable": "4908" 30 | }, 31 | { 32 | "sourceUrl": "//item.mi.com/1155100011.html", 33 | "imgUrl": "//i1.mifile.cn/a1/T1CDbjBgAT1RXrhCrK.jpg?width=140&height=140", 34 | "name": "90分旅行箱 24寸", 35 | "price": "349", 36 | "favorable": "1.1万" 37 | }, 38 | { 39 | "sourceUrl": "//item.mi.com/1154900069.html", 40 | "imgUrl": "//i1.mifile.cn/a1/T1PyZ_Bjdv1RXrhCrK.jpg?width=140&height=140", 41 | "name": "小米智能插座 基础版", 42 | "price": "49", 43 | "favorable": "8622" 44 | }, 45 | { 46 | "sourceUrl": "//item.mi.com/1162100021.html", 47 | "imgUrl": "//i1.mifile.cn/a1/pms_1464071511.37197399.jpg?width=140&height=140", 48 | "name": "米家 LED 智能台灯", 49 | "price": "169", 50 | "favorable": "4268人好评" 51 | }, 52 | { 53 | "sourceUrl": "//item.mi.com/1153700018.html", 54 | "imgUrl": "//i1.mifile.cn/a1/T1Ay_gBKKv1RXrhCrK.jpg?width=140&height=140", 55 | "name": "90分旅行箱 20寸", 56 | "price": "299", 57 | "favorable": "1.5万" 58 | }, 59 | { 60 | "sourceUrl": "//item.mi.com/1161200004.html", 61 | "imgUrl": "//i1.mifile.cn/a1/T1WxYvB_xv1RXrhCrK.jpg?width=140&height=140", 62 | "name": "小米活塞耳机 基础版", 63 | "price": "29", 64 | "favorable": "5.5万" 65 | }, 66 | { 67 | "sourceUrl": "//item.mi.com/1153300025.html", 68 | "imgUrl": "//i1.mifile.cn/a1/T1tzL_BjYT1RXrhCrK.jpg?width=140&height=140", 69 | "name": "学院风简约双肩包", 70 | "price": "59", 71 | "favorable": "1.8万" 72 | }, 73 | { 74 | "sourceUrl": "//item.mi.com/1154300036.html", 75 | "imgUrl": "//i1.mifile.cn/a1/T1F5K_BjVv1RXrhCrK.jpg?width=140&height=140", 76 | "name": "小米小钢炮蓝牙音箱2", 77 | "price": "129", 78 | "favorable": "1.2万" 79 | }, 80 | { 81 | "sourceUrl": "//item.mi.com/1162900011.html", 82 | "imgUrl": "//i1.mifile.cn/a1/pms_1470793898.34754317.jpg?width=140&height=140", 83 | "name": "90分金属旅行箱", 84 | "price": "1799", 85 | "favorable": "23" 86 | }, 87 | { 88 | "sourceUrl": "//item.mi.com/1153800044.html", 89 | "imgUrl": "//i1.mifile.cn/a1/T1MDK_B_YT1RXrhCrK.jpg?width=140&height=140", 90 | "name": "小米蓝牙音箱", 91 | "price": "199", 92 | "favorable": " 1.9万" 93 | }, 94 | { 95 | "sourceUrl": "//item.mi.com/1161200013.html", 96 | "imgUrl": "//i1.mifile.cn/a1/T1FtKgBvZv1RXrhCrK.jpg?width=140&height=140", 97 | "name": "小米多功能都市休闲胸包", 98 | "price": "69", 99 | "favorable": "9453" 100 | }, 101 | { 102 | "sourceUrl": "//item.mi.com/1161800001.html", 103 | "imgUrl": "//i1.mifile.cn/a1/T1HQA_BCd_1RXrhCrK.jpg?width=140&height=140", 104 | "name": "米家iHealth血压计", 105 | "price": "399", 106 | "favorable": "1529" 107 | }, 108 | { 109 | "sourceUrl": "//item.mi.com/1153900041.html", 110 | "imgUrl": "//i1.mifile.cn/a1/T1JJ__BbYT1RXrhCrK.jpg?width=140&height=140", 111 | "name": "小米净水器滤芯", 112 | "price": "59", 113 | "favorable": "6640" 114 | }, 115 | { 116 | "sourceUrl": "//item.mi.com/1162800007.html", 117 | "imgUrl": "//i1.mifile.cn/a1/pms_1468287589.40786199.jpg?width=140&height=140", 118 | "name": "米家随身风扇", 119 | "price": "19.9", 120 | "favorable": "4522" 121 | }, 122 | { 123 | "sourceUrl": "//item.mi.com/1160800073.html", 124 | "imgUrl": "//i1.mifile.cn/a1/T1N5KjB_dT1RXrhCrK.jpg?width=140&height=140", 125 | "name": "小米家庭音响 金属版", 126 | "price": "899", 127 | "favorable": "0" 128 | }, 129 | { 130 | "sourceUrl": "//item.mi.com/1161000003.html", 131 | "imgUrl": "//i1.mifile.cn/a1/T1LpWjB4bv1RXrhCrK.jpg?width=140&height=140", 132 | "name": "小米空气净化器滤芯 经济版", 133 | "price": "129", 134 | "favorable": "473" 135 | }, 136 | { 137 | "sourceUrl": "//item.mi.com/1161200073.html", 138 | "imgUrl": "//i1.mifile.cn/a1/T1bED_B__v1RXrhCrK.jpg?width=140&height=140", 139 | "name": "小蚁摄像机储存套装(夜视+8GB)", 140 | "price": " 165.9", 141 | "favorable": "0" 142 | } 143 | ] 144 | } -------------------------------------------------------------------------------- /static/data/goodscontent.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title":"图书", 4 | "type":"book", 5 | "list": [ 6 | { 7 | "sourceUrl": "http://www.duokan.com/book/115222", 8 | "title": "哈利·波特与魔法石", 9 | "desc": "哈利波特来了", 10 | "imgUrl": "//i3.mifile.cn/a4/8e3584b6-3169-41c6-9356-939ec79aac2b", 11 | "type": "0" 12 | }, 13 | 14 | { 15 | "sourceUrl": "http://www.duokan.com/special/7812", 16 | "title": "特价专区", 17 | "desc": "精选畅销好书,特价促销,天天更新,天天特价!", 18 | "price": "限时优惠", 19 | "imgUrl": "//i3.mifile.cn/a4/T1dlVgBbbT1RXrhCrK.jpg", 20 | "type": "1"}, 21 | 22 | { 23 | "sourceUrl": "http://www.duokan.com/list/9-1", 24 | "title": "杂志专区", 25 | "desc": "纸媒杂志+互联网杂志,你想看的这都有!", 26 | "price": "同步新刊上线", 27 | "imgUrl": "//i3.mifile.cn/a4/T1R3WgBjKT1RXrhCrK.jpg", 28 | "type": "1"}, 29 | 30 | { 31 | "sourceUrl": "http://www.duokan.com/list/1-1?from=xiaomi", 32 | "desc1": "海量好书,享受精品阅读时光", 33 | "desc2": "漂亮的中文排版,千万读者选择!", 34 | "btnTxt": "前往多看阅读", 35 | "price": "限时优惠", 36 | "imgUrl": "//s01.mifile.cn/i/index/more-duokan.jpg", 37 | "type": "2" 38 | } 39 | ] 40 | }, 41 | 42 | { 43 | "title":"MIUI主题", 44 | "type":"theme", 45 | "list": [ 46 | { 47 | "sourceUrl": "http://zhuti.xiaomi.com/detail/4ecf4ebb-7cba-4142-96aa-6b8deb2426ef", 48 | "title": "新世纪福音战士OL", 49 | "desc": "EVA手游正版授权,同名主题,高能来袭!", 50 | "price": "免费", 51 | "imgUrl": "http://i3.mifile.cn/a4/7d47dde1-60fb-4ff3-8fa1-364cfc452457", 52 | "type": "1" 53 | }, 54 | 55 | { 56 | "sourceUrl": "http://zhuti.xiaomi.com/detail/d6277519-ca46-420c-ab09-060f6d293f94", 57 | "title": "世界就在这里", 58 | "desc": "“青春的世界里,每一刻都要用尽全力欢呼”", 59 | "price": "免费", 60 | "imgUrl": "http://i3.mifile.cn/a4/b2c8ca37-4ba8-4af8-b87e-91847980a278", 61 | "type": "1" 62 | }, 63 | 64 | { 65 | "sourceUrl": "http://zhuti.xiaomi.com/detail/13df18d4-e52c-4a61-82e3-97014f21bd77", 66 | "title": "不悔剑三", 67 | "desc": "精品剑网三同人主题 浪漫武侠 共闯天涯", 68 | "price": "3米币", 69 | "imgUrl": "http://i3.mifile.cn/a4/10af68f9-3012-48bb-85b1-ad3b0646dfdb", 70 | "type": "1" 71 | }, 72 | 73 | { 74 | "sourceUrl": "http://zhuti.xiaomi.com/?from=mi", 75 | "desc1": "众多个性主题、百变锁屏与自由桌面", 76 | "desc2": "让你的手机与众不同!", 77 | "btnTxt": "前往MIUI主题市场", 78 | "price": "限时优惠", 79 | "imgUrl": "//s01.mifile.cn/i/index/more-duokan.jpg", 80 | "type": "2" 81 | } 82 | ] 83 | }, 84 | 85 | { 86 | "title":"游戏", 87 | "type":"game", 88 | "list": [ 89 | { 90 | "sourceUrl": "http://ljm.mi.com/?channel=meng_1084_1_android", 91 | "title": "老九门", 92 | "desc": "盗墓笔记前传上线", 93 | "price": "免费", 94 | "imgUrl": "http://i3.mifile.cn/a4/6032cb36-587f-4366-89ef-aefed2546552", 95 | "type": "1" 96 | }, 97 | 98 | { 99 | "sourceUrl": "http://game.xiaomi.com/miyou/index.html", 100 | "title": "米柚手游模拟器", 101 | "desc": "在电脑上玩遍小米所有手游", 102 | "price": "免费", 103 | "imgUrl": "//i3.mifile.cn/a4/T1czW_BXCv1R4cSCrK.png", 104 | "type": "1" 105 | }, 106 | 107 | { 108 | "sourceUrl": "http://game.xiaomi.com/app-appdetail--app_id__581412.html", 109 | "title": "剑侠情缘", 110 | "desc": "玩剑侠情缘手游,领666壕礼!!", 111 | "price": "免费", 112 | "imgUrl": "http://i3.mifile.cn/a4/010948ae-bd48-49c6-af12-4ec8c4a0c829", 113 | "type": "1" 114 | }, 115 | 116 | { 117 | "sourceUrl": "http://game.xiaomi.com/index.php?c=index&a=run", 118 | "desc1": "免费下载海量的手机游戏", 119 | "desc2": "天天都有现金福利赠送", 120 | "btnTxt": "前往小米游戏商店", 121 | "price": "限时优惠", 122 | "imgUrl": "//s01.mifile.cn/i/index/more-game.jpg", 123 | "type": "2" 124 | } 125 | ] 126 | }, 127 | 128 | { 129 | "title":"应用", 130 | "type":"app", 131 | "list": [ 132 | { 133 | "sourceUrl": "http://app.mi.com/subject/168797", 134 | "title": "2015年度应用", 135 | "desc": "2015年度应用", 136 | "price": "免费", 137 | "imgUrl": "//i3.mifile.cn/a4/T1YyJgBCYv1R4cSCrK.png", 138 | "type": "1" 139 | }, 140 | 141 | { 142 | "sourceUrl": "http://app.mi.com/subject/168798", 143 | "title": "2015年度游戏", 144 | "desc": "2015年度游戏", 145 | "price": "免费", 146 | "imgUrl": "//i3.mifile.cn/a4/T1eaxgB4Ev1R4cSCrK.png", 147 | "type": "1" 148 | }, 149 | 150 | { 151 | "sourceUrl": "http://app.mi.com/subject/167924", 152 | "title": "小米应用", 153 | "desc": "小米出品 必属精品", 154 | "price": "免费", 155 | "imgUrl": "//i3.mifile.cn/a4/T15VZvB5Kv1R4cSCrK.png", 156 | "type": "1" 157 | }, 158 | 159 | { 160 | "sourceUrl": "http://app.mi.com/?from=mi", 161 | "desc1": "帮助小米手机和其他安卓手机用户", 162 | "desc2": "发现好用的安卓应用", 163 | "btnTxt": "前往小米应用商店", 164 | "price": "限时优惠", 165 | "imgUrl": "//s01.mifile.cn/i/index/more-app.jpg", 166 | "type": "2" 167 | } 168 | ] 169 | } 170 | ] -------------------------------------------------------------------------------- /static/data/goodtop-box.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "sourceUrl":"#", 3 | "title":"小米电视机4 65英寸", 4 | "desc":"8月1日-3日买就送三年小米电视会员", 5 | "imgUrl":"http://i1.mifile.cn/a1/pms_1495074053.84174465!220x220.jpg", 6 | "price":"9999", 7 | "discountType": "free", 8 | "discount": "免邮费" 9 | }, 10 | 11 | { 12 | "sourceUrl":"#", 13 | "imgUrl":"http://i3.mifile.cn/a4/2b69b930-a2fd-4d09-a46a-8690cb79f764", 14 | "title":"电助力折叠自行车", 15 | "desc":"力矩传感电助力,让城市出行轻松有趣", 16 | "price":"149" 17 | }, 18 | 19 | { 20 | "sourceUrl":"#", 21 | "imgUrl":"http://i1.mifile.cn/a1/pms_1464615180.86261317!220x220.jpg", 22 | "title":"#", 23 | "desc":"能说会道,宝宝的好玩伴", 24 | "price":"199", 25 | "discountType": "new", 26 | "discount": "新品" 27 | }, 28 | 29 | { 30 | "sourceUrl":"#", 31 | "imgUrl":"http://i1.mifile.cn/a1/T1GxCvBghT1RXrhCrK!220x220.jpg", 32 | "title":"Yeelight床头灯", 33 | "desc":"触摸式操作体验,给卧室1600万种颜色", 34 | "price":"249"}, 35 | 36 | { 37 | "sourceUrl":"#", 38 | "imgUrl":"http://i1.mifile.cn/a1/pms_1479190789.95594557!220x220.jpg", 39 | "title":"小米盒子3s", 40 | "desc":"4k超高清机顶盒,64位处理器", 41 | "price":"329"}, 42 | 43 | { 44 | "sourceUrl":"#", 45 | "imgUrl":"http://i3.mifile.cn/a4/T1rQAgB7Av1RXrhCrK.jpg", 46 | "title":"小米路由器3", 47 | "desc":"四天线设计,更安全更稳定", 48 | "price":"149"}, 49 | 50 | { 51 | "sourceUrl":"#", 52 | "imgUrl":"http://i1.mifile.cn/a1/T1OVC_ByY_1RXrhCrK!220x220.jpg", 53 | "title":"米家压力IH电饭煲", 54 | "desc":"只能烹饪,3L容量", 55 | "price":"899", 56 | "oldPrice":"1199", 57 | "discountType": "discount", 58 | "discount": "享9折" 59 | }, 60 | 61 | { 62 | "sourceUrl":"#", 63 | "imgUrl":"http://i1.mifile.cn/a1/pms_1488272686.62666302!220x220.jpg", 64 | "title":"小米米家电动滑板车", 65 | "desc":"极简几何设计,1分钟轻松上手", 66 | "price":"1999", 67 | "discountType": "new", 68 | "discount": "新品" 69 | } 70 | 71 | ] -------------------------------------------------------------------------------- /static/data/yxmdata.json: -------------------------------------------------------------------------------- 1 | [ 2 | 3 | { 4 | 5 | "aa":[ 6 | {"sourceUrl": "//item.mi.com/1160800014.html", "rightimgurl": "//i1.mifile.cn/a1/T12AWgB5Vv1RXrhCrK!220x220.jpg", "title": "小米手机5 智能翻盖保护套", "price": "49元", "heat": "1.5万评价", 7 | "reviewDesc": "很不错,很好用。已推荐朋友使用。", "reviewAuthor": "舊時書生", "reviewStatus": true}, 8 | {"sourceUrl": "//item.mi.com/1161600009.html", "rightimgurl": "//i1.mifile.cn/a1/T1XVWjBCYv1RXrhCrK!220x220.jpg", "title": "小米Max 智能显示保护套", "price": "59元", "heat": "4179评价", 9 | "reviewDesc": "这个唤醒保护套功能还真不错~~给家人买的,等米MAX...", "reviewAuthor": "姮Fiona.mo", "reviewStatus": true}, 10 | {"sourceUrl": "//item.mi.com/1162500028.html", "rightimgurl": "//i1.mifile.cn/a1/pms_1469787847.44636521!220x220.jpg", "title": "红米Pro 智能显示保护套", "price": "49元", "heat": "190评价", 11 | "reviewDesc": "又是一款精品,喜欢,小米值得拥有!", "reviewAuthor": "174473315", "reviewStatus": true, "discountType": "new", "discount": "新品"}, 12 | {"sourceUrl": "//item.mi.com/1161200045.html", "rightimgurl": "//i1.mifile.cn/a1/T18sWvBTxv1RXrhCrK!220x220.jpg", "title": "红米3高配版 炫彩翻盖保护套", "price": "2939元", "heat": "4775评价", 13 | "reviewDesc": "这个我感觉是我买的性价比最好的手机外套了", "reviewAuthor": "煎饼", "reviewStatus": true, "oldprice": "39", "discountType": "discount", "discount": "享8折"}, 14 | {"sourceUrl": "//item.mi.com/1154800016.html", "rightimgurl": "//i1.mifile.cn/a1/T10Eb_BmAv1RXrhCrK!220x220.jpg", "title": "红米Note3 炫彩翻页保护套", "price": "39元", "heat": "2.2万评价", 15 | "reviewDesc": "大小合适,特别好,质量和颜色都非常棒", "reviewAuthor": "142010366", "reviewStatus": true}, 16 | {"sourceUrl": "//item.mi.com/1160100013.html", "rightimgurl": "//i3.mifile.cn/a4/T1WLx_BgVv1RXrhCrK.jpg", "title": "红米3标准版 炫彩翻盖保护套", "price": "29元", "heat": "6908评价", 17 | "reviewDesc": "很好的手机保护套,质量ok ", "reviewAuthor": "binarystar1989", "reviewStatus": true, "oldprice": "39", "discountType": "discount", "discount": "享8折"}, 18 | {"sourceUrl": "//item.mi.com/1142900047.html", "rightimgurl": "//i1.mifile.cn/a1/T11eEvBmYT1RXrhCrK!220x220.jpg", "title": "小米手机4 智能唤醒翻盖保护套", "price": "1549元", "heat": "11.5万评价", 19 | "reviewDesc": "小米4保护套一下买了两个,玫红和柠檬绿,生活如此多娇!", "reviewAuthor": "゛ロ隹╲ー", "reviewStatus": true, "oldprice": "49", "discountType": "discount", "discount": "享4折"}, 20 | {"moreUrl": "//list.mi.com/7", "sourceUrl": "//item.mi.com/1155100020.html", "rightimgurl": "//i1.mifile.cn/a1/T1QKJ_BvLv1RXrhCrK!220x220.jpg", "title": "平板2保护套", "price": "69元" ,"heat": "1.9万评价"} 21 | 22 | ], 23 | 24 | "bb":[ 25 | {"sourceUrl": "//item.mi.com/1160800004.html", "rightimgurl": "//i3.mifile.cn/a4/T1cVLjBX_v1RXrhCrK.jpg", "title": "小米手机5 极薄防蓝光贴膜", "price": "49元", "heat": "6324评价", 26 | "reviewDesc": "我用过最好的产品!性能彪悍,工艺精湛,美美美", "reviewAuthor": "川四大", "reviewStatus": true}, 27 | {"sourceUrl": "//item.mi.com/1161600029.html", "rightimgurl": "//i1.mifile.cn/a1/T1y7JQBbCT1RXrhCrK!220x220.jpg", "title":" 小米Max 标准高透贴膜" , "price": "19元", "heat": "6384评价", 28 | "reviewDesc": "说是高透就是高透,贴上贴膜,带领领略高透滴全世界~~" , "reviewAuthor": "148800310", "reviewStatus": true}, 29 | {"sourceUrl": "//item.mi.com/1154800022.html", "rightimgurl": "//i1.mifile.cn/a1/T1SSJ_B4E_1RXrhCrK!220x220.jpg", "title": "小米平板2 标准高透贴膜", "price": "29元", "heat": "1290评价", 30 | "reviewDesc": "挺好用的,发货也快,清晰!", "reviewAuthor": "卖蘑菇的小和尚", "reviewStatus": true}, 31 | {"sourceUrl": "//item.mi.com/1154800026.html", "rightimgurl": "//i3.mifile.cn/a4/T1qdEgBKKv1RXrhCrK.jpg", "title": "红米Note3 钢化玻璃膜", "price": "19元", "heat": "3.6万评价", 32 | "reviewDesc": "钢化膜表面很光滑,和手机屏幕玻璃一样,很好", "reviewAuthor": "Pioneer77", "reviewStatus": true}, 33 | {"sourceUrl": "//item.mi.com/1160100021.html", "rightimgurl": "//i1.mifile.cn/a1/T1g7J_BsLv1RXrhCrK!220x220.jpg", "title": "红米手机3 钢化玻璃膜", "price": "9.9元", "heat": "7582评价", 34 | "reviewDesc": "很好,容易贴上,触感不错", "reviewAuthor": "247292055", "reviewStatus": true}, 35 | {"sourceUrl": "//item.mi.com/1160800006.html", "rightimgurl": "//i1.mifile.cn/a1/T1t2K_B4L_1RXrhCrK!220x220.jpg", "title": "小米手机5 钢化玻璃贴膜", "price": "29元", "heat": "2.9万评价", 36 | "reviewDesc": "膜的质量很好,不粘指纹,", "reviewAuthor": " 乱世风凌乱", "reviewStatus": true}, 37 | {"sourceUrl": "//item.mi.com/1162500021.html", "rightimgurl": "//i1.mifile.cn/a1/pms_1469787992.44385373!220x220.jpg", "title": "红米Pro 标准高透贴膜", "price": "19元", "heat": "437评价", 38 | "reviewDesc": "很好,物流非常快,还有贴膜的方法,并且附赠两张贴膜放...", "reviewAuthor": "1123887372", "reviewStatus": true}, 39 | {"moreUrl": "//list.mi.com/9", "sourceUrl": "//item.mi.com/1160800005.html", "rightimgurl": "//i1.mifile.cn/a1/T1keE_BsJv1RXrhCrK!220x220.jpg ", "title": "小米手机5 标准高透贴膜", "price": "19元" ,"heat": "1.9万评价"} 40 | 41 | ], 42 | 43 | 44 | "cc":[ 45 | {"sourceUrl": "//item.mi.com/1152500016.html", "rightimgurl": "//i1.mifile.cn/a1/T1xXxQBCVT1RXrhCrK!220x220.jpg", "title": "小蚁蓝牙遥控器", "price": "39元", "heat": "2778评价", 46 | "reviewDesc": "宝贝挺好的,开始联不上,把相机固件升级了才能联上,非...", "reviewAuthor": "老叶8", "reviewStatus": true}, 47 | {"sourceUrl": "//item.mi.com/1153300036.html", "rightimgurl": "//i1.mifile.cn/a1/T1j_D_BQWT1RXrhCrK!220x220.jpg", "title": "指环式防滑手机支架", "price": "12.5元", "heat": "8087评价", 48 | "reviewDesc": "很好的设计,太实用了,更方便单手操作了,不用担心手机...", "reviewAuthor": "疯流涕淌王", "reviewStatus": true}, 49 | {"sourceUrl": "//www.mi.com/shb/", "rightimgurl": "//i1.mifile.cn/a1/T1WTEvBmKT1RXrhCrK!220x220.jpg", "title": "小米蓝牙手柄", "price": "99元", "heat": "2.7万评价", 50 | "reviewDesc": "手感超好,联上小米电视玩游戏超爽,就是电视端游戏有待...", "reviewAuthor": "陈峪汀", "reviewStatus": true}, 51 | {"sourceUrl": "//item.mi.com/1154200029.html", "rightimgurl": "//i1.mifile.cn/a1/T11oW_B4dv1RXrhCrK!220x220.jpg", "title": "蓝牙语音体感遥控器", "price": "99元", "heat": "2387评价", 52 | "reviewDesc": "好使~方便~语音更好!呵呵,支持小米!!!", "reviewAuthor": "静一licf", "reviewStatus": true}, 53 | {"sourceUrl": "//item.mi.com/1153900018.html", "rightimgurl": "//i1.mifile.cn/a1/T1juCgBgxT1RXrhCrK!220x220.jpg", "title": "手机USB Type-C数据线", "price": "39元", "heat": "1.4万评价", 54 | "reviewDesc": "很好用的数据线,充电传输都很好", "reviewAuthor": "103898410", "reviewStatus": true}, 55 | {"sourceUrl": "//item.mi.com/1150500009.html", "rightimgurl": "//i1.mifile.cn/a1/T13y_vBgJT1RXrhCrK!220x220.jpg", "title": "小米千兆网线", "price": "14.9元", "heat": "3万评价", 56 | "reviewDesc": "早点出多好啊!盒子不卡了!电脑下载不卡顿了!神药啊!...", "reviewAuthor": "水云间789", "reviewStatus": true}, 57 | {"sourceUrl": "//item.mi.com/1154100024.html", "rightimgurl": "//i1.mifile.cn/a1/T1Zp__B5Ev1RXrhCrK!220x220.jpg", "title": "ZMI无限拓展数据线", "price": "29元", "heat": "4719评价", 58 | "reviewDesc": "长度够用,牢固,质量不错", "reviewAuthor": "396139651", "reviewStatus": true}, 59 | {"moreUrl": "//list.mi.com/others", "sourceUrl": "//item.mi.com/1154900025.html", "rightimgurl": "//i1.mifile.cn/a1/T1_7KgB4Jv1RXrhCrK!220x220.jpg", "title": "青米USB快速充电数据线", "price": "24.9元" ,"heat": "1.9万评价"} 60 | ] 61 | 62 | 63 | 64 | 65 | 66 | 67 | } 68 | ] 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/HELP-US-OUT.txt: -------------------------------------------------------------------------------- 1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, 2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, 3 | comprehensive icon sets or copy and paste your own. 4 | 5 | Please. Check it out. 6 | 7 | -Dave Gandy 8 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/font-awesome-4.7.0/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/font-awesome-4.7.0/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix} { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .@{fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /static/font-awesome-4.7.0/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /文档/交付文档/YZC999.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/YZC999.pptx -------------------------------------------------------------------------------- /文档/交付文档/代码自测结果表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/代码自测结果表.xlsx -------------------------------------------------------------------------------- /文档/交付文档/周均梅个人文档/个人日报_周均梅.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/周均梅个人文档/个人日报_周均梅.xlsx -------------------------------------------------------------------------------- /文档/交付文档/周均梅个人文档/周均梅-.实训调查报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/周均梅个人文档/周均梅-.实训调查报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/周均梅个人文档/周均梅-个人总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/周均梅个人文档/周均梅-个人总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/周均梅个人文档/周均梅实训总结.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/周均梅个人文档/周均梅实训总结.docx -------------------------------------------------------------------------------- /文档/交付文档/杨晓敏个人文档/个人日报_杨晓敏 .xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/杨晓敏个人文档/个人日报_杨晓敏 .xlsx -------------------------------------------------------------------------------- /文档/交付文档/杨晓敏个人文档/杨晓敏个人总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/杨晓敏个人文档/杨晓敏个人总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/杨晓敏个人文档/杨晓敏学员实训总结.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/杨晓敏个人文档/杨晓敏学员实训总结.docx -------------------------------------------------------------------------------- /文档/交付文档/杨晓敏个人文档/杨晓敏实训调查报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/杨晓敏个人文档/杨晓敏实训调查报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/概要设计说明书.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/概要设计说明书.docx -------------------------------------------------------------------------------- /文档/交付文档/用户手册.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/用户手册.docx -------------------------------------------------------------------------------- /文档/交付文档/详细设计说明书.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/详细设计说明书.docx -------------------------------------------------------------------------------- /文档/交付文档/软件需求规格说明书.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/软件需求规格说明书.docx -------------------------------------------------------------------------------- /文档/交付文档/问题管理表 .xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/问题管理表 .xlsx -------------------------------------------------------------------------------- /文档/交付文档/陈秋宇个人文档/个人报告_陈秋宇.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/陈秋宇个人文档/个人报告_陈秋宇.xlsx -------------------------------------------------------------------------------- /文档/交付文档/陈秋宇个人文档/陈秋宇个人总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/陈秋宇个人文档/陈秋宇个人总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/陈秋宇个人文档/陈秋宇实训总结.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/陈秋宇个人文档/陈秋宇实训总结.docx -------------------------------------------------------------------------------- /文档/交付文档/陈秋宇个人文档/陈秋宇实训调查报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/陈秋宇个人文档/陈秋宇实训调查报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档/项目周报.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/项目周报.xlsx -------------------------------------------------------------------------------- /文档/交付文档/项目总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档/项目总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/01.软件需求规格说明书(模板).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/01.软件需求规格说明书(模板).docx -------------------------------------------------------------------------------- /文档/交付文档模板/03.详细设计说明书.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/03.详细设计说明书.docx -------------------------------------------------------------------------------- /文档/交付文档模板/04.代码自测结果表(模板).xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/04.代码自测结果表(模板).xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/05.用户手册(模板).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/05.用户手册(模板).docx -------------------------------------------------------------------------------- /文档/交付文档模板/06.个人日报 .xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/06.个人日报 .xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/07.项目周报.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/07.项目周报.xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/10.项目总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/10.项目总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/11.个人总结报告.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/11.个人总结报告.xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/12.项目汇报答辩(不限模板与格式).pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/12.项目汇报答辩(不限模板与格式).pptx -------------------------------------------------------------------------------- /文档/交付文档模板/~$.概要设计说明书(模板).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/~$.概要设计说明书(模板).docx -------------------------------------------------------------------------------- /文档/交付文档模板/【样例】04.学员实训总结(模板).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/【样例】04.学员实训总结(模板).docx -------------------------------------------------------------------------------- /文档/交付文档模板/【样例】05.实训调查报告(模板).xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/【样例】05.实训调查报告(模板).xlsx -------------------------------------------------------------------------------- /文档/交付文档模板/概要设计说明书.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/概要设计说明书.docx -------------------------------------------------------------------------------- /文档/交付文档模板/问题管理表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/交付文档模板/问题管理表.xlsx -------------------------------------------------------------------------------- /文档/项目组内文档/~$高仿小米官网的进度.xlsx: -------------------------------------------------------------------------------- 1 | admin admin -------------------------------------------------------------------------------- /文档/项目组内文档/高仿小米官网的进度.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YZC999/mi-vue/92a5a43aad87262dd40daf2ca81f5bbb467f1c40/文档/项目组内文档/高仿小米官网的进度.xlsx --------------------------------------------------------------------------------