Browse Source

2024.07.29 初始化项目

zweiqin 8 months ago
commit
a906104935
100 changed files with 3931 additions and 0 deletions
  1. 17 0
      .babelrc
  2. 14 0
      .editorconfig
  3. 3 0
      .eslintignore
  4. 66 0
      .eslintrc.js
  5. 24 0
      .gitignore
  6. 10 0
      .postcssrc.js
  7. 3 0
      .prettierrc.json
  8. 36 0
      README.en.md
  9. 37 0
      README.md
  10. 67 0
      build/build.js
  11. 64 0
      build/check-versions.js
  12. BIN
      build/logo.png
  13. 117 0
      build/utils.js
  14. 5 0
      build/vue-loader.conf.js
  15. 107 0
      build/webpack.base.conf.js
  16. 98 0
      build/webpack.dev.conf.js
  17. 188 0
      build/webpack.prod.conf.js
  18. 5 0
      config/demo.env.js
  19. 19 0
      config/dev.env.js
  20. 103 0
      config/index.js
  21. 20 0
      config/prod.env.js
  22. 7 0
      config/test.env.js
  23. BIN
      dist.rar
  24. BIN
      favicon.ico
  25. 18 0
      index.html
  26. 111 0
      package.json
  27. 19 0
      src/App.vue
  28. 67 0
      src/api/RelationshipChainManagement/MarketingStores.js
  29. 75 0
      src/api/RelationshipChainManagement/StoreMember.js
  30. 28 0
      src/api/StoreManagement/MemberManagement.js
  31. 57 0
      src/api/applicationManagement/advancedSalesmanApplication.js
  32. 48 0
      src/api/applicationManagement/history.js
  33. 57 0
      src/api/applicationManagement/salesmanApplication.js
  34. 29 0
      src/api/applicationManagement/shopUpCreate.js
  35. 73 0
      src/api/applicationManagement/uphistory.js
  36. 42 0
      src/api/articleManagement/article.js
  37. 41 0
      src/api/business/ad.js
  38. 50 0
      src/api/business/admin.js
  39. 42 0
      src/api/business/article.js
  40. 75 0
      src/api/business/brand.js
  41. 17 0
      src/api/business/brokerage.js
  42. 84 0
      src/api/business/category.js
  43. 34 0
      src/api/business/comment.js
  44. 49 0
      src/api/business/coupon.js
  45. 17 0
      src/api/business/dashboard.js
  46. 85 0
      src/api/business/goods.js
  47. 54 0
      src/api/business/goodsStyle.js
  48. 56 0
      src/api/business/goodsTag.js
  49. 41 0
      src/api/business/groupon.js
  50. 74 0
      src/api/business/issue.js
  51. 54 0
      src/api/business/keyword.js
  52. 29 0
      src/api/business/login.js
  53. 52 0
      src/api/business/order.js
  54. 9 0
      src/api/business/profile.js
  55. 8 0
      src/api/business/qiniu.js
  56. 25 0
      src/api/business/recharge.js
  57. 17 0
      src/api/business/rechargeRecord.js
  58. 17 0
      src/api/business/region.js
  59. 65 0
      src/api/business/role.js
  60. 25 0
      src/api/business/stat.js
  61. 44 0
      src/api/business/storage.js
  62. 41 0
      src/api/business/topic.js
  63. 74 0
      src/api/business/user.js
  64. 66 0
      src/api/business/vipUser.js
  65. 64 0
      src/api/businessManagement/informationSentry.js
  66. 14 0
      src/api/businessManagement/marketingPortrait.js
  67. 64 0
      src/api/businessManagement/scriptSetting.js
  68. 41 0
      src/api/communityManagement/community.js
  69. 48 0
      src/api/configurationTable/brokerageInfo.js
  70. 20 0
      src/api/configurationTable/coupon.js
  71. 38 0
      src/api/configurationTable/storeLevel.js
  72. 56 0
      src/api/configurationTable/storeStyle.js
  73. 64 0
      src/api/configurationTable/storeType.js
  74. 48 0
      src/api/configurationTable/upgradeMoney.js
  75. 48 0
      src/api/configurationTable/userLevel.js
  76. 21 0
      src/api/couponManagement/give.js
  77. 21 0
      src/api/couponManagement/order.js
  78. 11 0
      src/api/couponManagement/possess.js
  79. 27 0
      src/api/dashboardBig/dashboardBig.js
  80. 9 0
      src/api/dataStatisticsDashboard/dataStatisticsDashboard.js
  81. 40 0
      src/api/login.js
  82. 1 0
      src/api/marketing/salesManagement.js
  83. 55 0
      src/api/marketing/salesmanManagement.js
  84. 34 0
      src/api/materialManagement/priceIndices.js
  85. 34 0
      src/api/materialManagement/priceIndicesInfo.js
  86. 34 0
      src/api/materialManagement/tradeLeads.js
  87. 24 0
      src/api/membershipChain/partnerApply.js
  88. 41 0
      src/api/painting/painting.js
  89. 41 0
      src/api/painting/picture.js
  90. 57 0
      src/api/system/SalesmanManagement.js
  91. 35 0
      src/api/system/logininfor.js
  92. 18 0
      src/api/system/online.js
  93. 35 0
      src/api/system/operlog.js
  94. 9 0
      src/api/system/server.js
  95. BIN
      src/assets/401_images/401.gif
  96. BIN
      src/assets/404_images/404.png
  97. BIN
      src/assets/404_images/404_cloud.png
  98. BIN
      src/assets/bg_q.png
  99. BIN
      src/assets/bodybg.jpg
  100. BIN
      src/assets/boxbg.jpg

+ 17 - 0
.babelrc

@@ -0,0 +1,17 @@
+{
+  "presets": [
+    ["env", {
+      "modules": false,
+      "targets": {
+        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+      }
+    }],
+    "stage-2"
+  ],
+  "plugins": ["transform-vue-jsx", "transform-runtime"],
+  "env": {
+    "development":{
+      "plugins": ["dynamic-import-node"]
+    }
+  }
+}

+ 14 - 0
.editorconfig

@@ -0,0 +1,14 @@
+# http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 3 - 0
.eslintignore

@@ -0,0 +1,3 @@
+build/*.js
+config/*.js
+src/assets

+ 66 - 0
.eslintrc.js

@@ -0,0 +1,66 @@
+module.exports = {
+  root: true,
+  parserOptions: {
+    parser: '@babel/eslint-parser'
+  },
+  env: {
+    browser: true,
+    node: true,
+    es6: true
+  },
+  extends: [
+    'plugin:vue/strongly-recommended',
+    '@vue/standard'
+  ],
+  rules: {
+    'no-console': 'off',
+    'space-before-function-paren': 0,
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+    'generator-star-spacing': 'off',
+    'no-mixed-operators': 0,
+    'vue/max-attributes-per-line': [
+      2,
+      {
+        'singleline': 5,
+        'multiline': {
+          'max': 1,
+          'allowFirstLine': false
+        }
+      }
+    ],
+    'vue/require-prop-types': false,
+    'vue/require-default-prop': false,
+    'vue/attribute-hyphenation': 0,
+    'vue/html-self-closing': 0,
+    'vue/component-name-in-template-casing': 0,
+    'vue/html-closing-bracket-spacing': 0,
+    'vue/singleline-html-element-content-newline': 0,
+    'vue/no-unused-components': 0,
+    'vue/multiline-html-element-content-newline': 0,
+    'vue/no-use-v-if-with-v-for': 0,
+    'vue/html-closing-bracket-newline': 0,
+    'vue/no-parsing-error': 0,
+    'no-tabs': 0,
+    'quotes': [
+      2,
+      'single',
+      {
+        'avoidEscape': true,
+        'allowTemplateLiterals': true
+      }
+    ],
+    'no-delete-var': 2,
+    'prefer-const': [
+      2,
+      {
+        'ignoreReadBeforeAssign': false
+      }
+    ],
+    'semi': 0,
+    'template-curly-spacing': 'off',
+    'camelcase': 'off',
+    'no-new': 'off',
+    // 允许多行下,逗号结尾[arrays, objects, imports, imports, functions]
+    'comma-dangle': ['error', 'only-multiline'],
+  },
+};

+ 24 - 0
.gitignore

@@ -0,0 +1,24 @@
+.DS_Store
+node_modules
+package-lock.json
+# local env files
+.env.local
+.env.*.local
+dist
+
+# Log files and lock files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+*.lock
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+/dist
+coverage

+ 10 - 0
.postcssrc.js

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

+ 3 - 0
.prettierrc.json

@@ -0,0 +1,3 @@
+{
+  "singleQuote":true
+}

+ 36 - 0
README.en.md

@@ -0,0 +1,36 @@
+# tf-admin-ui
+
+#### Description
+685316341354634364634631
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### Instructions
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### Contribution
+
+1.  Fork the repository
+2.  Create Feat_xxx branch
+3.  Commit your code
+4.  Create Pull Request
+
+
+#### Gitee Feature
+
+1.  You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2.  Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3.  Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4.  The most valuable open source project [GVP](https://gitee.com/gvp)
+5.  The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6.  The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

+ 37 - 0
README.md

@@ -0,0 +1,37 @@
+# tf-admin-ui
+
+#### 介绍
+685316341354634364634631
+
+#### 软件架构
+软件架构说明
+
+
+#### 安装教程
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### 使用说明
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### 参与贡献
+
+1.  Fork 本仓库
+2.  新建 Feat_xxx 分支
+3.  提交代码
+4.  新建 Pull Request
+
+
+#### 特技
+
+1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
+2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
+3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
+4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
+5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
+6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

+ 67 - 0
build/build.js

@@ -0,0 +1,67 @@
+'use strict'
+require('./check-versions')()
+
+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')
+var connect = require('connect')
+var serveStatic = require('serve-static')
+
+const spinner = ora(
+  'building for ' + process.env.env_config + ' environment...'
+)
+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,
+        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"
+      )
+    )
+
+    if (process.env.npm_config_preview) {
+      const port = 9526
+      const host = 'http://localhost:' + port
+      const basePath = config.build.assetsPublicPath
+      const app = connect()
+
+      app.use(
+        basePath,
+        serveStatic('./dist', {
+          index: ['index.html', './']
+        })
+      )
+
+      app.listen(port, function() {
+        console.log(
+          chalk.green(`> Listening at  http://localhost:${port}${basePath}`)
+        )
+      })
+    }
+  })
+})

+ 64 - 0
build/check-versions.js

@@ -0,0 +1,64 @@
+'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


+ 117 - 0
build/utils.js

@@ -0,0 +1,117 @@
+'use strict'
+const path = require('path')
+const config = require('../config')
+const MiniCssExtractPlugin = require('mini-css-extract-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 = []
+
+    // Extract CSS when that option is specified
+    // (which is the case during production build)
+    if (options.extract) {
+    	loaders.push({
+            loader: MiniCssExtractPlugin.loader,
+            options: {publicPath:'../../'}
+        })
+      //loaders.push(MiniCssExtractPlugin.loader)
+      /*return ExtractTextPlugin.extract({
+        use: loaders,
+        publicPath: '../../', //注意: 此处根据路径, 自动更改
+        fallback: 'vue-style-loader'
+      })*/
+    } else {
+      loaders.push('vue-style-loader')
+    }
+
+    loaders.push(cssLoader)
+
+    if (options.usePostCSS) {
+      loaders.push(postcssLoader)
+    }
+
+    if (loader) {
+      loaders.push({
+        loader: loader + '-loader',
+        options: Object.assign({}, loaderOptions, {
+          sourceMap: options.sourceMap
+        })
+      })
+    }
+
+    return 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')
+    })
+  }
+}

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

@@ -0,0 +1,5 @@
+'use strict'
+
+module.exports = {
+  //You can set the vue-loader configuration by yourself.
+}

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

@@ -0,0 +1,107 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const config = require('../config')
+const { VueLoaderPlugin } = require('vue-loader')
+const vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const createLintingRule = () => ({
+  test: /\.(js|vue)$/,
+  loader: 'eslint-loader',
+  enforce: 'pre',
+  include: [resolve('src'), resolve('test')],
+  options: {
+    formatter: require('eslint-friendly-formatter'),
+    emitWarning: !config.dev.showEslintErrorsInOverlay
+  }
+})
+
+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: {
+      '@': resolve('src')
+    }
+  },
+  module: {
+    rules: [
+      // ...(config.dev.useEslint ? [createLintingRule()] : []),
+      {
+        test: /\.vue$/,
+        loader: 'vue-loader',
+        options: vueLoaderConfig
+      },
+      {
+        test: /\.js$/,
+        loader: 'babel-loader?cacheDirectory',
+        include: [
+          resolve('src'),
+          resolve('test'),
+          resolve('node_modules/webpack-dev-server/client')
+        ]
+      },
+      {
+        test: /\.svg$/,
+        loader: 'svg-sprite-loader',
+        include: [resolve('src/icons')],
+        options: {
+          symbolId: 'icon-[name]'
+        }
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        loader: 'url-loader',
+        exclude: [resolve('src/icons')],
+        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]')
+        }
+      }
+    ]
+  },
+  plugins: [new VueLoaderPlugin()],
+  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'
+  }
+}

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

@@ -0,0 +1,98 @@
+'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 HtmlWebpackPlugin = require('html-webpack-plugin')
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+const portfinder = require('portfinder')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const HOST = process.env.HOST
+const PORT = process.env.PORT && Number(process.env.PORT)
+
+const devWebpackConfig = merge(baseWebpackConfig, {
+  mode: 'development',
+  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: true,
+    hot: true,
+    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
+    }
+  },
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': require('../config/dev.env')
+    }),
+    new webpack.HotModuleReplacementPlugin(),
+    // https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: 'index.html',
+      inject: true,
+      favicon: resolve('favicon.ico'),
+      title: 'vue-element-admin',
+      templateParameters: {
+        BASE_URL: config.dev.assetsPublicPath + config.dev.assetsSubDirectory,
+      },
+    }),
+  ]
+})
+
+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)
+    }
+  })
+})

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

@@ -0,0 +1,188 @@
+'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 ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const env = require('../config/' + process.env.env_config + '.env')
+
+// For NamedChunksPlugin
+const seen = new Set()
+const nameLength = 4
+
+const webpackConfig = merge(baseWebpackConfig, {
+  mode: 'production',
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true,
+      usePostCSS: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
+  output: {
+    path: config.build.assetsRoot,
+    filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
+    chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
+  },
+  plugins: [
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
+    new webpack.DefinePlugin({
+      'process.env': env
+    }),
+    // extract css into its own file
+    new MiniCssExtractPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash:8].css'),
+      chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
+    }),
+    // 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.html',
+      inject: true,
+      favicon: resolve('favicon.ico'),
+      title: 'vue-element-admin',
+      templateParameters: {
+        BASE_URL: config.build.assetsPublicPath + config.build.assetsSubDirectory,
+      },
+      minify: {
+        removeComments: true,
+        collapseWhitespace: true,
+        removeAttributeQuotes: true
+        // more options:
+        // https://github.com/kangax/html-minifier#options-quick-reference
+      }
+      // default sort mode uses toposort which cannot handle cyclic deps
+      // in certain cases, and in webpack 4, chunk order in HTML doesn't
+      // matter anyway
+    }),
+    // new ScriptExtHtmlWebpackPlugin({
+    //   //`runtime` must same as runtimeChunk name. default is `runtime`
+    //   inline: /runtime\..*\.js$/
+    // }),
+    // keep chunk.id stable when chunk has no name
+    new webpack.NamedChunksPlugin(chunk => {
+      if (chunk.name) {
+        return chunk.name
+      }
+      const modules = Array.from(chunk.modulesIterable)
+      if (modules.length > 1) {
+        const hash = require('hash-sum')
+        const joinedHash = hash(modules.map(m => m.id).join('_'))
+        let len = nameLength
+        while (seen.has(joinedHash.substr(0, len))) len++
+        seen.add(joinedHash.substr(0, len))
+        return `chunk-${joinedHash.substr(0, len)}`
+      } else {
+        return modules[0].id
+      }
+    }),
+    // keep module.id stable when vender modules does not change
+    new webpack.HashedModuleIdsPlugin(),
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ],
+  optimization: {
+    splitChunks: {
+      chunks: 'all',
+      cacheGroups: {
+        libs: {
+          name: 'chunk-libs',
+          test: /[\\/]node_modules[\\/]/,
+          priority: 10,
+          chunks: 'initial' // 只打包初始时依赖的第三方
+        },
+        elementUI: {
+          name: 'chunk-elementUI', // 单独将 elementUI 拆包
+          priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
+          test: /[\\/]node_modules[\\/]element-ui[\\/]/
+        },
+        commons: {
+          name: 'chunk-commons',
+          test: resolve('src/components'), // 可自定义拓展你的规则
+          minChunks: 3, // 最小公用次数
+          priority: 5,
+          reuseExistingChunk: true
+        }
+      }
+    },
+    runtimeChunk: 'single',
+    minimizer: [
+      new UglifyJsPlugin({
+        uglifyOptions: {
+          mangle: {
+            safari10: true
+          }
+        },
+        sourceMap: config.build.productionSourceMap,
+        cache: true,
+        parallel: true
+      }),
+      // Compress extracted CSS. We are using this plugin so that possible
+      // duplicated CSS from different components can be deduped.
+      new OptimizeCSSAssetsPlugin()
+    ]
+  }
+})
+
+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.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
+    .BundleAnalyzerPlugin
+
+  if (config.build.bundleAnalyzerReport) {
+    webpackConfig.plugins.push(
+      new BundleAnalyzerPlugin({
+        analyzerPort: 8080,
+        generateStatsFile: false
+      })
+    )
+  }
+
+  if (config.build.generateAnalyzerReport) {
+    webpackConfig.plugins.push(
+      new BundleAnalyzerPlugin({
+        analyzerMode: 'static',
+        reportFilename: 'bundle-report.html',
+        openAnalyzer: false
+      })
+    )
+  }
+}
+
+module.exports = webpackConfig

+ 5 - 0
config/demo.env.js

@@ -0,0 +1,5 @@
+module.exports = {
+	NODE_ENV: '"production"',
+  ENV_CONFIG: '"dep"',
+  BASE_API: '"http://localhost:8083/demo/admin"'
+}

+ 19 - 0
config/dev.env.js

@@ -0,0 +1,19 @@
+module.exports = {
+  NODE_ENV: '"development"',
+  ENV_CONFIG: '"dev"',
+  //团蜂
+  // BASE_API: '"https://www.tuanfengkeji.cn:9527/dts-admin-api/admin"',
+  // BASE_SHOWAPI: '"https://www.tuanfengkeji.cn/tfshop"'
+
+  // 团蜂测试
+  BASE_API: '"https://www.tuanfengkeji.cn:8098/dts-admin-api/admin"',
+  BASE_SHOWAPI: '"https://bus.deyisoft.cn:8890/tfshop"'
+  
+  //巨峰
+  // BASE_API: '"https://www.tuanfengkeji.cn:9527/jf-admin-api/admin"',
+  // BASE_SHOWAPI:'"https://www.tuanfengkeji.cn/jfshop"'
+
+  //巨峰测试
+  // BASE_API: '"https://bus.deyisoft.cn:11112/dts-admin-api/admin"',
+  // BASE_SHOWAPI: '"https://bus.deyisoft.cn:8890/jfshop"'
+}

+ 103 - 0
config/index.js

@@ -0,0 +1,103 @@
+'use strict'
+// Template version: 1.2.6
+// see http://vuejs-templates.github.io/webpack for documentation.
+
+const path = require('path')
+function resolve(dir) {
+  return path.join(__dirname, dir)
+}
+module.exports = {
+  chainWebpack: config => {
+    config.resolve.alias
+      .set('@', resolve('src')) // key,storage.set('@@', resolve('src/components'))
+  },
+  dev: {
+    // Paths
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+    proxyTable: {
+      '/dev': {
+        target: 'https://www.tuanfengkeji.cn',
+        changeOrigin: true,
+        pathRewrite: {
+          '^/dev': '',
+        },
+      }
+    },
+    https: false,
+    // Various Dev Server settings
+
+    // can be overwritten by process.env.HOST
+    // if you want dev by ip, please set host: '0.0.0.0'
+    host: 'localhost',
+    // host: '192.168.0.33',
+    port: 80, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+    autoOpenBrowser: true,
+    errorOverlay: true,
+    notifyOnErrors: false,
+    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+
+    // Use Eslint Loader?
+    // If true, your code will be linted during bundling and
+    // linting errors and warnings will be shown in the console.
+    useEslint: true,
+    // If true, eslint errors and warnings will also be shown in the error overlay
+    // in the browser.
+    showEslintErrorsInOverlay: false,
+
+    /**
+     * Source Maps
+     */
+
+    // https://webpack.js.org/configuration/devtool/#development
+    devtool: 'cheap-source-map',
+
+    // 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
+  },
+
+  build: {
+    // Template for index.html
+    index: path.resolve(__dirname, '../dist/index.html'),
+
+    // Paths
+    assetsRoot: path.resolve(__dirname, '../dist'),
+    assetsSubDirectory: 'static',
+
+    /**
+     * You can set by youself according to actual condition
+     * You will need to set this if you plan to deploy your site under a sub path,
+     * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
+     * then assetsPublicPath should be set to "/bar/".
+     * In most cases please use '/' !!!
+     */
+    assetsPublicPath: '/tfdata/',
+
+    /**
+     * Source Maps
+     */
+    productionSourceMap: false,
+    // 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:prod --report`
+    // Set to `true` or `false` to always turn it on or off
+    bundleAnalyzerReport: process.env.npm_config_report || false,
+
+    // `npm run build:prod --generate_report`
+    generateAnalyzerReport: process.env.npm_config_generate_report || false
+  }
+}

+ 20 - 0
config/prod.env.js

@@ -0,0 +1,20 @@
+module.exports = {
+  NODE_ENV: '"production"',
+  ENV_CONFIG: '"prod"',
+  //团蜂
+  // BASE_API: '"https://www.tuanfengkeji.cn:9527/dts-admin-api/admin"',
+  // BASE_SHOWAPI: '"https://www.tuanfengkeji.cn/tfshop"'
+
+  // 团蜂测试
+  BASE_API: '"https://11112.bus.deyisoft.cn:7443/tf-admin-api/admin"',
+  BASE_SHOWAPI: '"https://bus.deyisoft.cn:8890/tfshop"'
+
+  //巨峰
+  // BASE_API: '"https://www.tuanfengkeji.cn:9527/jf-admin-api/admin"',
+  // BASE_SHOWAPI:'"https://www.tuanfengkeji.cn/jfshop"'
+
+  //巨峰测试
+  // BASE_API: '"https://bus.deyisoft.cn:11112/dts-admin-api/admin"',
+  // BASE_SHOWAPI: '"https://bus.deyisoft.cn:8890/jfshop"'
+
+}

+ 7 - 0
config/test.env.js

@@ -0,0 +1,7 @@
+module.exports = {
+  NODE_ENV: '"production"',
+  ENV_CONFIG: '"test"',
+  // 团蜂测试
+  BASE_API: '"https://www.tuanfengkeji.cn:8098/dts-admin-api/admin"',
+  BASE_SHOWAPI: '"https://bus.deyisoft.cn:8890/tfshop"'
+}

BIN
dist.rar


BIN
favicon.ico


+ 18 - 0
index.html

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> -->
+  <meta name="renderer" content="webkit">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+  <title>团蜂科技</title>
+</head>
+
+<body>
+  <script src=<%=BASE_URL %>/tinymce4.7.5/tinymce.min.js ></script>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>

+ 111 - 0
package.json

@@ -0,0 +1,111 @@
+{
+  "name": "dts-admin",
+  "version": "1.0.0",
+  "description": "dts-admin basing on vue-element-admin 3.9.3",
+  "author": "chenbo <623659388@qq.com>",
+  "license": "LGPL-3.0",
+  "private": true,
+  "scripts": {
+    "dev": "cross-env BABEL_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
+    "build:test": "cross-env NODE_ENV=production env_config=test node build/build.js",
+    "build:demo": "cross-env NODE_ENV=production env_config=demo node build/build.js",
+    "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
+    "lint": "eslint --ext .js,.vue src",
+    "test": "npm run lint",
+    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
+  },
+  "dependencies": {
+    "@riophae/vue-treeselect": "0.0.37",
+    "@tinymce/tinymce-vue": "1.1.0",
+    "axios": "0.18.0",
+    "clipboard": "1.7.1",
+    "connect": "3.6.6",
+    "dayjs": "^1.11.7",
+    "default-passive-events": "^2.0.0",
+    "echarts": "^4.9.0",
+    "echarts-liquidfill": "^2.0.6",
+    "element-china-area-data": "^5.0.2",
+    "element-ui": "^2.15.12",
+    "file-saver": "1.3.8",
+    "font-awesome": "4.7.0",
+    "js-cookie": "2.2.0",
+    "jszip": "3.1.5",
+    "normalize.css": "7.0.0",
+    "nprogress": "0.2.0",
+    "screenfull": "3.3.3",
+    "v-charts": "^1.19.0",
+    "vue": "2.5.17",
+    "vue-count-to": "1.0.13",
+    "vue-i18n": "7.3.2",
+    "vue-qr": "^4.0.9",
+    "vue-router": "3.0.1",
+    "vuex": "3.0.1",
+    "xe-utils": "^3.5.7",
+    "xlsx": "^0.11.16"
+  },
+  "devDependencies": {
+    "autoprefixer": "8.5.0",
+    "babel-core": "6.26.3",
+    "babel-eslint": "8.2.6",
+    "babel-helper-vue-jsx-merge-props": "2.0.3",
+    "babel-loader": "7.1.5",
+    "babel-plugin-dynamic-import-node": "2.0.0",
+    "babel-plugin-syntax-jsx": "6.18.0",
+    "babel-plugin-transform-runtime": "6.23.0",
+    "babel-plugin-transform-vue-jsx": "3.7.0",
+    "babel-preset-env": "1.7.0",
+    "babel-preset-stage-2": "6.24.1",
+    "chalk": "2.4.1",
+    "copy-webpack-plugin": "4.5.2",
+    "cross-env": "^5.2.0",
+    "css-loader": "1.0.0",
+    "eslint": "4.19.1",
+    "eslint-friendly-formatter": "4.0.1",
+    "eslint-loader": "2.0.0",
+    "eslint-plugin-vue": "4.7.1",
+    "file-loader": "1.1.11",
+    "friendly-errors-webpack-plugin": "1.7.0",
+    "glob": "^7.1.4",
+    "hash-sum": "1.0.2",
+    "html-webpack-plugin": "4.0.0-alpha",
+    "husky": "0.14.3",
+    "lint-staged": "7.2.2",
+    "mini-css-extract-plugin": "0.4.1",
+    "node-notifier": "5.2.1",
+    "node-sass": "^4.7.2",
+    "optimize-css-assets-webpack-plugin": "5.0.0",
+    "ora": "3.0.0",
+    "path-to-regexp": "2.4.0",
+    "portfinder": "1.0.13",
+    "postcss-import": "11.1.0",
+    "postcss-loader": "2.1.6",
+    "postcss-url": "7.3.2",
+    "rimraf": "2.6.2",
+    "sass-loader": "7.0.3",
+    "script-loader": "0.7.2",
+    "semver": "5.5.0",
+    "serve-static": "1.13.2",
+    "shelljs": "0.8.2",
+    "svg-sprite-loader": "3.8.0",
+    "svgo": "1.0.5",
+    "uglifyjs-webpack-plugin": "1.2.7",
+    "url-loader": "1.0.1",
+    "vue-loader": "15.3.0",
+    "vue-style-loader": "4.1.2",
+    "vue-template-compiler": "2.5.17",
+    "webpack": "4.16.5",
+    "webpack-bundle-analyzer": "2.13.1",
+    "webpack-cli": "3.1.0",
+    "webpack-dev-server": "3.1.14",
+    "webpack-merge": "4.1.4"
+  },
+  "engines": {
+    "node": ">= 6.0.0",
+    "npm": ">= 3.0.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie <= 8"
+  ]
+}

+ 19 - 0
src/App.vue

@@ -0,0 +1,19 @@
+<template>
+  <div id="app">
+    <router-view />
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'App',
+  data () {
+    return {
+      isShow: true
+    }
+  },
+  methods: {
+
+  }
+}
+</script>

+ 67 - 0
src/api/RelationshipChainManagement/MarketingStores.js

@@ -0,0 +1,67 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/smmanage/add',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/smmanage/delect',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询所有营销账号
+export function listGet (query) {
+  return request({
+    url: '/smmanage/smlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询所有未绑定的门店,找出符合条件的门店信息列表
+// 通过门店账号或者门店名称,查询未绑定的门店列表,找出符合条件的门店信息列表
+export function userGet (query) {
+  return request({
+    url: '/smmanage/unlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过营销id或者营销账号查询绑定的门店信息。
+export function idGet (query) {
+  return request({
+    url: '/smmanage/bdlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过账号或名称,查‘营销账号信息’列表和账号或名称一致的营销账号信息
+export function adminGet (name) {
+  return request({
+    url: '/smmanage/unlist',
+    method: 'get',
+    params: { name }
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/smmanage/updata',
+    method: 'post',
+    data
+  })
+}
+

+ 75 - 0
src/api/RelationshipChainManagement/StoreMember.js

@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/bduser/add',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/bduser/delect',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询绑定列表所有信息
+export function listGet (query) {
+  return request({
+    url: '/salesman/brandlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询未绑定会员
+export function idGet (name) {
+  return request({
+    url: '/bduser/unlist',
+    method: 'get',
+    params: name
+  })
+}
+
+// 门店id或者门店账号查询绑定的会员信息
+export function adminGet (data) {
+  return request({
+    url: '/salesman/userlist',
+    method: 'get',
+    params: data
+  })
+}
+
+// 过账号或名称,查‘门店账号信息’列表和账号或名称一致的门店账号信息
+export function listGetName (name) {
+  return request({
+    url: '/salesman/brandlist',
+    method: 'get',
+    params: { name }
+  })
+}
+
+// 通过会员账号或者会员名称,查询未绑定的会员列表,找出符合条件的会员信息列表
+export function getUser (name) {
+  return request({
+    url: '/salesman/userlist',
+    method: 'get',
+    params: { name }
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/bduser/updata',
+    method: 'post',
+    data
+  })
+}
+

+ 28 - 0
src/api/StoreManagement/MemberManagement.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// // 根据门店ID(必填)、用户名和手机号查询该门店下的会员信息
+// export function listGet (query) {
+//   return request({
+//     url: '/brands/userlist',
+//     method: 'get',
+//     params: query
+//   })
+// }
+
+// 门店id或者门店账号查询绑定的会员信息
+export function adminGet (data) {
+  return request({
+    url: '/brands/userlist',
+    method: 'get',
+    params: data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/brands/delect',
+    method: 'post',
+    data
+  })
+}

+ 57 - 0
src/api/applicationManagement/advancedSalesmanApplication.js

@@ -0,0 +1,57 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/userup/save',
+    method: 'post',
+    data
+  })
+}
+
+// // 删
+// export function listDelete (data) {
+//   return request({
+//     url: '/brokerageInfo/delete',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 查
+// 查询列表
+export function listGet (url, query) {
+  return request({
+    url: url,
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/userup/pdlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/userup/manage',
+    method: 'post',
+    data
+  })
+}
+
+// 注册
+export function signin (url, data) {
+  return request({
+    url: url,
+    method: 'get',
+    data
+  })
+}
+

+ 48 - 0
src/api/applicationManagement/history.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// // 增
+// export function listAdd (data) {
+//   return request({
+//     url: '/userup/save',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// // 删
+// export function listDelete (data) {
+//   return request({
+//     url: '/brokerageInfo/delete',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 查
+// 查询列表
+export function listGet (url, data) {
+  return request({
+    url: url,
+    method: 'post',
+    data: data
+  })
+}
+
+// 通过id查询列表
+export function idGet (data) {
+  return request({
+    url: '/userup/list',
+    method: 'post',
+    data: data
+  })
+}
+
+// // 改
+// export function listedit (data) {
+//   return request({
+//     url: '/userup/manage',
+//     method: 'post',
+//     data
+//   })
+// }
+

+ 57 - 0
src/api/applicationManagement/salesmanApplication.js

@@ -0,0 +1,57 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/userup/save',
+    method: 'post',
+    data
+  })
+}
+
+// // 删
+// export function listDelete (data) {
+//   return request({
+//     url: '/brokerageInfo/delete',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// 查
+// 查询列表
+export function listGet (url, query) {
+  return request({
+    url: url,
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/userup/pdlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/userup/manage',
+    method: 'post',
+    data
+  })
+}
+
+// 注册
+export function signin (url, data) {
+  return request({
+    url: url,
+    method: 'get',
+    data
+  })
+}
+

+ 29 - 0
src/api/applicationManagement/shopUpCreate.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+// 后台申请信息保存或提交(普通或高级)
+export function listAdd (isSubmit, data) {
+  return request({
+    url: '/userup/save',
+    method: 'post',
+    params: { isSubmit },
+    data
+  })
+}
+
+// 会员列表
+export function memberListGet (query) {
+  return request({
+    url: '/user/upList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 后台查询保存的会员申请(普通或高级)信息
+export function InfoGet (query) {
+  return request({
+    url: '/userup/read',
+    method: 'get',
+    params: query
+  })
+}

+ 73 - 0
src/api/applicationManagement/uphistory.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// // 增
+// export function listAdd (data) {
+//   return request({
+//     url: '/userup/save',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// // 删
+// export function listDelete (data) {
+//   return request({
+//     url: '/brokerageInfo/delete',
+//     method: 'post',
+//     data
+//   })
+// }
+
+// // 查询列表
+// export function listGet (url, data) {
+//   return request({
+//     url: url,
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+// 查询列表
+export function listGet (data, page) {
+  return request({
+    url: '/upRecord/list?page=' + page + '&limit=20',
+    method: 'post',
+    data: data
+  })
+}
+
+// 通过id查询列表
+export function idGet (data) {
+  return request({
+    url: '/userup/list',
+    method: 'post',
+    data: data
+  })
+}
+
+// // 注册
+// export function signin (url, data) {
+//   return request({
+//     url: url,
+//     method: 'get',
+//     data
+//   })
+// }
+
+// 注册业务员
+export function signin (data) {
+  return request({
+    url: 'userup/signin',
+    method: 'post',
+    data: data
+  })
+}
+
+// 升级vip
+export function vipUp (data) {
+  return request({
+    url: '/userup/userUpVip',
+    method: 'post',
+    data: data
+  })
+}

+ 42 - 0
src/api/articleManagement/article.js

@@ -0,0 +1,42 @@
+import request from '@/utils/request'
+
+export function listArticle (query) {
+  return request({
+    url: '/richText/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function deleteArticle (data) {
+  return request({
+    url: '/richText/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function publishArticle (data) {
+  return request({
+    url: '/richText/create',
+    method: 'post',
+    data
+  })
+}
+
+export function detailArticle (id) {
+  return request({
+    url: '/richText/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function editArticle (data) {
+  return request({
+    url: '/richText/update',
+    method: 'post',
+    data
+  })
+}
+

+ 41 - 0
src/api/business/ad.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listAd(query) {
+  return request({
+    url: '/ad/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createAd(data) {
+  return request({
+    url: '/ad/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readAd(data) {
+  return request({
+    url: '/ad/read',
+    method: 'get',
+    data
+  })
+}
+
+export function updateAd(data) {
+  return request({
+    url: '/ad/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteAd(data) {
+  return request({
+    url: '/ad/delete',
+    method: 'post',
+    data
+  })
+}

+ 50 - 0
src/api/business/admin.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+export function listAdmin (query) {
+  return request({
+    url: '/admin/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createAdmin (data) {
+  return request({
+    url: '/admin/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readminAdmin (data) {
+  return request({
+    url: '/admin/readmin',
+    method: 'get',
+    data
+  })
+}
+
+export function updateAdmin (data) {
+  return request({
+    url: '/admin/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteAdmin (data) {
+  return request({
+    url: '/admin/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function detailAdmin (username) {
+  return request({
+    url: '/salesman/introsp',
+    method: 'get',
+    params: { username }
+  })
+}
+

+ 42 - 0
src/api/business/article.js

@@ -0,0 +1,42 @@
+import request from '@/utils/request'
+
+export function listArticle(query) {
+  return request({
+    url: '/article/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function deleteArticle(data) {
+  return request({
+    url: '/article/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function publishArticle(data) {
+  return request({
+    url: '/article/create',
+    method: 'post',
+    data
+  })
+}
+
+export function detailArticle(id) {
+  return request({
+    url: '/article/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function editArticle(data) {
+  return request({
+    url: '/article/update',
+    method: 'post',
+    data
+  })
+}
+

+ 75 - 0
src/api/business/brand.js

@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+
+
+export const api = {
+  brandList: '/brand/list',
+  brandRead: '/brand/read',
+  brandCreate: '/brand/create',
+  brandUpdate: '/brand/update',
+  brandDelete: '/brand/delete',
+  brandCatAndAdmin: '/brand/catAndAdmin',
+}
+
+// 门店列表
+export function brandList (params) {
+  return request({
+    url: api.brandList,
+    method: 'GET',
+    params
+  })
+}
+
+// 门店详情
+export function readBrand (params) {
+  return request({
+    url: api.brandRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 添加门店
+export function brandCreate (data) {
+  return request({
+    url: api.brandCreate,
+    method: 'POST',
+    data
+  })
+}
+
+
+// 编辑门店
+export function brandUpdate (data) {
+  return request({
+    url: api.brandUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除门店
+export function brandDelete (data) {
+  return request({
+    url: api.brandDelete,
+    method: 'POST',
+    data
+  })
+}
+
+// 门店类型+风格
+export function brandCatAndAdmin (params) {
+  return request({
+    url: api.brandCatAndAdmin,
+    method: 'GET',
+    params
+  })
+}
+
+// 获取门店类型
+export function listStoreType (params) {
+  return request({
+    url: '/storeType/list',
+    method: 'GET',
+    params
+  })
+}

+ 17 - 0
src/api/business/brokerage.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function fetchList(query) {
+  return request({
+    url: '/brokerage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function approveTrace(data) {
+  return request({
+    url: '/brokerage/approve',
+    method: 'post',
+    data
+  })
+}

+ 84 - 0
src/api/business/category.js

@@ -0,0 +1,84 @@
+import request from '@/utils/request'
+
+export const api = {
+  categoryList: '/category/list',
+  categoryL1: '/category/l1',
+  categoryL2: '/category/l2',
+  categoryTreeList: '/category/treeList',
+  categoryRead: '/category/read',
+  categoryCreate: '/category/create',
+  categoryUpdate: '/category/update',
+  categoryDelete: '/category/delete',
+}
+
+// 查询一级类目
+export function categoryL1 (params) {
+  return request({
+    url: api.categoryL1,
+    method: 'GET',
+    params
+  })
+}
+
+// 查询二级类目
+export function categoryL2 (params) {
+  return request({
+    url: api.categoryL2,
+    method: 'GET',
+    params
+  })
+}
+
+// 查询全部类目树结构列表
+export function categoryTreeList(params) {
+  return request({
+    url: api.categoryTreeList,
+    method: 'GET',
+    params
+  })
+}
+
+// 类目列表
+export function categoryList (params) {
+  return request({
+    url: api.categoryList,
+    method: 'GET',
+    params
+  })
+}
+
+// 查询类目详情
+export function categoryRead (params) {
+  return request({
+    url: api.categoryRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 新增类目
+export function categoryCreate (data) {
+  return request({
+    url: api.categoryCreate,
+    method: 'POST',
+    data
+  })
+}
+
+// 编辑类目
+export function categoryUpdate (data) {
+  return request({
+    url: api.categoryUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除类目
+export function categoryDelete (data) {
+  return request({
+    url: api.categoryDelete,
+    method: 'POST',
+    data
+  })
+}

+ 34 - 0
src/api/business/comment.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export const api = {
+  commentList: '/comment/list',
+  commentDelete: '/comment/delete',
+  commentBrandReply: '/comment/brandReply',
+}
+
+// 查询商品评论列表
+export function commentList(params) {
+  return request({
+    url: api.commentList,
+    method: 'GET',
+    params
+  })
+}
+
+// 删除评论
+export function commentDelete(data) {
+  return request({
+    url: api.commentDelete,
+    method: 'POST',
+    data
+  })
+}
+
+// 添加门店回复评论
+export function commentBrandReply(data) {
+  return request({
+    url: api.commentBrandReply,
+    method: 'POST',
+    data
+  })
+}

+ 49 - 0
src/api/business/coupon.js

@@ -0,0 +1,49 @@
+import request from '@/utils/request'
+
+export function listCoupon(query) {
+  return request({
+    url: '/coupon/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createCoupon(data) {
+  return request({
+    url: '/coupon/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readCoupon(id) {
+  return request({
+    url: '/coupon/read',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function updateCoupon(data) {
+  return request({
+    url: '/coupon/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteCoupon(data) {
+  return request({
+    url: '/coupon/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listCouponUser(query) {
+  return request({
+    url: '/coupon/listuser',
+    method: 'get',
+    params: query
+  })
+}

+ 17 - 0
src/api/business/dashboard.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function info(query) {
+  return request({
+    url: '/dashboard',
+    method: 'get',
+    params: query
+  })
+}
+
+export function chart(query) {
+  return request({
+    url: '/dashboard/chart',
+    method: 'get',
+    params: query
+  })
+}

+ 85 - 0
src/api/business/goods.js

@@ -0,0 +1,85 @@
+import request from '@/utils/request'
+
+export const api = {
+  goodsList: '/goods/list',
+  goodsDetail: '/goods/detail',
+  goodsCreate: '/goods/create',
+  goodsUpdate: '/goods/update',
+  goodsDelete: '/goods/delete',
+  goodsUpOnSale: '/goods/upOnSale',
+  goodsCatAndBrand: '/goods/catAndBrand',
+  goodsProductPlaceList: '/goods/productPlaceList',
+}
+
+// 商品列表
+export function goodsList (params) {
+  return request({
+    url: api.goodsList,
+    method: 'GET',
+    params
+  })
+}
+
+// 商品详情
+export function goodsDetail (params) {
+  return request({
+    url: api.goodsDetail,
+    method: 'GET',
+    params
+  })
+}
+
+// 添加商品
+export function goodsCreate (data) {
+  return request({
+    url: api.goodsCreate,
+    method: 'POST',
+    data
+  })
+}
+
+
+// 编辑商品
+export function goodsUpdate (data) {
+  return request({
+    url: api.goodsUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除商品
+export function goodsDelete (data) {
+  return request({
+    url: api.goodsDelete,
+    method: 'POST',
+    data
+  })
+}
+
+// 上下架商品
+export function goodsUpOnSale (data) {
+  return request({
+    url: api.goodsUpOnSale,
+    method: 'POST',
+    data
+  })
+}
+
+// 门店,品类
+export function goodsCatAndBrand (params) {
+  return request({
+    url: '/goods/catAndBrand',
+    method: 'GET',
+    params
+  })
+}
+
+// 产地
+export function goodsProductPlaceList (params) {
+  return request({
+    url: api.goodsProductPlaceList,
+    method: 'GET',
+    params
+  })
+}

+ 54 - 0
src/api/business/goodsStyle.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+export const api = {
+  goodsStyleList: '/goodsStyle/list',
+  goodsStyleRead: '/goodsStyle/read',
+  goodsStyleCreate: '/goodsStyle/create',
+  goodsStyleUpdate: '/goodsStyle/update',
+  goodsStyleDelete: '/goodsStyle/delete',
+}
+
+// 查询商品风格列表
+export function goodsStyleList (params) {
+  return request({
+    url: api.goodsStyleList,
+    method: 'GET',
+    params
+  })
+}
+
+// 查询商品风格详情
+export function goodsStyleRead (params) {
+  return request({
+    url: api.goodsStyleRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 添加商品风格
+export function goodsStyleCreate (data) {
+  return request({
+    url: api.goodsStyleCreate,
+    method: 'POST',
+    data
+  })
+}
+
+// 编辑商品风格
+export function goodsStyleUpdate (data) {
+  return request({
+    url: api.goodsStyleUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除商品风格
+export function goodsStyleDelete (data) {
+  return request({
+    url: api.goodsStyleDelete,
+    method: 'POST',
+    data
+  })
+}

+ 56 - 0
src/api/business/goodsTag.js

@@ -0,0 +1,56 @@
+
+import request from '@/utils/request'
+
+export const api = {
+  goodsTagList: '/goodsTag/list',
+  goodsTagRead: '/goodsTag/read',
+  goodsTagCreate: '/goodsTag/create',
+  goodsTagUpdate: '/goodsTag/update',
+  goodsTagDelete: '/goodsTag/delete',
+}
+
+// 查询大类标签
+export function goodsTagList (params) {
+  return request({
+    url: api.goodsTagList,
+    method: 'GET',
+    params
+  })
+}
+
+// 详情大类标签
+export function goodsTagRead (params) {
+  return request({
+    url: api.goodsTagRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 添加大类标签
+export function goodsTagCreate (data) {
+  return request({
+    url: api.goodsTagCreate,
+    method: 'POST',
+    data
+  })
+}
+
+// 修改大类标签
+export function goodsTagUpdate (data) {
+  return request({
+    url: api.goodsTagUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除大类标签
+export function goodsTagDelete (data) {
+  return request({
+    url: api.goodsTagDelete,
+    method: 'POST',
+    data
+  })
+}
+

+ 41 - 0
src/api/business/groupon.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listRecord(query) {
+  return request({
+    url: '/groupon/listRecord',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listGroupon(query) {
+  return request({
+    url: '/groupon/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function deleteGroupon(data) {
+  return request({
+    url: '/groupon/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function publishGroupon(data) {
+  return request({
+    url: '/groupon/create',
+    method: 'post',
+    data
+  })
+}
+
+export function editGroupon(data) {
+  return request({
+    url: '/groupon/update',
+    method: 'post',
+    data
+  })
+}

+ 74 - 0
src/api/business/issue.js

@@ -0,0 +1,74 @@
+import request from '@/utils/request'
+
+export const api = {
+  issueGetTypeEnum: '/issue/getTypeEnum',
+  issueList: '/issue/list',
+  issueRead: '/issue/read',
+  issueCreate: '/issue/create',
+  issueUpdate: '/issue/update',
+  issueDelete: '/issue/delete',
+  issueChangeEnable: '/issue/changeEnable',
+}
+
+// 获取问题范围列表
+export function issueGetTypeEnum(params) {
+  return request({
+    url: api.issueGetTypeEnum,
+    method: 'GET',
+    params
+  })
+}
+
+// 通用问题列表
+export function issueList(params) {
+  return request({
+    url: api.issueList,
+    method: 'GET',
+    params
+  })
+}
+
+// 通用问题详情
+export function issueRead(params) {
+  return request({
+    url: api.issueRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 通用问题添加
+export function issueCreate(data) {
+  return request({
+    url: api.issueCreate,
+    method: 'POST',
+    data
+  })
+}
+
+// 通用问题编辑
+export function issueUpdate(data) {
+  return request({
+    url: api.issueUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 通用问题删除
+export function issueDelete(data) {
+  return request({
+    url: api.issueDelete,
+    method: 'POST',
+    data
+  })
+}
+
+// 通用问题停启用
+export function issueChangeEnable(params) {
+  return request({
+    url: api.issueChangeEnable,
+    method: 'GET',
+    params
+  })
+}

+ 54 - 0
src/api/business/keyword.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+export const api = {
+  keywordList: '/keyword/list',
+  keywordRead: '/keyword/read',
+  keywordCreate: '/keyword/create',
+  keywordUpdate: '/keyword/update',
+  keywordDelete: '/keyword/delete',
+}
+
+// 关键词列表
+export function keywordList(params) {
+  return request({
+    url: api.keywordList,
+    method: 'GET',
+    params
+  })
+}
+
+// 关键词详情
+export function keywordRead(params) {
+  return request({
+    url: api.keywordRead,
+    method: 'GET',
+    params
+  })
+}
+
+// 添加关键词
+export function keywordCreate(data) {
+  return request({
+    url: api.keywordCreate,
+    method: 'POST',
+    data
+  })
+}
+
+// 编辑关键词
+export function keywordUpdate(data) {
+  return request({
+    url: api.keywordUpdate,
+    method: 'POST',
+    data
+  })
+}
+
+// 删除关键词
+export function keywordDelete(data) {
+  return request({
+    url: api.keywordDelete,
+    method: 'POST',
+    data
+  })
+}

+ 29 - 0
src/api/business/login.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+export function loginByUsername(username, password) {
+  const data = {
+    username,
+    password
+  }
+  return request({
+    url: '/auth/login',
+    method: 'post',
+    data
+  })
+}
+
+export function logout() {
+  return request({
+    url: '/auth/logout',
+    method: 'post'
+  })
+}
+
+export function getUserInfo(token) {
+  return request({
+    url: '/auth/info',
+    method: 'get',
+    params: { token }
+  })
+}
+

+ 52 - 0
src/api/business/order.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+import Qs from 'qs'
+
+export function listOrder(query) {
+  return request({
+    url: '/order/list',
+    method: 'get',
+    params: query,
+    paramsSerializer: function(params) {
+      return Qs.stringify(params, { arrayFormat: 'repeat' })
+    }
+  })
+}
+
+export function detailOrder(id) {
+  return request({
+    url: '/order/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function shipOrder(data) {
+  return request({
+    url: '/order/ship',
+    method: 'post',
+    data
+  })
+}
+
+export function refundOrder(data) {
+  return request({
+    url: '/order/refund',
+    method: 'post',
+    data
+  })
+}
+
+export function replyComment(data) {
+  return request({
+    url: '/order/reply',
+    method: 'post',
+    data
+  })
+}
+
+export function listShipChannel() {
+  return request({
+    url: '/order/listShipChannel',
+    method: 'get'
+  })
+}

+ 9 - 0
src/api/business/profile.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function changePassword(data) {
+  return request({
+    url: '/profile/password',
+    method: 'post',
+    data
+  })
+}

+ 8 - 0
src/api/business/qiniu.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export function getToken() {
+  return request({
+    url: '/qiniu/upload/token', // 假地址 自行替换
+    method: 'get'
+  })
+}

+ 25 - 0
src/api/business/recharge.js

@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function listStore (query) {
+  return request({
+    url: '/brand/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listMember (query) {
+  return request({
+    url: '/buAccount/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function memberRecharge (data) {
+  return request({
+    url: '/buAccount/topUp',
+    method: 'post',
+    data
+  })
+}

+ 17 - 0
src/api/business/rechargeRecord.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function listRechargeRecord (query) {
+  return request({
+    url: '/brandBalance/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function memberRecharge (data) {
+  return request({
+    url: '/buAccount/recharge',
+    method: 'post',
+    data
+  })
+}

+ 17 - 0
src/api/business/region.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function listRegion(query) {
+  return request({
+    url: '/region/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listSubRegion(query) {
+  return request({
+    url: '/region/clist',
+    method: 'get',
+    params: query
+  })
+}

+ 65 - 0
src/api/business/role.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+export function listRole(query) {
+  return request({
+    url: '/role/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createRole(data) {
+  return request({
+    url: '/role/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readRole(data) {
+  return request({
+    url: '/role/read',
+    method: 'get',
+    data
+  })
+}
+
+export function updateRole(data) {
+  return request({
+    url: '/role/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteRole(data) {
+  return request({
+    url: '/role/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function getPermission(query) {
+  return request({
+    url: '/role/permissions',
+    method: 'get',
+    params: query
+  })
+}
+
+export function updatePermission(data) {
+  return request({
+    url: '/role/permissions',
+    method: 'post',
+    data
+  })
+}
+
+export function roleOptions(query) {
+  return request({
+    url: '/role/options',
+    method: 'get',
+    params: query
+  })
+}

+ 25 - 0
src/api/business/stat.js

@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function statUser(query) {
+  return request({
+    url: '/stat/user',
+    method: 'get',
+    params: query
+  })
+}
+
+export function statOrder(query) {
+  return request({
+    url: '/stat/order',
+    method: 'get',
+    params: query
+  })
+}
+
+export function statGoods(query) {
+  return request({
+    url: '/stat/goods',
+    method: 'get',
+    params: query
+  })
+}

+ 44 - 0
src/api/business/storage.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+export function listStorage(query) {
+  return request({
+    url: '/storage/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createStorage(data) {
+  return request({
+    url: '/storage/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readStorage(data) {
+  return request({
+    url: '/storage/read',
+    method: 'get',
+    data
+  })
+}
+
+export function updateStorage(data) {
+  return request({
+    url: '/storage/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteStorage(data) {
+  return request({
+    url: '/storage/delete',
+    method: 'post',
+    data
+  })
+}
+
+const uploadPath = process.env.BASE_API + '/storage/create'
+export { uploadPath }

+ 41 - 0
src/api/business/topic.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listTopic(query) {
+  return request({
+    url: '/topic/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function createTopic(data) {
+  return request({
+    url: '/topic/create',
+    method: 'post',
+    data
+  })
+}
+
+export function readTopic(data) {
+  return request({
+    url: '/topic/read',
+    method: 'get',
+    data
+  })
+}
+
+export function updateTopic(data) {
+  return request({
+    url: '/topic/update',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteTopic(data) {
+  return request({
+    url: '/topic/delete',
+    method: 'post',
+    data
+  })
+}

+ 74 - 0
src/api/business/user.js

@@ -0,0 +1,74 @@
+import request from '@/utils/request'
+
+export function fetchList (query) {
+  return request({
+    url: '/user/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function approveAgency (data) {
+  return request({
+    url: '/user/approveAgency',
+    method: 'post',
+    data
+  })
+}
+
+export function detailApprove (id) {
+  return request({
+    url: '/user/detailApprove',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function listAddress (query) {
+  return request({
+    url: '/address/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listCollect (query) {
+  return request({
+    url: '/collect/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listFeedback (query) {
+  return request({
+    url: '/feedback/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listFootprint (query) {
+  return request({
+    url: '/footprint/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listHistory (query) {
+  return request({
+    url: '/history/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function levelList (query) {
+  return request({
+    url: '/user/levelList',
+    method: 'get',
+    params: query
+  })
+}
+

+ 66 - 0
src/api/business/vipUser.js

@@ -0,0 +1,66 @@
+import request from '@/utils/request'
+
+export function fetchList (query) {
+  return request({
+    url: '/user/levelList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function approveAgency (data) {
+  return request({
+    url: '/user/approveAgency',
+    method: 'post',
+    data
+  })
+}
+
+export function detailApprove (id) {
+  return request({
+    url: '/user/detailApprove',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function listAddress (query) {
+  return request({
+    url: '/address/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listCollect (query) {
+  return request({
+    url: '/collect/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listFeedback (query) {
+  return request({
+    url: '/feedback/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listFootprint (query) {
+  return request({
+    url: '/footprint/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listHistory (query) {
+  return request({
+    url: '/history/list',
+    method: 'get',
+    params: query
+  })
+}
+

+ 64 - 0
src/api/businessManagement/informationSentry.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+export const api = {
+  messagesentryQueryMsgSentryList: '/messagesentry/queryMsgSentryList',
+  messagesentrySaveMsgSentry: '/messagesentry/saveMsgSentry',
+  messagesentryConversion: '/messagesentry/conversion',
+  messagesentryIsConversion: '/messagesentry/isConversion',
+  messagesentrySalesmanBinding: '/messagesentry/salesmanBinding',
+  messagesentrySetOverdueTime: '/messagesentry/setOverdueTime',
+}
+
+// 信息哨兵列表
+export function messagesentryQueryMsgSentryList (data) {
+  return request({
+    url: api.messagesentryQueryMsgSentryList,
+    method: 'POST',
+    data
+  })
+}
+
+// 新增信息哨兵客户信息
+export function messagesentrySaveMsgSentry (data) {
+  return request({
+    url: api.messagesentrySaveMsgSentry,
+    method: 'POST',
+    data
+  })
+}
+
+// 转化(从收集 -> 转化阶段)
+export function messagesentryConversion (data) {
+  return request({
+    url: api.messagesentryConversion,
+    method: 'POST',
+    data
+  })
+}
+
+// 回访(从转化 -> 追销 追销 -> 铁粉)
+export function messagesentryIsConversion (data) {
+  return request({
+    url: api.messagesentryIsConversion,
+    method: 'POST',
+    data
+  })
+}
+
+// 业务员绑定
+export function messagesentrySalesmanBinding (data) {
+  return request({
+    url: api.messagesentrySalesmanBinding,
+    method: 'POST',
+    data
+  })
+}
+
+// 设定用户的报警时间
+export function messagesentrySetOverdueTime (data) {
+  return request({
+    url: api.messagesentrySetOverdueTime,
+    method: 'POST',
+    data
+  })
+}

+ 14 - 0
src/api/businessManagement/marketingPortrait.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request'
+
+export const api = {
+  statisticalHome: '/statistical/home',
+}
+
+// 营销画像数据统计
+export function statisticalHome (params) {
+  return request({
+    url: api.statisticalHome,
+    method: 'GET',
+    params
+  })
+}

+ 64 - 0
src/api/businessManagement/scriptSetting.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+export const api = {
+  msgsayMsgSayTypeList: '/msgsay/msgSayTypeList',
+  msgsayMsgSayList: '/msgsay/msgSayList',
+  msgsaySaveMsgSay: '/msgsay/saveMsgSay',
+  msgsaySelectById: '/msgsay/selectById',
+  msgsayUpdateSay: '/msgsay/updateSay',
+  msgsayDeleteById: '/msgsay/deleteById',
+}
+
+// 话术类型列表
+export function msgsayMsgSayTypeList (params) {
+  return request({
+    url: api.msgsayMsgSayTypeList,
+    method: 'GET',
+    params
+  })
+}
+
+// 话术列表分页查询
+export function msgsayMsgSayList (data) {
+  return request({
+    url: api.msgsayMsgSayList,
+    method: 'POST',
+    data
+  })
+}
+
+// 新增话术
+export function msgsaySaveMsgSay (data) {
+  return request({
+    url: api.msgsaySaveMsgSay,
+    method: 'POST',
+    data
+  })
+}
+
+// 话术查询
+export function msgsaySelectById (params) {
+  return request({
+    url: api.msgsaySelectById,
+    method: 'GET',
+    params
+  })
+}
+
+// 修改话术
+export function msgsayUpdateSay (data) {
+  return request({
+    url: api.msgsayUpdateSay,
+    method: 'PUT',
+    data
+  })
+}
+
+// 修改话术
+export function msgsayDeleteById (params) {
+  return request({
+    url: api.msgsayDeleteById,
+    method: 'DELETE',
+    params
+  })
+}

+ 41 - 0
src/api/communityManagement/community.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listArticle (query) {
+  return request({
+    url: '/community/richText/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function deleteArticle (data) {
+  return request({
+    url: '/community/richText/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function publishArticle (data) {
+  return request({
+    url: '/community/richText/create',
+    method: 'post',
+    data
+  })
+}
+
+export function detailArticle (id) {
+  return request({
+    url: '/community/richText/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function editArticle (data) {
+  return request({
+    url: '/community/richText/update',
+    method: 'post',
+    data
+  })
+}

+ 48 - 0
src/api/configurationTable/brokerageInfo.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/brokerageInfo/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/brokerageInfo/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/brokerageInfo/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/brokerageInfo/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/brokerageInfo/update',
+    method: 'post',
+    data
+  })
+}
+

+ 20 - 0
src/api/configurationTable/coupon.js

@@ -0,0 +1,20 @@
+import request from '@/utils/request'
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/voucher/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listEdit (data) {
+  return request({
+    url: '/voucher/update',
+    method: 'post',
+    data
+  })
+}

+ 38 - 0
src/api/configurationTable/storeLevel.js

@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/brandLevel/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/brandLevel/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/brandLevel/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listEdit (data) {
+  return request({
+    url: '/brandLevel/update',
+    method: 'post',
+    data
+  })
+}

+ 56 - 0
src/api/configurationTable/storeStyle.js

@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/brandStyle/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/brandStyle/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/brandStyle/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详情
+export function detailGet (query) {
+  return request({
+    url: '/brandStyle/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询子配置列表
+export function sonListGet (query) {
+  return request({
+    url: '/brandStyle/findSonList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listEdit (data) {
+  return request({
+    url: '/brandStyle/update',
+    method: 'post',
+    data
+  })
+}

+ 64 - 0
src/api/configurationTable/storeType.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/storeType/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/storeType/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/storeType/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function sonListGet (query) {
+  return request({
+    url: '/storeType/findSonList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/storeType/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/storeType/update',
+    method: 'post',
+    data
+  })
+}
+
+// 获取门店类型树
+export function listStoreType () {
+  return request({
+    url: '/storeType/typeList',
+    method: 'get'
+  })
+}
+

+ 48 - 0
src/api/configurationTable/upgradeMoney.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/upgradeMoney/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/upgradeMoney/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/upgradeMoney/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/upgradeMoney/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/upgradeMoney/update',
+    method: 'post',
+    data
+  })
+}
+

+ 48 - 0
src/api/configurationTable/userLevel.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/userLevel/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/userLevel/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/userLevel/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/userLevel/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/userLevel/update',
+    method: 'post',
+    data
+  })
+}
+

+ 21 - 0
src/api/couponManagement/give.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/circula/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+// 转增
+export function transfer (data) {
+  return request({
+    url: '/circula/circula',
+    method: 'post',
+    data
+  })
+}

+ 21 - 0
src/api/couponManagement/order.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/voucherRecord/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+// 手动发放代金券
+export function grant (data) {
+  return request({
+    url: '/hold/add',
+    method: 'post',
+    data
+  })
+}

+ 11 - 0
src/api/couponManagement/possess.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/hold/list',
+    method: 'get',
+    params: query
+  })
+}

+ 27 - 0
src/api/dashboardBig/dashboardBig.js

@@ -0,0 +1,27 @@
+import request3 from '@/utils/request3'
+import request4 from '@/utils/request'
+
+// export function getList (query) {
+//   return request({
+//     url: '/richText/list',
+//     method: 'get',
+//     params: query
+//   })
+// }
+
+export function getListPost (data) {
+  return request3({
+    url: '',
+    method: 'post',
+    data
+  })
+}
+
+export function getJiaJuListPost (data) {
+  return request4({
+    url: '',
+    method: 'post',
+    data
+  })
+}
+

+ 9 - 0
src/api/dataStatisticsDashboard/dataStatisticsDashboard.js

@@ -0,0 +1,9 @@
+import request2 from '@/utils/request'
+
+export function listAd (query) {
+  // return request({
+  //   url: '/ad/list',
+  //   method: 'get',
+  //   params: query
+  // })
+}

+ 40 - 0
src/api/login.js

@@ -0,0 +1,40 @@
+import request from '@/utils/request'
+
+// 登录方法
+export function loginByUsername(username, password, code, uuid) {
+  const data = {
+    username,
+    password,
+    code,
+    uuid
+  }
+  return request({
+    url: '/auth/login',
+    method: 'post',
+    data
+  })
+}
+
+// 获取用户详细信息
+export function getUserInfo() {
+  return request({
+    url: '/auth/info',
+    method: 'get'
+  })
+}
+
+// 退出方法
+export function logout() {
+  return request({
+    url: '/auth/logout',
+    method: 'post'
+  })
+}
+
+// 获取验证码
+export function getCodeImg() {
+  return request({
+    url: '/auth/captchaImage',
+    method: 'get'
+  })
+}

+ 1 - 0
src/api/marketing/salesManagement.js

@@ -0,0 +1 @@
+

+ 55 - 0
src/api/marketing/salesmanManagement.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+
+// 根据营销或者门店系统账户名查询营销业务员ID或门店系统账户ID
+export function idGet (username) {
+  return request({
+    url: '/salesman/introsp',
+    method: 'get',
+    params: { username }
+  })
+}
+
+// 通过营销id或者营销账号查询绑定的门店信息。
+export function listGet (query) {
+  return request({
+    url: '/sexclusive/bdlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/sexclusive/delect',
+    method: 'post',
+    data
+  })
+}
+
+// 根据营销ID查询该营销账号下所有的门店信息
+// export function listGet (id) {
+//   return request({
+//     url: '/sexclusive/bdlist',
+//     method: 'get',
+//     params: { id }
+//   })
+// }
+
+// 根据营销ID和门店名称查询该营销账号下所有的门店信息
+// export function salesmanListGet (salesmanid, name) {
+//   return request({
+//     url: '/sexclusive/brandlist',
+//     method: 'get',
+//     params: { salesmanid, name }
+//   })
+// }
+
+// 根据门店业务员ID查询该门店下的会员信息
+// export function memberListGet (id) {
+//   return request({
+//     url: '/sexclusive/userlist',
+//     method: 'get',
+//     params: { id }
+//   })
+// }

+ 34 - 0
src/api/materialManagement/priceIndices.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export function listGet (query) {
+  return request({
+    url: '/pricesView/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listDelete (data) {
+  return request({
+    url: '/pricesView/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listAdd (data) {
+  return request({
+    url: '/pricesView/add',
+    method: 'post',
+    data
+  })
+}
+
+export function listUpdate (data) {
+  return request({
+    url: '/pricesView/update',
+    method: 'post',
+    data
+  })
+}
+

+ 34 - 0
src/api/materialManagement/priceIndicesInfo.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export function listGet (query) {
+  return request({
+    url: '/prices/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listDelete (data) {
+  return request({
+    url: '/prices/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listAdd (data) {
+  return request({
+    url: '/prices/add',
+    method: 'post',
+    data
+  })
+}
+
+export function listUpdate (data) {
+  return request({
+    url: '/prices/update',
+    method: 'post',
+    data
+  })
+}
+

+ 34 - 0
src/api/materialManagement/tradeLeads.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+export function listGet (query) {
+  return request({
+    url: '/tradeLeads/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listDelete (data) {
+  return request({
+    url: '/tradeLeads/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listAdd (data) {
+  return request({
+    url: '/tradeLeads/add',
+    method: 'post',
+    data
+  })
+}
+
+export function listUpdate (data) {
+  return request({
+    url: '/tradeLeads/update',
+    method: 'post',
+    data
+  })
+}
+

+ 24 - 0
src/api/membershipChain/partnerApply.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+export const api = {
+  partnerApplyList: '/partnerApply/list',
+  partnerApplyManage: '/partnerApply/manage',
+}
+
+// 合伙人申请列表
+export function partnerApplyList (data) {
+  return request({
+    url: api.partnerApplyList,
+    method: 'POST',
+    data
+  })
+}
+
+// 合伙人申请状态
+export function partnerApplyManage (data) {
+  return request({
+    url: api.partnerApplyManage,
+    method: 'POST',
+    data
+  })
+}

+ 41 - 0
src/api/painting/painting.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listGet (query) {
+  return request({
+    url: '/paintAlbum/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listDelete (data) {
+  return request({
+    url: '/paintAlbum/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listDetail (id) {
+  return request({
+    url: '/paintAlbum/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function listedit (data) {
+  return request({
+    url: '/paintAlbum/update',
+    method: 'post',
+    data
+  })
+}
+
+export function publishPaintings (data) {
+  return request({
+    url: '/paintAlbum/create',
+    method: 'post',
+    data
+  })
+}

+ 41 - 0
src/api/painting/picture.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function listGetPicture (query) {
+  return request({
+    url: '/imgAlbum/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listDeletePicture (data) {
+  return request({
+    url: '/imgAlbum/delete',
+    method: 'post',
+    data
+  })
+}
+
+export function listDetailPicture (id) {
+  return request({
+    url: '/imgAlbum/detail',
+    method: 'get',
+    params: { id }
+  })
+}
+
+export function listeditPicture (data) {
+  return request({
+    url: '/imgAlbum/update',
+    method: 'post',
+    data
+  })
+}
+
+export function publishPaintingsPicture (data) {
+  return request({
+    url: '/imgAlbum/create',
+    method: 'post',
+    data
+  })
+}

+ 57 - 0
src/api/system/SalesmanManagement.js

@@ -0,0 +1,57 @@
+import request from '@/utils/request'
+
+// 增
+export function listAdd (data) {
+  return request({
+    url: '/salesman/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删
+export function listDelete (data) {
+  return request({
+    url: '/salesman/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 查
+// 查询列表
+export function listGet (query) {
+  return request({
+    url: '/salesman/smlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 通过id查询列表
+export function idGet (query) {
+  return request({
+    url: '/salesman/smlist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询未绑定的系统账户
+export function listGetAdminId (query) {
+  return request({
+    url: '/admin/unBound',
+    method: 'get',
+    params: query
+  })
+}
+
+// 改
+export function listedit (data) {
+  return request({
+    url: '/salesman/update',
+    method: 'post',
+    data
+  })
+}
+

+ 35 - 0
src/api/system/logininfor.js

@@ -0,0 +1,35 @@
+import request from '@/utils/request'
+
+// 查询登录日志列表
+export function list(query) {
+  return request({
+    url: '/monitor/logininfor/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 删除登录日志
+export function delLogininfor(infoId) {
+  return request({
+    url: '/monitor/logininfor/' + infoId,
+    method: 'delete'
+  })
+}
+
+// 清空登录日志
+export function cleanLogininfor() {
+  return request({
+    url: '/monitor/logininfor/clean',
+    method: 'delete'
+  })
+}
+
+// 导出登录日志
+export function exportLogininfor(query) {
+  return request({
+    url: '/monitor/logininfor/export',
+    method: 'get',
+    params: query
+  })
+}

+ 18 - 0
src/api/system/online.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+// 查询在线用户列表
+export function list(query) {
+  return request({
+    url: '/monitor/online/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 强退用户
+export function forceLogout(tokenId) {
+  return request({
+    url: '/monitor/online/' + tokenId,
+    method: 'delete'
+  })
+}

+ 35 - 0
src/api/system/operlog.js

@@ -0,0 +1,35 @@
+import request from '@/utils/request'
+
+// 查询操作日志列表
+export function list(query) {
+  return request({
+    url: '/monitor/operlog/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 删除操作日志
+export function delOperlog(operId) {
+  return request({
+    url: '/monitor/operlog/' + operId,
+    method: 'delete'
+  })
+}
+
+// 清空操作日志
+export function cleanOperlog() {
+  return request({
+    url: '/monitor/operlog/clean',
+    method: 'delete'
+  })
+}
+
+// 导出操作日志
+export function exportOperlog(query) {
+  return request({
+    url: '/monitor/operlog/export',
+    method: 'get',
+    params: query
+  })
+}

+ 9 - 0
src/api/system/server.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 查询服务器详细
+export function getServer() {
+  return request({
+    url: '/monitor/server',
+    method: 'get'
+  })
+}

BIN
src/assets/401_images/401.gif


BIN
src/assets/404_images/404.png


BIN
src/assets/404_images/404_cloud.png


BIN
src/assets/bg_q.png


BIN
src/assets/bodybg.jpg


BIN
src/assets/boxbg.jpg


Some files were not shown because too many files changed in this diff