Browse Source

配置vue多页面

xiongzhu 7 years ago
parent
commit
e9c99225a3
100 changed files with 309 additions and 288 deletions
  1. 8 5
      src/main/java/com/izouma/awesomeadmin/interceptor/GlobalInterceptor.java
  2. 4 3
      src/main/java/com/izouma/awesomeadmin/web/MainController.java
  3. BIN
      src/main/vue/build/logo.png
  4. 75 69
      src/main/vue/build/webpack.base.conf.js
  5. 81 71
      src/main/vue/build/webpack.dev.conf.js
  6. 127 118
      src/main/vue/build/webpack.prod.conf.js
  7. 2 2
      src/main/vue/config/index.js
  8. 4 4
      src/main/vue/src/entries/admin.html
  9. 7 7
      src/main/vue/src/entries/admin.js
  10. 1 1
      src/main/webapp/WEB-INF/html/admin.html
  11. 0 0
      src/main/webapp/static/css/admin.12c41bef003341021d5bc9fde835c241.css
  12. 0 0
      src/main/webapp/static/css/app.0a14a9a451c1d5bc08b6b88ebdf4a446.css.map
  13. 0 0
      src/main/webapp/static/img/weathericons-regular-webfont.ed0943f.svg
  14. 0 0
      src/main/webapp/static/js/0.7f95d3464103b536a4cf.js.map
  15. 0 0
      src/main/webapp/static/js/0.e086ef0c1ae90139e684.js
  16. 0 0
      src/main/webapp/static/js/1.2da2e37ce8b90b5b965a.js
  17. 0 0
      src/main/webapp/static/js/1.2da2e37ce8b90b5b965a.js.map
  18. 0 0
      src/main/webapp/static/js/1.bd9a8d6fdbd3c8813900.js
  19. 0 0
      src/main/webapp/static/js/10.4bdba0a0a403001556b4.js
  20. 0 0
      src/main/webapp/static/js/10.d676a36298a176506ca0.js.map
  21. 0 0
      src/main/webapp/static/js/11.aa443fb0b48c58581056.js
  22. 0 0
      src/main/webapp/static/js/11.aa443fb0b48c58581056.js.map
  23. 0 0
      src/main/webapp/static/js/11.e093933019ff6ecfbba3.js
  24. 0 0
      src/main/webapp/static/js/12.0c51890b4eefb6981514.js
  25. 0 0
      src/main/webapp/static/js/12.0c51890b4eefb6981514.js.map
  26. 0 0
      src/main/webapp/static/js/12.671bd2f5f74f9e98fb84.js
  27. 0 0
      src/main/webapp/static/js/13.6a299c143c9d90b6af28.js
  28. 0 0
      src/main/webapp/static/js/13.6a299c143c9d90b6af28.js.map
  29. 0 0
      src/main/webapp/static/js/13.93482e92089c34cd0a40.js
  30. 0 0
      src/main/webapp/static/js/14.6051fd01dd2a646da045.js.map
  31. 0 0
      src/main/webapp/static/js/14.c018d4c6e43b4aa450c2.js
  32. 0 0
      src/main/webapp/static/js/15.09061a3f292f40e293e2.js
  33. 0 0
      src/main/webapp/static/js/15.fb7498512a5115fae2b4.js
  34. 0 0
      src/main/webapp/static/js/15.fb7498512a5115fae2b4.js.map
  35. 0 0
      src/main/webapp/static/js/16.51ccb3a6b09a7d54c02c.js
  36. 0 0
      src/main/webapp/static/js/16.51ccb3a6b09a7d54c02c.js.map
  37. 0 0
      src/main/webapp/static/js/16.b973e81319d1ccab0b92.js
  38. 0 0
      src/main/webapp/static/js/17.38e0be9d76990c713d5a.js
  39. 0 0
      src/main/webapp/static/js/17.38e0be9d76990c713d5a.js.map
  40. 0 0
      src/main/webapp/static/js/17.a96d6718014c49408e10.js
  41. 0 0
      src/main/webapp/static/js/18.7d2db17023306f4fc675.js
  42. 0 0
      src/main/webapp/static/js/18.d1b9ea124ad2a68af29b.js
  43. 0 0
      src/main/webapp/static/js/18.d1b9ea124ad2a68af29b.js.map
  44. 0 0
      src/main/webapp/static/js/19.43868f73ec926a82f818.js
  45. 0 2
      src/main/webapp/static/js/19.72dbc94725dc61b66fac.js
  46. 0 0
      src/main/webapp/static/js/19.72dbc94725dc61b66fac.js.map
  47. 0 0
      src/main/webapp/static/js/2.3f4b7d60c038e04a684a.js
  48. 0 0
      src/main/webapp/static/js/2.beb47f3de4d5198f58e2.js
  49. 0 0
      src/main/webapp/static/js/2.beb47f3de4d5198f58e2.js.map
  50. 0 0
      src/main/webapp/static/js/20.afbb66a38de25ef66bc9.js
  51. 0 0
      src/main/webapp/static/js/20.eb2436464eadf03121f8.js
  52. 0 0
      src/main/webapp/static/js/20.eb2436464eadf03121f8.js.map
  53. 0 2
      src/main/webapp/static/js/21.75bf709e40ecb7e0c867.js
  54. 0 0
      src/main/webapp/static/js/21.75bf709e40ecb7e0c867.js.map
  55. 0 0
      src/main/webapp/static/js/21.a88b0d4a25f04c023352.js
  56. 0 0
      src/main/webapp/static/js/22.496c0ec066e6b90f6bff.js
  57. 0 0
      src/main/webapp/static/js/22.496c0ec066e6b90f6bff.js.map
  58. 0 0
      src/main/webapp/static/js/22.89e16fca6ee23a460b35.js
  59. 0 0
      src/main/webapp/static/js/23.4e083dba4d56645d1fbe.js
  60. 0 0
      src/main/webapp/static/js/23.f793d3903d59f5638e70.js.map
  61. 0 0
      src/main/webapp/static/js/24.8f6408499f914cbc27ce.js
  62. 0 0
      src/main/webapp/static/js/24.8f6408499f914cbc27ce.js.map
  63. 0 0
      src/main/webapp/static/js/24.f4a49a94140b3c404c06.js
  64. 0 0
      src/main/webapp/static/js/25.0fcd93d47961f6bfa982.js
  65. 0 0
      src/main/webapp/static/js/25.76e8cdb9c51881566245.js
  66. 0 0
      src/main/webapp/static/js/25.76e8cdb9c51881566245.js.map
  67. 0 2
      src/main/webapp/static/js/26.492d54c6f4bc425f42dc.js
  68. 0 0
      src/main/webapp/static/js/26.492d54c6f4bc425f42dc.js.map
  69. 0 0
      src/main/webapp/static/js/26.b7df9c8f983463cd2d3c.js
  70. 0 0
      src/main/webapp/static/js/27.44a4617c2a68932ac8b3.js
  71. 0 0
      src/main/webapp/static/js/27.9bb705b8785fd9b969ec.js.map
  72. 0 0
      src/main/webapp/static/js/28.418f7fd3ec4b6b0bbe32.js
  73. 0 0
      src/main/webapp/static/js/28.418f7fd3ec4b6b0bbe32.js.map
  74. 0 0
      src/main/webapp/static/js/28.ba9501c58cabb66af0e4.js
  75. 0 0
      src/main/webapp/static/js/29.92527596c7395686b174.js
  76. 0 0
      src/main/webapp/static/js/29.92527596c7395686b174.js.map
  77. 0 0
      src/main/webapp/static/js/29.caea04029dd0bcae7223.js
  78. 0 0
      src/main/webapp/static/js/3.28dd22c3789daaeaa79c.js
  79. 0 0
      src/main/webapp/static/js/3.28dd22c3789daaeaa79c.js.map
  80. 0 0
      src/main/webapp/static/js/3.967163ed51e57a16b2d4.js
  81. 0 0
      src/main/webapp/static/js/30.09d0198e503ad56f03ee.js
  82. 0 0
      src/main/webapp/static/js/30.09d0198e503ad56f03ee.js.map
  83. 0 0
      src/main/webapp/static/js/30.f8d84977ca49273e58af.js
  84. 0 0
      src/main/webapp/static/js/31.2d06ceadcf9d5b6b0eb6.js
  85. 0 0
      src/main/webapp/static/js/31.2d06ceadcf9d5b6b0eb6.js.map
  86. 0 0
      src/main/webapp/static/js/31.e3e9508058e99ae23a91.js
  87. 0 0
      src/main/webapp/static/js/32.842117eb303d83b78a4a.js
  88. 0 0
      src/main/webapp/static/js/32.842117eb303d83b78a4a.js.map
  89. 0 0
      src/main/webapp/static/js/32.a8be80a78d503dfbbffb.js
  90. 0 0
      src/main/webapp/static/js/33.54dfbc6b46fe7fa010f6.js
  91. 0 0
      src/main/webapp/static/js/33.b1878b57e50a67c41619.js
  92. 0 0
      src/main/webapp/static/js/33.b1878b57e50a67c41619.js.map
  93. 0 0
      src/main/webapp/static/js/34.8989a6d89ef83958813b.js
  94. 0 0
      src/main/webapp/static/js/34.b6b73d3963738d7fe71d.js
  95. 0 0
      src/main/webapp/static/js/34.b6b73d3963738d7fe71d.js.map
  96. 0 0
      src/main/webapp/static/js/35.8ae5dcc37fee9202cb9c.js
  97. 0 0
      src/main/webapp/static/js/35.db225a92c1424b4a1e8c.js
  98. 0 0
      src/main/webapp/static/js/35.db225a92c1424b4a1e8c.js.map
  99. 0 2
      src/main/webapp/static/js/36.04b1d45d779e110e09dc.js
  100. 0 0
      src/main/webapp/static/js/36.04b1d45d779e110e09dc.js.map

+ 8 - 5
src/main/java/com/izouma/awesomeadmin/interceptor/GlobalInterceptor.java

@@ -1,6 +1,7 @@
 package com.izouma.awesomeadmin.interceptor;
 
 import com.izouma.awesomeadmin.shiro.AppToken;
+import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@@ -18,11 +19,13 @@ public class GlobalInterceptor extends HandlerInterceptorAdapter {
         Subject subject = SecurityUtils.getSubject();
         if (!subject.isAuthenticated()) {
             String token = request.getHeader("token");
-            AppToken appToken = new AppToken(token);
-            try {
-                subject.login(appToken);
-            } catch (Exception e) {
-                e.printStackTrace();
+            if (StringUtils.isNotEmpty(token)) {
+                AppToken appToken = new AppToken(token);
+                try {
+                    subject.login(appToken);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         }
         response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

+ 4 - 3
src/main/java/com/izouma/awesomeadmin/web/MainController.java

@@ -1,6 +1,7 @@
 package com.izouma.awesomeadmin.web;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -23,9 +24,9 @@ public class MainController {
         return new ModelAndView("redirect:/admin");
     }
 
-    @RequestMapping("/admin")
-    public ModelAndView index(HttpServletRequest request) {
-        return new ModelAndView("html/admin.html");
+    @RequestMapping("/{viewName}")
+    public ModelAndView index(HttpServletRequest request, @PathVariable("viewName") String viewName) {
+        return new ModelAndView("html/" + viewName + ".html");
     }
 
 }

BIN
src/main/vue/build/logo.png


+ 75 - 69
src/main/vue/build/webpack.base.conf.js

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

+ 81 - 71
src/main/vue/build/webpack.dev.conf.js

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

+ 127 - 118
src/main/vue/build/webpack.prod.conf.js

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

+ 2 - 2
src/main/vue/config/index.js

@@ -51,7 +51,7 @@ module.exports = {
 
     build: {
         // Template for index.html
-        index: path.resolve(__dirname, '../../webapp/WEB-INF/html/admin.html'),
+        index: path.resolve(__dirname, '../../webapp/WEB-INF/html/'),
 
         // Paths
         assetsRoot: path.resolve(__dirname, '../../webapp'),
@@ -62,7 +62,7 @@ module.exports = {
          * Source Maps
          */
 
-        productionSourceMap: true,
+        productionSourceMap: false,
         // https://webpack.js.org/configuration/devtool/#production
         devtool: '#source-map',
 

+ 4 - 4
src/main/vue/index.html → src/main/vue/src/entries/admin.html

@@ -5,13 +5,13 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <title>管理后台</title>
-    <link rel="icon" href="static/favicon.ico" />
-    <script src="static/fontawesome-v5.2.0.js"></script>
+    <link rel="icon" href="/static/favicon.ico"/>
+    <script src="/static/fontawesome-v5.2.0.js"></script>
 </head>
 
 <body>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
+<div id="app"></div>
+<!-- built files will be auto injected -->
 </body>
 
 </html>

+ 7 - 7
src/main/vue/src/main.js → src/main/vue/src/entries/admin.js

@@ -1,17 +1,17 @@
 import Vue from 'vue'
-import Main from './pages/Main'
-import router from './router'
-import store from './vuex'
+import Main from '../pages/Main'
+import router from '../router'
+import store from '../vuex'
 import ElementUI from 'element-ui'
 import axios from 'axios'
-import MultiUpload from './components/MultiUpload'
-import SingleUpload from './components/SingleUpload'
+import MultiUpload from '../components/MultiUpload'
+import SingleUpload from '../components/SingleUpload'
 import VueI18n from 'vue-i18n'
 import VueAMap from 'vue-amap'
 
 import 'normalize.css/normalize.css'
 import 'element-ui/lib/theme-chalk/index.css'
-import './main.less'
+import '../main.less'
 import { format } from 'date-fns'
 import zh from 'date-fns/locale/zh_cn'
 
@@ -154,7 +154,7 @@ Vue.mixin({
             return format(new Date(cellValue), 'HH:mm', { locale: zh })
         },
         datetimeFormatter(row, column, cellValue, index) {
-            if (!cellValue) return '';
+            if (!cellValue) return ''
             return format(new Date(cellValue), 'YYYY/MM/DD HH:mm', { locale: zh })
         }
     }

+ 1 - 1
src/main/webapp/WEB-INF/html/admin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>管理后台</title><link rel=icon href=static/favicon.ico><script src=static/fontawesome-v5.2.0.js></script><link href=/static/css/app.0a14a9a451c1d5bc08b6b88ebdf4a446.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.f67b1e8fc9b177fa2f7d.js></script><script type=text/javascript src=/static/js/vendor.7acda3387afcfdae5bf3.js></script><script type=text/javascript src=/static/js/app.6250fbf1d5eddc1e9e1d.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.12c41bef003341021d5bc9fde835c241.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.eedabdce60126fa05718.js></script><script type=text/javascript src=/static/js/vendor.7acda3387afcfdae5bf3.js></script><script type=text/javascript src=/static/js/admin.bf30e5dfb5236e763827.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/css/admin.12c41bef003341021d5bc9fde835c241.css


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/css/app.0a14a9a451c1d5bc08b6b88ebdf4a446.css.map


+ 0 - 0
src/main/webapp/static/img/weathericons-regular-webfont.ecaf8b4.svg → src/main/webapp/static/img/weathericons-regular-webfont.ed0943f.svg


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/0.7f95d3464103b536a4cf.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/0.e086ef0c1ae90139e684.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/1.2da2e37ce8b90b5b965a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/1.2da2e37ce8b90b5b965a.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/1.bd9a8d6fdbd3c8813900.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/10.4bdba0a0a403001556b4.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/10.d676a36298a176506ca0.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/11.aa443fb0b48c58581056.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/11.aa443fb0b48c58581056.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/11.e093933019ff6ecfbba3.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/12.0c51890b4eefb6981514.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/12.0c51890b4eefb6981514.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/12.671bd2f5f74f9e98fb84.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/13.6a299c143c9d90b6af28.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/13.6a299c143c9d90b6af28.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/13.93482e92089c34cd0a40.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/14.6051fd01dd2a646da045.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/14.c018d4c6e43b4aa450c2.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/15.09061a3f292f40e293e2.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/15.fb7498512a5115fae2b4.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/15.fb7498512a5115fae2b4.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/16.51ccb3a6b09a7d54c02c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/16.51ccb3a6b09a7d54c02c.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/16.b973e81319d1ccab0b92.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/17.38e0be9d76990c713d5a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/17.38e0be9d76990c713d5a.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/17.a96d6718014c49408e10.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/18.7d2db17023306f4fc675.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/18.d1b9ea124ad2a68af29b.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/18.d1b9ea124ad2a68af29b.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/19.43868f73ec926a82f818.js


+ 0 - 2
src/main/webapp/static/js/19.72dbc94725dc61b66fac.js

@@ -1,2 +0,0 @@
-webpackJsonp([19],{NsJs:function(t,e){},izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("NsJs")},"data-v-7fa6d168",null);e.default=c.exports}});
-//# sourceMappingURL=19.72dbc94725dc61b66fac.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/19.72dbc94725dc61b66fac.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/2.3f4b7d60c038e04a684a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/2.beb47f3de4d5198f58e2.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/2.beb47f3de4d5198f58e2.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/20.afbb66a38de25ef66bc9.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/20.eb2436464eadf03121f8.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/20.eb2436464eadf03121f8.js.map


+ 0 - 2
src/main/webapp/static/js/21.75bf709e40ecb7e0c867.js

@@ -1,2 +0,0 @@
-webpackJsonp([21],{BXS2:function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=o("mtWM"),a=o.n(r),n={data:function(){return{taskForm:[],taskFormData:{},loading:!1}},created:function(){var t=this;this.$http.get({url:"/rest/form/form-data",data:{taskId:this.$route.query.id}}).then(function(e){t.taskForm=e.formProperties,t.taskFormData={}})},methods:{completeTask:function(){var t=this;this.$refs.taskForm.validate(function(e){e&&(t.loading=!0,a.a.post("rest/form/form-data",{taskId:t.$route.query.id,properties:t.$refs.taskForm.getData()}).then(function(e){t.loading=!1,t.$message.success("成功"),t.$router.go(-1)}).catch(function(e){console.log(e),t.loading=!1,t.$message.error("失败")}))})}},components:{DynamicForm:o("uBmv").a}},s={render:function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",[o("h3"),t._v(" "),o("dynamic-form",{ref:"taskForm",staticStyle:{width:"500px"},attrs:{formProps:t.taskForm}},[o("el-form-item",[o("el-button",{on:{click:function(e){t.$router.go(-1)}}},[t._v("取消")]),t._v(" "),o("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:t.completeTask}},[t._v("完成")])],1)],1)],1)},staticRenderFns:[]};var i=o("VU/8")(n,s,!1,function(t){o("j9OR")},"data-v-75280462",null);e.default=i.exports},j9OR:function(t,e){}});
-//# sourceMappingURL=21.75bf709e40ecb7e0c867.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/21.75bf709e40ecb7e0c867.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/21.a88b0d4a25f04c023352.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/22.496c0ec066e6b90f6bff.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/22.496c0ec066e6b90f6bff.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/22.89e16fca6ee23a460b35.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/23.4e083dba4d56645d1fbe.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/23.f793d3903d59f5638e70.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/24.8f6408499f914cbc27ce.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/24.8f6408499f914cbc27ce.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/24.f4a49a94140b3c404c06.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/25.0fcd93d47961f6bfa982.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/25.76e8cdb9c51881566245.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/25.76e8cdb9c51881566245.js.map


+ 0 - 2
src/main/webapp/static/js/26.492d54c6f4bc425f42dc.js

@@ -1,2 +0,0 @@
-webpackJsonp([26],{AbBF:function(t,e){},zc2C:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a("mvHQ"),n=a.n(r),s=(a("ftAF"),{created:function(){var t=this;this.$route.query.id&&this.$http.get({url:"/testgit/getOne",data:{id:this.$route.query.id}}).then(function(e){e.success&&(t.formData=e.data)})},data:function(){return{saving:!1,formData:{},rules:{}}},methods:{onSave:function(){var t=this;this.$refs.form.validate(function(e){if(!e)return!1;t.submit()})},submit:function(){var t=this,e=JSON.parse(n()(this.formData));this.$http.post({url:this.formData.id?"/testgit/update":"/testgit/save",data:e}).then(function(e){e.success?(t.$message.success("成功"),t.$router.go(-1)):t.$message.warning("失败")})},onDelete:function(){var t=this;this.$alert("删除将无法恢复,确认要删除么?","警告",{type:"error"}).then(function(){return t.$http.post({url:"/testgit/del",data:{id:t.formData.id}})}).then(function(){t.$message.success("删除成功"),t.$router.go(-1)}).catch(function(e){"cancel"===e?t.$message.info("删除取消"):t.$message.error("删除失败")})}}}),i={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:t.formData,rules:t.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",[a("el-button",{attrs:{loading:t.$store.state.fetchingData,type:"primary"},on:{click:t.onSave}},[t._v("保存")]),t._v(" "),t.formData.id?a("el-button",{attrs:{type:"danger"},on:{click:t.onDelete}},[t._v("删除")]):t._e(),t._v(" "),a("el-button",{on:{click:function(e){t.$router.go(-1)}}},[t._v("取消")])],1)],1)],1)},staticRenderFns:[]};var o=a("VU/8")(s,i,!1,function(t){a("AbBF")},"data-v-5fd6757b",null);e.default=o.exports}});
-//# sourceMappingURL=26.492d54c6f4bc425f42dc.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/26.492d54c6f4bc425f42dc.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/26.b7df9c8f983463cd2d3c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/27.44a4617c2a68932ac8b3.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/27.9bb705b8785fd9b969ec.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/28.418f7fd3ec4b6b0bbe32.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/28.418f7fd3ec4b6b0bbe32.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/28.ba9501c58cabb66af0e4.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/29.92527596c7395686b174.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/29.92527596c7395686b174.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/29.caea04029dd0bcae7223.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/3.28dd22c3789daaeaa79c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/3.28dd22c3789daaeaa79c.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/3.967163ed51e57a16b2d4.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/30.09d0198e503ad56f03ee.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/30.09d0198e503ad56f03ee.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/30.f8d84977ca49273e58af.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/31.2d06ceadcf9d5b6b0eb6.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/31.2d06ceadcf9d5b6b0eb6.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/31.e3e9508058e99ae23a91.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/32.842117eb303d83b78a4a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/32.842117eb303d83b78a4a.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/32.a8be80a78d503dfbbffb.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/33.54dfbc6b46fe7fa010f6.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/33.b1878b57e50a67c41619.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/33.b1878b57e50a67c41619.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/34.8989a6d89ef83958813b.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/34.b6b73d3963738d7fe71d.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/34.b6b73d3963738d7fe71d.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/35.8ae5dcc37fee9202cb9c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/35.db225a92c1424b4a1e8c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/35.db225a92c1424b4a1e8c.js.map


+ 0 - 2
src/main/webapp/static/js/36.04b1d45d779e110e09dc.js

@@ -1,2 +0,0 @@
-webpackJsonp([36],{Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("awIv")},"data-v-3d1f3150",null);t.default=s.exports},awIv:function(e,t){}});
-//# sourceMappingURL=36.04b1d45d779e110e09dc.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/36.04b1d45d779e110e09dc.js.map


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