Jelajahi Sumber

Merge branch 'master' of http://47.100.37.243:10080/wutt/lsappBms

wutt 5 tahun lalu
induk
melakukan
4441463283
67 mengubah file dengan 2325 tambahan dan 1439 penghapusan
  1. 1 2
      .gitignore
  2. 35 0
      lss_vue/build/build.js
  3. 48 0
      lss_vue/build/check-versions.js
  4. 9 0
      lss_vue/build/dev-client.js
  5. 89 0
      lss_vue/build/dev-server.js
  6. 72 0
      lss_vue/build/utils.js
  7. 12 0
      lss_vue/build/vue-loader.conf.js
  8. 72 0
      lss_vue/build/webpack.base.conf.js
  9. 38 0
      lss_vue/build/webpack.dev.conf.js
  10. 123 0
      lss_vue/build/webpack.prod.conf.js
  11. TEMPAT SAMPAH
      lss_vue/cloud.ico
  12. 13 5
      lss_vue/config/index.js
  13. 9 2
      lss_vue/index.html
  14. 5 48
      lss_vue/package-lock.json
  15. 0 1
      lss_vue/package.json
  16. 1 1
      lss_vue/src/App.vue
  17. TEMPAT SAMPAH
      lss_vue/src/assets/image/404.png
  18. TEMPAT SAMPAH
      lss_vue/src/assets/image/login_logo.png
  19. TEMPAT SAMPAH
      lss_vue/src/assets/image/login_logo_white.png
  20. 1 1
      lss_vue/src/http.js
  21. 70 9
      lss_vue/src/main.js
  22. 6 1
      lss_vue/src/port.js
  23. 37 19
      lss_vue/src/routes.js
  24. 6 4
      lss_vue/src/views/404.vue
  25. 22 1
      lss_vue/src/views/Login.vue
  26. 12 4
      lss_vue/src/views/assets/assets.vue
  27. 83 8
      lss_vue/src/views/assets/assetsDetail.vue
  28. 1 1
      lss_vue/src/views/assets/assetsEdit.vue
  29. 11 5
      lss_vue/src/views/assets/assetsHandle.vue
  30. 2 2
      lss_vue/src/views/assets/assetsOperation.vue
  31. 1 1
      lss_vue/src/views/assets/assetsRegister.vue
  32. 742 406
      lss_vue/src/views/data/data.vue
  33. 2 2
      lss_vue/src/views/my/my.vue
  34. 1 0
      lss_vue/src/views/my/myAssets.vue
  35. 17 37
      lss_vue/src/views/my/myGrade.vue
  36. 4 0
      lss_vue/src/views/my/myInsDetail.vue
  37. 2 1
      lss_vue/src/views/my/myMessage.vue
  38. 1 0
      lss_vue/src/views/my/myScore.vue
  39. 42 18
      lss_vue/src/vuex/store.js
  40. 35 0
      lss_vue_wx/build/build.js
  41. 48 0
      lss_vue_wx/build/check-versions.js
  42. 9 0
      lss_vue_wx/build/dev-client.js
  43. 89 0
      lss_vue_wx/build/dev-server.js
  44. 72 0
      lss_vue_wx/build/utils.js
  45. 12 0
      lss_vue_wx/build/vue-loader.conf.js
  46. 73 0
      lss_vue_wx/build/webpack.base.conf.js
  47. 38 0
      lss_vue_wx/build/webpack.dev.conf.js
  48. 123 0
      lss_vue_wx/build/webpack.prod.conf.js
  49. 11 3
      lss_vue_wx/config/index.js
  50. 10 1
      lss_vue_wx/index.html
  51. 1 1
      lss_vue_wx/src/http.js
  52. 14 4
      lss_vue_wx/src/main.js
  53. 49 36
      lss_vue_wx/src/routes.js
  54. 7 6
      lss_vue_wx/src/views/assets/assets.vue
  55. 83 3
      lss_vue_wx/src/views/assets/assetsDetail.vue
  56. 15 12
      lss_vue_wx/src/views/assets/assetsDetailFrame.vue
  57. 1 1
      lss_vue_wx/src/views/assets/assetsEdit.vue
  58. 11 5
      lss_vue_wx/src/views/assets/assetsHandle.vue
  59. 2 2
      lss_vue_wx/src/views/assets/assetsOperation.vue
  60. 1 1
      lss_vue_wx/src/views/assets/assetsRegister.vue
  61. 0 741
      lss_vue_wx/src/views/data/data.vue
  62. 1 0
      lss_vue_wx/src/views/my/myAssets.vue
  63. 17 38
      lss_vue_wx/src/views/my/myGrade.vue
  64. 4 0
      lss_vue_wx/src/views/my/myInsDetail.vue
  65. 2 1
      lss_vue_wx/src/views/my/myMessage.vue
  66. 1 0
      lss_vue_wx/src/views/my/myScore.vue
  67. 6 5
      lss_vue_wx/src/views/task/task.vue

+ 1 - 2
.gitignore

@@ -24,8 +24,7 @@ target/
 /nbbuild/
 /dist/
 /nbdist/
-/.nb-gradle/
-build/
+/.nb-gradle
 
 ### VS Code ###
 .vscode/

+ 35 - 0
lss_vue/build/build.js

@@ -0,0 +1,35 @@
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+var ora = require('ora')
+var rm = require('rimraf')
+var path = require('path')
+var chalk = require('chalk')
+var webpack = require('webpack')
+var config = require('../config')
+var webpackConfig = require('./webpack.prod.conf')
+
+var spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+  if (err) throw err
+  webpack(webpackConfig, function (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')
+
+    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'
+    ))
+  })
+})

+ 48 - 0
lss_vue/build/check-versions.js

@@ -0,0 +1,48 @@
+var chalk = require('chalk')
+var semver = require('semver')
+var packageConfig = require('../package.json')
+var shell = require('shelljs')
+function exec (cmd) {
+  return require('child_process').execSync(cmd).toString().trim()
+}
+
+var 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 () {
+  var warnings = []
+  for (var i = 0; i < versionRequirements.length; i++) {
+    var 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 (var i = 0; i < warnings.length; i++) {
+      var warning = warnings[i]
+      console.log('  ' + warning)
+    }
+    console.log()
+    process.exit(1)
+  }
+}

+ 9 - 0
lss_vue/build/dev-client.js

@@ -0,0 +1,9 @@
+/* eslint-disable */
+require('eventsource-polyfill')
+var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
+
+hotClient.subscribe(function (event) {
+  if (event.action === 'reload') {
+    window.location.reload()
+  }
+})

+ 89 - 0
lss_vue/build/dev-server.js

@@ -0,0 +1,89 @@
+require('./check-versions')()
+
+var config = require('../config')
+if (!process.env.NODE_ENV) {
+  process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
+}
+
+var opn = require('opn')
+var path = require('path')
+var express = require('express')
+var webpack = require('webpack')
+var proxyMiddleware = require('http-proxy-middleware')
+var webpackConfig = require('./webpack.dev.conf')
+
+// default port where dev server listens for incoming traffic
+var port = process.env.PORT || config.dev.port
+// automatically open browser, if not set will be false
+var autoOpenBrowser = !!config.dev.autoOpenBrowser
+// Define HTTP proxies to your custom API backend
+// https://github.com/chimurai/http-proxy-middleware
+var proxyTable = config.dev.proxyTable
+
+var app = express()
+var compiler = webpack(webpackConfig)
+
+var devMiddleware = require('webpack-dev-middleware')(compiler, {
+  publicPath: webpackConfig.output.publicPath,
+  quiet: true
+})
+
+var hotMiddleware = require('webpack-hot-middleware')(compiler, {
+  log: () => {}
+})
+// force page reload when html-webpack-plugin template changes
+compiler.plugin('compilation', function (compilation) {
+  compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
+    hotMiddleware.publish({ action: 'reload' })
+    cb()
+  })
+})
+
+// proxy api requests
+Object.keys(proxyTable).forEach(function (context) {
+  var options = proxyTable[context]
+  if (typeof options === 'string') {
+    options = { target: options }
+  }
+  app.use(proxyMiddleware(options.filter || context, options))
+})
+
+// handle fallback for HTML5 history API
+app.use(require('connect-history-api-fallback')())
+
+// serve webpack bundle output
+app.use(devMiddleware)
+
+// enable hot-reload and state-preserving
+// compilation error display
+app.use(hotMiddleware)
+
+// serve pure static assets
+var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
+app.use(staticPath, express.static('./static'))
+
+var uri = 'http://localhost:' + port
+
+var _resolve
+var readyPromise = new Promise(resolve => {
+  _resolve = resolve
+})
+
+console.log('> Starting dev server...')
+devMiddleware.waitUntilValid(() => {
+  console.log('> Listening at ' + uri + '\n')
+  // when env is testing, don't need open it
+  if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
+    opn(uri)
+  }
+  _resolve()
+})
+
+var server = app.listen(port)
+
+module.exports = {
+  ready: readyPromise,
+  close: () => {
+    server.close()
+  }
+}

+ 72 - 0
lss_vue/build/utils.js

@@ -0,0 +1,72 @@
+var path = require('path')
+var config = require('../config')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+
+exports.assetsPath = function (_path) {
+  var assetsSubDirectory = process.env.NODE_ENV === 'production'
+    ? config.build.assetsSubDirectory
+    : config.dev.assetsSubDirectory
+  return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+  options = options || {}
+
+  var cssLoader = {
+    loader: 'css-loader',
+    options: {
+      //minimize: process.env.NODE_ENV === 'production',
+      sourceMap: options.sourceMap
+    }
+  }
+
+  // generate loader string to be used with extract text plugin
+  function generateLoaders (loader, loaderOptions) {
+    var loaders = [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',
+        publicPath: '../../'
+      })
+    } 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) {
+  var output = []
+  var loaders = exports.cssLoaders(options)
+  for (var extension in loaders) {
+    var loader = loaders[extension]
+    output.push({
+      test: new RegExp('\\.' + extension + '$'),
+      use: loader
+    })
+  }
+  return output
+}

+ 12 - 0
lss_vue/build/vue-loader.conf.js

@@ -0,0 +1,12 @@
+var utils = require('./utils')
+var config = require('../config')
+var isProduction = process.env.NODE_ENV === 'production'
+
+module.exports = {
+  loaders: utils.cssLoaders({
+    sourceMap: isProduction
+      ? config.build.productionSourceMap
+      : config.dev.cssSourceMap,
+    extract: isProduction
+  })
+}

+ 72 - 0
lss_vue/build/webpack.base.conf.js

@@ -0,0 +1,72 @@
+var path = require('path')
+var utils = require('./utils')
+var config = require('../config')
+var vueLoaderConfig = require('./vue-loader.conf')
+var webpack = require("webpack")
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+module.exports = {
+  entry: {
+    //app: './src/main.js'
+    app: ["babel-polyfill", "./src/main.js"]
+  },
+  externals: {
+      'vue': 'Vue',
+      'vuex': 'Vuex',
+      'echarts': 'echarts'
+  },
+  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'),
+      'scss_vars': '@/styles/vars.scss'
+    }
+  },
+  plugins: [
+    new webpack.ProvidePlugin({
+      jQuery: 'jquery',
+      $: 'jquery'
+    })
+  ],
+  module: {
+    rules: [
+      {
+        test: /\.vue$/,
+        loader: 'vue-loader',
+        options: vueLoaderConfig
+      },
+      {
+        test: /\.js$/,
+        loader: 'babel-loader',
+        include: [resolve('src'), resolve('test')]
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('img/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+        }
+      }
+    ]
+  }
+}

+ 38 - 0
lss_vue/build/webpack.dev.conf.js

@@ -0,0 +1,38 @@
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+
+// add hot-reload related code to entry chunks
+Object.keys(baseWebpackConfig.entry).forEach(function (name) {
+  baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
+})
+
+module.exports = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
+  },
+  // cheap-module-eval-source-map is faster for development
+  devtool: '#cheap-module-eval-source-map',
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': config.dev.env,
+      'BASE_URL' : '"/api"',
+      'LINK_URL' : '"/ips"'
+    }),
+    // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
+    new webpack.HotModuleReplacementPlugin(),
+    new webpack.NoEmitOnErrorsPlugin(),
+    // https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: 'index.html',
+      inject: true,
+      favicon: './cloud.ico'
+    }),
+    new FriendlyErrorsPlugin()
+  ]
+})

+ 123 - 0
lss_vue/build/webpack.prod.conf.js

@@ -0,0 +1,123 @@
+var path = require('path')
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var CopyWebpackPlugin = require('copy-webpack-plugin')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+
+var env = config.build.env
+
+var webpackConfig = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? '#source-map' : 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,
+      'BASE_URL' : '"/api"',
+      'LINK_URL' : '"/ips"'
+    }),
+    new webpack.optimize.UglifyJsPlugin({
+      compress: {
+        warnings: false
+      },
+      sourceMap: true
+    }),
+    // extract css into its own file
+    new ExtractTextPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash].css')
+    }),
+    // Compress extracted CSS. We are using this plugin so that possible
+    // duplicated CSS from different components can be deduped.
+    new OptimizeCSSPlugin({
+      cssProcessorOptions: {
+        safe: true
+      }
+    }),
+    // 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: './cloud.ico',
+      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'
+    }),
+    // split vendor js into its own file
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'vendor',
+      minChunks: function (module, count) {
+        // 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',
+      chunks: ['vendor']
+    }),
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ]
+})
+
+if (config.build.productionGzip) {
+  var 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) {
+  var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig

TEMPAT SAMPAH
lss_vue/cloud.ico


+ 13 - 5
lss_vue/config/index.js

@@ -1,5 +1,13 @@
 var path = require('path')
-
+var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+for (var i in ifaces) {
+    for (var j in ifaces[i]) {
+        var val = ifaces[i][j]
+        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+            ip = val.address
+        }
+    }
+}
 module.exports = {
   build: {
     env: require('./prod.env'),
@@ -7,20 +15,20 @@ module.exports = {
     assetsRoot: path.resolve(__dirname, '../dist'),
     assetsSubDirectory: 'static',
     assetsPublicPath: './',
-    productionSourceMap: true,
+    productionSourceMap: false,
     productionGzip: false,
     productionGzipExtensions: ['js', 'css'],
     bundleAnalyzerReport: process.env.npm_config_report
   },
   dev: {
     env: require('./dev.env'),
-    port: 8090,
+    port: 8070,
     autoOpenBrowser: true,
     assetsSubDirectory: 'static',
     assetsPublicPath: '/',
     proxyTable: {
         '/api': {    
-            target: 'http://192.168.101.166:8091',  // 接口域名 开发
+            target: 'http://'+ ip +':8091',  // 接口域名 开发
             secure: true,  // 如果是https接口,需要配置这个参数
             changeOrigin: true,  //是否跨域
             pathRewrite: { // 如果接口本身没有api的路径,那么这里将发送到后端的请求重写为没有api的路径
@@ -28,7 +36,7 @@ module.exports = {
             }
         },
         '/ips': {    
-            target: 'http://192.168.101.166:8080',  // 接口域名 开发
+            target: 'http://'+ ip +':8095',  // 接口域名 开发
             secure: true,  // 如果是https接口,需要配置这个参数
             changeOrigin: true,  //是否跨域
             pathRewrite: { // 如果接口本身没有api的路径,那么这里将发送到后端的请求重写为没有api的路径

+ 9 - 2
lss_vue/index.html

@@ -3,8 +3,8 @@
     <head>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-        <title>溧水</title>
-        <link rel="shortcut icon" type="image/x-icon" href="./cloud.ico" /> 
+        <title>数据中心</title>
+        <link rel="shortcut icon" type="image/x-icon" href="./cloud.ico" />
         <style>
             .toolbar {
                 background: #fff!important;
@@ -104,5 +104,12 @@
     </head>
     <body>
         <div id="app"></div>
+
+        <!-- 引入Vue.js -->
+        <script src="https://cdn.staticfile.org/vue/2.4.3/vue.min.js"></script>
+        <!-- 引入vuex.js -->
+        <script src="https://cdn.staticfile.org/vuex/3.0.0/vuex.min.js"></script>
+        <!-- 引入echarts -->
+        <script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
     </body>
 </html>

+ 5 - 48
lss_vue/package-lock.json

@@ -552,14 +552,6 @@
       "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
       "dev": true
     },
-    "async-validator": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
-      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
-      "requires": {
-        "babel-runtime": "6.x"
-      }
-    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -819,11 +811,6 @@
         "babel-types": "^6.24.1"
       }
     },
-    "babel-helper-vue-jsx-merge-props": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
-      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
-    },
     "babel-helpers": {
       "version": "6.24.1",
       "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
@@ -1387,6 +1374,7 @@
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
       "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "dev": true,
       "requires": {
         "core-js": "^2.4.0",
         "regenerator-runtime": "^0.11.0"
@@ -2463,7 +2451,8 @@
     "core-js": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
-      "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
+      "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
+      "dev": true
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -2780,11 +2769,6 @@
       "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
       "dev": true
     },
-    "deepmerge": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
-      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
-    },
     "define-property": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -3036,19 +3020,6 @@
       "integrity": "sha512-w0LHR2YD9Ex1o+Sz4IN2hYzCB8vaFtMNW+yJcBf6SZlVqgFahkne/4rGVJdk4fPF98Gch9snY7PiabOh+vqHNg==",
       "dev": true
     },
-    "element-ui": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.10.1.tgz",
-      "integrity": "sha512-V3WMDoVd1rOT+UI4xasvS8hmUkmc0ezXRuLzlTznBD0bN6jXAiGOeCtmYjj8GFN3lpGNeKyQ/8LCAFuAbxaEww==",
-      "requires": {
-        "async-validator": "~1.8.1",
-        "babel-helper-vue-jsx-merge-props": "^2.0.0",
-        "deepmerge": "^1.2.0",
-        "normalize-wheel": "^1.0.1",
-        "resize-observer-polyfill": "^1.5.0",
-        "throttle-debounce": "^1.0.1"
-      }
-    },
     "elliptic": {
       "version": "6.5.0",
       "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
@@ -5823,11 +5794,6 @@
         "sort-keys": "^1.0.0"
       }
     },
-    "normalize-wheel": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
-      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
-    },
     "npmlog": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -7523,7 +7489,8 @@
     "regenerator-runtime": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+      "dev": true
     },
     "regenerator-transform": {
       "version": "0.10.1",
@@ -7695,11 +7662,6 @@
       "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
       "dev": true
     },
-    "resize-observer-polyfill": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
-      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
-    },
     "resolve": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
@@ -8462,11 +8424,6 @@
         "inherits": "2"
       }
     },
-    "throttle-debounce": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
-      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
-    },
     "through2": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",

+ 0 - 1
lss_vue/package.json

@@ -12,7 +12,6 @@
   "dependencies": {
     "axios": "^0.15.3",
     "echarts": "^3.8.5",
-    "element-ui": "^2.10.1",
     "font-awesome": "^4.7.0",
     "jquery": "^3.4.1",
     "mint-ui": "^2.2.13",

+ 1 - 1
lss_vue/src/App.vue

@@ -23,7 +23,7 @@
                 this.isRouterAlive = false;
                 this.$nextTick(function(){
                     this.isRouterAlive = true;
-                })
+                });
             }
         },
     }

TEMPAT SAMPAH
lss_vue/src/assets/image/404.png


TEMPAT SAMPAH
lss_vue/src/assets/image/login_logo.png


TEMPAT SAMPAH
lss_vue/src/assets/image/login_logo_white.png


+ 1 - 1
lss_vue/src/http.js

@@ -12,7 +12,7 @@ function handleResults (response) {
 }
 
 function handleUrl (url) {
-    if(url.indexOf('.do') > -1) {
+    if(url.indexOf('tdatasizeinfowarehouseunits') > -1) {
         url = LINK_URL + url;
     } else {
         url = BASE_URL + url;

+ 70 - 9
lss_vue/src/main.js

@@ -1,18 +1,15 @@
-import Vue from 'vue'
+// import Vue from 'vue'
 import App from './App'
 
 import VueRouter from 'vue-router'
 
 import './assets/js/rem.js'
 
-// import ElementUI from 'element-ui'
-// import 'element-ui/lib/theme-chalk/index.css'
-
 import Mint from 'mint-ui';
 import 'mint-ui/lib/style.css';
 
 import store from './vuex/store'
-import Vuex from 'vuex'
+// import Vuex from 'vuex'
 import routes from './routes'
 
 import http from './http'
@@ -21,7 +18,7 @@ Vue.prototype.http = http
 import port from './port'
 Vue.prototype.port = port
 
-import echarts from 'echarts'
+// import echarts from 'echarts'
 Vue.prototype.echarts = echarts
 
 import VueClipboard from 'vue-clipboard2'
@@ -34,7 +31,9 @@ import picker from "./assets/js/custom-picker.js"
 import "./assets/css/custom-picker.css"
 Vue.use(picker)
 
-// Vue.use(ElementUI)
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+
 Vue.use(Mint);
 Vue.use(VueRouter)
 Vue.use(Vuex)
@@ -43,25 +42,87 @@ const router = new VueRouter({
     routes
 })
 
-
 router.beforeEach((to, from, next) => {
+    NProgress.configure({showSpinner: false}); 
+    NProgress.start();
+
+    if(to.meta.parentPath == "/tab_assets"){
+        document.title = '资产'
+    } else if(to.meta.parentPath == "/tab_data") {
+        document.title = '数据'
+    } else if(to.meta.parentPath == "/tab_my") {
+        document.title = '我的'
+    } else {
+        document.title = '数据中心'
+    }
+
     if (to.path == '/login') {
         sessionStorage.clear();
     }
 
     let user = JSON.parse(sessionStorage.getItem('user'));
-    if (!user && to.path != '/login') {
+    if (!user && to.path != '/login' && to.path != '/404') {
         next({ path: '/login' })
     } else {
+        if(to.path == '/login'){
+            var url = location.hash;
+            var theRequest = new Object();
+            if (url.indexOf("?") != -1) {
+                var str = url.split("?")[1].substr(1);
+                var strs = str.split("&");
+                for(var i = 0; i < strs.length; i ++) {
+                    theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
+                }
+                // Vue.prototype.$indicator.open();
+                Vue.prototype.http.post(Vue.prototype.port.manage.login, {
+                    "loginName": theRequest.sername,
+                    "password": theRequest.password,
+                } , res => {
+                    // Vue.prototype.$indicator.close();
+                    if (res.code == "ok") {
+                        sessionStorage.setItem('user', JSON.stringify(res.data));
+                        var str = '';
+                        for(var i in res.data.functions) {
+                            str += res.data.functions[i].code + ",";
+                        }
+                        sessionStorage.setItem('power',str);
+                        sessionStorage.setItem('assetsTab',-1);
+                        next({ path: '/assets' });
+                    } else {
+                        Vue.prototype.$toast({
+                            message: res.msg,
+                            duration: 2000
+                        });
+                        next({ path: '/404' });
+                    }
+                }, error => {
+                    // Vue.prototype.$indicator.close();
+                    Vue.prototype.$toast({
+                        message: error,
+                        duration: 2000
+                    });
+                    next({ path: '/404' });
+                })
+            } else {
+                next();
+            }
+            return false;
+        }
+
         if(to.path == '/assets' || to.path == '/data' || to.path == '/my') {
             $(".tabber").show();
         } else {
             $(".tabber").hide();
         }
+
         next()
     }
 })
 
+router.afterEach(() => {
+    NProgress.done()
+})
+
 new Vue({
     router,
     store,

+ 6 - 1
lss_vue/src/port.js

@@ -60,5 +60,10 @@ export default {
         insList: '/institution/list',                           // 管理制度列表
         insDetail: '/institution/detail',                       // 管理制度详情
     },
-
+    showData: {
+        centralRepository: '/tdatasizeinfowarehouseunits/centralRepository',        // 中心库数据模块数据
+        dataExchange: '/tdatasizeinfowarehouseunits/dataExchange',                  // 数据交换模块数据
+        fiveMainStorehouses: '/tdatasizeinfowarehouseunits/fiveMainStorehouses',    // 五大库模块数据
+        cloudPlatform: '/tdatasizeinfowarehouseunits/cloudPlatform',                // 云平台模块数据
+    },
 }

+ 37 - 19
lss_vue/src/routes.js

@@ -42,14 +42,21 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/assets', component: assets, name: '资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/detail/:id', component: assetsDetail, name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsRegister', component: assetsRegister, name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsEdit/:id/', component: assetsEdit, name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component: assetsNumber, name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsHandle/:id', component: assetsHandle, name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsMaintain/:id', component: assetsMaintain, name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsOperation/:id', component: assetsOperation, name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assets', component:(resolve)=>require(['./views/assets/assets.vue'] , resolve), name: '资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/detail/:id', component: assetsDetail, name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsRegister', component: assetsRegister, name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsEdit/:id/', component: assetsEdit, name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component: assetsNumber, name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsHandle/:id', component: assetsHandle, name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsMaintain/:id', component: assetsMaintain, name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsOperation/:id', component: assetsOperation, name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/detail/:id', component:(resolve)=>require(['./views/assets/assetsDetail.vue'] , resolve), name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsRegister', component:(resolve)=>require(['./views/assets/assetsRegister.vue'] , resolve), name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsEdit/:id/', component:(resolve)=>require(['./views/assets/assetsEdit.vue'] , resolve), name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component:(resolve)=>require(['./views/assets/assetsNumber.vue'] , resolve), name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsHandle/:id', component:(resolve)=>require(['./views/assets/assetsHandle.vue'] , resolve), name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsMaintain/:id', component:(resolve)=>require(['./views/assets/assetsMaintain.vue'] , resolve), name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsOperation/:id', component:(resolve)=>require(['./views/assets/assetsOperation.vue'] , resolve), name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
         ]
     },
     // 数据
@@ -59,7 +66,8 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/data', component: data, name: '数据', meta: {keepAlive: true, parentPath:'/tab_data'} }
+            // { path: '/data', component: data, name: '数据', meta: {keepAlive: true, parentPath:'/tab_data'} }
+            { path: '/data', component:(resolve)=>require(['./views/data/data.vue'] , resolve), name: '数据', meta: {keepAlive: true, parentPath:'/tab_data'} }
         ]
     },
     // 我的
@@ -69,16 +77,26 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/my', component: my, name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myMessage', component: myMessage, name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myAssets', component: myAssets, name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myScore', component: myScore, name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myScore/:uid/:time', component: myScoreDetail, name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/mySuggest', component: mySuggest, name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myAddress', component: myAddress, name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myGrade/:id/:name', component: myGrade, name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myInstitution', component: myInstitution, name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myInstitution/:id', component: myInsDetail, name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/my', component: my, name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myMessage', component: myMessage, name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myAssets', component: myAssets, name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myScore', component: myScore, name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myScore/:uid/:time', component: myScoreDetail, name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/mySuggest', component: mySuggest, name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myAddress', component: myAddress, name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myGrade/:id/:name', component: myGrade, name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myInstitution', component: myInstitution, name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myInstitution/:id', component: myInsDetail, name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/my', component:(resolve)=>require(['./views/my/my.vue'] , resolve), name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myMessage', component:(resolve)=>require(['./views/my/myMessage.vue'] , resolve), name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myAssets', component:(resolve)=>require(['./views/my/myAssets.vue'] , resolve), name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myScore', component:(resolve)=>require(['./views/my/myScore.vue'] , resolve), name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myScore/:uid/:time', component:(resolve)=>require(['./views/my/myScoreDetail.vue'] , resolve), name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/mySuggest', component:(resolve)=>require(['./views/my/mySuggest.vue'] , resolve), name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myAddress', component:(resolve)=>require(['./views/my/myAddress.vue'] , resolve), name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myGrade/:id/:name', component:(resolve)=>require(['./views/my/myGrade.vue'] , resolve), name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myInstitution', component:(resolve)=>require(['./views/my/myInstitution.vue'] , resolve), name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myInstitution/:id', component:(resolve)=>require(['./views/my/myInsDetail.vue'] , resolve), name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
         ]
     },
     {

+ 6 - 4
lss_vue/src/views/404.vue

@@ -3,9 +3,10 @@
         <div class="page-img">
             <img src="../assets/image/404.png" />
         </div>
-        <p class="page-container"><b>Error</b>  非常抱歉你访问的页面不存在!!!</p>
+        <p class="page-container"><b>Error</b>  页面加载失败!!!</p>
         <div class="page-button">
-            <el-button type="primary" round @click="back" icon="el-icon-s-promotion">返回首页</el-button>
+            <!-- <el-button type="primary" @click="back" icon="el-icon-s-promotion" style="color:#93ADFA">点击重新加载</el-button> -->
+            <a @click="back" style="color:#93ADFA">点击重新加载</a>
         </div>
     </div>
 </template>
@@ -19,7 +20,8 @@
 		},
 		methods: {
             back() {
-                this.$router.push('/map');
+                // this.$router.go(-1);
+                window.history.back()
             }
         },
         created() {
@@ -36,7 +38,7 @@
         padding: 100px 0 0 0 ;
 
         img {
-            width: 600px;
+            width: 2rem;
         }
     }
 

+ 22 - 1
lss_vue/src/views/Login.vue

@@ -2,7 +2,7 @@
     <div class="login_par">
         <div class="login_head">
             <div class="login_logo">
-                <img src="../assets/image/login_logo.png" style="width:80px;height:80px;"/>
+                <img src="../assets/image/login_logo_white.png" style="width:80px;height:80px;"/>
             </div>
             <mt-navbar v-model="selected">
                 <mt-tab-item id="login"><div class="login_tab">登录</div></mt-tab-item>
@@ -136,6 +136,7 @@
                     }
                 }
             },
+
             getCode() {
                 if(this.ruleForm.regPhone == "") {
                     this.$toast({
@@ -163,6 +164,7 @@
                     },1000)
                 }
             },
+
             handleRegistered() {
                 if(this.ruleForm.regName == "") {
                     this.$toast({
@@ -246,6 +248,20 @@
                         });
                     })
                 }
+            },
+        },
+        mounted() {
+            var url = location.hash;
+            var theRequest = new Object();
+            if (url.indexOf("?") != -1) {
+                var str = url.split("?")[1].substr(1);
+                var strs = str.split("&");
+                for(var i = 0; i < strs.length; i ++) {
+                    theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
+                }
+                this.ruleForm.loginName = theRequest.sername;
+                this.ruleForm.password = theRequest.password;
+                this.handleLogin();
             }
         },
     }
@@ -267,6 +283,7 @@
 
     .login_head , .mint-navbar {
         background: #2680EB;
+        // background: rgba(38,128,235,0.8);
     }
 
     .login_tab {
@@ -357,4 +374,8 @@
     .login_par .mint-button--primary {
         background-color: #2680EB!important;
     }
+
+    .login_par .mint-navbar .mint-tab-item.is-selected {
+        color: rgba(38,128,235,0.8);
+    }
 </style>

+ 12 - 4
lss_vue/src/views/assets/assets.vue

@@ -9,6 +9,7 @@
             <div class="btn_body">
                 <img v-on:click.stop="showList()" class="btn_img" src="../../assets/image/add.png">
                 <div class="btn_list" v-show="popupVisible">
+                    <!-- <div v-on:click="toTest()"><img src="../../assets/image/export.png">扫描二维码</div> -->
                     <div v-if="power.indexOf('registered_assets') > -1" v-on:click="register()"><img src="../../assets/image/register.png">登记资产</div>
                     <div v-on:click="exportExcel()"><img src="../../assets/image/export.png">导出报表</div>
                 </div>
@@ -73,11 +74,14 @@
             // 资产列表
             getList() {
                 this.$indicator.open();
-                this.http.post(this.port.assets.list, {
+                var from = {
                     'keyName': this.keyWord,
-                    'tagId': this.tagId==-1?"":this.tagId,
                     'pageNum': 1
-                } , 
+                }
+                if(this.tagId != -1) {
+                    from.tagId = this.tagId
+                }
+                this.http.post(this.port.assets.list, from, 
                 res => {
                     this.$indicator.close();
                     if (res.code == "ok") {
@@ -217,6 +221,10 @@
                 this.$router.push("/assetsRegister");
             },
 
+            toTest() {
+                this.$router.push("/test");
+            },
+
             exportExcel() {
                 this.$indicator.open();
                 this.http.downloadFile(this.port.assets.listExcel, {
@@ -229,7 +237,7 @@
                     let link = document.createElement('a')
                     link.style.display = 'none'
                     link.href = url
-                    link.setAttribute('download', '资产报表.xlsx')
+                    link.setAttribute('download', '资产报表.xls')
                     document.body.appendChild(link)
                     link.click()
                 }, error => {

+ 83 - 8
lss_vue/src/views/assets/assetsDetail.vue

@@ -7,7 +7,7 @@
             <mt-button slot="right" v-if="power.indexOf('assets_operation')>-1" v-on:click.native="jumpTo(3)">操作记录</mt-button>
         </mt-header>
         <div class="detail_body">
-            <div class="detailBox userInfo" v-on:click="power.indexOf('update_assets') > -1 ?jumpTo(0):''">
+            <div class="detailBox userInfo" v-on:click="showBase()">
                 <div class="left">
                     <img v-if="detail.pic != null" :src="detail.pic">
                     <img v-else src="../../assets/image/noPic.png">
@@ -56,7 +56,6 @@
 
                         <mt-cell-swipe v-if="power.indexOf('handle_assets') > -1 && power.indexOf('update_assets') == -1" :right="[
                             { content: '处置', style: { background: 'rgba(38,162,255,0.9)', color: '#fff' }, handler: () => handle(item.id) },
-                            
                             ]" :class="item.username==null?'noName':''">
                             <div class="one_assDel_head">
                                 <span class="canJump"><span style="color:#DC143C;font-weight:600">{{item.isMaintain == 1?"[待维护] ":""}}</span>{{item.modelNo}}</span>
@@ -101,6 +100,45 @@
                 </div>
             </div>
         </div>
+
+        <mt-popup v-model="popupVisible" position="right" class="allocation">
+            <mt-header class="detail_head" fixed title="资产基本信息">
+                <router-link to="" slot="left">
+                    <mt-button icon="back" v-on:click="closeBase()"></mt-button>
+                </router-link>
+            </mt-header>
+            <div class="detail_body">
+                <div class="detailBox userInfo" v-on:click="power.indexOf('update_assets') > -1 ?jumpTo(0):''">
+                    <div class="left">
+                        <img v-if="detail.pic != null" :src="detail.pic">
+                        <img v-else src="../../assets/image/noPic.png">
+                    </div>
+                    <div class="right">
+                        <div>
+                            <span class="nameEdit">{{detail.name}}</span>
+                            <span v-if="power.indexOf('update_assets')>-1" class="arrowEdit"><img src="../../assets/image/edit.png"></span>
+                        </div>
+                        <div class="department">
+                            {{detail.modelNumber}}
+                        </div>
+                        <div>
+                            <span class="num">{{detail.goodsNosVO!=null?detail.goodsNosVO.length:0}}{{detail.unit}}</span>
+                        </div>
+                    </div>
+                </div>
+                <div class="detailBox">
+                    <mt-cell title="所属分类" :value="detail.tagName"></mt-cell>
+                    <mt-cell title="数量" :value="detail.goodsNosVO!=null?detail.goodsNosVO.length:0"></mt-cell>
+                    <mt-cell title="单位" :value="detail.unit"></mt-cell>
+                    <mt-cell title="地址" :value="detail.address"></mt-cell>
+                </div>
+                <div class="detailBox">
+                    <mt-cell title="生产厂家" :value="detail.factory"></mt-cell>
+                    <mt-cell title="服务期限" :value="detail.serviceLife"></mt-cell>
+                    <mt-cell title="下次维护时间" :value="detail.nextIndate"></mt-cell>
+                </div>
+            </div>
+        </mt-popup>
     </div>
 </template>
 
@@ -118,6 +156,8 @@
                 scrList: [],
                 unuList: [],
                 state: -1,
+
+                popupVisible: false,
 			}
 		},
 		methods: {
@@ -312,7 +352,17 @@
 
             handle(id) {
                 this.$router.push("/assetsHandle/" + id );
-            }
+            },
+
+            // 展示基础资料
+            showBase() {
+                this.popupVisible = true;
+            },
+
+            closeBase() {
+                this.popupVisible = false;
+            },
+        
         },
         created() {
             this.getDetail();
@@ -373,6 +423,15 @@
         overflow: hidden;
         white-space: nowrap;
     }
+
+    span.nameEdit {
+        font-size: 0.16rem;
+        font-weight: 600;
+        margin: 0 0.15rem 0 0;
+        width: 80%;
+        overflow: hidden;
+        white-space: nowrap;
+    }
     
     span.num {
         font-size: 0.14rem;
@@ -398,6 +457,15 @@
         -o-transform: rotate(-90deg); /* Opera */
     }
 
+    span.arrowEdit {
+        float: right;
+    }
+
+    span.arrowEdit img {
+        width: 0.15rem;
+        margin-right: 0.05rem;
+    }
+
     .assDel {
         padding: 0.12rem 0.1rem;
     }
@@ -456,16 +524,11 @@
         text-overflow: ellipsis;
     }
 
-    .one_assDel_head > span:nth-child(1).canJump {
-        /* color: #26a2ff; */
-    }
-
     .one_assDel_head > span:nth-child(2){
         float: right;
     }
 
     .one_assDel_body span {
-        /* display:inline-block; */
         color: #aaa;
         vertical-align: middle;
     }
@@ -476,6 +539,18 @@
         height: 0.25rem;
         vertical-align: middle;
     }
+
+    /* 资产基础数据样式 */
+    .allocation {
+        width: 100%;
+        height: 100%;
+    }
+
+    .address_first .current{
+        background:#eee;
+        color: #6f83ff;
+        border-left: 2px solid #6f83ff;
+    }
 </style>
 <style>
     .detail_head .mint-header-title {

+ 1 - 1
lss_vue/src/views/assets/assetsEdit.vue

@@ -28,7 +28,7 @@
             </div>
             <div class="detailBox">
                 <mt-field label="生产厂家" placeholder="请输入生产厂家" v-model="assetsForm.factory"></mt-field>
-                <mt-field label="服务期限" placeholder="请输入服务期限" v-model="assetsForm.serviceLife"></mt-field>
+                <mt-field label="服务期限" placeholder="请输入服务期限" type="number" v-model="assetsForm.serviceLife"></mt-field>
                 <mt-field label="下次维护日期" placeholder="请选择下次维护日期" type="date" v-model="assetsForm.nextIndate"></mt-field>
             </div>
             <div class="detailBox">

+ 11 - 5
lss_vue/src/views/assets/assetsHandle.vue

@@ -110,11 +110,17 @@
 
             chooseType() {
                 var _this = this;
-                var dataShippingSpace = [
-                    {name: "未用"},
-                    {name: "在用"},
-                    {name: "报废"},
-                ];
+                var dataShippingSpace = [];
+                if(this.detail.state == 0) {
+                    dataShippingSpace = [
+                        {name: "在用"},
+                        {name: "报废"},
+                    ];
+                } else if(this.detail.state == 1) {
+                    dataShippingSpace = [
+                        {name: "未用"},
+                    ];
+                }
                 var pickerDiv = document.getElementById("state");
                 var vCardType = this.detail.state;
                 var pickerView = new PickerView({

+ 2 - 2
lss_vue/src/views/assets/assetsOperation.vue

@@ -227,7 +227,7 @@
                         let link = document.createElement('a')
                         link.style.display = 'none'
                         link.href = url
-                        link.setAttribute('download', '操作记录.xlsx')
+                        link.setAttribute('download', '处置记录.xls')
                         document.body.appendChild(link)
                         link.click()
                     }, error => {
@@ -248,7 +248,7 @@
                         let link = document.createElement('a')
                         link.style.display = 'none'
                         link.href = url
-                        link.setAttribute('download', '操作记录.xlsx')
+                        link.setAttribute('download', '维护记录.xls')
                         document.body.appendChild(link)
                         link.click()
                     }, error => {

+ 1 - 1
lss_vue/src/views/assets/assetsRegister.vue

@@ -28,7 +28,7 @@
             </div>
             <div class="detailBox">
                 <mt-field label="生产厂家" placeholder="请输入生产厂家" v-model="assetsForm.factory"></mt-field>
-                <mt-field label="服务期限" placeholder="请输入服务期限" v-model="assetsForm.serviceLife"></mt-field>
+                <mt-field label="服务期限" placeholder="请输入服务期限" type="number" v-model="assetsForm.serviceLife"></mt-field>
                 <mt-field label="下次维护日期" placeholder="请选择下次维护日期" type="date" v-model="assetsForm.nextIndate"></mt-field>
             </div>
             <div class="detailBox">

File diff ditekan karena terlalu besar
+ 742 - 406
lss_vue/src/views/data/data.vue


+ 2 - 2
lss_vue/src/views/my/my.vue

@@ -17,8 +17,8 @@
         <div class="mybox">
             <mt-cell title="我的消息" is-link v-on:click.native="jumpTo(1)"><mt-badge v-if="newNum!=0" size="small" type="error">{{newNum}}</mt-badge><img slot="icon" src="../../assets/image/my_message.png" width="24" height="24"></mt-cell>
             <mt-cell title="我的资产" is-link v-on:click.native="jumpTo(2)"><img slot="icon" src="../../assets/image/my_assets.png" width="24" height="24"></mt-cell>
-            <mt-cell v-if="user.roles[0].rolename != '部门领导'" title="我的评分" is-link v-on:click.native="jumpTo(3)"><img slot="icon" src="../../assets/image/my_score.png" width="24" height="24"></mt-cell>
-            <mt-cell v-if="user.roles[0].rolename != '部门领导'" title="我的建议" is-link v-on:click.native="jumpTo(4)"><img slot="icon" src="../../assets/image/my_sug.png" width="24" height="24"></mt-cell>
+            <mt-cell v-if="user.roles!= null && user.roles[0].rolename != '部门领导'" title="我的评分" is-link v-on:click.native="jumpTo(3)"><img slot="icon" src="../../assets/image/my_score.png" width="24" height="24"></mt-cell>
+            <mt-cell v-if="user.roles!= null && user.roles[0].rolename != '部门领导'" title="我的建议" is-link v-on:click.native="jumpTo(4)"><img slot="icon" src="../../assets/image/my_sug.png" width="24" height="24"></mt-cell>
         </div>
         <div class="mybox">
             <mt-cell title="通讯录" is-link v-on:click.native="jumpTo(5)"><img slot="icon" src="../../assets/image/my_com.png" width="24" height="24"></mt-cell>

+ 1 - 0
lss_vue/src/views/my/myAssets.vue

@@ -160,6 +160,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .tab_head {

+ 17 - 37
lss_vue/src/views/my/myGrade.vue

@@ -144,7 +144,7 @@
                     this.$indicator.close();
                     if (res.code == "ok") {
                         this.detail = res.data;
-                        if(res.data.scoreId == null) {
+                        if(res.data.scoreId == null && this.date[0].name == this.chooseTime) {
                             var from = {
                                 "uid": this.id,
                                 "scoringYearMonth": this.chooseTime,
@@ -213,14 +213,25 @@
             },
 
             toNext() {
+                if(this.detail.scoreId == null){
+                    this.$toast({
+                        message: "当月未找到TA的建议",
+                        duration: 2000
+                    });
+                    return false;
+                }
                 $(".one_suggest_reply .showMoreBtn .btn_list").addClass("hide").slideUp();
                 this.popupVisible = true;
+                this.ideaList = [];
                 this.$indicator.open();
-                this.http.post(this.port.my.ideaScore, {
+                var form = {
                     'uid': this.id,
                     'time': this.chooseTime,
-                    'scoreId': this.detail.scoreId
-                } , 
+                }
+                if(this.date[0].name == this.chooseTime && this.detail.scoreId != null) {
+                    form.scoreId = this.detail.scoreId
+                }
+                this.http.post(this.port.my.ideaScore, form , 
                 res => {
                     this.$indicator.close();
                     if (res.code == "ok") {
@@ -241,37 +252,6 @@
             },
 
             toPrev() {
-                // var from = {};
-                // if(this.detail.scoreId != null) {
-                //     from = {
-                //         "scoreId": this.detail.scoreId,
-                //         "total": parseInt(this.personalScore) + (this.detail.ideaScoreSum == null?0:parseFloat(this.detail.ideaScoreSum)),
-                //     }
-                // } else {
-                //     from = {
-                //         "uid": this.id,
-                //         "total": parseInt(this.personalScore) + (this.detail.ideaScoreSum == null?0:parseFloat(this.detail.ideaScoreSum)),
-                //     }
-                // }
-                // this.http.post(this.port.my.addOrUpdate, from , 
-                // res => {
-                //     if (res.code == "ok") {
-                //         this.popupVisible = false;
-                //         this.getDetail();
-                //     } else {
-                //         this.$toast({
-                //             message: res.msg,
-                //             duration: 2000
-                //         });
-                //     }
-                // }, error => {
-                //     this.popupVisible = false;
-                //     this.$toast({
-                //         message: error,
-                //         duration: 2000
-                //     });
-                // })
-
                 this.popupVisible = false;
                 this.getDetail();
             },
@@ -417,7 +397,7 @@
                         return false;
                     } else {
                         var from = {};
-                        if(this.ideaComment != null) {
+                        if(this.ideaList[this.chooseSugNum].ideaComment != null) {
                             from = {
                                 "ideaId": this.ideaList[this.chooseSugNum].id,
                                 "score": this.sugScore,
@@ -476,7 +456,7 @@
 
             openSugPop(i) {
                 this.sugScore = this.ideaList[i].score == null? 0 : this.ideaList[i].score;
-                this.sugContent = this.ideaComment == null? '' : this.ideaComment.content;
+                this.sugContent = this.ideaList[i].ideaComment == null? '' : this.ideaList[i].ideaComment.content;
                 this.sugScorePop = true;
                 this.chooseSugNum = i;
             },

+ 4 - 0
lss_vue/src/views/my/myInsDetail.vue

@@ -94,6 +94,10 @@
         background: #fff;
     }
 
+    .context_router {
+        height: 100%;
+    }
+
     .detail_head {
         background: #fff;
         color: #333;

+ 2 - 1
lss_vue/src/views/my/myMessage.vue

@@ -73,7 +73,7 @@
                 } else if(this.pageNum < this.pages) {
                     this.$indicator.open();
                     this.http.post(this.port.my.newList, {
-                        'id': this.id,
+                        'uid': this.user.id,
                         'pageNum': ++this.pageNum
                     } , 
                     res => {
@@ -147,6 +147,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .tab_head {

+ 1 - 0
lss_vue/src/views/my/myScore.vue

@@ -140,6 +140,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .detailBox {

+ 42 - 18
lss_vue/src/vuex/store.js

@@ -6,24 +6,48 @@ import * as getters from './getters'
 Vue.use(Vuex)
 
 // 应用初始状态
-const state = {
-    count: 10
-}
+// const state = {
+//     count: 10
+// }
 
-// 定义所需的 mutations
-const mutations = {
-    INCREMENT(state) {
-        state.count++
+// // 定义所需的 mutations
+// const mutations = {
+//     INCREMENT(state) {
+//         state.count++
+//     },
+//     DECREMENT(state) {
+//         state.count--
+//     },
+//     getRole(res) {
+//         console.log(res)
+//     }
+// }
+
+// // 创建 store 实例
+// export default new Vuex.Store({
+//     actions,
+//     getters,
+//     state,
+//     mutations
+// })
+
+const store = new Vuex.Store({
+    state: {
+        user: ''
+    },
+    getters: {
+        getName(state) {
+            return 'hello ' + state.name;
+        }
     },
-    DECREMENT(state) {
-        state.count--
+    mutations: {
+        mutationSetName(state, name) {
+            state.name = name;
+        }
+    },
+    actions: {
+        getRole(context, res) {
+        }
     }
-}
-
-// 创建 store 实例
-export default new Vuex.Store({
-    actions,
-    getters,
-    state,
-    mutations
-})
+});
+export default store;

+ 35 - 0
lss_vue_wx/build/build.js

@@ -0,0 +1,35 @@
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+var ora = require('ora')
+var rm = require('rimraf')
+var path = require('path')
+var chalk = require('chalk')
+var webpack = require('webpack')
+var config = require('../config')
+var webpackConfig = require('./webpack.prod.conf')
+
+var spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+  if (err) throw err
+  webpack(webpackConfig, function (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')
+
+    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'
+    ))
+  })
+})

+ 48 - 0
lss_vue_wx/build/check-versions.js

@@ -0,0 +1,48 @@
+var chalk = require('chalk')
+var semver = require('semver')
+var packageConfig = require('../package.json')
+var shell = require('shelljs')
+function exec (cmd) {
+  return require('child_process').execSync(cmd).toString().trim()
+}
+
+var 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 () {
+  var warnings = []
+  for (var i = 0; i < versionRequirements.length; i++) {
+    var 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 (var i = 0; i < warnings.length; i++) {
+      var warning = warnings[i]
+      console.log('  ' + warning)
+    }
+    console.log()
+    process.exit(1)
+  }
+}

+ 9 - 0
lss_vue_wx/build/dev-client.js

@@ -0,0 +1,9 @@
+/* eslint-disable */
+require('eventsource-polyfill')
+var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
+
+hotClient.subscribe(function (event) {
+  if (event.action === 'reload') {
+    window.location.reload()
+  }
+})

+ 89 - 0
lss_vue_wx/build/dev-server.js

@@ -0,0 +1,89 @@
+require('./check-versions')()
+
+var config = require('../config')
+if (!process.env.NODE_ENV) {
+  process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
+}
+
+var opn = require('opn')
+var path = require('path')
+var express = require('express')
+var webpack = require('webpack')
+var proxyMiddleware = require('http-proxy-middleware')
+var webpackConfig = require('./webpack.dev.conf')
+
+// default port where dev server listens for incoming traffic
+var port = process.env.PORT || config.dev.port
+// automatically open browser, if not set will be false
+var autoOpenBrowser = !!config.dev.autoOpenBrowser
+// Define HTTP proxies to your custom API backend
+// https://github.com/chimurai/http-proxy-middleware
+var proxyTable = config.dev.proxyTable
+
+var app = express()
+var compiler = webpack(webpackConfig)
+
+var devMiddleware = require('webpack-dev-middleware')(compiler, {
+  publicPath: webpackConfig.output.publicPath,
+  quiet: true
+})
+
+var hotMiddleware = require('webpack-hot-middleware')(compiler, {
+  log: () => {}
+})
+// force page reload when html-webpack-plugin template changes
+compiler.plugin('compilation', function (compilation) {
+  compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
+    hotMiddleware.publish({ action: 'reload' })
+    cb()
+  })
+})
+
+// proxy api requests
+Object.keys(proxyTable).forEach(function (context) {
+  var options = proxyTable[context]
+  if (typeof options === 'string') {
+    options = { target: options }
+  }
+  app.use(proxyMiddleware(options.filter || context, options))
+})
+
+// handle fallback for HTML5 history API
+app.use(require('connect-history-api-fallback')())
+
+// serve webpack bundle output
+app.use(devMiddleware)
+
+// enable hot-reload and state-preserving
+// compilation error display
+app.use(hotMiddleware)
+
+// serve pure static assets
+var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
+app.use(staticPath, express.static('./static'))
+
+var uri = 'http://localhost:' + port
+
+var _resolve
+var readyPromise = new Promise(resolve => {
+  _resolve = resolve
+})
+
+console.log('> Starting dev server...')
+devMiddleware.waitUntilValid(() => {
+  console.log('> Listening at ' + uri + '\n')
+  // when env is testing, don't need open it
+  if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
+    opn(uri)
+  }
+  _resolve()
+})
+
+var server = app.listen(port)
+
+module.exports = {
+  ready: readyPromise,
+  close: () => {
+    server.close()
+  }
+}

+ 72 - 0
lss_vue_wx/build/utils.js

@@ -0,0 +1,72 @@
+var path = require('path')
+var config = require('../config')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+
+exports.assetsPath = function (_path) {
+  var assetsSubDirectory = process.env.NODE_ENV === 'production'
+    ? config.build.assetsSubDirectory
+    : config.dev.assetsSubDirectory
+  return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+  options = options || {}
+
+  var cssLoader = {
+    loader: 'css-loader',
+    options: {
+      //minimize: process.env.NODE_ENV === 'production',
+      sourceMap: options.sourceMap
+    }
+  }
+
+  // generate loader string to be used with extract text plugin
+  function generateLoaders (loader, loaderOptions) {
+    var loaders = [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',
+        publicPath: '../../'
+      })
+    } 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) {
+  var output = []
+  var loaders = exports.cssLoaders(options)
+  for (var extension in loaders) {
+    var loader = loaders[extension]
+    output.push({
+      test: new RegExp('\\.' + extension + '$'),
+      use: loader
+    })
+  }
+  return output
+}

+ 12 - 0
lss_vue_wx/build/vue-loader.conf.js

@@ -0,0 +1,12 @@
+var utils = require('./utils')
+var config = require('../config')
+var isProduction = process.env.NODE_ENV === 'production'
+
+module.exports = {
+  loaders: utils.cssLoaders({
+    sourceMap: isProduction
+      ? config.build.productionSourceMap
+      : config.dev.cssSourceMap,
+    extract: isProduction
+  })
+}

+ 73 - 0
lss_vue_wx/build/webpack.base.conf.js

@@ -0,0 +1,73 @@
+var path = require('path')
+var utils = require('./utils')
+var config = require('../config')
+var vueLoaderConfig = require('./vue-loader.conf')
+var webpack = require("webpack")
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+module.exports = {
+  entry: {
+    //app: './src/main.js'
+    app: ["babel-polyfill", "./src/main.js"]
+  },
+  externals: {
+    'vue': 'Vue',
+    'vuex': 'Vuex',
+    'echarts': 'echarts',
+    'element-ui': 'ELEMENT'
+  },
+  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'),
+      'scss_vars': '@/styles/vars.scss'
+    }
+  },
+  plugins: [
+    new webpack.ProvidePlugin({
+      jQuery: 'jquery',
+      $: 'jquery'
+    })
+  ],
+  module: {
+    rules: [
+      {
+        test: /\.vue$/,
+        loader: 'vue-loader',
+        options: vueLoaderConfig
+      },
+      {
+        test: /\.js$/,
+        loader: 'babel-loader',
+        include: [resolve('src'), resolve('test')]
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('img/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+        }
+      }
+    ]
+  }
+}

+ 38 - 0
lss_vue_wx/build/webpack.dev.conf.js

@@ -0,0 +1,38 @@
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+
+// add hot-reload related code to entry chunks
+Object.keys(baseWebpackConfig.entry).forEach(function (name) {
+  baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
+})
+
+module.exports = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
+  },
+  // cheap-module-eval-source-map is faster for development
+  devtool: '#cheap-module-eval-source-map',
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': config.dev.env,
+      'BASE_URL' : '"/api"',
+      'LINK_URL' : '"/ips"'
+    }),
+    // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
+    new webpack.HotModuleReplacementPlugin(),
+    new webpack.NoEmitOnErrorsPlugin(),
+    // https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: 'index.html',
+      inject: true,
+      favicon: './cloud.ico'
+    }),
+    new FriendlyErrorsPlugin()
+  ]
+})

+ 123 - 0
lss_vue_wx/build/webpack.prod.conf.js

@@ -0,0 +1,123 @@
+var path = require('path')
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var CopyWebpackPlugin = require('copy-webpack-plugin')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+
+var env = config.build.env
+
+var webpackConfig = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? '#source-map' : 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,
+      'BASE_URL' : '"/api"',
+      'LINK_URL' : '"/ips"'
+    }),
+    new webpack.optimize.UglifyJsPlugin({
+      compress: {
+        warnings: false
+      },
+      sourceMap: true
+    }),
+    // extract css into its own file
+    new ExtractTextPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash].css')
+    }),
+    // Compress extracted CSS. We are using this plugin so that possible
+    // duplicated CSS from different components can be deduped.
+    new OptimizeCSSPlugin({
+      cssProcessorOptions: {
+        safe: true
+      }
+    }),
+    // 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: './cloud.ico',
+      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'
+    }),
+    // split vendor js into its own file
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'vendor',
+      minChunks: function (module, count) {
+        // 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',
+      chunks: ['vendor']
+    }),
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ]
+})
+
+if (config.build.productionGzip) {
+  var 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) {
+  var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig

+ 11 - 3
lss_vue_wx/config/index.js

@@ -1,5 +1,13 @@
 var path = require('path')
-
+var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+for (var i in ifaces) {
+    for (var j in ifaces[i]) {
+        var val = ifaces[i][j]
+        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+            ip = val.address
+        }
+    }
+}
 module.exports = {
   build: {
     env: require('./prod.env'),
@@ -20,7 +28,7 @@ module.exports = {
     assetsPublicPath: '/',
     proxyTable: {
         '/api': {    
-            target: 'http://192.168.101.166:8091',  // 接口域名 开发
+            target: 'http://'+ ip +':8091',  // 接口域名 开发
             secure: true,  // 如果是https接口,需要配置这个参数
             changeOrigin: true,  //是否跨域
             pathRewrite: { // 如果接口本身没有api的路径,那么这里将发送到后端的请求重写为没有api的路径
@@ -28,7 +36,7 @@ module.exports = {
             }
         },
         '/ips': {    
-            target: 'http://192.168.101.166:8080',  // 接口域名 开发
+            target: 'http://'+ ip +':8095',  // 接口域名 开发
             secure: true,  // 如果是https接口,需要配置这个参数
             changeOrigin: true,  //是否跨域
             pathRewrite: { // 如果接口本身没有api的路径,那么这里将发送到后端的请求重写为没有api的路径

+ 10 - 1
lss_vue_wx/index.html

@@ -3,7 +3,7 @@
     <head>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-        <title>溧水</title>
+        <title>机柜管理</title>
         <link rel="shortcut icon" type="image/x-icon" href="./cloud.ico" /> 
         <style>
             .toolbar {
@@ -128,5 +128,14 @@
     </head>
     <body>
         <div id="app"></div>
+
+        <!-- 引入Vue.js -->
+        <script src="https://cdn.staticfile.org/vue/2.4.3/vue.min.js"></script>
+        <!-- 引入vuex.js -->
+        <script src="https://cdn.staticfile.org/vuex/3.0.0/vuex.min.js"></script>
+        <!-- 引入echarts -->
+        <script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
+        <!-- 引入组件库 -->
+        <script src="https://cdn.staticfile.org/element-ui/2.4.3/index.js"></script>
     </body>
 </html>

+ 1 - 1
lss_vue_wx/src/http.js

@@ -12,7 +12,7 @@ function handleResults (response) {
 }
 
 function handleUrl (url) {
-    if(url.indexOf('.do') > -1) {
+    if(url.indexOf('tdatasizeinfowarehouseunits') > -1) {
         url = LINK_URL + url;
     } else {
         url = BASE_URL + url;

+ 14 - 4
lss_vue_wx/src/main.js

@@ -1,18 +1,18 @@
-import Vue from 'vue'
+// import Vue from 'vue'
 import App from './App'
 
 import VueRouter from 'vue-router'
 
 import './assets/js/rem.js'
 
-import ElementUI from 'element-ui'
+// import ElementUI from 'element-ui'
 import 'element-ui/lib/theme-chalk/index.css'
 
 import Mint from 'mint-ui';
 import 'mint-ui/lib/style.css';
 
 import store from './vuex/store'
-import Vuex from 'vuex'
+// import Vuex from 'vuex'
 import routes from './routes'
 
 import http from './http'
@@ -21,7 +21,7 @@ Vue.prototype.http = http
 import port from './port'
 Vue.prototype.port = port
 
-import echarts from 'echarts'
+// import echarts from 'echarts'
 Vue.prototype.echarts = echarts
 
 import VueClipboard from 'vue-clipboard2'
@@ -34,6 +34,9 @@ import picker from "./assets/js/custom-picker.js"
 import "./assets/css/custom-picker.css"
 Vue.use(picker)
 
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+
 Vue.use(ElementUI)
 Vue.use(Mint);
 Vue.use(VueRouter)
@@ -45,6 +48,9 @@ const router = new VueRouter({
 
 
 router.beforeEach((to, from, next) => {
+    NProgress.configure({showSpinner: false}); 
+    NProgress.start();
+
     if (to.path == '/login') {
         sessionStorage.clear();
     }
@@ -62,6 +68,10 @@ router.beforeEach((to, from, next) => {
     }
 })
 
+router.afterEach(() => {
+    NProgress.done()
+})
+
 new Vue({
     router,
     store,

+ 49 - 36
lss_vue_wx/src/routes.js

@@ -13,9 +13,6 @@ import assetsHandle from './views/assets/assetsHandle.vue'
 import assetsOperation from './views/assets/assetsOperation.vue'
 import assetsMaintain from './views/assets/assetsMaintain.vue'
 
-// 数据
-import data from './views/data/data.vue'
-
 // 任务
 import task from './views/task/task.vue'
 import taskDetail from './views/task/taskDetail.vue'
@@ -49,25 +46,25 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/assets', component: assets, name: '资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/detail/:id', component: assetsDetail, name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/detailFrame/:id', component: assetsDetailFrame, name: '机柜详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsRegister', component: assetsRegister, name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsEdit/:id/', component: assetsEdit, name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component: assetsNumber, name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsHandle/:id', component: assetsHandle, name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsMaintain/:id', component: assetsMaintain, name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-            { path: '/assetsOperation/:id', component: assetsOperation, name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
-        ]
-    },
-    // 数据
-    {
-        path: '/',
-        component: Home,
-        name: '',
-        leaf: true,//只有一个节点
-        children: [
-            { path: '/data', component: data, name: '数据', meta: {keepAlive: true, parentPath:'/tab_data'} }
+            // { path: '/assets', component: assets, name: '资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/detail/:id', component: assetsDetail, name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/detailFrame/:id', component: assetsDetailFrame, name: '机柜详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsRegister', component: assetsRegister, name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsEdit/:id/', component: assetsEdit, name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component: assetsNumber, name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsHandle/:id', component: assetsHandle, name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsMaintain/:id', component: assetsMaintain, name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            // { path: '/assetsOperation/:id', component: assetsOperation, name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+
+            { path: '/assets', component:(resolve)=>require(['./views/assets/assets.vue'] , resolve), name: '资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/detail/:id', component:(resolve)=>require(['./views/assets/assetsDetail.vue'] , resolve), name: '资产详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/detailFrame/:id', component:(resolve)=>require(['./views/assets/assetsDetailFrame.vue'] , resolve), name: '机柜详情', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsRegister', component:(resolve)=>require(['./views/assets/assetsRegister.vue'] , resolve), name: '登记资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsEdit/:id/', component:(resolve)=>require(['./views/assets/assetsEdit.vue'] , resolve), name: '资产编辑', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsNumber/:id/:divisionCode/:suffixCode', component:(resolve)=>require(['./views/assets/assetsNumber.vue'] , resolve), name: '资产编号', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsHandle/:id', component:(resolve)=>require(['./views/assets/assetsHandle.vue'] , resolve), name: '处置资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsMaintain/:id', component:(resolve)=>require(['./views/assets/assetsMaintain.vue'] , resolve), name: '维护资产', meta: {keepAlive: true, parentPath:'/tab_assets'} },
+            { path: '/assetsOperation/:id', component:(resolve)=>require(['./views/assets/assetsOperation.vue'] , resolve), name: '操作记录', meta: {keepAlive: true, parentPath:'/tab_assets'} },
         ]
     },
     // 任务
@@ -77,10 +74,15 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/task', component: task, name: '任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
-            { path: '/task/:id', component: taskDetail, name: '任务详情', meta: {keepAlive: true, parentPath:'/tab_task'} },
-            { path: '/taskRegister', component: taskRegister, name: '新增任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
-            { path: '/taskEdit/:id', component: taskEdit, name: '修改任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            // { path: '/task', component: task, name: '任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            // { path: '/task/:id', component: taskDetail, name: '任务详情', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            // { path: '/taskRegister', component: taskRegister, name: '新增任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            // { path: '/taskEdit/:id', component: taskEdit, name: '修改任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+
+            { path: '/task', component:(resolve)=>require(['./views/task/task.vue'] , resolve), name: '任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/task/:id', component:(resolve)=>require(['./views/task/taskDetail.vue'] , resolve), name: '任务详情', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/taskRegister', component:(resolve)=>require(['./views/task/taskRegister.vue'] , resolve), name: '新增任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
+            { path: '/taskEdit/:id', component:(resolve)=>require(['./views/task/taskEdit.vue'] , resolve), name: '修改任务', meta: {keepAlive: true, parentPath:'/tab_task'} },
         ]
     },
     // 我的
@@ -90,16 +92,27 @@ let routes = [
         name: '',
         leaf: true,//只有一个节点
         children: [
-            { path: '/my', component: my, name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myMessage', component: myMessage, name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myAssets', component: myAssets, name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myScore', component: myScore, name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myScore/:uid/:time', component: myScoreDetail, name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/mySuggest', component: mySuggest, name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myAddress', component: myAddress, name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myGrade/:id/:name', component: myGrade, name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myInstitution', component: myInstitution, name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
-            { path: '/myInstitution/:id', component: myInsDetail, name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/my', component: my, name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myMessage', component: myMessage, name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myAssets', component: myAssets, name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myScore', component: myScore, name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myScore/:uid/:time', component: myScoreDetail, name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/mySuggest', component: mySuggest, name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myAddress', component: myAddress, name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myGrade/:id/:name', component: myGrade, name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myInstitution', component: myInstitution, name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            // { path: '/myInstitution/:id', component: myInsDetail, name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+
+            { path: '/my', component:(resolve)=>require(['./views/my/my.vue'] , resolve), name: '我的', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myMessage', component:(resolve)=>require(['./views/my/myMessage.vue'] , resolve), name: '我的消息', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myAssets', component:(resolve)=>require(['./views/my/myAssets.vue'] , resolve), name: '我的资产', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myScore', component:(resolve)=>require(['./views/my/myScore.vue'] , resolve), name: '我的评分', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myScore/:uid/:time', component:(resolve)=>require(['./views/my/myScoreDetail.vue'] , resolve), name: '我的评分详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/mySuggest', component:(resolve)=>require(['./views/my/mySuggest.vue'] , resolve), name: '我的建议', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myAddress', component:(resolve)=>require(['./views/my/myAddress.vue'] , resolve), name: '通讯录', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myGrade/:id/:name', component:(resolve)=>require(['./views/my/myGrade.vue'] , resolve), name: '打分页面', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myInstitution', component:(resolve)=>require(['./views/my/myInstitution.vue'] , resolve), name: '管理制度', meta: {keepAlive: true, parentPath:'/tab_my'} },
+            { path: '/myInstitution/:id', component:(resolve)=>require(['./views/my/myInsDetail.vue'] , resolve), name: '管理制度详情', meta: {keepAlive: true, parentPath:'/tab_my'} },
         ]
     },
     {

+ 7 - 6
lss_vue_wx/src/views/assets/assets.vue

@@ -58,12 +58,12 @@
                     <div class="frame_detail"> 查看详情 > </div>
                 </li>
                 <li v-if="tagId == -3" v-for="item in list" class="one_device">
-                    <mt-cell-swipe :id="'dev' + item.id" v-if="item.goodsId == null" title="" 
+                    <mt-cell-swipe :id="'dev' + item.id" v-if="item.goodsNos[0].goodsId == null" title="" 
                         :right="[{ content: '上架', style: { background: '#2680EB', color: '#fff' }, handler: () => chooseDevice(item.id) }]">
                         <div style="width: 100%;">
                             <div class="new_title">
-                                <span>{{item.deviceName}}</span>
-                                <span>{{item.modelNo}}</span>
+                                <span>{{item.name}}</span>
+                                <span>{{item.modelNumber}}</span>
                                 <span>{{item.currentState==0?'禁止':'运行'}}</span>
                             </div>
                             <div class="new_label">
@@ -78,8 +78,8 @@
                         :right="[{ content: '下架', style: { background: 'red', color: '#fff' }, handler: () => handle(item.id) }]">
                         <div style="width: 100%;">
                             <div class="new_title">
-                                <span>{{item.deviceName}}</span>
-                                <span>{{item.modelNo}}</span>
+                                <span>{{item.name}}</span>
+                                <span>{{item.modelNumber}}</span>
                                 <span>{{item.currentState==0?'禁止':'运行'}}</span>
                             </div>
                             <div class="new_label">
@@ -123,6 +123,7 @@
 		methods: {
             // 资产列表
             getList() {
+                this.list = [];
                 this.$indicator.open();
                 var tagId = this.tagId==-1?"":this.tagId;
                 if(tagId == -2) {
@@ -446,7 +447,7 @@
                     let link = document.createElement('a')
                     link.style.display = 'none'
                     link.href = url
-                    link.setAttribute('download', '资产报表.xlsx')
+                    link.setAttribute('download', '资产报表.xls')
                     document.body.appendChild(link)
                     link.click()
                 }, error => {

+ 83 - 3
lss_vue_wx/src/views/assets/assetsDetail.vue

@@ -7,7 +7,7 @@
             <mt-button slot="right" v-if="power.indexOf('assets_operation')>-1" v-on:click.native="jumpTo(3)">操作记录</mt-button>
         </mt-header>
         <div class="detail_body">
-            <div class="detailBox userInfo" v-on:click="power.indexOf('update_assets') > -1 ?jumpTo(0):''">
+            <div class="detailBox userInfo" v-on:click="showBase()">
                 <div class="left">
                     <img v-if="detail.pic != null" :src="detail.pic">
                     <img v-else src="../../assets/image/noPic.png">
@@ -56,7 +56,6 @@
 
                         <mt-cell-swipe v-if="power.indexOf('handle_assets') > -1 && power.indexOf('update_assets') == -1" :right="[
                             { content: '处置', style: { background: 'rgba(38,162,255,0.9)', color: '#fff' }, handler: () => handle(item.id) },
-                            
                             ]" :class="item.username==null?'noName':''">
                             <div class="one_assDel_head">
                                 <span class="canJump"><span style="color:#DC143C;font-weight:600">{{item.isMaintain == 1?"[待维护] ":""}}</span>{{item.modelNo}}</span>
@@ -101,6 +100,46 @@
                 </div>
             </div>
         </div>
+
+        
+        <mt-popup v-model="popupVisible" position="right" class="allocation">
+            <mt-header class="detail_head" fixed title="资产基本信息">
+                <router-link to="" slot="left">
+                    <mt-button icon="back" v-on:click="closeBase()"></mt-button>
+                </router-link>
+            </mt-header>
+            <div class="detail_body">
+                <div class="detailBox userInfo" v-on:click="power.indexOf('update_assets') > -1 ?jumpTo(0):''">
+                    <div class="left">
+                        <img v-if="detail.pic != null" :src="detail.pic">
+                        <img v-else src="../../assets/image/noPic.png">
+                    </div>
+                    <div class="right">
+                        <div>
+                            <span class="nameEdit">{{detail.name}}</span>
+                            <span v-if="power.indexOf('update_assets')>-1" class="arrowEdit"><img src="../../assets/image/edit.png"></span>
+                        </div>
+                        <div class="department">
+                            {{detail.modelNumber}}
+                        </div>
+                        <div>
+                            <span class="num">{{detail.goodsNosVO!=null?detail.goodsNosVO.length:0}}{{detail.unit}}</span>
+                        </div>
+                    </div>
+                </div>
+                <div class="detailBox">
+                    <mt-cell title="所属分类" :value="detail.tagName"></mt-cell>
+                    <mt-cell title="数量" :value="detail.goodsNosVO!=null?detail.goodsNosVO.length:0"></mt-cell>
+                    <mt-cell title="单位" :value="detail.unit"></mt-cell>
+                    <mt-cell title="地址" :value="detail.address"></mt-cell>
+                </div>
+                <div class="detailBox">
+                    <mt-cell title="生产厂家" :value="detail.factory"></mt-cell>
+                    <mt-cell title="服务期限" :value="detail.serviceLife"></mt-cell>
+                    <mt-cell title="下次维护时间" :value="detail.nextIndate"></mt-cell>
+                </div>
+            </div>
+        </mt-popup>
     </div>
 </template>
 
@@ -118,6 +157,8 @@
                 scrList: [],
                 unuList: [],
                 state: -1,
+                
+                popupVisible: false,
 			}
 		},
 		methods: {
@@ -312,7 +353,16 @@
 
             handle(id) {
                 this.$router.push("/assetsHandle/" + id );
-            }
+            },
+
+            // 展示基础资料
+            showBase() {
+                this.popupVisible = true;
+            },
+
+            closeBase() {
+                this.popupVisible = false;
+            },
         },
         created() {
             this.getDetail();
@@ -374,6 +424,15 @@
         white-space: nowrap;
     }
     
+    span.nameEdit {
+        font-size: 0.16rem;
+        font-weight: 600;
+        margin: 0 0.15rem 0 0;
+        width: 80%;
+        overflow: hidden;
+        white-space: nowrap;
+    }
+    
     span.num {
         font-size: 0.14rem;
         color: #26a2ff;
@@ -398,6 +457,15 @@
         -o-transform: rotate(-90deg); /* Opera */
     }
 
+    span.arrowEdit {
+        float: right;
+    }
+
+    span.arrowEdit img {
+        width: 0.15rem;
+        margin-right: 0.05rem;
+    }
+
     .assDel {
         padding: 0.12rem 0.1rem;
     }
@@ -470,6 +538,18 @@
         height: 0.25rem;
         vertical-align: middle;
     }
+
+    /* 资产基础数据样式 */
+    .allocation {
+        width: 100%;
+        height: 100%;
+    }
+
+    .address_first .current{
+        background:#eee;
+        color: #6f83ff;
+        border-left: 2px solid #6f83ff;
+    }
 </style>
 <style>
     .detail_head .mint-header-title {

+ 15 - 12
lss_vue_wx/src/views/assets/assetsDetailFrame.vue

@@ -8,17 +8,17 @@
         <div class="detail_body">
             <div class="detailBox userInfo">
                 <div class="frame_title">
-                    <span>{{detail.name}}</span>
+                    <span>{{detail.rack.name}}</span>
                     <span>
-                        <mt-button v-if="detail.doorStatus==0" size="small" type="primary" v-on:click.native.stop="openDoor(1)">开门</mt-button>
+                        <mt-button v-if="detail.rack.doorStatus==0" size="small" type="primary" v-on:click.native.stop="openDoor(1)">开门</mt-button>
                         <span v-else style="color:red">已开门</span>
                     </span>
                 </div>
                 <div class="frame_number">{{detail.modelNumber}}</div>
                 <div class="frame_label">
-                    <span><span>机架ID:</span>{{detail.rackIp}}</span>
-                    <span><span>温度:</span>{{detail.temp}}</span>
-                    <span><span>湿度:</span>{{detail.hum}}</span>
+                    <span><span>机架ID:</span>{{detail.rack.rackIp}}</span>
+                    <span><span>温度:</span>{{detail.rack.temp}}</span>
+                    <span><span>湿度:</span>{{detail.rack.hum}}</span>
                 </div>
             </div>
             <div class="detailBox">
@@ -27,20 +27,23 @@
                     <!-- <img v-if="power.indexOf('update_assets')>-1" v-on:click="addNo()" src="../../assets/image/add.png"> -->
                 </div>
                 <div class="assDel_List">
-                    <div class="one_assDel isFrame" v-for="item in delList">
+                    <div v-if="delList.length == 0" style="padding: 0.3rem;text-align:center;color:#ccc;">
+                        暂无机柜设备
+                    </div>
+                    <div v-else class="one_assDel isFrame" v-for="item in delList">
                         <mt-cell-swipe title="" :right="[
                             { content: '下架', style: { background: 'red', color: '#fff' }, handler: () => handle(item.id) },
                         ]">
                             <div>
                                 <div class="new_title">
-                                    <span>{{item.deviceName}}</span>
-                                    <span>{{item.modelNo}}</span>
+                                    <span>{{item.name}}</span>
+                                    <span>{{item.modelNumber}}</span>
                                     <span>{{item.currentState==0?'禁止':'运行'}}</span>
                                 </div>
                                 <div class="new_label">
-                                    <span><span>标签ID:</span>{{item.labelId}}</span>
-                                    <span><span>模块ID:</span>{{item.modelId}}</span>
-                                    <span><span>U位号:</span>{{item.ubitNum}}</span>
+                                    <span><span>标签ID:</span>{{item.goodsNosVO[0].labelId}}</span>
+                                    <span><span>模块ID:</span>{{item.goodsNosVO[0].modelId}}</span>
+                                    <span><span>U位号:</span>{{item.goodsNosVO[0].ubitNum}}</span>
                                 </div>
                             </div>
                         </mt-cell-swipe>
@@ -72,7 +75,7 @@
                     this.$indicator.close();
                     if (res.code == "ok") {
                         this.detail = res.data;
-                        this.delList = res.data.goodsNosVO;
+                        this.delList = res.data.equipments==null?[]:res.data.equipments;
                     } else {
                         this.$toast({
                             message: res.msg,

+ 1 - 1
lss_vue_wx/src/views/assets/assetsEdit.vue

@@ -28,7 +28,7 @@
             </div>
             <div class="detailBox">
                 <mt-field label="生产厂家" placeholder="请输入生产厂家" v-model="assetsForm.factory"></mt-field>
-                <mt-field label="服务期限" placeholder="请输入服务期限" v-model="assetsForm.serviceLife"></mt-field>
+                <mt-field label="服务期限" placeholder="请输入服务期限" type="number" v-model="assetsForm.serviceLife"></mt-field>
                 <mt-field label="下次维护日期" placeholder="请选择下次维护日期" type="date" v-model="assetsForm.nextIndate"></mt-field>
             </div>
             <div class="detailBox">

+ 11 - 5
lss_vue_wx/src/views/assets/assetsHandle.vue

@@ -110,11 +110,17 @@
 
             chooseType() {
                 var _this = this;
-                var dataShippingSpace = [
-                    {name: "未用"},
-                    {name: "在用"},
-                    {name: "报废"},
-                ];
+                var dataShippingSpace = [];
+                if(this.detail.state == 0) {
+                    dataShippingSpace = [
+                        {name: "在用"},
+                        {name: "报废"},
+                    ];
+                } else if(this.detail.state == 1) {
+                    dataShippingSpace = [
+                        {name: "未用"},
+                    ];
+                }
                 var pickerDiv = document.getElementById("state");
                 var vCardType = this.detail.state;
                 var pickerView = new PickerView({

+ 2 - 2
lss_vue_wx/src/views/assets/assetsOperation.vue

@@ -227,7 +227,7 @@
                         let link = document.createElement('a')
                         link.style.display = 'none'
                         link.href = url
-                        link.setAttribute('download', '操作记录.xlsx')
+                        link.setAttribute('download', '处置记录.xls')
                         document.body.appendChild(link)
                         link.click()
                     }, error => {
@@ -248,7 +248,7 @@
                         let link = document.createElement('a')
                         link.style.display = 'none'
                         link.href = url
-                        link.setAttribute('download', '操作记录.xlsx')
+                        link.setAttribute('download', '维护记录.xls')
                         document.body.appendChild(link)
                         link.click()
                     }, error => {

+ 1 - 1
lss_vue_wx/src/views/assets/assetsRegister.vue

@@ -28,7 +28,7 @@
             </div>
             <div class="detailBox">
                 <mt-field label="生产厂家" placeholder="请输入生产厂家" v-model="assetsForm.factory"></mt-field>
-                <mt-field label="服务期限" placeholder="请输入服务期限" v-model="assetsForm.serviceLife"></mt-field>
+                <mt-field label="服务期限" placeholder="请输入服务期限" type="number" v-model="assetsForm.serviceLife"></mt-field>
                 <mt-field label="下次维护日期" placeholder="请选择下次维护日期" type="date" v-model="assetsForm.nextIndate"></mt-field>
             </div>
             <div class="detailBox">

+ 0 - 741
lss_vue_wx/src/views/data/data.vue

@@ -1,741 +0,0 @@
-<template>
-	<div class="data">
-        <mt-navbar v-model="selected" class="tab_head" v-on:click.native="changeTab">
-            <mt-tab-item id="tab1">数据存储监控</mt-tab-item>
-            <mt-tab-item id="tab2">云平台监控</mt-tab-item>
-            <mt-tab-item id="tab3">数据交换</mt-tab-item>
-        </mt-navbar>
-        <mt-tab-container v-model="selected">
-            <mt-tab-container-item id="tab1">
-                <div class="headMsg">
-                    <div>中心数据库总量:{{tab1_head1}}</div>
-                    <div>五大数据库总量:{{tab1_head2}}</div>
-                </div>
-                <div id="tab1_chart1" class="echarts"></div>
-                <div class="echartsBox">
-                    <table class="tab1_table">
-                        <thead><tr><td>库名</td><td>数据量(GB)</td><td>占比(%)</td></tr></thead>
-                        <tbody>
-                            <tr><td>入口库</td><td>335</td><td>13.08%</td></tr>
-                            <tr><td>信用库</td><td>310</td><td>20.1%</td></tr>
-                            <tr><td>地理库</td><td>234</td><td>9.13%</td></tr>
-                            <tr><td>法人库</td><td>135</td><td>5.27%</td></tr>
-                            <tr><td>电子证据</td><td>1548</td><td>60.42%</td></tr>
-                        </tbody>
-                    </table>
-                </div>
-                <div id="tab1_chart2" class="echarts echartsBox"></div>
-                <div id="tab1_chart3" class="echarts echartsBox bottom"></div>
-            </mt-tab-container-item>
-            <mt-tab-container-item id="tab2">
-                <div class="headMsg">
-                    <div>总用户数:{{tab2_head1}}</div>
-                    <div>在线用户数:{{tab2_head1}}</div>
-                    <div>上云系统总数量:{{tab2_head1}}</div>
-                </div>
-                <div id="tab2_chart1" class="echarts echartsBox"></div>
-                <div id="tab2_chart2" class="echarts echartsBox"></div>
-                <div id="tab2_chart3" class="echarts echartsBox"></div>
-                <div class="echartsBox bottom">
-                    <table class="tab1_table">
-                        <thead><tr><td>各委办局</td><td>接入效率</td><td>交换效率</td></tr></thead>
-                        <tbody>
-                            <tr><td>交通</td><td>335</td><td>13.08%</td></tr>
-                            <tr><td>公安</td><td>310</td><td>20.1%</td></tr>
-                            <tr><td>卫计</td><td>234</td><td>9.13%</td></tr>
-                            <tr><td>国土</td><td>135</td><td>5.27%</td></tr>
-                            <tr><td>城管</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>安监</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>房产局</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>旅游</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>水务</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>法院</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>环保</td><td>1548</td><td>60.42%</td></tr>
-                            <tr><td>财政</td><td>1548</td><td>60.42%</td></tr>
-                        </tbody>
-                    </table>
-                </div>
-            </mt-tab-container-item>
-            <mt-tab-container-item id="tab3">
-                <div class="headMsg">
-                    <div>当日数据交换量:{{tab3_head1}}</div>
-                    <div>数据交换次数:{{tab3_head2}}</div>
-                </div>
-                <div id="tab3_chart1" class="echarts echartsBox"></div>
-            </mt-tab-container-item>
-        </mt-tab-container>
-    </div>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-                selected: "tab1",
-                tab1_head1: "423GB",
-                tab1_head2: "1168GB",
-                tab2_head1: "1523638",
-                tab2_head2: "35216",
-                tab2_head3: "102",
-                tab3_head1: "114388",
-                tab3_head2: "35216",
-                list: [],
-                labels: [],
-                pageNum: 1,
-                tagId: 0,
-                popupVisible: false,
-                department: ['交通', '公安', '卫计', '国土', '城管', '安监', '房产', '教育', '旅游', '水务', '法院', '环保', '财政'],
-			}
-		},
-		methods: {
-            // 数据存储监控
-            set_tab1_chart1(){
-                var myChart = this.echarts.init(document.getElementById('tab1_chart1'));
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '五大库数据储存量',
-                        x:'left'
-                    },
-                    tooltip: {
-                        trigger: 'item',
-                        formatter: "{a} <br/>{b}: {c} ({d}%)",
-                        color:'#000',
-                        textStyle:{
-                            color:"#fff",
-                        }
-                    },
-                    legend: {
-                        orient: 'vertical',
-                        x: 'right',
-                        data:['入口库','信用库','地理库','法人库','电子证据'],
-                        textStyle:{
-                            color:'#888',
-                            fontSize:12
-                        }
-                    },
-                    series: [
-                        {
-                            name:'数据储存量',
-                            type:'pie',
-                            radius: ['35%', '55%'],
-                            avoidLabelOverlap: false,
-                            color:['#F68077','#66B1FD','#0BC3FF','#FCF255','#90FB4C'],
-                            label: {
-                                normal: {  //正常的样式
-                                    show: true,
-                                    position: 'left'
-                                },
-                                emphasis: { //选中时候的样式
-                                    show: true,
-                                    textStyle: {
-                                        fontSize: '20',
-                                        fontWeight: 'bold'
-                                    }
-                                }
-                            },  //提示文字
-                            labelLine: {
-                                normal: {
-                                    show: false
-                                }
-                            },
-                            data:[
-                                {value:335, name:'入口库'},
-                                {value:310, name:'信用库'},
-                                {value:234, name:'地理库'},
-                                {value:135, name:'法人库'},
-                                {value:1548, name:'电子证据'}
-                            ]
-                        }
-                    ]
-                };
-                myChart.setOption(option);
-            },
-
-            set_tab1_chart2(){
-                var myChart = this.echarts.init(document.getElementById('tab1_chart2'));
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '五大库使用情况',
-                        x:'left',
-                    },
-                    tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                            type: 'cross',
-                            crossStyle: {
-                                color: '#999'
-                            }
-                        }
-                    },
-                    xAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        axisLabel: {  
-                            interval:0,  
-                            rotate:40  
-                        },
-                        type: 'category',
-                        data: ['交通', '公安', '卫计', '国土', '城管', '安监', '房产局', '教育', '旅游', '水务', '法院', '环保', '财政']
-                    },
-                    yAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        type: 'value',
-                        name: '单位:%',
-                    },
-                    series: [{
-                        data: [12, 20, 15, 80, 70, 11, 30, 80, 30, 80, 20, 50, 60],
-                        type: 'bar',
-                        barWidth : 10,
-                        itemStyle:{
-                            normal:{
-                                color: '#FF5B29',
-                            }
-                        },
-                    }]
-                };
-                myChart.setOption(option);
-            },
-
-            set_tab1_chart3(){
-                var myChart = this.echarts.init(document.getElementById('tab1_chart3'));
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '中心库数据存储情况',
-                        x:'left',
-                    },
-                    tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                            type: 'cross',
-                            crossStyle: {
-                                color: '#999'
-                            }
-                        }
-                    },
-                    xAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        axisLabel: {  
-                            interval:0,  
-                            rotate:40  
-                        },
-                        type: 'category',
-                        data: ['交通', '公安', '卫计', '国土', '城管', '安监', '房产局', '教育', '旅游', '水务', '法院', '环保', '财政']
-                    },
-                    yAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        type: 'value',
-                        name: '单位:%',
-                    },
-                    series: [{
-                        data: [12, 20, 15, 80, 70, 11, 30, 80, 30, 80, 20, 50, 60],
-                        type: 'bar',
-                        barWidth : 10,
-                        itemStyle:{
-                            normal:{
-                                color: '#FF5B29',
-                            }
-                        },
-                    }]
-                };
-                myChart.setOption(option);
-            },
-
-            // 云平台监控
-            set_tab2_chart1(){
-                var myChart = this.echarts.init(document.getElementById('tab2_chart1'));
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '上云系统数量分析',
-                        x:'left',
-                    },
-                    tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                            type: 'cross',
-                            crossStyle: {
-                                color: '#999'
-                            }
-                        }
-                    },
-                    xAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        axisLabel: {  
-                            interval:0,  
-                            rotate:40  
-                        },
-                        type: 'category',
-                        data: ['交通', '公安', '卫计', '国土', '城管', '安监', '房产局', '教育', '旅游', '水务', '法院', '环保', '财政']
-                    },
-                    yAxis: {
-                        axisTick:{
-                            show:false
-                        },
-                        axisLine: {
-                            show: false,
-                        },
-                        type: 'value',
-                        name: '单位:%',
-                    },
-                    series: [{
-                        data: [12, 20, 15, 80, 70, 11, 30, 80, 30, 80, 20, 50, 60],
-                        type: 'bar',
-                        barWidth : 10,
-                        itemStyle:{
-                            normal:{
-                                color: '#FF5B29',
-                            }
-                        },
-                    }]
-                };
-                myChart.setOption(option);
-            },
-
-            set_tab2_chart2(){
-                var myChart = this.echarts.init(document.getElementById('tab2_chart2')) , 
-                    _this = this;
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '数据接入效率',
-                        x:'left',
-                    },
-                    tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                            type: 'cross',
-                            crossStyle: {
-                                color: '#999'
-                            }
-                        }
-                    },
-                    radar: [{
-                        indicator: (function (){
-                            var res = [];
-                            for(var i in _this.department) {
-                                res.push({text: _this.department[i] , max:100});
-                            }
-                            console.log(res)
-                            return res;
-                        })(),
-                        radius: 80
-                    }],
-                    series: [{
-                        type: 'radar',
-                        itemStyle: {normal: {areaStyle: {type: 'default'}}},
-                        data: [
-                            {
-                                name: '接入效率',
-                                value: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3],
-                                itemStyle: {
-                                    normal: {
-                                        color: 'rgba(84,196,168,0.7)',
-                                        lineStyle: {
-                                            color: '#fff',
-                                        },
-                                    },
-                                },
-                            }
-                        ]
-                    }]
-                };
-                myChart.setOption(option);
-            },
-
-            set_tab2_chart3(){
-                var myChart = this.echarts.init(document.getElementById('tab2_chart3')) , 
-                    _this = this;
-                var option = {
-                    backgroundColor: '#fff',
-                    title : {
-                        text: '数据交换效率',
-                        x:'left',
-                    },
-                    tooltip: {
-                        trigger: 'axis',
-                        axisPointer: {
-                            type: 'cross',
-                            crossStyle: {
-                                color: '#999'
-                            }
-                        }
-                    },
-                    radar: [{
-                        indicator: (function (){
-                            var res = [];
-                            for(var i in _this.department) {
-                                res.push({text: _this.department[i] , max:100});
-                            }
-                            console.log(res)
-                            return res;
-                        })(),
-                        radius: 80
-                    }],
-                    series: [{
-                        type: 'radar',
-                        itemStyle: {normal: {areaStyle: {type: 'default'}}},
-                        data: [
-                            {
-                                name:'交换效率',
-                                value:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 35.6, 62.2, 32.6, 20.0, 6.4, 3.3],
-                                itemStyle: {
-                                    normal: {
-                                        color: 'rgba(252,202,94,0.7)',
-                                        lineStyle: {
-                                            color: '#fff',
-                                        },
-                                    },
-                                },
-                            }
-                        ]
-                    }]
-                };
-                myChart.setOption(option);
-            },
-
-            // 数据交换
-            set_tab3_chart1(){
-                // var uploadedDataURL = "/asset/get/s/data-1559121268278-ozjd-lXoz.png";
-                // var uploadedDataURL = "/asset/get/s/data-1559121263841-UC5w7mTJ9.png";
-                // var uploadedDataURL = "/asset/get/s/data-1559121259198-sxyPSimU9.png";
-                // var uploadedDataURL = "/asset/get/s/data-1559121254241-xj5JAIBzC.png";
-                // var uploadedDataURL = "/asset/get/s/data-1559121249274-QxHDAdQGy.png";
-                var  colorList=['#afa3f5', '#00d488', '#3feed4', '#3bafff', '#f1bb4c','#afa3f5', '#00d488', '#3feed4', '#3bafff', '#f1bb4c','#afa3f5', '#00d488', '#3feed4', '#3bafff', '#f1bb4c', "rgba(250,250,250,0.5)"];
-                var sportsIcon = {
-                    'a':'../../assets/image/userHead.jpg',
-                    'b':'../../assets/image/userHead.jpg',
-                    'c':'../../assets/image/userHead.jpg',
-                    'd':'../../assets/image/userHead.jpg',
-                    'e':'../../assets/image/userHead.jpg',
-                };
-                var myChart = this.echarts.init(document.getElementById('tab3_chart1'));
-                var option = {
-                    backgroundColor: '#fff',
-                    title: {
-                        text: '80',
-                        subtext: '总量',
-                        x: 'center',
-                        y: 'center',
-                        textStyle: {
-                            fontSize:20,
-                            fontWeight:'normal',
-                            color: ['#333']
-                        },
-                        subtextStyle: {
-                            color: '#666',
-                            fontSize: 12
-                        },
-                    },
-                    grid: {
-                        bottom: 150,
-                        left: 0,
-                        right: '10%'
-                    },
-                    legend: {
-                        show:false,
-                        orient: 'vertical',
-                        top: "middle",
-                        right: "5%",
-                        textStyle: {
-                            color: '#f2f2f2',
-                            fontSize: 13,
-
-                        },
-                        icon: 'roundRect'
-                    },
-                    series: [
-                        // 主要展示层的
-                        {
-                            radius: ['25%', '33%'],
-                            center: ['50%', '50%'],
-                            type: 'pie',
-                            itemStyle: {
-                                normal: {
-                                    color: function(params) {
-                                        return colorList[params.dataIndex]
-                                    }
-                                }
-                            },
-                            labelLine: {
-                                normal: {
-                                    show: true,
-                                    length: 15,
-                                    length2: 120,
-                                    lineStyle: {
-                                        color: '#d3d3d3'
-                                    },
-                                    align: 'right'
-                                },
-                                color: "#000",
-                                emphasis: {
-                                    show: true
-                                }
-                            },
-                            label:{
-                                normal:{
-                                    formatter: function(params){
-                                        var str = '';
-                                        console.log(params)
-                                        switch(params.name){
-                                            case '交通局':str = '{a|}\n{nameStyle|交通局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '公安局':str = '{b|}\n{nameStyle|公安局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '卫计局':str = '{c|}\n{nameStyle|卫计局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '国土局':str = '{d|}\n{nameStyle|国土局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '城管':str = '{a|}\n{nameStyle|城管 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '安监局':str = '{e|}\n{nameStyle|安监局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '房产局':str = '{a|}\n{nameStyle|房产局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '教育局':str = '{e|}\n{nameStyle|教育局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '旅游局':str = '{a|}\n{nameStyle|旅游局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '水务局':str = '{e|}\n{nameStyle|水务局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '法院':str = '{a|}\n{nameStyle|法院 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '环保局':str = '{e|}\n{nameStyle|环保局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                            case '财政局':str = '{e|}\n{nameStyle|财政局 }'+'{rate|'+params.value+'%}\n' + '{rate|'+params.data.value1+'}';break;
-                                        }
-                                        return str
-                                    },
-                                    padding: [0, -110],
-                                    height: 165,
-                                    rich: {
-                                        a: {
-                                            width:24,
-                                            height:50,
-                                            lineHeight: 50,
-                                            backgroundColor: {
-                                                // image: sportsIcon.e
-                                            },
-                                            align: 'left'
-                                        },
-                                        b: {
-                                            width:24,
-                                            height:50,
-                                            lineHeight: 50,
-                                            backgroundColor: {
-                                                // image: sportsIcon.d
-                                            },
-                                            align: 'left'
-                                        },
-                                        c: {
-                                            width:24,
-                                            height:50,
-                                            lineHeight: 50,
-                                            backgroundColor: {
-                                                // image: sportsIcon.c
-                                            },
-                                            align: 'left'
-                                        },
-                                        d: {
-                                            width:24,
-                                            height:50,
-                                            lineHeight: 50,
-                                            backgroundColor: {
-                                                // image: sportsIcon.b
-                                            },
-                                            align: 'left'
-                                        },
-                                        e: {
-                                            width:24,
-                                            height:50,
-                                            lineHeight: 50,
-                                            backgroundColor: {
-                                                // image: sportsIcon.a
-                                            },
-                                            align: 'left'
-                                        },
-                                        nameStyle: {
-                                            fontSize: 14,
-                                            color: "#555",
-                                            align: 'left'
-                                        },
-                                        rate: {
-                                            fontSize: 12,
-                                            color: "#1ab4b8",
-                                            align: 'left'
-                                        }
-                                    }
-                                }
-                            },
-                            data: [
-                                {value:17, name:'交通局',value1:0,},
-                                {value:23, name:'公安局',value1:10,},
-                                {value:27, name:'卫计局',value1:20,},
-                                {value:33, name:'国土局',value1:30,},
-                                {value:20, name:'安监局',value1:50,},
-                                {value:39, name:'房产局',value1:60,},
-                                {value:29, name:'教育局',value1:70,},
-                                {value:19, name:'旅游局',value1:80,},
-                                {value:39, name:'水务局',value1:90,},
-                                {value:29, name:'法院',value1:100,},
-                                {value:80, name:'城管',value1:110,},
-                                {value:49, name:'环保局',value1:110,},
-                                {value:10, name:'财政局',value1:120,},
-                            ],
-                        },
-                        // 边框的设置
-                        {
-                            radius: ['40%', '47%'],
-                            center: ['50%', '50%'],
-                            type: 'pie',
-                            label: {
-                                normal: {
-                                    show: false
-                                },
-                                emphasis: {
-                                    show: false
-                                }
-                            },
-                            labelLine: {
-                                normal: {
-                                    show: false
-                                },
-                                emphasis: {
-                                    show: false
-                                }
-                            },
-                            animation: false,
-                            tooltip: {
-                                show: false
-                            },
-                            itemStyle: {
-                                normal: {
-                                    color:'rgba(250,250,250,0.5)'
-                                }
-                            },
-                            data: [{
-                                value: 1,
-                            }],
-                        }
-                    ]
-                };
-                myChart.setOption(option);
-            },
-
-            changeTab() {
-                if(this.selected == 'tab1') {
-                    this.set_tab1_chart1();
-                    this.set_tab1_chart2();
-                    this.set_tab1_chart3();
-                } else if(this.selected == 'tab2') {
-                    this.set_tab2_chart1();
-                    this.set_tab2_chart2();
-                    this.set_tab2_chart3();
-                } else if(this.selected == 'tab3') {
-                    this.set_tab3_chart1();
-                }
-            }
-        },
-        created() {
-        },
-		mounted() {
-            // 数据存储监控
-            this.set_tab1_chart1();
-            this.set_tab1_chart2();
-            this.set_tab1_chart3();
-		}
-	}
-
-</script>
-
-<style scoped>
-    .tab_head {
-        position: fixed;
-        z-index: 105;
-        width: 100%;
-        top: 0;
-        
-    }
-
-    .mint-tab-container {
-        /* height: calc(100% - 46px); */
-        margin-top: 46px!important;
-        margin-bottom: 0.45rem;
-        overflow-y: auto;
-        background: #efefef;
-    }
-
-    .data {
-        background: #EFEFEF;
-    }
-
-    .headMsg {
-        background: #fff;
-        margin: 0.02rem 0 0.05rem 0;
-        padding: 0.1rem 0.2rem;
-        font-size: 0.15rem;
-    }
-
-    .headMsg {
-        line-height: 0.25rem;
-    }
-
-    .echarts {
-        width: 100%;
-        height: 3rem;
-        background: #fff;
-        padding: 0.05rem;
-        box-sizing:border-box;
-    }
-
-    .echartsBox {
-        margin-bottom: 0.11rem;
-    }
-
-    .tab1_table {
-        width: 100%;
-        border-collapse:collapse;
-        border-spacing:1;
-        border-spacing:0;
-    }
-
-    .tab1_table thead {
-        background: #F8F8F8;
-    }
-
-    .tab1_table tbody {
-        background: #fff;
-    }
-
-    .tab1_table tr td {
-        line-height: 0.4rem;
-        padding: 0 0.15rem;
-    }
-
-    .tab1_table tr td:nth-child(1) {
-        width: 30%;
-    }
-
-    .bottom {
-        margin-bottom: 0.5rem;
-    }
-</style>
-<style>
-    .tab_head .mint-tab-item-label {
-        font-size: 0.14rem;
-    }
-</style>

+ 1 - 0
lss_vue_wx/src/views/my/myAssets.vue

@@ -160,6 +160,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .tab_head {

+ 17 - 38
lss_vue_wx/src/views/my/myGrade.vue

@@ -144,7 +144,7 @@
                     this.$indicator.close();
                     if (res.code == "ok") {
                         this.detail = res.data;
-                        if(res.data.scoreId == null) {
+                        if(res.data.scoreId == null && this.date[0].name == this.chooseTime) {
                             var from = {
                                 "uid": this.id,
                                 "scoringYearMonth": this.chooseTime,
@@ -213,14 +213,25 @@
             },
 
             toNext() {
+                if(this.detail.scoreId == null){
+                    this.$toast({
+                        message: "当月未找到TA的建议",
+                        duration: 2000
+                    });
+                    return false;
+                }
                 $(".one_suggest_reply .showMoreBtn .btn_list").addClass("hide").slideUp();
                 this.popupVisible = true;
+                this.ideaList = [];
                 this.$indicator.open();
-                this.http.post(this.port.my.ideaScore, {
+                var form = {
                     'uid': this.id,
                     'time': this.chooseTime,
-                    'scoreId': this.detail.scoreId
-                } , 
+                }
+                if(this.date[0].name == this.chooseTime && this.detail.scoreId != null) {
+                    form.scoreId = this.detail.scoreId
+                }
+                this.http.post(this.port.my.ideaScore, form , 
                 res => {
                     this.$indicator.close();
                     if (res.code == "ok") {
@@ -241,37 +252,6 @@
             },
 
             toPrev() {
-                // var from = {};
-                // if(this.detail.scoreId != null) {
-                //     from = {
-                //         "scoreId": this.detail.scoreId,
-                //         "total": parseInt(this.personalScore) + (this.detail.ideaScoreSum == null?0:parseFloat(this.detail.ideaScoreSum)),
-                //     }
-                // } else {
-                //     from = {
-                //         "uid": this.id,
-                //         "total": parseInt(this.personalScore) + (this.detail.ideaScoreSum == null?0:parseFloat(this.detail.ideaScoreSum)),
-                //     }
-                // }
-                // this.http.post(this.port.my.addOrUpdate, from , 
-                // res => {
-                //     if (res.code == "ok") {
-                //         this.popupVisible = false;
-                //         this.getDetail();
-                //     } else {
-                //         this.$toast({
-                //             message: res.msg,
-                //             duration: 2000
-                //         });
-                //     }
-                // }, error => {
-                //     this.popupVisible = false;
-                //     this.$toast({
-                //         message: error,
-                //         duration: 2000
-                //     });
-                // })
-
                 this.popupVisible = false;
                 this.getDetail();
             },
@@ -417,7 +397,7 @@
                         return false;
                     } else {
                         var from = {};
-                        if(this.ideaComment != null) {
+                        if(this.ideaList[this.chooseSugNum].ideaComment != null) {
                             from = {
                                 "ideaId": this.ideaList[this.chooseSugNum].id,
                                 "score": this.sugScore,
@@ -476,7 +456,7 @@
 
             openSugPop(i) {
                 this.sugScore = this.ideaList[i].score == null? 0 : this.ideaList[i].score;
-                this.sugContent = this.ideaComment == null? '' : this.ideaComment.content;
+                this.sugContent = this.ideaList[i].ideaComment == null? '' : this.ideaList[i].ideaComment.content;
                 this.sugScorePop = true;
                 this.chooseSugNum = i;
             },
@@ -865,7 +845,6 @@
         border: 1px solid #ddd;
         border-radius: 5px;
         padding: 0.08rem;
-        min-height: 0.25rem;
     }
 
     .input textarea {

+ 4 - 0
lss_vue_wx/src/views/my/myInsDetail.vue

@@ -94,6 +94,10 @@
         background: #fff;
     }
 
+    .context_router {
+        height: 100%;
+    }
+
     .detail_head {
         background: #fff;
         color: #333;

+ 2 - 1
lss_vue_wx/src/views/my/myMessage.vue

@@ -73,7 +73,7 @@
                 } else if(this.pageNum < this.pages) {
                     this.$indicator.open();
                     this.http.post(this.port.my.newList, {
-                        'id': this.id,
+                        'uid': this.user.id,
                         'pageNum': ++this.pageNum
                     } , 
                     res => {
@@ -147,6 +147,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .tab_head {

+ 1 - 0
lss_vue_wx/src/views/my/myScore.vue

@@ -140,6 +140,7 @@
     .detail_body {
         margin-top: 0.4rem;
         padding-bottom: 0.15rem;
+        background: #EFEFEF;
     }
 
     .detailBox {

+ 6 - 5
lss_vue_wx/src/views/task/task.vue

@@ -73,11 +73,11 @@
                             <span>{{item.publisherName}}&nbsp;&nbsp;{{item.indate}}</span>
                         </div>
                         <div class="allUsers">
-                            <a>
+                            <a v-if="item.recipientId!=null">
                                 <img v-if="item.recipientHedaPic==null" src="../../assets/image/userHead.jpg">
                                 <img v-else :src="item.recipientHedaPic">
                             </a>
-                            <a v-for="(head,num) in item.participantsVOS">
+                            <a v-for="(head,num) in item.participantsVOS" v-if="head.userId != item.recipientId">
                                 <img v-if="head.headPic==null" src="../../assets/image/userHead.jpg">
                                 <img v-else :src="head.headPic">
                             </a>
@@ -176,7 +176,7 @@
                         'tagId': this.form.type==-1?"":this.form.type,
                         'state': this.form.status==-1?"":this.form.status,
                         'startTime': this.form.start,
-                        'endTime': this.from.end,
+                        'endTime': this.form.end,
                         'type': this.selected=='tab1'?0:1
                     } , 
                     res => {
@@ -418,6 +418,7 @@
         -webkit-transition-duration: 0.4s;
         /* background: #fff; */
         background: #efefef;
+        overflow: auto;
     }
 
     ._sorting-address .filter_title {
@@ -459,7 +460,7 @@
     .fixed-top::after{
         content: "";
         width: 100%;
-        height: 100%;
+        /* height: 100%; */
         display: block;
         /* background:rgba(0,0,0,0.2); */
         background: #efefef;
@@ -564,7 +565,7 @@
         color: #999;
     }
 
-    .body > ul li .allUsers img:not(:first-child) {
+    .body > ul li .allUsers a:not(:first-child) {
         margin-left: -0.07rem;
     }