pansl 2 rokov pred
rodič
commit
0392db898f
100 zmenil súbory, kde vykonal 0 pridanie a 2007 odobranie
  1. 0 31
      .babelrc
  2. 0 9
      .editorconfig
  3. 0 17
      .gitignore
  4. 0 9
      .postcssrc.js
  5. 0 41
      build/build.js
  6. 0 54
      build/check-versions.js
  7. BIN
      build/logo.png
  8. 0 101
      build/utils.js
  9. 0 22
      build/vue-loader.conf.js
  10. 0 82
      build/webpack.base.conf.js
  11. 0 96
      build/webpack.dev.conf.js
  12. 0 153
      build/webpack.prod.conf.js
  13. 0 7
      config/dev.env.js
  14. 0 93
      config/index.js
  15. 0 4
      config/prod.env.js
  16. 0 12
      index.html
  17. 0 46
      index.prod.html
  18. 0 122
      other/help.html
  19. 0 87
      other/safe.html
  20. 0 77
      package.json
  21. 0 163
      src/App.vue
  22. 0 54
      src/analog-data/QA.json
  23. 0 49
      src/api/axios.js
  24. 0 606
      src/api/index.js
  25. 0 72
      src/api/util/index.js
  26. BIN
      src/assets/1.png
  27. BIN
      src/assets/1234.jpg
  28. BIN
      src/assets/2.png
  29. BIN
      src/assets/3.png
  30. BIN
      src/assets/activity_banner.jpg
  31. BIN
      src/assets/alipay.png
  32. BIN
      src/assets/android_collect.png
  33. BIN
      src/assets/beij.jpg
  34. BIN
      src/assets/bg.jpg
  35. BIN
      src/assets/big-red-he.png
  36. BIN
      src/assets/binding.png
  37. BIN
      src/assets/book/1.jpg
  38. BIN
      src/assets/book/10.jpg
  39. BIN
      src/assets/book/2.jpg
  40. BIN
      src/assets/book/3.jpg
  41. BIN
      src/assets/book/4.jpg
  42. BIN
      src/assets/book/5.jpg
  43. BIN
      src/assets/book/6.jpg
  44. BIN
      src/assets/book/7.jpg
  45. BIN
      src/assets/book/8.jpg
  46. BIN
      src/assets/book/9.jpg
  47. BIN
      src/assets/checkbox.png
  48. BIN
      src/assets/checkbox_checked.png
  49. BIN
      src/assets/close_icon.png
  50. BIN
      src/assets/closed.png
  51. BIN
      src/assets/coupon _pay.png
  52. BIN
      src/assets/coupon-entry.png
  53. BIN
      src/assets/coupon_bg1.png
  54. BIN
      src/assets/coupon_diabled.png
  55. BIN
      src/assets/coupon_expire.png
  56. BIN
      src/assets/cz.jpg
  57. BIN
      src/assets/declining.png
  58. BIN
      src/assets/default.png
  59. BIN
      src/assets/demo.png
  60. BIN
      src/assets/entry.png
  61. BIN
      src/assets/fansbanner.jpg
  62. BIN
      src/assets/free-read.jpg
  63. BIN
      src/assets/gift_default.png
  64. BIN
      src/assets/gold-bi.png
  65. BIN
      src/assets/huo.png
  66. BIN
      src/assets/icon_coupon.png
  67. BIN
      src/assets/icon_pay_coupon.png
  68. BIN
      src/assets/iphone_collect.png
  69. BIN
      src/assets/is_check.png
  70. BIN
      src/assets/jinri.png
  71. BIN
      src/assets/loading-1.png
  72. BIN
      src/assets/mi_wan_year.jpg
  73. BIN
      src/assets/mi_wan_year_check.jpg
  74. BIN
      src/assets/month_order.png
  75. BIN
      src/assets/month_order_1.png
  76. BIN
      src/assets/month_order_check.png
  77. BIN
      src/assets/my_coupon.png
  78. BIN
      src/assets/no-enough.png
  79. BIN
      src/assets/no-gift.png
  80. BIN
      src/assets/no_coupon.png
  81. BIN
      src/assets/notfind.jpg
  82. BIN
      src/assets/open.png
  83. BIN
      src/assets/price.png
  84. BIN
      src/assets/push-more-suc.png
  85. BIN
      src/assets/push-more.png
  86. BIN
      src/assets/qr-back.png
  87. BIN
      src/assets/qr-banner.jpg
  88. BIN
      src/assets/qr-bg.jpg
  89. BIN
      src/assets/qr-title.jpg
  90. BIN
      src/assets/rank_1.png
  91. BIN
      src/assets/rank_2.png
  92. BIN
      src/assets/rank_3.png
  93. BIN
      src/assets/reader_bg.png
  94. BIN
      src/assets/recent-free__entry.png
  95. BIN
      src/assets/red-he.png
  96. BIN
      src/assets/red_package.png
  97. BIN
      src/assets/report-success.png
  98. BIN
      src/assets/share-bg.jpg
  99. BIN
      src/assets/share_entry.png
  100. 0 0
      src/assets/shoc.png

+ 0 - 31
.babelrc

@@ -1,31 +0,0 @@
-{
-  "presets": [
-    [
-      "env",
-      {
-        "modules": false
-      }
-    ],
-    "stage-2"
-  ],
-  "plugins": [
-    "transform-runtime",
-    [
-      "component",
-      [
-        {
-          "libraryName": "mint-ui",
-          "style": true
-        }
-      ]
-    ]
-  ],
-  "env": {
-    "test": {
-      "presets": [
-        "env",
-        "stage-2"
-      ]
-    }
-  }
-}

+ 0 - 9
.editorconfig

@@ -1,9 +0,0 @@
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true

+ 0 - 17
.gitignore

@@ -1,17 +0,0 @@
-.DS_Store
-node_modules/
-/dist/
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-dist.zip
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-package-lock.json
-yarn.lock

+ 0 - 9
.postcssrc.js

@@ -1,9 +0,0 @@
-// https://github.com/michael-ciniawsky/postcss-load-config
-
-module.exports = {
-  "plugins": {
-    // to edit target browsers: use "browserslist" field in package.json
-    "postcss-import": {},
-    "autoprefixer": {}
-  }
-}

+ 0 - 41
build/build.js

@@ -1,41 +0,0 @@
-'use strict'
-require('./check-versions')()
-
-process.env.NODE_ENV = 'production'
-
-const ora = require('ora')
-const rm = require('rimraf')
-const path = require('path')
-const chalk = require('chalk')
-const webpack = require('webpack')
-const config = require('../config')
-const webpackConfig = require('./webpack.prod.conf')
-
-const spinner = ora('building for production...')
-spinner.start()
-
-rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
-  if (err) throw err
-  webpack(webpackConfig, (err, stats) => {
-    spinner.stop()
-    if (err) throw err
-    process.stdout.write(stats.toString({
-      colors: true,
-      modules: false,
-      children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
-      chunks: false,
-      chunkModules: false
-    }) + '\n\n')
-
-    if (stats.hasErrors()) {
-      console.log(chalk.red('  Build failed with errors.\n'))
-      process.exit(1)
-    }
-
-    console.log(chalk.cyan('  Build complete.\n'))
-    console.log(chalk.yellow(
-      '  Tip: built files are meant to be served over an HTTP server.\n' +
-      '  Opening index.html over file:// won\'t work.\n'
-    ))
-  })
-})

+ 0 - 54
build/check-versions.js

@@ -1,54 +0,0 @@
-'use strict'
-const chalk = require('chalk')
-const semver = require('semver')
-const packageConfig = require('../package.json')
-const shell = require('shelljs')
-
-function exec (cmd) {
-  return require('child_process').execSync(cmd).toString().trim()
-}
-
-const versionRequirements = [
-  {
-    name: 'node',
-    currentVersion: semver.clean(process.version),
-    versionRequirement: packageConfig.engines.node
-  }
-]
-
-if (shell.which('npm')) {
-  versionRequirements.push({
-    name: 'npm',
-    currentVersion: exec('npm --version'),
-    versionRequirement: packageConfig.engines.npm
-  })
-}
-
-module.exports = function () {
-  const warnings = []
-
-  for (let i = 0; i < versionRequirements.length; i++) {
-    const mod = versionRequirements[i]
-
-    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
-      warnings.push(mod.name + ': ' +
-        chalk.red(mod.currentVersion) + ' should be ' +
-        chalk.green(mod.versionRequirement)
-      )
-    }
-  }
-
-  if (warnings.length) {
-    console.log('')
-    console.log(chalk.yellow('To use this template, you must update following to modules:'))
-    console.log()
-
-    for (let i = 0; i < warnings.length; i++) {
-      const warning = warnings[i]
-      console.log('  ' + warning)
-    }
-
-    console.log()
-    process.exit(1)
-  }
-}

BIN
build/logo.png


+ 0 - 101
build/utils.js

@@ -1,101 +0,0 @@
-'use strict'
-const path = require('path')
-const config = require('../config')
-const ExtractTextPlugin = require('extract-text-webpack-plugin')
-const packageConfig = require('../package.json')
-
-exports.assetsPath = function (_path) {
-  const assetsSubDirectory = process.env.NODE_ENV === 'production'
-    ? config.build.assetsSubDirectory
-    : config.dev.assetsSubDirectory
-
-  return path.posix.join(assetsSubDirectory, _path)
-}
-
-exports.cssLoaders = function (options) {
-  options = options || {}
-
-  const cssLoader = {
-    loader: 'css-loader',
-    options: {
-      sourceMap: options.sourceMap
-    }
-  }
-
-  const postcssLoader = {
-    loader: 'postcss-loader',
-    options: {
-      sourceMap: options.sourceMap
-    }
-  }
-
-  // generate loader string to be used with extract text plugin
-  function generateLoaders (loader, loaderOptions) {
-    const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
-
-    if (loader) {
-      loaders.push({
-        loader: loader + '-loader',
-        options: Object.assign({}, loaderOptions, {
-          sourceMap: options.sourceMap
-        })
-      })
-    }
-
-    // Extract CSS when that option is specified
-    // (which is the case during production build)
-    if (options.extract) {
-      return ExtractTextPlugin.extract({
-        use: loaders,
-        fallback: 'vue-style-loader'
-      })
-    } else {
-      return ['vue-style-loader'].concat(loaders)
-    }
-  }
-
-  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
-  return {
-    css: generateLoaders(),
-    postcss: generateLoaders(),
-    less: generateLoaders('less'),
-    sass: generateLoaders('sass', { indentedSyntax: true }),
-    scss: generateLoaders('sass'),
-    stylus: generateLoaders('stylus'),
-    styl: generateLoaders('stylus')
-  }
-}
-
-// Generate loaders for standalone style files (outside of .vue)
-exports.styleLoaders = function (options) {
-  const output = []
-  const loaders = exports.cssLoaders(options)
-
-  for (const extension in loaders) {
-    const loader = loaders[extension]
-    output.push({
-      test: new RegExp('\\.' + extension + '$'),
-      use: loader
-    })
-  }
-
-  return output
-}
-
-exports.createNotifierCallback = () => {
-  const notifier = require('node-notifier')
-
-  return (severity, errors) => {
-    if (severity !== 'error') return
-
-    const error = errors[0]
-    const filename = error.file && error.file.split('!').pop()
-
-    notifier.notify({
-      title: packageConfig.name,
-      message: severity + ': ' + error.name,
-      subtitle: filename || '',
-      icon: path.join(__dirname, 'logo.png')
-    })
-  }
-}

+ 0 - 22
build/vue-loader.conf.js

@@ -1,22 +0,0 @@
-'use strict'
-const utils = require('./utils')
-const config = require('../config')
-const isProduction = process.env.NODE_ENV === 'production'
-const sourceMapEnabled = isProduction
-  ? config.build.productionSourceMap
-  : config.dev.cssSourceMap
-
-module.exports = {
-  loaders: utils.cssLoaders({
-    sourceMap: sourceMapEnabled,
-    extract: isProduction
-  }),
-  cssSourceMap: sourceMapEnabled,
-  cacheBusting: config.dev.cacheBusting,
-  transformToRequire: {
-    video: ['src', 'poster'],
-    source: 'src',
-    img: 'src',
-    image: 'xlink:href'
-  }
-}

+ 0 - 82
build/webpack.base.conf.js

@@ -1,82 +0,0 @@
-'use strict'
-const path = require('path')
-const utils = require('./utils')
-const config = require('../config')
-const vueLoaderConfig = require('./vue-loader.conf')
-
-function resolve (dir) {
-  return path.join(__dirname, '..', dir)
-}
-
-
-
-module.exports = {
-  context: path.resolve(__dirname, '../'),
-  entry: {
-    app: './src/main.js'
-  },
-  output: {
-    path: config.build.assetsRoot,
-    filename: '[name].js',
-    publicPath: process.env.NODE_ENV === 'production'
-      ? config.build.assetsPublicPath
-      : config.dev.assetsPublicPath
-  },
-  resolve: {
-    extensions: ['.js', '.vue', '.json'],
-    alias: {
-      'vue$': 'vue/dist/vue.esm.js',
-      '@': resolve('src'),
-    }
-  },
-  module: {
-    rules: [
-      {
-        test: /\.vue$/,
-        loader: 'vue-loader',
-        options: vueLoaderConfig
-      },
-      {
-        test: /\.js$/,
-        loader: 'babel-loader',
-        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
-      },
-      {
-        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
-        loader: 'url-loader',
-        options: {
-          limit: 10000,
-          name: utils.assetsPath('img/[name].[hash:7].[ext]')
-        }
-      },
-      {
-        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
-        loader: 'url-loader',
-        options: {
-          limit: 10000,
-          name: utils.assetsPath('media/[name].[hash:7].[ext]')
-        }
-      },
-      {
-        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
-        loader: 'url-loader',
-        options: {
-          limit: 10000,
-          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
-        }
-      }
-    ]
-  },
-  node: {
-    // prevent webpack from injecting useless setImmediate polyfill because Vue
-    // source contains it (although only uses it if it's native).
-    setImmediate: false,
-    // prevent webpack from injecting mocks to Node native modules
-    // that does not make sense for the client
-    dgram: 'empty',
-    fs: 'empty',
-    net: 'empty',
-    tls: 'empty',
-    child_process: 'empty'
-  }
-}

+ 0 - 96
build/webpack.dev.conf.js

@@ -1,96 +0,0 @@
-'use strict'
-const utils = require('./utils')
-const webpack = require('webpack')
-const config = require('../config')
-const merge = require('webpack-merge')
-const path = require('path')
-const baseWebpackConfig = require('./webpack.base.conf')
-const CopyWebpackPlugin = require('copy-webpack-plugin')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
-const portfinder = require('portfinder')
-
-const HOST = process.env.HOST
-const PORT = process.env.PORT && Number(process.env.PORT)
-
-const devWebpackConfig = merge(baseWebpackConfig, {
-  module: {
-    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
-  },
-  // cheap-module-eval-source-map is faster for development
-  devtool: config.dev.devtool,
-
-  // these devServer options should be customized in /config/index.js
-  devServer: {
-    clientLogLevel: 'warning',
-    historyApiFallback: {
-      rewrites: [
-        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
-      ],
-    },
-    hot: true,
-    contentBase: false, // since we use CopyWebpackPlugin.
-    compress: true,
-    host: HOST || config.dev.host,
-    port: PORT || config.dev.port,
-    open: config.dev.autoOpenBrowser,
-    overlay: config.dev.errorOverlay
-      ? { warnings: false, errors: true }
-      : false,
-    publicPath: config.dev.assetsPublicPath,
-    proxy: config.dev.proxyTable,
-    quiet: true, // necessary for FriendlyErrorsPlugin
-    watchOptions: {
-      poll: config.dev.poll,
-    },
-    disableHostCheck: config.dev.disableHostCheck
-  },
-  plugins: [
-    new webpack.DefinePlugin({
-      'process.env': require('../config/dev.env')
-    }),
-    new webpack.HotModuleReplacementPlugin(),
-    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
-    new webpack.NoEmitOnErrorsPlugin(),
-    // https://github.com/ampedandwired/html-webpack-plugin
-    new HtmlWebpackPlugin({
-      filename: 'index.html',
-      template: 'index.html',
-      inject: true
-    }),
-    // copy custom static assets
-    new CopyWebpackPlugin([
-      {
-        from: path.resolve(__dirname, '../static'),
-        to: config.dev.assetsSubDirectory,
-        ignore: ['.*']
-      }
-    ])
-  ]
-})
-
-module.exports = new Promise((resolve, reject) => {
-  portfinder.basePort = process.env.PORT || config.dev.port
-  portfinder.getPort((err, port) => {
-    if (err) {
-      reject(err)
-    } else {
-      // publish the new Port, necessary for e2e tests
-      process.env.PORT = port
-      // add port to devServer config
-      devWebpackConfig.devServer.port = port
-
-      // Add FriendlyErrorsPlugin
-      devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
-        compilationSuccessInfo: {
-          messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
-        },
-        onErrors: config.dev.notifyOnErrors
-        ? utils.createNotifierCallback()
-        : undefined
-      }))
-
-      resolve(devWebpackConfig)
-    }
-  })
-})

+ 0 - 153
build/webpack.prod.conf.js

@@ -1,153 +0,0 @@
-'use strict'
-const path = require('path')
-const utils = require('./utils')
-const webpack = require('webpack')
-const config = require('../config')
-const merge = require('webpack-merge')
-const baseWebpackConfig = require('./webpack.base.conf')
-const CopyWebpackPlugin = require('copy-webpack-plugin')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const ExtractTextPlugin = require('extract-text-webpack-plugin')
-const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
-const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
-
-const env = require('../config/prod.env')
-
-const webpackConfig = merge(baseWebpackConfig, {
-  module: {
-    rules: utils.styleLoaders({
-      sourceMap: config.build.productionSourceMap,
-      extract: true,
-      usePostCSS: true
-    })
-  },
-  externals: {
-    'vue': 'Vue',
-    'vue-router': 'VueRouter',
-    'vue-lazyload': 'VueLazyload',
-  },
-  devtool: config.build.productionSourceMap ? config.build.devtool : false,
-  output: {
-    path: config.build.assetsRoot,
-    filename: utils.assetsPath('js/[name].[chunkhash].js'),
-    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
-  },
-  plugins: [
-    // http://vuejs.github.io/vue-loader/en/workflow/production.html
-    new webpack.DefinePlugin({
-      'process.env': env
-    }),
-    new UglifyJsPlugin({
-      uglifyOptions: {
-        compress: {
-          warnings: false
-        }
-      },
-      sourceMap: config.build.productionSourceMap,
-      parallel: true
-    }),
-    // extract css into its own file
-    new ExtractTextPlugin({
-      filename: utils.assetsPath('css/[name].[contenthash].css'),
-      // Setting the following option to `false` will not extract CSS from codesplit chunks.
-      // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
-      // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 
-      // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
-      allChunks: true,
-    }),
-    // Compress extracted CSS. We are using this plugin so that possible
-    // duplicated CSS from different components can be deduped.
-    // new OptimizeCSSPlugin({
-    //   cssProcessorOptions: config.build.productionSourceMap
-    //     ? { safe: true, map: { inline: false } }
-    //     : { safe: true }
-    // }),
-    new OptimizeCSSPlugin({
-      cssProcessorOptions: { safe: true, autoprefixer: false},
-    }),
-    // generate dist index.html with correct asset hash for caching.
-    // you can customize output by editing /index.html
-    // see https://github.com/ampedandwired/html-webpack-plugin
-    new HtmlWebpackPlugin({
-      filename: config.build.index,
-      template: 'index.prod.html',
-      inject: true,
-      minify: {
-        removeComments: true,
-        collapseWhitespace: true,
-        removeAttributeQuotes: true
-        // more options:
-        // https://github.com/kangax/html-minifier#options-quick-reference
-      },
-      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
-      chunksSortMode: 'dependency'
-    }),
-    // keep module.id stable when vendor modules does not change
-    new webpack.HashedModuleIdsPlugin(),
-    // enable scope hoisting
-    new webpack.optimize.ModuleConcatenationPlugin(),
-    // split vendor js into its own file
-    new webpack.optimize.CommonsChunkPlugin({
-      name: 'vendor',
-      minChunks(module) {
-        // any required modules inside node_modules are extracted to vendor
-        return (
-          module.resource &&
-          /\.js$/.test(module.resource) &&
-          module.resource.indexOf(
-            path.join(__dirname, '../node_modules')
-          ) === 0
-        )
-      }
-    }),
-    // extract webpack runtime and module manifest to its own file in order to
-    // prevent vendor hash from being updated whenever app bundle is updated
-    new webpack.optimize.CommonsChunkPlugin({
-      name: 'manifest',
-      minChunks: Infinity
-    }),
-    // This instance extracts shared chunks from code splitted chunks and bundles them
-    // in a separate chunk, similar to the vendor chunk
-    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
-    new webpack.optimize.CommonsChunkPlugin({
-      name: 'app',
-      async: 'vendor-async',
-      children: true,
-      minChunks: 3
-    }),
-
-    // copy custom static assets
-    new CopyWebpackPlugin([
-      {
-        from: path.resolve(__dirname, '../static'),
-        to: config.build.assetsSubDirectory,
-        ignore: ['.*']
-      }
-    ])
-  ]
-})
-
-if (config.build.productionGzip) {
-  const CompressionWebpackPlugin = require('compression-webpack-plugin')
-
-  webpackConfig.plugins.push(
-    new CompressionWebpackPlugin({
-      asset: '[path].gz[query]',
-      algorithm: 'gzip',
-      test: new RegExp(
-        '\\.(' +
-        config.build.productionGzipExtensions.join('|') +
-        ')$'
-      ),
-      threshold: 10240,
-      minRatio: 0.8
-    })
-  )
-}
-
-if (config.build.bundleAnalyzerReport) {
-  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
-  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
-}
-
-module.exports = webpackConfig

+ 0 - 7
config/dev.env.js

@@ -1,7 +0,0 @@
-'use strict'
-const merge = require('webpack-merge')
-const prodEnv = require('./prod.env')
-
-module.exports = merge(prodEnv, {
-  NODE_ENV: '"development"'
-})

+ 0 - 93
config/index.js

@@ -1,93 +0,0 @@
-/*
- * @Author: ZhengXiaowei
- * @Date: 2019-04-12 14:35:42
- * LastEditors: 晓晓晓晓晓丶vv
- * LastEditTime: 2020-08-21 15:26:55
- * @Description: file content
- */
-"use strict";
-// Template version: 1.2.8
-// see http://vuejs-templates.github.io/webpack for documentation.
-
-const path = require("path");
-// "https://siteywmkx29emyevn514.leyuee.com/
-module.exports = {
-  dev: {
-    // Paths
-    assetsSubDirectory: "static",
-    assetsPublicPath: "/",
-    proxyTable: {
-      "/api": {
-        // target: "http://site2.pre.aizhuishu.com/",
-        target: "https://site14.leyuee.com",
-        changeOrigin: true
-      },
-      "/testLogin": {
-        // target: "http://site2.pre.aizhuishu.com/",
-        target: "https://site14.leyuee.com",
-        changeOrigin: true
-      }
-    },
-
-    // Various Dev Server settings
-    host: "localhost", // can be overwritten by process.env.HOST
-    port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
-    autoOpenBrowser: false,
-    errorOverlay: true,
-    notifyOnErrors: true,
-    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
-
-    /**
-     * Source Maps
-     */
-
-    // https://webpack.js.org/configuration/devtool/#development
-    // devtool: "cheap-module-eval-source-map",
-    devtool: "cheap-module-eval-source-map",
-
-    // If you have problems debugging vue-files in devtools,
-    // set this to false - it *may* help
-    // https://vue-loader.vuejs.org/en/options.html#cachebusting
-    cacheBusting: true,
-
-    // CSS Sourcemaps off by default because relative paths are "buggy"
-    // with this option, according to the CSS-Loader README
-    // (https://github.com/webpack/css-loader#sourcemaps)
-    // In our experience, they generally work as expected,
-    // just be aware of this issue when enabling this option.
-    cssSourceMap: false,
-    disableHostCheck: true
-  },
-
-  build: {
-    // Template for index.html
-    index: path.resolve(__dirname, "../dist/index.html"),
-
-    // Paths
-    assetsRoot: path.resolve(__dirname, "../dist"),
-    assetsSubDirectory:
-      "static" + new Date().toLocaleDateString().replace(/\//g, "-"),
-    assetsPublicPath: "https://cdn-novel.bookkks.com/",
-
-    /**
-     * Source Maps
-     */
-
-    productionSourceMap: true,
-    // https://webpack.js.org/configuration/devtool/#production
-    devtool: "#source-map",
-
-    // Gzip off by default as many popular static hosts such as
-    // Surge or Netlify already gzip all static assets for you.
-    // Before setting to `true`, make sure to:
-    // npm install --save-dev compression-webpack-plugin
-    productionGzip: false,
-    productionGzipExtensions: ["js", "css"],
-
-    // Run the build command with an extra argument to
-    // View the bundle analyzer report after build finishes:
-    // `npm run build --report`
-    // Set to `true` or `false` to always turn it on or off
-    bundleAnalyzerReport: process.env.npm_config_report
-  }
-};

+ 0 - 4
config/prod.env.js

@@ -1,4 +0,0 @@
-'use strict'
-module.exports = {
-  NODE_ENV: '"production"'
-}

+ 0 - 12
index.html

@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" >
-    <title>aaa</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>

+ 0 - 46
index.prod.html

@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-  <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
-  <script>window.errOptions || document.write('<script src="https://cdn-novel.bookkks.com/static/errOptions.js"><\/script>')</script>
-  <script>window.Vue || document.write('<script src="https://cdn-novel.bookkks.com/static/vue.min.js"><\/script>')</script>
-  <script>window.VueRouter || document.write('<script src="https://cdn-novel.bookkks.com/static/vue-router.min.js"><\/script>')</script>
-  <script>(window.Vue && window.VueLazyload) || document.write('<script src="https://cdn-novel.bookkks.com/static/vue-lazyload.js"><\/script>')</script>
-  <!-- <script src="https://cdn-novel.bookkks.com/static/fundebug.1.2.3.min.js"></script>
-  <script src="https://cdn-novel.bookkks.com/static/fundebug.option.js"></script> -->
-  <title>{{$title}}</title>
-</head>
-
-<body>
-  <div id="app"></div>
-  <script>
-    var _mtac = {};
-    (function () {
-      var mta = document.createElement("script");
-      mta.src = "https://pingjs.qq.com/h5/stats.js?v2.0.2";
-      mta.setAttribute("name", "MTAH5");
-      mta.setAttribute("sid", "500633040");
-      var s = document.getElementsByTagName("script")[0];
-      s.parentNode.insertBefore(mta, s);
-    })();
-  </script>
-  <script>
-    var _hmt = window._hmt || [];
-    (function () {
-      var hm = document.createElement("script");
-      hm.src = "https://hm.baidu.com/hm.js?a027c0fdf2b6e70f1892dbd8227cbb2b";
-      var s = document.getElementsByTagName("script")[0];
-      s.parentNode.insertBefore(hm, s);
-      window._hmt.push(['_setAutoPageview',false])
-    })();
-  </script>
-  <script id="options">
-    window.options = {!! $options!!};
-  </script>
-  <!-- built files will be auto injected -->
-</body>
-
-</html>

+ 0 - 122
other/help.html

@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-  <meta http-equiv="X-UA-Compatible" content="ie=edge">
-  <link href="favicon.ico" type=image/x-icon rel="shortcut icon">
-  <title>Document</title>
-  <style>
-    * {
-      padding: 0;
-      margin: 0;
-    }
-
-    body {
-      font-size: 14px;
-      padding: 1em;
-    }
-
-    .QA-title {
-      color: #ff6060;
-      font-size: 17px;
-      margin: 1em 0;
-    }
-
-    .QA-title:first-child {
-      margin-top: 0;
-    }
-
-    .QA-title::before {
-      content: "";
-      background-color: #ff6060;
-      display: inline-block;
-      width: .2em;
-      height: 1em;
-      border-radius: 0.1em;
-      vertical-align: -0.1em;
-      margin-right: 0.2em;
-    }
-
-    .question-title {
-      font-size: 16px;
-      margin: 1em 0;
-      color: #333;
-    }
-
-    .answer {
-      padding: .6em;
-      line-height: 1.8;
-      color: #999;
-      background-color: #f7f7f7;
-    }
-  </style>
-</head>
-
-<body>
-  <div class="QA-title">充值问题</div>
-  <div class="item">
-    <div class="question-title">1.1如何进行充值</div>
-    <div class="answer">
-      <p>方式一:点击公众号菜单栏【用户中心】-【我要充值】;</p>
-      <p>方式二:进入追书云书城首页,点击【个人中心】-【充值】 目前充值仅限使用微信支付。</p>
-    </div>
-  </div>
-  <div class="item">
-    <div class="question-title">1.2充值成功后书币未到账情况</div>
-    <div class="answer">
-      <p>1.2.1确认充值是否成功,系统是否已经扣除了充值费用。</p>
-      <p>1.2.2充值成功后书币到账可能有延迟情况,如1小时内仍未到帐请发送商户单号,客服将为您进行核实处理(复制或截图发送皆可)。</p>
-      <p>商户单号获取路径: </p>
-      <p>⑴进入微信的【钱包】,点击右上角四个点,然后点击【交易记录】 </p>
-      <p>⑵点开充值书币的记录,找到【商户单号】</p>
-    </div>
-  </div>
-  <div class="QA-title">收费问题</div>
-  </div>
-  <div class="item">
-    <div class="question-title">2.1小说网站会重复收费吗?</div>
-    <div class="answer">
-      <p>普通会员: 在某个公众号下阅读充值,该公众号下正常订阅(不包括年费VIP会员)的章节再次阅读是不会重复扣费的。 </p>
-      <p>年费VIP会员:在某个公众号下阅读充值,该公众号下年费VIP会员到期之后(即自订购之日起365天后),再次阅读是需要订阅扣费的。 </p>
-      <p>如还有其他关于资费问题,请直接留言,客服收到后会及时回复。</p>
-    </div>
-  </div>
-  <div class="item">
-    <div class="question-title">2.2如何无限畅读全站小说?</div>
-    <div class="answer">
-      <p>追书云为大家提供了年费VIP会员服务,为了保障小说爱好者畅通阅读和节省钱包,建议大家选择充值年费VIP会员,就可以免费阅读平台所有小说。</p>
-    </div>
-  </div>
-  <div class="QA-title">其他问题 </div>
-  <div class="item">
-    <div class="question-title"> 3.1如何领取免费书币? </div>
-    <div class="answer">
-      <p>每日首次阅读,即可免费获取50书币。</p>
-    </div>
-  </div>
-  <div class="item">
-    <div class="question-title">3.2如何查找您的阅读入口?</div>
-    <div class="answer">
-      <p>方式一:翻阅自己聊天记录查找自己关注的公众号 </p>
-      <p>方式二:点击微信的【通信录】-【公众号】查找</p>
-    </div>
-  </div>
-  <div class="item">
-    <div class="question-title">3.3如何继续阅读之前的章节?</div>
-    <div class="answer">
-      <p>方式一:点击公众号菜单栏【继续阅读】</p>
-      <p>方式二:点击公众号菜单栏【用户中心】-【阅读记录】</p>
-      <p>方式三:进入追书云书城首页,点击【书架】-【最近阅读】</p>
-    </div>
-  </div>
-  <div class="item">
-    <div class="question-title">3.3.4退款声明</div>
-    <div class="answer">
-      <p>书币是属于追书云小说平台专用的虚拟货币,用于用户支付订阅等服务,一经充值不可退款。</p>
-    </div>
-  </div>
-</body>
-
-</html>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 87
other/safe.html


+ 0 - 77
package.json

@@ -1,77 +0,0 @@
-{
-  "name": "y",
-  "version": "1.0.0",
-  "description": "A Vue.js project",
-  "author": "autumnLeaves0 <461563994@qq.com>",
-  "private": true,
-  "scripts": {
-    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
-    "start": "npm run dev",
-    "build": "node build/build.js"
-  },
-  "dependencies": {
-    "axios": "^0.17.1",
-    "clipboard": "^2.0.4",
-    "fundebug-javascript": "^1.2.3",
-    "html2canvas": "^1.0.0-rc.4",
-    "mint-ui": "^2.2.10",
-    "qrcodejs2": "0.0.2",
-    "vconsole": "^3.2.0",
-    "vue": "^2.5.2",
-    "vue-clipboard2": "^0.3.1",
-    "vue-router": "^3.0.1",
-    "vue-touch": "^2.0.0-beta.4",
-    "vuex": "^3.0.1",
-    "weixin-js-sdk": "^1.4.0-test"
-  },
-  "devDependencies": {
-    "autoprefixer": "^7.1.2",
-    "babel-core": "^6.22.1",
-    "babel-loader": "^7.1.1",
-    "babel-plugin-component": "^0.10.1",
-    "babel-plugin-syntax-dynamic-import": "^6.18.0",
-    "babel-plugin-transform-runtime": "^6.22.0",
-    "babel-preset-env": "^1.3.2",
-    "babel-preset-stage-2": "^6.22.0",
-    "babel-register": "^6.22.0",
-    "chalk": "^2.0.1",
-    "copy-webpack-plugin": "^4.0.1",
-    "css-loader": "^0.28.0",
-    "eventsource-polyfill": "^0.9.6",
-    "extract-text-webpack-plugin": "^3.0.0",
-    "file-loader": "^1.1.4",
-    "friendly-errors-webpack-plugin": "^1.6.1",
-    "html-webpack-plugin": "^2.30.1",
-    "node-notifier": "^5.1.2",
-    "node-sass": "^4.12.0",
-    "optimize-css-assets-webpack-plugin": "^3.2.0",
-    "ora": "^1.2.0",
-    "portfinder": "^1.0.13",
-    "postcss-import": "^11.0.0",
-    "postcss-loader": "^2.0.8",
-    "postcss-url": "^7.3.0",
-    "rimraf": "^2.6.0",
-    "sass-loader": "^6.0.6",
-    "semver": "^5.3.0",
-    "shelljs": "^0.7.6",
-    "url-loader": "^0.5.8",
-    "vue-loader": "^13.3.0",
-    "vue-style-loader": "^3.0.1",
-    "vue-template-compiler": "^2.5.2",
-    "webpack": "^3.6.0",
-    "webpack-bundle-analyzer": "^2.9.0",
-    "webpack-dev-server": "^2.9.1",
-    "webpack-merge": "^4.1.0"
-  },
-  "engines": {
-    "node": ">= 4.0.0",
-    "npm": ">= 3.0.0"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "not ie <= 8",
-    "iOS >= 7",
-    "Android > 4.4"
-  ]
-}

+ 0 - 163
src/App.vue

@@ -1,163 +0,0 @@
-<!--
- * @Author: your name
- * @Date: 2020-09-08 10:49:07
- * @LastEditTime: 2021-06-29 11:45:03
- * @LastEditors: your name
- * @Description: In User Settings Edit
- * @FilePath: \ydy_wap_front\src\App.vue
--->
-<template>
-  <div id="app" :class="theme">
-    <router-view :key="$route.fullpath" />
-    <div class="package-wrap" @touchmove.prevent v-if="showWrap">
-      <img @click.stop="closeWrap" :src="imgs" alt="" />
-    </div>
-
-    <div class="fans-mask" v-if="fansUrl">
-      <div class="fans-box">
-        <!-- <i class="close"></i> -->
-        <img  class="qrcode" alt="迁移新二维码" :src="fansUrl"/>
-        <p class="fans-tips">当前公众号已迁移</p>
-        <p class="fans-des">长按二维码扫描关注新公众号继续阅读</p>
-      </div>
-    </div>
-    <!-- <template v-if="isTargetChannel&&showIframe">
-      <iframe src='//wap.apyingcaisw.com/xingzuo'
-              width='1px'
-              height='1px'
-              style="visibility:hidden"></iframe>
-    </template> -->
-  </div>
-</template>
-
-<script>
-export default {
-  name: "app",
-  data() {
-    return {
-      theme: localStorage.getItem("theme") || "girl",
-      showRed: window.options.fission,
-      activity_imgs: window.options.channel_activities,
-      redImage: require("./assets/red_package.png"),
-      imgs: null,
-      showWrap: false,
-      // todayDate: new Date().toLocaleDateString(),
-      isTargetChannel: window.options.is_show_ad_frame,
-      showIframe: false,
-      fansUrl: window.options.channel_fans_guide_qrcode  //站点迁移新的公众号二维码
-    };
-  },
-  watch: {
-    $route(v) {
-      if (v.name === "BookCity") {
-        v.query.sex && (this.theme = v.query.sex);
-      }
-    }
-  },
-  created() {
-    let { site_gender } = window.options;
-    if (site_gender) {
-      // 关注用户 根据用户性别 首页展示不同的频道
-      this.theme = site_gender === "male" ? "boy" : "girl";
-    } else this.theme = "girl";
-    this.initWrap();
-  },
-  methods: {
-    closeWrap() {
-      if (window.options.fission) {
-        this.showWrap = false;
-        window.options.fission = 0;
-        setTimeout(() => {
-          this.initWrap();
-        }, 500);
-      } else {
-        this.showWrap = false;
-        window.options.channel_activities.shall_reward = 0;
-      }
-    },
-    initWrap() {
-      if (window.options.fission) {
-        // 红包弹窗弹出
-        this.showWrap = true;
-        this.imgs = this.redImage;
-      } else {
-        if (window.options.channel_activities.shall_reward) {
-          // 活动弹
-          this.showWrap = true;
-          this.imgs = this.activity_imgs.image;
-        }
-      }
-    }
-  }
-};
-</script>
-
-<style lang="scss" scoped>
-.package-wrap {
-  position: fixed;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 100%;
-  background: rgba($color: #000000, $alpha: 0.6);
-  z-index: 999;
-
-  img {
-    position: absolute;
-    width: 80%;
-    left: 50%;
-    top: 50%;
-    transform: translate(-50%, -50%);
-  }
-}
-
-.fans-mask {
-  position: fixed;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 100%;
-  background: rgba($color: #000000, $alpha: 0.6);
-  z-index: 1000;
-  .fans-box {
-    width: 6rem;
-    height: 6.3rem;
-    box-sizing: border-box;
-    padding: 0.3rem;
-    background: #fff;
-    position: absolute;
-    margin: auto;
-    top: 0;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    .qrcode{
-      width: 4rem;
-      height:4rem;
-      margin: .2rem auto 0;
-      display: block;
-    }
-    .close {
-      display: inline-block;
-      width: 0.5rem;
-      height: 0.5rem;
-      position: absolute;
-      top: 0.2rem;
-      right: 0.2rem;
-      background: url("../src/assets/closed.png") no-repeat;
-      background-size: cover;
-    }
-    .fans-tips {
-      font-size: 0.34rem;
-      font-weight: bold;
-      text-align: center;
-      margin-top: 0.2rem;
-    }
-    .fans-des {
-      font-size: .3rem;
-      color: #666;
-      margin-top: .2rem;
-    }
-  }
-}
-</style>

+ 0 - 54
src/analog-data/QA.json

@@ -1,54 +0,0 @@
-[
-  {
-    "Q": "充值问题",
-    "title": true
-  },
-  {
-    "Q": "1.1如何进行充值",
-    "A": "方式一:点击公众号菜单栏【用户中心】-【我要充值】;\n方式二:进入追书云书城首页,点击【个人中心】-【充值】\n目前充值仅限使用微信支付。",
-    "index":0
-  },
-  {
-    "Q": "1.2充值成功后书币未到账情况",
-    "A": "1.2.1确认充值是否成功,系统是否已经扣除了充值费用。\n1.2.2充值成功后书币到账可能有延迟情况,如1小时内仍未到帐请发送商户单号,客服将为您进行核实处理(复制或截图发送皆可)。\n商户单号获取路径:\n⑴进入微信的【钱包】,点击右上角四个点,然后点击【交易记录】\n⑵点开充值书币的记录,找到【商户单号】",
-    "index":1    
-  },
-  {
-    "Q": "收费问题",
-    "title": true
-  },
-  {
-    "Q": "2.1小说网站会重复收费吗?",
-    "A": "普通会员: 在某个公众号下阅读充值,该公众号下正常订阅(不包括年费VIP会员)的章节再次阅读是不会重复扣费的,\n年费VIP会员:在某个公众号下阅读充值,该公众号下年费VIP会员到期之后(即自订购之日起365天后),再次阅读是需要订阅扣费的。\n如还有其他关于资费问题,请直接留言,客服收到后会及时回复。",
-    "index":2
-  },
-  {
-    "Q": "2.2如何无限畅读全站小说?",
-    "A": "追书云为大家提供了年费VIP会员服务,为了保障小说爱好者畅通阅读和节省钱包,建议大家选择充值年费VIP会员,就可以免费阅读平台所有小说。",
-    "index":3
-  },
-  {
-    "Q": "其他问题",
-    "title": true
-  },
-  {
-    "Q": "3.1如何领取免费书币?",
-    "A": "每日首次阅读,即可免费获取50书币。",
-    "index":4
-  },
-  {
-    "Q": "3.2如何查找您的阅读入口?",
-    "A": "方式一:翻阅自己聊天记录查找自己关注的公众号\n方式二:点击微信的【通信录】-【公众号】查找",
-    "index":5
-  },
-  {
-    "Q": "3.3如何继续阅读之前的章节?",
-    "A": "方式一:点击公众号菜单栏【继续阅读】\n方式二:点击公众号菜单栏【用户中心】-【阅读记录】\n方式三:进入追书云书城首页,点击【书架】-【最近阅读】",
-    "index":6
-  },
-  {
-    "Q": "3.4退款声明",
-    "A": "书币是属于追书云小说平台专用的虚拟货币,用于用户支付订阅等服务,一经充值不可退款。",
-    "index":7
-  }
-]

+ 0 - 49
src/api/axios.js

@@ -1,49 +0,0 @@
-import axios from "axios";
-import router from "../router/index.js";
-import { Undertheshelf } from "../view/namespace.js";
-import { undefinedCollect } from './index.js'
-
-// var instance = axios.create(
-//   process.env.NODE_ENV === "development"
-//     ? {
-//         baseURL: "http://site1.aizhuishu.com/api",
-//         withCredentials: true
-//       }
-//     : {
-//         baseURL: "/api"
-//       }
-// );
-
-var instance = axios.create({
-  baseURL: "/api"
-});
-
-instance.interceptors.response.use(function (res) {
-  if (res.data.code === 0) {
-    return res.data.data;
-  }
-  if (res.data.code === 10018) {
-    router.replace(Undertheshelf.route);
-  } else {
-    return Promise.reject(res);
-  }
-});
-instance.interceptors.request.use(function (config) {
-  if (config.method === 'get' && config.url && config.url.indexOf('undefined') !== -1) {
-    undefinedCollect({
-      name: 'undefined',
-      content: JSON.stringify({
-        current_page: location.href,
-        next_page: window.nextPage,
-        prev_page: window.prevPage,
-        api: config.url,
-        user_id: window.options && window.options.uid,
-        channel_id: window.options && window.options.distribution_channel_id,
-      })
-    })
-  }
-
-  return config;
-});
-
-export default instance;

+ 0 - 606
src/api/index.js

@@ -1,606 +0,0 @@
-/*
- * @Author: ZhengXiaowei
- * @Date: 2019-07-24 17:21:47
- * @LastEditors: Please set LastEditors
- * @LastEditTime: 2021-06-28 15:51:55
- * @Description: file content
- */
-import Axios from "axios";
-import axios from "./axios";
-import {
-  bookListFormat,
-  bookFormat,
-  urlFormat,
-  contentFormat,
-  recordFormat,
-  shelfFormat
-} from "./util";
-import cache from "../util/cache.js";
-import { Subscribe, Pay } from "../view/namespace.js";
-import bus from "../util/bus";
-
-//获取首页(书城)内容
-let index = {};
-export function getIndex(type) {
-  //male or female
-  if (type === "boy") type = "male";
-  else if (type === "girl") type = "female";
-  else type = "male";
-  if (index[type]) return Promise.resolve(index[type]);
-  return axios(`/books/${type}/index`).then(r => {
-    r.forEach(list => {
-      bookListFormat(list.books);
-    });
-    index[type] = r;
-    return r;
-  });
-}
-/**
-获取书库书籍
-关键字 key	String 
-分类id category_id	Number 
-页码 page String	
-完结 status 完结:1 | 连载:0	
- */
-
-export function getBook(params) {
-  getBook.source = Axios.CancelToken.source();
-  return axios("/books/library", { cancelToken: getBook.source.token, params })
-    .then(r => {
-      bookListFormat(r.list);
-      return r;
-    })
-    .catch(function(thrown) {
-      if (!Axios.isCancel(thrown)) {
-        return Promise.reject(thrown);
-      }
-    });
-}
-
-//获取分类
-let category = null;
-export function getCategory() {
-  if (category) return Promise.resolve(category);
-  return (category = axios("/books/getCategory").then(r => {
-    r.unshift({
-      name: "不限",
-      id: 0
-    });
-    return r;
-  }));
-}
-// 获取详情
-// 创建一个书籍详情的缓存池
-let detail = new cache({
-  meta: {
-    name: "书籍详情"
-  },
-  limit: 40
-});
-
-//更新书籍信息中的是否在书架上(is_on_user_shelf)
-function detailUpdate(id, status) {
-  let book = detail.find(id);
-  if (book.complete) {
-    book.result.data.is_on_user_shelf = status;
-  }
-}
-export function getDetail(id, s = "",pos='') {
-  return detail
-    .getAsync(id, function() {
-      return axios("/book/" + id + "?s=" + s + '&pos=' + pos).then(r => {
-        return {
-          id,
-          data: r
-        };
-      });
-    })
-    .then(r => {
-      return bookFormat(r.result.data);
-    });
-}
-
-// 获取目录
-// 创建一个目录的缓存池
-let catalog = new cache({
-  meta: {
-    name: "目录"
-  },
-  limit: 20
-});
-export function getCatalog(id, page = 1, s = "") {
-  return catalog
-    .getAsync(id + "+" + page, function() {
-      return axios(`/books/${id}/catalog`, {
-        params: { page_size: 100, page, s }
-      }).then(r => {
-        return {
-          id: id + "+" + page,
-          data: r.list,
-          meta: r.meta
-        };
-      });
-    })
-    .then(r => {
-      return r.result;
-    });
-}
-
-// 获取同款推荐
-// 创建一个同款推荐的缓存池
-let similar = new cache({
-  meta: {
-    name: "同款推荐"
-  },
-  limit: 20
-});
-
-export function getSimilar(bid, category_id) {
-  return similar
-    .getAsync(bid, function() {
-      return axios(`/books/similar`, { params: { category_id, bid } }).then(
-        r => {
-          let data = bookListFormat(r);
-          detail.push(
-            data.map(v => {
-              return {
-                id: v.book_id,
-                data: v
-              };
-            })
-          );
-          return {
-            id: bid,
-            data: data
-          };
-        }
-      );
-    })
-    .then(r => {
-      return r.result.data;
-    });
-}
-
-//获取用户信息
-let userinfo = null;
-export function getUserInfo() {
-  // if (userinfo) return Promise.resolve(userinfo)
-  return axios("/userinfo").then(r => {
-    return r;
-  });
-}
-
-//获取书架
-let shelf = null;
-export function getShelf() {
-  if (shelf) return Promise.resolve(shelf);
-  return axios("/userShelfBooks").then(r => {
-    r = shelfFormat(r);
-    return r;
-  });
-}
-
-//删除书架
-export function delShelf(bid) {
-  return axios("/userShelfBooks/delete?bid=" + bid).then(r => {
-    detailUpdate(bid, 0);
-    return r;
-  });
-}
-
-//添加书架
-export function addShelf(bid) {
-  return axios.post("/userShelfBooks", { bid }).then(r => {
-    shelf = null;
-    detailUpdate(bid, 1);
-    return r;
-  });
-}
-
-//获取阅读记录
-let readerRecord = null;
-
-export function getReadrecord() {
-  if (readerRecord) return Promise.resolve(readerRecord);
-  return axios("/readrecord").then(r => {
-    return r.map(book => {
-      book.book_id = book.bid;
-      return book;
-    });
-  });
-}
-
-// 添加阅读记录
-export function setReadrecord(params) {
-  return axios.post("/readrecord", params);
-}
-//删除阅读记录
-export function delReadrecord(bid) {
-  return axios.post("/readrecord/delete", { bid }).then(r => {
-    return r;
-  });
-}
-
-// 签到记录
-export function getSignRecord(page = 1) {
-  return axios(`/user/sign_record?page=${page}`);
-}
-
-//获取章节内容
-// 创建一个同款推荐的缓存池
-
-/*
-错误处理
-10012       未关注(默认链接)
-10014       全本订阅余额不足(rmb)
-10015       章订余额不足(充值)
-10016       购买章节(书币)
-10017       购买图书(书币)
-10019       全本订阅余额不足(充值)
-10023       未关注 (跳转渠道接诶)
------ 以上是弹窗  -------
-10020       全本订阅余额不足,直接进入充值页
-10021       章节订阅余额不足,直接进入充值页
-10022       进入版权站
-*/
-let content = new cache({
-  meta: {
-    name: "章节内容"
-  },
-  limit: 20
-});
-
-export function getContent(bid, cid, adStatus = 0, from, code = "") {
-  console.log(from);
-  let url = options.adTargetId
-    ? `/books/${bid}/chapters/${cid}?ad_status=${adStatus}&page_from=${from}&code=${encodeURIComponent(
-        code
-      )}`
-    : `/books/${bid}/chapters/${cid}?page_from=${from}&code=${encodeURIComponent(
-        code
-      )}`;
-  return content
-    .getAsync(bid + "+" + cid, function() {
-      return axios(url).then(r => {
-        return {
-          id: bid + "+" + cid,
-          data: contentFormat(r)
-        };
-      });
-    })
-    .then(r => {
-      if (!r.fresh) {
-        setReadrecord({ bid, cid, chapter_name: r.result.data.chapter_name });
-      }
-      // TODO: 暂时这么做
-      // let cacheTap = localStorage.getItem(cid)
-      // if (cacheTap) {
-      //   r.result.data.chapter_comment = cacheTap
-      // }
-      return r.result.data;
-    });
-}
-
-//余额支付
-export function subscribeByBalance(bid, cid, remind) {
-  let params = remind ? { params: { remind: 1 } } : {};
-  return axios(`/books/${bid}/balance/chapterOrders/${cid}`, params).then(r => {
-    content.push({
-      id: bid + "+" + cid,
-      data: contentFormat(r)
-    });
-    return r;
-  });
-}
-
-//RMB支付
-export function subscribeByRMB(params) {
-  const a = document.createElement("a");
-  const redirect = {
-    host: location.origin,
-    pathname: "/reader",
-    query: {
-      bid: params.book_id,
-      cid: params.chapter_id
-    }
-  };
-  const href = {
-    host: window.options.pay_url,
-    query: {
-      product_id: params.product_id,
-      uid: window.options.uid,
-      distribution_channel_id: window.options.distribution_channel_id,
-      send_order_id: window.options.send_order_id,
-      pay_redirect_url: encodeURIComponent(urlFormat(redirect))
-    }
-  };
-  a.href = urlFormat(href);
-  a.click();
-}
-
-// 排行帮
-//type	Int (点击帮:1|字数帮:2|新书榜:3)
-//time	Int (周:1|月:2|总:3)
-let rank = {};
-export function getRank(type = 1, time = 1) {
-  let id = type + "+" + time;
-  if (rank[id]) return Promise.resolve(rank);
-  return axios("/books/rank", {
-    params: {
-      type,
-      time
-    }
-  }).then(r => {
-    bookListFormat(r.male);
-    bookListFormat(r.female);
-    rank[id] = r;
-    return rank;
-  });
-}
-
-//充值产品列表
-let product = null;
-export function getProductList(bid) {
-  if (product) return product;
-  else return axios("/order/chargeList", { params: { bid } });
-}
-
-//充值
-export function recharge({ product_id, bid, cid, use_coupon }) {
-  const a = document.createElement("a");
-  const redirect =
-    bid && cid
-      ? {
-          host: location.origin,
-          pathname: "/reader",
-          query: {
-            bid,
-            cid
-          }
-        }
-      : {
-          host: location.origin,
-          pathname: "/recent"
-        };
-  const href = {
-    host: window.options.pay_url,
-    query: {
-      product_id: product_id,
-      uid: window.options.uid,
-      use_coupon,
-      distribution_channel_id: window.options.distribution_channel_id,
-      send_order_id: window.options.send_order_id,
-      from: window.options.from,
-      bid,
-      cid,
-      pay_redirect_url: encodeURIComponent(urlFormat(redirect)),
-      crm: window.options.crm || ""
-    }
-  };
-  a.href = urlFormat(href);
-  a.click();
-}
-
-//单本消费记录
-export function getRecordOrderByBook(page) {
-  return axios("/order/bookOrderList", { params: { page } });
-}
-
-//章节消费记录
-export function getRecordOrderByChapter(page) {
-  return axios("/order/chapterOrderList", { params: { page } });
-}
-
-//充值记录
-export function getRecordRecharge(page) {
-  return axios("/order/chargeRecordLists", { params: { page } }).then(r => {
-    recordFormat(r.list);
-    return r;
-  });
-}
-//赠送记录
-export function getRecordSend(page) {
-  return axios("/getGivenRocords", { params: { page } }).then(r => {
-    return r;
-  });
-}
-
-// 尾页推荐
-export function getReadOverRecommend(bid) {
-  return axios("/books/readOverRecommend", { params: { bid } }).then(r => {
-    bookListFormat(r.recommend_result);
-    return r;
-  });
-}
-
-// 获取弱关二维码
-export function getweakSubscribeQR() {
-  return axios("/subscribe/qrcode");
-}
-
-// 用户行为
-export function PostUserBehavior(data) {
-  return axios.post("/userBehavior", data);
-}
-
-// 错误捕获
-export function undefinedCollect(data) {
-  return axios.post("/error/undefinedCollect", data);
-}
-
-// 章节底部评价
-export function chapterComment(bid, chapter, tags) {
-  return axios.post("/chapter/comment", { bid, chapter, tags });
-}
-
-// 获取章节底部评价
-export function getChapterComment(bid, chapter) {
-  return axios("/chapter/getComment", { params: { bid, chapter } });
-}
-
-// 签到页面
-export function toSign() {
-  return axios("user/sign");
-}
-
-// 获取礼物列表
-export function getGiftList() {
-  return axios("/gift/getGiftsList");
-}
-
-// 送礼
-export function sendGift(data) {
-  return axios.post("/gift/sendGifts", data);
-}
-
-// 送礼记录
-export function getSendGiftRecord(params) {
-  return axios("/gift/getUserSendGiftsRecord", { params });
-}
-
-// 消费记录中的送礼记录
-export function getUserSendGiftRecord(page) {
-  return axios("/gift/getUserGiftsConsumeRecord", { params: { page } });
-}
-
-// 获取代付用户数据
-export function getSubstitutePay(product_id) {
-  return axios("/order/substitutePay", { params: { product_id } });
-}
-
-// 获取代付充值列表
-export function getSubstitutePayList(product_id, su) {
-  return axios("/order/substitutePayChargeList", {
-    params: { product_id, su }
-  });
-}
-
-// 代充
-export function substituteRecharge({ product_id, uid }) {
-  const a = document.createElement("a");
-  const href = {
-    host: window.options.pay_url,
-    query: {
-      product_id: product_id,
-      suid: window.options.uid,
-      uid: uid,
-      distribution_channel_id: window.options.distribution_channel_id,
-      send_order_id: window.options.send_order_id,
-      from: window.options.from
-    }
-  };
-  a.href = urlFormat(href);
-  a.click();
-}
-
-// 最近阅读轮播
-export function recentSlideList() {
-  return axios("/books/H5SmartRecommendBooks?pos=h5RecentReadLoop");
-}
-
-// 获取代付充值列表
-export function getbookFromWhere(bid, fromwhere) {
-  return axios("/bookFromWhere/" + bid, { params: { fromwhere } });
-}
-
-// 获取分享按钮是否显示
-export function getRecordShare(bid, cid) {
-  return axios("/user/recordShare", { params: { bid, cid } });
-}
-
-// 获取分享签名
-export function getWechatJsConfig(bid, cid, url) {
-  return axios("/chapter/getWechatJsConfig", { params: { bid, cid, url } });
-}
-
-// 广告点击情况
-export function recordAdClickStatus(bid, cid, type = "UNLOCK") {
-  return axios.post("/user/advisitstat", {
-    bid,
-    cid,
-    type
-  });
-}
-
-// 尾页推荐催更
-export function upgBookStatus(bid) {
-  return axios("/user/urgeUpdate", { params: { bid } });
-}
-
-// 获取举报内容
-export function getReportList() {
-  return axios("/complaints/getComplaintTags");
-}
-
-// 举报
-export function uploadReport(data) {
-  return axios.post("/complaints/add", data);
-}
-
-// 获取广告banner
-export function getReaderAdBanner() {
-  return axios("//banner.66kshu.com/b.gif");
-}
-
-// 发送验证码
-export function getPhoneCode(phone) {
-  return axios.post("/bindphone/sendcode", { phone });
-}
-
-// 绑定手机
-export function phoneBind(data) {
-  return axios.post("/bindphone/bind", data);
-}
-
-// 获取fakebook详情
-export function getBookDetail(id) {
-  return axios("/red_book/getBookDetail?id=" + id);
-}
-
-// 获取fakebook详情
-export function getChapterList(id) {
-  return axios("/red_book/getChapterList?id=" + id);
-}
-
-// 查询包月订单是否成功
-export function isMonthOrderSuc() {
-  return axios("/monthorder/issuccess");
-}
-
-// 配置wx分享
-export function getWxConfig(url) {
-  return axios.post("/weixin/jsSdkConfig", { url });
-}
-
-// 获取要展示的banner数组
-export function getMergeBanner() {
-  let { crm_public } = window.options;
-  if (crm_public) return axios(crm_public.url);
-  else return Promise.reject("");
-}
-
-// 个人中心客服
-export function getCustomQRCode(distribution_channel_id, openid) {
-  return axios("/custom_qrcode", {
-    params: { distribution_channel_id, openid }
-  });
-}
-
-// 限免书单
-export function getBookLimitFree() {
-  return axios("/books/freeBook");
-}
-
-// 新版排行列表
-export function getRankListV2() {
-  return axios("/books/rankList");
-}
-//用户优惠券列表
-export function getUserCoupon() {
-  return axios("/user/userCoupon");
-}
-
-//支付可用优惠券
-export function getOrderCoupon() {
-  return axios("/order/effectiveCoupon");
-}

+ 0 - 72
src/api/util/index.js

@@ -1,72 +0,0 @@
-/*
-支付成功:39a4ff
-未支付:ff6060
-退款:32dc86
-失败:666666
-*/
-const label = {
-  PAID: "已支付",
-  UNPAID: "未支付",
-  FAIL: "失败",
-  REFUND: "退款"
-};
-
-const color = {
-  PAID: "#39a4ff",
-  UNPAID: "#ff6060",
-  FAIL: "#666666",
-  REFUND: "#32dc86"
-};
-
-export function recordFormat(list) {
-  return list.map(item => {
-    item.color = color[item.status];
-    item.label = label[item.status];
-    return item;
-  });
-}
-
-export function bookListFormat(list) {
-  return list.map(bookFormat);
-}
-export function bookFormat(book) {
-  book.name = book.book_name;
-  book.cover = book.cover_url;
-  book.intro = book.book_summary;
-  book.author = book.book_author;
-  return book;
-}
-
-export function urlFormat(urlObj) {
-  if (!urlObj) return null;
-  let url = "";
-  if (urlObj.host) url += urlObj.host;
-  if (urlObj.pathname) url += urlObj.pathname;
-  if (urlObj.query) {
-    url += "?";
-    for (let i in urlObj.query) {
-      url += i;
-      if (urlObj.query[i]) url += "=" + urlObj.query[i];
-      url += "&";
-    }
-    return (url = url.slice(0, -1));
-  }
-  return encodeURI(url);
-}
-
-export function contentFormat(r) {
-  r.name = r.chapter_name;
-  r.content = r.chapter_content;
-  r.sequence = r.chapter_sequence;
-  delete r.chapter_sequence;
-  delete r.chapter_content;
-  delete r.chapter_content;
-  return r;
-}
-
-export function shelfFormat(r) {
-  return r.map(book => {
-    book.name = book.book_name;
-    return book;
-  });
-}

BIN
src/assets/1.png


BIN
src/assets/1234.jpg


BIN
src/assets/2.png


BIN
src/assets/3.png


BIN
src/assets/activity_banner.jpg


BIN
src/assets/alipay.png


BIN
src/assets/android_collect.png


BIN
src/assets/beij.jpg


BIN
src/assets/bg.jpg


BIN
src/assets/big-red-he.png


BIN
src/assets/binding.png


BIN
src/assets/book/1.jpg


BIN
src/assets/book/10.jpg


BIN
src/assets/book/2.jpg


BIN
src/assets/book/3.jpg


BIN
src/assets/book/4.jpg


BIN
src/assets/book/5.jpg


BIN
src/assets/book/6.jpg


BIN
src/assets/book/7.jpg


BIN
src/assets/book/8.jpg


BIN
src/assets/book/9.jpg


BIN
src/assets/checkbox.png


BIN
src/assets/checkbox_checked.png


BIN
src/assets/close_icon.png


BIN
src/assets/closed.png


BIN
src/assets/coupon _pay.png


BIN
src/assets/coupon-entry.png


BIN
src/assets/coupon_bg1.png


BIN
src/assets/coupon_diabled.png


BIN
src/assets/coupon_expire.png


BIN
src/assets/cz.jpg


BIN
src/assets/declining.png


BIN
src/assets/default.png


BIN
src/assets/demo.png


BIN
src/assets/entry.png


BIN
src/assets/fansbanner.jpg


BIN
src/assets/free-read.jpg


BIN
src/assets/gift_default.png


BIN
src/assets/gold-bi.png


BIN
src/assets/huo.png


BIN
src/assets/icon_coupon.png


BIN
src/assets/icon_pay_coupon.png


BIN
src/assets/iphone_collect.png


BIN
src/assets/is_check.png


BIN
src/assets/jinri.png


BIN
src/assets/loading-1.png


BIN
src/assets/mi_wan_year.jpg


BIN
src/assets/mi_wan_year_check.jpg


BIN
src/assets/month_order.png


BIN
src/assets/month_order_1.png


BIN
src/assets/month_order_check.png


BIN
src/assets/my_coupon.png


BIN
src/assets/no-enough.png


BIN
src/assets/no-gift.png


BIN
src/assets/no_coupon.png


BIN
src/assets/notfind.jpg


BIN
src/assets/open.png


BIN
src/assets/price.png


BIN
src/assets/push-more-suc.png


BIN
src/assets/push-more.png


BIN
src/assets/qr-back.png


BIN
src/assets/qr-banner.jpg


BIN
src/assets/qr-bg.jpg


BIN
src/assets/qr-title.jpg


BIN
src/assets/rank_1.png


BIN
src/assets/rank_2.png


BIN
src/assets/rank_3.png


BIN
src/assets/reader_bg.png


BIN
src/assets/recent-free__entry.png


BIN
src/assets/red-he.png


BIN
src/assets/red_package.png


BIN
src/assets/report-success.png


BIN
src/assets/share-bg.jpg


BIN
src/assets/share_entry.png


+ 0 - 0
src/assets/shoc.png


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov