├── .babelrc
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── LICENSE
├── 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
├── package.swan.json
├── project.config.json
├── project.swan.json
├── src
├── App.vue
├── app.json
├── components
│ ├── banners.vue
│ ├── card.vue
│ ├── goodsModal.vue
│ ├── groupModal.vue
│ └── secGoodsModal.vue
├── main.js
├── pages
│ ├── addBankCard
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── address
│ │ ├── index.vue
│ │ └── main.js
│ ├── addresslist
│ │ ├── index.vue
│ │ └── main.js
│ ├── areaZone
│ │ ├── index.vue
│ │ └── main.js
│ ├── articleDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── bargain
│ │ ├── index.vue
│ │ └── main.js
│ ├── bargainDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── bargainList
│ │ ├── index.vue
│ │ └── main.js
│ ├── bargainProductDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── bargainProductList
│ │ ├── index.vue
│ │ └── main.js
│ ├── cart
│ │ ├── index.vue
│ │ └── main.js
│ ├── content
│ │ ├── index.vue
│ │ └── main.js
│ ├── counter
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── store.js
│ ├── createOrder
│ │ ├── index.vue
│ │ └── main.js
│ ├── dayGoods
│ │ ├── index.vue
│ │ └── main.js
│ ├── evaluate
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── faddish
│ │ ├── index.vue
│ │ └── main.js
│ ├── footprint
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── forgetPassword
│ │ ├── index.vue
│ │ └── main.js
│ ├── goods
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── goodsDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── goodsList
│ │ ├── index.vue
│ │ └── main.js
│ ├── groupList
│ │ ├── index.vue
│ │ └── main.js
│ ├── groupProductDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── index
│ │ ├── index.vue
│ │ ├── index1.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── introduce
│ │ ├── index.vue
│ │ ├── index1.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── inviteCode
│ │ ├── index.vue
│ │ └── main.js
│ ├── invited
│ │ ├── index.vue
│ │ └── main.js
│ ├── itemList
│ │ ├── index.vue
│ │ └── main.js
│ ├── login
│ │ ├── index.vue
│ │ └── main.js
│ ├── logistic
│ │ ├── index.vue
│ │ └── main.js
│ ├── logs
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── manager
│ │ ├── index.vue
│ │ └── main.js
│ ├── managerWallet
│ │ ├── index.vue
│ │ └── main.js
│ ├── memberCenter
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── myBankCard
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── myCollection
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── myCoupons
│ │ ├── index.vue
│ │ └── main.js
│ ├── myEvaluate
│ │ ├── index.vue
│ │ └── main.js
│ ├── myVouchers
│ │ ├── index.vue
│ │ └── main.js
│ ├── newPeople
│ │ ├── index.vue
│ │ └── main.js
│ ├── orderDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── orderlist
│ │ ├── index.vue
│ │ └── main.js
│ ├── payment
│ │ ├── index.vue
│ │ └── main.js
│ ├── personal
│ │ ├── index.vue
│ │ └── main.js
│ ├── prelogin
│ │ ├── index.vue
│ │ └── main.js
│ ├── regist
│ │ ├── index.vue
│ │ └── main.js
│ ├── seckill
│ │ ├── index.vue
│ │ └── main.js
│ ├── seckillDetail
│ │ ├── index.vue
│ │ └── main.js
│ ├── selectAddress
│ │ ├── index.vue
│ │ └── main.js
│ ├── send
│ │ ├── index.vue
│ │ └── main.js
│ ├── shopInfo
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
│ ├── sourceArea
│ │ ├── index.vue
│ │ └── main.js
│ ├── userLogin
│ │ ├── login.vue
│ │ ├── main.js
│ │ └── uni.scss
│ ├── vouchers
│ │ ├── index.vue
│ │ └── main.js
│ └── walletDetails
│ │ ├── index.vue
│ │ ├── main.js
│ │ └── main.json
├── sdk.js
├── server
│ └── api.js
├── sitemap.json
├── store
│ ├── actions.js
│ ├── getters.js
│ ├── index.js
│ └── mutations.js
├── style
│ └── main.css
└── utils
│ ├── base64src.js
│ ├── index.js
│ └── request.js
└── static
├── .gitkeep
├── colorui
├── animation.wxss
├── components
│ ├── cu-custom.js
│ ├── cu-custom.json
│ ├── cu-custom.wxml
│ └── cu-custom.wxss
├── icon.wxss
└── main.wxss
├── iconfont
├── iconfont.eot
├── iconfont.js
├── iconfont.json
├── iconfont.svg
├── iconfont.ttf
├── iconfont.woff
├── iconfont.woff2
└── iconfont.wxss
├── images
├── activeBtn.png
├── activety.png
├── add.png
├── address-bg.png
├── address.png
├── banner.png
├── cart.png
├── complete.png
├── default.png
├── dianpu.png
├── erweima.png
├── head.png
├── home.png
├── huiyuan.png
├── inviteBtn.png
├── kanIcon.png
├── login.png
├── logo.png
├── manjian.png
├── miaosha.png
├── normalUserBg.png
├── obligation.png
├── off.png
├── on.png
├── order.png
├── pay.png
├── person-bg.png
├── person.png
├── phone.png
├── pintuan.png
├── play.png
├── prefecture.png
├── prefecture1.png
├── saled.png
├── send.png
├── sending.png
├── share.png
├── shareBtn.png
├── sheyuan.png
├── shopInfo.png
├── success.png
├── user.png
├── wallet.png
└── wechat.png
└── tabs
├── cart-active.png
├── cart.png
├── goods-active.png
├── goods.png
├── home-active.png
├── home.png
├── message-active.png
├── message.png
├── personal-active.png
└── personal.png
/.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 | "postcss-mpvue-wxss": {}
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 联系QQ: 1002821824
2 |
3 | # B2C商城小程序端for Mpvue project
4 |
5 | > A Mpvue project
6 |
7 | ## Build Setup
8 |
9 | ``` bash
10 | # 初始化项目
11 | vue init mpvue/mpvue-quickstart myproject
12 | cd myproject
13 |
14 | # 安装依赖
15 | yarn
16 |
17 | # 开发时构建
18 | npm dev
19 |
20 | # 打包构建
21 | npm build
22 |
23 | # 指定平台的开发时构建(微信、百度、头条、支付宝)
24 | npm dev:wx
25 | npm dev:swan
26 | npm dev:tt
27 | npm dev:my
28 |
29 | # 指定平台的打包构建
30 | npm build:wx
31 | npm build:swan
32 | npm build:tt
33 | npm build:my
34 |
35 | # 生成 bundle 分析报告
36 | npm run build --report
37 | ```
38 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | require('./check-versions')()
2 |
3 | process.env.NODE_ENV = 'production'
4 | process.env.PLATFORM = process.argv[process.argv.length - 1] || 'wx'
5 |
6 | var ora = require('ora')
7 | var rm = require('rimraf')
8 | var path = require('path')
9 | var chalk = require('chalk')
10 | var webpack = require('webpack')
11 | var config = require('../config')
12 | var webpackConfig = require('./webpack.prod.conf')
13 | var utils = require('./utils')
14 |
15 | var spinner = ora('building for production...')
16 | spinner.start()
17 |
18 | rm(path.join(config.build.assetsRoot, '*'), err => {
19 | if (err) throw err
20 | webpack(webpackConfig, function (err, stats) {
21 | spinner.stop()
22 | if (err) throw err
23 | if (process.env.PLATFORM === 'swan') {
24 | utils.writeFrameworkinfo()
25 | }
26 | process.stdout.write(stats.toString({
27 | colors: true,
28 | modules: false,
29 | children: false,
30 | chunks: false,
31 | chunkModules: false
32 | }) + '\n\n')
33 |
34 | if (stats.hasErrors()) {
35 | console.log(chalk.red(' Build failed with errors.\n'))
36 | process.exit(1)
37 | }
38 |
39 | console.log(chalk.cyan(' Build complete.\n'))
40 | console.log(chalk.yellow(
41 | ' Tip: built files are meant to be served over an HTTP server.\n' +
42 | ' Opening index.html over file:// won\'t work.\n'
43 | ))
44 | })
45 | })
46 |
--------------------------------------------------------------------------------
/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 | process.env.PLATFORM = process.argv[process.argv.length - 1] || 'wx'
4 | var config = require('../config')
5 | if (!process.env.NODE_ENV) {
6 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
7 | }
8 |
9 | // var opn = require('opn')
10 | var path = require('path')
11 | var express = require('express')
12 | var webpack = require('webpack')
13 | var proxyMiddleware = require('http-proxy-middleware')
14 | var portfinder = require('portfinder')
15 | var webpackConfig = require('./webpack.dev.conf')
16 | var utils = require('./utils')
17 |
18 | // default port where dev server listens for incoming traffic
19 | var port = process.env.PORT || config.dev.port
20 | // automatically open browser, if not set will be false
21 | var autoOpenBrowser = !!config.dev.autoOpenBrowser
22 | // Define HTTP proxies to your custom API backend
23 | // https://github.com/chimurai/http-proxy-middleware
24 | var proxyTable = config.dev.proxyTable
25 |
26 | var app = express()
27 | var compiler = webpack(webpackConfig)
28 | if (process.env.PLATFORM === 'swan') {
29 | utils.writeFrameworkinfo()
30 | }
31 |
32 | // var devMiddleware = require('webpack-dev-middleware')(compiler, {
33 | // publicPath: webpackConfig.output.publicPath,
34 | // quiet: true
35 | // })
36 |
37 | // var hotMiddleware = require('webpack-hot-middleware')(compiler, {
38 | // log: false,
39 | // heartbeat: 2000
40 | // })
41 | // force page reload when html-webpack-plugin template changes
42 | // compiler.plugin('compilation', function (compilation) {
43 | // compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
44 | // hotMiddleware.publish({ action: 'reload' })
45 | // cb()
46 | // })
47 | // })
48 |
49 | // proxy api requests
50 | Object.keys(proxyTable).forEach(function (context) {
51 | var options = proxyTable[context]
52 | if (typeof options === 'string') {
53 | options = { target: options }
54 | }
55 | app.use(proxyMiddleware(options.filter || context, options))
56 | })
57 |
58 | // handle fallback for HTML5 history API
59 | app.use(require('connect-history-api-fallback')())
60 |
61 | // serve webpack bundle output
62 | // app.use(devMiddleware)
63 |
64 | // enable hot-reload and state-preserving
65 | // compilation error display
66 | // app.use(hotMiddleware)
67 |
68 | // serve pure static assets
69 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
70 | app.use(staticPath, express.static('./static'))
71 |
72 | // var uri = 'http://localhost:' + port
73 |
74 | var _resolve
75 | var readyPromise = new Promise(resolve => {
76 | _resolve = resolve
77 | })
78 |
79 | // console.log('> Starting dev server...')
80 | // devMiddleware.waitUntilValid(() => {
81 | // console.log('> Listening at ' + uri + '\n')
82 | // // when env is testing, don't need open it
83 | // if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
84 | // opn(uri)
85 | // }
86 | // _resolve()
87 | // })
88 |
89 | module.exports = new Promise((resolve, reject) => {
90 | portfinder.basePort = port
91 | portfinder.getPortPromise()
92 | .then(newPort => {
93 | if (port !== newPort) {
94 | console.log(`${port}端口被占用,开启新端口${newPort}`)
95 | }
96 | var server = app.listen(newPort, 'localhost')
97 | // for 小程序的文件保存机制
98 | require('webpack-dev-middleware-hard-disk')(compiler, {
99 | publicPath: webpackConfig.output.publicPath,
100 | quiet: true
101 | })
102 | resolve({
103 | ready: readyPromise,
104 | close: () => {
105 | server.close()
106 | }
107 | })
108 | }).catch(error => {
109 | console.log('没有找到空闲端口,请打开任务管理器杀死进程端口再试', error)
110 | })
111 | })
112 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var fs = require('fs')
3 | var config = require('../config')
4 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
5 | var mpvueInfo = require('../node_modules/mpvue/package.json')
6 | var packageInfo = require('../package.json')
7 | var mkdirp = require('mkdirp')
8 |
9 | exports.assetsPath = function (_path) {
10 | var assetsSubDirectory = process.env.NODE_ENV === 'production'
11 | ? config.build.assetsSubDirectory
12 | : config.dev.assetsSubDirectory
13 | return path.posix.join(assetsSubDirectory, _path)
14 | }
15 |
16 | exports.cssLoaders = function (options) {
17 | options = options || {}
18 |
19 | var cssLoader = {
20 | loader: 'css-loader',
21 | options: {
22 | minimize: process.env.NODE_ENV === 'production',
23 | sourceMap: options.sourceMap
24 | }
25 | }
26 |
27 | var postcssLoader = {
28 | loader: 'postcss-loader',
29 | options: {
30 | sourceMap: true
31 | }
32 | }
33 |
34 | var px2rpxLoader = {
35 | loader: 'px2rpx-loader',
36 | options: {
37 | baseDpr: 1,
38 | rpxUnit: 0.5
39 | }
40 | }
41 |
42 | // generate loader string to be used with extract text plugin
43 | function generateLoaders (loader, loaderOptions) {
44 | var loaders = [cssLoader, px2rpxLoader, postcssLoader]
45 | if (loader) {
46 | loaders.push({
47 | loader: loader + '-loader',
48 | options: Object.assign({}, loaderOptions, {
49 | sourceMap: options.sourceMap
50 | })
51 | })
52 | }
53 |
54 | // Extract CSS when that option is specified
55 | // (which is the case during production build)
56 | if (options.extract) {
57 | return ExtractTextPlugin.extract({
58 | use: loaders,
59 | fallback: 'vue-style-loader'
60 | })
61 | } else {
62 | return ['vue-style-loader'].concat(loaders)
63 | }
64 | }
65 |
66 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
67 | return {
68 | css: generateLoaders(),
69 | wxss: generateLoaders(),
70 | postcss: generateLoaders(),
71 | less: generateLoaders('less'),
72 | sass: generateLoaders('sass', { indentedSyntax: true }),
73 | scss: generateLoaders('sass'),
74 | stylus: generateLoaders('stylus'),
75 | styl: generateLoaders('stylus')
76 | }
77 | }
78 |
79 | // Generate loaders for standalone style files (outside of .vue)
80 | exports.styleLoaders = function (options) {
81 | var output = []
82 | var loaders = exports.cssLoaders(options)
83 | for (var extension in loaders) {
84 | var loader = loaders[extension]
85 | output.push({
86 | test: new RegExp('\\.' + extension + '$'),
87 | use: loader
88 | })
89 | }
90 | return output
91 | }
92 |
93 | const writeFile = async (filePath, content) => {
94 | let dir = path.dirname(filePath)
95 | let exist = fs.existsSync(dir)
96 | if (!exist) {
97 | await mkdirp(dir)
98 | }
99 | await fs.writeFileSync(filePath, content, 'utf8')
100 | }
101 |
102 | exports.writeFrameworkinfo = function () {
103 | var buildInfo = {
104 | 'toolName': mpvueInfo.name,
105 | 'toolFrameWorkVersion': mpvueInfo.version,
106 | 'toolCliVersion': packageInfo.mpvueTemplateProjectVersion || '',
107 | 'createTime': Date.now()
108 | }
109 |
110 | var content = JSON.stringify(buildInfo)
111 | var fileName = '.frameworkinfo'
112 | var rootDir = path.resolve(__dirname, `../${fileName}`)
113 | var distDir = path.resolve(config.build.assetsRoot, `./${fileName}`)
114 |
115 | writeFile(rootDir, content)
116 | writeFile(distDir, content)
117 | }
118 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | var utils = require('./utils')
2 | var config = require('../config')
3 | // var isProduction = process.env.NODE_ENV === 'production'
4 | // for mp
5 | var isProduction = true
6 |
7 | module.exports = {
8 | loaders: utils.cssLoaders({
9 | sourceMap: isProduction
10 | ? config.build.productionSourceMap
11 | : config.dev.cssSourceMap,
12 | extract: isProduction
13 | }),
14 | transformToRequire: {
15 | video: 'src',
16 | source: 'src',
17 | img: 'src',
18 | image: 'xlink:href'
19 | },
20 | fileExt: config.build.fileExt
21 | }
22 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var fs = require('fs')
3 | var utils = require('./utils')
4 | var config = require('../config')
5 | var webpack = require('webpack')
6 | var merge = require('webpack-merge')
7 | var vueLoaderConfig = require('./vue-loader.conf')
8 | var MpvuePlugin = require('webpack-mpvue-asset-plugin')
9 | var glob = require('glob')
10 | var CopyWebpackPlugin = require('copy-webpack-plugin')
11 | var relative = require('relative')
12 |
13 | function resolve (dir) {
14 | return path.join(__dirname, '..', dir)
15 | }
16 |
17 | function getEntry (rootSrc) {
18 | var map = {};
19 | glob.sync(rootSrc + '/pages/**/main.js')
20 | .forEach(file => {
21 | var key = relative(rootSrc, file).replace('.js', '');
22 | map[key] = file;
23 | })
24 | return map;
25 | }
26 |
27 | const appEntry = { app: resolve('./src/main.js') }
28 | const pagesEntry = getEntry(resolve('./src'), 'pages/**/main.js')
29 | const entry = Object.assign({}, appEntry, pagesEntry)
30 |
31 | let baseWebpackConfig = {
32 | // 如果要自定义生成的 dist 目录里面的文件路径,
33 | // 可以将 entry 写成 {'toPath': 'fromPath'} 的形式,
34 | // toPath 为相对于 dist 的路径, 例:index/demo,则生成的文件地址为 dist/index/demo.js
35 | entry,
36 | target: require('mpvue-webpack-target'),
37 | output: {
38 | path: config.build.assetsRoot,
39 | jsonpFunction: 'webpackJsonpMpvue',
40 | filename: '[name].js',
41 | publicPath: process.env.NODE_ENV === 'production'
42 | ? config.build.assetsPublicPath
43 | : config.dev.assetsPublicPath
44 | },
45 | resolve: {
46 | extensions: ['.js', '.vue', '.json'],
47 | alias: {
48 | 'vue': 'mpvue',
49 | '@': resolve('src')
50 | },
51 | symlinks: false,
52 | aliasFields: ['mpvue', 'weapp', 'browser'],
53 | mainFields: ['browser', 'module', 'main']
54 | },
55 | module: {
56 | rules: [
57 | {
58 | test: /\.vue$/,
59 | loader: 'mpvue-loader',
60 | options: vueLoaderConfig
61 | },
62 |
63 | {
64 | test: /\.js$/,
65 | include: [resolve('src'), resolve('test')],
66 | use: [
67 | 'babel-loader',
68 | {
69 | loader: 'mpvue-loader',
70 | options: Object.assign({checkMPEntry: true}, vueLoaderConfig)
71 | },
72 | ]
73 | },
74 | {
75 | test: /\.scss$/,
76 | loaders: ['style', 'css', 'sass']
77 | },
78 | {
79 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
80 | loader: 'url-loader',
81 | options: {
82 | limit: 10000,
83 | name: utils.assetsPath('img/[name].[ext]')
84 | }
85 | },
86 | {
87 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
88 | loader: 'url-loader',
89 | options: {
90 | limit: 10000,
91 | name: utils.assetsPath('media/[name].[ext]')
92 | }
93 | },
94 | {
95 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
96 | loader: 'url-loader',
97 | options: {
98 | limit: 10000,
99 | name: utils.assetsPath('fonts/[name].[ext]')
100 | }
101 | }
102 | ]
103 | },
104 | plugins: [
105 | // api 统一桥协议方案
106 | new webpack.DefinePlugin({
107 | 'mpvue': 'global.mpvue',
108 | 'mpvuePlatform': 'global.mpvuePlatform'
109 | }),
110 | new MpvuePlugin(),
111 | new CopyWebpackPlugin([{
112 | from: '**/*.json',
113 | to: ''
114 | }], {
115 | context: 'src/'
116 | }),
117 | new CopyWebpackPlugin([
118 | {
119 | from: path.resolve(__dirname, '../static'),
120 | to: path.resolve(config.build.assetsRoot, './static'),
121 | ignore: ['.*']
122 | }
123 | ])
124 | ]
125 | }
126 |
127 | // 针对百度小程序,由于不支持通过 miniprogramRoot 进行自定义构建完的文件的根路径
128 | // 所以需要将项目根路径下面的 project.swan.json 拷贝到构建目录
129 | // 然后百度开发者工具将 dist/swan 作为项目根目录打
130 | const projectConfigMap = {
131 | tt: '../project.config.json',
132 | swan: '../project.swan.json'
133 | }
134 |
135 | const PLATFORM = process.env.PLATFORM
136 | if (/^(swan)|(tt)$/.test(PLATFORM)) {
137 | baseWebpackConfig = merge(baseWebpackConfig, {
138 | plugins: [
139 | new CopyWebpackPlugin([{
140 | from: path.resolve(__dirname, projectConfigMap[PLATFORM]),
141 | to: path.resolve(config.build.assetsRoot)
142 | }])
143 | ]
144 | })
145 | }
146 |
147 | module.exports = baseWebpackConfig
148 |
--------------------------------------------------------------------------------
/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 | var MpvueVendorPlugin = require('webpack-mpvue-vendor-plugin')
9 |
10 | // copy from ./webpack.prod.conf.js
11 | var path = require('path')
12 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
13 | var CopyWebpackPlugin = require('copy-webpack-plugin')
14 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
15 |
16 | // add hot-reload related code to entry chunks
17 | // Object.keys(baseWebpackConfig.entry).forEach(function (name) {
18 | // baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
19 | // })
20 |
21 | module.exports = merge(baseWebpackConfig, {
22 | module: {
23 | rules: utils.styleLoaders({
24 | sourceMap: config.dev.cssSourceMap,
25 | extract: true
26 | })
27 | },
28 | // cheap-module-eval-source-map is faster for development
29 | // devtool: '#cheap-module-eval-source-map',
30 | // devtool: '#source-map',
31 | output: {
32 | path: config.build.assetsRoot,
33 | // filename: utils.assetsPath('[name].[chunkhash].js'),
34 | // chunkFilename: utils.assetsPath('[id].[chunkhash].js')
35 | filename: utils.assetsPath('[name].js'),
36 | chunkFilename: utils.assetsPath('[id].js')
37 | },
38 | plugins: [
39 | new webpack.DefinePlugin({
40 | 'process.env': config.dev.env
41 | }),
42 |
43 | // copy from ./webpack.prod.conf.js
44 | // extract css into its own file
45 | new ExtractTextPlugin({
46 | // filename: utils.assetsPath('[name].[contenthash].css')
47 | filename: utils.assetsPath(`[name].${config.dev.fileExt.style}`)
48 | }),
49 | // Compress extracted CSS. We are using this plugin so that possible
50 | // duplicated CSS from different components can be deduped.
51 | new OptimizeCSSPlugin({
52 | cssProcessorOptions: {
53 | safe: true
54 | }
55 | }),
56 | new webpack.optimize.CommonsChunkPlugin({
57 | name: 'common/vendor',
58 | minChunks: function (module, count) {
59 | // any required modules inside node_modules are extracted to vendor
60 | return (
61 | module.resource &&
62 | /\.js$/.test(module.resource) &&
63 | module.resource.indexOf('node_modules') >= 0
64 | ) || count > 1
65 | }
66 | }),
67 | new webpack.optimize.CommonsChunkPlugin({
68 | name: 'common/manifest',
69 | chunks: ['common/vendor']
70 | }),
71 | new MpvueVendorPlugin({
72 | platform: process.env.PLATFORM
73 | }),
74 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
75 | // new webpack.HotModuleReplacementPlugin(),
76 | new webpack.NoEmitOnErrorsPlugin(),
77 | // https://github.com/ampedandwired/html-webpack-plugin
78 | // new HtmlWebpackPlugin({
79 | // filename: 'index.html',
80 | // template: 'index.html',
81 | // inject: true
82 | // }),
83 | new FriendlyErrorsPlugin()
84 | ]
85 | })
86 |
--------------------------------------------------------------------------------
/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 UglifyJsPlugin = require('uglifyjs-webpack-plugin')
8 | var CopyWebpackPlugin = require('copy-webpack-plugin')
9 | // var HtmlWebpackPlugin = require('html-webpack-plugin')
10 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
11 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
12 | var MpvueVendorPlugin = require('webpack-mpvue-vendor-plugin')
13 | var env = config.build.env
14 |
15 | var webpackConfig = merge(baseWebpackConfig, {
16 | module: {
17 | rules: utils.styleLoaders({
18 | sourceMap: config.build.productionSourceMap,
19 | extract: true
20 | })
21 | },
22 | devtool: config.build.productionSourceMap ? '#source-map' : false,
23 | output: {
24 | path: config.build.assetsRoot,
25 | // filename: utils.assetsPath('[name].[chunkhash].js'),
26 | // chunkFilename: utils.assetsPath('[id].[chunkhash].js')
27 | filename: utils.assetsPath('[name].js'),
28 | chunkFilename: utils.assetsPath('[id].js')
29 | },
30 | plugins: [
31 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
32 | new webpack.DefinePlugin({
33 | 'process.env': env
34 | }),
35 | // extract css into its own file
36 | new ExtractTextPlugin({
37 | // filename: utils.assetsPath('[name].[contenthash].css')
38 | filename: utils.assetsPath(`[name].${config.build.fileExt.style}`)
39 | }),
40 | // Compress extracted CSS. We are using this plugin so that possible
41 | // duplicated CSS from different components can be deduped.
42 | new OptimizeCSSPlugin({
43 | cssProcessorOptions: {
44 | safe: true
45 | }
46 | }),
47 | // generate dist index.html with correct asset hash for caching.
48 | // you can customize output by editing /index.html
49 | // see https://github.com/ampedandwired/html-webpack-plugin
50 | // new HtmlWebpackPlugin({
51 | // filename: config.build.index,
52 | // template: 'index.html',
53 | // inject: true,
54 | // minify: {
55 | // removeComments: true,
56 | // collapseWhitespace: true,
57 | // removeAttributeQuotes: true
58 | // // more options:
59 | // // https://github.com/kangax/html-minifier#options-quick-reference
60 | // },
61 | // // necessary to consistently work with multiple chunks via CommonsChunkPlugin
62 | // chunksSortMode: 'dependency'
63 | // }),
64 | // keep module.id stable when vender modules does not change
65 | new webpack.HashedModuleIdsPlugin(),
66 | // split vendor js into its own file
67 | new webpack.optimize.CommonsChunkPlugin({
68 | name: 'common/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('node_modules') >= 0
75 | ) || count > 1
76 | }
77 | }),
78 | // extract webpack runtime and module manifest to its own file in order to
79 | // prevent vendor hash from being updated whenever app bundle is updated
80 | new webpack.optimize.CommonsChunkPlugin({
81 | name: 'common/manifest',
82 | chunks: ['common/vendor']
83 | }),
84 | new MpvueVendorPlugin({
85 | platform: process.env.PLATFORM
86 | })
87 | ]
88 | })
89 |
90 | // if (config.build.productionGzip) {
91 | // var CompressionWebpackPlugin = require('compression-webpack-plugin')
92 |
93 | // webpackConfig.plugins.push(
94 | // new CompressionWebpackPlugin({
95 | // asset: '[path].gz[query]',
96 | // algorithm: 'gzip',
97 | // test: new RegExp(
98 | // '\\.(' +
99 | // config.build.productionGzipExtensions.join('|') +
100 | // ')$'
101 | // ),
102 | // threshold: 10240,
103 | // minRatio: 0.8
104 | // })
105 | // )
106 | // }
107 |
108 | if (config.build.bundleAnalyzerReport) {
109 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
110 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
111 | }
112 |
113 | var useUglifyJs = process.env.PLATFORM !== 'swan'
114 | if (useUglifyJs) {
115 | webpackConfig.plugins.push(new UglifyJsPlugin({
116 | sourceMap: true
117 | }))
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 | var fileExtConfig = {
4 | swan: {
5 | template: 'swan',
6 | script: 'js',
7 | style: 'css',
8 | platform: 'swan'
9 | },
10 | tt: {
11 | template: 'ttml',
12 | script: 'js',
13 | style: 'ttss',
14 | platform: 'tt'
15 | },
16 | wx: {
17 | template: 'wxml',
18 | script: 'js',
19 | style: 'wxss',
20 | platform: 'wx'
21 | },
22 | my: {
23 | template: 'axml',
24 | script: 'js',
25 | style: 'acss',
26 | platform: 'my'
27 | }
28 | }
29 | var fileExt = fileExtConfig[process.env.PLATFORM]
30 |
31 | module.exports = {
32 | build: {
33 | env: require('./prod.env'),
34 | index: path.resolve(__dirname, `../dist/${fileExt.platform}/index.html`),
35 | assetsRoot: path.resolve(__dirname, `../dist/${fileExt.platform}`),
36 | assetsSubDirectory: '',
37 | assetsPublicPath: '/',
38 | productionSourceMap: false,
39 | // Gzip off by default as many popular static hosts such as
40 | // Surge or Netlify already gzip all static assets for you.
41 | // Before setting to `true`, make sure to:
42 | // npm install --save-dev compression-webpack-plugin
43 | productionGzip: false,
44 | productionGzipExtensions: ['js', 'css'],
45 | // Run the build command with an extra argument to
46 | // View the bundle analyzer report after build finishes:
47 | // `npm run build --report`
48 | // Set to `true` or `false` to always turn it on or off
49 | bundleAnalyzerReport: process.env.npm_config_report,
50 | fileExt: fileExt
51 | },
52 | dev: {
53 | env: require('./dev.env'),
54 | port: 8000,
55 | // 在小程序开发者工具中不需要自动打开浏览器
56 | autoOpenBrowser: true,
57 | assetsSubDirectory: '',
58 | assetsPublicPath: '/',
59 | proxyTable: {},
60 | // CSS Sourcemaps off by default because relative paths are "buggy"
61 | // with this option, according to the CSS-Loader README
62 | // (https://github.com/webpack/css-loader#sourcemaps)
63 | // In our experience, they generally work as expected,
64 | // just be aware of this issue when enabling this option.
65 | cssSourceMap: false,
66 | fileExt: fileExt
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | shop
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shop",
3 | "version": "1.0.0",
4 | "mpvueTemplateProjectVersion": "0.1.0",
5 | "description": "A Mpvue project",
6 | "author": "sweida ",
7 | "private": true,
8 | "scripts": {
9 | "dev:wx": "node build/dev-server.js wx",
10 | "start:wx": "npm run dev:wx",
11 | "build:wx": "node build/build.js wx",
12 | "dev:swan": "node build/dev-server.js swan",
13 | "start:swan": "npm run dev:swan",
14 | "build:swan": "node build/build.js swan",
15 | "dev:tt": "node build/dev-server.js tt",
16 | "start:tt": "npm run dev:tt",
17 | "build:tt": "node build/build.js tt",
18 | "dev:my": "node build/dev-server.js my",
19 | "start:my": "npm run dev:my",
20 | "build:my": "node build/build.js my",
21 | "dev": "node build/dev-server.js wx",
22 | "start": "npm run dev",
23 | "build": "node build/build.js wx"
24 | },
25 | "dependencies": {
26 | "flyio": "^0.6.14",
27 | "js-file-download": "^0.4.12",
28 | "mpvue": "^2.0.0",
29 | "mpvue-wxparse": "^0.6.5",
30 | "vuex": "^3.0.1",
31 | "vuex-persistedstate": "^2.5.4",
32 | "weixin-js-sdk": "^1.4.0-test"
33 | },
34 | "devDependencies": {
35 | "babel-cli": "^6.26.0",
36 | "babel-core": "^6.22.1",
37 | "babel-loader": "^7.1.1",
38 | "babel-plugin-transform-runtime": "^6.22.0",
39 | "babel-preset-env": "^1.3.2",
40 | "babel-preset-es2015": "^6.24.1",
41 | "babel-preset-stage-2": "^6.22.0",
42 | "babel-register": "^6.22.0",
43 | "chalk": "^2.4.0",
44 | "connect-history-api-fallback": "^1.3.0",
45 | "copy-webpack-plugin": "^4.5.1",
46 | "css-loader": "^0.28.11",
47 | "cssnano": "^3.10.0",
48 | "eventsource-polyfill": "^0.9.6",
49 | "express": "^4.16.3",
50 | "extract-text-webpack-plugin": "^3.0.2",
51 | "file-loader": "^1.1.11",
52 | "friendly-errors-webpack-plugin": "^1.7.0",
53 | "glob": "^7.1.2",
54 | "html-webpack-plugin": "^3.2.0",
55 | "http-proxy-middleware": "^0.18.0",
56 | "mkdirp": "^0.5.1",
57 | "mpvue-loader": "^2.0.0",
58 | "mpvue-template-compiler": "^2.0.0",
59 | "mpvue-webpack-target": "^1.0.3",
60 | "node-sass": "^4.14.1",
61 | "optimize-css-assets-webpack-plugin": "^3.2.0",
62 | "ora": "^2.0.0",
63 | "portfinder": "^1.0.13",
64 | "postcss-loader": "^2.1.4",
65 | "postcss-mpvue-wxss": "^1.0.0",
66 | "prettier": "~1.12.1",
67 | "px2rpx-loader": "^0.1.10",
68 | "relative": "^3.0.2",
69 | "rimraf": "^2.6.0",
70 | "sass-loader": "^7.3.1",
71 | "semver": "^5.3.0",
72 | "shelljs": "^0.8.1",
73 | "uglifyjs-webpack-plugin": "^1.2.5",
74 | "url-loader": "^1.0.1",
75 | "vue-style-loader": "^4.1.0",
76 | "webpack": "^3.11.0",
77 | "webpack-bundle-analyzer": "^2.2.1",
78 | "webpack-dev-middleware-hard-disk": "^1.12.0",
79 | "webpack-merge": "^4.1.0",
80 | "webpack-mpvue-asset-plugin": "^2.0.0",
81 | "webpack-mpvue-vendor-plugin": "^2.0.0"
82 | },
83 | "engines": {
84 | "node": ">= 4.0.0",
85 | "npm": ">= 3.0.0"
86 | },
87 | "browserslist": [
88 | "> 1%",
89 | "last 2 versions",
90 | "not ie <= 8"
91 | ]
92 | }
93 |
--------------------------------------------------------------------------------
/package.swan.json:
--------------------------------------------------------------------------------
1 | {
2 | "appid": "touristappid",
3 | "setting": {
4 | "urlCheck": false
5 | },
6 | "condition": {
7 | "swan": {
8 | "current": -1,
9 | "list": []
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目配置文件。",
3 | "setting": {
4 | "urlCheck": false,
5 | "es6": true,
6 | "enhance": false,
7 | "postcss": true,
8 | "preloadBackgroundData": false,
9 | "minified": true,
10 | "newFeature": true,
11 | "coverView": true,
12 | "nodeModules": false,
13 | "autoAudits": false,
14 | "showShadowRootInWxmlPanel": true,
15 | "scopeDataCheck": false,
16 | "uglifyFileName": false,
17 | "checkInvalidKey": true,
18 | "checkSiteMap": true,
19 | "uploadWithSourceMap": true,
20 | "compileHotReLoad": false,
21 | "useMultiFrameRuntime": true,
22 | "useApiHook": true,
23 | "useApiHostProcess": false,
24 | "babelSetting": {
25 | "ignore": [],
26 | "disablePlugins": [],
27 | "outputPath": ""
28 | },
29 | "enableEngineNative": false,
30 | "bundle": false,
31 | "useIsolateContext": true,
32 | "useCompilerModule": false,
33 | "userConfirmedUseCompilerModuleSwitch": false,
34 | "userConfirmedBundleSwitch": false,
35 | "packNpmManually": false,
36 | "packNpmRelationList": [],
37 | "minifyWXSS": true
38 | },
39 | "miniprogramRoot": "dist/wx/",
40 | "compileType": "miniprogram",
41 | "appid": "wx3fe71aea5a30b03c",
42 | "projectname": "%E6%99%93%E7%99%BE%E5%90%88",
43 | "simulatorType": "wechat",
44 | "simulatorPluginLibVersion": {},
45 | "libVersion": "2.13.1",
46 | "condition": {
47 | "search": {
48 | "list": []
49 | },
50 | "conversation": {
51 | "list": []
52 | },
53 | "plugin": {
54 | "list": []
55 | },
56 | "game": {
57 | "currentL": -1,
58 | "list": []
59 | },
60 | "gamePlugin": {
61 | "list": []
62 | },
63 | "miniprogram": {
64 | "list": [
65 | {
66 | "id": -1,
67 | "name": "pages/goods/main",
68 | "pathName": "pages/goods/main",
69 | "query": "",
70 | "scene": null
71 | },
72 | {
73 | "id": -1,
74 | "name": "pages/cart/main",
75 | "pathName": "pages/cart/main",
76 | "query": "",
77 | "scene": null
78 | },
79 | {
80 | "id": -1,
81 | "name": "pages/goods/main",
82 | "pathName": "pages/orderlist/main",
83 | "query": "",
84 | "scene": null
85 | },
86 | {
87 | "id": -1,
88 | "name": "pages/orderlist/main",
89 | "pathName": "pages/orderDetail/main",
90 | "query": "",
91 | "scene": null
92 | },
93 | {
94 | "id": -1,
95 | "name": "pages/orderDetail/main",
96 | "pathName": "pages/orderlist/main",
97 | "query": "",
98 | "scene": null
99 | },
100 | {
101 | "id": -1,
102 | "name": "pages/index/main",
103 | "pathName": "pages/index/main",
104 | "scene": null
105 | }
106 | ]
107 | }
108 | }
109 | }
--------------------------------------------------------------------------------
/project.swan.json:
--------------------------------------------------------------------------------
1 | {
2 | "appid": "testappid",
3 | "setting": {
4 | "urlCheck": false
5 | },
6 | "condition": {
7 | "swan": {
8 | "current": -1,
9 | "list": []
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
71 |
72 |
92 |
--------------------------------------------------------------------------------
/src/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [
3 | "pages/index/main",
4 | "pages/introduce/main",
5 | "pages/bargainDetail/main",
6 | "pages/bargainList/main",
7 | "pages/goods/main",
8 | "pages/groupList/main",
9 | "pages/payment/main",
10 | "pages/orderlist/main",
11 | "pages/groupProductDetail/main",
12 | "pages/bargainProductList/main",
13 | "pages/bargainProductDetail/main",
14 | "pages/inviteCode/main",
15 | "pages/myVouchers/main",
16 | "pages/prelogin/main",
17 | "pages/bargain/main",
18 | "pages/shopInfo/main",
19 | "pages/seckill/main",
20 | "pages/dayGoods/main",
21 | "pages/areaZone/main",
22 | "pages/faddish/main",
23 | "pages/vouchers/main",
24 | "pages/newPeople/main",
25 | "pages/sourceArea/main",
26 | "pages/walletDetails/main",
27 | "pages/myBankCard/main",
28 | "pages/addBankCard/main",
29 | "pages/manager/main",
30 | "pages/managerWallet/main",
31 | "pages/memberCenter/main",
32 | "pages/personal/main",
33 | "pages/myCoupons/main",
34 | "pages/seckillDetail/main",
35 | "pages/invited/main",
36 | "pages/itemList/main",
37 | "pages/cart/main",
38 | "pages/orderDetail/main",
39 | "pages/selectAddress/main",
40 | "pages/login/main",
41 | "pages/createOrder/main",
42 | "pages/addresslist/main",
43 | "pages/address/main",
44 | "pages/goodsDetail/main",
45 | "pages/articleDetail/main",
46 | "pages/counter/main",
47 | "pages/logs/main",
48 | "pages/goodsList/main",
49 | "pages/content/main",
50 | "pages/userLogin/main",
51 | "pages/send/main",
52 | "pages/regist/main",
53 | "pages/forgetPassword/main",
54 | "pages/logistic/main",
55 | "pages/footprint/main",
56 | "pages/myCollection/main",
57 | "pages/myEvaluate/main",
58 | "pages/evaluate/main"
59 | ],
60 | "window": {
61 | "backgroundTextStyle": "dark",
62 |
63 | "navigationBarBackgroundColor": "#fff",
64 | "navigationBarTitleText": "晓百合智慧商城",
65 | "navigationBarTextStyle": "black",
66 | "enablePullDownRefresh":true,
67 | "onReachBottomDistance":50
68 |
69 | },
70 |
71 | "plugins": {
72 | "live-player-plugin": {
73 | "version": "1.1.1",
74 | "provider": "wx2b03c6e691cd7370"
75 | }
76 | },
77 | "tabBar": {
78 | "color": "#999",
79 | "backgroundColor": "#fff",
80 | "selectedColor": "#333",
81 | "borderStyle": "white",
82 | "list": [{
83 | "text": "首页",
84 | "pagePath": "pages/index/main",
85 | "iconPath": "static/tabs/home.png",
86 | "selectedIconPath": "static/tabs/home-active.png"
87 | }, {
88 | "text": "分类",
89 | "pagePath": "pages/goods/main",
90 | "iconPath": "static/tabs/goods.png",
91 | "selectedIconPath": "static/tabs/goods-active.png"
92 | },{
93 | "text": "直播",
94 | "pagePath": "pages/articleDetail/main",
95 | "iconPath": "static/tabs/message.png",
96 | "selectedIconPath": "static/tabs/message-active.png"
97 | },{
98 | "text": "购物车",
99 | "pagePath": "pages/cart/main",
100 | "iconPath": "static/tabs/cart.png",
101 | "selectedIconPath": "static/tabs/cart-active.png"
102 | }, {
103 | "text": "我的",
104 | "pagePath": "pages/personal/main",
105 | "iconPath": "static/tabs/personal.png",
106 | "selectedIconPath": "static/tabs/personal-active.png"
107 | }
108 | ],
109 | "position": "bottom"
110 | }
111 | }
--------------------------------------------------------------------------------
/src/components/banners.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
147 |
148 |
164 |
--------------------------------------------------------------------------------
/src/components/card.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App'
3 |
4 | import fly from "./utils/request";
5 | import store from "./store"
6 |
7 | import '../static/colorui/animation.wxss'
8 | import '../static/colorui/main.wxss'
9 | import '../static/colorui/icon.wxss'
10 | import '../static/iconfont/iconfont.wxss'
11 | import './style/main.css'
12 | import qs from 'qs';
13 | Vue.prototype.$qs = qs;
14 |
15 | Vue.config.productionTip = false
16 | Vue.prototype.$fly = fly;
17 | Vue.prototype.$store = store
18 | //Vue.prototype.$staticUrl = "http://static.golang365.com/";
19 | App.mpType = 'app'
20 | const app = new Vue(App)
21 | app.$mount()
22 | var backcolor = "#3197ed" //设置初始值
23 | var background
24 | globalData: {
25 | background: backcolor
26 | }
27 |
--------------------------------------------------------------------------------
/src/pages/addBankCard/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 请绑定持卡人本人的银行卡
5 |
6 |
7 | * 银行名称
8 |
9 |
10 |
11 |
12 | {{array[index]}}
13 |
14 |
15 |
16 |
17 |
18 |
19 | * 银行卡
20 |
21 |
22 |
23 |
24 |
25 | * 姓名
26 |
27 |
28 |
29 |
30 |
31 | * 手机号
32 |
33 |
34 |
35 |
36 | 提交
37 |
38 |
39 |
40 |
101 |
102 |
137 |
--------------------------------------------------------------------------------
/src/pages/addBankCard/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/addBankCard/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh": false
3 | }
--------------------------------------------------------------------------------
/src/pages/address/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
133 |
134 |
142 |
--------------------------------------------------------------------------------
/src/pages/address/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/addresslist/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
还没有收货地址
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{item.name}}
13 | {{item.phone}}
14 |
15 |
16 |
17 | {{item.province + " "+item.city + " "+item.area + " " + item.address}}
18 |
19 |
20 |
21 |
22 | 设为默认
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
132 |
133 |
167 |
--------------------------------------------------------------------------------
/src/pages/addresslist/main.js:
--------------------------------------------------------------------------------
1 | import Vue from "vue";
2 | import App from "./index";
3 |
4 | const app = new Vue(App);
5 | app.$mount();
6 |
--------------------------------------------------------------------------------
/src/pages/areaZone/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
15 | {{nameList[index]}}
16 |
17 |
18 | 搜索
19 |
20 |
21 |
22 |
23 |
24 | {{item.name}}
25 |
26 | {{itemList.name}}
27 |
28 |
29 |
30 | {{item.priceStr}}
31 |
32 | 销量:{{item.soldNumber}}
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
155 |
251 |
--------------------------------------------------------------------------------
/src/pages/areaZone/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/articleDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/bargain/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/bargainDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/bargainList/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/bargainProductDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/bargainProductList/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{item.bargainTitle}}
9 |
10 |
11 |
12 |
13 |
14 | 已抢{{item.percent}}%
15 | 剩余{{item.bargainStockNum}}件
16 |
17 |
18 | {{item.priceStr}}
19 | {{item.showPriceStr}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
102 |
103 |
--------------------------------------------------------------------------------
/src/pages/bargainProductList/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/cart/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/content/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
23 |
--------------------------------------------------------------------------------
/src/pages/content/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/counter/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Vuex counter:{{ count }}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
31 |
32 |
45 |
--------------------------------------------------------------------------------
/src/pages/counter/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/counter/store.js:
--------------------------------------------------------------------------------
1 | // https://vuex.vuejs.org/zh-cn/intro.html
2 | // make sure to call Vue.use(Vuex) if using a module system
3 | import Vue from 'vue'
4 | import Vuex from 'vuex'
5 |
6 | Vue.use(Vuex)
7 |
8 | const store = new Vuex.Store({
9 | state: {
10 | count: 0
11 | },
12 | mutations: {
13 | increment: (state) => {
14 | const obj = state
15 | obj.count += 1
16 | },
17 | decrement: (state) => {
18 | const obj = state
19 | obj.count -= 1
20 | }
21 | }
22 | })
23 |
24 | export default store
25 |
--------------------------------------------------------------------------------
/src/pages/createOrder/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/dayGoods/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/evaluate/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 |
5 | const app = new Vue(App)
6 | app.$mount()
7 |
--------------------------------------------------------------------------------
/src/pages/evaluate/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false
3 | }
--------------------------------------------------------------------------------
/src/pages/faddish/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{item.name}}
8 |
9 | {{itemList.name}}
10 |
11 |
12 |
13 | {{item.priceStr}}
14 | {{item.showPriceStr}}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
93 |
149 |
--------------------------------------------------------------------------------
/src/pages/faddish/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/footprint/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
暂无收藏~
6 |
7 |
24 |
25 |
26 |
27 |
165 |
166 |
206 |
--------------------------------------------------------------------------------
/src/pages/footprint/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/footprint/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false,
3 | "navigationBarTitleText": "我的足迹"
4 | }
--------------------------------------------------------------------------------
/src/pages/forgetPassword/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 找回密码
5 |
6 |
7 |
8 | 手机号
9 |
10 |
11 |
12 |
13 |
14 | 短信验证码
15 |
16 |
17 |
18 | {{daojishi}}
19 |
20 |
21 |
22 |
23 | 设置新密码
24 |
25 |
26 |
27 |
28 |
29 | 确认新密码
30 |
31 |
32 |
33 |
36 |
37 |
38 |
39 |
155 |
156 |
219 |
--------------------------------------------------------------------------------
/src/pages/forgetPassword/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/goods/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/goods/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":true
3 | }
--------------------------------------------------------------------------------
/src/pages/goodsDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/goodsList/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | {{item.name}}
20 | {{item.brandName}}
21 |
22 | {{itemList.name}}
23 |
24 |
25 |
26 | {{item.priceStr}}
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
151 |
188 |
--------------------------------------------------------------------------------
/src/pages/goodsList/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/groupList/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/groupProductDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/index/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | // add this to handle exception
5 | Vue.config.errorHandler = function (err) {
6 | if (console && console.error) {
7 | console.error(err)
8 | }
9 | }
10 |
11 | const app = new Vue(App)
12 | app.$mount()
13 |
--------------------------------------------------------------------------------
/src/pages/index/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationStyle":"custom"
3 | }
--------------------------------------------------------------------------------
/src/pages/introduce/index1.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 了解社员
7 | 了解店长
8 | 了解店长
9 |
10 |
11 |
12 |
13 | 成为社员
14 |
15 |
16 |
17 |
18 | 注册店长
19 |
20 |
21 |
22 |
23 |
32 |
33 |
34 | 我邀请的人
35 | 我邀请的人222
36 |
37 |
38 |
39 |
40 |
130 |
131 |
253 |
--------------------------------------------------------------------------------
/src/pages/introduce/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/introduce/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false
3 | }
--------------------------------------------------------------------------------
/src/pages/inviteCode/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/invited/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
![]()
6 |
7 |
8 |
{{userlist.nickname}}
9 |
10 | 邀请人数:{{userlist.totalInviteNumber}}人
11 | 我的积分:{{userlist.points}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
![]()
21 |
22 |
23 |
{{item.nickname}}
24 |
25 | {{item.phone}} ({{item.createAt}})
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
96 |
97 |
163 |
--------------------------------------------------------------------------------
/src/pages/invited/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/itemList/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{item.name}}
10 | {{item.brandName}}
11 |
12 | {{itemList.name}}
13 |
14 |
15 |
16 | {{item.priceStr}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
119 |
156 |
--------------------------------------------------------------------------------
/src/pages/itemList/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/login/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 | 我们的小程序将获取您的以下权限:
10 | 获取您的公开信息(昵称、头像、地区及性别)
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
124 |
125 |
135 |
--------------------------------------------------------------------------------
/src/pages/login/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/logistic/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | >
23 |
24 |
25 |
26 |
27 |
28 | {{item.acceptStation}}
29 | {{item.acceptTime}}
30 |
31 |
32 |
33 |
34 | 暂时没有物流信息,请稍后再来~
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
113 |
114 |
281 |
--------------------------------------------------------------------------------
/src/pages/logistic/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/logs/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
50 |
51 |
62 |
--------------------------------------------------------------------------------
/src/pages/logs/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/logs/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "查看启动日志"
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/manager/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
72 |
73 |
78 |
--------------------------------------------------------------------------------
/src/pages/manager/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/managerWallet/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/memberCenter/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/memberCenter/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false,
3 | "navigationStyle":"custom"
4 | }
--------------------------------------------------------------------------------
/src/pages/myBankCard/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1
5 | 1
6 |
7 | 添加银行卡
8 |
9 |
10 |
11 |
56 |
57 |
96 |
--------------------------------------------------------------------------------
/src/pages/myBankCard/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/myBankCard/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh": false
3 | }
--------------------------------------------------------------------------------
/src/pages/myCollection/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
暂无收藏~
6 |
7 |
23 |
24 |
25 |
26 |
146 |
147 |
187 |
--------------------------------------------------------------------------------
/src/pages/myCollection/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/myCollection/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false,
3 | "navigationBarTitleText": "我的收藏"
4 | }
--------------------------------------------------------------------------------
/src/pages/myCoupons/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/myEvaluate/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/myVouchers/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/newPeople/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 | 便携式小风扇便携式小风扇便携式小风扇便携式小风扇便携式小风扇
12 |
13 | 1 9.9
14 |
15 | 立即抢购
16 |
17 |
18 | 猜你喜欢
19 |
20 |
21 |
22 | 便携式小风扇便携式小风扇便携式小风扇便携式小风扇便携式小风扇
23 |
24 | 1 9.9
25 |
26 | 立即抢购
27 |
28 |
29 |
30 |
31 |
32 |
75 |
192 |
--------------------------------------------------------------------------------
/src/pages/newPeople/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/orderDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/orderlist/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/payment/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/personal/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/prelogin/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/regist/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 |
5 | const app = new Vue(App)
6 | app.$mount()
7 |
--------------------------------------------------------------------------------
/src/pages/seckill/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/seckillDetail/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/selectAddress/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |

5 |
还没有收货地址
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {{item.name}}
17 | {{item.phone}}
18 |
19 |
20 |
21 | {{item.newCity + ' ' + item.address}}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
95 |
96 |
133 |
--------------------------------------------------------------------------------
/src/pages/selectAddress/main.js:
--------------------------------------------------------------------------------
1 | import Vue from "vue";
2 | import App from "./index";
3 |
4 | const app = new Vue(App);
5 | app.$mount();
6 |
--------------------------------------------------------------------------------
/src/pages/send/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/shopInfo/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/shopInfo/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh": false
3 | }
--------------------------------------------------------------------------------
/src/pages/sourceArea/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/userLogin/login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 欢迎回来
5 |
6 |
7 |
8 | 手机号
9 |
10 |
11 |
12 |
13 |
14 | 密码
15 |
16 |
17 |
18 |
21 | 忘记密码?
22 |
23 | 还没有账号?
24 | 去注册
25 |
26 |
27 |
28 |
29 |
112 |
113 |
162 |
--------------------------------------------------------------------------------
/src/pages/userLogin/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './login'
3 |
4 |
5 | const app = new Vue(App)
6 | app.$mount()
7 |
--------------------------------------------------------------------------------
/src/pages/userLogin/uni.scss:
--------------------------------------------------------------------------------
1 |
2 | /* 页面左右间距 */
3 | $page-row-spacing: 30upx;
4 | $page-color-base: #f8f8f8;
5 | $page-color-light: #f8f6fc;
6 | $base-color: #fa436a;
7 |
8 | /* 文字尺寸 */
9 | $font-sm: 24upx;
10 | $font-base: 28upx;
11 | $font-lg: 32upx;
12 | /*文字颜色*/
13 | $font-color-dark: #303133;
14 | $font-color-base: #606266;
15 | $font-color-light: #909399;
16 | $font-color-disabled: #C0C4CC;
17 | $font-color-spec: #4399fc;
18 | /* 边框颜色 */
19 | $border-color-dark: #DCDFE6;
20 | $border-color-base: #E4E7ED;
21 | $border-color-light: #EBEEF5;
22 | /* 图片加载中颜色 */
23 | $image-bg-color: #eee;
24 | /* 行为相关颜色 */
25 | $uni-color-primary:#fa436a;
26 | $uni-color-success: #4cd964;
27 | $uni-color-warning: #f0ad4e;
28 | $uni-color-error: #dd524d;
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/pages/vouchers/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | {{item.name}}
8 |
9 |
10 |
11 |
12 |
13 |
14 | {{desc}}
15 |
16 |
17 |
18 |
19 |
20 | {{item.name}}
21 |
22 | {{item.reduceMoney}}
23 |
24 |
25 |
26 | 满{{item.fullMoney}}使用
27 | {{item.effectiveStartTime}}-{{item.effectiveEndTime}}
28 | {{item.merchantName}}
29 |
30 |
31 |
32 | 立即使用
33 | 立即领取
34 |
35 |
36 |
37 |
38 |
39 |
140 |
141 |
235 |
--------------------------------------------------------------------------------
/src/pages/vouchers/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/walletDetails/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 | {{item.name}}
8 |
9 |
10 |
11 |
12 |
13 |
14 | {{item.des[0]}}
15 | {{item.changeMoney>0?'+':''}} {{item.changeMoney}}
16 |
17 |
18 | {{item.des[1]}}
19 | {{item.createAt}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
92 |
93 |
106 |
--------------------------------------------------------------------------------
/src/pages/walletDetails/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/walletDetails/main.json:
--------------------------------------------------------------------------------
1 | {
2 | "enablePullDownRefresh":false
3 | }
--------------------------------------------------------------------------------
/src/sdk.js:
--------------------------------------------------------------------------------
1 | import wx from 'weixin-js-sdk' //微信sdk依赖
2 | import axios from 'axios'; // 引用全局
3 | const jsApiList = ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ','onMenuShareWeibo']
4 | //要用到微信API
5 | function getJSSDK(url,dataForWeixin) {
6 | // 调用后台接口换取参数
7 | axios.get(process.env.BASE_API + 'xxxxxxxx', {
8 | params: {
9 | url: url
10 | },
11 | }).then(res => {
12 | //console.log(res.data.data);
13 | wx.config({
14 | debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
15 | appId: res.data.data.appId, // 必填,公众号的唯一标识
16 | timestamp: res.data.data.timestamp, // 必填,生成签名的时间戳
17 | nonceStr: res.data.data.nonceStr, // 必填,生成签名的随机串
18 | signature: res.data.data.signature, // 必填,签名
19 | jsApiList: jsApiList // 必填,需要使用的JS接口列表
20 | })
21 | wx.ready(function () {
22 | wx.onMenuShareAppMessage({
23 | title: dataForWeixin.title,
24 | desc: dataForWeixin.desc,
25 | link: dataForWeixin.linkurl,
26 | imgUrl: dataForWeixin.img,
27 | trigger: function trigger(res) { },
28 | success: function success(res) {
29 | //console.log('已分享');
30 | },
31 | cancel: function cancel(res) {
32 | //console.log('已取消');
33 | },
34 | fail: function fail(res) {
35 | alert(JSON.stringify(res));
36 | }
37 | });
38 | // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
39 | wx.onMenuShareTimeline({
40 | title: dataForWeixin.title,
41 | link: dataForWeixin.linkurl,
42 | imgUrl: dataForWeixin.img,
43 | trigger: function trigger(res) {
44 | // alert('用户点击分享到朋友圈');
45 | },
46 | success: function success(res) {
47 | //alert('已分享');
48 | },
49 | cancel: function cancel(res) {
50 | //alert('已取消');
51 | },
52 | fail: function fail(res) {
53 | alert(JSON.stringify(res));
54 | }
55 | });
56 | // 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
57 | wx.onMenuShareQQ({
58 | title: dataForWeixin.title,
59 | desc: dataForWeixin.desc,
60 | link: dataForWeixin.linkurl,
61 | imgUrl: dataForWeixin.img,
62 | trigger: function trigger(res) {
63 | //alert('用户点击分享到QQ');
64 | },
65 | complete: function complete(res) {
66 | alert(JSON.stringify(res));
67 | },
68 | success: function success(res) {
69 | //alert('已分享');
70 | },
71 | cancel: function cancel(res) {
72 | //alert('已取消');
73 | },
74 | fail: function fail(res) {
75 | //alert(JSON.stringify(res));
76 | }
77 | });
78 | // 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
79 | wx.onMenuShareWeibo({
80 | title: dataForWeixin.title,
81 | desc: dataForWeixin.desc,
82 | link: dataForWeixin.linkurl,
83 | imgUrl: dataForWeixin.img,
84 | trigger: function trigger(res) {
85 | //alert('用户点击分享到微博');
86 | },
87 | complete: function complete(res) {
88 | // alert(JSON.stringify(res));
89 | },
90 | success: function success(res) {
91 | //alert('已分享');
92 | },
93 | cancel: function cancel(res) {
94 | // alert('已取消');
95 | },
96 | fail: function fail(res) {
97 | // alert(JSON.stringify(res));
98 | //console.log(JSON.stringify(res));
99 | }
100 | });
101 | })
102 | wx.error(function (res) {
103 | //console.log(JSON.stringify(res)+"微信验证失败");
104 | // alert(JSON.stringify(res)+"微信验证失败");
105 | });
106 | })
107 | }
108 | export default {
109 | // 获取JSSDK
110 | getJSSDK: getJSSDK
111 | }
--------------------------------------------------------------------------------
/src/server/api.js:
--------------------------------------------------------------------------------
1 | import fly from "../utils/request";
2 |
3 | export const addAddress = data => {
4 | return fly.post("/address/add", data).then();
5 | };
6 |
7 | export const getAddressList = data => {
8 | return fly.post("/address/list", data).then();
9 | };
10 |
--------------------------------------------------------------------------------
/src/sitemap.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules":[{
3 | "action": "allow",
4 | "page": "*"
5 | }]
6 | }
--------------------------------------------------------------------------------
/src/store/actions.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/src/store/actions.js
--------------------------------------------------------------------------------
/src/store/getters.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/src/store/getters.js
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | import createPersistedState from "vuex-persistedstate";
5 |
6 | import actions from "./actions.js";
7 | import getters from "./getters.js";
8 | // import mutations from './mutations.js'
9 |
10 | Vue.use(Vuex)
11 |
12 | const state = {
13 | isLogin: false,
14 | userInfo: {
15 | nickName: "",
16 | avatarUrl: ""
17 | },
18 | loginData: {},
19 | cart: 0,
20 | cartList: [],
21 | orderGoods: [],
22 | cartPrice: 0,
23 | cartCount: () => {
24 | let sum = 0
25 | // state.cartList.forEach(item => {
26 | // sum += item.count;
27 | // });
28 | return sum
29 | }
30 | };
31 |
32 | export default new Vuex.Store({
33 | state,
34 | getters,
35 | actions,
36 | mutations: {
37 | update(state, config) {
38 | Object.keys(config).map((item, key) => {
39 | state[item] = config[item]
40 | })
41 | }
42 | },
43 | plugins: [
44 | createPersistedState({
45 | storage: {
46 | getItem: key => wx.getStorageSync(key),
47 | setItem: (key, value) => wx.setStorageSync(key, value),
48 | removeItem: key => wx.removeStorageSync(key)
49 | }
50 | })
51 | ]
52 | });
--------------------------------------------------------------------------------
/src/store/mutations.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/src/store/mutations.js
--------------------------------------------------------------------------------
/src/style/main.css:
--------------------------------------------------------------------------------
1 | .bg-no{
2 | background-color: transparent !important;
3 | color: #fff;
4 | }
5 | .descp{
6 | display: -webkit-box;
7 | overflow: hidden;
8 | text-overflow: ellipsis;
9 | word-wrap: break-word;
10 | white-space: normal !important;
11 | -webkit-line-clamp: 2;
12 | -webkit-box-orient: vertical;
13 | }
14 | .position {
15 | position: relative;
16 | }
17 | page {
18 | background-color: #f8f8f8;
19 | }
--------------------------------------------------------------------------------
/src/utils/base64src.js:
--------------------------------------------------------------------------------
1 | const fsm = wx.getFileSystemManager();
2 | const FILE_BASE_NAME = 'tmp_base64src'; //自定义文件名
3 |
4 | function base64src(base64data, cb) {
5 | const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
6 | if (!format) {
7 | return (new Error('ERROR_BASE64SRC_PARSE'));
8 | }
9 | const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
10 | const buffer = wx.base64ToArrayBuffer(bodyData);
11 | fsm.writeFile({
12 | filePath,
13 | data: buffer,
14 | encoding: 'base64',
15 | success() {
16 | cb(filePath);
17 | },
18 | fail() {
19 | return (new Error('ERROR_BASE64SRC_WRITE'));
20 | },
21 | });
22 | };
23 |
24 | export { base64src };
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | function formatNumber (n) {
2 | const str = n.toString()
3 | return str[1] ? str : `0${str}`
4 | }
5 |
6 | export function formatTime (date) {
7 | const year = date.getFullYear()
8 | const month = date.getMonth() + 1
9 | const day = date.getDate()
10 |
11 | const hour = date.getHours()
12 | const minute = date.getMinutes()
13 | const second = date.getSeconds()
14 |
15 | const t1 = [year, month, day].map(formatNumber).join('/')
16 | const t2 = [hour, minute, second].map(formatNumber).join(':')
17 |
18 | return `${t1} ${t2}`
19 | }
20 |
21 |
22 | export function moneyFormat(value) {
23 | let v = Number(value / 100);
24 | return v.toFixed(2);
25 | }
26 |
27 |
28 | export default {
29 | formatNumber,
30 | formatTime,
31 | moneyFormat
32 | };
33 |
--------------------------------------------------------------------------------
/src/utils/request.js:
--------------------------------------------------------------------------------
1 | const Fly = require("flyio/dist/npm/wx");
2 | const fly = new Fly();
3 | const host = "https://api.zcbaihe.com/capp/v1";
4 | // const host = "http://192.168.5.250:9000/capp/v1";
5 |
6 | // 添加请求拦截器
7 | fly.interceptors.request.use(request => {
8 | wx.showLoading({
9 | title: '加载中',
10 | })
11 |
12 | setTimeout(function () {
13 | wx.hideLoading()
14 | }, 500)
15 | //console.log("request",request)
16 | return request;
17 | });
18 |
19 | // 添加响应拦截器
20 | fly.interceptors.response.use(
21 | response => {
22 | //console.log("response", response.data)
23 | if (response.data.success||response.data.openid) {
24 | return response; // 请求成功之后将返回值返回
25 | } else {
26 | if(response.data.errmsg){
27 | return response;
28 | }else{
29 | wx.showToast({
30 | title: response.data.message,
31 | icon: "none",
32 | duration: 2000
33 | });
34 | }
35 | }
36 | },
37 | err => {
38 | // 请求出错,根据返回状态码判断出错原因
39 | if (err.status == 401) {
40 | wx.showToast({
41 | title: '登录失效,请重新登录。',
42 | icon: 'none',
43 | duration: 1500,
44 | success:function(){
45 | setTimeout(function () {
46 | wx.navigateTo({
47 | url: "/pages/prelogin/main"
48 | })
49 | }, 1500)
50 | }
51 | })
52 |
53 | }
54 | }
55 | );
56 | fly.config.baseURL = host;
57 | export default fly;
58 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/.gitkeep
--------------------------------------------------------------------------------
/static/colorui/animation.wxss:
--------------------------------------------------------------------------------
1 | /*
2 | Animation 微动画
3 | 基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28
4 | */
5 |
6 | /* css 滤镜 控制黑白底色gif的 */
7 | .gif-black{
8 | mix-blend-mode: screen;
9 | }
10 | .gif-white{
11 | mix-blend-mode: multiply;
12 | }
13 |
14 |
15 | /* Animation css */
16 | [class*=animation-] {
17 | animation-duration: .5s;
18 | animation-timing-function: ease-out;
19 | animation-fill-mode: both
20 | }
21 |
22 | .animation-fade {
23 | animation-name: fade;
24 | animation-duration: .8s;
25 | animation-timing-function: linear
26 | }
27 |
28 | .animation-scale-up {
29 | animation-name: scale-up
30 | }
31 |
32 | .animation-scale-down {
33 | animation-name: scale-down
34 | }
35 |
36 | .animation-slide-top {
37 | animation-name: slide-top
38 | }
39 |
40 | .animation-slide-bottom {
41 | animation-name: slide-bottom
42 | }
43 |
44 | .animation-slide-left {
45 | animation-name: slide-left
46 | }
47 |
48 | .animation-slide-right {
49 | animation-name: slide-right
50 | }
51 |
52 | .animation-shake {
53 | animation-name: shake
54 | }
55 |
56 | .animation-reverse {
57 | animation-direction: reverse
58 | }
59 |
60 | @keyframes fade {
61 | 0% {
62 | opacity: 0
63 | }
64 |
65 | 100% {
66 | opacity: 1
67 | }
68 | }
69 |
70 | @keyframes scale-up {
71 | 0% {
72 | opacity: 0;
73 | transform: scale(.2)
74 | }
75 |
76 | 100% {
77 | opacity: 1;
78 | transform: scale(1)
79 | }
80 | }
81 |
82 | @keyframes scale-down {
83 | 0% {
84 | opacity: 0;
85 | transform: scale(1.8)
86 | }
87 |
88 | 100% {
89 | opacity: 1;
90 | transform: scale(1)
91 | }
92 | }
93 |
94 | @keyframes slide-top {
95 | 0% {
96 | opacity: 0;
97 | transform: translateY(-100%)
98 | }
99 |
100 | 100% {
101 | opacity: 1;
102 | transform: translateY(0)
103 | }
104 | }
105 |
106 | @keyframes slide-bottom {
107 | 0% {
108 | opacity: 0;
109 | transform: translateY(100%)
110 | }
111 |
112 | 100% {
113 | opacity: 1;
114 | transform: translateY(0)
115 | }
116 | }
117 |
118 | @keyframes shake {
119 |
120 | 0%,
121 | 100% {
122 | transform: translateX(0)
123 | }
124 |
125 | 10% {
126 | transform: translateX(-9px)
127 | }
128 |
129 | 20% {
130 | transform: translateX(8px)
131 | }
132 |
133 | 30% {
134 | transform: translateX(-7px)
135 | }
136 |
137 | 40% {
138 | transform: translateX(6px)
139 | }
140 |
141 | 50% {
142 | transform: translateX(-5px)
143 | }
144 |
145 | 60% {
146 | transform: translateX(4px)
147 | }
148 |
149 | 70% {
150 | transform: translateX(-3px)
151 | }
152 |
153 | 80% {
154 | transform: translateX(2px)
155 | }
156 |
157 | 90% {
158 | transform: translateX(-1px)
159 | }
160 | }
161 |
162 | @keyframes slide-left {
163 | 0% {
164 | opacity: 0;
165 | transform: translateX(-100%)
166 | }
167 |
168 | 100% {
169 | opacity: 1;
170 | transform: translateX(0)
171 | }
172 | }
173 |
174 | @keyframes slide-right {
175 | 0% {
176 | opacity: 0;
177 | transform: translateX(100%)
178 | }
179 |
180 | 100% {
181 | opacity: 1;
182 | transform: translateX(0)
183 | }
184 | }
--------------------------------------------------------------------------------
/static/colorui/components/cu-custom.js:
--------------------------------------------------------------------------------
1 | const app = getApp();
2 | Component({
3 | /**
4 | * 组件的一些选项
5 | */
6 | options: {
7 | addGlobalClass: true,
8 | multipleSlots: true
9 | },
10 | /**
11 | * 组件的对外属性
12 | */
13 | properties: {
14 | bgColor: {
15 | type: String,
16 | default: ''
17 | },
18 | isCustom: {
19 | type: [Boolean, String],
20 | default: false
21 | },
22 | isBack: {
23 | type: [Boolean, String],
24 | default: false
25 | },
26 | bgImage: {
27 | type: String,
28 | default: ''
29 | },
30 | },
31 | /**
32 | * 组件的初始数据
33 | */
34 | data: {
35 | StatusBar: app.globalData.StatusBar,
36 | CustomBar: app.globalData.CustomBar,
37 | Custom: app.globalData.Custom
38 | },
39 | /**
40 | * 组件的方法列表
41 | */
42 | methods: {
43 | BackPage() {
44 | wx.navigateBack({
45 | delta: 1
46 | });
47 | },
48 | toHome(){
49 | wx.reLaunch({
50 | url: '/pages/index/index',
51 | })
52 | }
53 | }
54 | })
--------------------------------------------------------------------------------
/static/colorui/components/cu-custom.json:
--------------------------------------------------------------------------------
1 | {
2 | "component": true,
3 | "usingComponents": {}
4 | }
--------------------------------------------------------------------------------
/static/colorui/components/cu-custom.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/static/colorui/components/cu-custom.wxss:
--------------------------------------------------------------------------------
1 | /* colorui/components/cu-custom.wxss */
--------------------------------------------------------------------------------
/static/iconfont/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/iconfont/iconfont.eot
--------------------------------------------------------------------------------
/static/iconfont/iconfont.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "656294",
3 | "name": "晓百合小程序",
4 | "font_family": "iconfont",
5 | "css_prefix_text": "icon-",
6 | "description": "",
7 | "glyphs": [
8 | {
9 | "icon_id": "6237075",
10 | "name": "下",
11 | "font_class": "tubiaozhizuo-",
12 | "unicode": "e607",
13 | "unicode_decimal": 58887
14 | },
15 | {
16 | "icon_id": "4465210",
17 | "name": "菱形",
18 | "font_class": "icon",
19 | "unicode": "e601",
20 | "unicode_decimal": 58881
21 | },
22 | {
23 | "icon_id": "577388",
24 | "name": "足迹",
25 | "font_class": "zuji",
26 | "unicode": "e767",
27 | "unicode_decimal": 59239
28 | },
29 | {
30 | "icon_id": "798129",
31 | "name": "我的收藏",
32 | "font_class": "wodeshoucang",
33 | "unicode": "e649",
34 | "unicode_decimal": 58953
35 | },
36 | {
37 | "icon_id": "1068814",
38 | "name": "收货地址",
39 | "font_class": "weibiaoti2fuzhi08",
40 | "unicode": "e625",
41 | "unicode_decimal": 58917
42 | },
43 | {
44 | "icon_id": "1301389",
45 | "name": "邀请",
46 | "font_class": "yaoqing",
47 | "unicode": "e666",
48 | "unicode_decimal": 58982
49 | },
50 | {
51 | "icon_id": "4251740",
52 | "name": "客服",
53 | "font_class": "kefu",
54 | "unicode": "e646",
55 | "unicode_decimal": 58950
56 | },
57 | {
58 | "icon_id": "5192955",
59 | "name": "优惠券",
60 | "font_class": "youhuiquan",
61 | "unicode": "e65f",
62 | "unicode_decimal": 58975
63 | },
64 | {
65 | "icon_id": "11372737",
66 | "name": "优惠券",
67 | "font_class": "youhuiquan1",
68 | "unicode": "e8c0",
69 | "unicode_decimal": 59584
70 | },
71 | {
72 | "icon_id": "15494877",
73 | "name": "评价 Leo",
74 | "font_class": "pingjia-01",
75 | "unicode": "e610",
76 | "unicode_decimal": 58896
77 | },
78 | {
79 | "icon_id": "351742",
80 | "name": "待发货",
81 | "font_class": "daifahuo",
82 | "unicode": "e602",
83 | "unicode_decimal": 58882
84 | },
85 | {
86 | "icon_id": "1066766",
87 | "name": "评价",
88 | "font_class": "evaluate",
89 | "unicode": "e61d",
90 | "unicode_decimal": 58909
91 | },
92 | {
93 | "icon_id": "12025983",
94 | "name": "退货退款",
95 | "font_class": "tuihuotuikuan",
96 | "unicode": "e7af",
97 | "unicode_decimal": 59311
98 | },
99 | {
100 | "icon_id": "632980",
101 | "name": "待收货",
102 | "font_class": "daishouhuo",
103 | "unicode": "e60c",
104 | "unicode_decimal": 58892
105 | },
106 | {
107 | "icon_id": "14112849",
108 | "name": "待付款",
109 | "font_class": "daifukuan",
110 | "unicode": "e63d",
111 | "unicode_decimal": 58941
112 | }
113 | ]
114 | }
115 |
--------------------------------------------------------------------------------
/static/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/iconfont/iconfont.ttf
--------------------------------------------------------------------------------
/static/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/iconfont/iconfont.woff
--------------------------------------------------------------------------------
/static/iconfont/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/iconfont/iconfont.woff2
--------------------------------------------------------------------------------
/static/iconfont/iconfont.wxss:
--------------------------------------------------------------------------------
1 | @font-face {font-family: "iconfont";
2 | src: url('iconfont.eot?t=1596595959724'); /* IE9 */
3 | src: url('iconfont.eot?t=1596595959724#iefix') format('embedded-opentype'), /* IE6-IE8 */
4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAyEAAsAAAAAFYQAAAw0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCFHAqaYJU2ATYCJANACyIABCAFhG0HgWAb8BFFBDYOABLxUWT/1wmmyDCNH9TdQEHHvmN3OiiM12n0NxLvVGK5Q59C+4cd+8DKUR+VEAkMKffWLzRCg2PsQFNP64A2d5/w8MA/NfUXjGXBIlnHD21YG7myamVlMRWzEhBxM9m6c0EohJcQ1W6vb2IKOKEmMA4oSYdnCSSeACfhtl0L/G0OeI5+Uvev0oNFehAwBAC2XKYskyFAMOX8B/my2QnL1iMyB+FBimy467B1bvfeT/eK81sfFqZu0anvr7Vdd0IOOCIX5L7lAMHD/02d7ZQs4To2OLy5a9PxLxfIhZmGtbZCIyQPhVBNGHOogMLycGAkGqMVBqOrpk6otdtzePB8gABEPr6QmZJVBEKBEwQ9dvdKMwhzOaIlDdGzas2+nUGmAKG3FnQAYHL488iH4AgBVCngF8qrSC4Dw3PkVixbdMZGwkh5MgCsDgIwgC8AHMitVS4DFoNvyM+6/rgfAEcM+wvchxKgMRy4iZEiXTcVq9zmW202eI60TZWvDPHRiH/hAaAWXdNWPJrQVdkxgAwATzPr0SYZniOuG1A8zwBiPBcQAKXBQArKgIEI1AEEQN3AgACNQUg2TQEBWTQdDHDQbmAgBK1ABiDxopIBFtLNyAASvLTGgcJ5xt9HAyAY4AuAOABhaAiIqM+SYByU0FisQLcSJlFyD08/kY52l3GhIpG3v8TTMY5WE6iEFQoEdoiY4Lh2fm7tKErFMJSQ2owT5+drikRuLKuyZo9qdd55sbj1u874uGTP0y3TVJnK2P3qxo1rXNW+tojWHU98tnKYEsNVPTQxeZZEBIkq+EHcNnbSwfWJOdOnxlg1BLsjsox3gpa/IYWSao1wg6J4x0T2602SNPJbbV6WavUAm6IqW8sTRs0lisq6kkQXyxZHDUGxDU4Ky21RbWZizSDmOT7M5GVr/XvXNdrjnZ/scjR2dVPXUazMs8yu+XT39wOJPNn4TlXlpMyMU7O045LmbKMz6Y2Nqdp4ukEwbBGD2Ba563QdotGI0+EmjgIiIeLXUw4QGie8lqhYZtxr/12cmSRM+PhVW15TsIUNVHu28xVMVRyjiCQxVNUyGcxsTJz7RqkMJscm397W+v2qGUE7NHwOIOqTgMfAWydaCjGL9FBD49dHr3+3B+0/9NibLYXDAFSp2y5CozGZrMfep6XkBfG7v5xg589eRihAFmEMrlAfIYjNgNdE79nSfGe6a8Hrn+1z9e43dp4Qf91ovCjX/kW/8N1sZV6fbnBDPZJzBFVEqF9P+0WApw0hr7hbjEpT8kwsc6AemBGEQtUCKPc6Hpn06cFV4Gst/4bOYL7617+P/EO/HgB6cVLlW2mvpOHdX6P+DL2q/sMs9VLFGAPoiNv6AzLBVXMGYR9cvTPUpxeZw8sq84I6J2FLApA7MAEuRp4fh4wQQlmA+j1GqLQR24B8qWQ8QHuxbAXEP24bnRriASaesYpdCXeSckfpAUk9o5yFZ1AnwJPiVbsblddjgD9Hjao3g8XGdJcMntpJLFCCc4rNSacZwxigaxX7VVQBi7eMEqL3y7Ac4aB2EkH5J1ZOAnzmeKlQzevMdABaG6+ruNMlRQM7YdmsE6qlV0TdRlPMlk9YREeWy/TmMDlTn3dL/2SNzCFcfBaCnwCWBvXmimPYCR47t+5vQhviBhWK3X33rNib9kLVDPx1CGgVwwfwzmhX4ylAiWLaiXmViUw/UrWQVYVFPTz4NTRokKYEvv0k2cxcMFby5i6D1PR2qs/MCRkfi8hpQygHgAzbxK+qYwR1gcGbWoWiuqCqxPJCL66zAkMBK1KOlhbfxLn7StrMLR81TwkenTcoZcf/u/6K/w9CnG+9fjXozc3d4+KcFn8RoH/4WfzXvVb+J+IYhJjUNYccT258Uy6L76zsPpTKTr6Q7tuR6SbJ844wqNOTY151LO5Z3jHEOMCxJL2wVFfD9FF2jYgsqqbLxy6vaWsoFNObwnOTM9+7fuR5xED45AddqhKyIeLZDkczp++EHPAanT+McfUru6Itovlg1QOIYt/mzWQfO5ec63dZwaRxIUq3Z2du7de6apX7c+cH3xTMi2M96DVfMIpvD5zdn69a1dqvnJs8qVWjOS5qTKDj13UqlZd6fePphEaR5rimtTphZdnWIw7oCH5zRrsMiCPQzAfdWgaBjybIp+xO2OYsPdaaNaXlaNbl+a2+h4V5fLuFM4yflUIkDz/9dIHR2ew6wKNc6+n+Iec7vIE0RmaWy2s+Yp1pCS7Q+esee2T8vsTjDZSeMuOBnoQdCwCuitMnAViNBg/WEnghzoeE60i8vagbJaqedmv27Im3qOqla2+cwCULqImnY55dOxEjmbjT/wQOV10ba69RmZWLTlwN8cuPQAfMnjUAGYDOnIP0D/U08XVhzVdgjOR/2/8SZHCjtb+3wXUqPJm41aU9UluLGAXyc9sjdDux4MuaTMf+97p1o1kOoQObleFYa7n80yNkvw3LMRBaQrlQo7dtaEAF8lF8HJetc0VJorlbtdZi2oL2mjylF0IRvR/a6z3kdq5OU0w4zyZZKyIqrEkGVf+uqiGTBaXa7n1+nJZppUlSLZTms85L7N5cChmXbpgbj1EUbgs0BMpwodhuJVq4xPdg2Qo7kQiTVehmQ3GexwoX+x0k9pMCwXZiraLZoxldqwoVkCQmikovj073JkhTqGot2uI+V7GW2G4SEJrfy1iZ037bK0ULOhrtLCpGx78YwqqTrbl53C4Zz5i0OVoTw8t2cbl51vcs4bvs9xzfbvrElPY07S47cXo7niu09Zl16vH80npx2vWXZ/hvKK6M+FgoQ1meLdIVMUVSjInjjP7jokhnZurBTA1FCCeAiOLKBfbrICs4UqZ10D6MvOi/ycYuyneWuOHTZcrg2XP+efwbPOS+5/05c7RBzPSVM3TV165VNzWZzSwB4DgiVsLas5JYKfmk0sIRz8Ci6e1Y9/DTxUbH3rL1QGeNfTD1MllJWOllVSnc9u0JXGxHvJL8NNX28/0nE77WduJTDRRZUOJR4fFtmezEg7WECSB62dTLz9atu/pkLre2vn4cN4dfsz8pacPeqoTZr1/Plt9x5eSzqeYpr6c0U6/Dd5gt3+q6H/QJycUT/fKm5s5I3l40c2UHY6eSpWFm8l5Qeaflc4bVN6k/quvMXZwKJRtfK6D4ZvNda69vdrqx8LkbVNFz+prbVBI2Q6ObVyHQNFvYAJcusQ0FLC1hC5wKiv2CMzIsI4WWrrzMIhxpyakGszQNBU4QianSrUqjqeTq4BPXxEpB/gvVlOadrw8KviiXDiV75kXZBL/PB86QFbOlZIunabhUkC+RFBRc1GfFFgpj9RczGDvlW+4zlsTWxLOJZzoDnAlRqlgqzwyOl1dIZUKT6W5HqpQk6LaoZkFCPGJAvGyI+x1/qb5HGsh7PzG4sE/NA/3SnGyRyN1xqV4X93GuYe7Hb7YyQ8pyqkPIgxH/LSqxP+iyUC0EDQewnbcKSyb2G3ZjPvY9lmHp4n4CYmE/6hwWfba9vcVG2H7b9kViKQC2sxownYy0QxjYD7iKJdqXOoJ1s191GFM1v2bF1P/e1oMO2dnqbrLob0Lxn7yaO3lxPxiWS5bKD/0iFtBfsBT+mTH8bYvhd/QY4bkMvp+ia3wLMC6SX0DVFpLmZKABBPUoAIjEIoB/YqVyuH9JQdWb+w8qqFI3CgJwAKzO6go4rL5uAsSgAxLWOLcIfCD1YDEoYABggOAUAHhDA9wIMLDZjYIUDgIG6znAYb3nJkAN72IkkhDMLRX+83zMlZegeIugMvSy20vUNBsnP4uo5zdYHlWkkcVm/xAT0iybsj63fMEMUcYOaWPbnI00kSb5SbaBcSS5RPKgc+nQvKyrymx2LDVNR8KbCCjZ9+9JnX1mpJGZWToTpe//Biw2UmLLhIfM/0CU4OqlRqnuYfzi514T3kr/ZMNqZSob0q2PyBQLn0wGo2gk0lK/lge0rORG1C/WKrqQ6cuXlxcmk+cxvkn56zPfnJgNi9Vmdzhdbo/Xx9dHTuYOFR0cHpiKM+2c8uzAHm+21ENyxFrN9nEL2KM+Y2u427Hr18u9ooCzPRvAsNgTO8bAZM4qkRuxNJ7Moyrq5qpXaJRjuoKNGlnt+JKAeezD0A9EW3AmfCTX3QhXSEcAAAAA') format('woff2'),
5 | url('iconfont.woff?t=1596595959724') format('woff'),
6 | url('iconfont.ttf?t=1596595959724') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
7 | url('iconfont.svg?t=1596595959724#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family: "iconfont" !important;
12 | font-size: 16px;
13 | font-style: normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | }
17 |
18 | .icon-tubiaozhizuo-:before {
19 | content: "\e607";
20 | }
21 |
22 | .icon-icon:before {
23 | content: "\e601";
24 | }
25 |
26 | .icon-zuji:before {
27 | content: "\e767";
28 | }
29 |
30 | .icon-wodeshoucang:before {
31 | content: "\e649";
32 | }
33 |
34 | .icon-weibiaoti2fuzhi08:before {
35 | content: "\e625";
36 | }
37 |
38 | .icon-yaoqing:before {
39 | content: "\e666";
40 | }
41 |
42 | .icon-kefu:before {
43 | content: "\e646";
44 | }
45 |
46 | .icon-youhuiquan:before {
47 | content: "\e65f";
48 | }
49 |
50 | .icon-youhuiquan1:before {
51 | content: "\e8c0";
52 | }
53 |
54 | .icon-pingjia-01:before {
55 | content: "\e610";
56 | }
57 |
58 | .icon-daifahuo:before {
59 | content: "\e602";
60 | }
61 |
62 | .icon-evaluate:before {
63 | content: "\e61d";
64 | }
65 |
66 | .icon-tuihuotuikuan:before {
67 | content: "\e7af";
68 | }
69 |
70 | .icon-daishouhuo:before {
71 | content: "\e60c";
72 | }
73 |
74 | .icon-daifukuan:before {
75 | content: "\e63d";
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/static/images/activeBtn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/activeBtn.png
--------------------------------------------------------------------------------
/static/images/activety.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/activety.png
--------------------------------------------------------------------------------
/static/images/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/add.png
--------------------------------------------------------------------------------
/static/images/address-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/address-bg.png
--------------------------------------------------------------------------------
/static/images/address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/address.png
--------------------------------------------------------------------------------
/static/images/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/banner.png
--------------------------------------------------------------------------------
/static/images/cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/cart.png
--------------------------------------------------------------------------------
/static/images/complete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/complete.png
--------------------------------------------------------------------------------
/static/images/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/default.png
--------------------------------------------------------------------------------
/static/images/dianpu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/dianpu.png
--------------------------------------------------------------------------------
/static/images/erweima.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/erweima.png
--------------------------------------------------------------------------------
/static/images/head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/head.png
--------------------------------------------------------------------------------
/static/images/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/home.png
--------------------------------------------------------------------------------
/static/images/huiyuan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/huiyuan.png
--------------------------------------------------------------------------------
/static/images/inviteBtn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/inviteBtn.png
--------------------------------------------------------------------------------
/static/images/kanIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/kanIcon.png
--------------------------------------------------------------------------------
/static/images/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/login.png
--------------------------------------------------------------------------------
/static/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/logo.png
--------------------------------------------------------------------------------
/static/images/manjian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/manjian.png
--------------------------------------------------------------------------------
/static/images/miaosha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/miaosha.png
--------------------------------------------------------------------------------
/static/images/normalUserBg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/normalUserBg.png
--------------------------------------------------------------------------------
/static/images/obligation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/obligation.png
--------------------------------------------------------------------------------
/static/images/off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/off.png
--------------------------------------------------------------------------------
/static/images/on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/on.png
--------------------------------------------------------------------------------
/static/images/order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/order.png
--------------------------------------------------------------------------------
/static/images/pay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/pay.png
--------------------------------------------------------------------------------
/static/images/person-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/person-bg.png
--------------------------------------------------------------------------------
/static/images/person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/person.png
--------------------------------------------------------------------------------
/static/images/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/phone.png
--------------------------------------------------------------------------------
/static/images/pintuan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/pintuan.png
--------------------------------------------------------------------------------
/static/images/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/play.png
--------------------------------------------------------------------------------
/static/images/prefecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/prefecture.png
--------------------------------------------------------------------------------
/static/images/prefecture1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/prefecture1.png
--------------------------------------------------------------------------------
/static/images/saled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/saled.png
--------------------------------------------------------------------------------
/static/images/send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/send.png
--------------------------------------------------------------------------------
/static/images/sending.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/sending.png
--------------------------------------------------------------------------------
/static/images/share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/share.png
--------------------------------------------------------------------------------
/static/images/shareBtn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/shareBtn.png
--------------------------------------------------------------------------------
/static/images/sheyuan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/sheyuan.png
--------------------------------------------------------------------------------
/static/images/shopInfo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/shopInfo.png
--------------------------------------------------------------------------------
/static/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/success.png
--------------------------------------------------------------------------------
/static/images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/user.png
--------------------------------------------------------------------------------
/static/images/wallet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/wallet.png
--------------------------------------------------------------------------------
/static/images/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/images/wechat.png
--------------------------------------------------------------------------------
/static/tabs/cart-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/cart-active.png
--------------------------------------------------------------------------------
/static/tabs/cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/cart.png
--------------------------------------------------------------------------------
/static/tabs/goods-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/goods-active.png
--------------------------------------------------------------------------------
/static/tabs/goods.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/goods.png
--------------------------------------------------------------------------------
/static/tabs/home-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/home-active.png
--------------------------------------------------------------------------------
/static/tabs/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/home.png
--------------------------------------------------------------------------------
/static/tabs/message-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/message-active.png
--------------------------------------------------------------------------------
/static/tabs/message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/message.png
--------------------------------------------------------------------------------
/static/tabs/personal-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/personal-active.png
--------------------------------------------------------------------------------
/static/tabs/personal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mcwenzai/mpvue-b2c/764f8a6acd71b238980f014a318c106d0ae65977/static/tabs/personal.png
--------------------------------------------------------------------------------