Minho 8 年之前
父節點
當前提交
4ebc28a431
共有 100 個文件被更改,包括 53364 次插入0 次删除
  1. 1 0
      .gitignore
  2. 47 0
      Godeps/Godeps.json
  3. 5 0
      Godeps/Readme
  4. 21 0
      conf/app.conf
  5. 22 0
      conf/app.conf.example
  6. 7 0
      controllers/base.go
  7. 9 0
      controllers/home.go
  8. 9 0
      controllers/manager.go
  9. 10 0
      main.go
  10. 12 0
      routers/router.go
  11. 46 0
      static/css/main.css
  12. 280 0
      static/element-ui/lib/alert.js
  13. 626 0
      static/element-ui/lib/autocomplete.js
  14. 227 0
      static/element-ui/lib/badge.js
  15. 205 0
      static/element-ui/lib/breadcrumb-item.js
  16. 185 0
      static/element-ui/lib/breadcrumb.js
  17. 184 0
      static/element-ui/lib/button-group.js
  18. 239 0
      static/element-ui/lib/button.js
  19. 191 0
      static/element-ui/lib/card.js
  20. 298 0
      static/element-ui/lib/carousel-item.js
  21. 518 0
      static/element-ui/lib/carousel.js
  22. 945 0
      static/element-ui/lib/cascader.js
  23. 202 0
      static/element-ui/lib/checkbox-group.js
  24. 415 0
      static/element-ui/lib/checkbox.js
  25. 155 0
      static/element-ui/lib/col.js
  26. 280 0
      static/element-ui/lib/collapse-item.js
  27. 232 0
      static/element-ui/lib/collapse.js
  28. 1509 0
      static/element-ui/lib/color-picker.js
  29. 3941 0
      static/element-ui/lib/date-picker.js
  30. 370 0
      static/element-ui/lib/dialog.js
  31. 218 0
      static/element-ui/lib/dropdown-item.js
  32. 232 0
      static/element-ui/lib/dropdown-menu.js
  33. 352 0
      static/element-ui/lib/dropdown.js
  34. 21499 0
      static/element-ui/lib/element-ui.common.js
  35. 449 0
      static/element-ui/lib/form-item.js
  36. 267 0
      static/element-ui/lib/form.js
  37. 181 0
      static/element-ui/lib/icon.js
  38. 0 0
      static/element-ui/lib/index.js
  39. 448 0
      static/element-ui/lib/input-number.js
  40. 549 0
      static/element-ui/lib/input.js
  41. 514 0
      static/element-ui/lib/loading.js
  42. 56 0
      static/element-ui/lib/locale/format.js
  43. 63 0
      static/element-ui/lib/locale/index.js
  44. 97 0
      static/element-ui/lib/locale/lang/bg.js
  45. 96 0
      static/element-ui/lib/locale/lang/da.js
  46. 98 0
      static/element-ui/lib/locale/lang/de.js
  47. 93 0
      static/element-ui/lib/locale/lang/el.js
  48. 97 0
      static/element-ui/lib/locale/lang/en.js
  49. 96 0
      static/element-ui/lib/locale/lang/es.js
  50. 97 0
      static/element-ui/lib/locale/lang/fa.js
  51. 93 0
      static/element-ui/lib/locale/lang/fi.js
  52. 96 0
      static/element-ui/lib/locale/lang/fr.js
  53. 97 0
      static/element-ui/lib/locale/lang/id.js
  54. 96 0
      static/element-ui/lib/locale/lang/it.js
  55. 97 0
      static/element-ui/lib/locale/lang/ja.js
  56. 97 0
      static/element-ui/lib/locale/lang/ko.js
  57. 96 0
      static/element-ui/lib/locale/lang/nb-NO.js
  58. 97 0
      static/element-ui/lib/locale/lang/nl.js
  59. 97 0
      static/element-ui/lib/locale/lang/pl.js
  60. 97 0
      static/element-ui/lib/locale/lang/pt-br.js
  61. 97 0
      static/element-ui/lib/locale/lang/pt.js
  62. 97 0
      static/element-ui/lib/locale/lang/ru-RU.js
  63. 95 0
      static/element-ui/lib/locale/lang/sk.js
  64. 93 0
      static/element-ui/lib/locale/lang/sv-SE.js
  65. 97 0
      static/element-ui/lib/locale/lang/th.js
  66. 97 0
      static/element-ui/lib/locale/lang/tr-TR.js
  67. 97 0
      static/element-ui/lib/locale/lang/vi.js
  68. 97 0
      static/element-ui/lib/locale/lang/zh-CN.js
  69. 97 0
      static/element-ui/lib/locale/lang/zh-TW.js
  70. 217 0
      static/element-ui/lib/menu-item-group.js
  71. 299 0
      static/element-ui/lib/menu-item.js
  72. 335 0
      static/element-ui/lib/menu.js
  73. 819 0
      static/element-ui/lib/message-box.js
  74. 359 0
      static/element-ui/lib/message.js
  75. 36 0
      static/element-ui/lib/mixins/emitter.js
  76. 17 0
      static/element-ui/lib/mixins/locale.js
  77. 62 0
      static/element-ui/lib/mixins/migrating.js
  78. 428 0
      static/element-ui/lib/notification.js
  79. 248 0
      static/element-ui/lib/option-group.js
  80. 331 0
      static/element-ui/lib/option.js
  81. 808 0
      static/element-ui/lib/pagination.js
  82. 388 0
      static/element-ui/lib/popover.js
  83. 349 0
      static/element-ui/lib/progress.js
  84. 267 0
      static/element-ui/lib/radio-button.js
  85. 208 0
      static/element-ui/lib/radio-group.js
  86. 301 0
      static/element-ui/lib/radio.js
  87. 469 0
      static/element-ui/lib/rate.js
  88. 221 0
      static/element-ui/lib/row.js
  89. 422 0
      static/element-ui/lib/scrollbar.js
  90. 1423 0
      static/element-ui/lib/select.js
  91. 790 0
      static/element-ui/lib/slider.js
  92. 214 0
      static/element-ui/lib/spinner.js
  93. 349 0
      static/element-ui/lib/step.js
  94. 220 0
      static/element-ui/lib/steps.js
  95. 424 0
      static/element-ui/lib/submenu.js
  96. 389 0
      static/element-ui/lib/switch.js
  97. 227 0
      static/element-ui/lib/tab-pane.js
  98. 666 0
      static/element-ui/lib/table-column.js
  99. 2907 0
      static/element-ui/lib/table.js
  100. 648 0
      static/element-ui/lib/tabs.js

+ 1 - 0
.gitignore

@@ -22,3 +22,4 @@ _testmain.go
 *.exe
 *.test
 *.prof
+.idea

+ 47 - 0
Godeps/Godeps.json

@@ -0,0 +1,47 @@
+{
+	"ImportPath": "github.com/lifei6671/godoc",
+	"GoVersion": "go1.8",
+	"GodepVersion": "v79",
+	"Deps": [
+		{
+			"ImportPath": "github.com/astaxie/beego",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/config",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/context",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/grace",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/logs",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/session",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/toolbox",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		},
+		{
+			"ImportPath": "github.com/astaxie/beego/utils",
+			"Comment": "v1.8.0",
+			"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
+		}
+	]
+}

+ 5 - 0
Godeps/Readme

@@ -0,0 +1,5 @@
+This directory tree is generated automatically by godep.
+
+Please do not edit.
+
+See https://github.com/tools/godep for more information.

+ 21 - 0
conf/app.conf

@@ -0,0 +1,21 @@
+appname = smartwebhook
+httpport = 8181
+runmode = dev
+sessionon = true
+sessionname = smart_webhook_id
+copyrequestbody = true
+
+#生成回调地址时完整的域名
+base_url = https://hook.iminho.me
+
+#时区设置
+timezone = Asia/Shanghai
+
+#数据库配置
+db_host=192.168.3.104
+db_port=3306
+db_database=webhook_db
+db_username=root
+db_password=123456
+
+queue_size=50

+ 22 - 0
conf/app.conf.example

@@ -0,0 +1,22 @@
+appname = smartwebhook
+# httpaddr = 127.0.0.1
+httpport = 8181
+runmode = dev
+sessionon = true
+sessionname = smart_webhook_id
+copyrequestbody = true
+
+#生成回调地址时完整的域名
+base_url = https://hook.iminho.me
+
+#时区设置
+timezone = Asia/Shanghai
+
+#数据库配置
+db_host=127.0.0.1
+db_port=3306
+db_database=webhook_db
+db_username=root
+db_password=123456
+
+queue_size=50

+ 7 - 0
controllers/base.go

@@ -0,0 +1,7 @@
+package controllers
+
+import "github.com/astaxie/beego"
+
+type BaseController struct {
+	beego.Controller
+}

+ 9 - 0
controllers/home.go

@@ -0,0 +1,9 @@
+package controllers
+
+type HomeController struct {
+	BaseController
+}
+
+func (p *HomeController) Index() {
+	p.TplName = "home/index.tpl"
+}

+ 9 - 0
controllers/manager.go

@@ -0,0 +1,9 @@
+package controllers
+
+type ManagerController struct {
+	BaseController
+}
+
+func (p *ManagerController) Index() {
+	p.TplName = "manager/index.tpl"
+}

+ 10 - 0
main.go

@@ -0,0 +1,10 @@
+package main
+
+import (
+	_ "github.com/lifei6671/godoc/routers"
+	"github.com/astaxie/beego"
+)
+
+func main() {
+	beego.Run()
+}

+ 12 - 0
routers/router.go

@@ -0,0 +1,12 @@
+package routers
+
+import (
+	"github.com/astaxie/beego"
+	"github.com/lifei6671/godoc/controllers"
+)
+
+func init()  {
+	beego.Router("/",&controllers.HomeController{},"*:Index")
+
+	beego.Router("/manager", &controllers.ManagerController{},"*:Index")
+}

+ 46 - 0
static/css/main.css

@@ -0,0 +1,46 @@
+.clearfix{
+    clear: both;
+}
+.container-body{
+    position: absolute;
+    width: 100%;
+    top: 0px;
+    bottom: 0;
+    background-color: #fff;
+    z-index: 100
+}
+.header{
+    width: 100%;
+    background-color: #24292e;
+    color: #ffffff;
+}
+.topbar-home-link{
+    display: inline-block;
+    color: #ffffff;
+    padding: 15px 20px;
+    font-size: 14px;
+    border-right: 1px solid #000000;
+}
+.topbar-home-link:hover{
+    color: #ffffff;
+    text-decoration: none;
+}
+.container-left{
+    width: 50%;
+    float: left;
+}
+.container-right{
+    width: 50%;
+    float: right;
+}
+
+.container-right .topbar-info{
+    float: right;
+}
+.container-right .topbar-info .topbar-member-link{
+    display: inline-block;
+    padding: 15px 20px;
+    margin-right: 10px;
+    font-size: 14px;
+    color: #ffffff;
+}

+ 280 - 0
static/element-ui/lib/alert.js

@@ -0,0 +1,280 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(1);
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(2);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(4),
+	  /* template */
+	  __webpack_require__(5),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var TYPE_CLASSES_MAP = {
+	  'success': 'el-icon-circle-check',
+	  'warning': 'el-icon-warning',
+	  'error': 'el-icon-circle-cross'
+	};
+	exports.default = {
+	  name: 'ElAlert',
+
+	  props: {
+	    title: {
+	      type: String,
+	      default: '',
+	      required: true
+	    },
+	    description: {
+	      type: String,
+	      default: ''
+	    },
+	    type: {
+	      type: String,
+	      default: 'info'
+	    },
+	    closable: {
+	      type: Boolean,
+	      default: true
+	    },
+	    closeText: {
+	      type: String,
+	      default: ''
+	    },
+	    showIcon: {
+	      type: Boolean,
+	      default: false
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      visible: true
+	    };
+	  },
+
+
+	  methods: {
+	    close: function close() {
+	      this.visible = false;
+	      this.$emit('close');
+	    }
+	  },
+
+	  computed: {
+	    typeClass: function typeClass() {
+	      return 'el-alert--' + this.type;
+	    },
+	    iconClass: function iconClass() {
+	      return TYPE_CLASSES_MAP[this.type] || 'el-icon-information';
+	    },
+	    isBigIcon: function isBigIcon() {
+	      return this.description ? 'is-big' : '';
+	    },
+	    isBoldTitle: function isBoldTitle() {
+	      return this.description ? 'is-bold' : '';
+	    }
+	  }
+	};
+
+/***/ },
+/* 5 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-alert-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-alert",
+	    class: [_vm.typeClass]
+	  }, [(_vm.showIcon) ? _c('i', {
+	    staticClass: "el-alert__icon",
+	    class: [_vm.iconClass, _vm.isBigIcon]
+	  }) : _vm._e(), _c('div', {
+	    staticClass: "el-alert__content"
+	  }, [(_vm.title) ? _c('span', {
+	    staticClass: "el-alert__title",
+	    class: [_vm.isBoldTitle]
+	  }, [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _vm._t("default", [(_vm.description) ? _c('p', {
+	    staticClass: "el-alert__description"
+	  }, [_vm._v(_vm._s(_vm.description))]) : _vm._e()]), _c('i', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.closable),
+	      expression: "closable"
+	    }],
+	    staticClass: "el-alert__closebtn",
+	    class: {
+	      'is-customed': _vm.closeText !== '', 'el-icon-close': _vm.closeText === ''
+	    },
+	    on: {
+	      "click": function($event) {
+	        _vm.close()
+	      }
+	    }
+	  }, [_vm._v(_vm._s(_vm.closeText))])], 2)])])
+	},staticRenderFns: []}
+
+/***/ }
+/******/ ]);

+ 626 - 0
static/element-ui/lib/autocomplete.js

@@ -0,0 +1,626 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(6);
+
+
+/***/ },
+/* 1 */,
+/* 2 */,
+/* 3 */
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+/* 4 */,
+/* 5 */,
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _autocomplete = __webpack_require__(7);
+
+	var _autocomplete2 = _interopRequireDefault(_autocomplete);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_autocomplete2.default.install = function (Vue) {
+	  Vue.component(_autocomplete2.default.name, _autocomplete2.default);
+	};
+
+	exports.default = _autocomplete2.default;
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(8),
+	  /* template */
+	  __webpack_require__(17),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _autocompleteSuggestions = __webpack_require__(11);
+
+	var _autocompleteSuggestions2 = _interopRequireDefault(_autocompleteSuggestions);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElAutocomplete',
+
+	  mixins: [_emitter2.default],
+
+	  componentName: 'ElAutocomplete',
+
+	  components: {
+	    ElInput: _input2.default,
+	    ElAutocompleteSuggestions: _autocompleteSuggestions2.default
+	  },
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  props: {
+	    popperClass: String,
+	    placeholder: String,
+	    disabled: Boolean,
+	    name: String,
+	    size: String,
+	    value: String,
+	    autofocus: Boolean,
+	    fetchSuggestions: Function,
+	    triggerOnFocus: {
+	      type: Boolean,
+	      default: true
+	    },
+	    customItem: String,
+	    icon: String,
+	    onIconClick: Function
+	  },
+	  data: function data() {
+	    return {
+	      isFocus: false,
+	      suggestions: [],
+	      loading: false,
+	      highlightedIndex: -1
+	    };
+	  },
+
+	  computed: {
+	    suggestionVisible: function suggestionVisible() {
+	      var suggestions = this.suggestions;
+	      var isValidData = Array.isArray(suggestions) && suggestions.length > 0;
+	      return (isValidData || this.loading) && this.isFocus;
+	    }
+	  },
+	  watch: {
+	    suggestionVisible: function suggestionVisible(val) {
+	      this.broadcast('ElAutocompleteSuggestions', 'visible', [val, this.$refs.input.$refs.input.offsetWidth]);
+	    }
+	  },
+	  methods: {
+	    getData: function getData(queryString) {
+	      var _this = this;
+
+	      this.loading = true;
+	      this.fetchSuggestions(queryString, function (suggestions) {
+	        _this.loading = false;
+	        if (Array.isArray(suggestions)) {
+	          _this.suggestions = suggestions;
+	        } else {
+	          console.error('autocomplete suggestions must be an array');
+	        }
+	      });
+	    },
+	    handleChange: function handleChange(value) {
+	      this.$emit('input', value);
+	      if (!this.triggerOnFocus && !value) {
+	        this.suggestions = [];
+	        return;
+	      }
+	      this.getData(value);
+	    },
+	    handleFocus: function handleFocus() {
+	      this.isFocus = true;
+	      if (this.triggerOnFocus) {
+	        this.getData(this.value);
+	      }
+	    },
+	    handleBlur: function handleBlur() {
+	      var _this2 = this;
+
+	      // 因为 blur 事件处理优先于 select 事件执行
+	      setTimeout(function (_) {
+	        _this2.isFocus = false;
+	      }, 100);
+	    },
+	    handleKeyEnter: function handleKeyEnter() {
+	      if (this.suggestionVisible && this.highlightedIndex >= 0 && this.highlightedIndex < this.suggestions.length) {
+	        this.select(this.suggestions[this.highlightedIndex]);
+	      }
+	    },
+	    handleClickoutside: function handleClickoutside() {
+	      this.isFocus = false;
+	    },
+	    select: function select(item) {
+	      var _this3 = this;
+
+	      this.$emit('input', item.value);
+	      this.$emit('select', item);
+	      this.$nextTick(function (_) {
+	        _this3.suggestions = [];
+	      });
+	    },
+	    highlight: function highlight(index) {
+	      if (!this.suggestionVisible || this.loading) {
+	        return;
+	      }
+	      if (index < 0) index = 0;
+	      if (index >= this.suggestions.length) {
+	        index = this.suggestions.length - 1;
+	      }
+	      var suggestion = this.$refs.suggestions.$el.querySelector('.el-autocomplete-suggestion__wrap');
+	      var suggestionList = suggestion.querySelectorAll('.el-autocomplete-suggestion__list li');
+
+	      var highlightItem = suggestionList[index];
+	      var scrollTop = suggestion.scrollTop;
+	      var offsetTop = highlightItem.offsetTop;
+
+	      if (offsetTop + highlightItem.scrollHeight > scrollTop + suggestion.clientHeight) {
+	        suggestion.scrollTop += highlightItem.scrollHeight;
+	      }
+	      if (offsetTop < scrollTop) {
+	        suggestion.scrollTop -= highlightItem.scrollHeight;
+	      }
+
+	      this.highlightedIndex = index;
+	    }
+	  },
+	  mounted: function mounted() {
+	    var _this4 = this;
+
+	    this.$on('item-click', function (item) {
+	      _this4.select(item);
+	    });
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.$refs.suggestions.$destroy();
+	  }
+	};
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(12),
+	  /* template */
+	  __webpack_require__(16),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _scrollbar = __webpack_require__(15);
+
+	var _scrollbar2 = _interopRequireDefault(_scrollbar);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  components: { ElScrollbar: _scrollbar2.default },
+	  mixins: [_vuePopper2.default, _emitter2.default],
+
+	  componentName: 'ElAutocompleteSuggestions',
+
+	  data: function data() {
+	    return {
+	      parent: this.$parent,
+	      dropdownWidth: ''
+	    };
+	  },
+
+
+	  props: {
+	    suggestions: Array,
+	    options: {
+	      default: function _default() {
+	        return {
+	          forceAbsolute: true,
+	          gpuAcceleration: false
+	        };
+	      }
+	    }
+	  },
+
+	  methods: {
+	    select: function select(item) {
+	      this.dispatch('ElAutocomplete', 'item-click', item);
+	    }
+	  },
+
+	  updated: function updated() {
+	    var _this = this;
+
+	    this.$nextTick(function (_) {
+	      _this.updatePopper();
+	    });
+	  },
+	  mounted: function mounted() {
+	    this.popperElm = this.$el;
+	    this.referenceElm = this.$parent.$refs.input.$refs.input;
+	  },
+	  created: function created() {
+	    var _this2 = this;
+
+	    this.$on('visible', function (val, inputWidth) {
+	      _this2.dropdownWidth = inputWidth + 'px';
+	      _this2.showPopper = val;
+	    });
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/scrollbar");
+
+/***/ },
+/* 16 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": _vm.doDestroy
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showPopper),
+	      expression: "showPopper"
+	    }],
+	    staticClass: "el-autocomplete-suggestion",
+	    class: {
+	      'is-loading': _vm.parent.loading
+	    },
+	    style: ({
+	      width: _vm.dropdownWidth
+	    })
+	  }, [_c('el-scrollbar', {
+	    attrs: {
+	      "tag": "ul",
+	      "wrap-class": "el-autocomplete-suggestion__wrap",
+	      "view-class": "el-autocomplete-suggestion__list"
+	    }
+	  }, [(_vm.parent.loading) ? _c('li', [_c('i', {
+	    staticClass: "el-icon-loading"
+	  })]) : _vm._l((_vm.suggestions), function(item, index) {
+	    return [(!_vm.parent.customItem) ? _c('li', {
+	      class: {
+	        'highlighted': _vm.parent.highlightedIndex === index
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.select(item)
+	        }
+	      }
+	    }, [_vm._v("\n          " + _vm._s(item.value) + "\n        ")]) : _c(_vm.parent.customItem, {
+	      tag: "component",
+	      class: {
+	        'highlighted': _vm.parent.highlightedIndex === index
+	      },
+	      attrs: {
+	        "item": item,
+	        "index": index
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.select(item)
+	        }
+	      }
+	    })]
+	  })], 2)], 1)])
+	},staticRenderFns: []}
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    directives: [{
+	      name: "clickoutside",
+	      rawName: "v-clickoutside",
+	      value: (_vm.handleClickoutside),
+	      expression: "handleClickoutside"
+	    }],
+	    staticClass: "el-autocomplete"
+	  }, [_c('el-input', {
+	    ref: "input",
+	    attrs: {
+	      "value": _vm.value,
+	      "disabled": _vm.disabled,
+	      "placeholder": _vm.placeholder,
+	      "name": _vm.name,
+	      "size": _vm.size,
+	      "icon": _vm.icon,
+	      "on-icon-click": _vm.onIconClick
+	    },
+	    on: {
+	      "change": _vm.handleChange,
+	      "focus": _vm.handleFocus,
+	      "blur": _vm.handleBlur
+	    },
+	    nativeOn: {
+	      "keydown": [function($event) {
+	        if (_vm._k($event.keyCode, "up", 38)) { return; }
+	        $event.preventDefault();
+	        _vm.highlight(_vm.highlightedIndex - 1)
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "down", 40)) { return; }
+	        $event.preventDefault();
+	        _vm.highlight(_vm.highlightedIndex + 1)
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "enter", 13)) { return; }
+	        $event.stopPropagation();
+	        _vm.handleKeyEnter($event)
+	      }]
+	    }
+	  }, [(_vm.$slots.prepend) ? _c('template', {
+	    slot: "prepend"
+	  }, [_vm._t("prepend")], 2) : _vm._e(), (_vm.$slots.append) ? _c('template', {
+	    slot: "append"
+	  }, [_vm._t("append")], 2) : _vm._e()], 2), _c('el-autocomplete-suggestions', {
+	    ref: "suggestions",
+	    class: [_vm.popperClass ? _vm.popperClass : ''],
+	    attrs: {
+	      "suggestions": _vm.suggestions
+	    }
+	  })], 1)
+	},staticRenderFns: []}
+
+/***/ }
+/******/ ]);

+ 227 - 0
static/element-ui/lib/badge.js

@@ -0,0 +1,227 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(18);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 18:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(19);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 19:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(20),
+	  /* template */
+	  __webpack_require__(21),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 20:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElBadge',
+
+	  props: {
+	    value: {},
+	    max: Number,
+	    isDot: Boolean,
+	    hidden: Boolean
+	  },
+
+	  computed: {
+	    content: function content() {
+	      if (this.isDot) return;
+
+	      var value = this.value;
+	      var max = this.max;
+
+	      if (typeof value === 'number' && typeof max === 'number') {
+	        return max < value ? max + '+' : value;
+	      }
+
+	      return value;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 21:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-badge"
+	  }, [_vm._t("default"), _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-center"
+	    }
+	  }, [_c('sup', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (!_vm.hidden && (_vm.content || _vm.isDot)),
+	      expression: "!hidden && ( content || isDot )"
+	    }],
+	    staticClass: "el-badge__content",
+	    class: {
+	      'is-fixed': _vm.$slots.default, 'is-dot': _vm.isDot
+	    },
+	    domProps: {
+	      "textContent": _vm._s(_vm.content)
+	    }
+	  })])], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 205 - 0
static/element-ui/lib/breadcrumb-item.js

@@ -0,0 +1,205 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(26);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 26:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _breadcrumbItem = __webpack_require__(27);
+
+	var _breadcrumbItem2 = _interopRequireDefault(_breadcrumbItem);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_breadcrumbItem2.default.install = function (Vue) {
+	  Vue.component(_breadcrumbItem2.default.name, _breadcrumbItem2.default);
+	};
+
+	exports.default = _breadcrumbItem2.default;
+
+/***/ },
+
+/***/ 27:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(28),
+	  /* template */
+	  __webpack_require__(29),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 28:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElBreadcrumbItem',
+	  props: {
+	    to: {},
+	    replace: Boolean
+	  },
+	  data: function data() {
+	    return {
+	      separator: ''
+	    };
+	  },
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    this.separator = this.$parent.separator;
+	    var self = this;
+	    if (this.to) {
+	      var link = this.$refs.link;
+	      link.addEventListener('click', function (_) {
+	        var to = _this.to;
+	        self.replace ? self.$router.replace(to) : self.$router.push(to);
+	      });
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 29:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('span', {
+	    staticClass: "el-breadcrumb__item"
+	  }, [_c('span', {
+	    ref: "link",
+	    staticClass: "el-breadcrumb__item__inner"
+	  }, [_vm._t("default")], 2), _c('span', {
+	    staticClass: "el-breadcrumb__separator"
+	  }, [_vm._v(_vm._s(_vm.separator))])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 185 - 0
static/element-ui/lib/breadcrumb.js

@@ -0,0 +1,185 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(22);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 22:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _breadcrumb = __webpack_require__(23);
+
+	var _breadcrumb2 = _interopRequireDefault(_breadcrumb);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_breadcrumb2.default.install = function (Vue) {
+	  Vue.component(_breadcrumb2.default.name, _breadcrumb2.default);
+	};
+
+	exports.default = _breadcrumb2.default;
+
+/***/ },
+
+/***/ 23:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(24),
+	  /* template */
+	  __webpack_require__(25),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 24:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElBreadcrumb',
+
+	  props: {
+	    separator: {
+	      type: String,
+	      default: '/'
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 25:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-breadcrumb"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 184 - 0
static/element-ui/lib/button-group.js

@@ -0,0 +1,184 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(34);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 34:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _buttonGroup = __webpack_require__(35);
+
+	var _buttonGroup2 = _interopRequireDefault(_buttonGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_buttonGroup2.default.install = function (Vue) {
+	  Vue.component(_buttonGroup2.default.name, _buttonGroup2.default);
+	};
+
+	exports.default = _buttonGroup2.default;
+
+/***/ },
+
+/***/ 35:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(36),
+	  /* template */
+	  __webpack_require__(37),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 36:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+
+	/**
+	 * button
+	 * @module components/basic/menu
+	 * @desc 用于按钮组
+	 * @param {string} label - 名称
+	 */
+	exports.default = {
+	  name: 'ElButtonGroup'
+	};
+
+/***/ },
+
+/***/ 37:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-button-group"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 239 - 0
static/element-ui/lib/button.js

@@ -0,0 +1,239 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(30);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 30:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _button = __webpack_require__(31);
+
+	var _button2 = _interopRequireDefault(_button);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_button2.default.install = function (Vue) {
+	  Vue.component(_button2.default.name, _button2.default);
+	};
+
+	exports.default = _button2.default;
+
+/***/ },
+
+/***/ 31:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(32),
+	  /* template */
+	  __webpack_require__(33),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 32:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElButton',
+
+	  props: {
+	    type: {
+	      type: String,
+	      default: 'default'
+	    },
+	    size: String,
+	    icon: {
+	      type: String,
+	      default: ''
+	    },
+	    nativeType: {
+	      type: String,
+	      default: 'button'
+	    },
+	    loading: Boolean,
+	    disabled: Boolean,
+	    plain: Boolean,
+	    autofocus: Boolean
+	  },
+
+	  methods: {
+	    handleClick: function handleClick(evt) {
+	      this.$emit('click', evt);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 33:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('button', {
+	    staticClass: "el-button",
+	    class: [
+	      _vm.type ? 'el-button--' + _vm.type : '',
+	      _vm.size ? 'el-button--' + _vm.size : '', {
+	        'is-disabled': _vm.disabled,
+	        'is-loading': _vm.loading,
+	        'is-plain': _vm.plain
+	      }
+	    ],
+	    attrs: {
+	      "disabled": _vm.disabled,
+	      "autofocus": _vm.autofocus,
+	      "type": _vm.nativeType
+	    },
+	    on: {
+	      "click": _vm.handleClick
+	    }
+	  }, [(_vm.loading) ? _c('i', {
+	    staticClass: "el-icon-loading"
+	  }) : _vm._e(), (_vm.icon && !_vm.loading) ? _c('i', {
+	    class: 'el-icon-' + _vm.icon
+	  }) : _vm._e(), (_vm.$slots.default) ? _c('span', [_vm._t("default")], 2) : _vm._e()])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 191 - 0
static/element-ui/lib/card.js

@@ -0,0 +1,191 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(38);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 38:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(39);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 39:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(40),
+	  /* template */
+	  __webpack_require__(41),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 40:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElCard',
+
+	  props: ['header', 'bodyStyle']
+	};
+
+/***/ },
+
+/***/ 41:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-card"
+	  }, [(_vm.$slots.header || _vm.header) ? _c('div', {
+	    staticClass: "el-card__header"
+	  }, [_vm._t("header", [_vm._v(_vm._s(_vm.header))])], 2) : _vm._e(), _c('div', {
+	    staticClass: "el-card__body",
+	    style: (_vm.bodyStyle)
+	  }, [_vm._t("default")], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 298 - 0
static/element-ui/lib/carousel-item.js

@@ -0,0 +1,298 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(49);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 49:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _item = __webpack_require__(50);
+
+	var _item2 = _interopRequireDefault(_item);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_item2.default.install = function (Vue) {
+	  Vue.component(_item2.default.name, _item2.default);
+	};
+
+	exports.default = _item2.default;
+
+/***/ },
+
+/***/ 50:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(51),
+	  /* template */
+	  __webpack_require__(52),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 51:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var CARD_SCALE = 0.83;
+	exports.default = {
+	  name: 'ElCarouselItem',
+
+	  props: {
+	    name: String
+	  },
+
+	  data: function data() {
+	    return {
+	      hover: false,
+	      translate: 0,
+	      scale: 1,
+	      active: false,
+	      ready: false,
+	      inStage: false
+	    };
+	  },
+
+
+	  methods: {
+	    processIndex: function processIndex(index, activeIndex, length) {
+	      if (activeIndex === 0 && index === length - 1) {
+	        return -1;
+	      } else if (activeIndex === length - 1 && index === 0) {
+	        return length;
+	      } else if (index < activeIndex - 1 && activeIndex - index >= length / 2) {
+	        return length + 1;
+	      } else if (index > activeIndex + 1 && index - activeIndex >= length / 2) {
+	        return -2;
+	      }
+	      return index;
+	    },
+	    calculateTranslate: function calculateTranslate(index, activeIndex, parentWidth) {
+	      if (this.inStage) {
+	        return parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1) / 4;
+	      } else if (index < activeIndex) {
+	        return -(1 + CARD_SCALE) * parentWidth / 4;
+	      } else {
+	        return (3 + CARD_SCALE) * parentWidth / 4;
+	      }
+	    },
+	    translateItem: function translateItem(index, activeIndex) {
+	      var parentWidth = this.$parent.$el.offsetWidth;
+	      var length = this.$parent.items.length;
+	      if (index !== activeIndex && length > 2) {
+	        index = this.processIndex(index, activeIndex, length);
+	      }
+	      if (this.$parent.type === 'card') {
+	        this.inStage = Math.round(Math.abs(index - activeIndex)) <= 1;
+	        this.active = index === activeIndex;
+	        this.translate = this.calculateTranslate(index, activeIndex, parentWidth);
+	        this.scale = this.active ? 1 : CARD_SCALE;
+	      } else {
+	        this.active = index === activeIndex;
+	        this.translate = parentWidth * (index - activeIndex);
+	      }
+	      this.ready = true;
+	    },
+	    handleItemClick: function handleItemClick() {
+	      var parent = this.$parent;
+	      if (parent && parent.type === 'card') {
+	        var index = parent.items.indexOf(this);
+	        parent.setActiveItem(index);
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    this.$parent && this.$parent.handleItemChange();
+	  },
+	  destroyed: function destroyed() {
+	    this.$parent && this.$parent.handleItemChange();
+	  }
+	};
+
+/***/ },
+
+/***/ 52:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.ready),
+	      expression: "ready"
+	    }],
+	    staticClass: "el-carousel__item",
+	    class: {
+	      'is-active': _vm.active,
+	      'el-carousel__item--card': _vm.$parent.type === 'card',
+	        'is-in-stage': _vm.inStage,
+	        'is-hover': _vm.hover
+	    },
+	    style: ({
+	      msTransform: ("translateX(" + _vm.translate + "px) scale(" + _vm.scale + ")"),
+	      webkitTransform: ("translateX(" + _vm.translate + "px) scale(" + _vm.scale + ")"),
+	      transform: ("translateX(" + _vm.translate + "px) scale(" + _vm.scale + ")")
+	    }),
+	    on: {
+	      "click": _vm.handleItemClick
+	    }
+	  }, [(_vm.$parent.type === 'card') ? _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (!_vm.active),
+	      expression: "!active"
+	    }],
+	    staticClass: "el-carousel__mask"
+	  }) : _vm._e(), _vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 518 - 0
static/element-ui/lib/carousel.js

@@ -0,0 +1,518 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(42);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 42:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(43);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 43:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(44),
+	  /* template */
+	  __webpack_require__(48),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 44:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _throttle = __webpack_require__(45);
+
+	var _throttle2 = _interopRequireDefault(_throttle);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	var _resizeEvent = __webpack_require__(47);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElCarousel',
+
+	  props: {
+	    initialIndex: {
+	      type: Number,
+	      default: 0
+	    },
+	    height: String,
+	    trigger: {
+	      type: String,
+	      default: 'hover'
+	    },
+	    autoplay: {
+	      type: Boolean,
+	      default: true
+	    },
+	    interval: {
+	      type: Number,
+	      default: 3000
+	    },
+	    indicatorPosition: String,
+	    indicator: {
+	      type: Boolean,
+	      default: true
+	    },
+	    arrow: {
+	      type: String,
+	      default: 'hover'
+	    },
+	    type: String
+	  },
+
+	  data: function data() {
+	    return {
+	      items: [],
+	      activeIndex: -1,
+	      containerWidth: 0,
+	      timer: null,
+	      hover: false
+	    };
+	  },
+
+
+	  watch: {
+	    items: function items(val) {
+	      if (val.length > 0) this.setActiveItem(0);
+	    },
+	    activeIndex: function activeIndex(val, oldVal) {
+	      this.resetItemPosition();
+	      this.$emit('change', val, oldVal);
+	    }
+	  },
+
+	  methods: {
+	    handleMouseEnter: function handleMouseEnter() {
+	      this.hover = true;
+	      this.pauseTimer();
+	    },
+	    handleMouseLeave: function handleMouseLeave() {
+	      this.hover = false;
+	      this.startTimer();
+	    },
+	    itemInStage: function itemInStage(item, index) {
+	      var length = this.items.length;
+	      if (index === length - 1 && item.inStage && this.items[0].active || item.inStage && this.items[index + 1] && this.items[index + 1].active) {
+	        return 'left';
+	      } else if (index === 0 && item.inStage && this.items[length - 1].active || item.inStage && this.items[index - 1] && this.items[index - 1].active) {
+	        return 'right';
+	      }
+	      return false;
+	    },
+	    handleButtonEnter: function handleButtonEnter(arrow) {
+	      var _this = this;
+
+	      this.items.forEach(function (item, index) {
+	        if (arrow === _this.itemInStage(item, index)) {
+	          item.hover = true;
+	        }
+	      });
+	    },
+	    handleButtonLeave: function handleButtonLeave() {
+	      this.items.forEach(function (item) {
+	        item.hover = false;
+	      });
+	    },
+	    updateItems: function updateItems() {
+	      this.items = this.$children.filter(function (child) {
+	        return child.$options.name === 'ElCarouselItem';
+	      });
+	    },
+	    resetItemPosition: function resetItemPosition() {
+	      var _this2 = this;
+
+	      this.items.forEach(function (item, index) {
+	        item.translateItem(index, _this2.activeIndex);
+	      });
+	    },
+	    playSlides: function playSlides() {
+	      if (this.activeIndex < this.items.length - 1) {
+	        this.activeIndex++;
+	      } else {
+	        this.activeIndex = 0;
+	      }
+	    },
+	    pauseTimer: function pauseTimer() {
+	      clearInterval(this.timer);
+	    },
+	    startTimer: function startTimer() {
+	      if (this.interval <= 0 || !this.autoplay) return;
+	      this.timer = setInterval(this.playSlides, this.interval);
+	    },
+	    setActiveItem: function setActiveItem(index) {
+	      if (typeof index === 'string') {
+	        var filteredItems = this.items.filter(function (item) {
+	          return item.name === index;
+	        });
+	        if (filteredItems.length > 0) {
+	          index = this.items.indexOf(filteredItems[0]);
+	        }
+	      }
+	      index = Number(index);
+	      if (isNaN(index) || index !== Math.floor(index)) {
+	        ("production") !== 'production' && console.warn('[Element Warn][Carousel]index must be an integer.');
+	        return;
+	      }
+	      var length = this.items.length;
+	      if (index < 0) {
+	        this.activeIndex = length - 1;
+	      } else if (index >= length) {
+	        this.activeIndex = 0;
+	      } else {
+	        this.activeIndex = index;
+	      }
+	    },
+	    prev: function prev() {
+	      this.setActiveItem(this.activeIndex - 1);
+	    },
+	    next: function next() {
+	      this.setActiveItem(this.activeIndex + 1);
+	    },
+	    handleIndicatorClick: function handleIndicatorClick(index) {
+	      this.activeIndex = index;
+	    },
+	    handleIndicatorHover: function handleIndicatorHover(index) {
+	      if (this.trigger === 'hover' && index !== this.activeIndex) {
+	        this.activeIndex = index;
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    var _this3 = this;
+
+	    this.handleItemChange = (0, _debounce2.default)(100, this.updateItems);
+	    this.throttledArrowClick = (0, _throttle2.default)(300, true, function (index) {
+	      _this3.setActiveItem(index);
+	    });
+	    this.throttledIndicatorHover = (0, _throttle2.default)(300, function (index) {
+	      _this3.handleIndicatorHover(index);
+	    });
+	  },
+	  mounted: function mounted() {
+	    var _this4 = this;
+
+	    this.updateItems();
+	    this.$nextTick(function () {
+	      (0, _resizeEvent.addResizeListener)(_this4.$el, _this4.resetItemPosition);
+	      if (_this4.initialIndex < _this4.items.length && _this4.initialIndex >= 0) {
+	        _this4.activeIndex = _this4.initialIndex;
+	      }
+	      _this4.startTimer();
+	    });
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    if (this.$el) (0, _resizeEvent.removeResizeListener)(this.$el, this.resetItemPosition);
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 45:
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/throttle");
+
+/***/ },
+
+/***/ 46:
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/debounce");
+
+/***/ },
+
+/***/ 47:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/resize-event");
+
+/***/ },
+
+/***/ 48:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-carousel",
+	    class: {
+	      'el-carousel--card': _vm.type === 'card'
+	    },
+	    on: {
+	      "mouseenter": function($event) {
+	        $event.stopPropagation();
+	        _vm.handleMouseEnter($event)
+	      },
+	      "mouseleave": function($event) {
+	        $event.stopPropagation();
+	        _vm.handleMouseLeave($event)
+	      }
+	    }
+	  }, [_c('div', {
+	    staticClass: "el-carousel__container",
+	    style: ({
+	      height: _vm.height
+	    })
+	  }, [_c('transition', {
+	    attrs: {
+	      "name": "carousel-arrow-left"
+	    }
+	  }, [(_vm.arrow !== 'never') ? _c('button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.arrow === 'always' || _vm.hover),
+	      expression: "arrow === 'always' || hover"
+	    }],
+	    staticClass: "el-carousel__arrow el-carousel__arrow--left",
+	    on: {
+	      "mouseenter": function($event) {
+	        _vm.handleButtonEnter('left')
+	      },
+	      "mouseleave": _vm.handleButtonLeave,
+	      "click": function($event) {
+	        $event.stopPropagation();
+	        _vm.throttledArrowClick(_vm.activeIndex - 1)
+	      }
+	    }
+	  }, [_c('i', {
+	    staticClass: "el-icon-arrow-left"
+	  })]) : _vm._e()]), _c('transition', {
+	    attrs: {
+	      "name": "carousel-arrow-right"
+	    }
+	  }, [(_vm.arrow !== 'never') ? _c('button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.arrow === 'always' || _vm.hover),
+	      expression: "arrow === 'always' || hover"
+	    }],
+	    staticClass: "el-carousel__arrow el-carousel__arrow--right",
+	    on: {
+	      "mouseenter": function($event) {
+	        _vm.handleButtonEnter('right')
+	      },
+	      "mouseleave": _vm.handleButtonLeave,
+	      "click": function($event) {
+	        $event.stopPropagation();
+	        _vm.throttledArrowClick(_vm.activeIndex + 1)
+	      }
+	    }
+	  }, [_c('i', {
+	    staticClass: "el-icon-arrow-right"
+	  })]) : _vm._e()]), _vm._t("default")], 2), (_vm.indicatorPosition !== 'none') ? _c('ul', {
+	    staticClass: "el-carousel__indicators",
+	    class: {
+	      'el-carousel__indicators--outside': _vm.indicatorPosition === 'outside' || _vm.type === 'card'
+	    }
+	  }, _vm._l((_vm.items), function(item, index) {
+	    return _c('li', {
+	      staticClass: "el-carousel__indicator",
+	      class: {
+	        'is-active': index === _vm.activeIndex
+	      },
+	      on: {
+	        "mouseenter": function($event) {
+	          _vm.throttledIndicatorHover(index)
+	        },
+	        "click": function($event) {
+	          $event.stopPropagation();
+	          _vm.handleIndicatorClick(index)
+	        }
+	      }
+	    }, [_c('button', {
+	      staticClass: "el-carousel__button"
+	    })])
+	  })) : _vm._e()])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 945 - 0
static/element-ui/lib/cascader.js

@@ -0,0 +1,945 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(53);
+
+
+/***/ },
+/* 1 */,
+/* 2 */,
+/* 3 */
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+/* 4 */,
+/* 5 */,
+/* 6 */,
+/* 7 */,
+/* 8 */,
+/* 9 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+/* 11 */,
+/* 12 */,
+/* 13 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+/* 15 */,
+/* 16 */,
+/* 17 */,
+/* 18 */,
+/* 19 */,
+/* 20 */,
+/* 21 */,
+/* 22 */,
+/* 23 */,
+/* 24 */,
+/* 25 */,
+/* 26 */,
+/* 27 */,
+/* 28 */,
+/* 29 */,
+/* 30 */,
+/* 31 */,
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */,
+/* 36 */,
+/* 37 */,
+/* 38 */,
+/* 39 */,
+/* 40 */,
+/* 41 */,
+/* 42 */,
+/* 43 */,
+/* 44 */,
+/* 45 */,
+/* 46 */
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/debounce");
+
+/***/ },
+/* 47 */,
+/* 48 */,
+/* 49 */,
+/* 50 */,
+/* 51 */,
+/* 52 */,
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(54);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(55),
+	  /* template */
+	  __webpack_require__(62),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _menu = __webpack_require__(57);
+
+	var _menu2 = _interopRequireDefault(_menu);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _locale3 = __webpack_require__(61);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var popperMixin = {
+	  props: {
+	    placement: {
+	      type: String,
+	      default: 'bottom-start'
+	    },
+	    appendToBody: _vuePopper2.default.props.appendToBody,
+	    offset: _vuePopper2.default.props.offset,
+	    boundariesPadding: _vuePopper2.default.props.boundariesPadding,
+	    popperOptions: _vuePopper2.default.props.popperOptions
+	  },
+	  methods: _vuePopper2.default.methods,
+	  data: _vuePopper2.default.data,
+	  beforeDestroy: _vuePopper2.default.beforeDestroy
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElCascader',
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  mixins: [popperMixin, _emitter2.default, _locale2.default],
+
+	  components: {
+	    ElInput: _input2.default
+	  },
+
+	  props: {
+	    options: {
+	      type: Array,
+	      required: true
+	    },
+	    props: {
+	      type: Object,
+	      default: function _default() {
+	        return {
+	          children: 'children',
+	          label: 'label',
+	          value: 'value',
+	          disabled: 'disabled'
+	        };
+	      }
+	    },
+	    value: {
+	      type: Array,
+	      default: function _default() {
+	        return [];
+	      }
+	    },
+	    placeholder: {
+	      type: String,
+	      default: function _default() {
+	        return (0, _locale3.t)('el.cascader.placeholder');
+	      }
+	    },
+	    disabled: Boolean,
+	    clearable: {
+	      type: Boolean,
+	      default: false
+	    },
+	    changeOnSelect: Boolean,
+	    popperClass: String,
+	    expandTrigger: {
+	      type: String,
+	      default: 'click'
+	    },
+	    filterable: Boolean,
+	    size: String,
+	    showAllLevels: {
+	      type: Boolean,
+	      default: true
+	    },
+	    debounce: {
+	      type: Number,
+	      default: 300
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      currentValue: this.value,
+	      menu: null,
+	      debouncedInputChange: function debouncedInputChange() {},
+
+	      menuVisible: false,
+	      inputHover: false,
+	      inputValue: '',
+	      flatOptions: null
+	    };
+	  },
+
+
+	  computed: {
+	    labelKey: function labelKey() {
+	      return this.props.label || 'label';
+	    },
+	    valueKey: function valueKey() {
+	      return this.props.value || 'value';
+	    },
+	    childrenKey: function childrenKey() {
+	      return this.props.children || 'children';
+	    },
+	    currentLabels: function currentLabels() {
+	      var _this = this;
+
+	      var options = this.options;
+	      var labels = [];
+	      this.currentValue.forEach(function (value) {
+	        var targetOption = options && options.filter(function (option) {
+	          return option[_this.valueKey] === value;
+	        })[0];
+	        if (targetOption) {
+	          labels.push(targetOption[_this.labelKey]);
+	          options = targetOption[_this.childrenKey];
+	        }
+	      });
+	      return labels;
+	    }
+	  },
+
+	  watch: {
+	    menuVisible: function menuVisible(value) {
+	      value ? this.showMenu() : this.hideMenu();
+	    },
+	    value: function value(_value) {
+	      this.currentValue = _value;
+	    },
+	    currentValue: function currentValue(value) {
+	      this.dispatch('ElFormItem', 'el.form.change', [value]);
+	    },
+
+	    options: {
+	      deep: true,
+	      handler: function handler(value) {
+	        if (!this.menu) {
+	          this.initMenu();
+	        }
+	        this.flatOptions = this.flattenOptions(this.options);
+	        this.menu.options = value;
+	      }
+	    }
+	  },
+
+	  methods: {
+	    initMenu: function initMenu() {
+	      this.menu = new _vue2.default(_menu2.default).$mount();
+	      this.menu.options = this.options;
+	      this.menu.props = this.props;
+	      this.menu.expandTrigger = this.expandTrigger;
+	      this.menu.changeOnSelect = this.changeOnSelect;
+	      this.menu.popperClass = this.popperClass;
+	      this.popperElm = this.menu.$el;
+	      this.menu.$on('pick', this.handlePick);
+	      this.menu.$on('activeItemChange', this.handleActiveItemChange);
+	      this.menu.$on('menuLeave', this.doDestroy);
+	    },
+	    showMenu: function showMenu() {
+	      var _this2 = this;
+
+	      if (!this.menu) {
+	        this.initMenu();
+	      }
+
+	      this.menu.value = this.currentValue.slice(0);
+	      this.menu.visible = true;
+	      this.menu.options = this.options;
+	      this.$nextTick(function (_) {
+	        _this2.updatePopper();
+	        _this2.menu.inputWidth = _this2.$refs.input.$el.offsetWidth - 2;
+	      });
+	    },
+	    hideMenu: function hideMenu() {
+	      this.inputValue = '';
+	      this.menu.visible = false;
+	    },
+	    handleActiveItemChange: function handleActiveItemChange(value) {
+	      var _this3 = this;
+
+	      this.$nextTick(function (_) {
+	        _this3.updatePopper();
+	      });
+	      this.$emit('active-item-change', value);
+	    },
+	    handlePick: function handlePick(value) {
+	      var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+	      this.currentValue = value;
+	      this.$emit('input', value);
+	      this.$emit('change', value);
+
+	      if (close) {
+	        this.menuVisible = false;
+	      }
+	    },
+	    handleInputChange: function handleInputChange(value) {
+	      var _this4 = this;
+
+	      if (!this.menuVisible) return;
+	      var flatOptions = this.flatOptions;
+
+	      if (!value) {
+	        this.menu.options = this.options;
+	        return;
+	      }
+
+	      var filteredFlatOptions = flatOptions.filter(function (optionsStack) {
+	        return optionsStack.some(function (option) {
+	          return new RegExp(value, 'i').test(option[_this4.labelKey]);
+	        });
+	      });
+
+	      if (filteredFlatOptions.length > 0) {
+	        filteredFlatOptions = filteredFlatOptions.map(function (optionStack) {
+	          return {
+	            __IS__FLAT__OPTIONS: true,
+	            value: optionStack.map(function (item) {
+	              return item[_this4.valueKey];
+	            }),
+	            label: _this4.renderFilteredOptionLabel(value, optionStack)
+	          };
+	        });
+	      } else {
+	        filteredFlatOptions = [{
+	          __IS__FLAT__OPTIONS: true,
+	          label: this.t('el.cascader.noMatch'),
+	          value: '',
+	          disabled: true
+	        }];
+	      }
+	      this.menu.options = filteredFlatOptions;
+	    },
+	    renderFilteredOptionLabel: function renderFilteredOptionLabel(inputValue, optionsStack) {
+	      var _this5 = this;
+
+	      return optionsStack.map(function (option, index) {
+	        var label = option[_this5.labelKey];
+	        var keywordIndex = label.toLowerCase().indexOf(inputValue.toLowerCase());
+	        var labelPart = label.slice(keywordIndex, inputValue.length + keywordIndex);
+	        var node = keywordIndex > -1 ? _this5.highlightKeyword(label, labelPart) : label;
+	        return index === 0 ? node : [' / ', node];
+	      });
+	    },
+	    highlightKeyword: function highlightKeyword(label, keyword) {
+	      var _this6 = this;
+
+	      var h = this._c;
+	      return label.split(keyword).map(function (node, index) {
+	        return index === 0 ? node : [h('span', { class: { 'el-cascader-menu__item__keyword': true } }, [_this6._v(keyword)]), node];
+	      });
+	    },
+	    flattenOptions: function flattenOptions(options) {
+	      var _this7 = this;
+
+	      var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+	      var flatOptions = [];
+	      options.forEach(function (option) {
+	        var optionsStack = ancestor.concat(option);
+	        if (!option[_this7.childrenKey]) {
+	          flatOptions.push(optionsStack);
+	        } else {
+	          if (_this7.changeOnSelect) {
+	            flatOptions.push(optionsStack);
+	          }
+	          flatOptions = flatOptions.concat(_this7.flattenOptions(option[_this7.childrenKey], optionsStack));
+	        }
+	      });
+	      return flatOptions;
+	    },
+	    clearValue: function clearValue(ev) {
+	      ev.stopPropagation();
+	      this.handlePick([], true);
+	    },
+	    handleClickoutside: function handleClickoutside() {
+	      this.menuVisible = false;
+	    },
+	    handleClick: function handleClick() {
+	      if (this.disabled) return;
+	      if (this.filterable) {
+	        this.menuVisible = true;
+	        this.$refs.input.$refs.input.focus();
+	        return;
+	      }
+	      this.menuVisible = !this.menuVisible;
+	    }
+	  },
+
+	  created: function created() {
+	    var _this8 = this;
+
+	    this.debouncedInputChange = (0, _debounce2.default)(this.debounce, function (value) {
+	      _this8.handleInputChange(value);
+	    });
+	  },
+	  mounted: function mounted() {
+	    this.flatOptions = this.flattenOptions(this.options);
+	  }
+	};
+
+/***/ },
+/* 56 */
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+/* 57 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(58),
+	  /* template */
+	  null,
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _babelHelperVueJsxMergeProps = __webpack_require__(59);
+
+	var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElCascaderMenu',
+
+	  data: function data() {
+	    return {
+	      inputWidth: 0,
+	      options: [],
+	      props: {},
+	      visible: false,
+	      activeValue: [],
+	      value: [],
+	      expandTrigger: 'click',
+	      changeOnSelect: false,
+	      popperClass: ''
+	    };
+	  },
+
+
+	  watch: {
+	    visible: function visible(value) {
+	      if (value) {
+	        this.activeValue = this.value;
+	      }
+	    },
+
+	    value: {
+	      immediate: true,
+	      handler: function handler(value) {
+	        this.activeValue = value;
+	      }
+	    }
+	  },
+
+	  computed: {
+	    activeOptions: {
+	      cache: false,
+	      get: function get() {
+	        var _this = this;
+
+	        var activeValue = this.activeValue;
+	        var configurableProps = ['label', 'value', 'children', 'disabled'];
+
+	        var formatOptions = function formatOptions(options) {
+	          options.forEach(function (option) {
+	            if (option.__IS__FLAT__OPTIONS) return;
+	            configurableProps.forEach(function (prop) {
+	              var value = option[_this.props[prop] || prop];
+	              if (value) option[prop] = value;
+	            });
+	            if (Array.isArray(option.children)) {
+	              formatOptions(option.children);
+	            }
+	          });
+	        };
+
+	        var loadActiveOptions = function loadActiveOptions(options) {
+	          var activeOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+	          var level = activeOptions.length;
+	          activeOptions[level] = options;
+	          var active = activeValue[level];
+	          if (active) {
+	            options = options.filter(function (option) {
+	              return option.value === active;
+	            })[0];
+	            if (options && options.children) {
+	              loadActiveOptions(options.children, activeOptions);
+	            }
+	          }
+	          return activeOptions;
+	        };
+
+	        formatOptions(this.options);
+	        return loadActiveOptions(this.options);
+	      }
+	    }
+	  },
+
+	  methods: {
+	    select: function select(item, menuIndex) {
+	      if (item.__IS__FLAT__OPTIONS) {
+	        this.activeValue = item.value;
+	      } else if (menuIndex) {
+	        this.activeValue.splice(menuIndex, this.activeValue.length - 1, item.value);
+	      } else {
+	        this.activeValue = [item.value];
+	      }
+	      this.$emit('pick', this.activeValue);
+	    },
+	    handleMenuLeave: function handleMenuLeave() {
+	      this.$emit('menuLeave');
+	    },
+	    activeItem: function activeItem(item, menuIndex) {
+	      var len = this.activeOptions.length;
+	      this.activeValue.splice(menuIndex, len, item.value);
+	      this.activeOptions.splice(menuIndex + 1, len, item.children);
+	      if (this.changeOnSelect) {
+	        this.$emit('pick', this.activeValue, false);
+	      } else {
+	        this.$emit('activeItemChange', this.activeValue);
+	      }
+	    }
+	  },
+
+	  render: function render(h) {
+	    var _this2 = this;
+
+	    var activeValue = this.activeValue,
+	        activeOptions = this.activeOptions,
+	        visible = this.visible,
+	        expandTrigger = this.expandTrigger,
+	        popperClass = this.popperClass;
+
+
+	    var menus = this._l(activeOptions, function (menu, menuIndex) {
+	      var isFlat = false;
+	      var items = _this2._l(menu, function (item) {
+	        var events = {
+	          on: {}
+	        };
+
+	        if (item.__IS__FLAT__OPTIONS) isFlat = true;
+
+	        if (!item.disabled) {
+	          if (item.children) {
+	            var triggerEvent = {
+	              click: 'click',
+	              hover: 'mouseenter'
+	            }[expandTrigger];
+	            events.on[triggerEvent] = function () {
+	              _this2.activeItem(item, menuIndex);
+	            };
+	          } else {
+	            events.on.click = function () {
+	              _this2.select(item, menuIndex);
+	            };
+	          }
+	        }
+
+	        return h(
+	          'li',
+	          (0, _babelHelperVueJsxMergeProps2.default)([{
+	            'class': {
+	              'el-cascader-menu__item': true,
+	              'el-cascader-menu__item--extensible': item.children,
+	              'is-active': item.value === activeValue[menuIndex],
+	              'is-disabled': item.disabled
+	            }
+	          }, events]),
+	          [item.label]
+	        );
+	      });
+	      var menuStyle = {};
+	      if (isFlat) {
+	        menuStyle.minWidth = _this2.inputWidth + 'px';
+	      }
+
+	      return h(
+	        'ul',
+	        {
+	          'class': {
+	            'el-cascader-menu': true,
+	            'el-cascader-menu--flexible': isFlat
+	          },
+	          style: menuStyle },
+	        [items]
+	      );
+	    });
+	    return h(
+	      'transition',
+	      {
+	        attrs: { name: 'el-zoom-in-top' },
+	        on: {
+	          'after-leave': this.handleMenuLeave
+	        }
+	      },
+	      [h(
+	        'div',
+	        {
+	          directives: [{
+	            name: 'show',
+	            value: visible
+	          }],
+
+	          'class': ['el-cascader-menus', popperClass]
+	        },
+	        [menus]
+	      )]
+	    );
+	  }
+	};
+
+/***/ },
+/* 59 */
+/***/ function(module, exports) {
+
+	module.exports = require("babel-helper-vue-jsx-merge-props");
+
+/***/ },
+/* 60 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+/* 61 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/locale");
+
+/***/ },
+/* 62 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('span', {
+	    directives: [{
+	      name: "clickoutside",
+	      rawName: "v-clickoutside",
+	      value: (_vm.handleClickoutside),
+	      expression: "handleClickoutside"
+	    }],
+	    ref: "reference",
+	    staticClass: "el-cascader",
+	    class: [{
+	        'is-opened': _vm.menuVisible,
+	        'is-disabled': _vm.disabled
+	      },
+	      _vm.size ? 'el-cascader--' + _vm.size : ''
+	    ],
+	    on: {
+	      "click": _vm.handleClick,
+	      "mouseenter": function($event) {
+	        _vm.inputHover = true
+	      },
+	      "mouseleave": function($event) {
+	        _vm.inputHover = false
+	      }
+	    }
+	  }, [_c('el-input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.inputValue),
+	      expression: "inputValue"
+	    }],
+	    ref: "input",
+	    attrs: {
+	      "readonly": !_vm.filterable,
+	      "placeholder": _vm.currentLabels.length ? undefined : _vm.placeholder,
+	      "validate-event": false,
+	      "size": _vm.size,
+	      "disabled": _vm.disabled
+	    },
+	    domProps: {
+	      "value": (_vm.inputValue)
+	    },
+	    on: {
+	      "change": _vm.debouncedInputChange,
+	      "input": function($event) {
+	        _vm.inputValue = $event
+	      }
+	    }
+	  }, [_c('template', {
+	    slot: "icon"
+	  }, [(_vm.clearable && _vm.inputHover && _vm.currentLabels.length) ? _c('i', {
+	    key: "1",
+	    staticClass: "el-input__icon el-icon-circle-close el-cascader__clearIcon",
+	    on: {
+	      "click": _vm.clearValue
+	    }
+	  }) : _c('i', {
+	    key: "2",
+	    staticClass: "el-input__icon el-icon-caret-bottom",
+	    class: {
+	      'is-reverse': _vm.menuVisible
+	    }
+	  })])], 2), _c('span', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.inputValue === ''),
+	      expression: "inputValue === ''"
+	    }],
+	    staticClass: "el-cascader__label"
+	  }, [(_vm.showAllLevels) ? [_vm._l((_vm.currentLabels), function(label, index) {
+	    return [_vm._v("\n        " + _vm._s(label) + "\n        "), (index < _vm.currentLabels.length - 1) ? _c('span', [_vm._v(" / ")]) : _vm._e()]
+	  })] : [_vm._v("\n      " + _vm._s(_vm.currentLabels[_vm.currentLabels.length - 1]) + "\n    ")]], 2)], 1)
+	},staticRenderFns: []}
+
+/***/ }
+/******/ ]);

+ 202 - 0
static/element-ui/lib/checkbox-group.js

@@ -0,0 +1,202 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(67);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 67:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _checkboxGroup = __webpack_require__(68);
+
+	var _checkboxGroup2 = _interopRequireDefault(_checkboxGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_checkboxGroup2.default.install = function (Vue) {
+	  Vue.component(_checkboxGroup2.default.name, _checkboxGroup2.default);
+	};
+
+	exports.default = _checkboxGroup2.default;
+
+/***/ },
+
+/***/ 68:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(69),
+	  /* template */
+	  __webpack_require__(70),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 69:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElCheckboxGroup',
+
+	  componentName: 'ElCheckboxGroup',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    value: {},
+	    min: Number,
+	    max: Number
+	  },
+
+	  watch: {
+	    value: function value(_value) {
+	      this.dispatch('ElFormItem', 'el.form.change', [_value]);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 70:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-checkbox-group"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 415 - 0
static/element-ui/lib/checkbox.js

@@ -0,0 +1,415 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(63);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 63:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _checkbox = __webpack_require__(64);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_checkbox2.default.install = function (Vue) {
+	  Vue.component(_checkbox2.default.name, _checkbox2.default);
+	};
+
+	exports.default = _checkbox2.default;
+
+/***/ },
+
+/***/ 64:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(65),
+	  /* template */
+	  __webpack_require__(66),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 65:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElCheckbox',
+
+	  mixins: [_emitter2.default],
+
+	  componentName: 'ElCheckbox',
+
+	  data: function data() {
+	    return {
+	      selfModel: false,
+	      focus: false
+	    };
+	  },
+
+
+	  computed: {
+	    model: {
+	      get: function get() {
+	        return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;
+	      },
+	      set: function set(val) {
+	        if (this.isGroup) {
+	          var isLimitExceeded = false;
+	          this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (isLimitExceeded = true);
+
+	          this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (isLimitExceeded = true);
+
+	          isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);
+	        } else if (this.value !== undefined) {
+	          this.$emit('input', val);
+	        } else {
+	          this.selfModel = val;
+	        }
+	      }
+	    },
+
+	    isChecked: function isChecked() {
+	      if ({}.toString.call(this.model) === '[object Boolean]') {
+	        return this.model;
+	      } else if (Array.isArray(this.model)) {
+	        return this.model.indexOf(this.label) > -1;
+	      } else if (this.model !== null && this.model !== undefined) {
+	        return this.model === this.trueLabel;
+	      }
+	    },
+	    isGroup: function isGroup() {
+	      var parent = this.$parent;
+	      while (parent) {
+	        if (parent.$options.componentName !== 'ElCheckboxGroup') {
+	          parent = parent.$parent;
+	        } else {
+	          this._checkboxGroup = parent;
+	          return true;
+	        }
+	      }
+	      return false;
+	    },
+	    store: function store() {
+	      return this._checkboxGroup ? this._checkboxGroup.value : this.value;
+	    }
+	  },
+
+	  props: {
+	    value: {},
+	    label: {},
+	    indeterminate: Boolean,
+	    disabled: Boolean,
+	    checked: Boolean,
+	    name: String,
+	    trueLabel: [String, Number],
+	    falseLabel: [String, Number]
+	  },
+
+	  methods: {
+	    addToStore: function addToStore() {
+	      if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {
+	        this.model.push(this.label);
+	      } else {
+	        this.model = this.trueLabel || true;
+	      }
+	    },
+	    handleChange: function handleChange(ev) {
+	      var _this = this;
+
+	      this.$emit('change', ev);
+	      if (this.isGroup) {
+	        this.$nextTick(function (_) {
+	          _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);
+	        });
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    this.checked && this.addToStore();
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 66:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('label', {
+	    staticClass: "el-checkbox"
+	  }, [_c('span', {
+	    staticClass: "el-checkbox__input",
+	    class: {
+	      'is-disabled': _vm.disabled,
+	      'is-checked': _vm.isChecked,
+	      'is-indeterminate': _vm.indeterminate,
+	      'is-focus': _vm.focus
+	    }
+	  }, [_c('span', {
+	    staticClass: "el-checkbox__inner"
+	  }), (_vm.trueLabel || _vm.falseLabel) ? _c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.model),
+	      expression: "model"
+	    }],
+	    staticClass: "el-checkbox__original",
+	    attrs: {
+	      "type": "checkbox",
+	      "name": _vm.name,
+	      "disabled": _vm.disabled,
+	      "true-value": _vm.trueLabel,
+	      "false-value": _vm.falseLabel
+	    },
+	    domProps: {
+	      "checked": Array.isArray(_vm.model) ? _vm._i(_vm.model, null) > -1 : _vm._q(_vm.model, _vm.trueLabel)
+	    },
+	    on: {
+	      "change": [function($event) {
+	        var $$a = _vm.model,
+	          $$el = $event.target,
+	          $$c = $$el.checked ? (_vm.trueLabel) : (_vm.falseLabel);
+	        if (Array.isArray($$a)) {
+	          var $$v = null,
+	            $$i = _vm._i($$a, $$v);
+	          if ($$c) {
+	            $$i < 0 && (_vm.model = $$a.concat($$v))
+	          } else {
+	            $$i > -1 && (_vm.model = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
+	          }
+	        } else {
+	          _vm.model = $$c
+	        }
+	      }, _vm.handleChange],
+	      "focus": function($event) {
+	        _vm.focus = true
+	      },
+	      "blur": function($event) {
+	        _vm.focus = false
+	      }
+	    }
+	  }) : _c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.model),
+	      expression: "model"
+	    }],
+	    staticClass: "el-checkbox__original",
+	    attrs: {
+	      "type": "checkbox",
+	      "disabled": _vm.disabled,
+	      "name": _vm.name
+	    },
+	    domProps: {
+	      "value": _vm.label,
+	      "checked": Array.isArray(_vm.model) ? _vm._i(_vm.model, _vm.label) > -1 : (_vm.model)
+	    },
+	    on: {
+	      "change": [function($event) {
+	        var $$a = _vm.model,
+	          $$el = $event.target,
+	          $$c = $$el.checked ? (true) : (false);
+	        if (Array.isArray($$a)) {
+	          var $$v = _vm.label,
+	            $$i = _vm._i($$a, $$v);
+	          if ($$c) {
+	            $$i < 0 && (_vm.model = $$a.concat($$v))
+	          } else {
+	            $$i > -1 && (_vm.model = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
+	          }
+	        } else {
+	          _vm.model = $$c
+	        }
+	      }, _vm.handleChange],
+	      "focus": function($event) {
+	        _vm.focus = true
+	      },
+	      "blur": function($event) {
+	        _vm.focus = false
+	      }
+	    }
+	  })]), (_vm.$slots.default || _vm.label) ? _c('span', {
+	    staticClass: "el-checkbox__label"
+	  }, [_vm._t("default"), (!_vm.$slots.default) ? [_vm._v(_vm._s(_vm.label))] : _vm._e()], 2) : _vm._e()])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 155 - 0
static/element-ui/lib/col.js

@@ -0,0 +1,155 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(71);
+
+
+/***/ },
+
+/***/ 71:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _col = __webpack_require__(72);
+
+	var _col2 = _interopRequireDefault(_col);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_col2.default.install = function (Vue) {
+	  Vue.component(_col2.default.name, _col2.default);
+	};
+
+	exports.default = _col2.default;
+
+/***/ },
+
+/***/ 72:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+	exports.default = {
+	  name: 'ElCol',
+
+	  props: {
+	    span: {
+	      type: Number,
+	      default: 24
+	    },
+	    offset: Number,
+	    pull: Number,
+	    push: Number,
+	    xs: [Number, Object],
+	    sm: [Number, Object],
+	    md: [Number, Object],
+	    lg: [Number, Object]
+	  },
+
+	  computed: {
+	    gutter: function gutter() {
+	      return this.$parent.gutter;
+	    },
+	    style: function style() {
+	      var ret = {};
+
+	      if (this.gutter) {
+	        ret.paddingLeft = this.gutter / 2 + 'px';
+	        ret.paddingRight = ret.paddingLeft;
+	      }
+
+	      return ret;
+	    }
+	  },
+	  render: function render(h) {
+	    var _this = this;
+
+	    var style = this.style;
+
+	    var classList = [];
+
+	    ['span', 'offset', 'pull', 'push'].forEach(function (prop) {
+	      if (_this[prop]) {
+	        classList.push(prop !== 'span' ? 'el-col-' + prop + '-' + _this[prop] : 'el-col-' + _this[prop]);
+	      }
+	    });
+
+	    ['xs', 'sm', 'md', 'lg'].forEach(function (size) {
+	      if (typeof _this[size] === 'number') {
+	        classList.push('el-col-' + size + '-' + _this[size]);
+	      } else if (_typeof(_this[size]) === 'object') {
+	        (function () {
+	          var props = _this[size];
+	          Object.keys(props).forEach(function (prop) {
+	            classList.push(prop !== 'span' ? 'el-col-' + size + '-' + prop + '-' + props[prop] : 'el-col-' + size + '-' + props[prop]);
+	          });
+	        })();
+	      }
+	    });
+
+	    return h(
+	      'div',
+	      {
+	        'class': ['el-col', classList],
+	        style: style },
+	      [this.$slots.default]
+	    );
+	  }
+	};
+
+/***/ }
+
+/******/ });

+ 280 - 0
static/element-ui/lib/collapse-item.js

@@ -0,0 +1,280 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(77);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 77:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _collapseItem = __webpack_require__(78);
+
+	var _collapseItem2 = _interopRequireDefault(_collapseItem);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_collapseItem2.default.install = function (Vue) {
+	  Vue.component(_collapseItem2.default.name, _collapseItem2.default);
+	};
+
+	exports.default = _collapseItem2.default;
+
+/***/ },
+
+/***/ 78:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(79),
+	  /* template */
+	  __webpack_require__(81),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 79:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _collapseTransition = __webpack_require__(80);
+
+	var _collapseTransition2 = _interopRequireDefault(_collapseTransition);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElCollapseItem',
+
+	  componentName: 'ElCollapseItem',
+
+	  mixins: [_emitter2.default],
+
+	  components: {
+	    CollapseTransition: _collapseTransition2.default
+	  },
+
+	  data: function data() {
+	    return {
+	      contentWrapStyle: {
+	        height: 'auto',
+	        display: 'block'
+	      },
+	      contentHeight: 0
+	    };
+	  },
+
+
+	  props: {
+	    title: String,
+	    name: {
+	      type: [String, Number],
+	      default: function _default() {
+	        return this._uid;
+	      }
+	    }
+	  },
+
+	  computed: {
+	    isActive: function isActive() {
+	      return this.$parent.activeNames.indexOf(this.name) > -1;
+	    }
+	  },
+
+	  watch: {
+	    'isActive': function isActive(value) {}
+	  },
+
+	  methods: {
+	    handleHeaderClick: function handleHeaderClick() {
+	      this.dispatch('ElCollapse', 'item-click', this);
+	    }
+	  },
+
+	  mounted: function mounted() {}
+	};
+
+/***/ },
+
+/***/ 80:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/transitions/collapse-transition");
+
+/***/ },
+
+/***/ 81:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-collapse-item",
+	    class: {
+	      'is-active': _vm.isActive
+	    }
+	  }, [_c('div', {
+	    staticClass: "el-collapse-item__header",
+	    on: {
+	      "click": _vm.handleHeaderClick
+	    }
+	  }, [_c('i', {
+	    staticClass: "el-collapse-item__header__arrow el-icon-arrow-right"
+	  }), _vm._t("title", [_vm._v(_vm._s(_vm.title))])], 2), _c('collapse-transition', [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.isActive),
+	      expression: "isActive"
+	    }],
+	    staticClass: "el-collapse-item__wrap"
+	  }, [_c('div', {
+	    staticClass: "el-collapse-item__content"
+	  }, [_vm._t("default")], 2)])])], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 232 - 0
static/element-ui/lib/collapse.js

@@ -0,0 +1,232 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(73);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 73:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _collapse = __webpack_require__(74);
+
+	var _collapse2 = _interopRequireDefault(_collapse);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_collapse2.default.install = function (Vue) {
+	  Vue.component(_collapse2.default.name, _collapse2.default);
+	};
+
+	exports.default = _collapse2.default;
+
+/***/ },
+
+/***/ 74:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(75),
+	  /* template */
+	  __webpack_require__(76),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 75:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElCollapse',
+
+	  componentName: 'ElCollapse',
+
+	  props: {
+	    accordion: Boolean,
+	    value: {
+	      type: [Array, String, Number],
+	      default: function _default() {
+	        return [];
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      activeNames: [].concat(this.value)
+	    };
+	  },
+
+
+	  watch: {
+	    value: function value(_value) {
+	      this.activeNames = [].concat(_value);
+	    }
+	  },
+
+	  methods: {
+	    setActiveNames: function setActiveNames(activeNames) {
+	      activeNames = [].concat(activeNames);
+	      var value = this.accordion ? activeNames[0] : activeNames;
+	      this.activeNames = activeNames;
+	      this.$emit('input', value);
+	      this.$emit('change', value);
+	    },
+	    handleItemClick: function handleItemClick(item) {
+	      if (this.accordion) {
+	        this.setActiveNames((this.activeNames[0] || this.activeNames[0] === 0) && this.activeNames[0] === item.name ? '' : item.name);
+	      } else {
+	        var activeNames = this.activeNames.slice(0);
+	        var index = activeNames.indexOf(item.name);
+
+	        if (index > -1) {
+	          activeNames.splice(index, 1);
+	        } else {
+	          activeNames.push(item.name);
+	        }
+	        this.setActiveNames(activeNames);
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    this.$on('item-click', this.handleItemClick);
+	  }
+	};
+
+/***/ },
+
+/***/ 76:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-collapse"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 1509 - 0
static/element-ui/lib/color-picker.js

@@ -0,0 +1,1509 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(82);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 10:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+
+/***/ 13:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 60:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+
+/***/ 82:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(83);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 83:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(84),
+	  /* template */
+	  __webpack_require__(99),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 84:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _color = __webpack_require__(85);
+
+	var _color2 = _interopRequireDefault(_color);
+
+	var _pickerDropdown = __webpack_require__(86);
+
+	var _pickerDropdown2 = _interopRequireDefault(_pickerDropdown);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElColorPicker',
+
+	  props: {
+	    value: {
+	      type: String
+	    },
+	    showAlpha: {
+	      type: Boolean
+	    },
+	    colorFormat: {
+	      type: String
+	    }
+	  },
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  computed: {
+	    displayedColor: function displayedColor() {
+	      if (!this.value && !this.showPanelColor) {
+	        return 'transparent';
+	      } else {
+	        var _color$toRgb = this.color.toRgb(),
+	            r = _color$toRgb.r,
+	            g = _color$toRgb.g,
+	            b = _color$toRgb.b;
+
+	        return this.showAlpha ? 'rgba(' + r + ', ' + g + ', ' + b + ', ' + this.color.get('alpha') / 100 + ')' : 'rgb(' + r + ', ' + g + ', ' + b + ')';
+	      }
+	    }
+	  },
+
+	  watch: {
+	    value: function value(val) {
+	      if (val && val !== this.color.value) {
+	        this.color.fromString(val);
+	      }
+	    },
+
+	    color: {
+	      deep: true,
+	      handler: function handler() {
+	        this.showPanelColor = true;
+	      }
+	    }
+	  },
+
+	  methods: {
+	    confirmValue: function confirmValue(value) {
+	      this.$emit('input', this.color.value);
+	      this.$emit('change', this.color.value);
+	      this.showPicker = false;
+	    },
+	    clearValue: function clearValue() {
+	      this.$emit('input', null);
+	      this.$emit('change', null);
+	      this.showPanelColor = false;
+	      this.showPicker = false;
+	      this.resetColor();
+	    },
+	    hide: function hide() {
+	      this.showPicker = false;
+	      this.resetColor();
+	    },
+	    resetColor: function resetColor() {
+	      var _this = this;
+
+	      this.$nextTick(function (_) {
+	        if (_this.value) {
+	          _this.color.fromString(_this.value);
+	        } else {
+	          _this.showPanelColor = false;
+	        }
+	      });
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var value = this.value;
+	    if (value) {
+	      this.color.fromString(value);
+	    }
+	    this.popperElm = this.$refs.dropdown.$el;
+	  },
+	  data: function data() {
+	    var color = new _color2.default({
+	      enableAlpha: this.showAlpha,
+	      format: this.colorFormat
+	    });
+	    return {
+	      color: color,
+	      showPicker: false,
+	      showPanelColor: false
+	    };
+	  },
+
+
+	  components: {
+	    PickerDropdown: _pickerDropdown2.default
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 85:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+	var hsv2hsl = function hsv2hsl(hue, sat, val) {
+	  return [hue, sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0, hue / 2];
+	};
+
+	// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
+	// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
+	var isOnePointZero = function isOnePointZero(n) {
+	  return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;
+	};
+
+	var isPercentage = function isPercentage(n) {
+	  return typeof n === 'string' && n.indexOf('%') !== -1;
+	};
+
+	// Take input from [0, n] and return it as [0, 1]
+	var bound01 = function bound01(value, max) {
+	  if (isOnePointZero(value)) value = '100%';
+
+	  var processPercent = isPercentage(value);
+	  value = Math.min(max, Math.max(0, parseFloat(value)));
+
+	  // Automatically convert percentage into number
+	  if (processPercent) {
+	    value = parseInt(value * max, 10) / 100;
+	  }
+
+	  // Handle floating point rounding errors
+	  if (Math.abs(value - max) < 0.000001) {
+	    return 1;
+	  }
+
+	  // Convert into [0, 1] range if it isn't already
+	  return value % max / parseFloat(max);
+	};
+
+	var INT_HEX_MAP = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' };
+
+	var toHex = function toHex(_ref) {
+	  var r = _ref.r,
+	      g = _ref.g,
+	      b = _ref.b;
+
+	  var hexOne = function hexOne(value) {
+	    value = Math.min(Math.round(value), 255);
+	    var high = Math.floor(value / 16);
+	    var low = value % 16;
+	    return '' + (INT_HEX_MAP[high] || high) + (INT_HEX_MAP[low] || low);
+	  };
+
+	  if (isNaN(r) || isNaN(g) || isNaN(b)) return '';
+
+	  return '#' + hexOne(r) + hexOne(g) + hexOne(b);
+	};
+
+	var HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 };
+
+	var parseHexChannel = function parseHexChannel(hex) {
+	  if (hex.length === 2) {
+	    return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]);
+	  }
+
+	  return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1];
+	};
+
+	var hsl2hsv = function hsl2hsv(hue, sat, light) {
+	  sat = sat / 100;
+	  light = light / 100;
+	  var smin = sat;
+	  var lmin = Math.max(light, 0.01);
+	  var sv = void 0;
+	  var v = void 0;
+
+	  light *= 2;
+	  sat *= light <= 1 ? light : 2 - light;
+	  smin *= lmin <= 1 ? lmin : 2 - lmin;
+	  v = (light + sat) / 2;
+	  sv = light === 0 ? 2 * smin / (lmin + smin) : 2 * sat / (light + sat);
+
+	  return {
+	    h: hue,
+	    s: sv * 100,
+	    v: v * 100
+	  };
+	};
+
+	// `rgbToHsv`
+	// Converts an RGB color value to HSV
+	// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
+	// *Returns:* { h, s, v } in [0,1]
+	var rgb2hsv = function rgb2hsv(r, g, b) {
+	  r = bound01(r, 255);
+	  g = bound01(g, 255);
+	  b = bound01(b, 255);
+
+	  var max = Math.max(r, g, b);
+	  var min = Math.min(r, g, b);
+	  var h = void 0,
+	      s = void 0;
+	  var v = max;
+
+	  var d = max - min;
+	  s = max === 0 ? 0 : d / max;
+
+	  if (max === min) {
+	    h = 0; // achromatic
+	  } else {
+	    switch (max) {
+	      case r:
+	        h = (g - b) / d + (g < b ? 6 : 0);
+	        break;
+	      case g:
+	        h = (b - r) / d + 2;
+	        break;
+	      case b:
+	        h = (r - g) / d + 4;
+	        break;
+	    }
+	    h /= 6;
+	  }
+
+	  return { h: Math.round(h * 360), s: Math.round(s * 100), v: Math.round(v * 100) };
+	};
+
+	// `hsvToRgb`
+	// Converts an HSV color value to RGB.
+	// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
+	// *Returns:* { r, g, b } in the set [0, 255]
+	var hsv2rgb = function hsv2rgb(h, s, v) {
+	  h = bound01(h, 360) * 6;
+	  s = bound01(s, 100);
+	  v = bound01(v, 100);
+
+	  var i = Math.floor(h);
+	  var f = h - i;
+	  var p = v * (1 - s);
+	  var q = v * (1 - f * s);
+	  var t = v * (1 - (1 - f) * s);
+	  var mod = i % 6;
+	  var r = [v, q, p, p, t, v][mod];
+	  var g = [t, v, v, q, p, p][mod];
+	  var b = [p, p, t, v, v, q][mod];
+
+	  return {
+	    r: Math.round(r * 255),
+	    g: Math.round(g * 255),
+	    b: Math.round(b * 255)
+	  };
+	};
+
+	var Color = function () {
+	  function Color(options) {
+	    _classCallCheck(this, Color);
+
+	    this._hue = 0;
+	    this._saturation = 100;
+	    this._value = 100;
+	    this._alpha = 100;
+
+	    this.enableAlpha = false;
+	    this.format = 'hex';
+	    this.value = '';
+
+	    options = options || {};
+
+	    for (var option in options) {
+	      if (options.hasOwnProperty(option)) {
+	        this[option] = options[option];
+	      }
+	    }
+
+	    this.doOnChange();
+	  }
+
+	  Color.prototype.set = function set(prop, value) {
+	    if (arguments.length === 1 && (typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) === 'object') {
+	      for (var p in prop) {
+	        if (prop.hasOwnProperty(p)) {
+	          this.set(p, prop[p]);
+	        }
+	      }
+
+	      return;
+	    }
+
+	    this['_' + prop] = value;
+	    this.doOnChange();
+	  };
+
+	  Color.prototype.get = function get(prop) {
+	    return this['_' + prop];
+	  };
+
+	  Color.prototype.toRgb = function toRgb() {
+	    return hsv2rgb(this._hue, this._saturation, this._value);
+	  };
+
+	  Color.prototype.fromString = function fromString(value) {
+	    var _this = this;
+
+	    if (!value) {
+	      this._hue = 0;
+	      this._saturation = 100;
+	      this._value = 100;
+
+	      this.doOnChange();
+	      return;
+	    }
+
+	    var fromHSV = function fromHSV(h, s, v) {
+	      _this._hue = h;
+	      _this._saturation = s;
+	      _this._value = v;
+
+	      _this.doOnChange();
+	    };
+
+	    if (value.indexOf('hsl') !== -1) {
+	      var parts = value.replace(/hsla|hsl|\(|\)/gm, '').split(/\s|,/g).filter(function (val) {
+	        return val !== '';
+	      }).map(function (val, index) {
+	        return index > 2 ? parseFloat(val) : parseInt(val, 10);
+	      });
+
+	      if (parts.length === 4) {
+	        this._alpha = Math.floor(parseFloat(parts[3]) * 100);
+	      }
+	      if (parts.length >= 3) {
+	        var _hsl2hsv = hsl2hsv(parts[0], parts[1], parts[2]),
+	            h = _hsl2hsv.h,
+	            s = _hsl2hsv.s,
+	            v = _hsl2hsv.v;
+
+	        fromHSV(h, s, v);
+	      }
+	    } else if (value.indexOf('hsv') !== -1) {
+	      var _parts = value.replace(/hsva|hsv|\(|\)/gm, '').split(/\s|,/g).filter(function (val) {
+	        return val !== '';
+	      }).map(function (val, index) {
+	        return index > 2 ? parseFloat(val) : parseInt(val, 10);
+	      });
+
+	      if (_parts.length === 4) {
+	        this._alpha = Math.floor(parseFloat(_parts[3]) * 100);
+	      }
+	      if (_parts.length >= 3) {
+	        fromHSV(_parts[0], _parts[1], _parts[2]);
+	      }
+	    } else if (value.indexOf('rgb') !== -1) {
+	      var _parts2 = value.replace(/rgba|rgb|\(|\)/gm, '').split(/\s|,/g).filter(function (val) {
+	        return val !== '';
+	      }).map(function (val, index) {
+	        return index > 2 ? parseFloat(val) : parseInt(val, 10);
+	      });
+
+	      if (_parts2.length === 4) {
+	        this._alpha = Math.floor(parseFloat(_parts2[3]) * 100);
+	      }
+	      if (_parts2.length >= 3) {
+	        var _rgb2hsv = rgb2hsv(_parts2[0], _parts2[1], _parts2[2]),
+	            _h = _rgb2hsv.h,
+	            _s = _rgb2hsv.s,
+	            _v = _rgb2hsv.v;
+
+	        fromHSV(_h, _s, _v);
+	      }
+	    } else if (value.indexOf('#') !== -1) {
+	      var hex = value.replace('#', '').trim();
+	      var r = void 0,
+	          g = void 0,
+	          b = void 0;
+
+	      if (hex.length === 3) {
+	        r = parseHexChannel(hex[0] + hex[0]);
+	        g = parseHexChannel(hex[1] + hex[1]);
+	        b = parseHexChannel(hex[2] + hex[2]);
+	      } else if (hex.length === 6) {
+	        r = parseHexChannel(hex.substring(0, 2));
+	        g = parseHexChannel(hex.substring(2, 4));
+	        b = parseHexChannel(hex.substring(4));
+	      }
+
+	      var _rgb2hsv2 = rgb2hsv(r, g, b),
+	          _h2 = _rgb2hsv2.h,
+	          _s2 = _rgb2hsv2.s,
+	          _v2 = _rgb2hsv2.v;
+
+	      fromHSV(_h2, _s2, _v2);
+	    }
+	  };
+
+	  Color.prototype.doOnChange = function doOnChange() {
+	    var _hue = this._hue,
+	        _saturation = this._saturation,
+	        _value = this._value,
+	        _alpha = this._alpha,
+	        format = this.format;
+
+
+	    if (this.enableAlpha) {
+	      switch (format) {
+	        case 'hsl':
+	          var hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);
+	          this.value = 'hsla(' + _hue + ', ' + Math.round(hsl[1] * 100) + '%, ' + Math.round(hsl[2] * 100) + '%, ' + _alpha / 100 + ')';
+	          break;
+	        case 'hsv':
+	          this.value = 'hsva(' + _hue + ', ' + Math.round(_saturation) + '%, ' + Math.round(_value) + '%, ' + _alpha / 100 + ')';
+	          break;
+	        default:
+	          var _hsv2rgb = hsv2rgb(_hue, _saturation, _value),
+	              r = _hsv2rgb.r,
+	              g = _hsv2rgb.g,
+	              b = _hsv2rgb.b;
+
+	          this.value = 'rgba(' + r + ', ' + g + ', ' + b + ', ' + _alpha / 100 + ')';
+	      }
+	    } else {
+	      switch (format) {
+	        case 'hsl':
+	          var _hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);
+	          this.value = 'hsl(' + _hue + ', ' + Math.round(_hsl[1] * 100) + '%, ' + Math.round(_hsl[2] * 100) + '%)';
+	          break;
+	        case 'hsv':
+	          this.value = 'hsv(' + _hue + ', ' + Math.round(_saturation) + '%, ' + Math.round(_value) + '%)';
+	          break;
+	        case 'rgb':
+	          var _hsv2rgb2 = hsv2rgb(_hue, _saturation, _value),
+	              _r = _hsv2rgb2.r,
+	              _g = _hsv2rgb2.g,
+	              _b = _hsv2rgb2.b;
+
+	          this.value = 'rgb(' + _r + ', ' + _g + ', ' + _b + ')';
+	          break;
+	        default:
+	          this.value = toHex(hsv2rgb(_hue, _saturation, _value));
+	      }
+	    }
+	  };
+
+	  return Color;
+	}();
+
+	exports.default = Color;
+	;
+
+/***/ },
+
+/***/ 86:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(87),
+	  /* template */
+	  __webpack_require__(98),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 87:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _svPanel = __webpack_require__(88);
+
+	var _svPanel2 = _interopRequireDefault(_svPanel);
+
+	var _hueSlider = __webpack_require__(92);
+
+	var _hueSlider2 = _interopRequireDefault(_hueSlider);
+
+	var _alphaSlider = __webpack_require__(95);
+
+	var _alphaSlider2 = _interopRequireDefault(_alphaSlider);
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'el-color-picker-dropdown',
+
+	  mixins: [_vuePopper2.default, _locale2.default],
+
+	  components: {
+	    SvPanel: _svPanel2.default,
+	    HueSlider: _hueSlider2.default,
+	    AlphaSlider: _alphaSlider2.default
+	  },
+
+	  props: {
+	    color: {
+	      required: true
+	    },
+	    showAlpha: Boolean
+	  },
+
+	  computed: {
+	    currentColor: function currentColor() {
+	      var parent = this.$parent;
+	      return !parent.value && !parent.showPanelColor ? '' : parent.color.value;
+	    }
+	  },
+
+	  methods: {
+	    confirmValue: function confirmValue() {
+	      this.$emit('pick');
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    this.$parent.popperElm = this.popperElm = this.$el;
+	    this.referenceElm = this.$parent.$el;
+	  },
+
+
+	  watch: {
+	    showPopper: function showPopper(val) {
+	      var _this = this;
+
+	      if (val === true) {
+	        this.$nextTick(function () {
+	          var _$refs = _this.$refs,
+	              sl = _$refs.sl,
+	              hue = _$refs.hue,
+	              alpha = _$refs.alpha;
+
+	          sl && sl.update();
+	          hue && hue.update();
+	          alpha && alpha.update();
+	        });
+	      }
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 88:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(89),
+	  /* template */
+	  __webpack_require__(91),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 89:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _draggable = __webpack_require__(90);
+
+	var _draggable2 = _interopRequireDefault(_draggable);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'el-sl-panel',
+
+	  props: {
+	    color: {
+	      required: true
+	    }
+	  },
+
+	  watch: {
+	    'color.value': function colorValue() {
+	      this.update();
+	    }
+	  },
+
+	  methods: {
+	    update: function update() {
+	      var saturation = this.color.get('saturation');
+	      var value = this.color.get('value');
+
+	      var el = this.$el;
+
+	      var _el$getBoundingClient = el.getBoundingClientRect(),
+	          width = _el$getBoundingClient.width,
+	          height = _el$getBoundingClient.height;
+
+	      if (!height) height = width * 3 / 4;
+
+	      this.cursorLeft = saturation * width / 100;
+	      this.cursorTop = (100 - value) * height / 100;
+
+	      this.background = 'hsl(' + this.color.get('hue') + ', 100%, 50%)';
+	    },
+	    handleDrag: function handleDrag(event) {
+	      var el = this.$el;
+	      var rect = el.getBoundingClientRect();
+
+	      var left = event.clientX - rect.left;
+	      var top = event.clientY - rect.top;
+	      left = Math.max(0, left);
+	      left = Math.min(left, rect.width);
+
+	      top = Math.max(0, top);
+	      top = Math.min(top, rect.height);
+
+	      this.cursorLeft = left;
+	      this.cursorTop = top;
+	      this.color.set({
+	        saturation: left / rect.width * 100,
+	        value: 100 - top / rect.height * 100
+	      });
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    (0, _draggable2.default)(this.$el, {
+	      drag: function drag(event) {
+	        _this.handleDrag(event);
+	      },
+	      end: function end(event) {
+	        _this.handleDrag(event);
+	      }
+	    });
+
+	    this.update();
+	  },
+	  data: function data() {
+	    return {
+	      cursorTop: 0,
+	      cursorLeft: 0,
+	      background: 'hsl(0, 100%, 50%)'
+	    };
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 90:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	exports.default = function (element, options) {
+	  if (_vue2.default.prototype.$isServer) return;
+	  var moveFn = function moveFn(event) {
+	    if (options.drag) {
+	      options.drag(event);
+	    }
+	  };
+	  var upFn = function upFn(event) {
+	    document.removeEventListener('mousemove', moveFn);
+	    document.removeEventListener('mouseup', upFn);
+	    document.onselectstart = null;
+	    document.ondragstart = null;
+
+	    isDragging = false;
+
+	    if (options.end) {
+	      options.end(event);
+	    }
+	  };
+	  element.addEventListener('mousedown', function (event) {
+	    if (isDragging) return;
+	    document.onselectstart = function () {
+	      return false;
+	    };
+	    document.ondragstart = function () {
+	      return false;
+	    };
+
+	    document.addEventListener('mousemove', moveFn);
+	    document.addEventListener('mouseup', upFn);
+	    isDragging = true;
+
+	    if (options.start) {
+	      options.start(event);
+	    }
+	  });
+	};
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var isDragging = false;
+
+/***/ },
+
+/***/ 91:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-color-svpanel",
+	    style: ({
+	      backgroundColor: _vm.background
+	    })
+	  }, [_c('div', {
+	    staticClass: "el-color-svpanel__white"
+	  }), _c('div', {
+	    staticClass: "el-color-svpanel__black"
+	  }), _c('div', {
+	    staticClass: "el-color-svpanel__cursor",
+	    style: ({
+	      top: _vm.cursorTop + 'px',
+	      left: _vm.cursorLeft + 'px'
+	    })
+	  }, [_c('div')])])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 92:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(93),
+	  /* template */
+	  __webpack_require__(94),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 93:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _draggable = __webpack_require__(90);
+
+	var _draggable2 = _interopRequireDefault(_draggable);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'el-color-hue-slider',
+
+	  props: {
+	    color: {
+	      required: true
+	    },
+
+	    vertical: Boolean
+	  },
+
+	  data: function data() {
+	    return {
+	      thumbLeft: 0,
+	      thumbTop: 0
+	    };
+	  },
+
+
+	  watch: {
+	    'color.value': function colorValue() {
+	      this.update();
+	    }
+	  },
+
+	  methods: {
+	    handleClick: function handleClick(event) {
+	      var thumb = this.$refs.thumb;
+	      var target = event.target;
+
+	      if (target !== thumb) {
+	        this.handleDrag(event);
+	      }
+	    },
+	    handleDrag: function handleDrag(event) {
+	      var rect = this.$el.getBoundingClientRect();
+	      var thumb = this.$refs.thumb;
+
+	      var hue = void 0;
+
+	      if (!this.vertical) {
+	        var left = event.clientX - rect.left;
+	        left = Math.min(left, rect.width - thumb.offsetWidth / 2);
+	        left = Math.max(thumb.offsetWidth / 2, left);
+
+	        hue = Math.round((left - thumb.offsetWidth / 2) / (rect.width - thumb.offsetWidth) * 360);
+	      } else {
+	        var top = event.clientY - rect.top;
+	        top = Math.min(top, rect.height - thumb.offsetHeight / 2);
+	        top = Math.max(thumb.offsetHeight / 2, top);
+
+	        hue = Math.round((top - thumb.offsetHeight / 2) / (rect.height - thumb.offsetHeight) * 360);
+	      }
+
+	      this.color.set('hue', hue);
+	    },
+	    getThumbLeft: function getThumbLeft() {
+	      if (this.vertical) return 0;
+	      var el = this.$el;
+	      var hue = this.color.get('hue');
+
+	      if (!el) return 0;
+	      var thumb = this.$refs.thumb;
+	      return Math.round(hue * (el.offsetWidth - thumb.offsetWidth / 2) / 360);
+	    },
+	    getThumbTop: function getThumbTop() {
+	      if (!this.vertical) return 0;
+	      var el = this.$el;
+	      var hue = this.color.get('hue');
+
+	      if (!el) return 0;
+	      var thumb = this.$refs.thumb;
+	      return Math.round(hue * (el.offsetHeight - thumb.offsetHeight / 2) / 360);
+	    },
+	    update: function update() {
+	      this.thumbLeft = this.getThumbLeft();
+	      this.thumbTop = this.getThumbTop();
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    var _$refs = this.$refs,
+	        bar = _$refs.bar,
+	        thumb = _$refs.thumb;
+
+
+	    var dragConfig = {
+	      drag: function drag(event) {
+	        _this.handleDrag(event);
+	      },
+	      end: function end(event) {
+	        _this.handleDrag(event);
+	      }
+	    };
+
+	    (0, _draggable2.default)(bar, dragConfig);
+	    (0, _draggable2.default)(thumb, dragConfig);
+	    this.update();
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 94:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-color-hue-slider",
+	    class: {
+	      'is-vertical': _vm.vertical
+	    }
+	  }, [_c('div', {
+	    ref: "bar",
+	    staticClass: "el-color-hue-slider__bar",
+	    on: {
+	      "click": _vm.handleClick
+	    }
+	  }), _c('div', {
+	    ref: "thumb",
+	    staticClass: "el-color-hue-slider__thumb",
+	    style: ({
+	      left: _vm.thumbLeft + 'px',
+	      top: _vm.thumbTop + 'px'
+	    })
+	  })])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 95:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(96),
+	  /* template */
+	  __webpack_require__(97),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 96:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _draggable = __webpack_require__(90);
+
+	var _draggable2 = _interopRequireDefault(_draggable);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'el-color-alpha-slider',
+
+	  props: {
+	    color: {
+	      required: true
+	    },
+	    vertical: Boolean
+	  },
+
+	  watch: {
+	    'color._alpha': function color_alpha() {
+	      this.update();
+	    },
+	    'color.value': function colorValue() {
+	      this.update();
+	    }
+	  },
+
+	  methods: {
+	    handleClick: function handleClick(event) {
+	      var thumb = this.$refs.thumb;
+	      var target = event.target;
+
+	      if (target !== thumb) {
+	        this.handleDrag(event);
+	      }
+	    },
+	    handleDrag: function handleDrag(event) {
+	      var rect = this.$el.getBoundingClientRect();
+	      var thumb = this.$refs.thumb;
+
+
+	      if (!this.vertical) {
+	        var left = event.clientX - rect.left;
+	        left = Math.max(thumb.offsetWidth / 2, left);
+	        left = Math.min(left, rect.width - thumb.offsetWidth / 2);
+
+	        this.color.set('alpha', Math.round((left - thumb.offsetWidth / 2) / (rect.width - thumb.offsetWidth) * 100));
+	      } else {
+	        var top = event.clientY - rect.top;
+	        top = Math.max(thumb.offsetHeight / 2, top);
+	        top = Math.min(top, rect.height - thumb.offsetHeight / 2);
+
+	        this.color.set('alpha', Math.round((top - thumb.offsetHeight / 2) / (rect.height - thumb.offsetHeight) * 100));
+	      }
+	    },
+	    getThumbLeft: function getThumbLeft() {
+	      if (this.vertical) return 0;
+	      var el = this.$el;
+	      var alpha = this.color._alpha;
+
+	      if (!el) return 0;
+	      var thumb = this.$refs.thumb;
+	      return Math.round(alpha * (el.offsetWidth - thumb.offsetWidth / 2) / 100);
+	    },
+	    getThumbTop: function getThumbTop() {
+	      if (!this.vertical) return 0;
+	      var el = this.$el;
+	      var alpha = this.color._alpha;
+
+	      if (!el) return 0;
+	      var thumb = this.$refs.thumb;
+	      return Math.round(alpha * (el.offsetHeight - thumb.offsetHeight / 2) / 100);
+	    },
+	    getBackground: function getBackground() {
+	      if (this.color && this.color.value) {
+	        var _color$toRgb = this.color.toRgb(),
+	            r = _color$toRgb.r,
+	            g = _color$toRgb.g,
+	            b = _color$toRgb.b;
+
+	        return 'linear-gradient(to right, rgba(' + r + ', ' + g + ', ' + b + ', 0) 0%, rgba(' + r + ', ' + g + ', ' + b + ', 1) 100%)';
+	      }
+	      return null;
+	    },
+	    update: function update() {
+	      this.thumbLeft = this.getThumbLeft();
+	      this.thumbTop = this.getThumbTop();
+	      this.background = this.getBackground();
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      thumbLeft: 0,
+	      thumbTop: 0,
+	      background: null
+	    };
+	  },
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    var _$refs = this.$refs,
+	        bar = _$refs.bar,
+	        thumb = _$refs.thumb;
+
+
+	    var dragConfig = {
+	      drag: function drag(event) {
+	        _this.handleDrag(event);
+	      },
+	      end: function end(event) {
+	        _this.handleDrag(event);
+	      }
+	    };
+
+	    (0, _draggable2.default)(bar, dragConfig);
+	    (0, _draggable2.default)(thumb, dragConfig);
+	    this.update();
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 97:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-color-alpha-slider",
+	    class: {
+	      'is-vertical': _vm.vertical
+	    }
+	  }, [_c('div', {
+	    ref: "bar",
+	    staticClass: "el-color-alpha-slider__bar",
+	    style: ({
+	      background: _vm.background
+	    }),
+	    on: {
+	      "click": _vm.handleClick
+	    }
+	  }), _c('div', {
+	    ref: "thumb",
+	    staticClass: "el-color-alpha-slider__thumb",
+	    style: ({
+	      left: _vm.thumbLeft + 'px',
+	      top: _vm.thumbTop + 'px'
+	    })
+	  })])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 98:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": _vm.doDestroy
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showPopper),
+	      expression: "showPopper"
+	    }],
+	    staticClass: "el-color-dropdown"
+	  }, [_c('div', {
+	    staticClass: "el-color-dropdown__main-wrapper"
+	  }, [_c('hue-slider', {
+	    ref: "hue",
+	    staticStyle: {
+	      "float": "right"
+	    },
+	    attrs: {
+	      "color": _vm.color,
+	      "vertical": ""
+	    }
+	  }), _c('sv-panel', {
+	    ref: "sl",
+	    attrs: {
+	      "color": _vm.color
+	    }
+	  })], 1), (_vm.showAlpha) ? _c('alpha-slider', {
+	    ref: "alpha",
+	    attrs: {
+	      "color": _vm.color
+	    }
+	  }) : _vm._e(), _c('div', {
+	    staticClass: "el-color-dropdown__btns"
+	  }, [_c('span', {
+	    staticClass: "el-color-dropdown__value"
+	  }, [_vm._v(_vm._s(_vm.currentColor))]), _c('a', {
+	    staticClass: "el-color-dropdown__link-btn",
+	    attrs: {
+	      "href": "JavaScript:"
+	    },
+	    on: {
+	      "click": function($event) {
+	        _vm.$emit('clear')
+	      }
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.colorpicker.clear')))]), _c('button', {
+	    staticClass: "el-color-dropdown__btn",
+	    on: {
+	      "click": _vm.confirmValue
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.colorpicker.confirm')))])])], 1)])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 99:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    directives: [{
+	      name: "clickoutside",
+	      rawName: "v-clickoutside",
+	      value: (_vm.hide),
+	      expression: "hide"
+	    }],
+	    staticClass: "el-color-picker"
+	  }, [_c('div', {
+	    staticClass: "el-color-picker__trigger",
+	    on: {
+	      "click": function($event) {
+	        _vm.showPicker = !_vm.showPicker
+	      }
+	    }
+	  }, [_c('span', {
+	    staticClass: "el-color-picker__color",
+	    class: {
+	      'is-alpha': _vm.showAlpha
+	    }
+	  }, [_c('span', {
+	    staticClass: "el-color-picker__color-inner",
+	    style: ({
+	      backgroundColor: _vm.displayedColor
+	    })
+	  }), (!_vm.value && !_vm.showPanelColor) ? _c('span', {
+	    staticClass: "el-color-picker__empty el-icon-close"
+	  }) : _vm._e()]), _c('span', {
+	    staticClass: "el-color-picker__icon el-icon-caret-bottom"
+	  })]), _c('picker-dropdown', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.showPicker),
+	      expression: "showPicker"
+	    }],
+	    ref: "dropdown",
+	    staticClass: "el-color-picker__panel",
+	    attrs: {
+	      "color": _vm.color,
+	      "show-alpha": _vm.showAlpha
+	    },
+	    domProps: {
+	      "value": (_vm.showPicker)
+	    },
+	    on: {
+	      "pick": _vm.confirmValue,
+	      "clear": _vm.clearValue,
+	      "input": function($event) {
+	        _vm.showPicker = $event
+	      }
+	    }
+	  })], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 3941 - 0
static/element-ui/lib/date-picker.js

@@ -0,0 +1,3941 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(100);
+
+
+/***/ },
+/* 1 */,
+/* 2 */,
+/* 3 */
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+/* 4 */,
+/* 5 */,
+/* 6 */,
+/* 7 */,
+/* 8 */,
+/* 9 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+/* 11 */,
+/* 12 */,
+/* 13 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/scrollbar");
+
+/***/ },
+/* 16 */,
+/* 17 */,
+/* 18 */,
+/* 19 */,
+/* 20 */,
+/* 21 */,
+/* 22 */,
+/* 23 */,
+/* 24 */,
+/* 25 */,
+/* 26 */,
+/* 27 */,
+/* 28 */,
+/* 29 */,
+/* 30 */,
+/* 31 */,
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */,
+/* 36 */,
+/* 37 */,
+/* 38 */,
+/* 39 */,
+/* 40 */,
+/* 41 */,
+/* 42 */,
+/* 43 */,
+/* 44 */,
+/* 45 */,
+/* 46 */,
+/* 47 */,
+/* 48 */,
+/* 49 */,
+/* 50 */,
+/* 51 */,
+/* 52 */,
+/* 53 */,
+/* 54 */,
+/* 55 */,
+/* 56 */
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+/* 57 */,
+/* 58 */,
+/* 59 */,
+/* 60 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+/* 61 */,
+/* 62 */,
+/* 63 */,
+/* 64 */,
+/* 65 */,
+/* 66 */,
+/* 67 */,
+/* 68 */,
+/* 69 */,
+/* 70 */,
+/* 71 */,
+/* 72 */,
+/* 73 */,
+/* 74 */,
+/* 75 */,
+/* 76 */,
+/* 77 */,
+/* 78 */,
+/* 79 */,
+/* 80 */,
+/* 81 */,
+/* 82 */,
+/* 83 */,
+/* 84 */,
+/* 85 */,
+/* 86 */,
+/* 87 */,
+/* 88 */,
+/* 89 */,
+/* 90 */,
+/* 91 */,
+/* 92 */,
+/* 93 */,
+/* 94 */,
+/* 95 */,
+/* 96 */,
+/* 97 */,
+/* 98 */,
+/* 99 */,
+/* 100 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _datePicker = __webpack_require__(101);
+
+	var _datePicker2 = _interopRequireDefault(_datePicker);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_datePicker2.default.install = function install(Vue) {
+	  Vue.component(_datePicker2.default.name, _datePicker2.default);
+	};
+
+	exports.default = _datePicker2.default;
+
+/***/ },
+/* 101 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _picker = __webpack_require__(102);
+
+	var _picker2 = _interopRequireDefault(_picker);
+
+	var _date = __webpack_require__(107);
+
+	var _date2 = _interopRequireDefault(_date);
+
+	var _dateRange = __webpack_require__(126);
+
+	var _dateRange2 = _interopRequireDefault(_dateRange);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var getPanel = function getPanel(type) {
+	  if (type === 'daterange' || type === 'datetimerange') {
+	    return _dateRange2.default;
+	  }
+	  return _date2.default;
+	};
+
+	exports.default = {
+	  mixins: [_picker2.default],
+
+	  name: 'ElDatePicker',
+
+	  props: {
+	    type: {
+	      type: String,
+	      default: 'date'
+	    }
+	  },
+
+	  created: function created() {
+	    this.panel = getPanel(this.type);
+	  }
+	};
+
+/***/ },
+/* 102 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(103),
+	  /* template */
+	  __webpack_require__(106),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 103 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _util = __webpack_require__(104);
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var NewPopper = {
+	  props: {
+	    appendToBody: _vuePopper2.default.props.appendToBody,
+	    offset: _vuePopper2.default.props.offset,
+	    boundariesPadding: _vuePopper2.default.props.boundariesPadding
+	  },
+	  methods: _vuePopper2.default.methods,
+	  data: _vuePopper2.default.data,
+	  beforeDestroy: _vuePopper2.default.beforeDestroy
+	};
+
+	var DEFAULT_FORMATS = {
+	  date: 'yyyy-MM-dd',
+	  month: 'yyyy-MM',
+	  datetime: 'yyyy-MM-dd HH:mm:ss',
+	  time: 'HH:mm:ss',
+	  week: 'yyyywWW',
+	  timerange: 'HH:mm:ss',
+	  daterange: 'yyyy-MM-dd',
+	  datetimerange: 'yyyy-MM-dd HH:mm:ss',
+	  year: 'yyyy'
+	};
+	var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'timerange', 'datetimerange'];
+	var DATE_FORMATTER = function DATE_FORMATTER(value, format) {
+	  return (0, _util.formatDate)(value, format);
+	};
+	var DATE_PARSER = function DATE_PARSER(text, format) {
+	  return (0, _util.parseDate)(text, format);
+	};
+	var RANGE_FORMATTER = function RANGE_FORMATTER(value, format, separator) {
+	  if (Array.isArray(value) && value.length === 2) {
+	    var start = value[0];
+	    var end = value[1];
+
+	    if (start && end) {
+	      return (0, _util.formatDate)(start, format) + separator + (0, _util.formatDate)(end, format);
+	    }
+	  }
+	  return '';
+	};
+	var RANGE_PARSER = function RANGE_PARSER(text, format, separator) {
+	  var array = text.split(separator);
+	  if (array.length === 2) {
+	    var range1 = array[0];
+	    var range2 = array[1];
+
+	    return [(0, _util.parseDate)(range1, format), (0, _util.parseDate)(range2, format)];
+	  }
+	  return [];
+	};
+	var TYPE_VALUE_RESOLVER_MAP = {
+	  default: {
+	    formatter: function formatter(value) {
+	      if (!value) return '';
+	      return '' + value;
+	    },
+	    parser: function parser(text) {
+	      if (text === undefined || text === '') return null;
+	      return text;
+	    }
+	  },
+	  week: {
+	    formatter: function formatter(value, format) {
+	      var date = (0, _util.formatDate)(value, format);
+	      var week = (0, _util.getWeekNumber)(value);
+
+	      date = /WW/.test(date) ? date.replace(/WW/, week < 10 ? '0' + week : week) : date.replace(/W/, week);
+	      return date;
+	    },
+	    parser: function parser(text) {
+	      var array = (text || '').split('w');
+	      if (array.length === 2) {
+	        var year = Number(array[0]);
+	        var month = Number(array[1]);
+
+	        if (!isNaN(year) && !isNaN(month) && month < 54) {
+	          return text;
+	        }
+	      }
+	      return null;
+	    }
+	  },
+	  date: {
+	    formatter: DATE_FORMATTER,
+	    parser: DATE_PARSER
+	  },
+	  datetime: {
+	    formatter: DATE_FORMATTER,
+	    parser: DATE_PARSER
+	  },
+	  daterange: {
+	    formatter: RANGE_FORMATTER,
+	    parser: RANGE_PARSER
+	  },
+	  datetimerange: {
+	    formatter: RANGE_FORMATTER,
+	    parser: RANGE_PARSER
+	  },
+	  timerange: {
+	    formatter: RANGE_FORMATTER,
+	    parser: RANGE_PARSER
+	  },
+	  time: {
+	    formatter: DATE_FORMATTER,
+	    parser: DATE_PARSER
+	  },
+	  month: {
+	    formatter: DATE_FORMATTER,
+	    parser: DATE_PARSER
+	  },
+	  year: {
+	    formatter: DATE_FORMATTER,
+	    parser: DATE_PARSER
+	  },
+	  number: {
+	    formatter: function formatter(value) {
+	      if (!value) return '';
+	      return '' + value;
+	    },
+	    parser: function parser(text) {
+	      var result = Number(text);
+
+	      if (!isNaN(text)) {
+	        return result;
+	      } else {
+	        return null;
+	      }
+	    }
+	  }
+	};
+	var PLACEMENT_MAP = {
+	  left: 'bottom-start',
+	  center: 'bottom-center',
+	  right: 'bottom-end'
+	};
+
+	exports.default = {
+	  mixins: [_emitter2.default, NewPopper],
+
+	  props: {
+	    size: String,
+	    format: String,
+	    readonly: Boolean,
+	    placeholder: String,
+	    disabled: Boolean,
+	    clearable: {
+	      type: Boolean,
+	      default: true
+	    },
+	    popperClass: String,
+	    editable: {
+	      type: Boolean,
+	      default: true
+	    },
+	    align: {
+	      type: String,
+	      default: 'left'
+	    },
+	    value: {},
+	    rangeSeparator: {
+	      default: ' - '
+	    },
+	    pickerOptions: {}
+	  },
+
+	  components: { ElInput: _input2.default },
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  data: function data() {
+	    return {
+	      pickerVisible: false,
+	      showClose: false,
+	      currentValue: ''
+	    };
+	  },
+
+
+	  watch: {
+	    pickerVisible: function pickerVisible(val) {
+	      if (!val) this.dispatch('ElFormItem', 'el.form.blur');
+	      if (this.readonly || this.disabled) return;
+	      val ? this.showPicker() : this.hidePicker();
+	    },
+	    currentValue: function currentValue(val) {
+	      if (val) return;
+	      if (this.picker && typeof this.picker.handleClear === 'function') {
+	        this.picker.handleClear();
+	      } else {
+	        this.$emit('input');
+	      }
+	    },
+
+	    value: {
+	      immediate: true,
+	      handler: function handler(val) {
+	        this.currentValue = (0, _util.isDate)(val) ? new Date(val) : val;
+	      }
+	    },
+	    displayValue: function displayValue(val) {
+	      this.$emit('change', val);
+	      this.dispatch('ElFormItem', 'el.form.change');
+	    }
+	  },
+
+	  computed: {
+	    reference: function reference() {
+	      return this.$refs.reference.$el;
+	    },
+	    refInput: function refInput() {
+	      if (this.reference) return this.reference.querySelector('input');
+	      return {};
+	    },
+	    valueIsEmpty: function valueIsEmpty() {
+	      var val = this.currentValue;
+	      if (Array.isArray(val)) {
+	        for (var i = 0, len = val.length; i < len; i++) {
+	          if (val[i]) {
+	            return false;
+	          }
+	        }
+	      } else {
+	        if (val) {
+	          return false;
+	        }
+	      }
+	      return true;
+	    },
+	    triggerClass: function triggerClass() {
+	      return this.type.indexOf('time') !== -1 ? 'el-icon-time' : 'el-icon-date';
+	    },
+	    selectionMode: function selectionMode() {
+	      if (this.type === 'week') {
+	        return 'week';
+	      } else if (this.type === 'month') {
+	        return 'month';
+	      } else if (this.type === 'year') {
+	        return 'year';
+	      }
+
+	      return 'day';
+	    },
+	    haveTrigger: function haveTrigger() {
+	      if (typeof this.showTrigger !== 'undefined') {
+	        return this.showTrigger;
+	      }
+	      return HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1;
+	    },
+
+
+	    displayValue: {
+	      get: function get() {
+	        var value = this.currentValue;
+	        if (!value) return;
+	        var formatter = (TYPE_VALUE_RESOLVER_MAP[this.type] || TYPE_VALUE_RESOLVER_MAP['default']).formatter;
+	        var format = DEFAULT_FORMATS[this.type];
+
+	        return formatter(value, this.format || format, this.rangeSeparator);
+	      },
+	      set: function set(value) {
+	        if (value) {
+	          var type = this.type;
+	          var parser = (TYPE_VALUE_RESOLVER_MAP[type] || TYPE_VALUE_RESOLVER_MAP['default']).parser;
+	          var parsedValue = parser(value, this.format || DEFAULT_FORMATS[type], this.rangeSeparator);
+
+	          if (parsedValue && this.picker) {
+	            this.picker.value = parsedValue;
+	          }
+	        } else {
+	          this.picker.value = value;
+	        }
+	        this.$forceUpdate();
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    // vue-popper
+	    this.popperOptions = {
+	      boundariesPadding: 0,
+	      gpuAcceleration: false
+	    };
+	    this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;
+	  },
+
+
+	  methods: {
+	    handleMouseEnterIcon: function handleMouseEnterIcon() {
+	      if (this.readonly || this.disabled) return;
+	      if (!this.valueIsEmpty && this.clearable) {
+	        this.showClose = true;
+	      }
+	    },
+	    handleClickIcon: function handleClickIcon() {
+	      if (this.readonly || this.disabled) return;
+	      if (this.showClose) {
+	        this.currentValue = '';
+	        this.showClose = false;
+	      } else {
+	        this.pickerVisible = !this.pickerVisible;
+	      }
+	    },
+	    dateChanged: function dateChanged(dateA, dateB) {
+	      if (Array.isArray(dateA)) {
+	        var len = dateA.length;
+	        if (!dateB) return true;
+	        while (len--) {
+	          if (!(0, _util.equalDate)(dateA[len], dateB[len])) return true;
+	        }
+	      } else {
+	        if (!(0, _util.equalDate)(dateA, dateB)) return true;
+	      }
+
+	      return false;
+	    },
+	    handleClose: function handleClose() {
+	      this.pickerVisible = false;
+	    },
+	    handleFocus: function handleFocus() {
+	      var type = this.type;
+
+	      if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
+	        this.pickerVisible = true;
+	      }
+	      this.$emit('focus', this);
+	    },
+	    handleBlur: function handleBlur() {
+	      this.$emit('blur', this);
+	    },
+	    handleKeydown: function handleKeydown(event) {
+	      var keyCode = event.keyCode;
+
+	      // tab
+	      if (keyCode === 9) {
+	        this.pickerVisible = false;
+	      }
+	    },
+	    hidePicker: function hidePicker() {
+	      if (this.picker) {
+	        this.picker.resetView && this.picker.resetView();
+	        this.pickerVisible = this.picker.visible = false;
+	        this.destroyPopper();
+	      }
+	    },
+	    showPicker: function showPicker() {
+	      var _this = this;
+
+	      if (this.$isServer) return;
+	      if (!this.picker) {
+	        (function () {
+	          _this.panel.defaultValue = _this.currentValue;
+	          _this.picker = new _vue2.default(_this.panel).$mount();
+	          _this.picker.popperClass = _this.popperClass;
+	          _this.popperElm = _this.picker.$el;
+	          _this.picker.width = _this.reference.getBoundingClientRect().width;
+	          _this.picker.showTime = _this.type === 'datetime' || _this.type === 'datetimerange';
+	          _this.picker.selectionMode = _this.selectionMode;
+	          if (_this.format) {
+	            _this.picker.format = _this.format;
+	          }
+
+	          var updateOptions = function updateOptions() {
+	            var options = _this.pickerOptions;
+
+	            if (options && options.selectableRange) {
+	              (function () {
+	                var ranges = options.selectableRange;
+	                var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
+	                var format = DEFAULT_FORMATS.timerange;
+
+	                ranges = Array.isArray(ranges) ? ranges : [ranges];
+	                _this.picker.selectableRange = ranges.map(function (range) {
+	                  return parser(range, format, _this.rangeSeparator);
+	                });
+	              })();
+	            }
+
+	            for (var option in options) {
+	              if (options.hasOwnProperty(option) &&
+	              // 忽略 time-picker 的该配置项
+	              option !== 'selectableRange') {
+	                _this.picker[option] = options[option];
+	              }
+	            }
+	          };
+	          updateOptions();
+	          _this.$watch('pickerOptions', function () {
+	            return updateOptions();
+	          }, { deep: true });
+
+	          _this.$el.appendChild(_this.picker.$el);
+	          _this.pickerVisible = _this.picker.visible = true;
+	          _this.picker.resetView && _this.picker.resetView();
+
+	          _this.picker.$on('dodestroy', _this.doDestroy);
+	          _this.picker.$on('pick', function (date) {
+	            var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+	            _this.$emit('input', date);
+	            _this.pickerVisible = _this.picker.visible = visible;
+	            _this.picker.resetView && _this.picker.resetView();
+	          });
+
+	          _this.picker.$on('select-range', function (start, end) {
+	            _this.refInput.setSelectionRange(start, end);
+	            _this.refInput.focus();
+	          });
+	        })();
+	      } else {
+	        this.pickerVisible = this.picker.visible = true;
+	      }
+
+	      this.updatePopper();
+
+	      if (this.currentValue instanceof Date) {
+	        this.picker.date = new Date(this.currentValue.getTime());
+	      } else {
+	        this.picker.value = this.currentValue;
+	      }
+	      this.picker.resetView && this.picker.resetView();
+
+	      this.$nextTick(function () {
+	        _this.picker.ajustScrollTop && _this.picker.ajustScrollTop();
+	      });
+	    }
+	  }
+	};
+
+/***/ },
+/* 104 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.limitRange = exports.getRangeHours = exports.nextMonth = exports.prevMonth = exports.getWeekNumber = exports.getStartDateOfMonth = exports.DAY_DURATION = exports.getFirstDayOfMonth = exports.getDayCountOfMonth = exports.parseDate = exports.formatDate = exports.isDate = exports.toDate = exports.equalDate = undefined;
+
+	var _date = __webpack_require__(105);
+
+	var _date2 = _interopRequireDefault(_date);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var newArray = function newArray(start, end) {
+	  var result = [];
+	  for (var i = start; i <= end; i++) {
+	    result.push(i);
+	  }
+	  return result;
+	};
+
+	var equalDate = exports.equalDate = function equalDate(dateA, dateB) {
+	  return dateA === dateB || new Date(dateA).getTime() === new Date(dateB).getTime();
+	};
+
+	var toDate = exports.toDate = function toDate(date) {
+	  return isDate(date) ? new Date(date) : null;
+	};
+
+	var isDate = exports.isDate = function isDate(date) {
+	  if (date === null || date === undefined) return false;
+	  if (isNaN(new Date(date).getTime())) return false;
+	  return true;
+	};
+
+	var formatDate = exports.formatDate = function formatDate(date, format) {
+	  date = toDate(date);
+	  if (!date) return '';
+	  return _date2.default.format(date, format || 'yyyy-MM-dd');
+	};
+
+	var parseDate = exports.parseDate = function parseDate(string, format) {
+	  return _date2.default.parse(string, format || 'yyyy-MM-dd');
+	};
+
+	var getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) {
+	  if (month === 3 || month === 5 || month === 8 || month === 10) {
+	    return 30;
+	  }
+
+	  if (month === 1) {
+	    if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
+	      return 29;
+	    } else {
+	      return 28;
+	    }
+	  }
+
+	  return 31;
+	};
+
+	var getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) {
+	  var temp = new Date(date.getTime());
+	  temp.setDate(1);
+	  return temp.getDay();
+	};
+
+	var DAY_DURATION = exports.DAY_DURATION = 86400000;
+
+	var getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) {
+	  var result = new Date(year, month, 1);
+	  var day = result.getDay();
+
+	  if (day === 0) {
+	    result.setTime(result.getTime() - DAY_DURATION * 7);
+	  } else {
+	    result.setTime(result.getTime() - DAY_DURATION * day);
+	  }
+
+	  return result;
+	};
+
+	var getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) {
+	  var date = new Date(src.getTime());
+	  date.setHours(0, 0, 0, 0);
+	  // Thursday in current week decides the year.
+	  date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
+	  // January 4 is always in week 1.
+	  var week1 = new Date(date.getFullYear(), 0, 4);
+	  // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
+	  return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
+	};
+
+	var prevMonth = exports.prevMonth = function prevMonth(src) {
+	  var year = src.getFullYear();
+	  var month = src.getMonth();
+	  var date = src.getDate();
+
+	  var newYear = month === 0 ? year - 1 : year;
+	  var newMonth = month === 0 ? 11 : month - 1;
+
+	  var newMonthDayCount = getDayCountOfMonth(newYear, newMonth);
+	  if (newMonthDayCount < date) {
+	    src.setDate(newMonthDayCount);
+	  }
+
+	  src.setMonth(newMonth);
+	  src.setFullYear(newYear);
+
+	  return new Date(src.getTime());
+	};
+
+	var nextMonth = exports.nextMonth = function nextMonth(src) {
+	  var year = src.getFullYear();
+	  var month = src.getMonth();
+	  var date = src.getDate();
+
+	  var newYear = month === 11 ? year + 1 : year;
+	  var newMonth = month === 11 ? 0 : month + 1;
+
+	  var newMonthDayCount = getDayCountOfMonth(newYear, newMonth);
+	  if (newMonthDayCount < date) {
+	    src.setDate(newMonthDayCount);
+	  }
+
+	  src.setMonth(newMonth);
+	  src.setFullYear(newYear);
+
+	  return new Date(src.getTime());
+	};
+
+	var getRangeHours = exports.getRangeHours = function getRangeHours(ranges) {
+	  var hours = [];
+	  var disabledHours = [];
+
+	  (ranges || []).forEach(function (range) {
+	    var value = range.map(function (date) {
+	      return date.getHours();
+	    });
+
+	    disabledHours = disabledHours.concat(newArray(value[0], value[1]));
+	  });
+
+	  if (disabledHours.length) {
+	    for (var i = 0; i < 24; i++) {
+	      hours[i] = disabledHours.indexOf(i) === -1;
+	    }
+	  } else {
+	    for (var _i = 0; _i < 24; _i++) {
+	      hours[_i] = false;
+	    }
+	  }
+
+	  return hours;
+	};
+
+	var limitRange = exports.limitRange = function limitRange(date, ranges) {
+	  var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'yyyy-MM-dd HH:mm:ss';
+
+	  if (!ranges || !ranges.length) return date;
+
+	  var len = ranges.length;
+
+	  date = _date2.default.parse(_date2.default.format(date, format), format);
+	  for (var i = 0; i < len; i++) {
+	    var range = ranges[i];
+	    if (date >= range[0] && date <= range[1]) {
+	      return date;
+	    }
+	  }
+
+	  var maxDate = ranges[0][0];
+	  var minDate = ranges[0][0];
+
+	  ranges.forEach(function (range) {
+	    minDate = new Date(Math.min(range[0], minDate));
+	    maxDate = new Date(Math.max(range[1], maxDate));
+	  });
+
+	  return date < minDate ? minDate : maxDate;
+	};
+
+/***/ },
+/* 105 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/date");
+
+/***/ },
+/* 106 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('el-input', {
+	    directives: [{
+	      name: "clickoutside",
+	      rawName: "v-clickoutside",
+	      value: (_vm.handleClose),
+	      expression: "handleClose"
+	    }],
+	    ref: "reference",
+	    staticClass: "el-date-editor",
+	    class: 'el-date-editor--' + _vm.type,
+	    attrs: {
+	      "readonly": !_vm.editable || _vm.readonly,
+	      "disabled": _vm.disabled,
+	      "size": _vm.size,
+	      "placeholder": _vm.placeholder,
+	      "value": _vm.displayValue,
+	      "validateEvent": false
+	    },
+	    on: {
+	      "focus": _vm.handleFocus,
+	      "blur": _vm.handleBlur
+	    },
+	    nativeOn: {
+	      "keydown": function($event) {
+	        _vm.handleKeydown($event)
+	      },
+	      "change": function($event) {
+	        _vm.displayValue = $event.target.value
+	      }
+	    }
+	  }, [(_vm.haveTrigger) ? _c('i', {
+	    staticClass: "el-input__icon",
+	    class: [_vm.showClose ? 'el-icon-close' : _vm.triggerClass],
+	    on: {
+	      "click": _vm.handleClickIcon,
+	      "mouseenter": _vm.handleMouseEnterIcon,
+	      "mouseleave": function($event) {
+	        _vm.showClose = false
+	      }
+	    },
+	    slot: "icon"
+	  }) : _vm._e()])
+	},staticRenderFns: []}
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(108),
+	  /* template */
+	  __webpack_require__(125),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(104);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _time = __webpack_require__(109);
+
+	var _time2 = _interopRequireDefault(_time);
+
+	var _yearTable = __webpack_require__(115);
+
+	var _yearTable2 = _interopRequireDefault(_yearTable);
+
+	var _monthTable = __webpack_require__(119);
+
+	var _monthTable2 = _interopRequireDefault(_monthTable);
+
+	var _dateTable = __webpack_require__(122);
+
+	var _dateTable2 = _interopRequireDefault(_dateTable);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  mixins: [_locale2.default],
+
+	  watch: {
+	    showTime: function showTime(val) {
+	      var _this = this;
+
+	      /* istanbul ignore if */
+	      if (!val) return;
+	      this.$nextTick(function (_) {
+	        var inputElm = _this.$refs.input.$el;
+	        if (inputElm) {
+	          _this.pickerWidth = inputElm.getBoundingClientRect().width + 10;
+	        }
+	      });
+	    },
+	    value: function value(newVal) {
+	      if (!newVal) return;
+	      newVal = new Date(newVal);
+	      if (!isNaN(newVal)) {
+	        if (typeof this.disabledDate === 'function' && this.disabledDate(new Date(newVal))) {
+	          return;
+	        }
+	        this.date = newVal;
+	        this.year = newVal.getFullYear();
+	        this.month = newVal.getMonth();
+	        this.$emit('pick', newVal, true);
+	      }
+	    },
+	    timePickerVisible: function timePickerVisible(val) {
+	      var _this2 = this;
+
+	      if (val) this.$nextTick(function () {
+	        return _this2.$refs.timepicker.ajustScrollTop();
+	      });
+	    },
+	    selectionMode: function selectionMode(newVal) {
+	      if (newVal === 'month') {
+	        /* istanbul ignore next */
+	        if (this.currentView !== 'year' || this.currentView !== 'month') {
+	          this.currentView = 'month';
+	        }
+	      } else if (newVal === 'week') {
+	        this.week = (0, _util.getWeekNumber)(this.date);
+	      }
+	    },
+	    date: function date(newVal) {
+	      this.year = newVal.getFullYear();
+	      this.month = newVal.getMonth();
+	    }
+	  },
+
+	  methods: {
+	    handleClear: function handleClear() {
+	      this.date = new Date();
+	      this.$emit('pick');
+	    },
+	    resetDate: function resetDate() {
+	      this.date = new Date(this.date);
+	    },
+	    showMonthPicker: function showMonthPicker() {
+	      this.currentView = 'month';
+	    },
+	    showYearPicker: function showYearPicker() {
+	      this.currentView = 'year';
+	    },
+
+
+	    // XXX: 没用到
+	    // handleLabelClick() {
+	    //   if (this.currentView === 'date') {
+	    //     this.showMonthPicker();
+	    //   } else if (this.currentView === 'month') {
+	    //     this.showYearPicker();
+	    //   }
+	    // },
+
+	    prevMonth: function prevMonth() {
+	      this.month--;
+	      if (this.month < 0) {
+	        this.month = 11;
+	        this.year--;
+	      }
+	    },
+	    nextMonth: function nextMonth() {
+	      this.month++;
+	      if (this.month > 11) {
+	        this.month = 0;
+	        this.year++;
+	      }
+	    },
+	    nextYear: function nextYear() {
+	      if (this.currentView === 'year') {
+	        this.$refs.yearTable.nextTenYear();
+	      } else {
+	        this.year++;
+	        this.date.setFullYear(this.year);
+	        this.resetDate();
+	      }
+	    },
+	    prevYear: function prevYear() {
+	      if (this.currentView === 'year') {
+	        this.$refs.yearTable.prevTenYear();
+	      } else {
+	        this.year--;
+	        this.date.setFullYear(this.year);
+	        this.resetDate();
+	      }
+	    },
+	    handleShortcutClick: function handleShortcutClick(shortcut) {
+	      if (shortcut.onClick) {
+	        shortcut.onClick(this);
+	      }
+	    },
+	    handleTimePick: function handleTimePick(picker, visible, first) {
+	      if (picker) {
+	        var oldDate = new Date(this.date.getTime());
+	        var hour = picker.getHours();
+	        var minute = picker.getMinutes();
+	        var second = picker.getSeconds();
+	        oldDate.setHours(hour);
+	        oldDate.setMinutes(minute);
+	        oldDate.setSeconds(second);
+	        this.date = new Date(oldDate.getTime());
+	      }
+
+	      if (!first) {
+	        this.timePickerVisible = visible;
+	      }
+	    },
+	    handleMonthPick: function handleMonthPick(month) {
+	      this.month = month;
+	      var selectionMode = this.selectionMode;
+	      if (selectionMode !== 'month') {
+	        this.date.setMonth(month);
+	        this.currentView = 'date';
+	        this.resetDate();
+	      } else {
+	        this.date.setMonth(month);
+	        this.year && this.date.setFullYear(this.year);
+	        this.resetDate();
+	        var value = new Date(this.date.getFullYear(), month, 1);
+	        this.$emit('pick', value);
+	      }
+	    },
+	    handleDatePick: function handleDatePick(value) {
+	      if (this.selectionMode === 'day') {
+	        if (!this.showTime) {
+	          this.$emit('pick', new Date(value.getTime()));
+	        }
+	        this.date.setFullYear(value.getFullYear());
+	        this.date.setMonth(value.getMonth(), value.getDate());
+	      } else if (this.selectionMode === 'week') {
+	        this.week = value.week;
+	        this.$emit('pick', value.date);
+	      }
+
+	      this.resetDate();
+	    },
+	    handleYearPick: function handleYearPick(year) {
+	      var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+	      this.year = year;
+	      if (!close) return;
+
+	      this.date.setFullYear(year);
+	      if (this.selectionMode === 'year') {
+	        this.$emit('pick', new Date(year));
+	      } else {
+	        this.currentView = 'month';
+	      }
+
+	      this.resetDate();
+	    },
+	    changeToNow: function changeToNow() {
+	      this.date.setTime(+new Date());
+	      this.$emit('pick', new Date(this.date.getTime()));
+	      this.resetDate();
+	    },
+	    confirm: function confirm() {
+	      this.$emit('pick', this.date);
+	    },
+	    resetView: function resetView() {
+	      if (this.selectionMode === 'month') {
+	        this.currentView = 'month';
+	      } else if (this.selectionMode === 'year') {
+	        this.currentView = 'year';
+	      } else {
+	        this.currentView = 'date';
+	      }
+
+	      if (this.selectionMode !== 'week') {
+	        this.year = this.date.getFullYear();
+	        this.month = this.date.getMonth();
+	      }
+	    }
+	  },
+
+	  components: {
+	    TimePicker: _time2.default, YearTable: _yearTable2.default, MonthTable: _monthTable2.default, DateTable: _dateTable2.default, ElInput: _input2.default
+	  },
+
+	  mounted: function mounted() {
+	    if (this.date && !this.year) {
+	      this.year = this.date.getFullYear();
+	      this.month = this.date.getMonth();
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      popperClass: '',
+	      pickerWidth: 0,
+	      date: new Date(),
+	      value: '',
+	      showTime: false,
+	      selectionMode: 'day',
+	      shortcuts: '',
+	      visible: false,
+	      currentView: 'date',
+	      disabledDate: '',
+	      firstDayOfWeek: 7,
+	      year: null,
+	      month: null,
+	      week: null,
+	      showWeekNumber: false,
+	      timePickerVisible: false,
+	      width: 0
+	    };
+	  },
+
+
+	  computed: {
+	    footerVisible: function footerVisible() {
+	      return this.showTime;
+	    },
+
+
+	    visibleTime: {
+	      get: function get() {
+	        return (0, _util.formatDate)(this.date, 'HH:mm:ss');
+	      },
+	      set: function set(val) {
+	        if (val) {
+	          var date = (0, _util.parseDate)(val, 'HH:mm:ss');
+	          if (date) {
+	            date.setFullYear(this.date.getFullYear());
+	            date.setMonth(this.date.getMonth());
+	            date.setDate(this.date.getDate());
+	            this.date = date;
+	            this.$refs.timepicker.value = date;
+	            this.timePickerVisible = false;
+	          }
+	        }
+	      }
+	    },
+
+	    visibleDate: {
+	      get: function get() {
+	        return (0, _util.formatDate)(this.date);
+	      },
+	      set: function set(val) {
+	        var date = (0, _util.parseDate)(val, 'yyyy-MM-dd');
+	        if (date) {
+	          date.setHours(this.date.getHours());
+	          date.setMinutes(this.date.getMinutes());
+	          date.setSeconds(this.date.getSeconds());
+	          this.date = date;
+	          this.resetView();
+	        }
+	      }
+	    },
+
+	    yearLabel: function yearLabel() {
+	      var year = this.year;
+	      if (!year) return '';
+	      var yearTranslation = this.t('el.datepicker.year');
+	      if (this.currentView === 'year') {
+	        var startYear = Math.floor(year / 10) * 10;
+	        if (yearTranslation) {
+	          return startYear + ' ' + yearTranslation + ' - ' + (startYear + 9) + ' ' + yearTranslation;
+	        }
+	        return startYear + ' - ' + (startYear + 9);
+	      }
+	      return this.year + ' ' + yearTranslation;
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+/* 109 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(110),
+	  /* template */
+	  __webpack_require__(114),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(104);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  mixins: [_locale2.default],
+
+	  components: {
+	    TimeSpinner: __webpack_require__(111)
+	  },
+
+	  props: {
+	    pickerWidth: {},
+	    date: {
+	      default: function _default() {
+	        return new Date();
+	      }
+	    },
+	    visible: Boolean
+	  },
+
+	  watch: {
+	    visible: function visible(val) {
+	      this.currentVisible = val;
+	    },
+	    pickerWidth: function pickerWidth(val) {
+	      this.width = val;
+	    },
+	    value: function value(newVal) {
+	      var _this = this;
+
+	      var date = void 0;
+	      if (newVal instanceof Date) {
+	        date = (0, _util.limitRange)(newVal, this.selectableRange);
+	      } else if (!newVal) {
+	        date = new Date();
+	      }
+
+	      this.handleChange({
+	        hours: date.getHours(),
+	        minutes: date.getMinutes(),
+	        seconds: date.getSeconds()
+	      });
+	      this.$nextTick(function (_) {
+	        return _this.ajustScrollTop();
+	      });
+	    },
+	    selectableRange: function selectableRange(val) {
+	      this.$refs.spinner.selectableRange = val;
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      popperClass: '',
+	      format: 'HH:mm:ss',
+	      value: '',
+	      hours: 0,
+	      minutes: 0,
+	      seconds: 0,
+	      selectableRange: [],
+	      currentDate: this.$options.defaultValue || this.date || new Date(),
+	      currentVisible: this.visible || false,
+	      width: this.pickerWidth || 0
+	    };
+	  },
+
+
+	  computed: {
+	    showSeconds: function showSeconds() {
+	      return (this.format || '').indexOf('ss') !== -1;
+	    }
+	  },
+
+	  methods: {
+	    handleClear: function handleClear() {
+	      this.$emit('pick');
+	    },
+	    handleCancel: function handleCancel() {
+	      this.$emit('pick');
+	    },
+	    handleChange: function handleChange(date) {
+	      if (date.hours !== undefined) {
+	        this.currentDate.setHours(date.hours);
+	        this.hours = this.currentDate.getHours();
+	      }
+	      if (date.minutes !== undefined) {
+	        this.currentDate.setMinutes(date.minutes);
+	        this.minutes = this.currentDate.getMinutes();
+	      }
+	      if (date.seconds !== undefined) {
+	        this.currentDate.setSeconds(date.seconds);
+	        this.seconds = this.currentDate.getSeconds();
+	      }
+
+	      this.handleConfirm(true);
+	    },
+	    setSelectionRange: function setSelectionRange(start, end) {
+	      this.$emit('select-range', start, end);
+	    },
+	    handleConfirm: function handleConfirm() {
+	      var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+	      var first = arguments[1];
+
+	      if (first) return;
+	      var date = new Date((0, _util.limitRange)(this.currentDate, this.selectableRange, 'HH:mm:ss'));
+	      this.$emit('pick', date, visible, first);
+	    },
+	    ajustScrollTop: function ajustScrollTop() {
+	      return this.$refs.spinner.ajustScrollTop();
+	    }
+	  },
+
+	  created: function created() {
+	    this.hours = this.currentDate.getHours();
+	    this.minutes = this.currentDate.getMinutes();
+	    this.seconds = this.currentDate.getSeconds();
+	  },
+	  mounted: function mounted() {
+	    var _this2 = this;
+
+	    this.$nextTick(function () {
+	      return _this2.handleConfirm(true, true);
+	    });
+	  }
+	};
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(112),
+	  /* template */
+	  __webpack_require__(113),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(104);
+
+	var _scrollbar = __webpack_require__(15);
+
+	var _scrollbar2 = _interopRequireDefault(_scrollbar);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  components: { ElScrollbar: _scrollbar2.default },
+
+	  props: {
+	    hours: {
+	      type: Number,
+	      default: 0
+	    },
+
+	    minutes: {
+	      type: Number,
+	      default: 0
+	    },
+
+	    seconds: {
+	      type: Number,
+	      default: 0
+	    },
+
+	    showSeconds: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+
+	  watch: {
+	    hoursPrivate: function hoursPrivate(newVal, oldVal) {
+	      if (!(newVal >= 0 && newVal <= 23)) {
+	        this.hoursPrivate = oldVal;
+	      }
+	      this.ajustElTop('hour', newVal);
+	      this.$emit('change', { hours: newVal });
+	    },
+	    minutesPrivate: function minutesPrivate(newVal, oldVal) {
+	      if (!(newVal >= 0 && newVal <= 59)) {
+	        this.minutesPrivate = oldVal;
+	      }
+	      this.ajustElTop('minute', newVal);
+	      this.$emit('change', { minutes: newVal });
+	    },
+	    secondsPrivate: function secondsPrivate(newVal, oldVal) {
+	      if (!(newVal >= 0 && newVal <= 59)) {
+	        this.secondsPrivate = oldVal;
+	      }
+	      this.ajustElTop('second', newVal);
+	      this.$emit('change', { seconds: newVal });
+	    }
+	  },
+
+	  computed: {
+	    hoursList: function hoursList() {
+	      return (0, _util.getRangeHours)(this.selectableRange);
+	    },
+	    hourEl: function hourEl() {
+	      return this.$refs.hour.wrap;
+	    },
+	    minuteEl: function minuteEl() {
+	      return this.$refs.minute.wrap;
+	    },
+	    secondEl: function secondEl() {
+	      return this.$refs.second.wrap;
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      hoursPrivate: 0,
+	      minutesPrivate: 0,
+	      secondsPrivate: 0,
+	      selectableRange: []
+	    };
+	  },
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    this.$nextTick(function () {
+	      _this.bindScrollEvent();
+	    });
+	  },
+
+
+	  methods: {
+	    handleClick: function handleClick(type, value, disabled) {
+	      if (value.disabled) {
+	        return;
+	      }
+
+	      this[type + 'Private'] = value.value >= 0 ? value.value : value;
+
+	      this.emitSelectRange(type);
+	    },
+	    emitSelectRange: function emitSelectRange(type) {
+	      if (type === 'hours') {
+	        this.$emit('select-range', 0, 2);
+	      } else if (type === 'minutes') {
+	        this.$emit('select-range', 3, 5);
+	      } else if (type === 'seconds') {
+	        this.$emit('select-range', 6, 8);
+	      }
+	    },
+	    bindScrollEvent: function bindScrollEvent() {
+	      var _this2 = this;
+
+	      var bindFuntion = function bindFuntion(type) {
+	        _this2[type + 'El'].onscroll = function (e) {
+	          return _this2.handleScroll(type, e);
+	        };
+	      };
+	      bindFuntion('hour');
+	      bindFuntion('minute');
+	      bindFuntion('second');
+	    },
+	    handleScroll: function handleScroll(type) {
+	      var ajust = {};
+	      ajust[type + 's'] = Math.min(Math.floor((this[type + 'El'].scrollTop - 80) / 32 + 3), 59);
+	      this.$emit('change', ajust);
+	    },
+	    ajustScrollTop: function ajustScrollTop() {
+	      this.ajustElTop('hour', this.hours);
+	      this.ajustElTop('minute', this.minutes);
+	      this.ajustElTop('second', this.seconds);
+	    },
+	    ajustElTop: function ajustElTop(type, value) {
+	      this[type + 'El'].scrollTop = Math.max(0, (value - 2.5) * 32 + 80);
+	    }
+	  }
+	};
+
+/***/ },
+/* 113 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-time-spinner",
+	    class: {
+	      'has-seconds': _vm.showSeconds
+	    }
+	  }, [_c('el-scrollbar', {
+	    ref: "hour",
+	    staticClass: "el-time-spinner__wrapper",
+	    attrs: {
+	      "wrap-style": "max-height: inherit;",
+	      "view-class": "el-time-spinner__list",
+	      "noresize": "",
+	      "tag": "ul"
+	    },
+	    nativeOn: {
+	      "mouseenter": function($event) {
+	        _vm.emitSelectRange('hours')
+	      }
+	    }
+	  }, _vm._l((_vm.hoursList), function(disabled, hour) {
+	    return _c('li', {
+	      staticClass: "el-time-spinner__item",
+	      class: {
+	        'active': hour === _vm.hours, 'disabled': disabled
+	      },
+	      attrs: {
+	        "track-by": "hour"
+	      },
+	      domProps: {
+	        "textContent": _vm._s(hour)
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleClick('hours', {
+	            value: hour,
+	            disabled: disabled
+	          }, true)
+	        }
+	      }
+	    })
+	  })), _c('el-scrollbar', {
+	    ref: "minute",
+	    staticClass: "el-time-spinner__wrapper",
+	    attrs: {
+	      "wrap-style": "max-height: inherit;",
+	      "view-class": "el-time-spinner__list",
+	      "noresize": "",
+	      "tag": "ul"
+	    },
+	    nativeOn: {
+	      "mouseenter": function($event) {
+	        _vm.emitSelectRange('minutes')
+	      }
+	    }
+	  }, _vm._l((60), function(minute, key) {
+	    return _c('li', {
+	      staticClass: "el-time-spinner__item",
+	      class: {
+	        'active': key === _vm.minutes
+	      },
+	      domProps: {
+	        "textContent": _vm._s(key)
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleClick('minutes', key, true)
+	        }
+	      }
+	    })
+	  })), _c('el-scrollbar', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showSeconds),
+	      expression: "showSeconds"
+	    }],
+	    ref: "second",
+	    staticClass: "el-time-spinner__wrapper",
+	    attrs: {
+	      "wrap-style": "max-height: inherit;",
+	      "view-class": "el-time-spinner__list",
+	      "noresize": "",
+	      "tag": "ul"
+	    },
+	    nativeOn: {
+	      "mouseenter": function($event) {
+	        _vm.emitSelectRange('seconds')
+	      }
+	    }
+	  }, _vm._l((60), function(second, key) {
+	    return _c('li', {
+	      staticClass: "el-time-spinner__item",
+	      class: {
+	        'active': key === _vm.seconds
+	      },
+	      domProps: {
+	        "textContent": _vm._s(key)
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleClick('seconds', key, true)
+	        }
+	      }
+	    })
+	  }))], 1)
+	},staticRenderFns: []}
+
+/***/ },
+/* 114 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": function($event) {
+	        _vm.$emit('dodestroy')
+	      }
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentVisible),
+	      expression: "currentVisible"
+	    }],
+	    staticClass: "el-time-panel",
+	    class: _vm.popperClass,
+	    style: ({
+	      width: _vm.width + 'px'
+	    })
+	  }, [_c('div', {
+	    staticClass: "el-time-panel__content",
+	    class: {
+	      'has-seconds': _vm.showSeconds
+	    }
+	  }, [_c('time-spinner', {
+	    ref: "spinner",
+	    attrs: {
+	      "show-seconds": _vm.showSeconds,
+	      "hours": _vm.hours,
+	      "minutes": _vm.minutes,
+	      "seconds": _vm.seconds
+	    },
+	    on: {
+	      "change": _vm.handleChange,
+	      "select-range": _vm.setSelectionRange
+	    }
+	  })], 1), _c('div', {
+	    staticClass: "el-time-panel__footer"
+	  }, [_c('button', {
+	    staticClass: "el-time-panel__btn cancel",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.handleCancel
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.cancel')))]), _c('button', {
+	    staticClass: "el-time-panel__btn confirm",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": function($event) {
+	        _vm.handleConfirm()
+	      }
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])])])])
+	},staticRenderFns: []}
+
+/***/ },
+/* 115 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(116),
+	  /* template */
+	  __webpack_require__(118),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 116 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dom = __webpack_require__(117);
+
+	exports.default = {
+	  props: {
+	    disabledDate: {},
+	    date: {},
+	    year: {}
+	  },
+
+	  computed: {
+	    startYear: function startYear() {
+	      return Math.floor(this.year / 10) * 10;
+	    }
+	  },
+
+	  methods: {
+	    getCellStyle: function getCellStyle(year) {
+	      var style = {};
+	      var date = new Date(this.date);
+
+	      date.setFullYear(year);
+	      style.disabled = typeof this.disabledDate === 'function' && this.disabledDate(date);
+	      style.current = Number(this.year) === year;
+
+	      return style;
+	    },
+	    nextTenYear: function nextTenYear() {
+	      this.$emit('pick', Number(this.year) + 10, false);
+	    },
+	    prevTenYear: function prevTenYear() {
+	      this.$emit('pick', Number(this.year) - 10, false);
+	    },
+	    handleYearTableClick: function handleYearTableClick(event) {
+	      var target = event.target;
+	      if (target.tagName === 'A') {
+	        if ((0, _dom.hasClass)(target.parentNode, 'disabled')) return;
+	        var year = target.textContent || target.innerText;
+	        this.$emit('pick', year);
+	      }
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+/* 117 */
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+/* 118 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('table', {
+	    staticClass: "el-year-table",
+	    on: {
+	      "click": _vm.handleYearTableClick
+	    }
+	  }, [_c('tbody', [_c('tr', [_c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 0)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 1)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 1))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 2)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 2))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 3)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 3))])])]), _c('tr', [_c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 4)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 4))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 5)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 5))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 6)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 6))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 7)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 7))])])]), _c('tr', [_c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 8)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 8))])]), _c('td', {
+	    staticClass: "available",
+	    class: _vm.getCellStyle(_vm.startYear + 9)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.startYear + 9))])]), _c('td'), _c('td')])])])
+	},staticRenderFns: []}
+
+/***/ },
+/* 119 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(120),
+	  /* template */
+	  __webpack_require__(121),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 120 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _dom = __webpack_require__(117);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  props: {
+	    disabledDate: {},
+	    date: {},
+	    month: {
+	      type: Number
+	    }
+	  },
+	  mixins: [_locale2.default],
+	  methods: {
+	    getCellStyle: function getCellStyle(month) {
+	      var style = {};
+	      var date = new Date(this.date);
+
+	      date.setMonth(month);
+	      style.disabled = typeof this.disabledDate === 'function' && this.disabledDate(date);
+	      style.current = this.month === month;
+
+	      return style;
+	    },
+	    handleMonthTableClick: function handleMonthTableClick(event) {
+	      var target = event.target;
+	      if (target.tagName !== 'A') return;
+	      if ((0, _dom.hasClass)(target.parentNode, 'disabled')) return;
+	      var column = target.parentNode.cellIndex;
+	      var row = target.parentNode.parentNode.rowIndex;
+	      var month = row * 4 + column;
+
+	      this.$emit('pick', month);
+	    }
+	  }
+	};
+
+/***/ },
+/* 121 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('table', {
+	    staticClass: "el-month-table",
+	    on: {
+	      "click": _vm.handleMonthTableClick
+	    }
+	  }, [_c('tbody', [_c('tr', [_c('td', {
+	    class: _vm.getCellStyle(0)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.jan')))])]), _c('td', {
+	    class: _vm.getCellStyle(1)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.feb')))])]), _c('td', {
+	    class: _vm.getCellStyle(2)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.mar')))])]), _c('td', {
+	    class: _vm.getCellStyle(3)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.apr')))])])]), _c('tr', [_c('td', {
+	    class: _vm.getCellStyle(4)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.may')))])]), _c('td', {
+	    class: _vm.getCellStyle(5)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.jun')))])]), _c('td', {
+	    class: _vm.getCellStyle(6)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.jul')))])]), _c('td', {
+	    class: _vm.getCellStyle(7)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.aug')))])])]), _c('tr', [_c('td', {
+	    class: _vm.getCellStyle(8)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.sep')))])]), _c('td', {
+	    class: _vm.getCellStyle(9)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.oct')))])]), _c('td', {
+	    class: _vm.getCellStyle(10)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.nov')))])]), _c('td', {
+	    class: _vm.getCellStyle(11)
+	  }, [_c('a', {
+	    staticClass: "cell"
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.months.dec')))])])])])])
+	},staticRenderFns: []}
+
+/***/ },
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(123),
+	  /* template */
+	  __webpack_require__(124),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 123 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(104);
+
+	var _dom = __webpack_require__(117);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var _WEEKS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var clearHours = function clearHours(time) {
+	  var cloneDate = new Date(time);
+	  cloneDate.setHours(0, 0, 0, 0);
+	  return cloneDate.getTime();
+	};
+
+	exports.default = {
+	  mixins: [_locale2.default],
+
+	  props: {
+	    firstDayOfWeek: {
+	      default: 7,
+	      type: Number,
+	      validator: function validator(val) {
+	        return val >= 1 && val <= 7;
+	      }
+	    },
+
+	    date: {},
+
+	    year: {},
+
+	    month: {},
+
+	    week: {},
+
+	    selectionMode: {
+	      default: 'day'
+	    },
+
+	    showWeekNumber: {
+	      type: Boolean,
+	      default: false
+	    },
+
+	    disabledDate: {},
+
+	    minDate: {},
+
+	    maxDate: {},
+
+	    rangeState: {
+	      default: function _default() {
+	        return {
+	          endDate: null,
+	          selecting: false,
+	          row: null,
+	          column: null
+	        };
+	      }
+	    }
+	  },
+
+	  computed: {
+	    offsetDay: function offsetDay() {
+	      var week = this.firstDayOfWeek;
+	      // 周日为界限,左右偏移的天数,3217654 例如周一就是 -1,目的是调整前两行日期的位置
+	      return week > 3 ? 7 - week : -week;
+	    },
+	    WEEKS: function WEEKS() {
+	      var week = this.firstDayOfWeek;
+	      return _WEEKS.concat(_WEEKS).slice(week, week + 7);
+	    },
+	    monthDate: function monthDate() {
+	      return this.date.getDate();
+	    },
+	    startDate: function startDate() {
+	      return (0, _util.getStartDateOfMonth)(this.year, this.month);
+	    },
+	    rows: function rows() {
+	      var date = new Date(this.year, this.month, 1);
+	      var day = (0, _util.getFirstDayOfMonth)(date); // day of first day
+	      var dateCountOfMonth = (0, _util.getDayCountOfMonth)(date.getFullYear(), date.getMonth());
+	      var dateCountOfLastMonth = (0, _util.getDayCountOfMonth)(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1);
+
+	      day = day === 0 ? 7 : day;
+
+	      var offset = this.offsetDay;
+	      var rows = this.tableRows;
+	      var count = 1;
+	      var firstDayPosition = void 0;
+
+	      var startDate = this.startDate;
+	      var disabledDate = this.disabledDate;
+	      var now = clearHours(new Date());
+
+	      for (var i = 0; i < 6; i++) {
+	        var row = rows[i];
+
+	        if (this.showWeekNumber) {
+	          if (!row[0]) {
+	            row[0] = { type: 'week', text: (0, _util.getWeekNumber)(new Date(startDate.getTime() + _util.DAY_DURATION * (i * 7 + 1))) };
+	          }
+	        }
+
+	        for (var j = 0; j < 7; j++) {
+	          var cell = row[this.showWeekNumber ? j + 1 : j];
+	          if (!cell) {
+	            cell = { row: i, column: j, type: 'normal', inRange: false, start: false, end: false };
+	          }
+
+	          cell.type = 'normal';
+
+	          var index = i * 7 + j;
+	          var time = startDate.getTime() + _util.DAY_DURATION * (index - offset);
+	          cell.inRange = time >= clearHours(this.minDate) && time <= clearHours(this.maxDate);
+	          cell.start = this.minDate && time === clearHours(this.minDate);
+	          cell.end = this.maxDate && time === clearHours(this.maxDate);
+	          var isToday = time === now;
+
+	          if (isToday) {
+	            cell.type = 'today';
+	          }
+
+	          if (i >= 0 && i <= 1) {
+	            if (j + i * 7 >= day + offset) {
+	              cell.text = count++;
+	              if (count === 2) {
+	                firstDayPosition = i * 7 + j;
+	              }
+	            } else {
+	              cell.text = dateCountOfLastMonth - (day + offset - j % 7) + 1 + i * 7;
+	              cell.type = 'prev-month';
+	            }
+	          } else {
+	            if (count <= dateCountOfMonth) {
+	              cell.text = count++;
+	              if (count === 2) {
+	                firstDayPosition = i * 7 + j;
+	              }
+	            } else {
+	              cell.text = count++ - dateCountOfMonth;
+	              cell.type = 'next-month';
+	            }
+	          }
+
+	          cell.disabled = typeof disabledDate === 'function' && disabledDate(new Date(time));
+
+	          this.$set(row, this.showWeekNumber ? j + 1 : j, cell);
+	        }
+
+	        if (this.selectionMode === 'week') {
+	          var start = this.showWeekNumber ? 1 : 0;
+	          var end = this.showWeekNumber ? 7 : 6;
+	          var isWeekActive = this.isWeekActive(row[start + 1]);
+
+	          row[start].inRange = isWeekActive;
+	          row[start].start = isWeekActive;
+	          row[end].inRange = isWeekActive;
+	          row[end].end = isWeekActive;
+	        }
+	      }
+
+	      rows.firstDayPosition = firstDayPosition;
+
+	      return rows;
+	    }
+	  },
+
+	  watch: {
+	    'rangeState.endDate': function rangeStateEndDate(newVal) {
+	      this.markRange(newVal);
+	    },
+	    minDate: function minDate(newVal, oldVal) {
+	      if (newVal && !oldVal) {
+	        this.rangeState.selecting = true;
+	        this.markRange(newVal);
+	      } else if (!newVal) {
+	        this.rangeState.selecting = false;
+	        this.markRange(newVal);
+	      } else {
+	        this.markRange();
+	      }
+	    },
+	    maxDate: function maxDate(newVal, oldVal) {
+	      if (newVal && !oldVal) {
+	        this.rangeState.selecting = false;
+	        this.markRange(newVal);
+	        this.$emit('pick', {
+	          minDate: this.minDate,
+	          maxDate: this.maxDate
+	        });
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      tableRows: [[], [], [], [], [], []]
+	    };
+	  },
+
+
+	  methods: {
+	    getCellClasses: function getCellClasses(cell) {
+	      var selectionMode = this.selectionMode;
+	      var monthDate = this.monthDate;
+
+	      var classes = [];
+	      if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {
+	        classes.push('available');
+	        if (cell.type === 'today') {
+	          classes.push('today');
+	        }
+	      } else {
+	        classes.push(cell.type);
+	      }
+
+	      if (selectionMode === 'day' && (cell.type === 'normal' || cell.type === 'today') && Number(this.year) === this.date.getFullYear() && this.month === this.date.getMonth() && monthDate === Number(cell.text)) {
+	        classes.push('current');
+	      }
+
+	      if (cell.inRange && (cell.type === 'normal' || cell.type === 'today' || this.selectionMode === 'week')) {
+	        classes.push('in-range');
+
+	        if (cell.start) {
+	          classes.push('start-date');
+	        }
+
+	        if (cell.end) {
+	          classes.push('end-date');
+	        }
+	      }
+
+	      if (cell.disabled) {
+	        classes.push('disabled');
+	      }
+
+	      return classes.join(' ');
+	    },
+	    getDateOfCell: function getDateOfCell(row, column) {
+	      var startDate = this.startDate;
+
+	      return new Date(startDate.getTime() + (row * 7 + (column - (this.showWeekNumber ? 1 : 0)) - this.offsetDay) * _util.DAY_DURATION);
+	    },
+	    getCellByDate: function getCellByDate(date) {
+	      var startDate = this.startDate;
+	      var rows = this.rows;
+	      var index = (date - startDate) / _util.DAY_DURATION;
+	      var row = rows[Math.floor(index / 7)];
+
+	      if (this.showWeekNumber) {
+	        return row[index % 7 + 1];
+	      } else {
+	        return row[index % 7];
+	      }
+	    },
+	    isWeekActive: function isWeekActive(cell) {
+	      if (this.selectionMode !== 'week') return false;
+	      var newDate = new Date(this.year, this.month, 1);
+	      var year = newDate.getFullYear();
+	      var month = newDate.getMonth();
+
+	      if (cell.type === 'prev-month') {
+	        newDate.setMonth(month === 0 ? 11 : month - 1);
+	        newDate.setFullYear(month === 0 ? year - 1 : year);
+	      }
+
+	      if (cell.type === 'next-month') {
+	        newDate.setMonth(month === 11 ? 0 : month + 1);
+	        newDate.setFullYear(month === 11 ? year + 1 : year);
+	      }
+
+	      newDate.setDate(parseInt(cell.text, 10));
+
+	      return (0, _util.getWeekNumber)(newDate) === this.week;
+	    },
+	    markRange: function markRange(maxDate) {
+	      var startDate = this.startDate;
+	      if (!maxDate) {
+	        maxDate = this.maxDate;
+	      }
+
+	      var rows = this.rows;
+	      var minDate = this.minDate;
+	      for (var i = 0, k = rows.length; i < k; i++) {
+	        var row = rows[i];
+	        for (var j = 0, l = row.length; j < l; j++) {
+	          if (this.showWeekNumber && j === 0) continue;
+
+	          var cell = row[j];
+	          var index = i * 7 + j + (this.showWeekNumber ? -1 : 0);
+	          var time = startDate.getTime() + _util.DAY_DURATION * (index - this.offsetDay);
+
+	          cell.inRange = minDate && time >= clearHours(minDate) && time <= clearHours(maxDate);
+	          cell.start = minDate && time === clearHours(minDate.getTime());
+	          cell.end = maxDate && time === clearHours(maxDate.getTime());
+	        }
+	      }
+	    },
+	    handleMouseMove: function handleMouseMove(event) {
+	      if (!this.rangeState.selecting) return;
+
+	      this.$emit('changerange', {
+	        minDate: this.minDate,
+	        maxDate: this.maxDate,
+	        rangeState: this.rangeState
+	      });
+
+	      var target = event.target;
+	      if (target.tagName !== 'TD') return;
+
+	      var column = target.cellIndex;
+	      var row = target.parentNode.rowIndex - 1;
+	      var _rangeState = this.rangeState,
+	          oldRow = _rangeState.row,
+	          oldColumn = _rangeState.column;
+
+
+	      if (oldRow !== row || oldColumn !== column) {
+	        this.rangeState.row = row;
+	        this.rangeState.column = column;
+
+	        this.rangeState.endDate = this.getDateOfCell(row, column);
+	      }
+	    },
+	    handleClick: function handleClick(event) {
+	      var target = event.target;
+
+	      if (target.tagName !== 'TD') return;
+	      if ((0, _dom.hasClass)(target, 'disabled') || (0, _dom.hasClass)(target, 'week')) return;
+
+	      var selectionMode = this.selectionMode;
+
+	      if (selectionMode === 'week') {
+	        target = target.parentNode.cells[1];
+	      }
+
+	      var year = Number(this.year);
+	      var month = Number(this.month);
+
+	      var cellIndex = target.cellIndex;
+	      var rowIndex = target.parentNode.rowIndex;
+
+	      var cell = this.rows[rowIndex - 1][cellIndex];
+	      var text = cell.text;
+	      var className = target.className;
+
+	      var newDate = new Date(year, month, 1);
+
+	      if (className.indexOf('prev') !== -1) {
+	        if (month === 0) {
+	          year = year - 1;
+	          month = 11;
+	        } else {
+	          month = month - 1;
+	        }
+	        newDate.setFullYear(year);
+	        newDate.setMonth(month);
+	      } else if (className.indexOf('next') !== -1) {
+	        if (month === 11) {
+	          year = year + 1;
+	          month = 0;
+	        } else {
+	          month = month + 1;
+	        }
+	        newDate.setFullYear(year);
+	        newDate.setMonth(month);
+	      }
+
+	      newDate.setDate(parseInt(text, 10));
+
+	      if (this.selectionMode === 'range') {
+	        if (this.minDate && this.maxDate) {
+	          var minDate = new Date(newDate.getTime());
+	          var maxDate = null;
+
+	          this.$emit('pick', { minDate: minDate, maxDate: maxDate }, false);
+	          this.rangeState.selecting = true;
+	          this.markRange(this.minDate);
+	        } else if (this.minDate && !this.maxDate) {
+	          if (newDate >= this.minDate) {
+	            var _maxDate = new Date(newDate.getTime());
+	            this.rangeState.selecting = false;
+
+	            this.$emit('pick', {
+	              minDate: this.minDate,
+	              maxDate: _maxDate
+	            });
+	          } else {
+	            var _minDate = new Date(newDate.getTime());
+
+	            this.$emit('pick', { minDate: _minDate, maxDate: this.maxDate }, false);
+	          }
+	        } else if (!this.minDate) {
+	          var _minDate2 = new Date(newDate.getTime());
+
+	          this.$emit('pick', { minDate: _minDate2, maxDate: this.maxDate }, false);
+	          this.rangeState.selecting = true;
+	          this.markRange(this.minDate);
+	        }
+	      } else if (selectionMode === 'day') {
+	        this.$emit('pick', newDate);
+	      } else if (selectionMode === 'week') {
+	        var weekNumber = (0, _util.getWeekNumber)(newDate);
+
+	        var value = newDate.getFullYear() + 'w' + weekNumber;
+	        this.$emit('pick', {
+	          year: newDate.getFullYear(),
+	          week: weekNumber,
+	          value: value,
+	          date: newDate
+	        });
+	      }
+	    }
+	  }
+	};
+
+/***/ },
+/* 124 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('table', {
+	    staticClass: "el-date-table",
+	    class: {
+	      'is-week-mode': _vm.selectionMode === 'week'
+	    },
+	    attrs: {
+	      "cellspacing": "0",
+	      "cellpadding": "0"
+	    },
+	    on: {
+	      "click": _vm.handleClick,
+	      "mousemove": _vm.handleMouseMove
+	    }
+	  }, [_c('tbody', [_c('tr', [(_vm.showWeekNumber) ? _c('th', [_vm._v(_vm._s(_vm.t('el.datepicker.week')))]) : _vm._e(), _vm._l((_vm.WEEKS), function(week) {
+	    return _c('th', [_vm._v(_vm._s(_vm.t('el.datepicker.weeks.' + week)))])
+	  })], 2), _vm._l((_vm.rows), function(row) {
+	    return _c('tr', {
+	      staticClass: "el-date-table__row",
+	      class: {
+	        current: _vm.isWeekActive(row[1])
+	      }
+	    }, _vm._l((row), function(cell) {
+	      return _c('td', {
+	        class: _vm.getCellClasses(cell),
+	        domProps: {
+	          "textContent": _vm._s(cell.type === 'today' ? _vm.t('el.datepicker.today') : cell.text)
+	        }
+	      })
+	    }))
+	  })], 2)])
+	},staticRenderFns: []}
+
+/***/ },
+/* 125 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": function($event) {
+	        _vm.$emit('dodestroy')
+	      }
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-picker-panel el-date-picker",
+	    class: [{
+	      'has-sidebar': _vm.$slots.sidebar || _vm.shortcuts,
+	      'has-time': _vm.showTime
+	    }, _vm.popperClass],
+	    style: ({
+	      width: _vm.width + 'px'
+	    })
+	  }, [_c('div', {
+	    staticClass: "el-picker-panel__body-wrapper"
+	  }, [_vm._t("sidebar"), (_vm.shortcuts) ? _c('div', {
+	    staticClass: "el-picker-panel__sidebar"
+	  }, _vm._l((_vm.shortcuts), function(shortcut) {
+	    return _c('button', {
+	      staticClass: "el-picker-panel__shortcut",
+	      attrs: {
+	        "type": "button"
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleShortcutClick(shortcut)
+	        }
+	      }
+	    }, [_vm._v(_vm._s(shortcut.text))])
+	  })) : _vm._e(), _c('div', {
+	    staticClass: "el-picker-panel__body"
+	  }, [(_vm.showTime) ? _c('div', {
+	    staticClass: "el-date-picker__time-header"
+	  }, [_c('span', {
+	    staticClass: "el-date-picker__editor-wrap"
+	  }, [_c('el-input', {
+	    attrs: {
+	      "placeholder": _vm.t('el.datepicker.selectDate'),
+	      "value": _vm.visibleDate,
+	      "size": "small"
+	    },
+	    nativeOn: {
+	      "change": function($event) {
+	        _vm.visibleDate = $event.target.value
+	      }
+	    }
+	  })], 1), _c('span', {
+	    staticClass: "el-date-picker__editor-wrap"
+	  }, [_c('el-input', {
+	    ref: "input",
+	    attrs: {
+	      "placeholder": _vm.t('el.datepicker.selectTime'),
+	      "value": _vm.visibleTime,
+	      "size": "small"
+	    },
+	    on: {
+	      "focus": function($event) {
+	        _vm.timePickerVisible = !_vm.timePickerVisible
+	      }
+	    },
+	    nativeOn: {
+	      "change": function($event) {
+	        _vm.visibleTime = $event.target.value
+	      }
+	    }
+	  }), _c('time-picker', {
+	    ref: "timepicker",
+	    attrs: {
+	      "date": _vm.date,
+	      "picker-width": _vm.pickerWidth,
+	      "visible": _vm.timePickerVisible
+	    },
+	    on: {
+	      "pick": _vm.handleTimePick
+	    }
+	  })], 1)]) : _vm._e(), _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView !== 'time'),
+	      expression: "currentView !== 'time'"
+	    }],
+	    staticClass: "el-date-picker__header"
+	  }, [_c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.prevYear
+	    }
+	  }), _c('button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'date'),
+	      expression: "currentView === 'date'"
+	    }],
+	    staticClass: "el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.prevMonth
+	    }
+	  }), _c('span', {
+	    staticClass: "el-date-picker__header-label",
+	    on: {
+	      "click": _vm.showYearPicker
+	    }
+	  }, [_vm._v(_vm._s(_vm.yearLabel))]), _c('span', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'date'),
+	      expression: "currentView === 'date'"
+	    }],
+	    staticClass: "el-date-picker__header-label",
+	    class: {
+	      active: _vm.currentView === 'month'
+	    },
+	    on: {
+	      "click": _vm.showMonthPicker
+	    }
+	  }, [_vm._v(_vm._s(_vm.t(("el.datepicker.month" + (_vm.month + 1)))))]), _c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.nextYear
+	    }
+	  }), _c('button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'date'),
+	      expression: "currentView === 'date'"
+	    }],
+	    staticClass: "el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.nextMonth
+	    }
+	  })]), _c('div', {
+	    staticClass: "el-picker-panel__content"
+	  }, [_c('date-table', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'date'),
+	      expression: "currentView === 'date'"
+	    }],
+	    attrs: {
+	      "year": _vm.year,
+	      "month": _vm.month,
+	      "date": _vm.date,
+	      "week": _vm.week,
+	      "selection-mode": _vm.selectionMode,
+	      "first-day-of-week": _vm.firstDayOfWeek,
+	      "disabled-date": _vm.disabledDate
+	    },
+	    on: {
+	      "pick": _vm.handleDatePick
+	    }
+	  }), _c('year-table', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'year'),
+	      expression: "currentView === 'year'"
+	    }],
+	    ref: "yearTable",
+	    attrs: {
+	      "year": _vm.year,
+	      "date": _vm.date,
+	      "disabled-date": _vm.disabledDate
+	    },
+	    on: {
+	      "pick": _vm.handleYearPick
+	    }
+	  }), _c('month-table', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.currentView === 'month'),
+	      expression: "currentView === 'month'"
+	    }],
+	    attrs: {
+	      "month": _vm.month,
+	      "date": _vm.date,
+	      "disabled-date": _vm.disabledDate
+	    },
+	    on: {
+	      "pick": _vm.handleMonthPick
+	    }
+	  })], 1)])], 2), _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.footerVisible && _vm.currentView === 'date'),
+	      expression: "footerVisible && currentView === 'date'"
+	    }],
+	    staticClass: "el-picker-panel__footer"
+	  }, [_c('a', {
+	    staticClass: "el-picker-panel__link-btn",
+	    attrs: {
+	      "href": "JavaScript:"
+	    },
+	    on: {
+	      "click": _vm.changeToNow
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.now')))]), _c('button', {
+	    staticClass: "el-picker-panel__btn",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.confirm
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])])])])
+	},staticRenderFns: []}
+
+/***/ },
+/* 126 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(127),
+	  /* template */
+	  __webpack_require__(128),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+/* 127 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(104);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _time = __webpack_require__(109);
+
+	var _time2 = _interopRequireDefault(_time);
+
+	var _dateTable = __webpack_require__(122);
+
+	var _dateTable2 = _interopRequireDefault(_dateTable);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  mixins: [_locale2.default],
+
+	  computed: {
+	    btnDisabled: function btnDisabled() {
+	      return !(this.minDate && this.maxDate && !this.selecting);
+	    },
+	    leftLabel: function leftLabel() {
+	      return this.date.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.date.getMonth() + 1));
+	    },
+	    rightLabel: function rightLabel() {
+	      return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year') + ' ' + this.t('el.datepicker.month' + (this.rightDate.getMonth() + 1));
+	    },
+	    leftYear: function leftYear() {
+	      return this.date.getFullYear();
+	    },
+	    leftMonth: function leftMonth() {
+	      return this.date.getMonth();
+	    },
+	    rightYear: function rightYear() {
+	      return this.rightDate.getFullYear();
+	    },
+	    rightMonth: function rightMonth() {
+	      return this.rightDate.getMonth();
+	    },
+	    minVisibleDate: function minVisibleDate() {
+	      return this.minDate ? (0, _util.formatDate)(this.minDate) : '';
+	    },
+	    maxVisibleDate: function maxVisibleDate() {
+	      return this.maxDate || this.minDate ? (0, _util.formatDate)(this.maxDate || this.minDate) : '';
+	    },
+	    minVisibleTime: function minVisibleTime() {
+	      return this.minDate ? (0, _util.formatDate)(this.minDate, 'HH:mm:ss') : '';
+	    },
+	    maxVisibleTime: function maxVisibleTime() {
+	      return this.maxDate || this.minDate ? (0, _util.formatDate)(this.maxDate || this.minDate, 'HH:mm:ss') : '';
+	    },
+	    rightDate: function rightDate() {
+	      var newDate = new Date(this.date);
+	      var month = newDate.getMonth();
+	      newDate.setDate(1);
+
+	      if (month === 11) {
+	        newDate.setFullYear(newDate.getFullYear() + 1);
+	        newDate.setMonth(0);
+	      } else {
+	        newDate.setMonth(month + 1);
+	      }
+	      return newDate;
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      popperClass: '',
+	      minPickerWidth: 0,
+	      maxPickerWidth: 0,
+	      date: new Date(),
+	      minDate: '',
+	      maxDate: '',
+	      rangeState: {
+	        endDate: null,
+	        selecting: false,
+	        row: null,
+	        column: null
+	      },
+	      showTime: false,
+	      shortcuts: '',
+	      value: '',
+	      visible: '',
+	      disabledDate: '',
+	      firstDayOfWeek: 7,
+	      minTimePickerVisible: false,
+	      maxTimePickerVisible: false,
+	      width: 0
+	    };
+	  },
+
+
+	  watch: {
+	    showTime: function showTime(val) {
+	      var _this = this;
+
+	      if (!val) return;
+	      this.$nextTick(function (_) {
+	        var minInputElm = _this.$refs.minInput.$el;
+	        var maxInputElm = _this.$refs.maxInput.$el;
+	        if (minInputElm) {
+	          _this.minPickerWidth = minInputElm.getBoundingClientRect().width + 10;
+	        }
+	        if (maxInputElm) {
+	          _this.maxPickerWidth = maxInputElm.getBoundingClientRect().width + 10;
+	        }
+	      });
+	    },
+	    minDate: function minDate() {
+	      var _this2 = this;
+
+	      this.$nextTick(function () {
+	        if (_this2.maxDate && _this2.maxDate < _this2.minDate) {
+	          var format = 'HH:mm:ss';
+
+	          _this2.$refs.maxTimePicker.selectableRange = [[(0, _util.parseDate)((0, _util.formatDate)(_this2.minDate, format), format), (0, _util.parseDate)('23:59:59', format)]];
+	        }
+	      });
+	    },
+	    minTimePickerVisible: function minTimePickerVisible(val) {
+	      var _this3 = this;
+
+	      if (val) this.$nextTick(function () {
+	        return _this3.$refs.minTimePicker.ajustScrollTop();
+	      });
+	    },
+	    maxTimePickerVisible: function maxTimePickerVisible(val) {
+	      var _this4 = this;
+
+	      if (val) this.$nextTick(function () {
+	        return _this4.$refs.maxTimePicker.ajustScrollTop();
+	      });
+	    },
+	    value: function value(newVal) {
+	      if (!newVal) {
+	        this.minDate = null;
+	        this.maxDate = null;
+	      } else if (Array.isArray(newVal)) {
+	        this.minDate = newVal[0] ? (0, _util.toDate)(newVal[0]) : null;
+	        this.maxDate = newVal[1] ? (0, _util.toDate)(newVal[1]) : null;
+	        if (this.minDate) this.date = new Date(this.minDate);
+	        this.handleConfirm(true);
+	      }
+	    }
+	  },
+
+	  methods: {
+	    handleClear: function handleClear() {
+	      this.minDate = null;
+	      this.maxDate = null;
+	      this.handleConfirm(false);
+	    },
+	    handleDateInput: function handleDateInput(event, type) {
+	      var value = event.target.value;
+	      var parsedValue = (0, _util.parseDate)(value, 'yyyy-MM-dd');
+
+	      if (parsedValue) {
+	        if (typeof this.disabledDate === 'function' && this.disabledDate(new Date(parsedValue))) {
+	          return;
+	        }
+	        var target = new Date(type === 'min' ? this.minDate : this.maxDate);
+	        if (target) {
+	          target.setFullYear(parsedValue.getFullYear());
+	          target.setMonth(parsedValue.getMonth(), parsedValue.getDate());
+	        }
+	      }
+	    },
+	    handleChangeRange: function handleChangeRange(val) {
+	      this.minDate = val.minDate;
+	      this.maxDate = val.maxDate;
+	      this.rangeState = val.rangeState;
+	    },
+	    handleDateChange: function handleDateChange(event, type) {
+	      var value = event.target.value;
+	      var parsedValue = (0, _util.parseDate)(value, 'yyyy-MM-dd');
+	      if (parsedValue) {
+	        var target = new Date(type === 'min' ? this.minDate : this.maxDate);
+	        if (target) {
+	          target.setFullYear(parsedValue.getFullYear());
+	          target.setMonth(parsedValue.getMonth(), parsedValue.getDate());
+	        }
+	        if (type === 'min') {
+	          if (target < this.maxDate) {
+	            this.minDate = new Date(target.getTime());
+	          }
+	        } else {
+	          if (target > this.minDate) {
+	            this.maxDate = new Date(target.getTime());
+	            if (this.minDate && this.minDate > this.maxDate) {
+	              this.minDate = null;
+	            }
+	          }
+	        }
+	      }
+	    },
+	    handleTimeChange: function handleTimeChange(event, type) {
+	      var value = event.target.value;
+	      var parsedValue = (0, _util.parseDate)(value, 'HH:mm:ss');
+	      if (parsedValue) {
+	        var target = new Date(type === 'min' ? this.minDate : this.maxDate);
+	        if (target) {
+	          target.setHours(parsedValue.getHours());
+	          target.setMinutes(parsedValue.getMinutes());
+	          target.setSeconds(parsedValue.getSeconds());
+	        }
+	        if (type === 'min') {
+	          if (target < this.maxDate) {
+	            this.minDate = new Date(target.getTime());
+	          }
+	        } else {
+	          if (target > this.minDate) {
+	            this.maxDate = new Date(target.getTime());
+	          }
+	        }
+	        this.$refs[type + 'TimePicker'].value = target;
+	        this[type + 'TimePickerVisible'] = false;
+	      }
+	    },
+	    handleRangePick: function handleRangePick(val) {
+	      var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+	      if (this.maxDate === val.maxDate && this.minDate === val.minDate) {
+	        return;
+	      }
+	      this.onPick && this.onPick(val);
+	      this.maxDate = val.maxDate;
+	      this.minDate = val.minDate;
+	      if (!close || this.showTime) return;
+	      this.handleConfirm();
+	    },
+	    changeToToday: function changeToToday() {
+	      this.date = new Date();
+	    },
+	    handleShortcutClick: function handleShortcutClick(shortcut) {
+	      if (shortcut.onClick) {
+	        shortcut.onClick(this);
+	      }
+	    },
+	    resetView: function resetView() {
+	      this.minTimePickerVisible = false;
+	      this.maxTimePickerVisible = false;
+	    },
+	    setTime: function setTime(date, value) {
+	      var oldDate = new Date(date.getTime());
+	      var hour = value.getHours();
+	      var minute = value.getMinutes();
+	      var second = value.getSeconds();
+	      oldDate.setHours(hour);
+	      oldDate.setMinutes(minute);
+	      oldDate.setSeconds(second);
+	      return new Date(oldDate.getTime());
+	    },
+	    handleMinTimePick: function handleMinTimePick(value, visible, first) {
+	      this.minDate = this.minDate || new Date();
+	      if (value) {
+	        this.minDate = this.setTime(this.minDate, value);
+	      }
+
+	      if (!first) {
+	        this.minTimePickerVisible = visible;
+	      }
+	    },
+	    handleMaxTimePick: function handleMaxTimePick(value, visible, first) {
+	      if (!this.maxDate) {
+	        var now = new Date();
+	        if (now >= this.minDate) {
+	          this.maxDate = new Date();
+	        }
+	      }
+
+	      if (this.maxDate && value) {
+	        this.maxDate = this.setTime(this.maxDate, value);
+	      }
+
+	      if (!first) {
+	        this.maxTimePickerVisible = visible;
+	      }
+	    },
+	    prevMonth: function prevMonth() {
+	      this.date = (0, _util.prevMonth)(this.date);
+	    },
+	    nextMonth: function nextMonth() {
+	      this.date = (0, _util.nextMonth)(this.date);
+	    },
+	    nextYear: function nextYear() {
+	      var date = this.date;
+	      date.setFullYear(date.getFullYear() + 1);
+	      this.resetDate();
+	    },
+	    prevYear: function prevYear() {
+	      var date = this.date;
+	      date.setFullYear(date.getFullYear() - 1);
+	      this.resetDate();
+	    },
+	    handleConfirm: function handleConfirm() {
+	      var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+	      this.$emit('pick', [this.minDate, this.maxDate], visible);
+	    },
+	    resetDate: function resetDate() {
+	      this.date = new Date(this.date);
+	    }
+	  },
+
+	  components: { TimePicker: _time2.default, DateTable: _dateTable2.default, ElInput: _input2.default }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+/* 128 */
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": function($event) {
+	        _vm.$emit('dodestroy')
+	      }
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-picker-panel el-date-range-picker",
+	    class: [{
+	      'has-sidebar': _vm.$slots.sidebar || _vm.shortcuts,
+	      'has-time': _vm.showTime
+	    }, _vm.popperClass],
+	    style: ({
+	      width: _vm.width + 'px'
+	    })
+	  }, [_c('div', {
+	    staticClass: "el-picker-panel__body-wrapper"
+	  }, [_vm._t("sidebar"), (_vm.shortcuts) ? _c('div', {
+	    staticClass: "el-picker-panel__sidebar"
+	  }, _vm._l((_vm.shortcuts), function(shortcut) {
+	    return _c('button', {
+	      staticClass: "el-picker-panel__shortcut",
+	      attrs: {
+	        "type": "button"
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleShortcutClick(shortcut)
+	        }
+	      }
+	    }, [_vm._v(_vm._s(shortcut.text))])
+	  })) : _vm._e(), _c('div', {
+	    staticClass: "el-picker-panel__body"
+	  }, [(_vm.showTime) ? _c('div', {
+	    staticClass: "el-date-range-picker__time-header"
+	  }, [_c('span', {
+	    staticClass: "el-date-range-picker__editors-wrap"
+	  }, [_c('span', {
+	    staticClass: "el-date-range-picker__time-picker-wrap"
+	  }, [_c('el-input', {
+	    ref: "minInput",
+	    staticClass: "el-date-range-picker__editor",
+	    attrs: {
+	      "size": "small",
+	      "placeholder": _vm.t('el.datepicker.startDate'),
+	      "value": _vm.minVisibleDate
+	    },
+	    nativeOn: {
+	      "input": function($event) {
+	        _vm.handleDateInput($event, 'min')
+	      },
+	      "change": function($event) {
+	        _vm.handleDateChange($event, 'min')
+	      }
+	    }
+	  })], 1), _c('span', {
+	    staticClass: "el-date-range-picker__time-picker-wrap"
+	  }, [_c('el-input', {
+	    staticClass: "el-date-range-picker__editor",
+	    attrs: {
+	      "size": "small",
+	      "placeholder": _vm.t('el.datepicker.startTime'),
+	      "value": _vm.minVisibleTime
+	    },
+	    on: {
+	      "focus": function($event) {
+	        _vm.minTimePickerVisible = !_vm.minTimePickerVisible
+	      }
+	    },
+	    nativeOn: {
+	      "change": function($event) {
+	        _vm.handleTimeChange($event, 'min')
+	      }
+	    }
+	  }), _c('time-picker', {
+	    ref: "minTimePicker",
+	    attrs: {
+	      "picker-width": _vm.minPickerWidth,
+	      "date": _vm.minDate,
+	      "visible": _vm.minTimePickerVisible
+	    },
+	    on: {
+	      "pick": _vm.handleMinTimePick
+	    }
+	  })], 1)]), _c('span', {
+	    staticClass: "el-icon-arrow-right"
+	  }), _c('span', {
+	    staticClass: "el-date-range-picker__editors-wrap is-right"
+	  }, [_c('span', {
+	    staticClass: "el-date-range-picker__time-picker-wrap"
+	  }, [_c('el-input', {
+	    staticClass: "el-date-range-picker__editor",
+	    attrs: {
+	      "size": "small",
+	      "placeholder": _vm.t('el.datepicker.endDate'),
+	      "value": _vm.maxVisibleDate,
+	      "readonly": !_vm.minDate
+	    },
+	    nativeOn: {
+	      "input": function($event) {
+	        _vm.handleDateInput($event, 'max')
+	      },
+	      "change": function($event) {
+	        _vm.handleDateChange($event, 'max')
+	      }
+	    }
+	  })], 1), _c('span', {
+	    staticClass: "el-date-range-picker__time-picker-wrap"
+	  }, [_c('el-input', {
+	    ref: "maxInput",
+	    staticClass: "el-date-range-picker__editor",
+	    attrs: {
+	      "size": "small",
+	      "placeholder": _vm.t('el.datepicker.endTime'),
+	      "value": _vm.maxVisibleTime,
+	      "readonly": !_vm.minDate
+	    },
+	    on: {
+	      "focus": function($event) {
+	        _vm.minDate && (_vm.maxTimePickerVisible = !_vm.maxTimePickerVisible)
+	      }
+	    },
+	    nativeOn: {
+	      "change": function($event) {
+	        _vm.handleTimeChange($event, 'max')
+	      }
+	    }
+	  }), _c('time-picker', {
+	    ref: "maxTimePicker",
+	    attrs: {
+	      "picker-width": _vm.maxPickerWidth,
+	      "date": _vm.maxDate,
+	      "visible": _vm.maxTimePickerVisible
+	    },
+	    on: {
+	      "pick": _vm.handleMaxTimePick
+	    }
+	  })], 1)])]) : _vm._e(), _c('div', {
+	    staticClass: "el-picker-panel__content el-date-range-picker__content is-left"
+	  }, [_c('div', {
+	    staticClass: "el-date-range-picker__header"
+	  }, [_c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-icon-d-arrow-left",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.prevYear
+	    }
+	  }), _c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-icon-arrow-left",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.prevMonth
+	    }
+	  }), _c('div', [_vm._v(_vm._s(_vm.leftLabel))])]), _c('date-table', {
+	    attrs: {
+	      "selection-mode": "range",
+	      "date": _vm.date,
+	      "year": _vm.leftYear,
+	      "month": _vm.leftMonth,
+	      "min-date": _vm.minDate,
+	      "max-date": _vm.maxDate,
+	      "range-state": _vm.rangeState,
+	      "disabled-date": _vm.disabledDate,
+	      "first-day-of-week": _vm.firstDayOfWeek
+	    },
+	    on: {
+	      "changerange": _vm.handleChangeRange,
+	      "pick": _vm.handleRangePick
+	    }
+	  })], 1), _c('div', {
+	    staticClass: "el-picker-panel__content el-date-range-picker__content is-right"
+	  }, [_c('div', {
+	    staticClass: "el-date-range-picker__header"
+	  }, [_c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-icon-d-arrow-right",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.nextYear
+	    }
+	  }), _c('button', {
+	    staticClass: "el-picker-panel__icon-btn el-icon-arrow-right",
+	    attrs: {
+	      "type": "button"
+	    },
+	    on: {
+	      "click": _vm.nextMonth
+	    }
+	  }), _c('div', [_vm._v(_vm._s(_vm.rightLabel))])]), _c('date-table', {
+	    attrs: {
+	      "selection-mode": "range",
+	      "date": _vm.rightDate,
+	      "year": _vm.rightYear,
+	      "month": _vm.rightMonth,
+	      "min-date": _vm.minDate,
+	      "max-date": _vm.maxDate,
+	      "range-state": _vm.rangeState,
+	      "disabled-date": _vm.disabledDate,
+	      "first-day-of-week": _vm.firstDayOfWeek
+	    },
+	    on: {
+	      "changerange": _vm.handleChangeRange,
+	      "pick": _vm.handleRangePick
+	    }
+	  })], 1)])], 2), (_vm.showTime) ? _c('div', {
+	    staticClass: "el-picker-panel__footer"
+	  }, [_c('a', {
+	    staticClass: "el-picker-panel__link-btn",
+	    on: {
+	      "click": _vm.handleClear
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.clear')))]), _c('button', {
+	    staticClass: "el-picker-panel__btn",
+	    attrs: {
+	      "type": "button",
+	      "disabled": _vm.btnDisabled
+	    },
+	    on: {
+	      "click": function($event) {
+	        _vm.handleConfirm()
+	      }
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])]) : _vm._e()])])
+	},staticRenderFns: []}
+
+/***/ }
+/******/ ]);

+ 370 - 0
static/element-ui/lib/dialog.js

@@ -0,0 +1,370 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(129);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 129:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _component = __webpack_require__(130);
+
+	var _component2 = _interopRequireDefault(_component);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_component2.default.install = function (Vue) {
+	  Vue.component(_component2.default.name, _component2.default);
+	};
+
+	exports.default = _component2.default;
+
+/***/ },
+
+/***/ 130:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(131),
+	  /* template */
+	  __webpack_require__(133),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 131:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _popup = __webpack_require__(132);
+
+	var _popup2 = _interopRequireDefault(_popup);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElDialog',
+
+	  mixins: [_popup2.default, _emitter2.default],
+
+	  props: {
+	    title: {
+	      type: String,
+	      default: ''
+	    },
+
+	    modal: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    modalAppendToBody: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    lockScroll: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    closeOnClickModal: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    closeOnPressEscape: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    showClose: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    size: {
+	      type: String,
+	      default: 'small'
+	    },
+
+	    customClass: {
+	      type: String,
+	      default: ''
+	    },
+
+	    top: {
+	      type: String,
+	      default: '15%'
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      visible: false
+	    };
+	  },
+
+
+	  watch: {
+	    value: function value(val) {
+	      this.visible = val;
+	    },
+	    visible: function visible(val) {
+	      var _this = this;
+
+	      this.$emit('input', val);
+	      if (val) {
+	        this.$emit('open');
+	        this.$el.addEventListener('scroll', this.updatePopper);
+	        this.$nextTick(function () {
+	          _this.$refs.dialog.scrollTop = 0;
+	        });
+	      } else {
+	        this.$el.removeEventListener('scroll', this.updatePopper);
+	        this.$emit('close');
+	      }
+	    }
+	  },
+
+	  computed: {
+	    sizeClass: function sizeClass() {
+	      return 'el-dialog--' + this.size;
+	    },
+	    style: function style() {
+	      return this.size === 'full' ? {} : { 'top': this.top };
+	    }
+	  },
+
+	  methods: {
+	    handleWrapperClick: function handleWrapperClick() {
+	      if (this.closeOnClickModal) {
+	        this.close();
+	      }
+	    },
+	    updatePopper: function updatePopper() {
+	      this.broadcast('ElSelectDropdown', 'updatePopper');
+	      this.broadcast('ElDropdownMenu', 'updatePopper');
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    if (this.value) {
+	      this.rendered = true;
+	      this.open();
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 132:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/popup");
+
+/***/ },
+
+/***/ 133:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "dialog-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-dialog__wrapper",
+	    on: {
+	      "click": function($event) {
+	        if ($event.target !== $event.currentTarget) { return; }
+	        _vm.handleWrapperClick($event)
+	      }
+	    }
+	  }, [_c('div', {
+	    ref: "dialog",
+	    staticClass: "el-dialog",
+	    class: [_vm.sizeClass, _vm.customClass],
+	    style: (_vm.style)
+	  }, [_c('div', {
+	    staticClass: "el-dialog__header"
+	  }, [_vm._t("title", [_c('span', {
+	    staticClass: "el-dialog__title"
+	  }, [_vm._v(_vm._s(_vm.title))])]), _c('div', {
+	    staticClass: "el-dialog__headerbtn"
+	  }, [(_vm.showClose) ? _c('i', {
+	    staticClass: "el-dialog__close el-icon el-icon-close",
+	    on: {
+	      "click": function($event) {
+	        _vm.close()
+	      }
+	    }
+	  }) : _vm._e()])], 2), (_vm.rendered) ? _c('div', {
+	    staticClass: "el-dialog__body"
+	  }, [_vm._t("default")], 2) : _vm._e(), (_vm.$slots.footer) ? _c('div', {
+	    staticClass: "el-dialog__footer"
+	  }, [_vm._t("footer")], 2) : _vm._e()])])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 218 - 0
static/element-ui/lib/dropdown-item.js

@@ -0,0 +1,218 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(139);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 139:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dropdownItem = __webpack_require__(140);
+
+	var _dropdownItem2 = _interopRequireDefault(_dropdownItem);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_dropdownItem2.default.install = function (Vue) {
+	  Vue.component(_dropdownItem2.default.name, _dropdownItem2.default);
+	};
+
+	exports.default = _dropdownItem2.default;
+
+/***/ },
+
+/***/ 140:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(141),
+	  /* template */
+	  __webpack_require__(142),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 141:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElDropdownItem',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    command: String,
+	    disabled: Boolean,
+	    divided: Boolean
+	  },
+
+	  methods: {
+	    handleClick: function handleClick(e) {
+	      this.dispatch('ElDropdown', 'menu-item-click', [this.command, this]);
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 142:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    staticClass: "el-dropdown-menu__item",
+	    class: {
+	      'is-disabled': _vm.disabled,
+	      'el-dropdown-menu__item--divided': _vm.divided
+	    },
+	    on: {
+	      "click": _vm.handleClick
+	    }
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 232 - 0
static/element-ui/lib/dropdown-menu.js

@@ -0,0 +1,232 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(143);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 13:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+
+/***/ 143:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dropdownMenu = __webpack_require__(144);
+
+	var _dropdownMenu2 = _interopRequireDefault(_dropdownMenu);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_dropdownMenu2.default.install = function (Vue) {
+	  Vue.component(_dropdownMenu2.default.name, _dropdownMenu2.default);
+	};
+
+	exports.default = _dropdownMenu2.default;
+
+/***/ },
+
+/***/ 144:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(145),
+	  /* template */
+	  __webpack_require__(146),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 145:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElDropdownMenu',
+
+	  componentName: 'ElDropdownMenu',
+
+	  mixins: [_vuePopper2.default],
+
+	  created: function created() {
+	    var _this = this;
+
+	    this.$on('updatePopper', this.updatePopper);
+	    this.$on('visible', function (val) {
+	      _this.showPopper = val;
+	    });
+	  },
+	  mounted: function mounted() {
+	    this.$parent.popperElm = this.popperElm = this.$el;
+	    this.referenceElm = this.$parent.$el;
+	  },
+
+
+	  watch: {
+	    '$parent.menuAlign': {
+	      immediate: true,
+	      handler: function handler(val) {
+	        this.currentPlacement = 'bottom-' + val;
+	      }
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 146:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": _vm.doDestroy
+	    }
+	  }, [_c('ul', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showPopper),
+	      expression: "showPopper"
+	    }],
+	    staticClass: "el-dropdown-menu"
+	  }, [_vm._t("default")], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 352 - 0
static/element-ui/lib/dropdown.js

@@ -0,0 +1,352 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(134);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 10:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 134:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dropdown = __webpack_require__(135);
+
+	var _dropdown2 = _interopRequireDefault(_dropdown);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_dropdown2.default.install = function (Vue) {
+	  Vue.component(_dropdown2.default.name, _dropdown2.default);
+	};
+
+	exports.default = _dropdown2.default;
+
+/***/ },
+
+/***/ 135:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(136),
+	  /* template */
+	  null,
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 136:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _button = __webpack_require__(137);
+
+	var _button2 = _interopRequireDefault(_button);
+
+	var _buttonGroup = __webpack_require__(138);
+
+	var _buttonGroup2 = _interopRequireDefault(_buttonGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElDropdown',
+
+	  componentName: 'ElDropdown',
+
+	  mixins: [_emitter2.default],
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  components: {
+	    ElButton: _button2.default,
+	    ElButtonGroup: _buttonGroup2.default
+	  },
+
+	  props: {
+	    trigger: {
+	      type: String,
+	      default: 'hover'
+	    },
+	    menuAlign: {
+	      type: String,
+	      default: 'end'
+	    },
+	    type: String,
+	    size: String,
+	    splitButton: Boolean,
+	    hideOnClick: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      timeout: null,
+	      visible: false
+	    };
+	  },
+	  mounted: function mounted() {
+	    this.$on('menu-item-click', this.handleMenuItemClick);
+	    this.initEvent();
+	  },
+
+
+	  watch: {
+	    visible: function visible(val) {
+	      this.broadcast('ElDropdownMenu', 'visible', val);
+	    }
+	  },
+
+	  methods: {
+	    show: function show() {
+	      var _this = this;
+
+	      clearTimeout(this.timeout);
+	      this.timeout = setTimeout(function () {
+	        _this.visible = true;
+	      }, 250);
+	    },
+	    hide: function hide() {
+	      var _this2 = this;
+
+	      clearTimeout(this.timeout);
+	      this.timeout = setTimeout(function () {
+	        _this2.visible = false;
+	      }, 150);
+	    },
+	    handleClick: function handleClick() {
+	      this.visible = !this.visible;
+	    },
+	    initEvent: function initEvent() {
+	      var trigger = this.trigger,
+	          show = this.show,
+	          hide = this.hide,
+	          handleClick = this.handleClick,
+	          splitButton = this.splitButton;
+
+	      var triggerElm = splitButton ? this.$refs.trigger.$el : this.$slots.default[0].elm;
+
+	      if (trigger === 'hover') {
+	        triggerElm.addEventListener('mouseenter', show);
+	        triggerElm.addEventListener('mouseleave', hide);
+
+	        var dropdownElm = this.$slots.dropdown[0].elm;
+
+	        dropdownElm.addEventListener('mouseenter', show);
+	        dropdownElm.addEventListener('mouseleave', hide);
+	      } else if (trigger === 'click') {
+	        triggerElm.addEventListener('click', handleClick);
+	      }
+	    },
+	    handleMenuItemClick: function handleMenuItemClick(command, instance) {
+	      if (this.hideOnClick) {
+	        this.visible = false;
+	      }
+	      this.$emit('command', command, instance);
+	    }
+	  },
+
+	  render: function render(h) {
+	    var _this3 = this;
+
+	    var hide = this.hide,
+	        splitButton = this.splitButton,
+	        type = this.type,
+	        size = this.size;
+
+
+	    var handleClick = function handleClick(_) {
+	      _this3.$emit('click');
+	    };
+
+	    var triggerElm = !splitButton ? this.$slots.default : h(
+	      'el-button-group',
+	      null,
+	      [h(
+	        'el-button',
+	        {
+	          attrs: { type: type, size: size },
+	          nativeOn: {
+	            'click': handleClick
+	          }
+	        },
+	        [this.$slots.default]
+	      ), h(
+	        'el-button',
+	        { ref: 'trigger', attrs: { type: type, size: size },
+	          'class': 'el-dropdown__caret-button' },
+	        [h(
+	          'i',
+	          { 'class': 'el-dropdown__icon el-icon-caret-bottom' },
+	          []
+	        )]
+	      )]
+	    );
+
+	    return h(
+	      'div',
+	      { 'class': 'el-dropdown', directives: [{
+	          name: 'clickoutside',
+	          value: hide
+	        }]
+	      },
+	      [triggerElm, this.$slots.dropdown]
+	    );
+	  }
+	};
+
+/***/ },
+
+/***/ 137:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/button");
+
+/***/ },
+
+/***/ 138:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/button-group");
+
+/***/ }
+
+/******/ });

文件差異過大導致無法顯示
+ 21499 - 0
static/element-ui/lib/element-ui.common.js


+ 449 - 0
static/element-ui/lib/form-item.js

@@ -0,0 +1,449 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(151);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 151:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _formItem = __webpack_require__(152);
+
+	var _formItem2 = _interopRequireDefault(_formItem);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_formItem2.default.install = function (Vue) {
+	  Vue.component(_formItem2.default.name, _formItem2.default);
+	};
+
+	exports.default = _formItem2.default;
+
+/***/ },
+
+/***/ 152:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(153),
+	  /* template */
+	  __webpack_require__(155),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 153:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _asyncValidator = __webpack_require__(154);
+
+	var _asyncValidator2 = _interopRequireDefault(_asyncValidator);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	function noop() {}
+
+	function getPropByPath(obj, path) {
+	  var tempObj = obj;
+	  path = path.replace(/\[(\w+)\]/g, '.$1');
+	  path = path.replace(/^\./, '');
+
+	  var keyArr = path.split('.');
+	  var i = 0;
+
+	  for (var len = keyArr.length; i < len - 1; ++i) {
+	    var key = keyArr[i];
+	    if (key in tempObj) {
+	      tempObj = tempObj[key];
+	    } else {
+	      throw new Error('please transfer a valid prop path to form item!');
+	    }
+	  }
+	  return {
+	    o: tempObj,
+	    k: keyArr[i],
+	    v: tempObj[keyArr[i]]
+	  };
+	}
+
+	exports.default = {
+	  name: 'ElFormItem',
+
+	  componentName: 'ElFormItem',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    label: String,
+	    labelWidth: String,
+	    prop: String,
+	    required: Boolean,
+	    rules: [Object, Array],
+	    error: String,
+	    validateStatus: String,
+	    showMessage: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+	  watch: {
+	    error: function error(value) {
+	      this.validateMessage = value;
+	      this.validateState = value ? 'error' : '';
+	    },
+	    validateStatus: function validateStatus(value) {
+	      this.validateState = value;
+	    }
+	  },
+	  computed: {
+	    labelStyle: function labelStyle() {
+	      var ret = {};
+	      if (this.form.labelPosition === 'top') return ret;
+	      var labelWidth = this.labelWidth || this.form.labelWidth;
+	      if (labelWidth) {
+	        ret.width = labelWidth;
+	      }
+	      return ret;
+	    },
+	    contentStyle: function contentStyle() {
+	      var ret = {};
+	      if (this.form.labelPosition === 'top' || this.form.inline) return ret;
+	      var labelWidth = this.labelWidth || this.form.labelWidth;
+	      if (labelWidth) {
+	        ret.marginLeft = labelWidth;
+	      }
+	      return ret;
+	    },
+	    form: function form() {
+	      var parent = this.$parent;
+	      while (parent.$options.componentName !== 'ElForm') {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    },
+
+	    fieldValue: {
+	      cache: false,
+	      get: function get() {
+	        var model = this.form.model;
+	        if (!model || !this.prop) {
+	          return;
+	        }
+
+	        var path = this.prop;
+	        if (path.indexOf(':') !== -1) {
+	          path = path.replace(/:/, '.');
+	        }
+
+	        return getPropByPath(model, path).v;
+	      }
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      validateState: '',
+	      validateMessage: '',
+	      validateDisabled: false,
+	      validator: {},
+	      isRequired: false
+	    };
+	  },
+
+	  methods: {
+	    validate: function validate(trigger) {
+	      var _this = this;
+
+	      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
+
+	      var rules = this.getFilteredRule(trigger);
+	      if (!rules || rules.length === 0) {
+	        callback();
+	        return true;
+	      }
+
+	      this.validateState = 'validating';
+
+	      var descriptor = {};
+	      descriptor[this.prop] = rules;
+
+	      var validator = new _asyncValidator2.default(descriptor);
+	      var model = {};
+
+	      model[this.prop] = this.fieldValue;
+
+	      validator.validate(model, { firstFields: true }, function (errors, fields) {
+	        _this.validateState = !errors ? 'success' : 'error';
+	        _this.validateMessage = errors ? errors[0].message : '';
+
+	        callback(_this.validateMessage);
+	      });
+	    },
+	    resetField: function resetField() {
+	      this.validateState = '';
+	      this.validateMessage = '';
+
+	      var model = this.form.model;
+	      var value = this.fieldValue;
+	      var path = this.prop;
+	      if (path.indexOf(':') !== -1) {
+	        path = path.replace(/:/, '.');
+	      }
+
+	      var prop = getPropByPath(model, path);
+
+	      if (Array.isArray(value)) {
+	        this.validateDisabled = true;
+	        prop.o[prop.k] = [].concat(this.initialValue);
+	      } else {
+	        this.validateDisabled = true;
+	        prop.o[prop.k] = this.initialValue;
+	      }
+	    },
+	    getRules: function getRules() {
+	      var formRules = this.form.rules;
+	      var selfRuels = this.rules;
+
+	      formRules = formRules ? formRules[this.prop] : [];
+
+	      return [].concat(selfRuels || formRules || []);
+	    },
+	    getFilteredRule: function getFilteredRule(trigger) {
+	      var rules = this.getRules();
+
+	      return rules.filter(function (rule) {
+	        return !rule.trigger || rule.trigger.indexOf(trigger) !== -1;
+	      });
+	    },
+	    onFieldBlur: function onFieldBlur() {
+	      this.validate('blur');
+	    },
+	    onFieldChange: function onFieldChange() {
+	      if (this.validateDisabled) {
+	        this.validateDisabled = false;
+	        return;
+	      }
+
+	      this.validate('change');
+	    }
+	  },
+	  mounted: function mounted() {
+	    var _this2 = this;
+
+	    if (this.prop) {
+	      this.dispatch('ElForm', 'el.form.addField', [this]);
+
+	      var initialValue = this.fieldValue;
+	      if (Array.isArray(initialValue)) {
+	        initialValue = [].concat(initialValue);
+	      }
+	      Object.defineProperty(this, 'initialValue', {
+	        value: initialValue
+	      });
+
+	      var rules = this.getRules();
+
+	      if (rules.length) {
+	        rules.every(function (rule) {
+	          if (rule.required) {
+	            _this2.isRequired = true;
+	            return false;
+	          }
+	        });
+	        this.$on('el.form.blur', this.onFieldBlur);
+	        this.$on('el.form.change', this.onFieldChange);
+	      }
+	    }
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.dispatch('ElForm', 'el.form.removeField', [this]);
+	  }
+	};
+
+/***/ },
+
+/***/ 154:
+/***/ function(module, exports) {
+
+	module.exports = require("async-validator");
+
+/***/ },
+
+/***/ 155:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-form-item",
+	    class: {
+	      'is-error': _vm.validateState === 'error',
+	        'is-validating': _vm.validateState === 'validating',
+	        'is-required': _vm.isRequired || _vm.required
+	    }
+	  }, [(_vm.label) ? _c('label', {
+	    staticClass: "el-form-item__label",
+	    style: (_vm.labelStyle),
+	    attrs: {
+	      "for": _vm.prop
+	    }
+	  }, [_vm._v("\n    " + _vm._s(_vm.label + _vm.form.labelSuffix) + "\n  ")]) : _vm._e(), _c('div', {
+	    staticClass: "el-form-item__content",
+	    style: (_vm.contentStyle)
+	  }, [_vm._t("default"), _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    }
+	  }, [(_vm.validateState === 'error' && _vm.showMessage && _vm.form.showMessage) ? _c('div', {
+	    staticClass: "el-form-item__error"
+	  }, [_vm._v(_vm._s(_vm.validateMessage))]) : _vm._e()])], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 267 - 0
static/element-ui/lib/form.js

@@ -0,0 +1,267 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(147);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 147:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _form = __webpack_require__(148);
+
+	var _form2 = _interopRequireDefault(_form);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_form2.default.install = function (Vue) {
+	  Vue.component(_form2.default.name, _form2.default);
+	};
+
+	exports.default = _form2.default;
+
+/***/ },
+
+/***/ 148:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(149),
+	  /* template */
+	  __webpack_require__(150),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 149:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElForm',
+
+	  componentName: 'ElForm',
+
+	  props: {
+	    model: Object,
+	    rules: Object,
+	    labelPosition: String,
+	    labelWidth: String,
+	    labelSuffix: {
+	      type: String,
+	      default: ''
+	    },
+	    inline: Boolean,
+	    showMessage: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+	  watch: {
+	    rules: function rules() {
+	      this.validate();
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      fields: []
+	    };
+	  },
+	  created: function created() {
+	    var _this = this;
+
+	    this.$on('el.form.addField', function (field) {
+	      if (field) {
+	        _this.fields.push(field);
+	      }
+	    });
+	    /* istanbul ignore next */
+	    this.$on('el.form.removeField', function (field) {
+	      if (field.prop) {
+	        _this.fields.splice(_this.fields.indexOf(field), 1);
+	      }
+	    });
+	  },
+
+	  methods: {
+	    resetFields: function resetFields() {
+	      this.fields.forEach(function (field) {
+	        field.resetField();
+	      });
+	    },
+	    validate: function validate(callback) {
+	      var _this2 = this;
+
+	      var valid = true;
+	      var count = 0;
+	      // 如果需要验证的fields为空,调用验证时立刻返回callback
+	      if (this.fields.length === 0 && callback) {
+	        callback(true);
+	      }
+	      this.fields.forEach(function (field, index) {
+	        field.validate('', function (errors) {
+	          if (errors) {
+	            valid = false;
+	          }
+	          if (typeof callback === 'function' && ++count === _this2.fields.length) {
+	            callback(valid);
+	          }
+	        });
+	      });
+	    },
+	    validateField: function validateField(prop, cb) {
+	      var field = this.fields.filter(function (field) {
+	        return field.prop === prop;
+	      })[0];
+	      if (!field) {
+	        throw new Error('must call validateField with valid prop string!');
+	      }
+
+	      field.validate('', cb);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 150:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('form', {
+	    staticClass: "el-form",
+	    class: [
+	      _vm.labelPosition ? 'el-form--label-' + _vm.labelPosition : '', {
+	        'el-form--inline': _vm.inline
+	      }
+	    ]
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 181 - 0
static/element-ui/lib/icon.js

@@ -0,0 +1,181 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(156);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 156:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _icon = __webpack_require__(157);
+
+	var _icon2 = _interopRequireDefault(_icon);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_icon2.default.install = function (Vue) {
+	  Vue.component(_icon2.default.name, _icon2.default);
+	};
+
+	exports.default = _icon2.default;
+
+/***/ },
+
+/***/ 157:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(158),
+	  /* template */
+	  __webpack_require__(159),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 158:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElIcon',
+
+	  props: {
+	    name: String
+	  }
+	};
+
+/***/ },
+
+/***/ 159:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('i', {
+	    class: 'el-icon-' + _vm.name
+	  })
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

文件差異過大導致無法顯示
+ 0 - 0
static/element-ui/lib/index.js


+ 448 - 0
static/element-ui/lib/input-number.js

@@ -0,0 +1,448 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(166);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 9:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 166:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _inputNumber = __webpack_require__(167);
+
+	var _inputNumber2 = _interopRequireDefault(_inputNumber);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_inputNumber2.default.install = function (Vue) {
+	  Vue.component(_inputNumber2.default.name, _inputNumber2.default);
+	};
+
+	exports.default = _inputNumber2.default;
+
+/***/ },
+
+/***/ 167:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(168),
+	  /* template */
+	  __webpack_require__(169),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 168:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _dom = __webpack_require__(117);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElInputNumber',
+	  directives: {
+	    repeatClick: {
+	      bind: function bind(el, binding, vnode) {
+	        var interval = null;
+	        var startTime = void 0;
+	        var handler = function handler() {
+	          return vnode.context[binding.expression].apply();
+	        };
+	        var clear = function clear() {
+	          if (new Date() - startTime < 100) {
+	            handler();
+	          }
+	          clearInterval(interval);
+	          interval = null;
+	        };
+
+	        (0, _dom.on)(el, 'mousedown', function () {
+	          startTime = new Date();
+	          (0, _dom.once)(document, 'mouseup', clear);
+	          clearInterval(interval);
+	          interval = setInterval(handler, 100);
+	        });
+	      }
+	    }
+	  },
+	  components: {
+	    ElInput: _input2.default
+	  },
+	  props: {
+	    step: {
+	      type: Number,
+	      default: 1
+	    },
+	    max: {
+	      type: Number,
+	      default: Infinity
+	    },
+	    min: {
+	      type: Number,
+	      default: -Infinity
+	    },
+	    value: {
+	      default: 0
+	    },
+	    disabled: Boolean,
+	    size: String,
+	    controls: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      currentValue: 0
+	    };
+	  },
+
+	  watch: {
+	    value: {
+	      immediate: true,
+	      handler: function handler(value) {
+	        var newVal = Number(value);
+	        if (isNaN(newVal)) return;
+	        if (newVal >= this.max) newVal = this.max;
+	        if (newVal <= this.min) newVal = this.min;
+	        this.currentValue = newVal;
+	        this.$emit('input', newVal);
+	      }
+	    }
+	  },
+	  computed: {
+	    minDisabled: function minDisabled() {
+	      return this._decrease(this.value, this.step) < this.min;
+	    },
+	    maxDisabled: function maxDisabled() {
+	      return this._increase(this.value, this.step) > this.max;
+	    },
+	    precision: function precision() {
+	      var value = this.value,
+	          step = this.step,
+	          getPrecision = this.getPrecision;
+
+	      return Math.max(getPrecision(value), getPrecision(step));
+	    }
+	  },
+	  methods: {
+	    toPrecision: function toPrecision(num, precision) {
+	      if (precision === undefined) precision = this.precision;
+	      return parseFloat(parseFloat(Number(num).toFixed(precision)));
+	    },
+	    getPrecision: function getPrecision(value) {
+	      var valueString = value.toString();
+	      var dotPosition = valueString.indexOf('.');
+	      var precision = 0;
+	      if (dotPosition !== -1) {
+	        precision = valueString.length - dotPosition - 1;
+	      }
+	      return precision;
+	    },
+	    _increase: function _increase(val, step) {
+	      if (typeof val !== 'number') return this.currentValue;
+
+	      var precisionFactor = Math.pow(10, this.precision);
+
+	      return this.toPrecision((precisionFactor * val + precisionFactor * step) / precisionFactor);
+	    },
+	    _decrease: function _decrease(val, step) {
+	      if (typeof val !== 'number') return this.currentValue;
+
+	      var precisionFactor = Math.pow(10, this.precision);
+
+	      return this.toPrecision((precisionFactor * val - precisionFactor * step) / precisionFactor);
+	    },
+	    increase: function increase() {
+	      if (this.disabled || this.maxDisabled) return;
+	      var value = this.value || 0;
+	      var newVal = this._increase(value, this.step);
+	      if (newVal > this.max) return;
+	      this.setCurrentValue(newVal);
+	    },
+	    decrease: function decrease() {
+	      if (this.disabled || this.minDisabled) return;
+	      var value = this.value || 0;
+	      var newVal = this._decrease(value, this.step);
+	      if (newVal < this.min) return;
+	      this.setCurrentValue(newVal);
+	    },
+	    handleBlur: function handleBlur() {
+	      this.$refs.input.setCurrentValue(this.currentValue);
+	    },
+	    setCurrentValue: function setCurrentValue(newVal) {
+	      var oldVal = this.currentValue;
+	      if (newVal >= this.max) newVal = this.max;
+	      if (newVal <= this.min) newVal = this.min;
+	      if (oldVal === newVal) return;
+	      this.$emit('change', newVal, oldVal);
+	      this.$emit('input', newVal);
+	      this.currentValue = newVal;
+	    },
+	    handleInput: function handleInput(value) {
+	      var newVal = Number(value);
+	      if (!isNaN(newVal)) {
+	        this.setCurrentValue(newVal);
+	      }
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 169:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-input-number",
+	    class: [
+	      _vm.size ? 'el-input-number--' + _vm.size : '', {
+	        'is-disabled': _vm.disabled
+	      }, {
+	        'is-without-controls': !_vm.controls
+	      }
+	    ]
+	  }, [(_vm.controls) ? _c('span', {
+	    directives: [{
+	      name: "repeat-click",
+	      rawName: "v-repeat-click",
+	      value: (_vm.decrease),
+	      expression: "decrease"
+	    }],
+	    staticClass: "el-input-number__decrease",
+	    class: {
+	      'is-disabled': _vm.minDisabled
+	    }
+	  }, [_c('i', {
+	    staticClass: "el-icon-minus"
+	  })]) : _vm._e(), (_vm.controls) ? _c('span', {
+	    directives: [{
+	      name: "repeat-click",
+	      rawName: "v-repeat-click",
+	      value: (_vm.increase),
+	      expression: "increase"
+	    }],
+	    staticClass: "el-input-number__increase",
+	    class: {
+	      'is-disabled': _vm.maxDisabled
+	    }
+	  }, [_c('i', {
+	    staticClass: "el-icon-plus"
+	  })]) : _vm._e(), _c('el-input', {
+	    ref: "input",
+	    attrs: {
+	      "value": _vm.currentValue,
+	      "disabled": _vm.disabled,
+	      "size": _vm.size,
+	      "max": _vm.max,
+	      "min": _vm.min
+	    },
+	    on: {
+	      "blur": _vm.handleBlur,
+	      "input": _vm.handleInput
+	    },
+	    nativeOn: {
+	      "keydown": [function($event) {
+	        if (_vm._k($event.keyCode, "up", 38)) { return; }
+	        $event.preventDefault();
+	        _vm.increase($event)
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "down", 40)) { return; }
+	        $event.preventDefault();
+	        _vm.decrease($event)
+	      }]
+	    }
+	  }, [(_vm.$slots.prepend) ? _c('template', {
+	    slot: "prepend"
+	  }, [_vm._t("prepend")], 2) : _vm._e(), (_vm.$slots.append) ? _c('template', {
+	    slot: "append"
+	  }, [_vm._t("append")], 2) : _vm._e()], 2)], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 549 - 0
static/element-ui/lib/input.js

@@ -0,0 +1,549 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(160);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 160:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _input = __webpack_require__(161);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_input2.default.install = function (Vue) {
+	  Vue.component(_input2.default.name, _input2.default);
+	};
+
+	exports.default = _input2.default;
+
+/***/ },
+
+/***/ 161:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(162),
+	  /* template */
+	  __webpack_require__(165),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 162:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _calcTextareaHeight = __webpack_require__(163);
+
+	var _calcTextareaHeight2 = _interopRequireDefault(_calcTextareaHeight);
+
+	var _merge = __webpack_require__(164);
+
+	var _merge2 = _interopRequireDefault(_merge);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElInput',
+
+	  componentName: 'ElInput',
+
+	  mixins: [_emitter2.default],
+
+	  data: function data() {
+	    return {
+	      currentValue: this.value,
+	      textareaCalcStyle: {}
+	    };
+	  },
+
+
+	  props: {
+	    value: [String, Number],
+	    placeholder: String,
+	    size: String,
+	    resize: String,
+	    readonly: Boolean,
+	    autofocus: Boolean,
+	    icon: String,
+	    disabled: Boolean,
+	    type: {
+	      type: String,
+	      default: 'text'
+	    },
+	    name: String,
+	    autosize: {
+	      type: [Boolean, Object],
+	      default: false
+	    },
+	    rows: {
+	      type: Number,
+	      default: 2
+	    },
+	    autoComplete: {
+	      type: String,
+	      default: 'off'
+	    },
+	    form: String,
+	    maxlength: Number,
+	    minlength: Number,
+	    max: {},
+	    min: {},
+	    step: {},
+	    validateEvent: {
+	      type: Boolean,
+	      default: true
+	    },
+	    onIconClick: Function
+	  },
+
+	  computed: {
+	    validating: function validating() {
+	      return this.$parent.validateState === 'validating';
+	    },
+	    textareaStyle: function textareaStyle() {
+	      return (0, _merge2.default)({}, this.textareaCalcStyle, { resize: this.resize });
+	    }
+	  },
+
+	  watch: {
+	    'value': function value(val, oldValue) {
+	      this.setCurrentValue(val);
+	    }
+	  },
+
+	  methods: {
+	    handleBlur: function handleBlur(event) {
+	      this.$emit('blur', event);
+	      if (this.validateEvent) {
+	        this.dispatch('ElFormItem', 'el.form.blur', [this.currentValue]);
+	      }
+	    },
+	    inputSelect: function inputSelect() {
+	      this.$refs.input.select();
+	    },
+	    resizeTextarea: function resizeTextarea() {
+	      if (this.$isServer) return;
+	      var autosize = this.autosize,
+	          type = this.type;
+
+	      if (!autosize || type !== 'textarea') return;
+	      var minRows = autosize.minRows;
+	      var maxRows = autosize.maxRows;
+
+	      this.textareaCalcStyle = (0, _calcTextareaHeight2.default)(this.$refs.textarea, minRows, maxRows);
+	    },
+	    handleFocus: function handleFocus(event) {
+	      this.$emit('focus', event);
+	    },
+	    handleInput: function handleInput(event) {
+	      var value = event.target.value;
+	      this.$emit('input', value);
+	      this.setCurrentValue(value);
+	      this.$emit('change', value);
+	    },
+	    handleIconClick: function handleIconClick(event) {
+	      if (this.onIconClick) {
+	        this.onIconClick(event);
+	      }
+	      this.$emit('click', event);
+	    },
+	    setCurrentValue: function setCurrentValue(value) {
+	      var _this = this;
+
+	      if (value === this.currentValue) return;
+	      this.$nextTick(function (_) {
+	        _this.resizeTextarea();
+	      });
+	      this.currentValue = value;
+	      if (this.validateEvent) {
+	        this.dispatch('ElFormItem', 'el.form.change', [value]);
+	      }
+	    }
+	  },
+
+	  created: function created() {
+	    this.$on('inputSelect', this.inputSelect);
+	  },
+	  mounted: function mounted() {
+	    this.resizeTextarea();
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 163:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.default = calcTextareaHeight;
+	var hiddenTextarea = void 0;
+
+	var HIDDEN_STYLE = '\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n';
+
+	var CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];
+
+	function calculateNodeStyling(node) {
+	  var style = window.getComputedStyle(node);
+
+	  var boxSizing = style.getPropertyValue('box-sizing');
+
+	  var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
+
+	  var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
+
+	  var contextStyle = CONTEXT_STYLE.map(function (name) {
+	    return name + ':' + style.getPropertyValue(name);
+	  }).join(';');
+
+	  return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };
+	}
+
+	function calcTextareaHeight(targetNode) {
+	  var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+	  var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+
+	  if (!hiddenTextarea) {
+	    hiddenTextarea = document.createElement('textarea');
+	    document.body.appendChild(hiddenTextarea);
+	  }
+
+	  var _calculateNodeStyling = calculateNodeStyling(targetNode),
+	      paddingSize = _calculateNodeStyling.paddingSize,
+	      borderSize = _calculateNodeStyling.borderSize,
+	      boxSizing = _calculateNodeStyling.boxSizing,
+	      contextStyle = _calculateNodeStyling.contextStyle;
+
+	  hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);
+	  hiddenTextarea.value = targetNode.value || targetNode.placeholder || '';
+
+	  var height = hiddenTextarea.scrollHeight;
+
+	  if (boxSizing === 'border-box') {
+	    height = height + borderSize;
+	  } else if (boxSizing === 'content-box') {
+	    height = height - paddingSize;
+	  }
+
+	  hiddenTextarea.value = '';
+	  var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
+
+	  if (minRows !== null) {
+	    var minHeight = singleRowHeight * minRows;
+	    if (boxSizing === 'border-box') {
+	      minHeight = minHeight + paddingSize + borderSize;
+	    }
+	    height = Math.max(minHeight, height);
+	  }
+	  if (maxRows !== null) {
+	    var maxHeight = singleRowHeight * maxRows;
+	    if (boxSizing === 'border-box') {
+	      maxHeight = maxHeight + paddingSize + borderSize;
+	    }
+	    height = Math.min(maxHeight, height);
+	  }
+
+	  return { height: height + 'px' };
+	};
+
+/***/ },
+
+/***/ 164:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/merge");
+
+/***/ },
+
+/***/ 165:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    class: [
+	      _vm.type === 'textarea' ? 'el-textarea' : 'el-input',
+	      _vm.size ? 'el-input--' + _vm.size : '', {
+	        'is-disabled': _vm.disabled,
+	        'el-input-group': _vm.$slots.prepend || _vm.$slots.append,
+	        'el-input-group--append': _vm.$slots.append,
+	        'el-input-group--prepend': _vm.$slots.prepend
+	      }
+	    ]
+	  }, [(_vm.type !== 'textarea') ? [(_vm.$slots.prepend) ? _c('div', {
+	    staticClass: "el-input-group__prepend"
+	  }, [_vm._t("prepend")], 2) : _vm._e(), _vm._t("icon", [(_vm.icon) ? _c('i', {
+	    staticClass: "el-input__icon",
+	    class: [
+	      'el-icon-' + _vm.icon,
+	      _vm.onIconClick ? 'is-clickable' : ''
+	    ],
+	    on: {
+	      "click": _vm.handleIconClick
+	    }
+	  }) : _vm._e()]), (_vm.type !== 'textarea') ? _c('input', {
+	    ref: "input",
+	    staticClass: "el-input__inner",
+	    attrs: {
+	      "type": _vm.type,
+	      "name": _vm.name,
+	      "placeholder": _vm.placeholder,
+	      "disabled": _vm.disabled,
+	      "readonly": _vm.readonly,
+	      "maxlength": _vm.maxlength,
+	      "minlength": _vm.minlength,
+	      "autocomplete": _vm.autoComplete,
+	      "autofocus": _vm.autofocus,
+	      "min": _vm.min,
+	      "max": _vm.max,
+	      "step": _vm.step,
+	      "form": _vm.form
+	    },
+	    domProps: {
+	      "value": _vm.currentValue
+	    },
+	    on: {
+	      "input": _vm.handleInput,
+	      "focus": _vm.handleFocus,
+	      "blur": _vm.handleBlur
+	    }
+	  }) : _vm._e(), (_vm.validating) ? _c('i', {
+	    staticClass: "el-input__icon el-icon-loading"
+	  }) : _vm._e(), (_vm.$slots.append) ? _c('div', {
+	    staticClass: "el-input-group__append"
+	  }, [_vm._t("append")], 2) : _vm._e()] : _c('textarea', {
+	    ref: "textarea",
+	    staticClass: "el-textarea__inner",
+	    style: (_vm.textareaStyle),
+	    attrs: {
+	      "name": _vm.name,
+	      "placeholder": _vm.placeholder,
+	      "disabled": _vm.disabled,
+	      "readonly": _vm.readonly,
+	      "rows": _vm.rows,
+	      "form": _vm.form,
+	      "autofocus": _vm.autofocus,
+	      "maxlength": _vm.maxlength,
+	      "minlength": _vm.minlength
+	    },
+	    domProps: {
+	      "value": _vm.currentValue
+	    },
+	    on: {
+	      "input": _vm.handleInput,
+	      "focus": _vm.handleFocus,
+	      "blur": _vm.handleBlur
+	    }
+	  })], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 514 - 0
static/element-ui/lib/loading.js

@@ -0,0 +1,514 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(170);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 164:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/merge");
+
+/***/ },
+
+/***/ 170:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _directive = __webpack_require__(171);
+
+	var _directive2 = _interopRequireDefault(_directive);
+
+	var _index = __webpack_require__(175);
+
+	var _index2 = _interopRequireDefault(_index);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  install: function install(Vue) {
+	    Vue.use(_directive2.default);
+	    Vue.prototype.$loading = _index2.default;
+	  },
+
+	  directive: _directive2.default,
+	  service: _index2.default
+	};
+
+/***/ },
+
+/***/ 171:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _dom = __webpack_require__(117);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var Mask = _vue2.default.extend(__webpack_require__(172));
+
+	exports.install = function (Vue) {
+	  if (Vue.prototype.$isServer) return;
+	  var toggleLoading = function toggleLoading(el, binding) {
+	    if (binding.value) {
+	      Vue.nextTick(function () {
+	        if (binding.modifiers.fullscreen) {
+	          el.originalPosition = document.body.style.position;
+	          el.originalOverflow = document.body.style.overflow;
+
+	          (0, _dom.addClass)(el.mask, 'is-fullscreen');
+	          insertDom(document.body, el, binding);
+	        } else {
+	          (0, _dom.removeClass)(el.mask, 'is-fullscreen');
+
+	          if (binding.modifiers.body) {
+	            el.originalPosition = document.body.style.position;
+
+	            ['top', 'left'].forEach(function (property) {
+	              var scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
+	              el.maskStyle[property] = el.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] + 'px';
+	            });
+	            ['height', 'width'].forEach(function (property) {
+	              el.maskStyle[property] = el.getBoundingClientRect()[property] + 'px';
+	            });
+
+	            insertDom(document.body, el, binding);
+	          } else {
+	            el.originalPosition = el.style.position;
+	            insertDom(el, el, binding);
+	          }
+	        }
+	      });
+	    } else {
+	      if (el.domVisible) {
+	        el.instance.$on('after-leave', function (_) {
+	          el.domVisible = false;
+	          if (binding.modifiers.fullscreen && el.originalOverflow !== 'hidden') {
+	            document.body.style.overflow = el.originalOverflow;
+	          }
+	          if (binding.modifiers.fullscreen || binding.modifiers.body) {
+	            document.body.style.position = el.originalPosition;
+	          } else {
+	            el.style.position = el.originalPosition;
+	          }
+	        });
+	        el.instance.visible = false;
+	      }
+	    }
+	  };
+	  var insertDom = function insertDom(parent, el, binding) {
+	    if (!el.domVisible) {
+	      Object.keys(el.maskStyle).forEach(function (property) {
+	        el.mask.style[property] = el.maskStyle[property];
+	      });
+
+	      if (el.originalPosition !== 'absolute') {
+	        parent.style.position = 'relative';
+	      }
+	      if (binding.modifiers.fullscreen && binding.modifiers.lock) {
+	        parent.style.overflow = 'hidden';
+	      }
+	      el.domVisible = true;
+
+	      parent.appendChild(el.mask);
+	      Vue.nextTick(function () {
+	        el.instance.visible = true;
+	      });
+	      el.domInserted = true;
+	    }
+	  };
+
+	  Vue.directive('loading', {
+	    bind: function bind(el, binding) {
+	      var mask = new Mask({
+	        el: document.createElement('div'),
+	        data: {
+	          text: el.getAttribute('element-loading-text'),
+	          fullscreen: !!binding.modifiers.fullscreen
+	        }
+	      });
+	      el.instance = mask;
+	      el.mask = mask.$el;
+	      el.maskStyle = {};
+
+	      toggleLoading(el, binding);
+	    },
+
+	    update: function update(el, binding) {
+	      el.instance.setText(el.getAttribute('element-loading-text'));
+	      if (binding.oldValue !== binding.value) {
+	        toggleLoading(el, binding);
+	      }
+	    },
+
+	    unbind: function unbind(el, binding) {
+	      if (el.domInserted) {
+	        if (binding.modifiers.fullscreen || binding.modifiers.body) {
+	          document.body.removeChild(el.mask);
+	        } else {
+	          el.mask && el.mask.parentNode && el.mask.parentNode.removeChild(el.mask);
+	        }
+	      }
+	    }
+	  });
+	};
+
+/***/ },
+
+/***/ 172:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(173),
+	  /* template */
+	  __webpack_require__(174),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 173:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  data: function data() {
+	    return {
+	      text: null,
+	      fullscreen: true,
+	      visible: false,
+	      customClass: ''
+	    };
+	  },
+
+
+	  methods: {
+	    handleAfterLeave: function handleAfterLeave() {
+	      this.$emit('after-leave');
+	    },
+	    setText: function setText(text) {
+	      this.text = text;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 174:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-loading-fade"
+	    },
+	    on: {
+	      "after-leave": _vm.handleAfterLeave
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-loading-mask",
+	    class: [_vm.customClass, {
+	      'is-fullscreen': _vm.fullscreen
+	    }]
+	  }, [_c('div', {
+	    staticClass: "el-loading-spinner"
+	  }, [_c('svg', {
+	    staticClass: "circular",
+	    attrs: {
+	      "viewBox": "25 25 50 50"
+	    }
+	  }, [_c('circle', {
+	    staticClass: "path",
+	    attrs: {
+	      "cx": "50",
+	      "cy": "50",
+	      "r": "20",
+	      "fill": "none"
+	    }
+	  })]), (_vm.text) ? _c('p', {
+	    staticClass: "el-loading-text"
+	  }, [_vm._v(_vm._s(_vm.text))]) : _vm._e()])])])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 175:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _loading = __webpack_require__(172);
+
+	var _loading2 = _interopRequireDefault(_loading);
+
+	var _merge = __webpack_require__(164);
+
+	var _merge2 = _interopRequireDefault(_merge);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var LoadingConstructor = _vue2.default.extend(_loading2.default);
+
+	var defaults = {
+	  text: null,
+	  fullscreen: true,
+	  body: false,
+	  lock: false,
+	  customClass: ''
+	};
+
+	var fullscreenLoading = void 0;
+
+	LoadingConstructor.prototype.originalPosition = '';
+	LoadingConstructor.prototype.originalOverflow = '';
+
+	LoadingConstructor.prototype.close = function () {
+	  var _this = this;
+
+	  if (this.fullscreen && this.originalOverflow !== 'hidden') {
+	    document.body.style.overflow = this.originalOverflow;
+	  }
+	  if (this.fullscreen || this.body) {
+	    document.body.style.position = this.originalPosition;
+	  } else {
+	    this.target.style.position = this.originalPosition;
+	  }
+	  if (this.fullscreen) {
+	    fullscreenLoading = undefined;
+	  }
+	  this.$on('after-leave', function (_) {
+	    _this.$el && _this.$el.parentNode && _this.$el.parentNode.removeChild(_this.$el);
+	    _this.$destroy();
+	  });
+	  this.visible = false;
+	};
+
+	var addStyle = function addStyle(options, parent, instance) {
+	  var maskStyle = {};
+	  if (options.fullscreen) {
+	    instance.originalPosition = document.body.style.position;
+	    instance.originalOverflow = document.body.style.overflow;
+	  } else if (options.body) {
+	    instance.originalPosition = document.body.style.position;
+	    ['top', 'left'].forEach(function (property) {
+	      var scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
+	      maskStyle[property] = options.target.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] + 'px';
+	    });
+	    ['height', 'width'].forEach(function (property) {
+	      maskStyle[property] = options.target.getBoundingClientRect()[property] + 'px';
+	    });
+	  } else {
+	    instance.originalPosition = parent.style.position;
+	  }
+	  Object.keys(maskStyle).forEach(function (property) {
+	    instance.$el.style[property] = maskStyle[property];
+	  });
+	};
+
+	var Loading = function Loading() {
+	  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+	  if (_vue2.default.prototype.$isServer) return;
+	  options = (0, _merge2.default)({}, defaults, options);
+	  if (typeof options.target === 'string') {
+	    options.target = document.querySelector(options.target);
+	  }
+	  options.target = options.target || document.body;
+	  if (options.target !== document.body) {
+	    options.fullscreen = false;
+	  } else {
+	    options.body = true;
+	  }
+	  if (options.fullscreen && fullscreenLoading) {
+	    return fullscreenLoading;
+	  }
+
+	  var parent = options.body ? document.body : options.target;
+	  var instance = new LoadingConstructor({
+	    el: document.createElement('div'),
+	    data: options
+	  });
+
+	  addStyle(options, parent, instance);
+	  if (instance.originalPosition !== 'absolute') {
+	    parent.style.position = 'relative';
+	  }
+	  if (options.fullscreen && options.lock) {
+	    parent.style.overflow = 'hidden';
+	  }
+	  parent.appendChild(instance.$el);
+	  _vue2.default.nextTick(function () {
+	    instance.visible = true;
+	  });
+	  if (options.fullscreen) {
+	    fullscreenLoading = instance;
+	  }
+	  return instance;
+	};
+
+	exports.default = Loading;
+
+/***/ }
+
+/******/ });

+ 56 - 0
static/element-ui/lib/locale/format.js

@@ -0,0 +1,56 @@
+'use strict';
+
+exports.__esModule = true;
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+exports.default = function (Vue) {
+
+  /**
+   * template
+   *
+   * @param {String} string
+   * @param {Array} ...args
+   * @return {String}
+   */
+
+  function template(string) {
+    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+      args[_key - 1] = arguments[_key];
+    }
+
+    if (args.length === 1 && _typeof(args[0]) === 'object') {
+      args = args[0];
+    }
+
+    if (!args || !args.hasOwnProperty) {
+      args = {};
+    }
+
+    return string.replace(RE_NARGS, function (match, prefix, i, index) {
+      var result = void 0;
+
+      if (string[index - 1] === '{' && string[index + match.length] === '}') {
+        return i;
+      } else {
+        result = (0, _util.hasOwn)(args, i) ? args[i] : null;
+        if (result === null || result === undefined) {
+          return '';
+        }
+
+        return result;
+      }
+    });
+  }
+
+  return template;
+};
+
+var _util = require('element-ui/lib/utils/util');
+
+var RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
+/**
+ *  String format template
+ *  - Inspired:
+ *    https://github.com/Matt-Esch/string-template/index.js
+ */

+ 63 - 0
static/element-ui/lib/locale/index.js

@@ -0,0 +1,63 @@
+'use strict';
+
+exports.__esModule = true;
+exports.i18n = exports.use = exports.t = undefined;
+
+var _zhCN = require('element-ui/lib/locale/lang/zh-CN');
+
+var _zhCN2 = _interopRequireDefault(_zhCN);
+
+var _vue = require('vue');
+
+var _vue2 = _interopRequireDefault(_vue);
+
+var _deepmerge = require('deepmerge');
+
+var _deepmerge2 = _interopRequireDefault(_deepmerge);
+
+var _format = require('./format');
+
+var _format2 = _interopRequireDefault(_format);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var format = (0, _format2.default)(_vue2.default);
+var lang = _zhCN2.default;
+var merged = false;
+var i18nHandler = function i18nHandler() {
+  var vuei18n = Object.getPrototypeOf(this || _vue2.default).$t;
+  if (typeof vuei18n === 'function') {
+    if (!merged) {
+      merged = true;
+      _vue2.default.locale(_vue2.default.config.lang, (0, _deepmerge2.default)(lang, _vue2.default.locale(_vue2.default.config.lang) || {}, { clone: true }));
+    }
+    return vuei18n.apply(this, arguments);
+  }
+};
+
+var t = exports.t = function t(path, options) {
+  var value = i18nHandler.apply(this, arguments);
+  if (value !== null && value !== undefined) return value;
+
+  var array = path.split('.');
+  var current = lang;
+
+  for (var i = 0, j = array.length; i < j; i++) {
+    var property = array[i];
+    value = current[property];
+    if (i === j - 1) return format(value, options);
+    if (!value) return '';
+    current = value;
+  }
+  return '';
+};
+
+var use = exports.use = function use(l) {
+  lang = l || lang;
+};
+
+var i18n = exports.i18n = function i18n(fn) {
+  i18nHandler = fn || i18nHandler;
+};
+
+exports.default = { use: use, t: t, i18n: i18n };

+ 97 - 0
static/element-ui/lib/locale/lang/bg.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Изчисти'
+    },
+    datepicker: {
+      now: 'Сега',
+      today: 'Днес',
+      cancel: 'Откажи',
+      clear: 'Изчисти',
+      confirm: 'ОК',
+      selectDate: 'Избери дата',
+      selectTime: 'Избери час',
+      startDate: 'Начална дата',
+      startTime: 'Начален час',
+      endDate: 'Крайна дата',
+      endTime: 'Краен час',
+      year: '',
+      month1: 'Януари',
+      month2: 'Февруари',
+      month3: 'Март',
+      month4: 'Април',
+      month5: 'Май',
+      month6: 'Юни',
+      month7: 'Юли',
+      month8: 'Август',
+      month9: 'Септември',
+      month10: 'Октомври',
+      month11: 'Ноември',
+      month12: 'Декември',
+      // week: 'Седмица',
+      weeks: {
+        sun: 'Нед',
+        mon: 'Пон',
+        tue: 'Вто',
+        wed: 'Сря',
+        thu: 'Чет',
+        fri: 'Пет',
+        sat: 'Съб'
+      },
+      months: {
+        jan: 'Яну',
+        feb: 'Фев',
+        mar: 'Мар',
+        apr: 'Апр',
+        may: 'Май',
+        jun: 'Юни',
+        jul: 'Юли',
+        aug: 'Авг',
+        sep: 'Сеп',
+        oct: 'Окт',
+        nov: 'Ное',
+        dec: 'Дек'
+      }
+    },
+    select: {
+      loading: 'Зареждане',
+      noMatch: 'Няма намерени',
+      noData: 'Няма данни',
+      placeholder: 'Избери'
+    },
+    cascader: {
+      noMatch: 'Няма намерени',
+      placeholder: 'Избери'
+    },
+    pagination: {
+      goto: 'Иди на',
+      pagesize: '/страница',
+      total: 'Общо {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Съобщение',
+      confirm: 'ОК',
+      cancel: 'Откажи',
+      error: 'Невалидни данни'
+    },
+    upload: {
+      delete: 'Изтрий',
+      preview: 'Прегледай',
+      continue: 'Продължи'
+    },
+    table: {
+      emptyText: 'Няма данни',
+      confirmFilter: 'Потвърди',
+      resetFilter: 'Изчисти',
+      clearFilter: 'Всички'
+    },
+    tree: {
+      emptyText: 'Няма данни'
+    }
+  }
+};

+ 96 - 0
static/element-ui/lib/locale/lang/da.js

@@ -0,0 +1,96 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Ryd'
+    },
+    datepicker: {
+      now: 'Nu',
+      today: 'I dag',
+      cancel: 'Annuller',
+      clear: 'Ryd',
+      confirm: 'OK',
+      selectDate: 'Vælg dato',
+      selectTime: 'Vælg tidspunkt',
+      startDate: 'Startdato',
+      startTime: 'Starttidspunkt',
+      endDate: 'Slutdato',
+      endTime: 'Sluttidspunkt',
+      year: 'År',
+      month1: 'Januar',
+      month2: 'Februar',
+      month3: 'Marts',
+      month4: 'April',
+      month5: 'Maj',
+      month6: 'Juni',
+      month7: 'Juli',
+      month8: 'August',
+      month9: 'September',
+      month10: 'Oktober',
+      month11: 'November',
+      month12: 'December',
+      week: 'uge',
+      weeks: {
+        sun: 'Søn',
+        mon: 'Man',
+        tue: 'Tir',
+        wed: 'Ons',
+        thu: 'Tor',
+        fri: 'Fre',
+        sat: 'Lør'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Maj',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Dec'
+      }
+    },
+    select: {
+      loading: 'Henter',
+      noMatch: 'Ingen matchende data',
+      noData: 'Ingen data',
+      placeholder: 'Vælg'
+    },
+    cascader: {
+      noMatch: 'Ingen matchende data',
+      placeholder: 'Vælg'
+    },
+    pagination: {
+      goto: 'Gå til',
+      pagesize: '/side',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'OK',
+      cancel: 'Annuller',
+      error: 'Ugyldig input'
+    },
+    upload: {
+      delete: 'Slet',
+      preview: 'Forhåndsvisning',
+      continue: 'Fortsæt'
+    },
+    table: {
+      emptyText: 'Ingen data',
+      confirmFilter: 'Bekræft',
+      resetFilter: 'Nulstil',
+      clearFilter: 'Alle'
+    },
+    tree: {
+      emptyText: 'Ingen data'
+    }
+  }
+};

+ 98 - 0
static/element-ui/lib/locale/lang/de.js

@@ -0,0 +1,98 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Leeren'
+    },
+    datepicker: {
+      now: 'Jetzt',
+      today: 'Heute',
+      cancel: 'Abbrechen',
+      clear: 'Leeren',
+      confirm: 'OK',
+      selectDate: 'Datum wählen',
+      selectTime: 'Uhrzeit wählen',
+      startDate: 'Startdatum',
+      startTime: 'Startzeit',
+      endDate: 'Enddatum',
+      endTime: 'Endzeit',
+      day: 'Tag',
+      week: 'Woche',
+      month: 'Monat',
+      year: 'Jahr',
+      month1: 'Januar',
+      month2: 'Februar',
+      month3: 'März',
+      month4: 'April',
+      month5: 'Mai',
+      month6: 'Juni',
+      month7: 'Juli',
+      month8: 'August',
+      month9: 'September',
+      month10: 'Oktober',
+      month11: 'November',
+      month12: 'Dezember',
+      weeks: {
+        sun: 'So',
+        mon: 'Mo',
+        tue: 'Di',
+        wed: 'Mi',
+        thu: 'Do',
+        fri: 'Fr',
+        sat: 'Sa'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mär',
+        apr: 'Apr',
+        may: 'Mai',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Dez'
+      }
+    },
+    select: {
+      loading: 'Lädt.',
+      noMatch: 'Nichts gefunden.',
+      noData: 'Keine Datei',
+      placeholder: 'Datei wählen'
+    },
+    cascader: {
+      noMatch: 'Nichts gefunden.',
+      placeholder: 'Datei wählen'
+    },
+    pagination: {
+      goto: 'Gehe zu',
+      pagesize: 'pro Seite',
+      total: 'Gesamt {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'OK',
+      cancel: 'Abbrechen',
+      error: 'Fehler'
+    },
+    upload: {
+      delete: 'Löschen',
+      preview: 'Vorschau',
+      continue: 'Fortsetzen'
+    },
+    table: {
+      emptyText: 'Keine Daten',
+      confirmFilter: 'Anwenden',
+      resetFilter: 'Zurücksetzen',
+      clearFilter: 'Alles '
+    },
+    tree: {
+      emptyText: 'Keine Daten'
+    }
+  }
+};

+ 93 - 0
static/element-ui/lib/locale/lang/el.js

@@ -0,0 +1,93 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Καθαρισμός'
+    },
+    datepicker: {
+      now: 'Τώρα',
+      today: 'Σήμερα',
+      cancel: 'Ακύρωση',
+      clear: 'Καθαρισμός',
+      confirm: 'OK',
+      selectDate: 'Επιλέξτε ημέρα',
+      selectTime: 'Επιλέξτε ώρα',
+      startDate: 'Ημερομηνία Έναρξης',
+      startTime: 'Ωρα Έναρξης',
+      endDate: 'Ημερομηνία Λήξης',
+      endTime: 'Ωρα Λήξης',
+      year: 'Έτος',
+      month1: 'Ιανουάριος',
+      month2: 'Φεβρουάριος',
+      month3: 'Μάρτιος',
+      month4: 'Απρίλιος',
+      month5: 'Μάιος',
+      month6: 'Ιούνιος',
+      month7: 'Ιούλιος',
+      month8: 'Αύγουστος',
+      month9: 'Σεπτέμβριος',
+      month10: 'Οκτώβριος',
+      month11: 'Νοέμβριος',
+      month12: 'Δεκέμβριος',
+      // week: 'εβδομάδα',
+      weeks: {
+        sun: 'Κυρ',
+        mon: 'Δευ',
+        tue: 'Τρι',
+        wed: 'Τετ',
+        thu: 'Πεμ',
+        fri: 'Παρ',
+        sat: 'Σαβ'
+      },
+      months: {
+        jan: 'Ιαν',
+        feb: 'Φεβ',
+        mar: 'Μαρ',
+        apr: 'Απρ',
+        may: 'Μαϊ',
+        jun: 'Ιουν',
+        jul: 'Ιουλ',
+        aug: 'Αυγ',
+        sep: 'Σεπ',
+        oct: 'Οκτ',
+        nov: 'Νοε',
+        dec: 'Δεκ'
+      }
+    },
+    select: {
+      loading: 'Φόρτωση',
+      noMatch: 'Δεν βρέθηκαν αποτελέσματα',
+      noData: 'Χωρίς δεδομένα',
+      placeholder: 'Επιλογή'
+    },
+    pagination: {
+      goto: 'Μετάβαση σε',
+      pagesize: '/σελίδα',
+      total: 'Σύνολο {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Μήνυμα',
+      confirm: 'OK',
+      cancel: 'Ακύρωση',
+      error: 'Άκυρη εισαγωγή'
+    },
+    upload: {
+      delete: 'Διαγραφή',
+      preview: 'Προεπισκόπηση',
+      continue: 'Συνέχεια'
+    },
+    table: {
+      emptyText: 'Χωρίς Δεδομένα',
+      confirmFilter: 'Επιβεβαίωση',
+      resetFilter: 'Επαναφορά',
+      clearFilter: 'Όλα'
+    },
+    tree: {
+      emptyText: 'Χωρίς Δεδομένα'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/en.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Clear'
+    },
+    datepicker: {
+      now: 'Now',
+      today: 'Today',
+      cancel: 'Cancel',
+      clear: 'Clear',
+      confirm: 'OK',
+      selectDate: 'Select date',
+      selectTime: 'Select time',
+      startDate: 'Start Date',
+      startTime: 'Start Time',
+      endDate: 'End Date',
+      endTime: 'End Time',
+      year: '',
+      month1: 'Jan',
+      month2: 'Feb',
+      month3: 'Mar',
+      month4: 'Apr',
+      month5: 'May',
+      month6: 'Jun',
+      month7: 'Jul',
+      month8: 'Aug',
+      month9: 'Sep',
+      month10: 'Oct',
+      month11: 'Nov',
+      month12: 'Dec',
+      // week: 'week',
+      weeks: {
+        sun: 'Sun',
+        mon: 'Mon',
+        tue: 'Tue',
+        wed: 'Wed',
+        thu: 'Thu',
+        fri: 'Fri',
+        sat: 'Sat'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'May',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Oct',
+        nov: 'Nov',
+        dec: 'Dec'
+      }
+    },
+    select: {
+      loading: 'Loading',
+      noMatch: 'No matching data',
+      noData: 'No data',
+      placeholder: 'Select'
+    },
+    cascader: {
+      noMatch: 'No matching data',
+      placeholder: 'Select'
+    },
+    pagination: {
+      goto: 'Go to',
+      pagesize: '/page',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Message',
+      confirm: 'OK',
+      cancel: 'Cancel',
+      error: 'Illegal input'
+    },
+    upload: {
+      delete: 'Delete',
+      preview: 'Preview',
+      continue: 'Continue'
+    },
+    table: {
+      emptyText: 'No Data',
+      confirmFilter: 'Confirm',
+      resetFilter: 'Reset',
+      clearFilter: 'All'
+    },
+    tree: {
+      emptyText: 'No Data'
+    }
+  }
+};

+ 96 - 0
static/element-ui/lib/locale/lang/es.js

@@ -0,0 +1,96 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'Confirmar',
+      clear: 'Limpiar'
+    },
+    datepicker: {
+      now: 'Ahora',
+      today: 'Hoy',
+      cancel: 'Cancelar',
+      clear: 'Limpiar',
+      confirm: 'Confirmar',
+      selectDate: 'Seleccionar fecha',
+      selectTime: 'Seleccionar hora',
+      startDate: 'Fecha de Inicio',
+      startTime: 'Hora de Inicio',
+      endDate: 'Fecha Final',
+      endTime: 'Hora Final',
+      year: 'Año',
+      month1: 'Enero',
+      month2: 'Febrero',
+      month3: 'Marzo',
+      month4: 'Abril',
+      month5: 'Mayo',
+      month6: 'Junio',
+      month7: 'Julio',
+      month8: 'Agosto',
+      month9: 'Septiembre',
+      month10: 'Octubre',
+      month11: 'Noviembre',
+      month12: 'Diciembre',
+      // week: 'semana',
+      weeks: {
+        sun: 'Dom',
+        mon: 'Lun',
+        tue: 'Mar',
+        wed: 'Mié',
+        thu: 'Jue',
+        fri: 'Vie',
+        sat: 'Sáb'
+      },
+      months: {
+        jan: 'Ene',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Abr',
+        may: 'May',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Ago',
+        sep: 'Sep',
+        oct: 'Oct',
+        nov: 'Nov',
+        dec: 'Dic'
+      }
+    },
+    select: {
+      loading: 'Cargando',
+      noMatch: 'No hay datos que coincidan',
+      noData: 'Sin datos',
+      placeholder: 'Seleccionar'
+    },
+    cascader: {
+      noMatch: 'No hay datos que coincidan',
+      placeholder: 'Seleccionar'
+    },
+    pagination: {
+      goto: 'Ir a',
+      pagesize: '/pagina',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'Aceptar',
+      cancel: 'Cancelar',
+      error: 'Entrada inválida'
+    },
+    upload: {
+      delete: 'Eliminar',
+      preview: 'Vista Previa',
+      continue: 'Continuar'
+    },
+    table: {
+      emptyText: 'Sin Datos',
+      confirmFilter: 'Confirmar',
+      resetFilter: 'Limpiar',
+      clearFilter: 'Todo'
+    },
+    tree: {
+      emptyText: 'Sin Datos'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/fa.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'باشد',
+      clear: 'خذف'
+    },
+    datepicker: {
+      now: 'اکنون',
+      today: 'امروز',
+      cancel: 'لغو',
+      clear: 'خذف',
+      confirm: 'باشد',
+      selectDate: 'انتخاب تاریخ',
+      selectTime: 'انتخاب زمان',
+      startDate: 'تاریخ شروع',
+      startTime: 'زمان شروع',
+      endDate: 'تاریخ پایان',
+      endTime: 'زمان پایان',
+      year: 'سال',
+      month1: 'ژانویه',
+      month2: 'فوریه',
+      month3: 'مارس',
+      month4: 'آوریل',
+      month5: 'مه',
+      month6: 'ژوئن',
+      month7: 'جولای',
+      month8: 'اوت',
+      month9: 'سپتامبر',
+      month10: 'اکتبر',
+      month11: 'نوامبر',
+      month12: 'دسامبر',
+      // week: 'week',
+      weeks: {
+        sun: 'یکشنبه',
+        mon: 'دوشنبه',
+        tue: 'سه​شنبه',
+        wed: 'چهارشنبه',
+        thu: 'پنج​شنبه',
+        fri: 'جمعه',
+        sat: 'شنبه'
+      },
+      months: {
+        jan: 'ژانویه',
+        feb: 'فوریه',
+        mar: 'مارس',
+        apr: 'آوریل',
+        may: 'مه',
+        jun: 'ژوئن',
+        jul: 'جولای',
+        aug: 'اوت',
+        sep: 'سپتامبر',
+        oct: 'اکتبر',
+        nov: 'نوامبر',
+        dec: 'دسامبر'
+      }
+    },
+    select: {
+      loading: 'بارگیری',
+      noMatch: 'هیچ داده‌ای پیدا نشد',
+      noData: 'اطلاعاتی وجود ندارد',
+      placeholder: 'انتخاب کنید'
+    },
+    cascader: {
+      noMatch: 'هیچ داده‌ای پیدا نشد',
+      placeholder: 'انتخاب کنید'
+    },
+    pagination: {
+      goto: 'برو به',
+      pagesize: '/صفحه',
+      total: 'مجموع {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'پیام',
+      confirm: 'باشد',
+      cancel: 'لغو',
+      error: 'ورودی غیر مجاز'
+    },
+    upload: {
+      delete: 'حذف',
+      preview: 'پیش‌نمایش',
+      continue: 'ادهمه'
+    },
+    table: {
+      emptyText: 'اطلاعاتی وجود ندارد',
+      confirmFilter: 'تایید',
+      resetFilter: 'حذف',
+      clearFilter: 'همه'
+    },
+    tree: {
+      emptyText: 'اطلاعاتی وجود ندارد'
+    }
+  }
+};

+ 93 - 0
static/element-ui/lib/locale/lang/fi.js

@@ -0,0 +1,93 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Tyhjennä'
+    },
+    datepicker: {
+      now: 'Nyt',
+      today: 'Tänään',
+      cancel: 'Peruuta',
+      clear: 'Tyhjennä',
+      confirm: 'OK',
+      selectDate: 'Valitse päivä',
+      selectTime: 'Valitse aika',
+      startDate: 'Aloituspäivä',
+      startTime: 'Aloitusaika',
+      endDate: 'Lopetuspäivä',
+      endTime: 'Lopetusaika',
+      year: '',
+      month1: 'tammikuu',
+      month2: 'helmikuu',
+      month3: 'maaliskuu',
+      month4: 'huhtikuu',
+      month5: 'toukokuu',
+      month6: 'kesäkuu',
+      month7: 'heinäkuu',
+      month8: 'elokuu',
+      month9: 'syyskuu',
+      month10: 'lokakuu',
+      month11: 'marraskuu',
+      month12: 'joulukuu',
+      // week: 'week',
+      weeks: {
+        sun: 'su',
+        mon: 'ma',
+        tue: 'ti',
+        wed: 'ke',
+        thu: 'to',
+        fri: 'pe',
+        sat: 'la'
+      },
+      months: {
+        jan: 'tam',
+        feb: 'hel',
+        mar: 'maa',
+        apr: 'huh',
+        may: 'tou',
+        jun: 'kes',
+        jul: 'hei',
+        aug: 'elo',
+        sep: 'syy',
+        oct: 'lok',
+        nov: 'mar',
+        dec: 'jou'
+      }
+    },
+    select: {
+      loading: 'Lataa',
+      noMatch: 'Ei vastaavia tietoja',
+      noData: 'Ei tietoja',
+      placeholder: 'Valitse'
+    },
+    pagination: {
+      goto: 'Mene',
+      pagesize: '/sivu',
+      total: 'Yhteensä {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Viesti',
+      confirm: 'OK',
+      cancel: 'Peruuta',
+      error: 'Virheellinen syöte'
+    },
+    upload: {
+      delete: 'Poista',
+      preview: 'Esikatsele',
+      continue: 'Jatka'
+    },
+    table: {
+      emptyText: 'Ei tietoja',
+      confirmFilter: 'Vahvista',
+      resetFilter: 'Tyhjennä',
+      clearFilter: 'Kaikki'
+    },
+    tree: {
+      emptyText: 'Ei tietoja'
+    }
+  }
+};

+ 96 - 0
static/element-ui/lib/locale/lang/fr.js

@@ -0,0 +1,96 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Effacer'
+    },
+    datepicker: {
+      now: 'Maintenant',
+      today: 'Auj.',
+      cancel: 'Annuler',
+      clear: 'Effacer',
+      confirm: 'OK',
+      selectDate: 'Choisir date',
+      selectTime: 'Choisir horaire',
+      startDate: 'Date début',
+      startTime: 'Horaire début',
+      endDate: 'Date fin',
+      endTime: 'Horaire fin',
+      year: '',
+      month1: 'Janvier',
+      month2: 'Février',
+      month3: 'Mars',
+      month4: 'Avril',
+      month5: 'Mai',
+      month6: 'Juin',
+      month7: 'Juillet',
+      month8: 'Août',
+      month9: 'Septembre',
+      month10: 'Octobre',
+      month11: 'Novembre',
+      month12: 'Décembre',
+      // week: 'Semaine',
+      weeks: {
+        sun: 'Dim',
+        mon: 'Lun',
+        tue: 'Mar',
+        wed: 'Mer',
+        thu: 'Jeu',
+        fri: 'Ven',
+        sat: 'Sam'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Fév',
+        mar: 'Mar',
+        apr: 'Avr',
+        may: 'Mai',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aoû',
+        sep: 'Sep',
+        oct: 'Oct',
+        nov: 'Nov',
+        dec: 'Déc'
+      }
+    },
+    select: {
+      loading: 'Chargement',
+      noMatch: 'Aucune correspondance',
+      noData: 'Aucun résultat',
+      placeholder: 'Choisir'
+    },
+    cascader: {
+      noMatch: 'Aucune correspondance',
+      placeholder: 'Choisir'
+    },
+    pagination: {
+      goto: 'Aller à',
+      pagesize: '/page',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'Confirmer',
+      cancel: 'Annuler',
+      error: 'Erreur'
+    },
+    upload: {
+      delete: 'Supprimer',
+      preview: 'Aperçu',
+      continue: 'Continuer'
+    },
+    table: {
+      emptyText: 'Aucune donnée',
+      confirmFilter: 'Confirmer',
+      resetFilter: 'Réinitialiser',
+      clearFilter: 'Tous'
+    },
+    tree: {
+      emptyText: 'Aucune donnée'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/id.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'YA',
+      clear: 'Kosongkan'
+    },
+    datepicker: {
+      now: 'Sekarang',
+      today: 'Hari ini',
+      cancel: 'Batal',
+      clear: 'Kosongkan',
+      confirm: 'YA',
+      selectDate: 'Pilih tanggal',
+      selectTime: 'Pilih waktu',
+      startDate: 'Tanggal Mulai',
+      startTime: 'Waktu Mulai',
+      endDate: 'Tanggal Selesai',
+      endTime: 'Waktu Selesai',
+      year: 'Tahun',
+      month1: 'Januari',
+      month2: 'Februari',
+      month3: 'Maret',
+      month4: 'April',
+      month5: 'Mei',
+      month6: 'Juni',
+      month7: 'Juli',
+      month8: 'Agustus',
+      month9: 'September',
+      month10: 'Oktober',
+      month11: 'November',
+      month12: 'Desember',
+      // week: 'minggu',
+      weeks: {
+        sun: 'Min',
+        mon: 'Sen',
+        tue: 'Sel',
+        wed: 'Rab',
+        thu: 'Kam',
+        fri: 'Jum',
+        sat: 'Sab'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Mei',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Agu',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Des'
+      }
+    },
+    select: {
+      loading: 'Memuat',
+      noMatch: 'Tidak ada data yang cocok',
+      noData: 'Tidak ada data',
+      placeholder: 'Pilih'
+    },
+    cascader: {
+      noMatch: 'Tidak ada data yang cocok',
+      placeholder: 'Pilih'
+    },
+    pagination: {
+      goto: 'Pergi ke',
+      pagesize: '/page',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Pesan',
+      confirm: 'YA',
+      cancel: 'Batal',
+      error: 'Masukan ilegal'
+    },
+    upload: {
+      delete: 'Hapus',
+      preview: 'Pratinjau',
+      continue: 'Lanjutkan'
+    },
+    table: {
+      emptyText: 'Tidak Ada Data',
+      confirmFilter: 'Konfirmasi',
+      resetFilter: 'Atur Ulang',
+      clearFilter: 'Semua'
+    },
+    tree: {
+      emptyText: 'Tidak Ada Data'
+    }
+  }
+};

+ 96 - 0
static/element-ui/lib/locale/lang/it.js

@@ -0,0 +1,96 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Pulisci'
+    },
+    datepicker: {
+      now: 'Ora',
+      today: 'Oggi',
+      cancel: 'Cancella',
+      clear: 'Pulisci',
+      confirm: 'OK',
+      selectDate: 'Seleziona data',
+      selectTime: 'Seleziona ora',
+      startDate: 'Data inizio',
+      startTime: 'Ora inizio',
+      endDate: 'Data fine',
+      endTime: 'Ora fine',
+      year: 'Anno',
+      month1: 'Gennaio',
+      month2: 'Febbraio',
+      month3: 'Marzo',
+      month4: 'Aprile',
+      month5: 'Maggio',
+      month6: 'Giugno',
+      month7: 'Luglio',
+      month8: 'Agosto',
+      month9: 'Settembre',
+      month10: 'Ottobre',
+      month11: 'Novembre',
+      month12: 'Dicembre',
+      // week: 'settimana',
+      weeks: {
+        sun: 'Dom',
+        mon: 'Lun',
+        tue: 'Mar',
+        wed: 'Mer',
+        thu: 'Gio',
+        fri: 'Ven',
+        sat: 'Sab'
+      },
+      months: {
+        jan: 'Gen',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Mag',
+        jun: 'Giu',
+        jul: 'Lug',
+        aug: 'Ago',
+        sep: 'Set',
+        oct: 'Ott',
+        nov: 'Nov',
+        dec: 'Dic'
+      }
+    },
+    select: {
+      loading: 'Caricamento',
+      noMatch: 'Nessuna corrispondenza',
+      noData: 'Nessun risultato',
+      placeholder: 'Seleziona'
+    },
+    cascader: {
+      noMatch: 'Nessuna corrispondenza',
+      placeholder: 'Seleziona'
+    },
+    pagination: {
+      goto: 'Vai a',
+      pagesize: '/page',
+      total: 'Totale {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'OK',
+      cancel: 'Cancella',
+      error: 'Input non valido'
+    },
+    upload: {
+      delete: 'Cancella',
+      preview: 'Anteprima',
+      continue: 'Continua'
+    },
+    table: {
+      emptyText: 'Nessun dato',
+      confirmFilter: 'Conferma',
+      resetFilter: 'Reset',
+      clearFilter: 'Tutti'
+    },
+    tree: {
+      emptyText: 'Nessun dato'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/ja.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'クリア'
+    },
+    datepicker: {
+      now: '現在',
+      today: '今日',
+      cancel: 'キャンセル',
+      clear: 'クリア',
+      confirm: 'はい',
+      selectDate: '日付を選択',
+      selectTime: '時間を選択',
+      startDate: '開始日',
+      startTime: '開始時間',
+      endDate: '終了日',
+      endTime: '終了時間',
+      year: '年',
+      month1: '1月',
+      month2: '2月',
+      month3: '3月',
+      month4: '4月',
+      month5: '5月',
+      month6: '6月',
+      month7: '7月',
+      month8: '8月',
+      month9: '9月',
+      month10: '10月',
+      month11: '11月',
+      month12: '12月',
+      // week: '週次',
+      weeks: {
+        sun: '日',
+        mon: '月',
+        tue: '火',
+        wed: '水',
+        thu: '木',
+        fri: '金',
+        sat: '土'
+      },
+      months: {
+        jan: '1月',
+        feb: '2月',
+        mar: '3月',
+        apr: '4月',
+        may: '5月',
+        jun: '6月',
+        jul: '7月',
+        aug: '8月',
+        sep: '9月',
+        oct: '10月',
+        nov: '11月',
+        dec: '12月'
+      }
+    },
+    select: {
+      loading: 'ロード中',
+      noMatch: 'データなし',
+      noData: 'データなし',
+      placeholder: '選択してください'
+    },
+    cascader: {
+      noMatch: 'データなし',
+      placeholder: '選択してください'
+    },
+    pagination: {
+      goto: '',
+      pagesize: '件/ページ',
+      total: '総計 {total} 件',
+      pageClassifier: 'ページ目へ'
+    },
+    messagebox: {
+      title: 'メッセージ',
+      confirm: 'はい',
+      cancel: 'キャンセル',
+      error: '正しくない入力'
+    },
+    upload: {
+      delete: '削除する',
+      preview: 'プレビュー',
+      continue: '続行する'
+    },
+    table: {
+      emptyText: 'データなし',
+      confirmFilter: '確認',
+      resetFilter: '初期化',
+      clearFilter: 'すべて'
+    },
+    tree: {
+      emptyText: 'データなし'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/ko.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: '확인',
+      clear: '초기화'
+    },
+    datepicker: {
+      now: '지금',
+      today: '오늘',
+      cancel: '취소',
+      clear: '초기화',
+      confirm: '확인',
+      selectDate: '날짜 선택',
+      selectTime: '시간 선택',
+      startDate: '시작 날짜',
+      startTime: '시작 시간',
+      endDate: '종료 날짜',
+      endTime: '종료 시간',
+      year: '년',
+      month1: '1월',
+      month2: '2월',
+      month3: '3월',
+      month4: '4월',
+      month5: '5월',
+      month6: '6월',
+      month7: '7월',
+      month8: '8월',
+      month9: '9월',
+      month10: '10월',
+      month11: '11월',
+      month12: '12월',
+      // week: 'week',
+      weeks: {
+        sun: '일',
+        mon: '월',
+        tue: '화',
+        wed: '수',
+        thu: '목',
+        fri: '금',
+        sat: '토'
+      },
+      months: {
+        jan: '1월',
+        feb: '2월',
+        mar: '3월',
+        apr: '4월',
+        may: '5월',
+        jun: '6월',
+        jul: '7월',
+        aug: '8월',
+        sep: '9월',
+        oct: '10월',
+        nov: '11월',
+        dec: '12월'
+      }
+    },
+    select: {
+      loading: '불러오는 중',
+      noMatch: '맞는 데이터가 없습니다',
+      noData: '데이터 없음',
+      placeholder: '선택'
+    },
+    cascader: {
+      noMatch: '맞는 데이터가 없습니다',
+      placeholder: '선택'
+    },
+    pagination: {
+      goto: '이동',
+      pagesize: '/page',
+      total: '총 {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: '메시지',
+      confirm: '확인',
+      cancel: '취소',
+      error: '올바르지 않은 입력'
+    },
+    upload: {
+      delete: '삭제',
+      preview: '미리보기',
+      continue: '계속하기'
+    },
+    table: {
+      emptyText: '데이터 없음',
+      confirmFilter: '확인',
+      resetFilter: '초기화',
+      clearFilter: '전체'
+    },
+    tree: {
+      emptyText: '데이터 없음'
+    }
+  }
+};

+ 96 - 0
static/element-ui/lib/locale/lang/nb-NO.js

@@ -0,0 +1,96 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Tøm'
+    },
+    datepicker: {
+      now: 'Nå',
+      today: 'I dag',
+      cancel: 'Avbryt',
+      clear: 'Tøm',
+      confirm: 'OK',
+      selectDate: 'Velg dato',
+      selectTime: 'Velg tidspunkt',
+      startDate: 'Start Dato',
+      startTime: 'Start Tidspunkt',
+      endDate: 'Sluttdato',
+      endTime: 'Sluttidspunkt',
+      year: '',
+      month1: 'Januar',
+      month2: 'Februar',
+      month3: 'Mars',
+      month4: 'April',
+      month5: 'Mai',
+      month6: 'Juni',
+      month7: 'Juli',
+      month8: 'August',
+      month9: 'September',
+      month10: 'Oktober',
+      month11: 'November',
+      month12: 'Desember',
+      // week: 'week',
+      weeks: {
+        sun: 'Søn',
+        mon: 'Man',
+        tue: 'Tir',
+        wed: 'Ons',
+        thu: 'Tor',
+        fri: 'Fre',
+        sat: 'Lør'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Mai',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Des'
+      }
+    },
+    select: {
+      loading: 'Laster',
+      noMatch: 'Ingen samsvarende data',
+      noData: 'Ingen data',
+      placeholder: 'Velg'
+    },
+    cascader: {
+      noMatch: 'Ingen samsvarende data',
+      placeholder: 'Velg'
+    },
+    pagination: {
+      goto: 'Gå til',
+      pagesize: '/side',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      confirm: 'OK',
+      cancel: 'Avbryt',
+      error: 'Ugyldig input'
+    },
+    upload: {
+      delete: 'Slett',
+      preview: 'Forhåndsvisning',
+      continue: 'Fortsett'
+    },
+    table: {
+      emptyText: 'Ingen Data',
+      confirmFilter: 'Bekreft',
+      resetFilter: 'Tilbakestill',
+      clearFilter: 'Alle'
+    },
+    tree: {
+      emptyText: 'Ingen Data'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/nl.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'Bevestig',
+      clear: 'Legen'
+    },
+    datepicker: {
+      now: 'Nu',
+      today: 'Vandaag',
+      cancel: 'Annuleren',
+      clear: 'Legen',
+      confirm: 'Bevestig',
+      selectDate: 'Selecteer datum',
+      selectTime: 'Selecteer tijd',
+      startDate: 'Startdatum',
+      startTime: 'Starttijd',
+      endDate: 'Einddatum',
+      endTime: 'Eindtijd',
+      year: 'Jaar',
+      month1: 'januari',
+      month2: 'februari',
+      month3: 'maart',
+      month4: 'april',
+      month5: 'mei',
+      month6: 'juni',
+      month7: 'juli',
+      month8: 'augustus',
+      month9: 'september',
+      month10: 'oktober',
+      month11: 'november',
+      month12: 'december',
+      // week: 'week',
+      weeks: {
+        sun: 'Zo',
+        mon: 'Ma',
+        tue: 'Di',
+        wed: 'Wo',
+        thu: 'Do',
+        fri: 'Vr',
+        sat: 'Za'
+      },
+      months: {
+        jan: 'jan',
+        feb: 'feb',
+        mar: 'maa',
+        apr: 'apr',
+        may: 'mei',
+        jun: 'jun',
+        jul: 'jul',
+        aug: 'aug',
+        sep: 'sep',
+        oct: 'okt',
+        nov: 'nov',
+        dec: 'dec'
+      }
+    },
+    select: {
+      loading: 'Laden',
+      noMatch: 'Geen overeenkomende resultaten',
+      noData: 'Geen data',
+      placeholder: 'Selecteer'
+    },
+    cascader: {
+      noMatch: 'Geen overeenkomende resultaten',
+      placeholder: 'Selecteer'
+    },
+    pagination: {
+      goto: 'Ga naar',
+      pagesize: '/page',
+      total: 'Totaal {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Bericht',
+      confirm: 'Bevestig',
+      cancel: 'Annuleren',
+      error: 'Ongeldige invoer'
+    },
+    upload: {
+      delete: 'Verwijder',
+      preview: 'Voorbeeld',
+      continue: 'Doorgaan'
+    },
+    table: {
+      emptyText: 'Geen data',
+      confirmFilter: 'Bevestigen',
+      resetFilter: 'Reset',
+      clearFilter: 'Alles'
+    },
+    tree: {
+      emptyText: 'Geen data'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/pl.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Wyczyść'
+    },
+    datepicker: {
+      now: 'Teraz',
+      today: 'Dzisiaj',
+      cancel: 'Anuluj',
+      clear: 'Wyczyść',
+      confirm: 'OK',
+      selectDate: 'Wybierz datę',
+      selectTime: 'Wybierz godzinę',
+      startDate: 'Data początkowa',
+      startTime: 'Godzina początkowa',
+      endDate: 'Data końcowa',
+      endTime: 'Czas końcowa',
+      year: 'rok',
+      month1: 'styczeń',
+      month2: 'luty',
+      month3: 'marzec',
+      month4: 'kwiecień',
+      month5: 'maj',
+      month6: 'czerwiec',
+      month7: 'lipiec',
+      month8: 'sierpień',
+      month9: 'wrzesień',
+      month10: 'październik',
+      month11: 'listopad',
+      month12: 'grudzień',
+      week: 'tydzień',
+      weeks: {
+        sun: 'niedz.',
+        mon: 'pon.',
+        tue: 'wt.',
+        wed: 'śr.',
+        thu: 'czw.',
+        fri: 'pt.',
+        sat: 'sob.'
+      },
+      months: {
+        jan: 'STY',
+        feb: 'LUT',
+        mar: 'MAR',
+        apr: 'KWI',
+        may: 'MAJ',
+        jun: 'CZE',
+        jul: 'LIP',
+        aug: 'SIE',
+        sep: 'WRZ',
+        oct: 'PAŹ',
+        nov: 'LIS',
+        dec: 'GRU'
+      }
+    },
+    select: {
+      loading: 'Ładowanie',
+      noMatch: 'Brak dopasowań',
+      noData: 'Brak danych',
+      placeholder: 'Wybierz'
+    },
+    cascader: {
+      noMatch: 'Brak dopasowań',
+      placeholder: 'Wybierz'
+    },
+    pagination: {
+      goto: 'Idź do',
+      pagesize: '/strona',
+      total: 'Wszystkich {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Wiadomość',
+      confirm: 'OK',
+      cancel: 'Anuluj',
+      error: 'Wiadomość zawiera niedozwolone znaki'
+    },
+    upload: {
+      delete: 'Kasuj',
+      preview: 'Podgląd',
+      continue: 'Kontynuuj'
+    },
+    table: {
+      emptyText: 'Brak danych',
+      confirmFilter: 'Potwierdź',
+      resetFilter: 'Resetuj',
+      clearFilter: 'Wszystko'
+    },
+    tree: {
+      emptyText: 'Brak danych'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/pt-br.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'Confirmar',
+      clear: 'Limpar'
+    },
+    datepicker: {
+      now: 'Agora',
+      today: 'Hoje',
+      cancel: 'Cancelar',
+      clear: 'Limpar',
+      confirm: 'Confirmar',
+      selectDate: 'Selecione a data',
+      selectTime: 'Selecione a hora',
+      startDate: 'Data inicial',
+      startTime: 'Hora inicial',
+      endDate: 'Data final',
+      endTime: 'Hora final',
+      year: '',
+      month1: 'Janeiro',
+      month2: 'Fevereiro',
+      month3: 'Março',
+      month4: 'Abril',
+      month5: 'Maio',
+      month6: 'Junho',
+      month7: 'Julho',
+      month8: 'Agosto',
+      month9: 'Setembro',
+      month10: 'Outubro',
+      month11: 'Novembro',
+      month12: 'Dezembro',
+      // week: 'semana',
+      weeks: {
+        sun: 'Dom',
+        mon: 'Seg',
+        tue: 'Ter',
+        wed: 'Qua',
+        thu: 'Qui',
+        fri: 'Sex',
+        sat: 'Sab'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Fev',
+        mar: 'Mar',
+        apr: 'Abr',
+        may: 'Mai',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Ago',
+        sep: 'Set',
+        oct: 'Out',
+        nov: 'Nov',
+        dec: 'Dez'
+      }
+    },
+    select: {
+      loading: 'Carregando',
+      noMatch: 'Sem resultados',
+      noData: 'Sem dados',
+      placeholder: 'Selecione'
+    },
+    cascader: {
+      noMatch: 'Sem resultados',
+      placeholder: 'Selecione'
+    },
+    pagination: {
+      goto: 'Ir para',
+      pagesize: '/pagina',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Mensagem',
+      confirm: 'Confirmar',
+      cancel: 'Cancelar',
+      error: 'Erro!'
+    },
+    upload: {
+      delete: 'Apagar',
+      preview: 'Pré-visualizar',
+      continue: 'Continuar'
+    },
+    table: {
+      emptyText: 'Sem dados',
+      confirmFilter: 'Confirmar',
+      resetFilter: 'Limpar',
+      clearFilter: 'Todos'
+    },
+    tree: {
+      emptyText: 'Sem dados'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/pt.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'Confirmar',
+      clear: 'Limpar'
+    },
+    datepicker: {
+      now: 'Agora',
+      today: 'Hoje',
+      cancel: 'Cancelar',
+      clear: 'Limpar',
+      confirm: 'Confirmar',
+      selectDate: 'Selecione a data',
+      selectTime: 'Selecione a hora',
+      startDate: 'Data de inicio',
+      startTime: 'Hora de inicio',
+      endDate: 'Data de fim',
+      endTime: 'Hora de fim',
+      year: '',
+      month1: 'Janeiro',
+      month2: 'Fevereiro',
+      month3: 'Março',
+      month4: 'Abril',
+      month5: 'Maio',
+      month6: 'Junho',
+      month7: 'Julho',
+      month8: 'Agosto',
+      month9: 'Setembro',
+      month10: 'Outubro',
+      month11: 'Novembro',
+      month12: 'Dezembro',
+      // week: 'semana',
+      weeks: {
+        sun: 'Dom',
+        mon: 'Seg',
+        tue: 'Ter',
+        wed: 'Qua',
+        thu: 'Qui',
+        fri: 'Sex',
+        sat: 'Sab'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Fev',
+        mar: 'Mar',
+        apr: 'Abr',
+        may: 'Mai',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Ago',
+        sep: 'Set',
+        oct: 'Out',
+        nov: 'Nov',
+        dec: 'Dez'
+      }
+    },
+    select: {
+      loading: 'A carregar',
+      noMatch: 'Sem correspondência',
+      noData: 'Sem dados',
+      placeholder: 'Selecione'
+    },
+    cascader: {
+      noMatch: 'Sem correspondência',
+      placeholder: 'Selecione'
+    },
+    pagination: {
+      goto: 'Ir para',
+      pagesize: '/pagina',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Mensagem',
+      confirm: 'Confirmar',
+      cancel: 'Cancelar',
+      error: 'Erro!'
+    },
+    upload: {
+      delete: 'Apagar',
+      preview: 'Previsualizar',
+      continue: 'Continuar'
+    },
+    table: {
+      emptyText: 'Sem dados',
+      confirmFilter: 'Confirmar',
+      resetFilter: 'Limpar',
+      clearFilter: 'Todos'
+    },
+    tree: {
+      emptyText: 'Sem dados'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/ru-RU.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Очистить'
+    },
+    datepicker: {
+      now: 'Сейчас',
+      today: 'Сегодня',
+      cancel: 'Отмена',
+      clear: 'Очистить',
+      confirm: 'OK',
+      selectDate: 'Выбрать дату',
+      selectTime: 'Выбрать время',
+      startDate: 'Дата начала',
+      startTime: 'Время начала',
+      endDate: 'Дата окончания',
+      endTime: 'Время окончания',
+      year: '',
+      month1: 'Январь',
+      month2: 'Февраль',
+      month3: 'Март',
+      month4: 'Апрель',
+      month5: 'Май',
+      month6: 'Июнь',
+      month7: 'Июль',
+      month8: 'Август',
+      month9: 'Сентябрь',
+      month10: 'Октябрь',
+      month11: 'Ноябрь',
+      month12: 'Декабрь',
+      // week: 'week',
+      weeks: {
+        sun: 'Вс',
+        mon: 'Пн',
+        tue: 'Вт',
+        wed: 'Ср',
+        thu: 'Чт',
+        fri: 'Пт',
+        sat: 'Сб'
+      },
+      months: {
+        jan: 'Янв',
+        feb: 'Фев',
+        mar: 'Мар',
+        apr: 'Апр',
+        may: 'Май',
+        jun: 'Июн',
+        jul: 'Июл',
+        aug: 'Авг',
+        sep: 'Сен',
+        oct: 'Окт',
+        nov: 'Ноя',
+        dec: 'Дек'
+      }
+    },
+    select: {
+      loading: 'Загрузка',
+      noMatch: 'Совпадений не найдено',
+      noData: 'Нет данных',
+      placeholder: 'Выбрать'
+    },
+    cascader: {
+      noMatch: 'Совпадений не найдено',
+      placeholder: 'Выбрать'
+    },
+    pagination: {
+      goto: 'Перейти',
+      pagesize: 'на странице',
+      total: 'Всего {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Сообщение',
+      confirm: 'OK',
+      cancel: 'Отмена',
+      error: 'Недопустимый ввод данных'
+    },
+    upload: {
+      delete: 'Удалить',
+      preview: 'Превью',
+      continue: 'Продолжить'
+    },
+    table: {
+      emptyText: 'Нет данных',
+      confirmFilter: 'Подтвердить',
+      resetFilter: 'Сбросить',
+      clearFilter: 'Все'
+    },
+    tree: {
+      emptyText: 'Нет данных'
+    }
+  }
+};

+ 95 - 0
static/element-ui/lib/locale/lang/sk.js

@@ -0,0 +1,95 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Zmazať'
+    },
+    datepicker: {
+      now: 'Teraz',
+      today: 'Dnes',
+      cancel: 'Zrušiť',
+      clear: 'Zmazať',
+      confirm: 'OK',
+      selectDate: 'Vybrať dátum',
+      selectTime: 'Vybrať čas',
+      startDate: 'Dátum začiatku',
+      startTime: 'Čas začiatku',
+      endDate: 'Dátum konca',
+      endTime: 'Čas konca',
+      day: 'Deň',
+      week: 'Týždeň',
+      month: 'Mesiac',
+      year: 'Rok',
+      month1: 'Január',
+      month2: 'Február',
+      month3: 'Marec',
+      month4: 'Apríl',
+      month5: 'Máj',
+      month6: 'Jún',
+      month7: 'Júl',
+      month8: 'August',
+      month9: 'September',
+      month10: 'Október',
+      month11: 'November',
+      month12: 'December',
+      weeks: {
+        sun: 'Ne',
+        mon: 'Po',
+        tue: 'Ut',
+        wed: 'St',
+        thu: 'Št',
+        fri: 'Pi',
+        sat: 'So'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Máj',
+        jun: 'Jún',
+        jul: 'Júl',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Dec'
+      }
+    },
+    select: {
+      loading: 'Načítavanie',
+      noMatch: 'Žiadna zhoda',
+      noData: 'Žiadne dáta',
+      placeholder: 'Vybrať'
+    },
+    pagination: {
+      goto: 'Choď na',
+      pagesize: 'na stranu',
+      total: 'Všetko {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Správa',
+      confirm: 'OK',
+      cancel: 'Zrušiť',
+      error: 'Neplatný vstup'
+    },
+    upload: {
+      delete: 'Vymazať',
+      preview: 'Prehliadať',
+      continue: 'Pokračovať'
+    },
+    table: {
+      emptyText: 'Žiadne dáta',
+      confirmFilter: 'Potvrdiť',
+      resetFilter: 'Zresetovať',
+      clearFilter: 'Všetko'
+    },
+    tree: {
+      emptyText: 'Žiadne dáta'
+    }
+  }
+};

+ 93 - 0
static/element-ui/lib/locale/lang/sv-SE.js

@@ -0,0 +1,93 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Töm'
+    },
+    datepicker: {
+      now: 'Nu',
+      today: 'Idag',
+      cancel: 'Avbryt',
+      clear: 'Töm',
+      confirm: 'OK',
+      selectDate: 'Välj datum',
+      selectTime: 'Välj tid',
+      startDate: 'Startdatum',
+      startTime: 'Starttid',
+      endDate: 'Slutdatum',
+      endTime: 'Sluttid',
+      year: 'År',
+      month1: 'Januari',
+      month2: 'Februari',
+      month3: 'Mars',
+      month4: 'April',
+      month5: 'Maj',
+      month6: 'Juni',
+      month7: 'Juli',
+      month8: 'Augusti',
+      month9: 'September',
+      month10: 'Oktober',
+      month11: 'November',
+      month12: 'December',
+      // week: 'week',
+      weeks: {
+        sun: 'Sön',
+        mon: 'Mån',
+        tue: 'Tis',
+        wed: 'Ons',
+        thu: 'Tor',
+        fri: 'Fre',
+        sat: 'Lör'
+      },
+      months: {
+        jan: 'Jan',
+        feb: 'Feb',
+        mar: 'Mar',
+        apr: 'Apr',
+        may: 'Maj',
+        jun: 'Jun',
+        jul: 'Jul',
+        aug: 'Aug',
+        sep: 'Sep',
+        oct: 'Okt',
+        nov: 'Nov',
+        dec: 'Dec'
+      }
+    },
+    select: {
+      loading: 'Laddar',
+      noMatch: 'Hittade inget',
+      noData: 'Ingen data',
+      placeholder: 'Välj'
+    },
+    pagination: {
+      goto: 'Gå till',
+      pagesize: '/sida',
+      total: 'Total {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Meddelande',
+      confirm: 'OK',
+      cancel: 'Avbryt',
+      error: 'Felaktig inmatning'
+    },
+    upload: {
+      delete: 'Radera',
+      preview: 'Förhandsvisa',
+      continue: 'Fortsätt'
+    },
+    table: {
+      emptyText: 'Inga Data',
+      confirmFilter: 'Bekräfta',
+      resetFilter: 'Återställ',
+      clearFilter: 'Alla'
+    },
+    tree: {
+      emptyText: 'Inga Data'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/th.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'ตกลง',
+      clear: 'ล้างข้อมูล'
+    },
+    datepicker: {
+      now: 'ตอนนี้',
+      today: 'วันนี้',
+      cancel: 'ยกเลิก',
+      clear: 'ล้างข้อมูล',
+      confirm: 'ตกลง',
+      selectDate: 'เลือกวันที่',
+      selectTime: 'เลือกเวลา',
+      startDate: 'วันที่เริ่มต้น',
+      startTime: 'เวลาเริ่มต้น',
+      endDate: 'วันที่สิ้นสุด',
+      endTime: 'เวลาสิ้นสุด',
+      year: 'ปี',
+      month1: 'มกราคม',
+      month2: 'กุมภาพันธ์',
+      month3: 'มีนาคม',
+      month4: 'เมษายน',
+      month5: 'พฤษภาคม',
+      month6: 'มิถุนายน',
+      month7: 'กรกฎาคม',
+      month8: 'สิงหาคม',
+      month9: 'กันยายน',
+      month10: 'ตุลาคม',
+      month11: 'พฤศจิกายน',
+      month12: 'ธันวาคม',
+      // week: 'week',
+      weeks: {
+        sun: 'อ',
+        mon: 'จ',
+        tue: 'อ',
+        wed: 'พ',
+        thu: 'พฤ',
+        fri: 'ศ',
+        sat: 'ส'
+      },
+      months: {
+        jan: 'มกรา',
+        feb: 'กุมภา',
+        mar: 'มีนา',
+        apr: 'เมษา',
+        may: 'พฤษภา',
+        jun: 'มิถุนา',
+        jul: 'กรกฎา',
+        aug: 'สิงหา',
+        sep: 'กันยา',
+        oct: 'ตุลา',
+        nov: 'พฤศจิกา',
+        dec: 'ธันวา'
+      }
+    },
+    select: {
+      loading: 'กำลังโหลด',
+      noMatch: 'ไม่พบข้อมูลที่ตรงกัน',
+      noData: 'ไม่พบข้อมูล',
+      placeholder: 'เลือก'
+    },
+    cascader: {
+      noMatch: 'ไม่พบข้อมูลที่ตรงกัน',
+      placeholder: 'เลือก'
+    },
+    pagination: {
+      goto: 'ไปที่',
+      pagesize: '/หน้า',
+      total: 'ทั้งหมด {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'ข้อความ',
+      confirm: 'ตกลง',
+      cancel: 'ยกเลิก',
+      error: 'คุณป้อนข้อมูลไม่ถูกต้อง'
+    },
+    upload: {
+      delete: 'ลบ',
+      preview: 'ตัวอย่าง',
+      continue: 'ทำต่อ'
+    },
+    table: {
+      emptyText: 'ไม่พบข้อมูล',
+      confirmFilter: 'ยืนยัน',
+      resetFilter: 'รีเซ็ต',
+      clearFilter: 'ทั้งหมด'
+    },
+    tree: {
+      emptyText: 'ไม่พบข้อมูล'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/tr-TR.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Temizle'
+    },
+    datepicker: {
+      now: 'Şimdi',
+      today: 'Bugün',
+      cancel: 'İptal',
+      clear: 'Temizle',
+      confirm: 'OK',
+      selectDate: 'Tarih seç',
+      selectTime: 'Saat seç',
+      startDate: 'Başlangıç Tarihi',
+      startTime: 'Başlangıç Saati',
+      endDate: 'Bitiş Tarihi',
+      endTime: 'Bitiş Saati',
+      year: '',
+      month1: 'Ocak',
+      month2: 'Şubat',
+      month3: 'Mart',
+      month4: 'Nisan',
+      month5: 'Mayıs',
+      month6: 'Haziran',
+      month7: 'Temmuz',
+      month8: 'Ağustos',
+      month9: 'Eylül',
+      month10: 'Ekim',
+      month11: 'Kasım',
+      month12: 'Aralık',
+      // week: 'week',
+      weeks: {
+        sun: 'Paz',
+        mon: 'Pzt',
+        tue: 'Sal',
+        wed: 'Çar',
+        thu: 'Per',
+        fri: 'Cum',
+        sat: 'Cmt'
+      },
+      months: {
+        jan: 'Oca',
+        feb: 'Şub',
+        mar: 'Mar',
+        apr: 'Nis',
+        may: 'May',
+        jun: 'Haz',
+        jul: 'Tem',
+        aug: 'Ağu',
+        sep: 'Eyl',
+        oct: 'Eki',
+        nov: 'Kas',
+        dec: 'Ara'
+      }
+    },
+    select: {
+      loading: 'Yükleniyor',
+      noMatch: 'Eşleşen veri bulunamadı',
+      noData: 'Veri yok',
+      placeholder: 'Seç'
+    },
+    cascader: {
+      noMatch: 'Eşleşen veri bulunamadı',
+      placeholder: 'Seç'
+    },
+    pagination: {
+      goto: 'Git',
+      pagesize: '/page',
+      total: 'Toplam {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Mesaj',
+      confirm: 'OK',
+      cancel: 'İptal',
+      error: 'İllegal giriş'
+    },
+    upload: {
+      delete: 'Sil',
+      preview: 'Görüntüle',
+      continue: 'Devam'
+    },
+    table: {
+      emptyText: 'Veri yok',
+      confirmFilter: 'Onayla',
+      resetFilter: 'Reset',
+      clearFilter: 'Hepsi'
+    },
+    tree: {
+      emptyText: 'Veri yok'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/vi.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: 'OK',
+      clear: 'Xóa'
+    },
+    datepicker: {
+      now: 'Hiện tại',
+      today: 'Hôm nay',
+      cancel: 'Hủy',
+      clear: 'Xóa',
+      confirm: 'OK',
+      selectDate: 'Chọn ngày',
+      selectTime: 'Chọn giờ',
+      startDate: 'Ngày bắt đầu',
+      startTime: 'Thời gian bắt đầu',
+      endDate: 'Ngày kết thúc',
+      endTime: 'Thời gian kết thúc',
+      year: 'Năm',
+      month1: 'Tháng 1',
+      month2: 'Tháng 2',
+      month3: 'Tháng 3',
+      month4: 'Tháng 4',
+      month5: 'Tháng 5',
+      month6: 'Tháng 6',
+      month7: 'Tháng 7',
+      month8: 'Tháng 8',
+      month9: 'Tháng 9',
+      month10: 'Tháng 10',
+      month11: 'Tháng 11',
+      month12: 'Tháng 12',
+      // week: 'week',
+      weeks: {
+        sun: 'CN',
+        mon: 'T2',
+        tue: 'T3',
+        wed: 'T4',
+        thu: 'T5',
+        fri: 'T6',
+        sat: 'T7'
+      },
+      months: {
+        jan: 'Th.1',
+        feb: 'Th.2',
+        mar: 'Th.3',
+        apr: 'Th.4',
+        may: 'Th.5',
+        jun: 'Th.6',
+        jul: 'Th.7',
+        aug: 'Th.8',
+        sep: 'Th.9',
+        oct: 'Th.10',
+        nov: 'Th.11',
+        dec: 'Th.12'
+      }
+    },
+    select: {
+      loading: 'Loading',
+      noMatch: 'Dữ liệu không phù hợp',
+      noData: 'Không tìm thấy dữ liệu',
+      placeholder: 'Chọn'
+    },
+    cascader: {
+      noMatch: 'Dữ liệu không phù hợp',
+      placeholder: 'Chọn'
+    },
+    pagination: {
+      goto: 'Nhảy tới',
+      pagesize: '/trang',
+      total: 'Tổng {total}',
+      pageClassifier: ''
+    },
+    messagebox: {
+      title: 'Thông báo',
+      confirm: 'OK',
+      cancel: 'Hủy',
+      error: 'Dữ liệu không hợp lệ'
+    },
+    upload: {
+      delete: 'Xóa',
+      preview: 'Xem trước',
+      continue: 'Tiếp tục'
+    },
+    table: {
+      emptyText: 'Không có dữ liệu',
+      confirmFilter: 'Xác nhận',
+      resetFilter: 'Làm mới',
+      clearFilter: 'Xóa hết'
+    },
+    tree: {
+      emptyText: 'Không có dữ liệu'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/zh-CN.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: '确定',
+      clear: '清空'
+    },
+    datepicker: {
+      now: '此刻',
+      today: '今天',
+      cancel: '取消',
+      clear: '清空',
+      confirm: '确定',
+      selectDate: '选择日期',
+      selectTime: '选择时间',
+      startDate: '开始日期',
+      startTime: '开始时间',
+      endDate: '结束日期',
+      endTime: '结束时间',
+      year: '年',
+      month1: '1 月',
+      month2: '2 月',
+      month3: '3 月',
+      month4: '4 月',
+      month5: '5 月',
+      month6: '6 月',
+      month7: '7 月',
+      month8: '8 月',
+      month9: '9 月',
+      month10: '10 月',
+      month11: '11 月',
+      month12: '12 月',
+      // week: '周次',
+      weeks: {
+        sun: '日',
+        mon: '一',
+        tue: '二',
+        wed: '三',
+        thu: '四',
+        fri: '五',
+        sat: '六'
+      },
+      months: {
+        jan: '一月',
+        feb: '二月',
+        mar: '三月',
+        apr: '四月',
+        may: '五月',
+        jun: '六月',
+        jul: '七月',
+        aug: '八月',
+        sep: '九月',
+        oct: '十月',
+        nov: '十一月',
+        dec: '十二月'
+      }
+    },
+    select: {
+      loading: '加载中',
+      noMatch: '无匹配数据',
+      noData: '无数据',
+      placeholder: '请选择'
+    },
+    cascader: {
+      noMatch: '无匹配数据',
+      placeholder: '请选择'
+    },
+    pagination: {
+      goto: '前往',
+      pagesize: '条/页',
+      total: '共 {total} 条',
+      pageClassifier: '页'
+    },
+    messagebox: {
+      title: '提示',
+      confirm: '确定',
+      cancel: '取消',
+      error: '输入的数据不合法!'
+    },
+    upload: {
+      delete: '删除',
+      preview: '查看图片',
+      continue: '继续上传'
+    },
+    table: {
+      emptyText: '暂无数据',
+      confirmFilter: '筛选',
+      resetFilter: '重置',
+      clearFilter: '全部'
+    },
+    tree: {
+      emptyText: '暂无数据'
+    }
+  }
+};

+ 97 - 0
static/element-ui/lib/locale/lang/zh-TW.js

@@ -0,0 +1,97 @@
+'use strict';
+
+exports.__esModule = true;
+exports.default = {
+  el: {
+    colorpicker: {
+      confirm: '確認',
+      clear: '清空'
+    },
+    datepicker: {
+      now: '現在',
+      today: '今天',
+      cancel: '取消',
+      clear: '清空',
+      confirm: '確認',
+      selectDate: '選擇日期',
+      selectTime: '選擇時間',
+      startDate: '開始日期',
+      startTime: '開始時間',
+      endDate: '結束日期',
+      endTime: '結束時間',
+      year: '年',
+      month1: '1 月',
+      month2: '2 月',
+      month3: '3 月',
+      month4: '4 月',
+      month5: '5 月',
+      month6: '6 月',
+      month7: '7 月',
+      month8: '8 月',
+      month9: '9 月',
+      month10: '10 月',
+      month11: '11 月',
+      month12: '12 月',
+      // week: '周次',
+      weeks: {
+        sun: '日',
+        mon: '一',
+        tue: '二',
+        wed: '三',
+        thu: '四',
+        fri: '五',
+        sat: '六'
+      },
+      months: {
+        jan: '一月',
+        feb: '二月',
+        mar: '三月',
+        apr: '四月',
+        may: '五月',
+        jun: '六月',
+        jul: '七月',
+        aug: '八月',
+        sep: '九月',
+        oct: '十月',
+        nov: '十一月',
+        dec: '十二月'
+      }
+    },
+    select: {
+      loading: '加載中',
+      noMatch: '無匹配資料',
+      noData: '無資料',
+      placeholder: '請選擇'
+    },
+    cascader: {
+      noMatch: '無匹配資料',
+      placeholder: '請選擇'
+    },
+    pagination: {
+      goto: '前往',
+      pagesize: '項/頁',
+      total: '共 {total} 項',
+      pageClassifier: '頁'
+    },
+    messagebox: {
+      title: '提示',
+      confirm: '確定',
+      cancel: '取消',
+      error: '輸入的資料不符規定!'
+    },
+    upload: {
+      delete: '刪除',
+      preview: '查看圖片',
+      continue: '繼續上傳'
+    },
+    table: {
+      emptyText: '暫無資料',
+      confirmFilter: '篩選',
+      resetFilter: '重置',
+      clearFilter: '全部'
+    },
+    tree: {
+      emptyText: '暫無資料'
+    }
+  }
+};

+ 217 - 0
static/element-ui/lib/menu-item-group.js

@@ -0,0 +1,217 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(185);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 185:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _menuItemGroup = __webpack_require__(186);
+
+	var _menuItemGroup2 = _interopRequireDefault(_menuItemGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_menuItemGroup2.default.install = function (Vue) {
+	  Vue.component(_menuItemGroup2.default.name, _menuItemGroup2.default);
+	};
+
+	exports.default = _menuItemGroup2.default;
+
+/***/ },
+
+/***/ 186:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(187),
+	  /* template */
+	  __webpack_require__(188),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 187:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElMenuItemGroup',
+
+	  componentName: 'ElMenuItemGroup',
+
+	  props: {
+	    title: {
+	      type: String
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      paddingLeft: 20
+	    };
+	  },
+
+	  computed: {
+	    levelPadding: function levelPadding() {
+	      var padding = 10;
+	      var parent = this.$parent;
+	      while (parent && parent.$options.componentName !== 'ElMenu') {
+	        if (parent.$options.componentName === 'ElSubmenu') {
+	          padding += 20;
+	        }
+	        parent = parent.$parent;
+	      }
+	      padding === 10 && (padding = 20);
+	      return padding;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 188:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    staticClass: "el-menu-item-group"
+	  }, [_c('div', {
+	    staticClass: "el-menu-item-group__title",
+	    style: ({
+	      paddingLeft: _vm.levelPadding + 'px'
+	    })
+	  }, [(!_vm.$slots.title) ? [_vm._v(_vm._s(_vm.title))] : _vm._t("title")], 2), _c('ul', [_vm._t("default")], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 299 - 0
static/element-ui/lib/menu-item.js

@@ -0,0 +1,299 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(180);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 180:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _menuItem = __webpack_require__(181);
+
+	var _menuItem2 = _interopRequireDefault(_menuItem);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_menuItem2.default.install = function (Vue) {
+	  Vue.component(_menuItem2.default.name, _menuItem2.default);
+	};
+
+	exports.default = _menuItem2.default;
+
+/***/ },
+
+/***/ 181:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(182),
+	  /* template */
+	  __webpack_require__(184),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 182:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _menuMixin = __webpack_require__(183);
+
+	var _menuMixin2 = _interopRequireDefault(_menuMixin);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElMenuItem',
+
+	  componentName: 'ElMenuItem',
+
+	  mixins: [_menuMixin2.default, _emitter2.default],
+
+	  props: {
+	    index: {
+	      type: String,
+	      required: true
+	    },
+	    route: {
+	      type: Object,
+	      required: false
+	    },
+	    disabled: {
+	      type: Boolean,
+	      required: false
+	    }
+	  },
+	  computed: {
+	    active: function active() {
+	      return this.index === this.rootMenu.activedIndex;
+	    }
+	  },
+	  methods: {
+	    handleClick: function handleClick() {
+	      this.dispatch('ElMenu', 'item-click', this);
+	      this.$emit('click', this);
+	    }
+	  },
+	  created: function created() {
+	    this.parentMenu.addItem(this);
+	    this.rootMenu.addItem(this);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.parentMenu.removeItem(this);
+	    this.rootMenu.removeItem(this);
+	  }
+	};
+
+/***/ },
+
+/***/ 183:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.default = {
+	  computed: {
+	    indexPath: function indexPath() {
+	      var path = [this.index];
+	      var parent = this.$parent;
+	      while (parent.$options.componentName !== 'ElMenu') {
+	        if (parent.index) {
+	          path.unshift(parent.index);
+	        }
+	        parent = parent.$parent;
+	      }
+	      return path;
+	    },
+	    rootMenu: function rootMenu() {
+	      var parent = this.$parent;
+	      while (parent && parent.$options.componentName !== 'ElMenu') {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    },
+	    parentMenu: function parentMenu() {
+	      var parent = this.$parent;
+	      while (parent && ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1) {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    },
+	    paddingStyle: function paddingStyle() {
+	      if (this.rootMenu.mode !== 'vertical') return {};
+
+	      var padding = 20;
+	      var parent = this.$parent;
+	      while (parent && parent.$options.componentName !== 'ElMenu') {
+	        if (parent.$options.componentName === 'ElSubmenu') {
+	          padding += 20;
+	        }
+	        parent = parent.$parent;
+	      }
+	      return { paddingLeft: padding + 'px' };
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 184:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    staticClass: "el-menu-item",
+	    class: {
+	      'is-active': _vm.active,
+	      'is-disabled': _vm.disabled
+	    },
+	    style: (_vm.paddingStyle),
+	    on: {
+	      "click": _vm.handleClick
+	    }
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 335 - 0
static/element-ui/lib/menu.js

@@ -0,0 +1,335 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(176);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 176:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _menu = __webpack_require__(177);
+
+	var _menu2 = _interopRequireDefault(_menu);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_menu2.default.install = function (Vue) {
+	  Vue.component(_menu2.default.name, _menu2.default);
+	};
+
+	exports.default = _menu2.default;
+
+/***/ },
+
+/***/ 177:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(178),
+	  /* template */
+	  __webpack_require__(179),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 178:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElMenu',
+
+	  componentName: 'ElMenu',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    mode: {
+	      type: String,
+	      default: 'vertical'
+	    },
+	    defaultActive: {
+	      type: String,
+	      default: ''
+	    },
+	    defaultOpeneds: Array,
+	    theme: {
+	      type: String,
+	      default: 'light'
+	    },
+	    uniqueOpened: Boolean,
+	    router: Boolean,
+	    menuTrigger: {
+	      type: String,
+	      default: 'hover'
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      activedIndex: this.defaultActive,
+	      openedMenus: this.defaultOpeneds ? this.defaultOpeneds.slice(0) : [],
+	      items: {},
+	      submenus: {}
+	    };
+	  },
+
+	  watch: {
+	    defaultActive: function defaultActive(value) {
+	      var item = this.items[value];
+	      if (item) {
+	        this.activedIndex = item.index;
+	        this.initOpenedMenu();
+	      } else {
+	        this.activedIndex = '';
+	      }
+	    },
+	    defaultOpeneds: function defaultOpeneds(value) {
+	      this.openedMenus = value;
+	    }
+	  },
+	  methods: {
+	    addItem: function addItem(item) {
+	      this.$set(this.items, item.index, item);
+	    },
+	    removeItem: function removeItem(item) {
+	      delete this.items[item.index];
+	    },
+	    addSubmenu: function addSubmenu(item) {
+	      this.$set(this.submenus, item.index, item);
+	    },
+	    removeSubmenu: function removeSubmenu(item) {
+	      delete this.submenus[item.index];
+	    },
+	    openMenu: function openMenu(index, indexPath) {
+	      var openedMenus = this.openedMenus;
+	      if (openedMenus.indexOf(index) !== -1) return;
+	      // 将不在该菜单路径下的其余菜单收起
+	      if (this.uniqueOpened) {
+	        this.openedMenus = openedMenus.filter(function (index) {
+	          return indexPath.indexOf(index) !== -1;
+	        });
+	      }
+	      this.openedMenus.push(index);
+	    },
+	    closeMenu: function closeMenu(index, indexPath) {
+	      this.openedMenus.splice(this.openedMenus.indexOf(index), 1);
+	    },
+	    handleSubmenuClick: function handleSubmenuClick(submenu) {
+	      var index = submenu.index,
+	          indexPath = submenu.indexPath;
+
+	      var isOpened = this.openedMenus.indexOf(index) !== -1;
+
+	      if (isOpened) {
+	        this.closeMenu(index, indexPath);
+	        this.$emit('close', index, indexPath);
+	      } else {
+	        this.openMenu(index, indexPath);
+	        this.$emit('open', index, indexPath);
+	      }
+	    },
+	    handleItemClick: function handleItemClick(item) {
+	      var index = item.index,
+	          indexPath = item.indexPath;
+
+	      this.activedIndex = item.index;
+	      this.$emit('select', index, indexPath, item);
+
+	      if (this.mode === 'horizontal') {
+	        this.openedMenus = [];
+	      }
+
+	      if (this.router) {
+	        this.routeToItem(item);
+	      }
+	    },
+
+	    // 初始化展开菜单
+	    initOpenedMenu: function initOpenedMenu() {
+	      var _this = this;
+
+	      var index = this.activedIndex;
+	      var activeItem = this.items[index];
+	      if (!activeItem || this.mode === 'horizontal') return;
+
+	      var indexPath = activeItem.indexPath;
+
+	      // 展开该菜单项的路径上所有子菜单
+	      indexPath.forEach(function (index) {
+	        var submenu = _this.submenus[index];
+	        submenu && _this.openMenu(index, submenu.indexPath);
+	      });
+	    },
+	    routeToItem: function routeToItem(item) {
+	      var route = item.route || item.index;
+	      try {
+	        this.$router.push(route);
+	      } catch (e) {
+	        console.error(e);
+	      }
+	    }
+	  },
+	  mounted: function mounted() {
+	    this.initOpenedMenu();
+	    this.$on('item-click', this.handleItemClick);
+	    this.$on('submenu-click', this.handleSubmenuClick);
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 179:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('ul', {
+	    staticClass: "el-menu",
+	    class: {
+	      'el-menu--horizontal': _vm.mode === 'horizontal',
+	        'el-menu--dark': _vm.theme === 'dark'
+	    }
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 819 - 0
static/element-ui/lib/message-box.js

@@ -0,0 +1,819 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(199);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 9:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 60:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+
+/***/ 61:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/locale");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 132:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/popup");
+
+/***/ },
+
+/***/ 137:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/button");
+
+/***/ },
+
+/***/ 164:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/merge");
+
+/***/ },
+
+/***/ 199:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(200);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 200:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.MessageBox = undefined;
+
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _main = __webpack_require__(201);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	var _merge = __webpack_require__(164);
+
+	var _merge2 = _interopRequireDefault(_merge);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var defaults = {
+	  title: undefined,
+	  message: '',
+	  type: '',
+	  showInput: false,
+	  showClose: true,
+	  modalFade: true,
+	  lockScroll: true,
+	  closeOnClickModal: true,
+	  closeOnPressEscape: true,
+	  inputValue: null,
+	  inputPlaceholder: '',
+	  inputPattern: null,
+	  inputValidator: null,
+	  inputErrorMessage: '',
+	  showConfirmButton: true,
+	  showCancelButton: false,
+	  confirmButtonPosition: 'right',
+	  confirmButtonHighlight: false,
+	  cancelButtonHighlight: false,
+	  confirmButtonText: '',
+	  cancelButtonText: '',
+	  confirmButtonClass: '',
+	  cancelButtonClass: '',
+	  customClass: '',
+	  beforeClose: null
+	};
+
+	var MessageBoxConstructor = _vue2.default.extend(_main2.default);
+
+	var currentMsg = void 0,
+	    instance = void 0;
+	var msgQueue = [];
+
+	var defaultCallback = function defaultCallback(action) {
+	  if (currentMsg) {
+	    var callback = currentMsg.callback;
+	    if (typeof callback === 'function') {
+	      if (instance.showInput) {
+	        callback(instance.inputValue, action);
+	      } else {
+	        callback(action);
+	      }
+	    }
+	    if (currentMsg.resolve) {
+	      var $type = currentMsg.options.$type;
+	      if ($type === 'confirm' || $type === 'prompt') {
+	        if (action === 'confirm') {
+	          if (instance.showInput) {
+	            currentMsg.resolve({ value: instance.inputValue, action: action });
+	          } else {
+	            currentMsg.resolve(action);
+	          }
+	        } else if (action === 'cancel' && currentMsg.reject) {
+	          currentMsg.reject(action);
+	        }
+	      } else {
+	        currentMsg.resolve(action);
+	      }
+	    }
+	  }
+	};
+
+	var initInstance = function initInstance() {
+	  instance = new MessageBoxConstructor({
+	    el: document.createElement('div')
+	  });
+
+	  instance.callback = defaultCallback;
+	};
+
+	var showNextMsg = function showNextMsg() {
+	  if (!instance) {
+	    initInstance();
+	  }
+	  instance.action = '';
+
+	  if (!instance.value || instance.closeTimer) {
+	    if (msgQueue.length > 0) {
+	      (function () {
+	        currentMsg = msgQueue.shift();
+
+	        var options = currentMsg.options;
+	        for (var prop in options) {
+	          if (options.hasOwnProperty(prop)) {
+	            instance[prop] = options[prop];
+	          }
+	        }
+	        if (options.callback === undefined) {
+	          instance.callback = defaultCallback;
+	        }
+
+	        var oldCb = instance.callback;
+	        instance.callback = function (action, instance) {
+	          oldCb(action, instance);
+	          showNextMsg();
+	        };
+	        ['modal', 'showClose', 'closeOnClickModal', 'closeOnPressEscape'].forEach(function (prop) {
+	          if (instance[prop] === undefined) {
+	            instance[prop] = true;
+	          }
+	        });
+	        document.body.appendChild(instance.$el);
+
+	        _vue2.default.nextTick(function () {
+	          instance.value = true;
+	        });
+	      })();
+	    }
+	  }
+	};
+
+	var MessageBox = function MessageBox(options, callback) {
+	  if (_vue2.default.prototype.$isServer) return;
+	  if (typeof options === 'string') {
+	    options = {
+	      message: options
+	    };
+	    if (arguments[1]) {
+	      options.title = arguments[1];
+	    }
+	    if (arguments[2]) {
+	      options.type = arguments[2];
+	    }
+	  } else if (options.callback && !callback) {
+	    callback = options.callback;
+	  }
+
+	  if (typeof Promise !== 'undefined') {
+	    return new Promise(function (resolve, reject) {
+	      // eslint-disable-line
+	      msgQueue.push({
+	        options: (0, _merge2.default)({}, defaults, MessageBox.defaults, options),
+	        callback: callback,
+	        resolve: resolve,
+	        reject: reject
+	      });
+
+	      showNextMsg();
+	    });
+	  } else {
+	    msgQueue.push({
+	      options: (0, _merge2.default)({}, defaults, MessageBox.defaults, options),
+	      callback: callback
+	    });
+
+	    showNextMsg();
+	  }
+	};
+
+	MessageBox.setDefaults = function (defaults) {
+	  MessageBox.defaults = defaults;
+	};
+
+	MessageBox.alert = function (message, title, options) {
+	  if ((typeof title === 'undefined' ? 'undefined' : _typeof(title)) === 'object') {
+	    options = title;
+	    title = '';
+	  }
+	  return MessageBox((0, _merge2.default)({
+	    title: title,
+	    message: message,
+	    $type: 'alert',
+	    closeOnPressEscape: false,
+	    closeOnClickModal: false
+	  }, options));
+	};
+
+	MessageBox.confirm = function (message, title, options) {
+	  if ((typeof title === 'undefined' ? 'undefined' : _typeof(title)) === 'object') {
+	    options = title;
+	    title = '';
+	  }
+	  return MessageBox((0, _merge2.default)({
+	    title: title,
+	    message: message,
+	    $type: 'confirm',
+	    showCancelButton: true
+	  }, options));
+	};
+
+	MessageBox.prompt = function (message, title, options) {
+	  if ((typeof title === 'undefined' ? 'undefined' : _typeof(title)) === 'object') {
+	    options = title;
+	    title = '';
+	  }
+	  return MessageBox((0, _merge2.default)({
+	    title: title,
+	    message: message,
+	    showCancelButton: true,
+	    showInput: true,
+	    $type: 'prompt'
+	  }, options));
+	};
+
+	MessageBox.close = function () {
+	  instance.value = false;
+	  msgQueue = [];
+	  currentMsg = null;
+	};
+
+	exports.default = MessageBox;
+	exports.MessageBox = MessageBox;
+
+/***/ },
+
+/***/ 201:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(202),
+	  /* template */
+	  __webpack_require__(203),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 202:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _popup = __webpack_require__(132);
+
+	var _popup2 = _interopRequireDefault(_popup);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _button = __webpack_require__(137);
+
+	var _button2 = _interopRequireDefault(_button);
+
+	var _dom = __webpack_require__(117);
+
+	var _locale3 = __webpack_require__(61);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var typeMap = {
+	  success: 'circle-check',
+	  info: 'information',
+	  warning: 'warning',
+	  error: 'circle-cross'
+	};
+
+	exports.default = {
+	  mixins: [_popup2.default, _locale2.default],
+
+	  props: {
+	    modal: {
+	      default: true
+	    },
+	    lockScroll: {
+	      default: true
+	    },
+	    showClose: {
+	      type: Boolean,
+	      default: true
+	    },
+	    closeOnClickModal: {
+	      default: true
+	    },
+	    closeOnPressEscape: {
+	      default: true
+	    }
+	  },
+
+	  components: {
+	    ElInput: _input2.default,
+	    ElButton: _button2.default
+	  },
+
+	  computed: {
+	    typeClass: function typeClass() {
+	      return this.type && typeMap[this.type] ? 'el-icon-' + typeMap[this.type] : '';
+	    },
+	    confirmButtonClasses: function confirmButtonClasses() {
+	      return 'el-button--primary ' + this.confirmButtonClass;
+	    },
+	    cancelButtonClasses: function cancelButtonClasses() {
+	      return '' + this.cancelButtonClass;
+	    }
+	  },
+
+	  methods: {
+	    getSafeClose: function getSafeClose() {
+	      var _this = this;
+
+	      var currentId = this.uid;
+	      return function () {
+	        _this.$nextTick(function () {
+	          if (currentId === _this.uid) _this.doClose();
+	        });
+	      };
+	    },
+	    doClose: function doClose() {
+	      var _this2 = this;
+
+	      if (!this.value) return;
+	      this.value = false;
+	      this._closing = true;
+
+	      this.onClose && this.onClose();
+
+	      if (this.lockScroll) {
+	        setTimeout(function () {
+	          if (_this2.modal && _this2.bodyOverflow !== 'hidden') {
+	            document.body.style.overflow = _this2.bodyOverflow;
+	            document.body.style.paddingRight = _this2.bodyPaddingRight;
+	          }
+	          _this2.bodyOverflow = null;
+	          _this2.bodyPaddingRight = null;
+	        }, 200);
+	      }
+	      this.opened = false;
+
+	      if (!this.transition) {
+	        this.doAfterClose();
+	      }
+	      if (this.action) this.callback(this.action, this);
+	    },
+	    handleWrapperClick: function handleWrapperClick() {
+	      if (this.closeOnClickModal) {
+	        this.action = '';
+	        this.doClose();
+	      }
+	    },
+	    handleAction: function handleAction(action) {
+	      if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) {
+	        return;
+	      }
+	      this.action = action;
+	      if (typeof this.beforeClose === 'function') {
+	        this.close = this.getSafeClose();
+	        this.beforeClose(action, this, this.close);
+	      } else {
+	        this.doClose();
+	      }
+	    },
+	    validate: function validate() {
+	      if (this.$type === 'prompt') {
+	        var inputPattern = this.inputPattern;
+	        if (inputPattern && !inputPattern.test(this.inputValue || '')) {
+	          this.editorErrorMessage = this.inputErrorMessage || (0, _locale3.t)('el.messagebox.error');
+	          (0, _dom.addClass)(this.$refs.input.$el.querySelector('input'), 'invalid');
+	          return false;
+	        }
+	        var inputValidator = this.inputValidator;
+	        if (typeof inputValidator === 'function') {
+	          var validateResult = inputValidator(this.inputValue);
+	          if (validateResult === false) {
+	            this.editorErrorMessage = this.inputErrorMessage || (0, _locale3.t)('el.messagebox.error');
+	            (0, _dom.addClass)(this.$refs.input.$el.querySelector('input'), 'invalid');
+	            return false;
+	          }
+	          if (typeof validateResult === 'string') {
+	            this.editorErrorMessage = validateResult;
+	            return false;
+	          }
+	        }
+	      }
+	      this.editorErrorMessage = '';
+	      (0, _dom.removeClass)(this.$refs.input.$el.querySelector('input'), 'invalid');
+	      return true;
+	    }
+	  },
+
+	  watch: {
+	    inputValue: {
+	      immediate: true,
+	      handler: function handler(val) {
+	        var _this3 = this;
+
+	        this.$nextTick(function (_) {
+	          if (_this3.$type === 'prompt' && val !== null) {
+	            _this3.validate();
+	          }
+	        });
+	      }
+	    },
+
+	    value: function value(val) {
+	      var _this4 = this;
+
+	      if (val) this.uid++;
+	      if (this.$type === 'alert' || this.$type === 'confirm') {
+	        this.$nextTick(function () {
+	          _this4.$refs.confirm.$el.focus();
+	        });
+	      }
+	      if (this.$type !== 'prompt') return;
+	      if (val) {
+	        setTimeout(function () {
+	          if (_this4.$refs.input && _this4.$refs.input.$el) {
+	            _this4.$refs.input.$el.querySelector('input').focus();
+	          }
+	        }, 500);
+	      } else {
+	        this.editorErrorMessage = '';
+	        (0, _dom.removeClass)(this.$refs.input.$el.querySelector('input'), 'invalid');
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      uid: 1,
+	      title: undefined,
+	      message: '',
+	      type: '',
+	      customClass: '',
+	      showInput: false,
+	      inputValue: null,
+	      inputPlaceholder: '',
+	      inputPattern: null,
+	      inputValidator: null,
+	      inputErrorMessage: '',
+	      showConfirmButton: true,
+	      showCancelButton: false,
+	      action: '',
+	      confirmButtonText: '',
+	      cancelButtonText: '',
+	      confirmButtonLoading: false,
+	      cancelButtonLoading: false,
+	      confirmButtonClass: '',
+	      confirmButtonDisabled: false,
+	      cancelButtonClass: '',
+	      editorErrorMessage: null,
+	      callback: null
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 203:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "msgbox-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.value),
+	      expression: "value"
+	    }],
+	    staticClass: "el-message-box__wrapper",
+	    on: {
+	      "click": function($event) {
+	        if ($event.target !== $event.currentTarget) { return; }
+	        _vm.handleWrapperClick($event)
+	      }
+	    }
+	  }, [_c('div', {
+	    staticClass: "el-message-box",
+	    class: _vm.customClass
+	  }, [(_vm.title !== undefined) ? _c('div', {
+	    staticClass: "el-message-box__header"
+	  }, [_c('div', {
+	    staticClass: "el-message-box__title"
+	  }, [_vm._v(_vm._s(_vm.title || _vm.t('el.messagebox.title')))]), (_vm.showClose) ? _c('i', {
+	    staticClass: "el-message-box__close el-icon-close",
+	    on: {
+	      "click": function($event) {
+	        _vm.handleAction('cancel')
+	      }
+	    }
+	  }) : _vm._e()]) : _vm._e(), (_vm.message !== '') ? _c('div', {
+	    staticClass: "el-message-box__content"
+	  }, [_c('div', {
+	    staticClass: "el-message-box__status",
+	    class: [_vm.typeClass]
+	  }), _c('div', {
+	    staticClass: "el-message-box__message",
+	    style: ({
+	      'margin-left': _vm.typeClass ? '50px' : '0'
+	    })
+	  }, [_c('p', [_vm._v(_vm._s(_vm.message))])]), _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showInput),
+	      expression: "showInput"
+	    }],
+	    staticClass: "el-message-box__input"
+	  }, [_c('el-input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.inputValue),
+	      expression: "inputValue"
+	    }],
+	    ref: "input",
+	    attrs: {
+	      "placeholder": _vm.inputPlaceholder
+	    },
+	    domProps: {
+	      "value": (_vm.inputValue)
+	    },
+	    on: {
+	      "input": function($event) {
+	        _vm.inputValue = $event
+	      }
+	    },
+	    nativeOn: {
+	      "keyup": function($event) {
+	        if (_vm._k($event.keyCode, "enter", 13)) { return; }
+	        _vm.handleAction('confirm')
+	      }
+	    }
+	  }), _c('div', {
+	    staticClass: "el-message-box__errormsg",
+	    style: ({
+	      visibility: !!_vm.editorErrorMessage ? 'visible' : 'hidden'
+	    })
+	  }, [_vm._v(_vm._s(_vm.editorErrorMessage))])], 1)]) : _vm._e(), _c('div', {
+	    staticClass: "el-message-box__btns"
+	  }, [_c('el-button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showCancelButton),
+	      expression: "showCancelButton"
+	    }],
+	    class: [_vm.cancelButtonClasses],
+	    attrs: {
+	      "loading": _vm.cancelButtonLoading
+	    },
+	    nativeOn: {
+	      "click": function($event) {
+	        _vm.handleAction('cancel')
+	      }
+	    }
+	  }, [_vm._v("\n          " + _vm._s(_vm.cancelButtonText || _vm.t('el.messagebox.cancel')) + "\n        ")]), _c('el-button', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showConfirmButton),
+	      expression: "showConfirmButton"
+	    }],
+	    ref: "confirm",
+	    class: [_vm.confirmButtonClasses],
+	    attrs: {
+	      "loading": _vm.confirmButtonLoading
+	    },
+	    nativeOn: {
+	      "click": function($event) {
+	        _vm.handleAction('confirm')
+	      }
+	    }
+	  }, [_vm._v("\n          " + _vm._s(_vm.confirmButtonText || _vm.t('el.messagebox.confirm')) + "\n        ")])], 1)])])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

文件差異過大導致無法顯示
+ 359 - 0
static/element-ui/lib/message.js


+ 36 - 0
static/element-ui/lib/mixins/emitter.js

@@ -0,0 +1,36 @@
+"use strict";
+
+exports.__esModule = true;
+function _broadcast(componentName, eventName, params) {
+  this.$children.forEach(function (child) {
+    var name = child.$options.componentName;
+
+    if (name === componentName) {
+      child.$emit.apply(child, [eventName].concat(params));
+    } else {
+      _broadcast.apply(child, [componentName, eventName].concat([params]));
+    }
+  });
+}
+exports.default = {
+  methods: {
+    dispatch: function dispatch(componentName, eventName, params) {
+      var parent = this.$parent || this.$root;
+      var name = parent.$options.componentName;
+
+      while (parent && (!name || name !== componentName)) {
+        parent = parent.$parent;
+
+        if (parent) {
+          name = parent.$options.componentName;
+        }
+      }
+      if (parent) {
+        parent.$emit.apply(parent, [eventName].concat(params));
+      }
+    },
+    broadcast: function broadcast(componentName, eventName, params) {
+      _broadcast.call(this, componentName, eventName, params);
+    }
+  }
+};

+ 17 - 0
static/element-ui/lib/mixins/locale.js

@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__esModule = true;
+
+var _locale = require('element-ui/lib/locale');
+
+exports.default = {
+  methods: {
+    t: function t() {
+      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+        args[_key] = arguments[_key];
+      }
+
+      return _locale.t.apply(this, args);
+    }
+  }
+};

+ 62 - 0
static/element-ui/lib/mixins/migrating.js

@@ -0,0 +1,62 @@
+'use strict';
+
+exports.__esModule = true;
+/**
+ * Show migrating guide in browser console.
+ *
+ * Usage:
+ * import Migrating from 'element-ui/src/mixins/migrating';
+ *
+ * mixins: [Migrating]
+ *
+ * add getMigratingConfig method for your component.
+ *  getMigratingConfig() {
+ *    return {
+ *      props: {
+ *        'allow-no-selection': 'allow-no-selection is removed.',
+ *        'selection-mode': 'selection-mode is removed.'
+ *      },
+ *      events: {
+ *        selectionchange: 'selectionchange is renamed to selection-change.'
+ *      }
+ *    };
+ *  },
+ */
+exports.default = {
+  mounted: function mounted() {
+    if (process.env.NODE_ENV === 'production') return;
+    if (!this.$vnode) return;
+
+    var _getMigratingConfig = this.getMigratingConfig(),
+        props = _getMigratingConfig.props,
+        events = _getMigratingConfig.events;
+
+    var _$vnode = this.$vnode,
+        data = _$vnode.data,
+        componentOptions = _$vnode.componentOptions;
+
+    var definedProps = data.attrs || {};
+    var definedEvents = componentOptions.listeners || {};
+
+    for (var propName in definedProps) {
+      if (definedProps.hasOwnProperty(propName) && props[propName]) {
+        console.warn('[Element Migrating][Attribute]: ' + props[propName]);
+      }
+    }
+
+    for (var eventName in definedEvents) {
+      if (definedEvents.hasOwnProperty(eventName) && events[eventName]) {
+        console.warn('[Element Migrating][Event]: ' + events[eventName]);
+      }
+    }
+  },
+
+  methods: {
+    getMigratingConfig: function getMigratingConfig() {
+      return {
+        props: {},
+        events: {}
+      };
+    }
+  }
+};

+ 428 - 0
static/element-ui/lib/notification.js

@@ -0,0 +1,428 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(204);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 132:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/popup");
+
+/***/ },
+
+/***/ 204:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(205);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 205:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _popup = __webpack_require__(132);
+
+	var _vdom = __webpack_require__(206);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var NotificationConstructor = _vue2.default.extend(__webpack_require__(207));
+
+	var instance = void 0;
+	var instances = [];
+	var seed = 1;
+
+	var Notification = function Notification(options) {
+	  if (_vue2.default.prototype.$isServer) return;
+	  options = options || {};
+	  var userOnClose = options.onClose;
+	  var id = 'notification_' + seed++;
+
+	  options.onClose = function () {
+	    Notification.close(id, userOnClose);
+	  };
+
+	  instance = new NotificationConstructor({
+	    data: options
+	  });
+
+	  if ((0, _vdom.isVNode)(options.message)) {
+	    instance.$slots.default = [options.message];
+	    options.message = '';
+	  }
+	  instance.id = id;
+	  instance.vm = instance.$mount();
+	  document.body.appendChild(instance.vm.$el);
+	  instance.vm.visible = true;
+	  instance.dom = instance.vm.$el;
+	  instance.dom.style.zIndex = _popup.PopupManager.nextZIndex();
+
+	  var offset = options.offset || 0;
+	  var topDist = offset;
+	  for (var i = 0, len = instances.length; i < len; i++) {
+	    topDist += instances[i].$el.offsetHeight + 16;
+	  }
+	  topDist += 16;
+	  instance.top = topDist;
+	  instances.push(instance);
+	  return instance.vm;
+	};
+
+	['success', 'warning', 'info', 'error'].forEach(function (type) {
+	  Notification[type] = function (options) {
+	    if (typeof options === 'string' || (0, _vdom.isVNode)(options)) {
+	      options = {
+	        message: options
+	      };
+	    }
+	    options.type = type;
+	    return Notification(options);
+	  };
+	});
+
+	Notification.close = function (id, userOnClose) {
+	  var index = void 0;
+	  var removedHeight = void 0;
+	  for (var i = 0, len = instances.length; i < len; i++) {
+	    if (id === instances[i].id) {
+	      if (typeof userOnClose === 'function') {
+	        userOnClose(instances[i]);
+	      }
+	      index = i;
+	      removedHeight = instances[i].dom.offsetHeight;
+	      instances.splice(i, 1);
+	      break;
+	    }
+	  }
+
+	  if (len > 1) {
+	    for (i = index; i < len - 1; i++) {
+	      instances[i].dom.style.top = parseInt(instances[i].dom.style.top, 10) - removedHeight - 16 + 'px';
+	    }
+	  }
+	};
+
+	exports.default = Notification;
+
+/***/ },
+
+/***/ 206:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vdom");
+
+/***/ },
+
+/***/ 207:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(208),
+	  /* template */
+	  __webpack_require__(209),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 208:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var typeMap = {
+	  success: 'circle-check',
+	  info: 'information',
+	  warning: 'warning',
+	  error: 'circle-cross'
+	};
+
+	exports.default = {
+	  data: function data() {
+	    return {
+	      visible: false,
+	      title: '',
+	      message: '',
+	      duration: 4500,
+	      type: '',
+	      customClass: '',
+	      iconClass: '',
+	      onClose: null,
+	      closed: false,
+	      top: null,
+	      timer: null
+	    };
+	  },
+
+
+	  computed: {
+	    typeClass: function typeClass() {
+	      return this.type && typeMap[this.type] ? 'el-icon-' + typeMap[this.type] : '';
+	    }
+	  },
+
+	  watch: {
+	    closed: function closed(newVal) {
+	      if (newVal) {
+	        this.visible = false;
+	        this.$el.addEventListener('transitionend', this.destroyElement);
+	      }
+	    }
+	  },
+
+	  methods: {
+	    destroyElement: function destroyElement() {
+	      this.$el.removeEventListener('transitionend', this.destroyElement);
+	      this.$destroy(true);
+	      this.$el.parentNode.removeChild(this.$el);
+	    },
+	    close: function close() {
+	      this.closed = true;
+	      if (typeof this.onClose === 'function') {
+	        this.onClose();
+	      }
+	    },
+	    clearTimer: function clearTimer() {
+	      clearTimeout(this.timer);
+	    },
+	    startTimer: function startTimer() {
+	      var _this = this;
+
+	      if (this.duration > 0) {
+	        this.timer = setTimeout(function () {
+	          if (!_this.closed) {
+	            _this.close();
+	          }
+	        }, this.duration);
+	      }
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var _this2 = this;
+
+	    if (this.duration > 0) {
+	      this.timer = setTimeout(function () {
+	        if (!_this2.closed) {
+	          _this2.close();
+	        }
+	      }, this.duration);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 209:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-notification-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-notification",
+	    class: _vm.customClass,
+	    style: ({
+	      top: _vm.top ? _vm.top + 'px' : 'auto'
+	    }),
+	    on: {
+	      "mouseenter": function($event) {
+	        _vm.clearTimer()
+	      },
+	      "mouseleave": function($event) {
+	        _vm.startTimer()
+	      }
+	    }
+	  }, [(_vm.type || _vm.iconClass) ? _c('i', {
+	    staticClass: "el-notification__icon",
+	    class: [_vm.typeClass, _vm.iconClass]
+	  }) : _vm._e(), _c('div', {
+	    staticClass: "el-notification__group",
+	    class: {
+	      'is-with-icon': _vm.typeClass || _vm.iconClass
+	    }
+	  }, [_c('h2', {
+	    staticClass: "el-notification__title",
+	    domProps: {
+	      "textContent": _vm._s(_vm.title)
+	    }
+	  }), _c('div', {
+	    staticClass: "el-notification__content"
+	  }, [_vm._t("default", [_vm._v(_vm._s(_vm.message))])], 2), _c('div', {
+	    staticClass: "el-notification__closeBtn el-icon-close",
+	    on: {
+	      "click": _vm.close
+	    }
+	  })])])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 248 - 0
static/element-ui/lib/option-group.js

@@ -0,0 +1,248 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(214);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 214:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _optionGroup = __webpack_require__(215);
+
+	var _optionGroup2 = _interopRequireDefault(_optionGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_optionGroup2.default.install = function (Vue) {
+	  Vue.component(_optionGroup2.default.name, _optionGroup2.default);
+	};
+
+	exports.default = _optionGroup2.default;
+
+/***/ },
+
+/***/ 215:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(216),
+	  /* template */
+	  __webpack_require__(217),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 216:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  mixins: [_emitter2.default],
+
+	  name: 'ElOptionGroup',
+
+	  componentName: 'ElOptionGroup',
+
+	  props: {
+	    label: String,
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      visible: true
+	    };
+	  },
+
+
+	  watch: {
+	    disabled: function disabled(val) {
+	      this.broadcast('ElOption', 'handleGroupDisabled', val);
+	    }
+	  },
+
+	  methods: {
+	    queryChange: function queryChange() {
+	      this.visible = this.$children && Array.isArray(this.$children) && this.$children.some(function (option) {
+	        return option.visible === true;
+	      });
+	    }
+	  },
+
+	  created: function created() {
+	    this.$on('queryChange', this.queryChange);
+	  },
+	  mounted: function mounted() {
+	    if (this.disabled) {
+	      this.broadcast('ElOption', 'handleGroupDisabled', this.disabled);
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 217:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('ul', {
+	    staticClass: "el-select-group__wrap"
+	  }, [_c('li', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-select-group__title"
+	  }, [_vm._v(_vm._s(_vm.label))]), _c('li', [_c('ul', {
+	    staticClass: "el-select-group"
+	  }, [_vm._t("default")], 2)])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 331 - 0
static/element-ui/lib/option.js

@@ -0,0 +1,331 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(210);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 210:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _option = __webpack_require__(211);
+
+	var _option2 = _interopRequireDefault(_option);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_option2.default.install = function (Vue) {
+	  Vue.component(_option2.default.name, _option2.default);
+	};
+
+	exports.default = _option2.default;
+
+/***/ },
+
+/***/ 211:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(212),
+	  /* template */
+	  __webpack_require__(213),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 212:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  mixins: [_emitter2.default],
+
+	  name: 'ElOption',
+
+	  componentName: 'ElOption',
+
+	  props: {
+	    value: {
+	      required: true
+	    },
+	    label: [String, Number],
+	    created: Boolean,
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      index: -1,
+	      groupDisabled: false,
+	      visible: true,
+	      hitState: false
+	    };
+	  },
+
+
+	  computed: {
+	    currentLabel: function currentLabel() {
+	      return this.label || (typeof this.value === 'string' || typeof this.value === 'number' ? this.value : '');
+	    },
+	    currentValue: function currentValue() {
+	      return this.value || this.label || '';
+	    },
+	    parent: function parent() {
+	      var result = this.$parent;
+	      while (!result.isSelect) {
+	        result = result.$parent;
+	      }
+	      return result;
+	    },
+	    itemSelected: function itemSelected() {
+	      if (!this.parent.multiple) {
+	        return this.value === this.parent.value;
+	      } else {
+	        return this.parent.value.indexOf(this.value) > -1;
+	      }
+	    },
+	    limitReached: function limitReached() {
+	      if (this.parent.multiple) {
+	        return !this.itemSelected && this.parent.value.length >= this.parent.multipleLimit && this.parent.multipleLimit > 0;
+	      } else {
+	        return false;
+	      }
+	    }
+	  },
+
+	  watch: {
+	    currentLabel: function currentLabel() {
+	      if (!this.created && !this.parent.remote) this.dispatch('ElSelect', 'setSelected');
+	    },
+	    value: function value() {
+	      if (!this.created && !this.parent.remote) this.dispatch('ElSelect', 'setSelected');
+	    }
+	  },
+
+	  methods: {
+	    handleGroupDisabled: function handleGroupDisabled(val) {
+	      this.groupDisabled = val;
+	    },
+	    hoverItem: function hoverItem() {
+	      if (!this.disabled && !this.groupDisabled) {
+	        this.parent.hoverIndex = this.parent.options.indexOf(this);
+	      }
+	    },
+	    selectOptionClick: function selectOptionClick() {
+	      if (this.disabled !== true && this.groupDisabled !== true) {
+	        this.dispatch('ElSelect', 'handleOptionClick', this);
+	      }
+	    },
+	    queryChange: function queryChange(query) {
+	      // query 里如果有正则中的特殊字符,需要先将这些字符转义
+	      var parsedQuery = String(query).replace(/(\^|\(|\)|\[|\]|\$|\*|\+|\.|\?|\\|\{|\}|\|)/g, '\\$1');
+	      this.visible = new RegExp(parsedQuery, 'i').test(this.currentLabel) || this.created;
+	      if (!this.visible) {
+	        this.parent.filteredOptionsCount--;
+	      }
+	    },
+	    resetIndex: function resetIndex() {
+	      var _this = this;
+
+	      this.$nextTick(function () {
+	        _this.index = _this.parent.options.indexOf(_this);
+	      });
+	    }
+	  },
+
+	  created: function created() {
+	    this.parent.options.push(this);
+	    this.parent.cachedOptions.push(this);
+	    this.parent.optionsCount++;
+	    this.parent.filteredOptionsCount++;
+	    this.index = this.parent.options.indexOf(this);
+
+	    this.$on('queryChange', this.queryChange);
+	    this.$on('handleGroupDisabled', this.handleGroupDisabled);
+	    this.$on('resetIndex', this.resetIndex);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.dispatch('ElSelect', 'onOptionDestroy', this);
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 213:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-select-dropdown__item",
+	    class: {
+	      'selected': _vm.itemSelected,
+	      'is-disabled': _vm.disabled || _vm.groupDisabled || _vm.limitReached,
+	        'hover': _vm.parent.hoverIndex === _vm.index
+	    },
+	    on: {
+	      "mouseenter": _vm.hoverItem,
+	      "click": function($event) {
+	        $event.stopPropagation();
+	        _vm.selectOptionClick($event)
+	      }
+	    }
+	  }, [_vm._t("default", [_c('span', [_vm._v(_vm._s(_vm.currentLabel))])])], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 808 - 0
static/element-ui/lib/pagination.js

@@ -0,0 +1,808 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(218);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 60:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+
+/***/ 218:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _pagination = __webpack_require__(219);
+
+	var _pagination2 = _interopRequireDefault(_pagination);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_pagination2.default.install = function (Vue) {
+	  Vue.component(_pagination2.default.name, _pagination2.default);
+	};
+
+	exports.default = _pagination2.default;
+
+/***/ },
+
+/***/ 219:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _pager = __webpack_require__(220);
+
+	var _pager2 = _interopRequireDefault(_pager);
+
+	var _select = __webpack_require__(223);
+
+	var _select2 = _interopRequireDefault(_select);
+
+	var _option = __webpack_require__(224);
+
+	var _option2 = _interopRequireDefault(_option);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElPagination',
+
+	  props: {
+	    pageSize: {
+	      type: Number,
+	      default: 10
+	    },
+
+	    small: Boolean,
+
+	    total: Number,
+
+	    pageCount: Number,
+
+	    currentPage: {
+	      type: Number,
+	      default: 1
+	    },
+
+	    layout: {
+	      default: 'prev, pager, next, jumper, ->, total'
+	    },
+
+	    pageSizes: {
+	      type: Array,
+	      default: function _default() {
+	        return [10, 20, 30, 40, 50, 100];
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      internalCurrentPage: 1,
+	      internalPageSize: 0
+	    };
+	  },
+	  render: function render(h) {
+	    var template = h(
+	      'div',
+	      { 'class': 'el-pagination' },
+	      []
+	    );
+	    var layout = this.layout || '';
+	    if (!layout) return;
+	    var TEMPLATE_MAP = {
+	      prev: h(
+	        'prev',
+	        null,
+	        []
+	      ),
+	      jumper: h(
+	        'jumper',
+	        null,
+	        []
+	      ),
+	      pager: h(
+	        'pager',
+	        {
+	          attrs: { currentPage: this.internalCurrentPage, pageCount: this.internalPageCount },
+	          on: {
+	            'change': this.handleCurrentChange
+	          }
+	        },
+	        []
+	      ),
+	      next: h(
+	        'next',
+	        null,
+	        []
+	      ),
+	      sizes: h(
+	        'sizes',
+	        {
+	          attrs: { pageSizes: this.pageSizes }
+	        },
+	        []
+	      ),
+	      slot: h(
+	        'my-slot',
+	        null,
+	        []
+	      ),
+	      total: h(
+	        'total',
+	        null,
+	        []
+	      )
+	    };
+	    var components = layout.split(',').map(function (item) {
+	      return item.trim();
+	    });
+	    var rightWrapper = h(
+	      'div',
+	      { 'class': 'el-pagination__rightwrapper' },
+	      []
+	    );
+	    var haveRightWrapper = false;
+
+	    if (this.small) {
+	      template.data.class += ' el-pagination--small';
+	    }
+
+	    components.forEach(function (compo) {
+	      if (compo === '->') {
+	        haveRightWrapper = true;
+	        return;
+	      }
+
+	      if (!haveRightWrapper) {
+	        template.children.push(TEMPLATE_MAP[compo]);
+	      } else {
+	        rightWrapper.children.push(TEMPLATE_MAP[compo]);
+	      }
+	    });
+
+	    if (haveRightWrapper) {
+	      template.children.push(rightWrapper);
+	    }
+
+	    return template;
+	  },
+
+
+	  components: {
+	    MySlot: {
+	      render: function render(h) {
+	        return this.$parent.$slots.default ? this.$parent.$slots.default[0] : '';
+	      }
+	    },
+	    Prev: {
+	      render: function render(h) {
+	        return h(
+	          'button',
+	          {
+	            attrs: {
+	              type: 'button'
+	            },
+	            'class': ['btn-prev', { disabled: this.$parent.internalCurrentPage <= 1 }],
+	            on: {
+	              'click': this.$parent.prev
+	            }
+	          },
+	          [h(
+	            'i',
+	            { 'class': 'el-icon el-icon-arrow-left' },
+	            []
+	          )]
+	        );
+	      }
+	    },
+
+	    Next: {
+	      render: function render(h) {
+	        return h(
+	          'button',
+	          {
+	            attrs: {
+	              type: 'button'
+	            },
+	            'class': ['btn-next', { disabled: this.$parent.internalCurrentPage === this.$parent.internalPageCount || this.$parent.internalPageCount === 0 }],
+	            on: {
+	              'click': this.$parent.next
+	            }
+	          },
+	          [h(
+	            'i',
+	            { 'class': 'el-icon el-icon-arrow-right' },
+	            []
+	          )]
+	        );
+	      }
+	    },
+
+	    Sizes: {
+	      mixins: [_locale2.default],
+
+	      props: {
+	        pageSizes: Array
+	      },
+
+	      watch: {
+	        pageSizes: {
+	          immediate: true,
+	          handler: function handler(value) {
+	            if (Array.isArray(value)) {
+	              this.$parent.internalPageSize = value.indexOf(this.$parent.pageSize) > -1 ? this.$parent.pageSize : this.pageSizes[0];
+	            }
+	          }
+	        }
+	      },
+
+	      render: function render(h) {
+	        var _this = this;
+
+	        return h(
+	          'span',
+	          { 'class': 'el-pagination__sizes' },
+	          [h(
+	            'el-select',
+	            {
+	              attrs: {
+	                value: this.$parent.internalPageSize
+	              },
+	              on: {
+	                'input': this.handleChange
+	              }
+	            },
+	            [this.pageSizes.map(function (item) {
+	              return h(
+	                'el-option',
+	                {
+	                  attrs: {
+	                    value: item,
+	                    label: item + ' ' + _this.t('el.pagination.pagesize') }
+	                },
+	                []
+	              );
+	            })]
+	          )]
+	        );
+	      },
+
+
+	      components: {
+	        ElSelect: _select2.default,
+	        ElOption: _option2.default
+	      },
+
+	      methods: {
+	        handleChange: function handleChange(val) {
+	          if (val !== this.$parent.internalPageSize) {
+	            this.$parent.internalPageSize = val = parseInt(val, 10);
+	            this.$parent.$emit('size-change', val);
+	          }
+	        }
+	      }
+	    },
+
+	    Jumper: {
+	      mixins: [_locale2.default],
+
+	      data: function data() {
+	        return {
+	          oldValue: null
+	        };
+	      },
+
+
+	      methods: {
+	        handleFocus: function handleFocus(event) {
+	          this.oldValue = event.target.value;
+	        },
+	        handleChange: function handleChange(_ref) {
+	          var target = _ref.target;
+
+	          this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(target.value);
+	          this.oldValue = null;
+	        }
+	      },
+
+	      render: function render(h) {
+	        return h(
+	          'span',
+	          { 'class': 'el-pagination__jump' },
+	          [this.t('el.pagination.goto'), h(
+	            'input',
+	            {
+	              'class': 'el-pagination__editor',
+	              attrs: { type: 'number',
+	                min: 1,
+	                max: this.internalPageCount,
+
+	                number: true },
+	              domProps: {
+	                'value': this.$parent.internalCurrentPage
+	              },
+	              on: {
+	                'change': this.handleChange,
+	                'focus': this.handleFocus
+	              },
+
+	              style: { width: '30px' } },
+	            []
+	          ), this.t('el.pagination.pageClassifier')]
+	        );
+	      }
+	    },
+
+	    Total: {
+	      mixins: [_locale2.default],
+
+	      render: function render(h) {
+	        return typeof this.$parent.total === 'number' ? h(
+	          'span',
+	          { 'class': 'el-pagination__total' },
+	          [this.t('el.pagination.total', { total: this.$parent.total })]
+	        ) : '';
+	      }
+	    },
+
+	    Pager: _pager2.default
+	  },
+
+	  methods: {
+	    handleCurrentChange: function handleCurrentChange(val) {
+	      this.internalCurrentPage = this.getValidCurrentPage(val);
+	    },
+	    prev: function prev() {
+	      var newVal = this.internalCurrentPage - 1;
+	      this.internalCurrentPage = this.getValidCurrentPage(newVal);
+	    },
+	    next: function next() {
+	      var newVal = this.internalCurrentPage + 1;
+	      this.internalCurrentPage = this.getValidCurrentPage(newVal);
+	    },
+	    getValidCurrentPage: function getValidCurrentPage(value) {
+	      value = parseInt(value, 10);
+
+	      var havePageCount = typeof this.internalPageCount === 'number';
+
+	      var resetValue = void 0;
+	      if (!havePageCount) {
+	        if (isNaN(value) || value < 1) resetValue = 1;
+	      } else {
+	        if (value < 1) {
+	          resetValue = 1;
+	        } else if (value > this.internalPageCount) {
+	          resetValue = this.internalPageCount;
+	        }
+	      }
+
+	      if (resetValue === undefined && isNaN(value)) {
+	        resetValue = 1;
+	      } else if (resetValue === 0) {
+	        resetValue = 1;
+	      }
+
+	      return resetValue === undefined ? value : resetValue;
+	    }
+	  },
+
+	  computed: {
+	    internalPageCount: function internalPageCount() {
+	      if (typeof this.total === 'number') {
+	        return Math.ceil(this.total / this.internalPageSize);
+	      } else if (typeof this.pageCount === 'number') {
+	        return this.pageCount;
+	      }
+	      return null;
+	    }
+	  },
+
+	  watch: {
+	    currentPage: {
+	      immediate: true,
+	      handler: function handler(val) {
+	        this.internalCurrentPage = val;
+	      }
+	    },
+
+	    pageSize: {
+	      immediate: true,
+	      handler: function handler(val) {
+	        this.internalPageSize = val;
+	      }
+	    },
+
+	    internalCurrentPage: function internalCurrentPage(newVal, oldVal) {
+	      var _this2 = this;
+
+	      newVal = parseInt(newVal, 10);
+
+	      /* istanbul ignore if */
+	      if (isNaN(newVal)) {
+	        newVal = oldVal || 1;
+	      } else {
+	        newVal = this.getValidCurrentPage(newVal);
+	      }
+
+	      if (newVal !== undefined) {
+	        this.$nextTick(function () {
+	          _this2.internalCurrentPage = newVal;
+	          if (oldVal !== newVal) {
+	            _this2.$emit('current-change', _this2.internalCurrentPage);
+	          }
+	        });
+	      } else {
+	        this.$emit('current-change', this.internalCurrentPage);
+	      }
+	    },
+	    internalPageCount: function internalPageCount(newVal) {
+	      /* istanbul ignore if */
+	      var oldPage = this.internalCurrentPage;
+	      if (newVal > 0 && oldPage === 0) {
+	        this.internalCurrentPage = 1;
+	      } else if (oldPage > newVal) {
+	        this.internalCurrentPage = newVal === 0 ? 1 : newVal;
+	      }
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 220:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(221),
+	  /* template */
+	  __webpack_require__(222),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 221:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElPager',
+
+	  props: {
+	    currentPage: Number,
+
+	    pageCount: Number
+	  },
+
+	  watch: {
+	    showPrevMore: function showPrevMore(val) {
+	      if (!val) this.quickprevIconClass = 'el-icon-more';
+	    },
+	    showNextMore: function showNextMore(val) {
+	      if (!val) this.quicknextIconClass = 'el-icon-more';
+	    }
+	  },
+
+	  methods: {
+	    onPagerClick: function onPagerClick(event) {
+	      var target = event.target;
+	      if (target.tagName === 'UL') {
+	        return;
+	      }
+
+	      var newPage = Number(event.target.textContent);
+	      var pageCount = this.pageCount;
+	      var currentPage = this.currentPage;
+
+	      if (target.className.indexOf('more') !== -1) {
+	        if (target.className.indexOf('quickprev') !== -1) {
+	          newPage = currentPage - 5;
+	        } else if (target.className.indexOf('quicknext') !== -1) {
+	          newPage = currentPage + 5;
+	        }
+	      }
+
+	      /* istanbul ignore if */
+	      if (!isNaN(newPage)) {
+	        if (newPage < 1) {
+	          newPage = 1;
+	        }
+
+	        if (newPage > pageCount) {
+	          newPage = pageCount;
+	        }
+	      }
+
+	      if (newPage !== currentPage) {
+	        this.$emit('change', newPage);
+	      }
+	    }
+	  },
+
+	  computed: {
+	    pagers: function pagers() {
+	      var pagerCount = 7;
+
+	      var currentPage = Number(this.currentPage);
+	      var pageCount = Number(this.pageCount);
+
+	      var showPrevMore = false;
+	      var showNextMore = false;
+
+	      if (pageCount > pagerCount) {
+	        if (currentPage > pagerCount - 2) {
+	          showPrevMore = true;
+	        }
+
+	        if (currentPage < pageCount - 2) {
+	          showNextMore = true;
+	        }
+	      }
+
+	      var array = [];
+
+	      if (showPrevMore && !showNextMore) {
+	        var startPage = pageCount - (pagerCount - 2);
+	        for (var i = startPage; i < pageCount; i++) {
+	          array.push(i);
+	        }
+	      } else if (!showPrevMore && showNextMore) {
+	        for (var _i = 2; _i < pagerCount; _i++) {
+	          array.push(_i);
+	        }
+	      } else if (showPrevMore && showNextMore) {
+	        var offset = Math.floor(pagerCount / 2) - 1;
+	        for (var _i2 = currentPage - offset; _i2 <= currentPage + offset; _i2++) {
+	          array.push(_i2);
+	        }
+	      } else {
+	        for (var _i3 = 2; _i3 < pageCount; _i3++) {
+	          array.push(_i3);
+	        }
+	      }
+
+	      this.showPrevMore = showPrevMore;
+	      this.showNextMore = showNextMore;
+
+	      return array;
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      current: null,
+	      showPrevMore: false,
+	      showNextMore: false,
+	      quicknextIconClass: 'el-icon-more',
+	      quickprevIconClass: 'el-icon-more'
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 222:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('ul', {
+	    staticClass: "el-pager",
+	    on: {
+	      "click": _vm.onPagerClick
+	    }
+	  }, [(_vm.pageCount > 0) ? _c('li', {
+	    staticClass: "number",
+	    class: {
+	      active: _vm.currentPage === 1
+	    }
+	  }, [_vm._v("1")]) : _vm._e(), (_vm.showPrevMore) ? _c('li', {
+	    staticClass: "el-icon more btn-quickprev",
+	    class: [_vm.quickprevIconClass],
+	    on: {
+	      "mouseenter": function($event) {
+	        _vm.quickprevIconClass = 'el-icon-d-arrow-left'
+	      },
+	      "mouseleave": function($event) {
+	        _vm.quickprevIconClass = 'el-icon-more'
+	      }
+	    }
+	  }) : _vm._e(), _vm._l((_vm.pagers), function(pager) {
+	    return _c('li', {
+	      staticClass: "number",
+	      class: {
+	        active: _vm.currentPage === pager
+	      }
+	    }, [_vm._v(_vm._s(pager))])
+	  }), (_vm.showNextMore) ? _c('li', {
+	    staticClass: "el-icon more btn-quicknext",
+	    class: [_vm.quicknextIconClass],
+	    on: {
+	      "mouseenter": function($event) {
+	        _vm.quicknextIconClass = 'el-icon-d-arrow-right'
+	      },
+	      "mouseleave": function($event) {
+	        _vm.quicknextIconClass = 'el-icon-more'
+	      }
+	    }
+	  }) : _vm._e(), (_vm.pageCount > 1) ? _c('li', {
+	    staticClass: "number",
+	    class: {
+	      active: _vm.currentPage === _vm.pageCount
+	    }
+	  }, [_vm._v(_vm._s(_vm.pageCount))]) : _vm._e()], 2)
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 223:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/select");
+
+/***/ },
+
+/***/ 224:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/option");
+
+/***/ }
+
+/******/ });

+ 388 - 0
static/element-ui/lib/popover.js

@@ -0,0 +1,388 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(225);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 13:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 225:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(226);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	var _directive = __webpack_require__(229);
+
+	var _directive2 = _interopRequireDefault(_directive);
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	_vue2.default.directive('popover', _directive2.default);
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.directive('popover', _directive2.default);
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+	_main2.default.directive = _directive2.default;
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 226:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(227),
+	  /* template */
+	  __webpack_require__(228),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 227:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _dom = __webpack_require__(117);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElPopover',
+
+	  mixins: [_vuePopper2.default],
+
+	  props: {
+	    trigger: {
+	      type: String,
+	      default: 'click',
+	      validator: function validator(value) {
+	        return ['click', 'focus', 'hover', 'manual'].indexOf(value) > -1;
+	      }
+	    },
+	    title: String,
+	    disabled: Boolean,
+	    content: String,
+	    reference: {},
+	    popperClass: String,
+	    width: {},
+	    visibleArrow: {
+	      default: true
+	    },
+	    transition: {
+	      type: String,
+	      default: 'fade-in-linear'
+	    }
+	  },
+
+	  watch: {
+	    showPopper: function showPopper(newVal, oldVal) {
+	      newVal ? this.$emit('show') : this.$emit('hide');
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var reference = this.reference || this.$refs.reference;
+	    var popper = this.popper || this.$refs.popper;
+
+	    if (!reference && this.$slots.reference && this.$slots.reference[0]) {
+	      reference = this.referenceElm = this.$slots.reference[0].elm;
+	    }
+	    if (this.trigger === 'click') {
+	      (0, _dom.on)(reference, 'click', this.doToggle);
+	      (0, _dom.on)(document, 'click', this.handleDocumentClick);
+	    } else if (this.trigger === 'hover') {
+	      (0, _dom.on)(reference, 'mouseenter', this.handleMouseEnter);
+	      (0, _dom.on)(popper, 'mouseenter', this.handleMouseEnter);
+	      (0, _dom.on)(reference, 'mouseleave', this.handleMouseLeave);
+	      (0, _dom.on)(popper, 'mouseleave', this.handleMouseLeave);
+	    } else if (this.trigger === 'focus') {
+	      var found = false;
+
+	      if ([].slice.call(reference.children).length) {
+	        var children = reference.childNodes;
+	        var len = children.length;
+	        for (var i = 0; i < len; i++) {
+	          if (children[i].nodeName === 'INPUT' || children[i].nodeName === 'TEXTAREA') {
+	            (0, _dom.on)(children[i], 'focus', this.doShow);
+	            (0, _dom.on)(children[i], 'blur', this.doClose);
+	            found = true;
+	            break;
+	          }
+	        }
+	      }
+	      if (found) return;
+	      if (reference.nodeName === 'INPUT' || reference.nodeName === 'TEXTAREA') {
+	        (0, _dom.on)(reference, 'focus', this.doShow);
+	        (0, _dom.on)(reference, 'blur', this.doClose);
+	      } else {
+	        (0, _dom.on)(reference, 'mousedown', this.doShow);
+	        (0, _dom.on)(reference, 'mouseup', this.doClose);
+	      }
+	    }
+	  },
+
+
+	  methods: {
+	    doToggle: function doToggle() {
+	      this.showPopper = !this.showPopper;
+	    },
+	    doShow: function doShow() {
+	      this.showPopper = true;
+	    },
+	    doClose: function doClose() {
+	      this.showPopper = false;
+	    },
+	    handleMouseEnter: function handleMouseEnter() {
+	      this.showPopper = true;
+	      clearTimeout(this._timer);
+	    },
+	    handleMouseLeave: function handleMouseLeave() {
+	      var _this = this;
+
+	      this._timer = setTimeout(function () {
+	        _this.showPopper = false;
+	      }, 200);
+	    },
+	    handleDocumentClick: function handleDocumentClick(e) {
+	      var reference = this.reference || this.$refs.reference;
+	      var popper = this.popper || this.$refs.popper;
+
+	      if (!reference && this.$slots.reference && this.$slots.reference[0]) {
+	        reference = this.referenceElm = this.$slots.reference[0].elm;
+	      }
+	      if (!this.$el || !reference || this.$el.contains(e.target) || reference.contains(e.target) || !popper || popper.contains(e.target)) return;
+	      this.showPopper = false;
+	    }
+	  },
+
+	  destroyed: function destroyed() {
+	    var reference = this.reference;
+
+	    (0, _dom.off)(reference, 'click', this.doToggle);
+	    (0, _dom.off)(reference, 'mouseup', this.doClose);
+	    (0, _dom.off)(reference, 'mousedown', this.doShow);
+	    (0, _dom.off)(reference, 'focus', this.doShow);
+	    (0, _dom.off)(reference, 'blur', this.doClose);
+	    (0, _dom.off)(reference, 'mouseleave', this.handleMouseLeave);
+	    (0, _dom.off)(reference, 'mouseenter', this.handleMouseEnter);
+	    (0, _dom.off)(document, 'click', this.handleDocumentClick);
+	  }
+	};
+
+/***/ },
+
+/***/ 228:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('span', [_c('transition', {
+	    attrs: {
+	      "name": _vm.transition
+	    },
+	    on: {
+	      "after-leave": _vm.doDestroy
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (!_vm.disabled && _vm.showPopper),
+	      expression: "!disabled && showPopper"
+	    }],
+	    ref: "popper",
+	    staticClass: "el-popover",
+	    class: [_vm.popperClass],
+	    style: ({
+	      width: _vm.width + 'px'
+	    })
+	  }, [(_vm.title) ? _c('div', {
+	    staticClass: "el-popover__title",
+	    domProps: {
+	      "textContent": _vm._s(_vm.title)
+	    }
+	  }) : _vm._e(), _vm._t("default", [_vm._v(_vm._s(_vm.content))])], 2)]), _vm._t("reference")], 2)
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 229:
+/***/ function(module, exports) {
+
+	"use strict";
+
+	exports.__esModule = true;
+	exports.default = {
+	  bind: function bind(el, binding, vnode) {
+	    vnode.context.$refs[binding.arg].$refs.reference = el;
+	  }
+	};
+
+/***/ }
+
+/******/ });

+ 349 - 0
static/element-ui/lib/progress.js

@@ -0,0 +1,349 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(230);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 230:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _progress = __webpack_require__(231);
+
+	var _progress2 = _interopRequireDefault(_progress);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_progress2.default.install = function (Vue) {
+	  Vue.component(_progress2.default.name, _progress2.default);
+	};
+
+	exports.default = _progress2.default;
+
+/***/ },
+
+/***/ 231:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(232),
+	  /* template */
+	  __webpack_require__(233),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 232:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElProgress',
+	  props: {
+	    type: {
+	      type: String,
+	      default: 'line',
+	      validator: function validator(val) {
+	        return ['line', 'circle'].indexOf(val) > -1;
+	      }
+	    },
+	    percentage: {
+	      type: Number,
+	      default: 0,
+	      required: true,
+	      validator: function validator(val) {
+	        return val >= 0 && val <= 100;
+	      }
+	    },
+	    status: {
+	      type: String
+	    },
+	    strokeWidth: {
+	      type: Number,
+	      default: 6
+	    },
+	    textInside: {
+	      type: Boolean,
+	      default: false
+	    },
+	    width: {
+	      type: Number,
+	      default: 126
+	    },
+	    showText: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+	  computed: {
+	    barStyle: function barStyle() {
+	      var style = {};
+	      style.width = this.percentage + '%';
+	      return style;
+	    },
+	    relativeStrokeWidth: function relativeStrokeWidth() {
+	      return (this.strokeWidth / this.width * 100).toFixed(1);
+	    },
+	    trackPath: function trackPath() {
+	      var radius = parseInt(50 - parseFloat(this.relativeStrokeWidth) / 2, 10);
+
+	      return 'M 50 50 m 0 -' + radius + ' a ' + radius + ' ' + radius + ' 0 1 1 0 ' + radius * 2 + ' a ' + radius + ' ' + radius + ' 0 1 1 0 -' + radius * 2;
+	    },
+	    perimeter: function perimeter() {
+	      var radius = 50 - parseFloat(this.relativeStrokeWidth) / 2;
+	      return 2 * Math.PI * radius;
+	    },
+	    circlePathStyle: function circlePathStyle() {
+	      var perimeter = this.perimeter;
+	      return {
+	        strokeDasharray: perimeter + 'px,' + perimeter + 'px',
+	        strokeDashoffset: (1 - this.percentage / 100) * perimeter + 'px',
+	        transition: 'stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease'
+	      };
+	    },
+	    stroke: function stroke() {
+	      var ret;
+	      switch (this.status) {
+	        case 'success':
+	          ret = '#13ce66';
+	          break;
+	        case 'exception':
+	          ret = '#ff4949';
+	          break;
+	        default:
+	          ret = '#20a0ff';
+	      }
+	      return ret;
+	    },
+	    iconClass: function iconClass() {
+	      if (this.type === 'line') {
+	        return this.status === 'success' ? 'el-icon-circle-check' : 'el-icon-circle-cross';
+	      } else {
+	        return this.status === 'success' ? 'el-icon-check' : 'el-icon-close';
+	      }
+	    },
+	    progressTextSize: function progressTextSize() {
+	      return this.type === 'line' ? 12 + this.strokeWidth * 0.4 : this.width * 0.111111 + 2;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 233:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-progress",
+	    class: [
+	      'el-progress--' + _vm.type,
+	      _vm.status ? 'is-' + _vm.status : '', {
+	        'el-progress--without-text': !_vm.showText,
+	        'el-progress--text-inside': _vm.textInside,
+	      }
+	    ]
+	  }, [(_vm.type === 'line') ? _c('div', {
+	    staticClass: "el-progress-bar"
+	  }, [_c('div', {
+	    staticClass: "el-progress-bar__outer",
+	    style: ({
+	      height: _vm.strokeWidth + 'px'
+	    })
+	  }, [_c('div', {
+	    staticClass: "el-progress-bar__inner",
+	    style: (_vm.barStyle)
+	  }, [(_vm.showText && _vm.textInside) ? _c('div', {
+	    staticClass: "el-progress-bar__innerText"
+	  }, [_vm._v(_vm._s(_vm.percentage) + "%")]) : _vm._e()])])]) : _c('div', {
+	    staticClass: "el-progress-circle",
+	    style: ({
+	      height: _vm.width + 'px',
+	      width: _vm.width + 'px'
+	    })
+	  }, [_c('svg', {
+	    attrs: {
+	      "viewBox": "0 0 100 100"
+	    }
+	  }, [_c('path', {
+	    staticClass: "el-progress-circle__track",
+	    attrs: {
+	      "d": _vm.trackPath,
+	      "stroke": "#e5e9f2",
+	      "stroke-width": _vm.relativeStrokeWidth,
+	      "fill": "none"
+	    }
+	  }), _c('path', {
+	    staticClass: "el-progress-circle__path",
+	    style: (_vm.circlePathStyle),
+	    attrs: {
+	      "d": _vm.trackPath,
+	      "stroke-linecap": "round",
+	      "stroke": _vm.stroke,
+	      "stroke-width": _vm.relativeStrokeWidth,
+	      "fill": "none"
+	    }
+	  })])]), (_vm.showText && !_vm.textInside) ? _c('div', {
+	    staticClass: "el-progress__text",
+	    style: ({
+	      fontSize: _vm.progressTextSize + 'px'
+	    })
+	  }, [(!_vm.status) ? [_vm._v(_vm._s(_vm.percentage) + "%")] : _c('i', {
+	    class: _vm.iconClass
+	  })], 2) : _vm._e()])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 267 - 0
static/element-ui/lib/radio-button.js

@@ -0,0 +1,267 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(238);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 238:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _radioButton = __webpack_require__(239);
+
+	var _radioButton2 = _interopRequireDefault(_radioButton);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_radioButton2.default.install = function (Vue) {
+	  Vue.component(_radioButton2.default.name, _radioButton2.default);
+	};
+
+	exports.default = _radioButton2.default;
+
+/***/ },
+
+/***/ 239:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(240),
+	  /* template */
+	  __webpack_require__(241),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 240:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElRadioButton',
+
+	  props: {
+	    label: {},
+	    disabled: Boolean,
+	    name: String
+	  },
+	  computed: {
+	    value: {
+	      get: function get() {
+	        return this._radioGroup.value;
+	      },
+	      set: function set(value) {
+	        this._radioGroup.$emit('input', value);
+	      }
+	    },
+	    _radioGroup: function _radioGroup() {
+	      var parent = this.$parent;
+	      while (parent) {
+	        if (parent.$options.componentName !== 'ElRadioGroup') {
+	          parent = parent.$parent;
+	        } else {
+	          return parent;
+	        }
+	      }
+	      return false;
+	    },
+	    activeStyle: function activeStyle() {
+	      return {
+	        backgroundColor: this._radioGroup.fill || '',
+	        borderColor: this._radioGroup.fill || '',
+	        color: this._radioGroup.textColor || ''
+	      };
+	    },
+	    size: function size() {
+	      return this._radioGroup.size;
+	    },
+	    isDisabled: function isDisabled() {
+	      return this.disabled || this._radioGroup.disabled;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 241:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('label', {
+	    staticClass: "el-radio-button",
+	    class: [
+	      _vm.size ? 'el-radio-button--' + _vm.size : '', {
+	        'is-active': _vm.value === _vm.label
+	      }, {
+	        'is-disabled': _vm.isDisabled
+	      }
+	    ]
+	  }, [_c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.value),
+	      expression: "value"
+	    }],
+	    staticClass: "el-radio-button__orig-radio",
+	    attrs: {
+	      "type": "radio",
+	      "name": _vm.name,
+	      "disabled": _vm.isDisabled
+	    },
+	    domProps: {
+	      "value": _vm.label,
+	      "checked": _vm._q(_vm.value, _vm.label)
+	    },
+	    on: {
+	      "change": function($event) {
+	        _vm.value = _vm.label
+	      }
+	    }
+	  }), _c('span', {
+	    staticClass: "el-radio-button__inner",
+	    style: (_vm.value === _vm.label ? _vm.activeStyle : null)
+	  }, [_vm._t("default"), (!_vm.$slots.default) ? [_vm._v(_vm._s(_vm.label))] : _vm._e()], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 208 - 0
static/element-ui/lib/radio-group.js

@@ -0,0 +1,208 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(242);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 242:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _radioGroup = __webpack_require__(243);
+
+	var _radioGroup2 = _interopRequireDefault(_radioGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_radioGroup2.default.install = function (Vue) {
+	  Vue.component(_radioGroup2.default.name, _radioGroup2.default);
+	};
+
+	exports.default = _radioGroup2.default;
+
+/***/ },
+
+/***/ 243:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(244),
+	  /* template */
+	  __webpack_require__(245),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 244:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElRadioGroup',
+
+	  componentName: 'ElRadioGroup',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    value: {},
+	    size: String,
+	    fill: String,
+	    textColor: String,
+	    disabled: Boolean
+	  },
+	  watch: {
+	    value: function value(_value) {
+	      this.$emit('change', _value);
+	      this.dispatch('ElFormItem', 'el.form.change', [this.value]);
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 245:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-radio-group"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 301 - 0
static/element-ui/lib/radio.js

@@ -0,0 +1,301 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(234);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 234:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _radio = __webpack_require__(235);
+
+	var _radio2 = _interopRequireDefault(_radio);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_radio2.default.install = function (Vue) {
+	  Vue.component('el-radio', _radio2.default);
+	};
+
+	exports.default = _radio2.default;
+
+/***/ },
+
+/***/ 235:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(236),
+	  /* template */
+	  __webpack_require__(237),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 236:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElRadio',
+
+	  mixins: [_emitter2.default],
+
+	  componentName: 'ElRadio',
+
+	  props: {
+	    value: {},
+	    label: {},
+	    disabled: Boolean,
+	    name: String
+	  },
+
+	  data: function data() {
+	    return {
+	      focus: false
+	    };
+	  },
+
+
+	  computed: {
+	    isGroup: function isGroup() {
+	      var parent = this.$parent;
+	      while (parent) {
+	        if (parent.$options.componentName !== 'ElRadioGroup') {
+	          parent = parent.$parent;
+	        } else {
+	          this._radioGroup = parent;
+	          return true;
+	        }
+	      }
+	      return false;
+	    },
+
+
+	    model: {
+	      get: function get() {
+	        return this.isGroup ? this._radioGroup.value : this.value;
+	      },
+	      set: function set(val) {
+	        if (this.isGroup) {
+	          this.dispatch('ElRadioGroup', 'input', [val]);
+	        } else {
+	          this.$emit('input', val);
+	        }
+	      }
+	    },
+
+	    isDisabled: function isDisabled() {
+	      return this.isGroup ? this._radioGroup.disabled || this.disabled : this.disabled;
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 237:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('label', {
+	    staticClass: "el-radio"
+	  }, [_c('span', {
+	    staticClass: "el-radio__input",
+	    class: {
+	      'is-disabled': _vm.isDisabled,
+	      'is-checked': _vm.model === _vm.label,
+	        'is-focus': _vm.focus
+	    }
+	  }, [_c('span', {
+	    staticClass: "el-radio__inner"
+	  }), _c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.model),
+	      expression: "model"
+	    }],
+	    staticClass: "el-radio__original",
+	    attrs: {
+	      "type": "radio",
+	      "name": _vm.name,
+	      "disabled": _vm.isDisabled
+	    },
+	    domProps: {
+	      "value": _vm.label,
+	      "checked": _vm._q(_vm.model, _vm.label)
+	    },
+	    on: {
+	      "focus": function($event) {
+	        _vm.focus = true
+	      },
+	      "blur": function($event) {
+	        _vm.focus = false
+	      },
+	      "change": function($event) {
+	        _vm.model = _vm.label
+	      }
+	    }
+	  })]), _c('span', {
+	    staticClass: "el-radio__label"
+	  }, [_vm._t("default"), (!_vm.$slots.default) ? [_vm._v(_vm._s(_vm.label))] : _vm._e()], 2)])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 469 - 0
static/element-ui/lib/rate.js

@@ -0,0 +1,469 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(246);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 246:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(247);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 247:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(248),
+	  /* template */
+	  __webpack_require__(249),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 248:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dom = __webpack_require__(117);
+
+	exports.default = {
+	  name: 'ElRate',
+
+	  data: function data() {
+	    return {
+	      classMap: {},
+	      colorMap: {},
+	      pointerAtLeftHalf: false,
+	      currentValue: this.value,
+	      hoverIndex: -1
+	    };
+	  },
+
+
+	  props: {
+	    value: {
+	      type: Number,
+	      default: 0
+	    },
+	    lowThreshold: {
+	      type: Number,
+	      default: 2
+	    },
+	    highThreshold: {
+	      type: Number,
+	      default: 4
+	    },
+	    max: {
+	      type: Number,
+	      default: 5
+	    },
+	    colors: {
+	      type: Array,
+	      default: function _default() {
+	        return ['#F7BA2A', '#F7BA2A', '#F7BA2A'];
+	      }
+	    },
+	    voidColor: {
+	      type: String,
+	      default: '#C6D1DE'
+	    },
+	    disabledVoidColor: {
+	      type: String,
+	      default: '#EFF2F7'
+	    },
+	    iconClasses: {
+	      type: Array,
+	      default: function _default() {
+	        return ['el-icon-star-on', 'el-icon-star-on', 'el-icon-star-on'];
+	      }
+	    },
+	    voidIconClass: {
+	      type: String,
+	      default: 'el-icon-star-off'
+	    },
+	    disabledVoidIconClass: {
+	      type: String,
+	      default: 'el-icon-star-on'
+	    },
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    },
+	    allowHalf: {
+	      type: Boolean,
+	      default: false
+	    },
+	    showText: {
+	      type: Boolean,
+	      default: false
+	    },
+	    textColor: {
+	      type: String,
+	      default: '#1f2d3d'
+	    },
+	    texts: {
+	      type: Array,
+	      default: function _default() {
+	        return ['极差', '失望', '一般', '满意', '惊喜'];
+	      }
+	    },
+	    textTemplate: {
+	      type: String,
+	      default: '{value}'
+	    }
+	  },
+
+	  computed: {
+	    text: function text() {
+	      var result = '';
+	      if (this.disabled) {
+	        result = this.textTemplate.replace(/\{\s*value\s*\}/, this.value);
+	      } else {
+	        result = this.texts[Math.ceil(this.currentValue) - 1];
+	      }
+	      return result;
+	    },
+	    decimalStyle: function decimalStyle() {
+	      var width = '';
+	      if (this.disabled) {
+	        width = (this.valueDecimal < 50 ? 0 : 50) + '%';
+	      }
+	      if (this.allowHalf) {
+	        width = '50%';
+	      }
+	      return {
+	        color: this.activeColor,
+	        width: width
+	      };
+	    },
+	    valueDecimal: function valueDecimal() {
+	      return this.value * 100 - Math.floor(this.value) * 100;
+	    },
+	    decimalIconClass: function decimalIconClass() {
+	      return this.getValueFromMap(this.value, this.classMap);
+	    },
+	    voidClass: function voidClass() {
+	      return this.disabled ? this.classMap.disabledVoidClass : this.classMap.voidClass;
+	    },
+	    activeClass: function activeClass() {
+	      return this.getValueFromMap(this.currentValue, this.classMap);
+	    },
+	    activeColor: function activeColor() {
+	      return this.getValueFromMap(this.currentValue, this.colorMap);
+	    },
+	    classes: function classes() {
+	      var result = [];
+	      var i = 0;
+	      var threshold = this.currentValue;
+	      if (this.allowHalf && this.currentValue !== Math.floor(this.currentValue)) {
+	        threshold--;
+	      }
+	      for (; i < threshold; i++) {
+	        result.push(this.activeClass);
+	      }
+	      for (; i < this.max; i++) {
+	        result.push(this.voidClass);
+	      }
+	      return result;
+	    }
+	  },
+
+	  watch: {
+	    value: function value(val) {
+	      this.$emit('change', val);
+	      this.currentValue = val;
+	    }
+	  },
+
+	  methods: {
+	    getValueFromMap: function getValueFromMap(value, map) {
+	      var result = '';
+	      if (value <= this.lowThreshold) {
+	        result = map.lowColor || map.lowClass;
+	      } else if (value >= this.highThreshold) {
+	        result = map.highColor || map.highClass;
+	      } else {
+	        result = map.mediumColor || map.mediumClass;
+	      }
+	      return result;
+	    },
+	    showDecimalIcon: function showDecimalIcon(item) {
+	      var showWhenDisabled = this.disabled && this.valueDecimal > 0 && item - 1 < this.value && item > this.value;
+	      /* istanbul ignore next */
+	      var showWhenAllowHalf = this.allowHalf && this.pointerAtLeftHalf && (item - 0.5).toFixed(1) === this.currentValue.toFixed(1);
+	      return showWhenDisabled || showWhenAllowHalf;
+	    },
+	    getIconStyle: function getIconStyle(item) {
+	      var voidColor = this.disabled ? this.colorMap.disabledVoidColor : this.colorMap.voidColor;
+	      return {
+	        color: item <= this.currentValue ? this.activeColor : voidColor
+	      };
+	    },
+	    selectValue: function selectValue(value) {
+	      if (this.disabled) {
+	        return;
+	      }
+	      if (this.allowHalf && this.pointerAtLeftHalf) {
+	        this.$emit('input', this.currentValue);
+	      } else {
+	        this.$emit('input', value);
+	      }
+	    },
+	    setCurrentValue: function setCurrentValue(value, event) {
+	      if (this.disabled) {
+	        return;
+	      }
+	      /* istanbul ignore if */
+	      if (this.allowHalf) {
+	        var target = event.target;
+	        if ((0, _dom.hasClass)(target, 'el-rate__item')) {
+	          target = target.querySelector('.el-rate__icon');
+	        }
+	        if ((0, _dom.hasClass)(target, 'el-rate__decimal')) {
+	          target = target.parentNode;
+	        }
+	        this.pointerAtLeftHalf = event.offsetX * 2 <= target.clientWidth;
+	        this.currentValue = this.pointerAtLeftHalf ? value - 0.5 : value;
+	      } else {
+	        this.currentValue = value;
+	      }
+	      this.hoverIndex = value;
+	    },
+	    resetCurrentValue: function resetCurrentValue() {
+	      if (this.disabled) {
+	        return;
+	      }
+	      if (this.allowHalf) {
+	        this.pointerAtLeftHalf = this.value !== Math.floor(this.value);
+	      }
+	      this.currentValue = this.value;
+	      this.hoverIndex = -1;
+	    }
+	  },
+
+	  created: function created() {
+	    if (!this.value) {
+	      this.$emit('input', 0);
+	    }
+	    this.classMap = {
+	      lowClass: this.iconClasses[0],
+	      mediumClass: this.iconClasses[1],
+	      highClass: this.iconClasses[2],
+	      voidClass: this.voidIconClass,
+	      disabledVoidClass: this.disabledVoidIconClass
+	    };
+	    this.colorMap = {
+	      lowColor: this.colors[0],
+	      mediumColor: this.colors[1],
+	      highColor: this.colors[2],
+	      voidColor: this.voidColor,
+	      disabledVoidColor: this.disabledVoidColor
+	    };
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 249:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-rate"
+	  }, [_vm._l((_vm.max), function(item) {
+	    return _c('span', {
+	      staticClass: "el-rate__item",
+	      style: ({
+	        cursor: _vm.disabled ? 'auto' : 'pointer'
+	      }),
+	      on: {
+	        "mousemove": function($event) {
+	          _vm.setCurrentValue(item, $event)
+	        },
+	        "mouseleave": _vm.resetCurrentValue,
+	        "click": function($event) {
+	          _vm.selectValue(item)
+	        }
+	      }
+	    }, [_c('i', {
+	      staticClass: "el-rate__icon",
+	      class: [_vm.classes[item - 1], {
+	        'hover': _vm.hoverIndex === item
+	      }],
+	      style: (_vm.getIconStyle(item))
+	    }, [(_vm.showDecimalIcon(item)) ? _c('i', {
+	      staticClass: "el-rate__decimal",
+	      class: _vm.decimalIconClass,
+	      style: (_vm.decimalStyle)
+	    }) : _vm._e()])])
+	  }), (_vm.showText) ? _c('span', {
+	    staticClass: "el-rate__text",
+	    style: ({
+	      color: _vm.textColor
+	    })
+	  }, [_vm._v(_vm._s(_vm.text))]) : _vm._e()], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 221 - 0
static/element-ui/lib/row.js

@@ -0,0 +1,221 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(250);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 250:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _row = __webpack_require__(251);
+
+	var _row2 = _interopRequireDefault(_row);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_row2.default.install = function (Vue) {
+	  Vue.component(_row2.default.name, _row2.default);
+	};
+
+	exports.default = _row2.default;
+
+/***/ },
+
+/***/ 251:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(252),
+	  /* template */
+	  __webpack_require__(253),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 252:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElRow',
+
+	  props: {
+	    gutter: Number,
+	    type: String,
+	    justify: {
+	      type: String,
+	      default: 'start'
+	    },
+	    align: {
+	      type: String,
+	      default: 'top'
+	    }
+	  },
+
+	  computed: {
+	    style: function style() {
+	      var ret = {};
+
+	      if (this.gutter) {
+	        ret.marginLeft = '-' + this.gutter / 2 + 'px';
+	        ret.marginRight = ret.marginLeft;
+	      }
+
+	      return ret;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 253:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-row",
+	    class: [
+	      _vm.justify !== 'start' ? 'is-justify-' + _vm.justify : '',
+	      _vm.align !== 'top' ? 'is-align-' + _vm.align : '', {
+	        'el-row--flex': _vm.type === 'flex'
+	      }
+	    ],
+	    style: (_vm.style)
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 422 - 0
static/element-ui/lib/scrollbar.js

@@ -0,0 +1,422 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(254);
+
+
+/***/ },
+
+/***/ 47:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/resize-event");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 254:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(255);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 255:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _resizeEvent = __webpack_require__(47);
+
+	var _scrollbarWidth = __webpack_require__(256);
+
+	var _scrollbarWidth2 = _interopRequireDefault(_scrollbarWidth);
+
+	var _util = __webpack_require__(257);
+
+	var _bar = __webpack_require__(258);
+
+	var _bar2 = _interopRequireDefault(_bar);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	// reference https://github.com/noeldelgado/gemini-scrollbar/blob/master/index.js
+
+	exports.default = {
+	  name: 'ElScrollbar',
+
+	  components: { Bar: _bar2.default },
+
+	  props: {
+	    native: Boolean,
+	    wrapStyle: {},
+	    wrapClass: {},
+	    viewClass: {},
+	    viewStyle: {},
+	    noresize: Boolean, // 如果 container 尺寸不会发生变化,最好设置它可以优化性能
+	    tag: {
+	      type: String,
+	      default: 'div'
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      sizeWidth: '0',
+	      sizeHeight: '0',
+	      moveX: 0,
+	      moveY: 0
+	    };
+	  },
+
+
+	  computed: {
+	    wrap: function wrap() {
+	      return this.$refs.wrap;
+	    }
+	  },
+
+	  render: function render(h) {
+	    var gutter = (0, _scrollbarWidth2.default)();
+	    var style = this.wrapStyle;
+
+	    if (gutter) {
+	      var gutterWith = '-' + gutter + 'px';
+	      var gutterStyle = 'margin-bottom: ' + gutterWith + '; margin-right: ' + gutterWith + ';';
+
+	      if (Array.isArray(this.wrapStyle)) {
+	        style = (0, _util.toObject)(this.wrapStyle);
+	        style.marginRight = style.marginBottom = gutterWith;
+	      } else if (typeof this.wrapStyle === 'string') {
+	        style += gutterStyle;
+	      } else {
+	        style = gutterStyle;
+	      }
+	    }
+	    var view = h(this.tag, {
+	      class: ['el-scrollbar__view', this.viewClass],
+	      style: this.viewStyle,
+	      ref: 'resize'
+	    }, this.$slots.default);
+	    var wrap = h(
+	      'div',
+	      {
+	        ref: 'wrap',
+	        style: style,
+	        on: {
+	          'scroll': this.handleScroll
+	        },
+
+	        'class': [this.wrapClass, 'el-scrollbar__wrap', gutter ? '' : 'el-scrollbar__wrap--hidden-default'] },
+	      [[view]]
+	    );
+	    var nodes = void 0;
+
+	    if (!this.native) {
+	      nodes = [wrap, h(
+	        _bar2.default,
+	        {
+	          attrs: {
+	            move: this.moveX,
+	            size: this.sizeWidth }
+	        },
+	        []
+	      ), h(
+	        _bar2.default,
+	        {
+	          attrs: {
+	            vertical: true,
+	            move: this.moveY,
+	            size: this.sizeHeight }
+	        },
+	        []
+	      )];
+	    } else {
+	      nodes = [h(
+	        'div',
+	        {
+	          ref: 'wrap',
+	          'class': [this.wrapClass, 'el-scrollbar__wrap'],
+	          style: style },
+	        [[view]]
+	      )];
+	    }
+	    return h('div', { class: 'el-scrollbar' }, nodes);
+	  },
+
+
+	  methods: {
+	    handleScroll: function handleScroll() {
+	      var wrap = this.wrap;
+
+	      this.moveY = wrap.scrollTop * 100 / wrap.clientHeight;
+	      this.moveX = wrap.scrollLeft * 100 / wrap.clientWidth;
+	    },
+	    update: function update() {
+	      var heightPercentage = void 0,
+	          widthPercentage = void 0;
+	      var wrap = this.wrap;
+	      if (!wrap) return;
+
+	      heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;
+	      widthPercentage = wrap.clientWidth * 100 / wrap.scrollWidth;
+
+	      this.sizeHeight = heightPercentage < 100 ? heightPercentage + '%' : '';
+	      this.sizeWidth = widthPercentage < 100 ? widthPercentage + '%' : '';
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    if (this.native) return;
+	    this.$nextTick(this.update);
+	    !this.noresize && (0, _resizeEvent.addResizeListener)(this.$refs.resize, this.update);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    if (this.native) return;
+	    !this.noresize && (0, _resizeEvent.removeResizeListener)(this.$refs.resize, this.update);
+	  }
+	};
+
+/***/ },
+
+/***/ 256:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/scrollbar-width");
+
+/***/ },
+
+/***/ 257:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/util");
+
+/***/ },
+
+/***/ 258:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _dom = __webpack_require__(117);
+
+	var _util = __webpack_require__(259);
+
+	/* istanbul ignore next */
+	exports.default = {
+	  name: 'Bar',
+
+	  props: {
+	    vertical: Boolean,
+	    size: String,
+	    move: Number
+	  },
+
+	  computed: {
+	    bar: function bar() {
+	      return _util.BAR_MAP[this.vertical ? 'vertical' : 'horizontal'];
+	    },
+	    wrap: function wrap() {
+	      return this.$parent.wrap;
+	    }
+	  },
+
+	  render: function render(h) {
+	    var size = this.size,
+	        move = this.move,
+	        bar = this.bar;
+
+
+	    return h(
+	      'div',
+	      {
+	        'class': ['el-scrollbar__bar', 'is-' + bar.key],
+	        on: {
+	          'mousedown': this.clickTrackHandler
+	        }
+	      },
+	      [h(
+	        'div',
+	        {
+	          ref: 'thumb',
+	          'class': 'el-scrollbar__thumb',
+	          on: {
+	            'mousedown': this.clickThumbHandler
+	          },
+
+	          style: (0, _util.renderThumbStyle)({ size: size, move: move, bar: bar }) },
+	        []
+	      )]
+	    );
+	  },
+
+
+	  methods: {
+	    clickThumbHandler: function clickThumbHandler(e) {
+	      this.startDrag(e);
+	      this[this.bar.axis] = e.currentTarget[this.bar.offset] - (e[this.bar.client] - e.currentTarget.getBoundingClientRect()[this.bar.direction]);
+	    },
+	    clickTrackHandler: function clickTrackHandler(e) {
+	      var offset = Math.abs(e.target.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]);
+	      var thumbHalf = this.$refs.thumb[this.bar.offset] / 2;
+	      var thumbPositionPercentage = (offset - thumbHalf) * 100 / this.$el[this.bar.offset];
+
+	      this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;
+	    },
+	    startDrag: function startDrag(e) {
+	      e.stopImmediatePropagation();
+	      this.cursorDown = true;
+
+	      (0, _dom.on)(document, 'mousemove', this.mouseMoveDocumentHandler);
+	      (0, _dom.on)(document, 'mouseup', this.mouseUpDocumentHandler);
+	      document.onselectstart = function () {
+	        return false;
+	      };
+	    },
+	    mouseMoveDocumentHandler: function mouseMoveDocumentHandler(e) {
+	      if (this.cursorDown === false) return;
+	      var prevPage = this[this.bar.axis];
+
+	      if (!prevPage) return;
+
+	      var offset = (this.$el.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]) * -1;
+	      var thumbClickPosition = this.$refs.thumb[this.bar.offset] - prevPage;
+	      var thumbPositionPercentage = (offset - thumbClickPosition) * 100 / this.$el[this.bar.offset];
+
+	      this.wrap[this.bar.scroll] = thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100;
+	    },
+	    mouseUpDocumentHandler: function mouseUpDocumentHandler(e) {
+	      this.cursorDown = false;
+	      this[this.bar.axis] = 0;
+	      (0, _dom.off)(document, 'mousemove', this.mouseMoveDocumentHandler);
+	      document.onselectstart = null;
+	    }
+	  },
+
+	  destroyed: function destroyed() {
+	    (0, _dom.off)(document, 'mouseup', this.mouseUpDocumentHandler);
+	  }
+	};
+
+/***/ },
+
+/***/ 259:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.renderThumbStyle = renderThumbStyle;
+	var BAR_MAP = exports.BAR_MAP = {
+	  vertical: {
+	    offset: 'offsetHeight',
+	    scroll: 'scrollTop',
+	    scrollSize: 'scrollHeight',
+	    size: 'height',
+	    key: 'vertical',
+	    axis: 'Y',
+	    client: 'clientY',
+	    direction: 'top'
+	  },
+	  horizontal: {
+	    offset: 'offsetWidth',
+	    scroll: 'scrollLeft',
+	    scrollSize: 'scrollWidth',
+	    size: 'width',
+	    key: 'horizontal',
+	    axis: 'X',
+	    client: 'clientX',
+	    direction: 'left'
+	  }
+	};
+
+	function renderThumbStyle(_ref) {
+	  var move = _ref.move,
+	      size = _ref.size,
+	      bar = _ref.bar;
+
+	  var style = {};
+	  var translate = 'translate' + bar.axis + '(' + move + '%)';
+
+	  style[bar.size] = size;
+	  style.transform = translate;
+	  style.msTransform = translate;
+	  style.webkitTransform = translate;
+
+	  return style;
+	};
+
+/***/ }
+
+/******/ });

+ 1423 - 0
static/element-ui/lib/select.js

@@ -0,0 +1,1423 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(260);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 9:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input");
+
+/***/ },
+
+/***/ 10:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+
+/***/ 13:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 15:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/scrollbar");
+
+/***/ },
+
+/***/ 46:
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/debounce");
+
+/***/ },
+
+/***/ 47:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/resize-event");
+
+/***/ },
+
+/***/ 60:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+
+/***/ 61:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/locale");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 211:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(212),
+	  /* template */
+	  __webpack_require__(213),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 212:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  mixins: [_emitter2.default],
+
+	  name: 'ElOption',
+
+	  componentName: 'ElOption',
+
+	  props: {
+	    value: {
+	      required: true
+	    },
+	    label: [String, Number],
+	    created: Boolean,
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      index: -1,
+	      groupDisabled: false,
+	      visible: true,
+	      hitState: false
+	    };
+	  },
+
+
+	  computed: {
+	    currentLabel: function currentLabel() {
+	      return this.label || (typeof this.value === 'string' || typeof this.value === 'number' ? this.value : '');
+	    },
+	    currentValue: function currentValue() {
+	      return this.value || this.label || '';
+	    },
+	    parent: function parent() {
+	      var result = this.$parent;
+	      while (!result.isSelect) {
+	        result = result.$parent;
+	      }
+	      return result;
+	    },
+	    itemSelected: function itemSelected() {
+	      if (!this.parent.multiple) {
+	        return this.value === this.parent.value;
+	      } else {
+	        return this.parent.value.indexOf(this.value) > -1;
+	      }
+	    },
+	    limitReached: function limitReached() {
+	      if (this.parent.multiple) {
+	        return !this.itemSelected && this.parent.value.length >= this.parent.multipleLimit && this.parent.multipleLimit > 0;
+	      } else {
+	        return false;
+	      }
+	    }
+	  },
+
+	  watch: {
+	    currentLabel: function currentLabel() {
+	      if (!this.created && !this.parent.remote) this.dispatch('ElSelect', 'setSelected');
+	    },
+	    value: function value() {
+	      if (!this.created && !this.parent.remote) this.dispatch('ElSelect', 'setSelected');
+	    }
+	  },
+
+	  methods: {
+	    handleGroupDisabled: function handleGroupDisabled(val) {
+	      this.groupDisabled = val;
+	    },
+	    hoverItem: function hoverItem() {
+	      if (!this.disabled && !this.groupDisabled) {
+	        this.parent.hoverIndex = this.parent.options.indexOf(this);
+	      }
+	    },
+	    selectOptionClick: function selectOptionClick() {
+	      if (this.disabled !== true && this.groupDisabled !== true) {
+	        this.dispatch('ElSelect', 'handleOptionClick', this);
+	      }
+	    },
+	    queryChange: function queryChange(query) {
+	      // query 里如果有正则中的特殊字符,需要先将这些字符转义
+	      var parsedQuery = String(query).replace(/(\^|\(|\)|\[|\]|\$|\*|\+|\.|\?|\\|\{|\}|\|)/g, '\\$1');
+	      this.visible = new RegExp(parsedQuery, 'i').test(this.currentLabel) || this.created;
+	      if (!this.visible) {
+	        this.parent.filteredOptionsCount--;
+	      }
+	    },
+	    resetIndex: function resetIndex() {
+	      var _this = this;
+
+	      this.$nextTick(function () {
+	        _this.index = _this.parent.options.indexOf(_this);
+	      });
+	    }
+	  },
+
+	  created: function created() {
+	    this.parent.options.push(this);
+	    this.parent.cachedOptions.push(this);
+	    this.parent.optionsCount++;
+	    this.parent.filteredOptionsCount++;
+	    this.index = this.parent.options.indexOf(this);
+
+	    this.$on('queryChange', this.queryChange);
+	    this.$on('handleGroupDisabled', this.handleGroupDisabled);
+	    this.$on('resetIndex', this.resetIndex);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.dispatch('ElSelect', 'onOptionDestroy', this);
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 213:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible),
+	      expression: "visible"
+	    }],
+	    staticClass: "el-select-dropdown__item",
+	    class: {
+	      'selected': _vm.itemSelected,
+	      'is-disabled': _vm.disabled || _vm.groupDisabled || _vm.limitReached,
+	        'hover': _vm.parent.hoverIndex === _vm.index
+	    },
+	    on: {
+	      "mouseenter": _vm.hoverItem,
+	      "click": function($event) {
+	        $event.stopPropagation();
+	        _vm.selectOptionClick($event)
+	      }
+	    }
+	  }, [_vm._t("default", [_c('span', [_vm._v(_vm._s(_vm.currentLabel))])])], 2)
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 260:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _select = __webpack_require__(261);
+
+	var _select2 = _interopRequireDefault(_select);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_select2.default.install = function (Vue) {
+	  Vue.component(_select2.default.name, _select2.default);
+	};
+
+	exports.default = _select2.default;
+
+/***/ },
+
+/***/ 261:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(262),
+	  /* template */
+	  __webpack_require__(267),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 262:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _input = __webpack_require__(9);
+
+	var _input2 = _interopRequireDefault(_input);
+
+	var _selectDropdown = __webpack_require__(263);
+
+	var _selectDropdown2 = _interopRequireDefault(_selectDropdown);
+
+	var _option = __webpack_require__(211);
+
+	var _option2 = _interopRequireDefault(_option);
+
+	var _tag = __webpack_require__(266);
+
+	var _tag2 = _interopRequireDefault(_tag);
+
+	var _scrollbar = __webpack_require__(15);
+
+	var _scrollbar2 = _interopRequireDefault(_scrollbar);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _dom = __webpack_require__(117);
+
+	var _resizeEvent = __webpack_require__(47);
+
+	var _locale3 = __webpack_require__(61);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var sizeMap = {
+	  'large': 42,
+	  'small': 30,
+	  'mini': 22
+	};
+
+	exports.default = {
+	  mixins: [_emitter2.default, _locale2.default],
+
+	  name: 'ElSelect',
+
+	  componentName: 'ElSelect',
+
+	  computed: {
+	    iconClass: function iconClass() {
+	      var criteria = this.clearable && !this.disabled && this.inputHovering && !this.multiple && this.value !== undefined && this.value !== '';
+	      return criteria ? 'circle-close is-show-close' : this.remote && this.filterable ? '' : 'caret-top';
+	    },
+	    debounce: function debounce() {
+	      return this.remote ? 300 : 0;
+	    },
+	    emptyText: function emptyText() {
+	      if (this.loading) {
+	        return this.loadingText || this.t('el.select.loading');
+	      } else {
+	        if (this.remote && this.query === '' && this.options.length === 0) return false;
+	        if (this.filterable && this.options.length > 0 && this.filteredOptionsCount === 0) {
+	          return this.noMatchText || this.t('el.select.noMatch');
+	        }
+	        if (this.options.length === 0) {
+	          return this.noDataText || this.t('el.select.noData');
+	        }
+	      }
+	      return null;
+	    },
+	    showNewOption: function showNewOption() {
+	      var _this = this;
+
+	      var hasExistingOption = this.options.filter(function (option) {
+	        return !option.created;
+	      }).some(function (option) {
+	        return option.currentLabel === _this.query;
+	      });
+	      return this.filterable && this.allowCreate && this.query !== '' && !hasExistingOption;
+	    }
+	  },
+
+	  components: {
+	    ElInput: _input2.default,
+	    ElSelectMenu: _selectDropdown2.default,
+	    ElOption: _option2.default,
+	    ElTag: _tag2.default,
+	    ElScrollbar: _scrollbar2.default
+	  },
+
+	  directives: { Clickoutside: _clickoutside2.default },
+
+	  props: {
+	    name: String,
+	    value: {},
+	    size: String,
+	    disabled: Boolean,
+	    clearable: Boolean,
+	    filterable: Boolean,
+	    allowCreate: Boolean,
+	    loading: Boolean,
+	    popperClass: String,
+	    remote: Boolean,
+	    loadingText: String,
+	    noMatchText: String,
+	    noDataText: String,
+	    remoteMethod: Function,
+	    filterMethod: Function,
+	    multiple: Boolean,
+	    multipleLimit: {
+	      type: Number,
+	      default: 0
+	    },
+	    placeholder: {
+	      type: String,
+	      default: function _default() {
+	        return (0, _locale3.t)('el.select.placeholder');
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      options: [],
+	      cachedOptions: [],
+	      createdLabel: null,
+	      createdSelected: false,
+	      selected: this.multiple ? [] : {},
+	      isSelect: true,
+	      inputLength: 20,
+	      inputWidth: 0,
+	      cachedPlaceHolder: '',
+	      optionsCount: 0,
+	      filteredOptionsCount: 0,
+	      dropdownUl: null,
+	      visible: false,
+	      selectedLabel: '',
+	      hoverIndex: -1,
+	      query: '',
+	      bottomOverflow: 0,
+	      topOverflow: 0,
+	      optionsAllDisabled: false,
+	      inputHovering: false,
+	      currentPlaceholder: ''
+	    };
+	  },
+
+
+	  watch: {
+	    placeholder: function placeholder(val) {
+	      this.cachedPlaceHolder = this.currentPlaceholder = val;
+	    },
+	    value: function value(val) {
+	      if (this.multiple) {
+	        this.resetInputHeight();
+	        if (val.length > 0 || this.$refs.input && this.query !== '') {
+	          this.currentPlaceholder = '';
+	        } else {
+	          this.currentPlaceholder = this.cachedPlaceHolder;
+	        }
+	      }
+	      this.setSelected();
+	      if (this.filterable && !this.multiple) {
+	        this.inputLength = 20;
+	      }
+	      this.$emit('change', val);
+	      this.dispatch('ElFormItem', 'el.form.change', val);
+	    },
+	    query: function query(val) {
+	      var _this2 = this;
+
+	      this.$nextTick(function () {
+	        if (_this2.visible) _this2.broadcast('ElSelectDropdown', 'updatePopper');
+	      });
+	      this.hoverIndex = -1;
+	      if (this.multiple && this.filterable) {
+	        this.inputLength = this.$refs.input.value.length * 15 + 20;
+	        this.managePlaceholder();
+	        this.resetInputHeight();
+	      }
+	      if (this.remote && typeof this.remoteMethod === 'function') {
+	        this.hoverIndex = -1;
+	        this.remoteMethod(val);
+	        this.broadcast('ElOption', 'resetIndex');
+	      } else if (typeof this.filterMethod === 'function') {
+	        this.filterMethod(val);
+	        this.broadcast('ElOptionGroup', 'queryChange');
+	      } else {
+	        this.filteredOptionsCount = this.optionsCount;
+	        this.broadcast('ElOption', 'queryChange', val);
+	        this.broadcast('ElOptionGroup', 'queryChange');
+	      }
+	    },
+	    visible: function visible(val) {
+	      var _this3 = this;
+
+	      if (!val) {
+	        this.$refs.reference.$el.querySelector('input').blur();
+	        this.handleIconHide();
+	        this.broadcast('ElSelectDropdown', 'destroyPopper');
+	        if (this.$refs.input) {
+	          this.$refs.input.blur();
+	        }
+	        this.query = '';
+	        this.selectedLabel = '';
+	        this.inputLength = 20;
+	        this.resetHoverIndex();
+	        this.$nextTick(function () {
+	          if (_this3.$refs.input && _this3.$refs.input.value === '' && _this3.selected.length === 0) {
+	            _this3.currentPlaceholder = _this3.cachedPlaceHolder;
+	          }
+	        });
+	        if (!this.multiple) {
+	          this.getOverflows();
+	          if (this.selected) {
+	            if (this.filterable && this.allowCreate && this.createdSelected && this.createdOption) {
+	              this.selectedLabel = this.createdLabel;
+	            } else {
+	              this.selectedLabel = this.selected.currentLabel;
+	            }
+	            if (this.filterable) this.query = this.selectedLabel;
+	          }
+	        }
+	      } else {
+	        this.handleIconShow();
+	        this.broadcast('ElSelectDropdown', 'updatePopper');
+	        if (this.filterable) {
+	          this.query = this.selectedLabel;
+	          if (this.multiple) {
+	            this.$refs.input.focus();
+	          } else {
+	            if (!this.remote) {
+	              this.broadcast('ElOption', 'queryChange', '');
+	              this.broadcast('ElOptionGroup', 'queryChange');
+	            }
+	            this.broadcast('ElInput', 'inputSelect');
+	          }
+	        }
+	      }
+	      this.$emit('visible-change', val);
+	    },
+	    options: function options(val) {
+	      if (this.$isServer) return;
+	      this.optionsAllDisabled = val.length === val.filter(function (item) {
+	        return item.disabled === true;
+	      }).length;
+	      if (this.multiple) {
+	        this.resetInputHeight();
+	      }
+	      var inputs = this.$el.querySelectorAll('input');
+	      if ([].indexOf.call(inputs, document.activeElement) === -1) {
+	        this.setSelected();
+	      }
+	    }
+	  },
+
+	  methods: {
+	    handleIconHide: function handleIconHide() {
+	      var icon = this.$el.querySelector('.el-input__icon');
+	      if (icon) {
+	        (0, _dom.removeClass)(icon, 'is-reverse');
+	      }
+	    },
+	    handleIconShow: function handleIconShow() {
+	      var icon = this.$el.querySelector('.el-input__icon');
+	      if (icon && !(0, _dom.hasClass)(icon, 'el-icon-circle-close')) {
+	        (0, _dom.addClass)(icon, 'is-reverse');
+	      }
+	    },
+	    handleMenuEnter: function handleMenuEnter() {
+	      if (!this.dropdownUl) {
+	        this.dropdownUl = this.$refs.popper.$el.querySelector('.el-select-dropdown__wrap');
+	        this.getOverflows();
+	      }
+	      if (!this.multiple && this.dropdownUl) {
+	        this.resetMenuScroll();
+	      }
+	    },
+	    getOverflows: function getOverflows() {
+	      if (this.dropdownUl && this.selected && this.selected.$el) {
+	        var selectedRect = this.selected.$el.getBoundingClientRect();
+	        var popperRect = this.$refs.popper.$el.getBoundingClientRect();
+	        this.bottomOverflow = selectedRect.bottom - popperRect.bottom;
+	        this.topOverflow = selectedRect.top - popperRect.top;
+	      }
+	    },
+	    resetMenuScroll: function resetMenuScroll() {
+	      if (this.bottomOverflow > 0) {
+	        this.dropdownUl.scrollTop += this.bottomOverflow;
+	      } else if (this.topOverflow < 0) {
+	        this.dropdownUl.scrollTop += this.topOverflow;
+	      }
+	    },
+	    getOption: function getOption(value) {
+	      var option = void 0;
+	      for (var i = this.cachedOptions.length - 1; i >= 0; i--) {
+	        var cachedOption = this.cachedOptions[i];
+	        if (cachedOption.value === value) {
+	          option = cachedOption;
+	          break;
+	        }
+	      }
+	      if (option) return option;
+	      var label = typeof value === 'string' || typeof value === 'number' ? value : '';
+	      var newOption = {
+	        value: value,
+	        currentLabel: label
+	      };
+	      if (this.multiple) {
+	        newOption.hitState = false;
+	      }
+	      return newOption;
+	    },
+	    setSelected: function setSelected() {
+	      var _this4 = this;
+
+	      if (!this.multiple) {
+	        var option = this.getOption(this.value);
+	        if (option.created) {
+	          this.createdLabel = option.currentLabel;
+	          this.createdSelected = true;
+	        } else {
+	          this.createdSelected = false;
+	        }
+	        this.selectedLabel = option.currentLabel;
+	        this.selected = option;
+	        if (this.filterable) this.query = this.selectedLabel;
+	        return;
+	      }
+	      var result = [];
+	      if (Array.isArray(this.value)) {
+	        this.value.forEach(function (value) {
+	          result.push(_this4.getOption(value));
+	        });
+	      }
+	      this.selected = result;
+	      this.$nextTick(function () {
+	        _this4.resetInputHeight();
+	      });
+	    },
+	    handleFocus: function handleFocus() {
+	      this.visible = true;
+	    },
+	    handleIconClick: function handleIconClick(event) {
+	      if (this.iconClass.indexOf('circle-close') > -1) {
+	        this.deleteSelected(event);
+	      } else {
+	        this.toggleMenu();
+	      }
+	    },
+	    handleMouseDown: function handleMouseDown(event) {
+	      if (event.target.tagName !== 'INPUT') return;
+	      if (this.visible) {
+	        this.handleClose();
+	        event.preventDefault();
+	      }
+	    },
+	    doDestroy: function doDestroy() {
+	      this.$refs.popper && this.$refs.popper.doDestroy();
+	    },
+	    handleClose: function handleClose() {
+	      this.visible = false;
+	    },
+	    toggleLastOptionHitState: function toggleLastOptionHitState(hit) {
+	      if (!Array.isArray(this.selected)) return;
+	      var option = this.selected[this.selected.length - 1];
+	      if (!option) return;
+
+	      if (hit === true || hit === false) {
+	        option.hitState = hit;
+	        return hit;
+	      }
+
+	      option.hitState = !option.hitState;
+	      return option.hitState;
+	    },
+	    deletePrevTag: function deletePrevTag(e) {
+	      if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {
+	        this.value.pop();
+	      }
+	    },
+	    managePlaceholder: function managePlaceholder() {
+	      if (this.currentPlaceholder !== '') {
+	        this.currentPlaceholder = this.$refs.input.value ? '' : this.cachedPlaceHolder;
+	      }
+	    },
+	    resetInputState: function resetInputState(e) {
+	      if (e.keyCode !== 8) this.toggleLastOptionHitState(false);
+	      this.inputLength = this.$refs.input.value.length * 15 + 20;
+	      this.resetInputHeight();
+	    },
+	    resetInputHeight: function resetInputHeight() {
+	      var _this5 = this;
+
+	      this.$nextTick(function () {
+	        if (!_this5.$refs.reference) return;
+	        var inputChildNodes = _this5.$refs.reference.$el.childNodes;
+	        var input = [].filter.call(inputChildNodes, function (item) {
+	          return item.tagName === 'INPUT';
+	        })[0];
+	        input.style.height = Math.max(_this5.$refs.tags.clientHeight + 6, sizeMap[_this5.size] || 36) + 'px';
+	        if (_this5.visible && _this5.emptyText !== false) {
+	          _this5.broadcast('ElSelectDropdown', 'updatePopper');
+	        }
+	      });
+	    },
+	    resetHoverIndex: function resetHoverIndex() {
+	      var _this6 = this;
+
+	      setTimeout(function () {
+	        if (!_this6.multiple) {
+	          _this6.hoverIndex = _this6.options.indexOf(_this6.selected);
+	        } else {
+	          if (_this6.selected.length > 0) {
+	            _this6.hoverIndex = Math.min.apply(null, _this6.selected.map(function (item) {
+	              return _this6.options.indexOf(item);
+	            }));
+	          } else {
+	            _this6.hoverIndex = -1;
+	          }
+	        }
+	      }, 300);
+	    },
+	    handleOptionSelect: function handleOptionSelect(option) {
+	      if (!this.multiple) {
+	        this.$emit('input', option.value);
+	        this.visible = false;
+	      } else {
+	        var optionIndex = -1;
+	        this.value.forEach(function (item, index) {
+	          if (item === option.value) {
+	            optionIndex = index;
+	          }
+	        });
+	        if (optionIndex > -1) {
+	          this.value.splice(optionIndex, 1);
+	        } else if (this.multipleLimit <= 0 || this.value.length < this.multipleLimit) {
+	          this.value.push(option.value);
+	        }
+	        if (option.created) {
+	          this.query = '';
+	          this.inputLength = 20;
+	        }
+	        if (this.filterable) this.$refs.input.focus();
+	      }
+	    },
+	    toggleMenu: function toggleMenu() {
+	      if (this.filterable && this.query === '' && this.visible) {
+	        return;
+	      }
+	      if (!this.disabled) {
+	        this.visible = !this.visible;
+	      }
+	    },
+	    navigateOptions: function navigateOptions(direction) {
+	      if (!this.visible) {
+	        this.visible = true;
+	        return;
+	      }
+	      if (this.options.length === 0 || this.filteredOptionsCount === 0) return;
+	      if (!this.optionsAllDisabled) {
+	        if (direction === 'next') {
+	          this.hoverIndex++;
+	          if (this.hoverIndex === this.options.length) {
+	            this.hoverIndex = 0;
+	          }
+	          this.resetScrollTop();
+	          if (this.options[this.hoverIndex].disabled === true || this.options[this.hoverIndex].groupDisabled === true || !this.options[this.hoverIndex].visible) {
+	            this.navigateOptions('next');
+	          }
+	        }
+	        if (direction === 'prev') {
+	          this.hoverIndex--;
+	          if (this.hoverIndex < 0) {
+	            this.hoverIndex = this.options.length - 1;
+	          }
+	          this.resetScrollTop();
+	          if (this.options[this.hoverIndex].disabled === true || this.options[this.hoverIndex].groupDisabled === true || !this.options[this.hoverIndex].visible) {
+	            this.navigateOptions('prev');
+	          }
+	        }
+	      }
+	    },
+	    resetScrollTop: function resetScrollTop() {
+	      var bottomOverflowDistance = this.options[this.hoverIndex].$el.getBoundingClientRect().bottom - this.$refs.popper.$el.getBoundingClientRect().bottom;
+	      var topOverflowDistance = this.options[this.hoverIndex].$el.getBoundingClientRect().top - this.$refs.popper.$el.getBoundingClientRect().top;
+	      if (bottomOverflowDistance > 0) {
+	        this.dropdownUl.scrollTop += bottomOverflowDistance;
+	      }
+	      if (topOverflowDistance < 0) {
+	        this.dropdownUl.scrollTop += topOverflowDistance;
+	      }
+	    },
+	    selectOption: function selectOption() {
+	      if (this.options[this.hoverIndex]) {
+	        this.handleOptionSelect(this.options[this.hoverIndex]);
+	      }
+	    },
+	    deleteSelected: function deleteSelected(event) {
+	      event.stopPropagation();
+	      this.$emit('input', '');
+	      this.visible = false;
+	    },
+	    deleteTag: function deleteTag(event, tag) {
+	      var index = this.selected.indexOf(tag);
+	      if (index > -1 && !this.disabled) {
+	        this.value.splice(index, 1);
+	        this.$emit('remove-tag', tag);
+	      }
+	      event.stopPropagation();
+	    },
+	    onInputChange: function onInputChange() {
+	      if (this.filterable) {
+	        this.query = this.selectedLabel;
+	      }
+	    },
+	    onOptionDestroy: function onOptionDestroy(option) {
+	      this.optionsCount--;
+	      this.filteredOptionsCount--;
+	      var index = this.options.indexOf(option);
+	      if (index > -1) {
+	        this.options.splice(index, 1);
+	      }
+	      this.broadcast('ElOption', 'resetIndex');
+	    },
+	    resetInputWidth: function resetInputWidth() {
+	      this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;
+	    },
+	    handleResize: function handleResize() {
+	      this.resetInputWidth();
+	      if (this.multiple) this.resetInputHeight();
+	    }
+	  },
+
+	  created: function created() {
+	    var _this7 = this;
+
+	    this.cachedPlaceHolder = this.currentPlaceholder = this.placeholder;
+	    if (this.multiple && !Array.isArray(this.value)) {
+	      this.$emit('input', []);
+	    }
+	    if (!this.multiple && Array.isArray(this.value)) {
+	      this.$emit('input', '');
+	    }
+	    this.setSelected();
+
+	    this.debouncedOnInputChange = (0, _debounce2.default)(this.debounce, function () {
+	      _this7.onInputChange();
+	    });
+
+	    this.$on('handleOptionClick', this.handleOptionSelect);
+	    this.$on('onOptionDestroy', this.onOptionDestroy);
+	    this.$on('setSelected', this.setSelected);
+	  },
+	  mounted: function mounted() {
+	    var _this8 = this;
+
+	    if (this.multiple && Array.isArray(this.value) && this.value.length > 0) {
+	      this.currentPlaceholder = '';
+	    }
+	    (0, _resizeEvent.addResizeListener)(this.$el, this.handleResize);
+	    if (this.remote && this.multiple) {
+	      this.resetInputHeight();
+	    }
+	    this.$nextTick(function () {
+	      if (_this8.$refs.reference && _this8.$refs.reference.$el) {
+	        _this8.inputWidth = _this8.$refs.reference.$el.getBoundingClientRect().width;
+	      }
+	    });
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    if (this.$el && this.handleResize) (0, _resizeEvent.removeResizeListener)(this.$el, this.handleResize);
+	  }
+	};
+
+/***/ },
+
+/***/ 263:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(264),
+	  /* template */
+	  __webpack_require__(265),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 264:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElSelectDropdown',
+
+	  componentName: 'ElSelectDropdown',
+
+	  mixins: [_vuePopper2.default],
+
+	  props: {
+	    placement: {
+	      default: 'bottom-start'
+	    },
+
+	    boundariesPadding: {
+	      default: 0
+	    },
+
+	    popperOptions: {
+	      default: function _default() {
+	        return {
+	          forceAbsolute: true,
+	          gpuAcceleration: false
+	        };
+	      }
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      minWidth: ''
+	    };
+	  },
+
+
+	  computed: {
+	    popperClass: function popperClass() {
+	      return this.$parent.popperClass;
+	    }
+	  },
+
+	  watch: {
+	    '$parent.inputWidth': function $parentInputWidth() {
+	      this.minWidth = this.$parent.$el.getBoundingClientRect().width + 'px';
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    this.referenceElm = this.$parent.$refs.reference.$el;
+	    this.$parent.popperElm = this.popperElm = this.$el;
+	    this.$on('updatePopper', this.updatePopper);
+	    this.$on('destroyPopper', this.destroyPopper);
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 265:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-select-dropdown",
+	    class: [{
+	      'is-multiple': _vm.$parent.multiple
+	    }, _vm.popperClass],
+	    style: ({
+	      minWidth: _vm.minWidth
+	    })
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 266:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/tag");
+
+/***/ },
+
+/***/ 267:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    directives: [{
+	      name: "clickoutside",
+	      rawName: "v-clickoutside",
+	      value: (_vm.handleClose),
+	      expression: "handleClose"
+	    }],
+	    staticClass: "el-select"
+	  }, [(_vm.multiple) ? _c('div', {
+	    ref: "tags",
+	    staticClass: "el-select__tags",
+	    style: ({
+	      'max-width': _vm.inputWidth - 32 + 'px'
+	    }),
+	    on: {
+	      "click": function($event) {
+	        $event.stopPropagation();
+	        _vm.toggleMenu($event)
+	      }
+	    }
+	  }, [_c('transition-group', {
+	    on: {
+	      "after-leave": _vm.resetInputHeight
+	    }
+	  }, _vm._l((_vm.selected), function(item) {
+	    return _c('el-tag', {
+	      key: item.value,
+	      attrs: {
+	        "closable": "",
+	        "hit": item.hitState,
+	        "type": "primary",
+	        "close-transition": ""
+	      },
+	      on: {
+	        "close": function($event) {
+	          _vm.deleteTag($event, item)
+	        }
+	      }
+	    }, [_c('span', {
+	      staticClass: "el-select__tags-text"
+	    }, [_vm._v(_vm._s(item.currentLabel))])])
+	  })), (_vm.filterable) ? _c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.query),
+	      expression: "query"
+	    }],
+	    ref: "input",
+	    staticClass: "el-select__input",
+	    class: ("is-" + _vm.size),
+	    style: ({
+	      width: _vm.inputLength + 'px',
+	      'max-width': _vm.inputWidth - 42 + 'px'
+	    }),
+	    attrs: {
+	      "type": "text",
+	      "disabled": _vm.disabled,
+	      "debounce": _vm.remote ? 300 : 0
+	    },
+	    domProps: {
+	      "value": _vm._s(_vm.query)
+	    },
+	    on: {
+	      "focus": function($event) {
+	        _vm.visible = true
+	      },
+	      "keyup": _vm.managePlaceholder,
+	      "keydown": [_vm.resetInputState, function($event) {
+	        if (_vm._k($event.keyCode, "down", 40)) { return; }
+	        $event.preventDefault();
+	        _vm.navigateOptions('next')
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "up", 38)) { return; }
+	        $event.preventDefault();
+	        _vm.navigateOptions('prev')
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "enter", 13)) { return; }
+	        $event.preventDefault();
+	        _vm.selectOption($event)
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "esc", 27)) { return; }
+	        $event.preventDefault();
+	        _vm.visible = false
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "delete", [8, 46])) { return; }
+	        _vm.deletePrevTag($event)
+	      }],
+	      "input": function($event) {
+	        if ($event.target.composing) { return; }
+	        _vm.query = $event.target.value
+	      }
+	    }
+	  }) : _vm._e()], 1) : _vm._e(), _c('el-input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.selectedLabel),
+	      expression: "selectedLabel"
+	    }],
+	    ref: "reference",
+	    attrs: {
+	      "type": "text",
+	      "placeholder": _vm.currentPlaceholder,
+	      "name": _vm.name,
+	      "size": _vm.size,
+	      "disabled": _vm.disabled,
+	      "readonly": !_vm.filterable || _vm.multiple,
+	      "validate-event": false,
+	      "icon": _vm.iconClass
+	    },
+	    domProps: {
+	      "value": (_vm.selectedLabel)
+	    },
+	    on: {
+	      "focus": _vm.handleFocus,
+	      "click": _vm.handleIconClick,
+	      "input": function($event) {
+	        _vm.selectedLabel = $event
+	      }
+	    },
+	    nativeOn: {
+	      "mousedown": function($event) {
+	        _vm.handleMouseDown($event)
+	      },
+	      "keyup": function($event) {
+	        _vm.debouncedOnInputChange($event)
+	      },
+	      "keydown": [function($event) {
+	        if (_vm._k($event.keyCode, "down", 40)) { return; }
+	        $event.preventDefault();
+	        _vm.navigateOptions('next')
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "up", 38)) { return; }
+	        $event.preventDefault();
+	        _vm.navigateOptions('prev')
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "enter", 13)) { return; }
+	        $event.preventDefault();
+	        _vm.selectOption($event)
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "esc", 27)) { return; }
+	        $event.preventDefault();
+	        _vm.visible = false
+	      }, function($event) {
+	        if (_vm._k($event.keyCode, "tab", 9)) { return; }
+	        _vm.visible = false
+	      }],
+	      "paste": function($event) {
+	        _vm.debouncedOnInputChange($event)
+	      },
+	      "mouseenter": function($event) {
+	        _vm.inputHovering = true
+	      },
+	      "mouseleave": function($event) {
+	        _vm.inputHovering = false
+	      }
+	    }
+	  }), _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    },
+	    on: {
+	      "after-leave": _vm.doDestroy,
+	      "after-enter": _vm.handleMenuEnter
+	    }
+	  }, [_c('el-select-menu', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.visible && _vm.emptyText !== false),
+	      expression: "visible && emptyText !== false"
+	    }],
+	    ref: "popper"
+	  }, [_c('el-scrollbar', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.options.length > 0 && !_vm.loading),
+	      expression: "options.length > 0 && !loading"
+	    }],
+	    class: {
+	      'is-empty': !_vm.allowCreate && _vm.filteredOptionsCount === 0
+	    },
+	    attrs: {
+	      "tag": "ul",
+	      "wrap-class": "el-select-dropdown__wrap",
+	      "view-class": "el-select-dropdown__list"
+	    }
+	  }, [(_vm.showNewOption) ? _c('el-option', {
+	    attrs: {
+	      "value": _vm.query,
+	      "created": ""
+	    }
+	  }) : _vm._e(), _vm._t("default")], 2), (_vm.emptyText && !_vm.allowCreate) ? _c('p', {
+	    staticClass: "el-select-dropdown__empty"
+	  }, [_vm._v(_vm._s(_vm.emptyText))]) : _vm._e()], 1)], 1)], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 790 - 0
static/element-ui/lib/slider.js

@@ -0,0 +1,790 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(268);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 268:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _main = __webpack_require__(269);
+
+	var _main2 = _interopRequireDefault(_main);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_main2.default.install = function (Vue) {
+	  Vue.component(_main2.default.name, _main2.default);
+	};
+
+	exports.default = _main2.default;
+
+/***/ },
+
+/***/ 269:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(270),
+	  /* template */
+	  __webpack_require__(276),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 270:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _inputNumber = __webpack_require__(271);
+
+	var _inputNumber2 = _interopRequireDefault(_inputNumber);
+
+	var _button = __webpack_require__(272);
+
+	var _button2 = _interopRequireDefault(_button);
+
+	var _dom = __webpack_require__(117);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElSlider',
+
+	  mixins: [_emitter2.default],
+
+	  props: {
+	    min: {
+	      type: Number,
+	      default: 0
+	    },
+	    max: {
+	      type: Number,
+	      default: 100
+	    },
+	    step: {
+	      type: Number,
+	      default: 1
+	    },
+	    value: {
+	      type: [Number, Array],
+	      default: 0
+	    },
+	    showInput: {
+	      type: Boolean,
+	      default: false
+	    },
+	    showInputControls: {
+	      type: Boolean,
+	      default: true
+	    },
+	    showStops: {
+	      type: Boolean,
+	      default: false
+	    },
+	    showTooltip: {
+	      type: Boolean,
+	      default: true
+	    },
+	    formatTooltip: Function,
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    },
+	    range: {
+	      type: Boolean,
+	      default: false
+	    }
+	  },
+
+	  components: {
+	    ElInputNumber: _inputNumber2.default,
+	    SliderButton: _button2.default
+	  },
+
+	  data: function data() {
+	    return {
+	      firstValue: null,
+	      secondValue: null,
+	      oldValue: null,
+	      dragging: false
+	    };
+	  },
+
+
+	  watch: {
+	    value: function value(val, oldVal) {
+	      if (this.dragging || Array.isArray(val) && Array.isArray(oldVal) && val.every(function (item, index) {
+	        return item === oldVal[index];
+	      })) {
+	        return;
+	      }
+	      this.setValues();
+	    },
+	    dragging: function dragging(val) {
+	      if (!val) {
+	        this.setValues();
+	      }
+	    },
+	    firstValue: function firstValue(val) {
+	      if (this.range) {
+	        this.$emit('input', [this.minValue, this.maxValue]);
+	      } else {
+	        this.$emit('input', val);
+	      }
+	    },
+	    secondValue: function secondValue() {
+	      if (this.range) {
+	        this.$emit('input', [this.minValue, this.maxValue]);
+	      }
+	    },
+	    min: function min() {
+	      this.setValues();
+	    },
+	    max: function max() {
+	      this.setValues();
+	    }
+	  },
+
+	  methods: {
+	    valueChanged: function valueChanged() {
+	      var _this = this;
+
+	      if (this.range) {
+	        return ![this.minValue, this.maxValue].every(function (item, index) {
+	          return item === _this.oldValue[index];
+	        });
+	      } else {
+	        return this.value !== this.oldValue;
+	      }
+	    },
+	    setValues: function setValues() {
+	      var val = this.value;
+	      if (this.range && Array.isArray(val)) {
+	        if (val[1] < this.min) {
+	          this.$emit('input', [this.min, this.min]);
+	        } else if (val[0] > this.max) {
+	          this.$emit('input', [this.max, this.max]);
+	        } else if (val[0] < this.min) {
+	          this.$emit('input', [this.min, val[1]]);
+	        } else if (val[1] > this.max) {
+	          this.$emit('input', [val[0], this.max]);
+	        } else {
+	          this.firstValue = val[0];
+	          this.secondValue = val[1];
+	          if (this.valueChanged()) {
+	            this.$emit('change', [this.minValue, this.maxValue]);
+	            this.dispatch('ElFormItem', 'el.form.change', [this.minValue, this.maxValue]);
+	            this.oldValue = val.slice();
+	          }
+	        }
+	      } else if (!this.range && typeof val === 'number' && !isNaN(val)) {
+	        if (val < this.min) {
+	          this.$emit('input', this.min);
+	        } else if (val > this.max) {
+	          this.$emit('input', this.max);
+	        } else {
+	          this.firstValue = val;
+	          if (this.valueChanged()) {
+	            this.$emit('change', val);
+	            this.dispatch('ElFormItem', 'el.form.change', val);
+	            this.oldValue = val;
+	          }
+	        }
+	      }
+	    },
+	    setPosition: function setPosition(percent) {
+	      var targetValue = this.min + percent * (this.max - this.min) / 100;
+	      if (!this.range) {
+	        this.$refs.button1.setPosition(percent);
+	        return;
+	      }
+	      var button = void 0;
+	      if (Math.abs(this.minValue - targetValue) < Math.abs(this.maxValue - targetValue)) {
+	        button = this.firstValue < this.secondValue ? 'button1' : 'button2';
+	      } else {
+	        button = this.firstValue > this.secondValue ? 'button1' : 'button2';
+	      }
+	      this.$refs[button].setPosition(percent);
+	    },
+	    onSliderClick: function onSliderClick(event) {
+	      if (this.disabled || this.dragging) return;
+	      var sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left;
+	      this.setPosition((event.clientX - sliderOffsetLeft) / this.$sliderWidth * 100);
+	    }
+	  },
+
+	  computed: {
+	    $sliderWidth: function $sliderWidth() {
+	      return parseInt((0, _dom.getStyle)(this.$refs.slider, 'width'), 10);
+	    },
+	    stops: function stops() {
+	      var _this2 = this;
+
+	      var stopCount = (this.max - this.min) / this.step;
+	      var stepWidth = 100 * this.step / (this.max - this.min);
+	      var result = [];
+	      for (var i = 1; i < stopCount; i++) {
+	        result.push(i * stepWidth);
+	      }
+	      if (this.range) {
+	        return result.filter(function (step) {
+	          return step < 100 * (_this2.minValue - _this2.min) / (_this2.max - _this2.min) || step > 100 * (_this2.maxValue - _this2.min) / (_this2.max - _this2.min);
+	        });
+	      } else {
+	        return result.filter(function (step) {
+	          return step > 100 * (_this2.firstValue - _this2.min) / (_this2.max - _this2.min);
+	        });
+	      }
+	    },
+	    minValue: function minValue() {
+	      return Math.min(this.firstValue, this.secondValue);
+	    },
+	    maxValue: function maxValue() {
+	      return Math.max(this.firstValue, this.secondValue);
+	    },
+	    barWidth: function barWidth() {
+	      return this.range ? 100 * (this.maxValue - this.minValue) / (this.max - this.min) + '%' : 100 * (this.firstValue - this.min) / (this.max - this.min) + '%';
+	    },
+	    barLeft: function barLeft() {
+	      return this.range ? 100 * (this.minValue - this.min) / (this.max - this.min) + '%' : '0%';
+	    },
+	    precision: function precision() {
+	      var precisions = [this.min, this.max, this.step].map(function (item) {
+	        var decimal = ('' + item).split('.')[1];
+	        return decimal ? decimal.length : 0;
+	      });
+	      return Math.max.apply(null, precisions);
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    if (this.range) {
+	      if (Array.isArray(this.value)) {
+	        this.firstValue = Math.max(this.min, this.value[0]);
+	        this.secondValue = Math.min(this.max, this.value[1]);
+	      } else {
+	        this.firstValue = this.min;
+	        this.secondValue = this.max;
+	      }
+	      this.oldValue = [this.firstValue, this.secondValue];
+	    } else {
+	      if (typeof this.value !== 'number' || isNaN(this.value)) {
+	        this.firstValue = this.min;
+	      } else {
+	        this.firstValue = Math.min(this.max, Math.max(this.min, this.value));
+	      }
+	      this.oldValue = this.firstValue;
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 271:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/input-number");
+
+/***/ },
+
+/***/ 272:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(273),
+	  /* template */
+	  __webpack_require__(275),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 273:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tooltip = __webpack_require__(274);
+
+	var _tooltip2 = _interopRequireDefault(_tooltip);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElSliderButton',
+
+	  components: {
+	    ElTooltip: _tooltip2.default
+	  },
+
+	  props: {
+	    value: {
+	      type: Number,
+	      default: 0
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      hovering: false,
+	      dragging: false,
+	      startX: 0,
+	      currentX: 0,
+	      startPosition: 0,
+	      newPosition: null,
+	      oldValue: this.value
+	    };
+	  },
+
+
+	  computed: {
+	    disabled: function disabled() {
+	      return this.$parent.disabled;
+	    },
+	    max: function max() {
+	      return this.$parent.max;
+	    },
+	    min: function min() {
+	      return this.$parent.min;
+	    },
+	    step: function step() {
+	      return this.$parent.step;
+	    },
+	    showTooltip: function showTooltip() {
+	      return this.$parent.showTooltip;
+	    },
+	    precision: function precision() {
+	      return this.$parent.precision;
+	    },
+	    currentPosition: function currentPosition() {
+	      return (this.value - this.min) / (this.max - this.min) * 100 + '%';
+	    },
+	    enableFormat: function enableFormat() {
+	      return this.$parent.formatTooltip instanceof Function;
+	    },
+	    formatValue: function formatValue() {
+	      return this.enableFormat && this.$parent.formatTooltip(this.value) || this.value;
+	    }
+	  },
+
+	  watch: {
+	    dragging: function dragging(val) {
+	      this.$parent.dragging = val;
+	    }
+	  },
+
+	  methods: {
+	    displayTooltip: function displayTooltip() {
+	      this.$refs.tooltip && (this.$refs.tooltip.showPopper = true);
+	    },
+	    hideTooltip: function hideTooltip() {
+	      this.$refs.tooltip && (this.$refs.tooltip.showPopper = false);
+	    },
+	    handleMouseEnter: function handleMouseEnter() {
+	      this.hovering = true;
+	      this.displayTooltip();
+	    },
+	    handleMouseLeave: function handleMouseLeave() {
+	      this.hovering = false;
+	      this.hideTooltip();
+	    },
+	    onButtonDown: function onButtonDown(event) {
+	      if (this.disabled) return;
+	      event.preventDefault();
+	      this.onDragStart(event);
+	      window.addEventListener('mousemove', this.onDragging);
+	      window.addEventListener('mouseup', this.onDragEnd);
+	      window.addEventListener('contextmenu', this.onDragEnd);
+	    },
+	    onDragStart: function onDragStart(event) {
+	      this.dragging = true;
+	      this.startX = event.clientX;
+	      this.startPosition = parseFloat(this.currentPosition);
+	    },
+	    onDragging: function onDragging(event) {
+	      if (this.dragging) {
+	        this.displayTooltip();
+	        this.currentX = event.clientX;
+	        var diff = (this.currentX - this.startX) / this.$parent.$sliderWidth * 100;
+	        this.newPosition = this.startPosition + diff;
+	        this.setPosition(this.newPosition);
+	      }
+	    },
+	    onDragEnd: function onDragEnd() {
+	      var _this = this;
+
+	      if (this.dragging) {
+	        /*
+	         * 防止在 mouseup 后立即触发 click,导致滑块有几率产生一小段位移
+	         * 不使用 preventDefault 是因为 mouseup 和 click 没有注册在同一个 DOM 上
+	         */
+	        setTimeout(function () {
+	          _this.dragging = false;
+	          _this.hideTooltip();
+	          _this.setPosition(_this.newPosition);
+	        }, 0);
+	        window.removeEventListener('mousemove', this.onDragging);
+	        window.removeEventListener('mouseup', this.onDragEnd);
+	        window.removeEventListener('contextmenu', this.onDragEnd);
+	      }
+	    },
+	    setPosition: function setPosition(newPosition) {
+	      if (newPosition < 0) {
+	        newPosition = 0;
+	      } else if (newPosition > 100) {
+	        newPosition = 100;
+	      }
+	      var lengthPerStep = 100 / ((this.max - this.min) / this.step);
+	      var steps = Math.round(newPosition / lengthPerStep);
+	      var value = steps * lengthPerStep * (this.max - this.min) * 0.01 + this.min;
+	      value = parseFloat(value.toFixed(this.precision));
+	      this.$emit('input', value);
+	      this.$refs.tooltip && this.$refs.tooltip.updatePopper();
+	      if (!this.dragging && this.value !== this.oldValue) {
+	        this.oldValue = this.value;
+	      }
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 274:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/tooltip");
+
+/***/ },
+
+/***/ 275:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    ref: "button",
+	    staticClass: "el-slider__button-wrapper",
+	    class: {
+	      'hover': _vm.hovering, 'dragging': _vm.dragging
+	    },
+	    style: ({
+	      left: _vm.currentPosition
+	    }),
+	    on: {
+	      "mouseenter": _vm.handleMouseEnter,
+	      "mouseleave": _vm.handleMouseLeave,
+	      "mousedown": _vm.onButtonDown
+	    }
+	  }, [_c('el-tooltip', {
+	    ref: "tooltip",
+	    attrs: {
+	      "placement": "top",
+	      "disabled": !_vm.showTooltip
+	    }
+	  }, [_c('span', {
+	    slot: "content"
+	  }, [_vm._v(_vm._s(_vm.formatValue))]), _c('div', {
+	    staticClass: "el-slider__button",
+	    class: {
+	      'hover': _vm.hovering, 'dragging': _vm.dragging
+	    }
+	  })])], 1)
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 276:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-slider"
+	  }, [(_vm.showInput && !_vm.range) ? _c('el-input-number', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.firstValue),
+	      expression: "firstValue"
+	    }],
+	    ref: "input",
+	    staticClass: "el-slider__input",
+	    attrs: {
+	      "step": _vm.step,
+	      "disabled": _vm.disabled,
+	      "controls": _vm.showInputControls,
+	      "min": _vm.min,
+	      "max": _vm.max,
+	      "size": "small"
+	    },
+	    domProps: {
+	      "value": (_vm.firstValue)
+	    },
+	    on: {
+	      "input": function($event) {
+	        _vm.firstValue = $event
+	      }
+	    }
+	  }) : _vm._e(), _c('div', {
+	    ref: "slider",
+	    staticClass: "el-slider__runway",
+	    class: {
+	      'show-input': _vm.showInput, 'disabled': _vm.disabled
+	    },
+	    on: {
+	      "click": _vm.onSliderClick
+	    }
+	  }, [_c('div', {
+	    staticClass: "el-slider__bar",
+	    style: ({
+	      width: _vm.barWidth,
+	      left: _vm.barLeft
+	    })
+	  }), _c('slider-button', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.firstValue),
+	      expression: "firstValue"
+	    }],
+	    ref: "button1",
+	    domProps: {
+	      "value": (_vm.firstValue)
+	    },
+	    on: {
+	      "input": function($event) {
+	        _vm.firstValue = $event
+	      }
+	    }
+	  }), (_vm.range) ? _c('slider-button', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.secondValue),
+	      expression: "secondValue"
+	    }],
+	    ref: "button2",
+	    domProps: {
+	      "value": (_vm.secondValue)
+	    },
+	    on: {
+	      "input": function($event) {
+	        _vm.secondValue = $event
+	      }
+	    }
+	  }) : _vm._e(), _vm._l((_vm.stops), function(item) {
+	    return (_vm.showStops) ? _c('div', {
+	      staticClass: "el-slider__stop",
+	      style: ({
+	        'left': item + '%'
+	      })
+	    }) : _vm._e()
+	  })], 2)], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 214 - 0
static/element-ui/lib/spinner.js

@@ -0,0 +1,214 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(277);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 277:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _spinner = __webpack_require__(278);
+
+	var _spinner2 = _interopRequireDefault(_spinner);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_spinner2.default.install = function (Vue) {
+	  Vue.component(_spinner2.default.name, _spinner2.default);
+	};
+
+	exports.default = _spinner2.default;
+
+/***/ },
+
+/***/ 278:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(279),
+	  /* template */
+	  __webpack_require__(280),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 279:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElSpinner',
+	  props: {
+	    type: String,
+	    radius: {
+	      type: Number,
+	      default: 100
+	    },
+	    strokeWidth: {
+	      type: Number,
+	      default: 5
+	    },
+	    strokeColor: {
+	      type: String,
+	      default: '#efefef'
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 280:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('span', {
+	    staticClass: "el-spinner"
+	  }, [_c('svg', {
+	    staticClass: "el-spinner-inner",
+	    style: ({
+	      width: _vm.radius / 2 + 'px',
+	      height: _vm.radius / 2 + 'px'
+	    }),
+	    attrs: {
+	      "viewBox": "0 0 50 50"
+	    }
+	  }, [_c('circle', {
+	    staticClass: "path",
+	    attrs: {
+	      "cx": "25",
+	      "cy": "25",
+	      "r": "20",
+	      "fill": "none",
+	      "stroke": _vm.strokeColor,
+	      "stroke-width": _vm.strokeWidth
+	    }
+	  })])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 349 - 0
static/element-ui/lib/step.js

@@ -0,0 +1,349 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(281);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 281:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _step = __webpack_require__(282);
+
+	var _step2 = _interopRequireDefault(_step);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_step2.default.install = function (Vue) {
+	  Vue.component(_step2.default.name, _step2.default);
+	};
+
+	exports.default = _step2.default;
+
+/***/ },
+
+/***/ 282:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(283),
+	  /* template */
+	  __webpack_require__(284),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 283:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElStep',
+
+	  props: {
+	    title: String,
+	    icon: String,
+	    description: String,
+	    status: String
+	  },
+
+	  data: function data() {
+	    return {
+	      index: -1,
+	      style: {},
+	      lineStyle: {},
+	      mainOffset: 0,
+	      isLast: false,
+	      internalStatus: ''
+	    };
+	  },
+	  beforeCreate: function beforeCreate() {
+	    this.$parent.steps.push(this);
+	  },
+
+
+	  computed: {
+	    currentStatus: function currentStatus() {
+	      return this.status || this.internalStatus;
+	    }
+	  },
+
+	  methods: {
+	    updateStatus: function updateStatus(val) {
+	      var prevChild = this.$parent.$children[this.index - 1];
+
+	      if (val > this.index) {
+	        this.internalStatus = this.$parent.finishStatus;
+	      } else if (val === this.index) {
+	        this.internalStatus = this.$parent.processStatus;
+	      } else {
+	        this.internalStatus = 'wait';
+	      }
+
+	      if (prevChild) prevChild.calcProgress(this.internalStatus);
+	    },
+	    calcProgress: function calcProgress(status) {
+	      var step = 100;
+	      var style = {};
+
+	      style.transitionDelay = 150 * this.index + 'ms';
+	      if (status === this.$parent.processStatus) {
+	        step = 50;
+	      } else if (status === 'wait') {
+	        step = 0;
+	        style.transitionDelay = -150 * this.index + 'ms';
+	      }
+
+	      style.borderWidth = step ? '1px' : 0;
+	      this.$parent.direction === 'vertical' ? style.height = step + '%' : style.width = step + '%';
+
+	      this.lineStyle = style;
+	    },
+	    adjustPosition: function adjustPosition() {
+	      this.style = {};
+	      this.$parent.stepOffset = this.$el.getBoundingClientRect().width / (this.$parent.steps.length - 1);
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    var parent = this.$parent;
+	    var isCenter = parent.center;
+	    var len = parent.steps.length;
+	    var isLast = this.isLast = parent.steps[parent.steps.length - 1] === this;
+	    var space = typeof parent.space === 'number' ? parent.space + 'px' : parent.space ? parent.space : 100 / (isCenter ? len - 1 : len) + '%';
+
+	    if (parent.direction === 'horizontal') {
+	      this.style = { width: space };
+	      if (parent.alignCenter) {
+	        this.mainOffset = -this.$refs.title.getBoundingClientRect().width / 2 + 16 + 'px';
+	      }
+	      isCenter && isLast && this.adjustPosition();
+	    } else {
+	      if (!isLast) {
+	        this.style = { height: space };
+	      }
+	    }
+
+	    var unwatch = this.$watch('index', function (val) {
+	      _this.$watch('$parent.active', _this.updateStatus, { immediate: true });
+	      unwatch();
+	    });
+	  }
+	};
+
+/***/ },
+
+/***/ 284:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-step",
+	    class: ['is-' + _vm.$parent.direction],
+	    style: ([_vm.style, _vm.isLast ? '' : {
+	      marginRight: -_vm.$parent.stepOffset + 'px'
+	    }])
+	  }, [_c('div', {
+	    staticClass: "el-step__head",
+	    class: ['is-' + _vm.currentStatus, {
+	      'is-text': !_vm.icon
+	    }]
+	  }, [_c('div', {
+	    staticClass: "el-step__line",
+	    class: ['is-' + _vm.$parent.direction, {
+	      'is-icon': _vm.icon
+	    }],
+	    style: (_vm.isLast ? '' : {
+	      marginRight: _vm.$parent.stepOffset + 'px'
+	    })
+	  }, [_c('i', {
+	    staticClass: "el-step__line-inner",
+	    style: (_vm.lineStyle)
+	  })]), _c('span', {
+	    staticClass: "el-step__icon"
+	  }, [(_vm.currentStatus !== 'success' && _vm.currentStatus !== 'error') ? _vm._t("icon", [(_vm.icon) ? _c('i', {
+	    class: ['el-icon-' + _vm.icon]
+	  }) : _c('div', [_vm._v(_vm._s(_vm.index + 1))])]) : _c('i', {
+	    class: ['el-icon-' + (_vm.currentStatus === 'success' ? 'check' : 'close')]
+	  })], 2)]), _c('div', {
+	    staticClass: "el-step__main",
+	    style: ({
+	      marginLeft: _vm.mainOffset
+	    })
+	  }, [_c('div', {
+	    ref: "title",
+	    staticClass: "el-step__title",
+	    class: ['is-' + _vm.currentStatus]
+	  }, [_vm._t("title", [_vm._v(_vm._s(_vm.title))])], 2), _c('div', {
+	    staticClass: "el-step__description",
+	    class: ['is-' + _vm.currentStatus]
+	  }, [_vm._t("description", [_vm._v(_vm._s(_vm.description))])], 2)])])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 220 - 0
static/element-ui/lib/steps.js

@@ -0,0 +1,220 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(285);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 285:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _steps = __webpack_require__(286);
+
+	var _steps2 = _interopRequireDefault(_steps);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_steps2.default.install = function (Vue) {
+	  Vue.component(_steps2.default.name, _steps2.default);
+	};
+
+	exports.default = _steps2.default;
+
+/***/ },
+
+/***/ 286:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(287),
+	  /* template */
+	  __webpack_require__(288),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 287:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElSteps',
+
+	  props: {
+	    space: [Number, String],
+	    active: Number,
+	    direction: {
+	      type: String,
+	      default: 'horizontal'
+	    },
+	    alignCenter: Boolean,
+	    center: Boolean,
+	    finishStatus: {
+	      type: String,
+	      default: 'finish'
+	    },
+	    processStatus: {
+	      type: String,
+	      default: 'process'
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      steps: [],
+	      stepOffset: 0
+	    };
+	  },
+
+
+	  watch: {
+	    active: function active(newVal, oldVal) {
+	      this.$emit('change', newVal, oldVal);
+	    },
+	    steps: function steps(_steps) {
+	      _steps.forEach(function (child, index) {
+	        child.index = index;
+	      });
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 288:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-steps",
+	    class: ['is-' + _vm.direction, _vm.center ? 'is-center' : '']
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 424 - 0
static/element-ui/lib/submenu.js

@@ -0,0 +1,424 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(289);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 14:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/emitter");
+
+/***/ },
+
+/***/ 80:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/transitions/collapse-transition");
+
+/***/ },
+
+/***/ 183:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	exports.default = {
+	  computed: {
+	    indexPath: function indexPath() {
+	      var path = [this.index];
+	      var parent = this.$parent;
+	      while (parent.$options.componentName !== 'ElMenu') {
+	        if (parent.index) {
+	          path.unshift(parent.index);
+	        }
+	        parent = parent.$parent;
+	      }
+	      return path;
+	    },
+	    rootMenu: function rootMenu() {
+	      var parent = this.$parent;
+	      while (parent && parent.$options.componentName !== 'ElMenu') {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    },
+	    parentMenu: function parentMenu() {
+	      var parent = this.$parent;
+	      while (parent && ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1) {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    },
+	    paddingStyle: function paddingStyle() {
+	      if (this.rootMenu.mode !== 'vertical') return {};
+
+	      var padding = 20;
+	      var parent = this.$parent;
+	      while (parent && parent.$options.componentName !== 'ElMenu') {
+	        if (parent.$options.componentName === 'ElSubmenu') {
+	          padding += 20;
+	        }
+	        parent = parent.$parent;
+	      }
+	      return { paddingLeft: padding + 'px' };
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 289:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _submenu = __webpack_require__(290);
+
+	var _submenu2 = _interopRequireDefault(_submenu);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_submenu2.default.install = function (Vue) {
+	  Vue.component(_submenu2.default.name, _submenu2.default);
+	};
+
+	exports.default = _submenu2.default;
+
+/***/ },
+
+/***/ 290:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(291),
+	  /* template */
+	  __webpack_require__(292),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 291:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _menuMixin = __webpack_require__(183);
+
+	var _menuMixin2 = _interopRequireDefault(_menuMixin);
+
+	var _emitter = __webpack_require__(14);
+
+	var _emitter2 = _interopRequireDefault(_emitter);
+
+	var _collapseTransition = __webpack_require__(80);
+
+	var _collapseTransition2 = _interopRequireDefault(_collapseTransition);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElSubmenu',
+
+	  componentName: 'ElSubmenu',
+
+	  mixins: [_menuMixin2.default, _emitter2.default],
+
+	  components: {
+	    CollapseTransition: _collapseTransition2.default
+	  },
+
+	  props: {
+	    index: {
+	      type: String,
+	      required: true
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      timeout: null,
+	      items: {},
+	      submenus: {}
+	    };
+	  },
+
+	  computed: {
+	    opened: function opened() {
+	      return this.rootMenu.openedMenus.indexOf(this.index) > -1;
+	    },
+
+	    active: {
+	      cache: false,
+	      get: function get() {
+	        var isActive = false;
+	        var submenus = this.submenus;
+	        var items = this.items;
+
+	        Object.keys(items).forEach(function (index) {
+	          if (items[index].active) {
+	            isActive = true;
+	          }
+	        });
+
+	        Object.keys(submenus).forEach(function (index) {
+	          if (submenus[index].active) {
+	            isActive = true;
+	          }
+	        });
+
+	        return isActive;
+	      }
+	    }
+	  },
+	  methods: {
+	    addItem: function addItem(item) {
+	      this.$set(this.items, item.index, item);
+	    },
+	    removeItem: function removeItem(item) {
+	      delete this.items[item.index];
+	    },
+	    addSubmenu: function addSubmenu(item) {
+	      this.$set(this.submenus, item.index, item);
+	    },
+	    removeSubmenu: function removeSubmenu(item) {
+	      delete this.submenus[item.index];
+	    },
+	    handleClick: function handleClick() {
+	      this.dispatch('ElMenu', 'submenu-click', this);
+	    },
+	    handleMouseenter: function handleMouseenter() {
+	      var _this = this;
+
+	      clearTimeout(this.timeout);
+	      this.timeout = setTimeout(function () {
+	        _this.rootMenu.openMenu(_this.index, _this.indexPath);
+	      }, 300);
+	    },
+	    handleMouseleave: function handleMouseleave() {
+	      var _this2 = this;
+
+	      clearTimeout(this.timeout);
+	      this.timeout = setTimeout(function () {
+	        _this2.rootMenu.closeMenu(_this2.index, _this2.indexPath);
+	      }, 300);
+	    },
+	    initEvents: function initEvents() {
+	      var rootMenu = this.rootMenu,
+	          handleMouseenter = this.handleMouseenter,
+	          handleMouseleave = this.handleMouseleave,
+	          handleClick = this.handleClick;
+
+	      var triggerElm = void 0;
+
+	      if (rootMenu.mode === 'horizontal' && rootMenu.menuTrigger === 'hover') {
+	        triggerElm = this.$el;
+	        triggerElm.addEventListener('mouseenter', handleMouseenter);
+	        triggerElm.addEventListener('mouseleave', handleMouseleave);
+	      } else {
+	        triggerElm = this.$refs['submenu-title'];
+	        triggerElm.addEventListener('click', handleClick);
+	      }
+	    }
+	  },
+	  created: function created() {
+	    this.parentMenu.addSubmenu(this);
+	    this.rootMenu.addSubmenu(this);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    this.parentMenu.removeSubmenu(this);
+	    this.rootMenu.removeSubmenu(this);
+	  },
+	  mounted: function mounted() {
+	    this.initEvents();
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 292:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('li', {
+	    class: {
+	      'el-submenu': true,
+	      'is-active': _vm.active,
+	      'is-opened': _vm.opened
+	    }
+	  }, [_c('div', {
+	    ref: "submenu-title",
+	    staticClass: "el-submenu__title",
+	    style: (_vm.paddingStyle)
+	  }, [_vm._t("title"), _c('i', {
+	    class: {
+	      'el-submenu__icon-arrow': true,
+	      'el-icon-arrow-down': _vm.rootMenu.mode === 'vertical',
+	        'el-icon-caret-bottom': _vm.rootMenu.mode === 'horizontal'
+	    }
+	  })], 2), (_vm.rootMenu.mode === 'horizontal') ? [_c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    }
+	  }, [_c('ul', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.opened),
+	      expression: "opened"
+	    }],
+	    staticClass: "el-menu"
+	  }, [_vm._t("default")], 2)])] : _c('collapse-transition', [_c('ul', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.opened),
+	      expression: "opened"
+	    }],
+	    staticClass: "el-menu"
+	  }, [_vm._t("default")], 2)])], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 389 - 0
static/element-ui/lib/switch.js

@@ -0,0 +1,389 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(293);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 293:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _component = __webpack_require__(294);
+
+	var _component2 = _interopRequireDefault(_component);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_component2.default.install = function (Vue) {
+	  Vue.component(_component2.default.name, _component2.default);
+	};
+
+	exports.default = _component2.default;
+
+/***/ },
+
+/***/ 294:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(295),
+	  /* template */
+	  __webpack_require__(296),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 295:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElSwitch',
+	  props: {
+	    value: {
+	      type: Boolean,
+	      default: true
+	    },
+	    disabled: {
+	      type: Boolean,
+	      default: false
+	    },
+	    width: {
+	      type: Number,
+	      default: 0
+	    },
+	    onIconClass: {
+	      type: String,
+	      default: ''
+	    },
+	    offIconClass: {
+	      type: String,
+	      default: ''
+	    },
+	    onText: {
+	      type: String,
+	      default: 'ON'
+	    },
+	    offText: {
+	      type: String,
+	      default: 'OFF'
+	    },
+	    onColor: {
+	      type: String,
+	      default: ''
+	    },
+	    offColor: {
+	      type: String,
+	      default: ''
+	    },
+	    name: {
+	      type: String,
+	      default: ''
+	    }
+	  },
+	  data: function data() {
+	    return {
+	      coreWidth: this.width
+	    };
+	  },
+
+	  computed: {
+	    hasText: function hasText() {
+	      /* istanbul ignore next */
+	      return this.onText || this.offText;
+	    },
+
+	    _value: {
+	      get: function get() {
+	        return this.value;
+	      },
+	      set: function set(val) {
+	        this.$emit('input', val);
+	      }
+	    },
+	    transform: function transform() {
+	      return this.value ? 'translate(' + (this.coreWidth - 20) + 'px, 2px)' : 'translate(2px, 2px)';
+	    }
+	  },
+	  watch: {
+	    value: function value() {
+	      if (this.onColor || this.offColor) {
+	        this.setBackgroundColor();
+	      }
+	    }
+	  },
+	  methods: {
+	    handleChange: function handleChange(event) {
+	      this.$emit('change', event.currentTarget.checked);
+	    },
+	    setBackgroundColor: function setBackgroundColor() {
+	      var newColor = this.value ? this.onColor : this.offColor;
+	      this.$refs.core.style.borderColor = newColor;
+	      this.$refs.core.style.backgroundColor = newColor;
+	    }
+	  },
+	  mounted: function mounted() {
+	    /* istanbul ignore if */
+	    if (this.width === 0) {
+	      this.coreWidth = this.hasText ? 58 : 46;
+	    }
+	    if (this.onColor || this.offColor) {
+	      this.setBackgroundColor();
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 296:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('label', {
+	    staticClass: "el-switch",
+	    class: {
+	      'is-disabled': _vm.disabled, 'el-switch--wide': _vm.hasText
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.disabled),
+	      expression: "disabled"
+	    }],
+	    staticClass: "el-switch__mask"
+	  }), _c('input', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm._value),
+	      expression: "_value"
+	    }],
+	    staticClass: "el-switch__input",
+	    attrs: {
+	      "type": "checkbox",
+	      "name": _vm.name,
+	      "disabled": _vm.disabled
+	    },
+	    domProps: {
+	      "checked": Array.isArray(_vm._value) ? _vm._i(_vm._value, null) > -1 : (_vm._value)
+	    },
+	    on: {
+	      "change": [function($event) {
+	        var $$a = _vm._value,
+	          $$el = $event.target,
+	          $$c = $$el.checked ? (true) : (false);
+	        if (Array.isArray($$a)) {
+	          var $$v = null,
+	            $$i = _vm._i($$a, $$v);
+	          if ($$c) {
+	            $$i < 0 && (_vm._value = $$a.concat($$v))
+	          } else {
+	            $$i > -1 && (_vm._value = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
+	          }
+	        } else {
+	          _vm._value = $$c
+	        }
+	      }, _vm.handleChange]
+	    }
+	  }), _c('span', {
+	    ref: "core",
+	    staticClass: "el-switch__core",
+	    style: ({
+	      'width': _vm.coreWidth + 'px'
+	    })
+	  }, [_c('span', {
+	    staticClass: "el-switch__button",
+	    style: ({
+	      transform: _vm.transform
+	    })
+	  })]), _c('transition', {
+	    attrs: {
+	      "name": "label-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.value),
+	      expression: "value"
+	    }],
+	    staticClass: "el-switch__label el-switch__label--left",
+	    style: ({
+	      'width': _vm.coreWidth + 'px'
+	    })
+	  }, [(_vm.onIconClass) ? _c('i', {
+	    class: [_vm.onIconClass]
+	  }) : _vm._e(), (!_vm.onIconClass && _vm.onText) ? _c('span', [_vm._v(_vm._s(_vm.onText))]) : _vm._e()])]), _c('transition', {
+	    attrs: {
+	      "name": "label-fade"
+	    }
+	  }, [_c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (!_vm.value),
+	      expression: "!value"
+	    }],
+	    staticClass: "el-switch__label el-switch__label--right",
+	    style: ({
+	      'width': _vm.coreWidth + 'px'
+	    })
+	  }, [(_vm.offIconClass) ? _c('i', {
+	    class: [_vm.offIconClass]
+	  }) : _vm._e(), (!_vm.offIconClass && _vm.offText) ? _c('span', [_vm._v(_vm._s(_vm.offText))]) : _vm._e()])])], 1)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 227 - 0
static/element-ui/lib/tab-pane.js

@@ -0,0 +1,227 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(297);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 297:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tabPane = __webpack_require__(298);
+
+	var _tabPane2 = _interopRequireDefault(_tabPane);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_tabPane2.default.install = function (Vue) {
+	  Vue.component(_tabPane2.default.name, _tabPane2.default);
+	};
+
+	exports.default = _tabPane2.default;
+
+/***/ },
+
+/***/ 298:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(299),
+	  /* template */
+	  __webpack_require__(300),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 299:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'ElTabPane',
+
+	  componentName: 'ElTabPane',
+
+	  props: {
+	    label: String,
+	    labelContent: Function,
+	    name: String,
+	    closable: Boolean,
+	    disabled: Boolean
+	  },
+
+	  data: function data() {
+	    return {
+	      index: null
+	    };
+	  },
+
+
+	  computed: {
+	    isClosable: function isClosable() {
+	      return this.closable || this.$parent.closable;
+	    },
+	    active: function active() {
+	      return this.$parent.currentName === (this.name || this.index);
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    this.$parent.addPanes(this);
+	  },
+	  destroyed: function destroyed() {
+	    if (this.$el && this.$el.parentNode) {
+	      this.$el.parentNode.removeChild(this.$el);
+	    }
+	    this.$parent.removePanes(this);
+	  },
+
+
+	  watch: {
+	    label: function label() {
+	      this.$parent.$forceUpdate();
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 300:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.active),
+	      expression: "active"
+	    }],
+	    staticClass: "el-tab-pane"
+	  }, [_vm._t("default")], 2)
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 666 - 0
static/element-ui/lib/table-column.js

@@ -0,0 +1,666 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(316);
+
+
+/***/ },
+
+/***/ 164:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/merge");
+
+/***/ },
+
+/***/ 266:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/tag");
+
+/***/ },
+
+/***/ 304:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/checkbox");
+
+/***/ },
+
+/***/ 306:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+	var getCell = exports.getCell = function getCell(event) {
+	  var cell = event.target;
+
+	  while (cell && cell.tagName.toUpperCase() !== 'HTML') {
+	    if (cell.tagName.toUpperCase() === 'TD') {
+	      return cell;
+	    }
+	    cell = cell.parentNode;
+	  }
+
+	  return null;
+	};
+
+	var getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {
+	  prop = prop || '';
+	  var paths = prop.split('.');
+	  var current = object;
+	  var result = null;
+	  for (var i = 0, j = paths.length; i < j; i++) {
+	    var path = paths[i];
+	    if (!current) break;
+
+	    if (i === j - 1) {
+	      result = current[path];
+	      break;
+	    }
+	    current = current[path];
+	  }
+	  return result;
+	};
+
+	var isObject = function isObject(obj) {
+	  return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';
+	};
+
+	var orderBy = exports.orderBy = function orderBy(array, sortKey, reverse, sortMethod) {
+	  if (typeof reverse === 'string') {
+	    reverse = reverse === 'descending' ? -1 : 1;
+	  }
+	  if (!sortKey) {
+	    return array;
+	  }
+	  var order = reverse && reverse < 0 ? -1 : 1;
+
+	  // sort on a copy to avoid mutating original array
+	  return array.slice().sort(sortMethod ? function (a, b) {
+	    return sortMethod(a, b) ? order : -order;
+	  } : function (a, b) {
+	    if (sortKey !== '$key') {
+	      if (isObject(a) && '$value' in a) a = a.$value;
+	      if (isObject(b) && '$value' in b) b = b.$value;
+	    }
+	    a = isObject(a) ? getValueByPath(a, sortKey) : a;
+	    b = isObject(b) ? getValueByPath(b, sortKey) : b;
+	    return a === b ? 0 : a > b ? order : -order;
+	  });
+	};
+
+	var getColumnById = exports.getColumnById = function getColumnById(table, columnId) {
+	  var column = null;
+	  table.columns.forEach(function (item) {
+	    if (item.id === columnId) {
+	      column = item;
+	    }
+	  });
+	  return column;
+	};
+
+	var getColumnByCell = exports.getColumnByCell = function getColumnByCell(table, cell) {
+	  var matches = (cell.className || '').match(/el-table_[^\s]+/gm);
+	  if (matches) {
+	    return getColumnById(table, matches[0]);
+	  }
+	  return null;
+	};
+
+	var isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+
+	var mousewheel = exports.mousewheel = function mousewheel(element, callback) {
+	  if (element && element.addEventListener) {
+	    element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', callback);
+	  }
+	};
+
+	var getRowIdentity = exports.getRowIdentity = function getRowIdentity(row, rowKey) {
+	  if (!row) throw new Error('row is required when get row identity');
+	  if (typeof rowKey === 'string') {
+	    return row[rowKey];
+	  } else if (typeof rowKey === 'function') {
+	    return rowKey.call(null, row);
+	  }
+	};
+
+/***/ },
+
+/***/ 316:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tableColumn = __webpack_require__(317);
+
+	var _tableColumn2 = _interopRequireDefault(_tableColumn);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_tableColumn2.default.install = function (Vue) {
+	  Vue.component(_tableColumn2.default.name, _tableColumn2.default);
+	};
+
+	exports.default = _tableColumn2.default;
+
+/***/ },
+
+/***/ 317:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _checkbox = __webpack_require__(304);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	var _tag = __webpack_require__(266);
+
+	var _tag2 = _interopRequireDefault(_tag);
+
+	var _merge = __webpack_require__(164);
+
+	var _merge2 = _interopRequireDefault(_merge);
+
+	var _util = __webpack_require__(306);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
+
+	var columnIdSeed = 1;
+
+	var defaults = {
+	  default: {
+	    order: ''
+	  },
+	  selection: {
+	    width: 48,
+	    minWidth: 48,
+	    realWidth: 48,
+	    order: '',
+	    className: 'el-table-column--selection'
+	  },
+	  expand: {
+	    width: 48,
+	    minWidth: 48,
+	    realWidth: 48,
+	    order: ''
+	  },
+	  index: {
+	    width: 48,
+	    minWidth: 48,
+	    realWidth: 48,
+	    order: ''
+	  }
+	};
+
+	var forced = {
+	  selection: {
+	    renderHeader: function renderHeader(h) {
+	      return h(
+	        'el-checkbox',
+	        {
+	          nativeOn: {
+	            'click': this.toggleAllSelection
+	          },
+	          domProps: {
+	            'value': this.isAllSelected
+	          }
+	        },
+	        []
+	      );
+	    },
+	    renderCell: function renderCell(h, _ref) {
+	      var row = _ref.row,
+	          column = _ref.column,
+	          store = _ref.store,
+	          $index = _ref.$index;
+
+	      return h(
+	        'el-checkbox',
+	        {
+	          domProps: {
+	            'value': store.isSelected(row)
+	          },
+	          attrs: {
+	            disabled: column.selectable ? !column.selectable.call(null, row, $index) : false
+	          },
+	          on: {
+	            'input': function input() {
+	              store.commit('rowSelectedChanged', row);
+	            }
+	          }
+	        },
+	        []
+	      );
+	    },
+	    sortable: false,
+	    resizable: false
+	  },
+	  index: {
+	    renderHeader: function renderHeader(h, _ref2) {
+	      var column = _ref2.column;
+
+	      return column.label || '#';
+	    },
+	    renderCell: function renderCell(h, _ref3) {
+	      var $index = _ref3.$index;
+
+	      return h(
+	        'div',
+	        null,
+	        [$index + 1]
+	      );
+	    },
+	    sortable: false
+	  },
+	  expand: {
+	    renderHeader: function renderHeader(h, _ref4) {
+	      _objectDestructuringEmpty(_ref4);
+
+	      return '';
+	    },
+	    renderCell: function renderCell(h, _ref5, proxy) {
+	      var row = _ref5.row,
+	          store = _ref5.store;
+
+	      var expanded = store.states.expandRows.indexOf(row) > -1;
+	      return h(
+	        'div',
+	        { 'class': 'el-table__expand-icon ' + (expanded ? 'el-table__expand-icon--expanded' : ''),
+	          on: {
+	            'click': function click() {
+	              return proxy.handleExpandClick(row);
+	            }
+	          }
+	        },
+	        [h(
+	          'i',
+	          { 'class': 'el-icon el-icon-arrow-right' },
+	          []
+	        )]
+	      );
+	    },
+	    sortable: false,
+	    resizable: false,
+	    className: 'el-table__expand-column'
+	  }
+	};
+
+	var getDefaultColumn = function getDefaultColumn(type, options) {
+	  var column = {};
+
+	  (0, _merge2.default)(column, defaults[type || 'default']);
+
+	  for (var name in options) {
+	    if (options.hasOwnProperty(name)) {
+	      var value = options[name];
+	      if (typeof value !== 'undefined') {
+	        column[name] = value;
+	      }
+	    }
+	  }
+
+	  if (!column.minWidth) {
+	    column.minWidth = 80;
+	  }
+
+	  column.realWidth = column.width || column.minWidth;
+
+	  return column;
+	};
+
+	var DEFAULT_RENDER_CELL = function DEFAULT_RENDER_CELL(h, _ref6) {
+	  var row = _ref6.row,
+	      column = _ref6.column;
+
+	  var property = column.property;
+	  if (column && column.formatter) {
+	    return column.formatter(row, column);
+	  }
+
+	  if (property && property.indexOf('.') === -1) {
+	    return row[property];
+	  }
+
+	  return (0, _util.getValueByPath)(row, property);
+	};
+
+	exports.default = {
+	  name: 'ElTableColumn',
+
+	  props: {
+	    type: {
+	      type: String,
+	      default: 'default'
+	    },
+	    label: String,
+	    className: String,
+	    labelClassName: String,
+	    property: String,
+	    prop: String,
+	    width: {},
+	    minWidth: {},
+	    renderHeader: Function,
+	    sortable: {
+	      type: [String, Boolean],
+	      default: false
+	    },
+	    sortMethod: Function,
+	    resizable: {
+	      type: Boolean,
+	      default: true
+	    },
+	    context: {},
+	    columnKey: String,
+	    align: String,
+	    headerAlign: String,
+	    showTooltipWhenOverflow: Boolean,
+	    showOverflowTooltip: Boolean,
+	    fixed: [Boolean, String],
+	    formatter: Function,
+	    selectable: Function,
+	    reserveSelection: Boolean,
+	    filterMethod: Function,
+	    filteredValue: Array,
+	    filters: Array,
+	    filterMultiple: {
+	      type: Boolean,
+	      default: true
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      isSubColumn: false,
+	      columns: []
+	    };
+	  },
+	  beforeCreate: function beforeCreate() {
+	    this.row = {};
+	    this.column = {};
+	    this.$index = 0;
+	  },
+
+
+	  components: {
+	    ElCheckbox: _checkbox2.default,
+	    ElTag: _tag2.default
+	  },
+
+	  computed: {
+	    owner: function owner() {
+	      var parent = this.$parent;
+	      while (parent && !parent.tableId) {
+	        parent = parent.$parent;
+	      }
+	      return parent;
+	    }
+	  },
+
+	  created: function created() {
+	    var _this = this;
+
+	    this.customRender = this.$options.render;
+	    this.$options.render = function (h) {
+	      return h('div', _this.$slots.default);
+	    };
+	    this.columnId = (this.$parent.tableId || this.$parent.columnId + '_') + 'column_' + columnIdSeed++;
+
+	    var parent = this.$parent;
+	    var owner = this.owner;
+	    this.isSubColumn = owner !== parent;
+
+	    var type = this.type;
+
+	    var width = this.width;
+	    if (width !== undefined) {
+	      width = parseInt(width, 10);
+	      if (isNaN(width)) {
+	        width = null;
+	      }
+	    }
+
+	    var minWidth = this.minWidth;
+	    if (minWidth !== undefined) {
+	      minWidth = parseInt(minWidth, 10);
+	      if (isNaN(minWidth)) {
+	        minWidth = 80;
+	      }
+	    }
+
+	    var isColumnGroup = false;
+
+	    var column = getDefaultColumn(type, {
+	      id: this.columnId,
+	      columnKey: this.columnKey,
+	      label: this.label,
+	      className: this.className,
+	      labelClassName: this.labelClassName,
+	      property: this.prop || this.property,
+	      type: type,
+	      renderCell: null,
+	      renderHeader: this.renderHeader,
+	      minWidth: minWidth,
+	      width: width,
+	      isColumnGroup: isColumnGroup,
+	      context: this.context,
+	      align: this.align ? 'is-' + this.align : null,
+	      headerAlign: this.headerAlign ? 'is-' + this.headerAlign : this.align ? 'is-' + this.align : null,
+	      sortable: this.sortable === '' ? true : this.sortable,
+	      sortMethod: this.sortMethod,
+	      resizable: this.resizable,
+	      showOverflowTooltip: this.showOverflowTooltip || this.showTooltipWhenOverflow,
+	      formatter: this.formatter,
+	      selectable: this.selectable,
+	      reserveSelection: this.reserveSelection,
+	      fixed: this.fixed === '' ? true : this.fixed,
+	      filterMethod: this.filterMethod,
+	      filters: this.filters,
+	      filterable: this.filters || this.filterMethod,
+	      filterMultiple: this.filterMultiple,
+	      filterOpened: false,
+	      filteredValue: this.filteredValue || []
+	    });
+
+	    (0, _merge2.default)(column, forced[type] || {});
+
+	    this.columnConfig = column;
+
+	    var renderCell = column.renderCell;
+	    var _self = this;
+
+	    if (type === 'expand') {
+	      owner.renderExpanded = function (h, data) {
+	        return _self.$scopedSlots.default ? _self.$scopedSlots.default(data) : _self.$slots.default;
+	      };
+
+	      column.renderCell = function (h, data) {
+	        return h(
+	          'div',
+	          { 'class': 'cell' },
+	          [renderCell(h, data, this._renderProxy)]
+	        );
+	      };
+
+	      return;
+	    }
+
+	    column.renderCell = function (h, data) {
+	      // 未来版本移除
+	      if (_self.$vnode.data.inlineTemplate) {
+	        renderCell = function renderCell() {
+	          data._self = _self.context || data._self;
+	          if (Object.prototype.toString.call(data._self) === '[object Object]') {
+	            for (var prop in data._self) {
+	              if (!data.hasOwnProperty(prop)) {
+	                data[prop] = data._self[prop];
+	              }
+	            }
+	          }
+	          // 静态内容会缓存到 _staticTrees 内,不改的话获取的静态数据就不是内部 context
+	          data._staticTrees = _self._staticTrees;
+	          data.$options.staticRenderFns = _self.$options.staticRenderFns;
+	          return _self.customRender.call(data);
+	        };
+	      } else if (_self.$scopedSlots.default) {
+	        renderCell = function renderCell() {
+	          return _self.$scopedSlots.default(data);
+	        };
+	      }
+
+	      if (!renderCell) {
+	        renderCell = DEFAULT_RENDER_CELL;
+	      }
+
+	      return _self.showOverflowTooltip || _self.showTooltipWhenOverflow ? h(
+	        'div',
+	        { 'class': 'cell el-tooltip' },
+	        [renderCell(h, data)]
+	      ) : h(
+	        'div',
+	        { 'class': 'cell' },
+	        [renderCell(h, data)]
+	      );
+	    };
+	  },
+	  destroyed: function destroyed() {
+	    if (!this.$parent) return;
+	    this.owner.store.commit('removeColumn', this.columnConfig);
+	  },
+
+
+	  watch: {
+	    label: function label(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.label = newVal;
+	      }
+	    },
+	    prop: function prop(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.property = newVal;
+	      }
+	    },
+	    property: function property(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.property = newVal;
+	      }
+	    },
+	    filters: function filters(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.filters = newVal;
+	      }
+	    },
+	    filterMultiple: function filterMultiple(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.filterMultiple = newVal;
+	      }
+	    },
+	    align: function align(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.align = newVal ? 'is-' + newVal : null;
+
+	        if (!this.headerAlign) {
+	          this.columnConfig.headerAlign = newVal ? 'is-' + newVal : null;
+	        }
+	      }
+	    },
+	    headerAlign: function headerAlign(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.headerAlign = 'is-' + (newVal ? newVal : this.align);
+	      }
+	    },
+	    width: function width(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.width = newVal;
+	        this.owner.store.scheduleLayout();
+	      }
+	    },
+	    minWidth: function minWidth(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.minWidth = newVal;
+	        this.owner.store.scheduleLayout();
+	      }
+	    },
+	    fixed: function fixed(newVal) {
+	      if (this.columnConfig) {
+	        this.columnConfig.fixed = newVal;
+	        this.owner.store.scheduleLayout();
+	      }
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var owner = this.owner;
+	    var parent = this.$parent;
+	    var columnIndex = void 0;
+
+	    if (!this.isSubColumn) {
+	      columnIndex = [].indexOf.call(parent.$refs.hiddenColumns.children, this.$el);
+	    } else {
+	      columnIndex = [].indexOf.call(parent.$el.children, this.$el);
+	    }
+
+	    owner.store.commit('insertColumn', this.columnConfig, columnIndex, this.isSubColumn ? parent.columnConfig : null);
+	  }
+	};
+
+/***/ }
+
+/******/ });

+ 2907 - 0
static/element-ui/lib/table.js

@@ -0,0 +1,2907 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(301);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 10:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/clickoutside");
+
+/***/ },
+
+/***/ 13:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/vue-popper");
+
+/***/ },
+
+/***/ 45:
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/throttle");
+
+/***/ },
+
+/***/ 46:
+/***/ function(module, exports) {
+
+	module.exports = require("throttle-debounce/debounce");
+
+/***/ },
+
+/***/ 47:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/resize-event");
+
+/***/ },
+
+/***/ 56:
+/***/ function(module, exports) {
+
+	module.exports = require("vue");
+
+/***/ },
+
+/***/ 60:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/mixins/locale");
+
+/***/ },
+
+/***/ 117:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/dom");
+
+/***/ },
+
+/***/ 132:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/popup");
+
+/***/ },
+
+/***/ 256:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/scrollbar-width");
+
+/***/ },
+
+/***/ 266:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/tag");
+
+/***/ },
+
+/***/ 274:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/tooltip");
+
+/***/ },
+
+/***/ 301:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _table = __webpack_require__(302);
+
+	var _table2 = _interopRequireDefault(_table);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_table2.default.install = function (Vue) {
+	  Vue.component(_table2.default.name, _table2.default);
+	};
+
+	exports.default = _table2.default;
+
+/***/ },
+
+/***/ 302:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(303),
+	  /* template */
+	  __webpack_require__(315),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 303:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _checkbox = __webpack_require__(304);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	var _throttle = __webpack_require__(45);
+
+	var _throttle2 = _interopRequireDefault(_throttle);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	var _resizeEvent = __webpack_require__(47);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _tableStore = __webpack_require__(305);
+
+	var _tableStore2 = _interopRequireDefault(_tableStore);
+
+	var _tableLayout = __webpack_require__(307);
+
+	var _tableLayout2 = _interopRequireDefault(_tableLayout);
+
+	var _tableBody = __webpack_require__(308);
+
+	var _tableBody2 = _interopRequireDefault(_tableBody);
+
+	var _tableHeader = __webpack_require__(309);
+
+	var _tableHeader2 = _interopRequireDefault(_tableHeader);
+
+	var _util = __webpack_require__(306);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	var tableIdSeed = 1;
+
+	exports.default = {
+	  name: 'ElTable',
+
+	  mixins: [_locale2.default],
+
+	  props: {
+	    data: {
+	      type: Array,
+	      default: function _default() {
+	        return [];
+	      }
+	    },
+
+	    width: [String, Number],
+
+	    height: [String, Number],
+
+	    maxHeight: [String, Number],
+
+	    fit: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    stripe: Boolean,
+
+	    border: Boolean,
+
+	    rowKey: [String, Function],
+
+	    context: {},
+
+	    showHeader: {
+	      type: Boolean,
+	      default: true
+	    },
+
+	    rowClassName: [String, Function],
+
+	    rowStyle: [Object, Function],
+
+	    highlightCurrentRow: Boolean,
+
+	    currentRowKey: [String, Number],
+
+	    emptyText: String,
+
+	    expandRowKeys: Array,
+
+	    defaultExpandAll: Boolean,
+
+	    defaultSort: Object,
+
+	    tooltipEffect: String
+	  },
+
+	  components: {
+	    TableHeader: _tableHeader2.default,
+	    TableBody: _tableBody2.default,
+	    ElCheckbox: _checkbox2.default
+	  },
+
+	  methods: {
+	    toggleRowSelection: function toggleRowSelection(row, selected) {
+	      this.store.toggleRowSelection(row, selected);
+	      this.store.updateAllSelected();
+	    },
+	    clearSelection: function clearSelection() {
+	      this.store.clearSelection();
+	    },
+	    handleMouseLeave: function handleMouseLeave() {
+	      this.store.commit('setHoverRow', null);
+	      if (this.hoverState) this.hoverState = null;
+	    },
+	    updateScrollY: function updateScrollY() {
+	      this.layout.updateScrollY();
+	    },
+	    bindEvents: function bindEvents() {
+	      var _this = this;
+
+	      var headerWrapper = this.$refs.headerWrapper;
+
+	      var refs = this.$refs;
+	      this.bodyWrapper.addEventListener('scroll', function () {
+	        if (headerWrapper) headerWrapper.scrollLeft = this.scrollLeft;
+	        if (refs.fixedBodyWrapper) refs.fixedBodyWrapper.scrollTop = this.scrollTop;
+	        if (refs.rightFixedBodyWrapper) refs.rightFixedBodyWrapper.scrollTop = this.scrollTop;
+	      });
+
+	      if (headerWrapper) {
+	        (0, _util.mousewheel)(headerWrapper, (0, _throttle2.default)(16, function (event) {
+	          var deltaX = event.deltaX;
+
+	          if (deltaX > 0) {
+	            _this.bodyWrapper.scrollLeft += 10;
+	          } else {
+	            _this.bodyWrapper.scrollLeft -= 10;
+	          }
+	        }));
+	      }
+
+	      if (this.fit) {
+	        this.windowResizeListener = (0, _throttle2.default)(50, function () {
+	          if (_this.$ready) _this.doLayout();
+	        });
+	        (0, _resizeEvent.addResizeListener)(this.$el, this.windowResizeListener);
+	      }
+	    },
+	    doLayout: function doLayout() {
+	      var _this2 = this;
+
+	      this.store.updateColumns();
+	      this.layout.update();
+	      this.updateScrollY();
+	      this.$nextTick(function () {
+	        if (_this2.height) {
+	          _this2.layout.setHeight(_this2.height);
+	        } else if (_this2.maxHeight) {
+	          _this2.layout.setMaxHeight(_this2.maxHeight);
+	        } else if (_this2.shouldUpdateHeight) {
+	          _this2.layout.updateHeight();
+	        }
+	      });
+	    }
+	  },
+
+	  created: function created() {
+	    var _this3 = this;
+
+	    this.tableId = 'el-table_' + tableIdSeed + '_';
+	    this.debouncedLayout = (0, _debounce2.default)(50, function () {
+	      return _this3.doLayout();
+	    });
+	  },
+
+
+	  computed: {
+	    bodyWrapper: function bodyWrapper() {
+	      return this.$refs.bodyWrapper;
+	    },
+	    shouldUpdateHeight: function shouldUpdateHeight() {
+	      return typeof this.height === 'number' || this.fixedColumns.length > 0 || this.rightFixedColumns.length > 0;
+	    },
+	    selection: function selection() {
+	      return this.store.selection;
+	    },
+	    columns: function columns() {
+	      return this.store.states.columns;
+	    },
+	    tableData: function tableData() {
+	      return this.store.states.data;
+	    },
+	    fixedColumns: function fixedColumns() {
+	      return this.store.states.fixedColumns;
+	    },
+	    rightFixedColumns: function rightFixedColumns() {
+	      return this.store.states.rightFixedColumns;
+	    },
+	    bodyHeight: function bodyHeight() {
+	      var style = {};
+
+	      if (this.height) {
+	        style = {
+	          height: this.layout.bodyHeight ? this.layout.bodyHeight + 'px' : ''
+	        };
+	      } else if (this.maxHeight) {
+	        style = {
+	          'max-height': (this.showHeader ? this.maxHeight - this.layout.headerHeight : this.maxHeight) + 'px'
+	        };
+	      }
+
+	      return style;
+	    },
+	    bodyWidth: function bodyWidth() {
+	      var _layout = this.layout,
+	          bodyWidth = _layout.bodyWidth,
+	          scrollY = _layout.scrollY,
+	          gutterWidth = _layout.gutterWidth;
+
+	      return bodyWidth ? bodyWidth - (scrollY ? gutterWidth : 0) + 'px' : '';
+	    },
+	    fixedBodyHeight: function fixedBodyHeight() {
+	      var style = {};
+
+	      if (this.height) {
+	        style = {
+	          height: this.layout.fixedBodyHeight ? this.layout.fixedBodyHeight + 'px' : ''
+	        };
+	      } else if (this.maxHeight) {
+	        var maxHeight = this.layout.scrollX ? this.maxHeight - this.layout.gutterWidth : this.maxHeight;
+
+	        if (this.showHeader) {
+	          maxHeight -= this.layout.headerHeight;
+	        }
+
+	        style = {
+	          'max-height': maxHeight + 'px'
+	        };
+	      }
+
+	      return style;
+	    },
+	    fixedHeight: function fixedHeight() {
+	      var style = {};
+
+	      if (this.maxHeight) {
+	        style = {
+	          bottom: this.layout.scrollX && this.data.length ? this.layout.gutterWidth + 'px' : ''
+	        };
+	      } else {
+	        style = {
+	          height: this.layout.viewportHeight ? this.layout.viewportHeight + 'px' : ''
+	        };
+	      }
+
+	      return style;
+	    }
+	  },
+
+	  watch: {
+	    height: function height(value) {
+	      this.layout.setHeight(value);
+	    },
+	    currentRowKey: function currentRowKey(newVal) {
+	      this.store.setCurrentRowKey(newVal);
+	    },
+
+
+	    data: {
+	      immediate: true,
+	      handler: function handler(val) {
+	        this.store.commit('setData', val);
+	      }
+	    },
+
+	    expandRowKeys: function expandRowKeys(newVal) {
+	      this.store.setExpandRowKeys(newVal);
+	    }
+	  },
+
+	  destroyed: function destroyed() {
+	    if (this.windowResizeListener) (0, _resizeEvent.removeResizeListener)(this.$el, this.windowResizeListener);
+	  },
+	  mounted: function mounted() {
+	    var _this4 = this;
+
+	    this.bindEvents();
+	    this.doLayout();
+
+	    // init filters
+	    this.store.states.columns.forEach(function (column) {
+	      if (column.filteredValue && column.filteredValue.length) {
+	        _this4.store.commit('filterChange', {
+	          column: column,
+	          values: column.filteredValue,
+	          silent: true
+	        });
+	      }
+	    });
+
+	    this.$ready = true;
+	  },
+	  data: function data() {
+	    var store = new _tableStore2.default(this, {
+	      rowKey: this.rowKey,
+	      defaultExpandAll: this.defaultExpandAll
+	    });
+	    var layout = new _tableLayout2.default({
+	      store: store,
+	      table: this,
+	      fit: this.fit,
+	      showHeader: this.showHeader
+	    });
+	    return {
+	      store: store,
+	      layout: layout,
+	      renderExpanded: null,
+	      resizeProxyVisible: false
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 304:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/checkbox");
+
+/***/ },
+
+/***/ 305:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	var _util = __webpack_require__(306);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var sortData = function sortData(data, states) {
+	  var sortingColumn = states.sortingColumn;
+	  if (!sortingColumn || typeof sortingColumn.sortable === 'string') {
+	    return data;
+	  }
+	  return (0, _util.orderBy)(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod);
+	};
+
+	var getKeysMap = function getKeysMap(array, rowKey) {
+	  var arrayMap = {};
+	  (array || []).forEach(function (row, index) {
+	    arrayMap[(0, _util.getRowIdentity)(row, rowKey)] = { row: row, index: index };
+	  });
+	  return arrayMap;
+	};
+
+	var toggleRowSelection = function toggleRowSelection(states, row, selected) {
+	  var changed = false;
+	  var selection = states.selection;
+	  var index = selection.indexOf(row);
+	  if (typeof selected === 'undefined') {
+	    if (index === -1) {
+	      selection.push(row);
+	      changed = true;
+	    } else {
+	      selection.splice(index, 1);
+	      changed = true;
+	    }
+	  } else {
+	    if (selected && index === -1) {
+	      selection.push(row);
+	      changed = true;
+	    } else if (!selected && index > -1) {
+	      selection.splice(index, 1);
+	      changed = true;
+	    }
+	  }
+
+	  return changed;
+	};
+
+	var TableStore = function TableStore(table) {
+	  var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+	  if (!table) {
+	    throw new Error('Table is required.');
+	  }
+	  this.table = table;
+
+	  this.states = {
+	    rowKey: null,
+	    _columns: [],
+	    originColumns: [],
+	    columns: [],
+	    fixedColumns: [],
+	    rightFixedColumns: [],
+	    isComplex: false,
+	    _data: null,
+	    filteredData: null,
+	    data: null,
+	    sortingColumn: null,
+	    sortProp: null,
+	    sortOrder: null,
+	    isAllSelected: false,
+	    selection: [],
+	    reserveSelection: false,
+	    selectable: null,
+	    currentRow: null,
+	    hoverRow: null,
+	    filters: {},
+	    expandRows: [],
+	    defaultExpandAll: false
+	  };
+
+	  for (var prop in initialState) {
+	    if (initialState.hasOwnProperty(prop) && this.states.hasOwnProperty(prop)) {
+	      this.states[prop] = initialState[prop];
+	    }
+	  }
+	};
+
+	TableStore.prototype.mutations = {
+	  setData: function setData(states, data) {
+	    var _this = this;
+
+	    var dataInstanceChanged = states._data !== data;
+	    states._data = data;
+	    states.data = sortData(data || [], states);
+
+	    // states.data.forEach((item) => {
+	    //   if (!item.$extra) {
+	    //     Object.defineProperty(item, '$extra', {
+	    //       value: {},
+	    //       enumerable: false
+	    //     });
+	    //   }
+	    // });
+
+	    this.updateCurrentRow();
+
+	    if (!states.reserveSelection) {
+	      if (dataInstanceChanged) {
+	        this.clearSelection();
+	      } else {
+	        this.cleanSelection();
+	      }
+	      this.updateAllSelected();
+	    } else {
+	      (function () {
+	        var rowKey = states.rowKey;
+	        if (rowKey) {
+	          (function () {
+	            var selection = states.selection;
+	            var selectedMap = getKeysMap(selection, rowKey);
+
+	            states.data.forEach(function (row) {
+	              var rowId = (0, _util.getRowIdentity)(row, rowKey);
+	              var rowInfo = selectedMap[rowId];
+	              if (rowInfo) {
+	                selection[rowInfo.index] = row;
+	              }
+	            });
+
+	            _this.updateAllSelected();
+	          })();
+	        } else {
+	          console.warn('WARN: rowKey is required when reserve-selection is enabled.');
+	        }
+	      })();
+	    }
+
+	    var defaultExpandAll = states.defaultExpandAll;
+	    if (defaultExpandAll) {
+	      this.states.expandRows = (states.data || []).slice(0);
+	    }
+
+	    _vue2.default.nextTick(function () {
+	      return _this.table.updateScrollY();
+	    });
+	  },
+	  changeSortCondition: function changeSortCondition(states) {
+	    var _this2 = this;
+
+	    states.data = sortData(states.filteredData || states._data || [], states);
+
+	    this.table.$emit('sort-change', {
+	      column: this.states.sortingColumn,
+	      prop: this.states.sortProp,
+	      order: this.states.sortOrder
+	    });
+
+	    _vue2.default.nextTick(function () {
+	      return _this2.table.updateScrollY();
+	    });
+	  },
+	  filterChange: function filterChange(states, options) {
+	    var _this3 = this;
+
+	    var column = options.column,
+	        values = options.values,
+	        silent = options.silent;
+
+	    if (values && !Array.isArray(values)) {
+	      values = [values];
+	    }
+
+	    var prop = column.property;
+	    var filters = {};
+
+	    if (prop) {
+	      states.filters[column.id] = values;
+	      filters[column.columnKey || column.id] = values;
+	    }
+
+	    var data = states._data;
+
+	    Object.keys(states.filters).forEach(function (columnId) {
+	      var values = states.filters[columnId];
+	      if (!values || values.length === 0) return;
+	      var column = (0, _util.getColumnById)(_this3.states, columnId);
+	      if (column && column.filterMethod) {
+	        data = data.filter(function (row) {
+	          return values.some(function (value) {
+	            return column.filterMethod.call(null, value, row);
+	          });
+	        });
+	      }
+	    });
+
+	    states.filteredData = data;
+	    states.data = sortData(data, states);
+
+	    if (!silent) {
+	      this.table.$emit('filter-change', filters);
+	    }
+
+	    _vue2.default.nextTick(function () {
+	      return _this3.table.updateScrollY();
+	    });
+	  },
+	  insertColumn: function insertColumn(states, column, index, parent) {
+	    var array = states._columns;
+	    if (parent) {
+	      array = parent.children;
+	      if (!array) array = parent.children = [];
+	    }
+
+	    if (typeof index !== 'undefined') {
+	      array.splice(index, 0, column);
+	    } else {
+	      array.push(column);
+	    }
+
+	    if (column.type === 'selection') {
+	      states.selectable = column.selectable;
+	      states.reserveSelection = column.reserveSelection;
+	    }
+
+	    this.updateColumns(); // hack for dynamics insert column
+	    this.scheduleLayout();
+	  },
+	  removeColumn: function removeColumn(states, column) {
+	    var _columns = states._columns;
+	    if (_columns) {
+	      _columns.splice(_columns.indexOf(column), 1);
+	    }
+
+	    this.updateColumns(); // hack for dynamics remove column
+	    this.scheduleLayout();
+	  },
+	  setHoverRow: function setHoverRow(states, row) {
+	    states.hoverRow = row;
+	  },
+	  setCurrentRow: function setCurrentRow(states, row) {
+	    var oldCurrentRow = states.currentRow;
+	    states.currentRow = row;
+
+	    if (oldCurrentRow !== row) {
+	      this.table.$emit('current-change', row, oldCurrentRow);
+	    }
+	  },
+	  rowSelectedChanged: function rowSelectedChanged(states, row) {
+	    var changed = toggleRowSelection(states, row);
+	    var selection = states.selection;
+
+	    if (changed) {
+	      var table = this.table;
+	      table.$emit('selection-change', selection);
+	      table.$emit('select', selection, row);
+	    }
+
+	    this.updateAllSelected();
+	  },
+
+
+	  toggleRowExpanded: function toggleRowExpanded(states, row, expanded) {
+	    var expandRows = states.expandRows;
+	    if (typeof expanded !== 'undefined') {
+	      var index = expandRows.indexOf(row);
+	      if (expanded) {
+	        if (index === -1) expandRows.push(row);
+	      } else {
+	        if (index !== -1) expandRows.splice(index, 1);
+	      }
+	    } else {
+	      var _index = expandRows.indexOf(row);
+	      if (_index === -1) {
+	        expandRows.push(row);
+	      } else {
+	        expandRows.splice(_index, 1);
+	      }
+	    }
+	    this.table.$emit('expand', row, expandRows.indexOf(row) !== -1);
+	  },
+
+	  toggleAllSelection: (0, _debounce2.default)(10, function (states) {
+	    var data = states.data || [];
+	    var value = !states.isAllSelected;
+	    var selection = this.states.selection;
+	    var selectionChanged = false;
+
+	    data.forEach(function (item, index) {
+	      if (states.selectable) {
+	        if (states.selectable.call(null, item, index) && toggleRowSelection(states, item, value)) {
+	          selectionChanged = true;
+	        }
+	      } else {
+	        if (toggleRowSelection(states, item, value)) {
+	          selectionChanged = true;
+	        }
+	      }
+	    });
+
+	    var table = this.table;
+	    if (selectionChanged) {
+	      table.$emit('selection-change', selection);
+	    }
+	    table.$emit('select-all', selection);
+	    states.isAllSelected = value;
+	  })
+	};
+
+	var doFlattenColumns = function doFlattenColumns(columns) {
+	  var result = [];
+	  columns.forEach(function (column) {
+	    if (column.children) {
+	      result.push.apply(result, doFlattenColumns(column.children));
+	    } else {
+	      result.push(column);
+	    }
+	  });
+	  return result;
+	};
+
+	TableStore.prototype.updateColumns = function () {
+	  var states = this.states;
+	  var _columns = states._columns || [];
+	  states.fixedColumns = _columns.filter(function (column) {
+	    return column.fixed === true || column.fixed === 'left';
+	  });
+	  states.rightFixedColumns = _columns.filter(function (column) {
+	    return column.fixed === 'right';
+	  });
+
+	  if (states.fixedColumns.length > 0 && _columns[0] && _columns[0].type === 'selection' && !_columns[0].fixed) {
+	    _columns[0].fixed = true;
+	    states.fixedColumns.unshift(_columns[0]);
+	  }
+	  states.originColumns = [].concat(states.fixedColumns).concat(_columns.filter(function (column) {
+	    return !column.fixed;
+	  })).concat(states.rightFixedColumns);
+	  states.columns = doFlattenColumns(states.originColumns);
+	  states.isComplex = states.fixedColumns.length > 0 || states.rightFixedColumns.length > 0;
+	};
+
+	TableStore.prototype.isSelected = function (row) {
+	  return (this.states.selection || []).indexOf(row) > -1;
+	};
+
+	TableStore.prototype.clearSelection = function () {
+	  var states = this.states;
+	  states.isAllSelected = false;
+	  var oldSelection = states.selection;
+	  states.selection = [];
+	  if (oldSelection.length > 0) {
+	    this.table.$emit('selection-change', states.selection);
+	  }
+	};
+
+	TableStore.prototype.setExpandRowKeys = function (rowKeys) {
+	  var expandRows = [];
+	  var data = this.states.data;
+	  var rowKey = this.states.rowKey;
+	  if (!rowKey) throw new Error('[Table] prop row-key should not be empty.');
+	  var keysMap = getKeysMap(data, rowKey);
+	  rowKeys.forEach(function (key) {
+	    var info = keysMap[key];
+	    if (info) {
+	      expandRows.push(info.row);
+	    }
+	  });
+
+	  this.states.expandRows = expandRows;
+	};
+
+	TableStore.prototype.toggleRowSelection = function (row, selected) {
+	  var changed = toggleRowSelection(this.states, row, selected);
+	  if (changed) {
+	    this.table.$emit('selection-change', this.states.selection);
+	  }
+	};
+
+	TableStore.prototype.cleanSelection = function () {
+	  var selection = this.states.selection || [];
+	  var data = this.states.data;
+	  var rowKey = this.states.rowKey;
+	  var deleted = void 0;
+	  if (rowKey) {
+	    deleted = [];
+	    var selectedMap = getKeysMap(selection, rowKey);
+	    var dataMap = getKeysMap(data, rowKey);
+	    for (var key in selectedMap) {
+	      if (selectedMap.hasOwnProperty(key) && !dataMap[key]) {
+	        deleted.push(selectedMap[key].row);
+	      }
+	    }
+	  } else {
+	    deleted = selection.filter(function (item) {
+	      return data.indexOf(item) === -1;
+	    });
+	  }
+
+	  deleted.forEach(function (deletedItem) {
+	    selection.splice(selection.indexOf(deletedItem), 1);
+	  });
+
+	  if (deleted.length) {
+	    this.table.$emit('selection-change', selection);
+	  }
+	};
+
+	TableStore.prototype.updateAllSelected = function () {
+	  var states = this.states;
+	  var selection = states.selection,
+	      rowKey = states.rowKey,
+	      selectable = states.selectable,
+	      data = states.data;
+
+	  if (!data || data.length === 0) {
+	    states.isAllSelected = false;
+	    return;
+	  }
+
+	  var selectedMap = void 0;
+	  if (rowKey) {
+	    selectedMap = getKeysMap(states.selection, rowKey);
+	  }
+
+	  var isSelected = function isSelected(row) {
+	    if (selectedMap) {
+	      return !!selectedMap[(0, _util.getRowIdentity)(row, rowKey)];
+	    } else {
+	      return selection.indexOf(row) !== -1;
+	    }
+	  };
+
+	  var isAllSelected = true;
+	  var selectedCount = 0;
+	  for (var i = 0, j = data.length; i < j; i++) {
+	    var item = data[i];
+	    if (selectable) {
+	      var isRowSelectable = selectable.call(null, item, i);
+	      if (isRowSelectable) {
+	        if (!isSelected(item)) {
+	          isAllSelected = false;
+	          break;
+	        } else {
+	          selectedCount++;
+	        }
+	      }
+	    } else {
+	      if (!isSelected(item)) {
+	        isAllSelected = false;
+	        break;
+	      } else {
+	        selectedCount++;
+	      }
+	    }
+	  }
+
+	  if (selectedCount === 0) isAllSelected = false;
+
+	  states.isAllSelected = isAllSelected;
+	};
+
+	TableStore.prototype.scheduleLayout = function () {
+	  this.table.debouncedLayout();
+	};
+
+	TableStore.prototype.setCurrentRowKey = function (key) {
+	  var states = this.states;
+	  var rowKey = states.rowKey;
+	  if (!rowKey) throw new Error('[Table] row-key should not be empty.');
+	  var data = states.data || [];
+	  var keysMap = getKeysMap(data, rowKey);
+	  var info = keysMap[key];
+	  if (info) {
+	    states.currentRow = info.row;
+	  }
+	};
+
+	TableStore.prototype.updateCurrentRow = function () {
+	  var states = this.states;
+	  var table = this.table;
+	  var data = states.data || [];
+	  var oldCurrentRow = states.currentRow;
+
+	  if (data.indexOf(oldCurrentRow) === -1) {
+	    states.currentRow = null;
+
+	    if (states.currentRow !== oldCurrentRow) {
+	      table.$emit('current-change', null, oldCurrentRow);
+	    }
+	  }
+	};
+
+	TableStore.prototype.commit = function (name) {
+	  var mutations = this.mutations;
+	  if (mutations[name]) {
+	    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+	      args[_key - 1] = arguments[_key];
+	    }
+
+	    mutations[name].apply(this, [this.states].concat(args));
+	  } else {
+	    throw new Error('Action not found: ' + name);
+	  }
+	};
+
+	exports.default = TableStore;
+
+/***/ },
+
+/***/ 306:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+	var getCell = exports.getCell = function getCell(event) {
+	  var cell = event.target;
+
+	  while (cell && cell.tagName.toUpperCase() !== 'HTML') {
+	    if (cell.tagName.toUpperCase() === 'TD') {
+	      return cell;
+	    }
+	    cell = cell.parentNode;
+	  }
+
+	  return null;
+	};
+
+	var getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {
+	  prop = prop || '';
+	  var paths = prop.split('.');
+	  var current = object;
+	  var result = null;
+	  for (var i = 0, j = paths.length; i < j; i++) {
+	    var path = paths[i];
+	    if (!current) break;
+
+	    if (i === j - 1) {
+	      result = current[path];
+	      break;
+	    }
+	    current = current[path];
+	  }
+	  return result;
+	};
+
+	var isObject = function isObject(obj) {
+	  return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';
+	};
+
+	var orderBy = exports.orderBy = function orderBy(array, sortKey, reverse, sortMethod) {
+	  if (typeof reverse === 'string') {
+	    reverse = reverse === 'descending' ? -1 : 1;
+	  }
+	  if (!sortKey) {
+	    return array;
+	  }
+	  var order = reverse && reverse < 0 ? -1 : 1;
+
+	  // sort on a copy to avoid mutating original array
+	  return array.slice().sort(sortMethod ? function (a, b) {
+	    return sortMethod(a, b) ? order : -order;
+	  } : function (a, b) {
+	    if (sortKey !== '$key') {
+	      if (isObject(a) && '$value' in a) a = a.$value;
+	      if (isObject(b) && '$value' in b) b = b.$value;
+	    }
+	    a = isObject(a) ? getValueByPath(a, sortKey) : a;
+	    b = isObject(b) ? getValueByPath(b, sortKey) : b;
+	    return a === b ? 0 : a > b ? order : -order;
+	  });
+	};
+
+	var getColumnById = exports.getColumnById = function getColumnById(table, columnId) {
+	  var column = null;
+	  table.columns.forEach(function (item) {
+	    if (item.id === columnId) {
+	      column = item;
+	    }
+	  });
+	  return column;
+	};
+
+	var getColumnByCell = exports.getColumnByCell = function getColumnByCell(table, cell) {
+	  var matches = (cell.className || '').match(/el-table_[^\s]+/gm);
+	  if (matches) {
+	    return getColumnById(table, matches[0]);
+	  }
+	  return null;
+	};
+
+	var isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
+
+	var mousewheel = exports.mousewheel = function mousewheel(element, callback) {
+	  if (element && element.addEventListener) {
+	    element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', callback);
+	  }
+	};
+
+	var getRowIdentity = exports.getRowIdentity = function getRowIdentity(row, rowKey) {
+	  if (!row) throw new Error('row is required when get row identity');
+	  if (typeof rowKey === 'string') {
+	    return row[rowKey];
+	  } else if (typeof rowKey === 'function') {
+	    return rowKey.call(null, row);
+	  }
+	};
+
+/***/ },
+
+/***/ 307:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _scrollbarWidth = __webpack_require__(256);
+
+	var _scrollbarWidth2 = _interopRequireDefault(_scrollbarWidth);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+	var TableLayout = function () {
+	  function TableLayout(options) {
+	    _classCallCheck(this, TableLayout);
+
+	    this.table = null;
+	    this.store = null;
+	    this.columns = null;
+	    this.fit = true;
+	    this.showHeader = true;
+
+	    this.height = null;
+	    this.scrollX = false;
+	    this.scrollY = false;
+	    this.bodyWidth = null;
+	    this.fixedWidth = null;
+	    this.rightFixedWidth = null;
+	    this.tableHeight = null;
+	    this.headerHeight = 44; // Table Header Height
+	    this.viewportHeight = null; // Table Height - Scroll Bar Height
+	    this.bodyHeight = null; // Table Height - Table Header Height
+	    this.fixedBodyHeight = null; // Table Height - Table Header Height - Scroll Bar Height
+	    this.gutterWidth = (0, _scrollbarWidth2.default)();
+
+	    for (var name in options) {
+	      if (options.hasOwnProperty(name)) {
+	        this[name] = options[name];
+	      }
+	    }
+
+	    if (!this.table) {
+	      throw new Error('table is required for Table Layout');
+	    }
+	    if (!this.store) {
+	      throw new Error('store is required for Table Layout');
+	    }
+	  }
+
+	  TableLayout.prototype.updateScrollY = function updateScrollY() {
+	    var height = this.height;
+	    if (typeof height !== 'string' && typeof height !== 'number') return;
+	    var bodyWrapper = this.table.bodyWrapper;
+	    if (this.table.$el && bodyWrapper) {
+	      var body = bodyWrapper.querySelector('.el-table__body');
+	      this.scrollY = body.offsetHeight > bodyWrapper.offsetHeight;
+	    }
+	  };
+
+	  TableLayout.prototype.setHeight = function setHeight(value) {
+	    var prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'height';
+
+	    var el = this.table.$el;
+	    if (typeof value === 'string' && /^\d+$/.test(value)) {
+	      value = Number(value);
+	    }
+
+	    this.height = value;
+
+	    if (!el) return;
+	    if (typeof value === 'number') {
+	      el.style[prop] = value + 'px';
+
+	      this.updateHeight();
+	    } else if (typeof value === 'string') {
+	      if (value === '') {
+	        el.style[prop] = '';
+	      }
+	      this.updateHeight();
+	    }
+	  };
+
+	  TableLayout.prototype.setMaxHeight = function setMaxHeight(value) {
+	    return this.setHeight(value, 'max-height');
+	  };
+
+	  TableLayout.prototype.updateHeight = function updateHeight() {
+	    var height = this.tableHeight = this.table.$el.clientHeight;
+	    var noData = !this.table.data || this.table.data.length === 0;
+	    var headerWrapper = this.table.$refs.headerWrapper;
+
+	    if (this.showHeader && !headerWrapper) return;
+	    if (!this.showHeader) {
+	      this.headerHeight = 0;
+	      if (this.height !== null && (!isNaN(this.height) || typeof this.height === 'string')) {
+	        this.bodyHeight = height;
+	      }
+	      this.fixedBodyHeight = this.scrollX ? height - this.gutterWidth : height;
+	    } else {
+	      var headerHeight = this.headerHeight = headerWrapper.offsetHeight;
+	      var bodyHeight = height - headerHeight;
+	      if (this.height !== null && (!isNaN(this.height) || typeof this.height === 'string')) {
+	        this.bodyHeight = bodyHeight;
+	      }
+	      this.fixedBodyHeight = this.scrollX ? bodyHeight - this.gutterWidth : bodyHeight;
+	    }
+	    this.viewportHeight = this.scrollX ? height - (noData ? 0 : this.gutterWidth) : height;
+	  };
+
+	  TableLayout.prototype.update = function update() {
+	    var fit = this.fit;
+	    var columns = this.table.columns;
+	    var bodyWidth = this.table.$el.clientWidth;
+	    var bodyMinWidth = 0;
+
+	    var flattenColumns = [];
+	    columns.forEach(function (column) {
+	      if (column.isColumnGroup) {
+	        flattenColumns.push.apply(flattenColumns, column.columns);
+	      } else {
+	        flattenColumns.push(column);
+	      }
+	    });
+
+	    var flexColumns = flattenColumns.filter(function (column) {
+	      return typeof column.width !== 'number';
+	    });
+
+	    if (flexColumns.length > 0 && fit) {
+	      flattenColumns.forEach(function (column) {
+	        bodyMinWidth += column.width || column.minWidth || 80;
+	      });
+
+	      if (bodyMinWidth < bodyWidth - this.gutterWidth) {
+	        // DON'T HAVE SCROLL BAR
+	        this.scrollX = false;
+
+	        var totalFlexWidth = bodyWidth - this.gutterWidth - bodyMinWidth;
+
+	        if (flexColumns.length === 1) {
+	          flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth;
+	        } else {
+	          (function () {
+	            var allColumnsWidth = flexColumns.reduce(function (prev, column) {
+	              return prev + (column.minWidth || 80);
+	            }, 0);
+	            var flexWidthPerPixel = totalFlexWidth / allColumnsWidth;
+	            var noneFirstWidth = 0;
+
+	            flexColumns.forEach(function (column, index) {
+	              if (index === 0) return;
+	              var flexWidth = Math.floor((column.minWidth || 80) * flexWidthPerPixel);
+	              noneFirstWidth += flexWidth;
+	              column.realWidth = (column.minWidth || 80) + flexWidth;
+	            });
+
+	            flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;
+	          })();
+	        }
+	      } else {
+	        // HAVE HORIZONTAL SCROLL BAR
+	        this.scrollX = true;
+	        flexColumns.forEach(function (column) {
+	          column.realWidth = column.minWidth;
+	        });
+	      }
+
+	      this.bodyWidth = Math.max(bodyMinWidth, bodyWidth);
+	    } else {
+	      flattenColumns.forEach(function (column) {
+	        if (!column.width && !column.minWidth) {
+	          column.realWidth = 80;
+	        } else {
+	          column.realWidth = column.width || column.minWidth;
+	        }
+
+	        bodyMinWidth += column.realWidth;
+	      });
+	      this.scrollX = bodyMinWidth > bodyWidth;
+
+	      this.bodyWidth = bodyMinWidth;
+	    }
+
+	    var fixedColumns = this.store.states.fixedColumns;
+
+	    if (fixedColumns.length > 0) {
+	      var fixedWidth = 0;
+	      fixedColumns.forEach(function (column) {
+	        fixedWidth += column.realWidth;
+	      });
+
+	      this.fixedWidth = fixedWidth;
+	    }
+
+	    var rightFixedColumns = this.store.states.rightFixedColumns;
+	    if (rightFixedColumns.length > 0) {
+	      var rightFixedWidth = 0;
+	      rightFixedColumns.forEach(function (column) {
+	        rightFixedWidth += column.realWidth;
+	      });
+
+	      this.rightFixedWidth = rightFixedWidth;
+	    }
+	  };
+
+	  return TableLayout;
+	}();
+
+	exports.default = TableLayout;
+
+/***/ },
+
+/***/ 308:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _util = __webpack_require__(306);
+
+	var _dom = __webpack_require__(117);
+
+	var _checkbox = __webpack_require__(304);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	var _tooltip = __webpack_require__(274);
+
+	var _tooltip2 = _interopRequireDefault(_tooltip);
+
+	var _debounce = __webpack_require__(46);
+
+	var _debounce2 = _interopRequireDefault(_debounce);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  components: {
+	    ElCheckbox: _checkbox2.default,
+	    ElTooltip: _tooltip2.default
+	  },
+
+	  props: {
+	    store: {
+	      required: true
+	    },
+	    context: {},
+	    layout: {
+	      required: true
+	    },
+	    rowClassName: [String, Function],
+	    rowStyle: [Object, Function],
+	    fixed: String,
+	    highlight: Boolean
+	  },
+
+	  render: function render(h) {
+	    var _this = this;
+
+	    var columnsHidden = this.columns.map(function (column, index) {
+	      return _this.isColumnHidden(index);
+	    });
+	    return h(
+	      'table',
+	      {
+	        'class': 'el-table__body',
+	        attrs: { cellspacing: '0',
+	          cellpadding: '0',
+	          border: '0' }
+	      },
+	      [h(
+	        'colgroup',
+	        null,
+	        [this._l(this.columns, function (column) {
+	          return h(
+	            'col',
+	            {
+	              attrs: {
+	                name: column.id,
+	                width: column.realWidth || column.width
+	              }
+	            },
+	            []
+	          );
+	        })]
+	      ), h(
+	        'tbody',
+	        null,
+	        [this._l(this.data, function (row, $index) {
+	          return [h(
+	            'tr',
+	            {
+	              style: _this.rowStyle ? _this.getRowStyle(row, $index) : null,
+	              key: _this.table.rowKey ? _this.getKeyOfRow(row, $index) : $index,
+	              on: {
+	                'dblclick': function dblclick($event) {
+	                  return _this.handleDoubleClick($event, row);
+	                },
+	                'click': function click($event) {
+	                  return _this.handleClick($event, row);
+	                },
+	                'contextmenu': function contextmenu($event) {
+	                  return _this.handleContextMenu($event, row);
+	                },
+	                'mouseenter': function mouseenter(_) {
+	                  return _this.handleMouseEnter($index);
+	                },
+	                'mouseleave': function mouseleave(_) {
+	                  return _this.handleMouseLeave();
+	                }
+	              },
+
+	              'class': [_this.getRowClass(row, $index)] },
+	            [_this._l(_this.columns, function (column, cellIndex) {
+	              return h(
+	                'td',
+	                {
+	                  'class': [column.id, column.align, column.className || '', columnsHidden[cellIndex] ? 'is-hidden' : ''],
+	                  on: {
+	                    'mouseenter': function mouseenter($event) {
+	                      return _this.handleCellMouseEnter($event, row);
+	                    },
+	                    'mouseleave': _this.handleCellMouseLeave
+	                  }
+	                },
+	                [column.renderCell.call(_this._renderProxy, h, { row: row, column: column, $index: $index, store: _this.store, _self: _this.context || _this.table.$vnode.context }, columnsHidden[cellIndex])]
+	              );
+	            }), !_this.fixed && _this.layout.scrollY && _this.layout.gutterWidth ? h(
+	              'td',
+	              { 'class': 'gutter' },
+	              []
+	            ) : '']
+	          ), _this.store.states.expandRows.indexOf(row) > -1 ? h(
+	            'tr',
+	            null,
+	            [h(
+	              'td',
+	              {
+	                attrs: { colspan: _this.columns.length },
+	                'class': 'el-table__expanded-cell' },
+	              [_this.table.renderExpanded ? _this.table.renderExpanded(h, { row: row, $index: $index, store: _this.store }) : '']
+	            )]
+	          ) : ''];
+	        }).concat(h(
+	          'el-tooltip',
+	          {
+	            attrs: { effect: this.table.tooltipEffect, placement: 'top', content: this.tooltipContent },
+	            ref: 'tooltip' },
+	          []
+	        ))]
+	      )]
+	    );
+	  },
+
+
+	  watch: {
+	    'store.states.hoverRow': function storeStatesHoverRow(newVal, oldVal) {
+	      if (!this.store.states.isComplex) return;
+	      var el = this.$el;
+	      if (!el) return;
+	      var rows = el.querySelectorAll('tbody > tr');
+	      var oldRow = rows[oldVal];
+	      var newRow = rows[newVal];
+	      if (oldRow) {
+	        oldRow.classList.remove('hover-row');
+	      }
+	      if (newRow) {
+	        newRow.classList.add('hover-row');
+	      }
+	    },
+	    'store.states.currentRow': function storeStatesCurrentRow(newVal, oldVal) {
+	      if (!this.highlight) return;
+	      var el = this.$el;
+	      if (!el) return;
+	      var data = this.store.states.data;
+	      var rows = el.querySelectorAll('tbody > tr');
+	      var oldRow = rows[data.indexOf(oldVal)];
+	      var newRow = rows[data.indexOf(newVal)];
+	      if (oldRow) {
+	        oldRow.classList.remove('current-row');
+	      } else if (rows) {
+	        [].forEach.call(rows, function (row) {
+	          return row.classList.remove('current-row');
+	        });
+	      }
+	      if (newRow) {
+	        newRow.classList.add('current-row');
+	      }
+	    }
+	  },
+
+	  computed: {
+	    table: function table() {
+	      return this.$parent;
+	    },
+	    data: function data() {
+	      return this.store.states.data;
+	    },
+	    columnsCount: function columnsCount() {
+	      return this.store.states.columns.length;
+	    },
+	    leftFixedCount: function leftFixedCount() {
+	      return this.store.states.fixedColumns.length;
+	    },
+	    rightFixedCount: function rightFixedCount() {
+	      return this.store.states.rightFixedColumns.length;
+	    },
+	    columns: function columns() {
+	      return this.store.states.columns;
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      tooltipContent: ''
+	    };
+	  },
+	  created: function created() {
+	    this.activateTooltip = (0, _debounce2.default)(50, function (tooltip) {
+	      return tooltip.handleShowPopper();
+	    });
+	  },
+
+
+	  methods: {
+	    getKeyOfRow: function getKeyOfRow(row, index) {
+	      var rowKey = this.table.rowKey;
+	      if (rowKey) {
+	        return (0, _util.getRowIdentity)(row, rowKey);
+	      }
+	      return index;
+	    },
+	    isColumnHidden: function isColumnHidden(index) {
+	      if (this.fixed === true || this.fixed === 'left') {
+	        return index >= this.leftFixedCount;
+	      } else if (this.fixed === 'right') {
+	        return index < this.columnsCount - this.rightFixedCount;
+	      } else {
+	        return index < this.leftFixedCount || index >= this.columnsCount - this.rightFixedCount;
+	      }
+	    },
+	    getRowStyle: function getRowStyle(row, index) {
+	      var rowStyle = this.rowStyle;
+	      if (typeof rowStyle === 'function') {
+	        return rowStyle.call(null, row, index);
+	      }
+	      return rowStyle;
+	    },
+	    getRowClass: function getRowClass(row, index) {
+	      var classes = [];
+
+	      var rowClassName = this.rowClassName;
+	      if (typeof rowClassName === 'string') {
+	        classes.push(rowClassName);
+	      } else if (typeof rowClassName === 'function') {
+	        classes.push(rowClassName.call(null, row, index) || '');
+	      }
+
+	      return classes.join(' ');
+	    },
+	    handleCellMouseEnter: function handleCellMouseEnter(event, row) {
+	      var table = this.table;
+	      var cell = (0, _util.getCell)(event);
+
+	      if (cell) {
+	        var column = (0, _util.getColumnByCell)(table, cell);
+	        var hoverState = table.hoverState = { cell: cell, column: column, row: row };
+	        table.$emit('cell-mouse-enter', hoverState.row, hoverState.column, hoverState.cell, event);
+	      }
+
+	      // 判断是否text-overflow, 如果是就显示tooltip
+	      var cellChild = event.target.querySelector('.cell');
+
+	      if ((0, _dom.hasClass)(cellChild, 'el-tooltip') && cellChild.scrollWidth > cellChild.offsetWidth) {
+	        var tooltip = this.$refs.tooltip;
+
+	        this.tooltipContent = cell.innerText;
+	        tooltip.referenceElm = cell;
+	        tooltip.$refs.popper.style.display = 'none';
+	        tooltip.doDestroy();
+	        this.activateTooltip(tooltip);
+	      }
+	    },
+	    handleCellMouseLeave: function handleCellMouseLeave(event) {
+	      this.$refs.tooltip.handleClosePopper();
+	      var cell = (0, _util.getCell)(event);
+	      if (!cell) return;
+
+	      var oldHoverState = this.table.hoverState;
+	      this.table.$emit('cell-mouse-leave', oldHoverState.row, oldHoverState.column, oldHoverState.cell, event);
+	    },
+	    handleMouseEnter: function handleMouseEnter(index) {
+	      this.store.commit('setHoverRow', index);
+	    },
+	    handleMouseLeave: function handleMouseLeave() {
+	      this.store.commit('setHoverRow', null);
+	    },
+	    handleContextMenu: function handleContextMenu(event, row) {
+	      this.handleEvent(event, row, 'contextmenu');
+	    },
+	    handleDoubleClick: function handleDoubleClick(event, row) {
+	      this.handleEvent(event, row, 'dblclick');
+	    },
+	    handleClick: function handleClick(event, row) {
+	      this.store.commit('setCurrentRow', row);
+	      this.handleEvent(event, row, 'click');
+	    },
+	    handleEvent: function handleEvent(event, row, name) {
+	      var table = this.table;
+	      var cell = (0, _util.getCell)(event);
+	      var column = void 0;
+	      if (cell) {
+	        column = (0, _util.getColumnByCell)(table, cell);
+	        if (column) {
+	          table.$emit('cell-' + name, row, column, cell, event);
+	        }
+	      }
+	      table.$emit('row-' + name, row, event, column);
+	    },
+	    handleExpandClick: function handleExpandClick(row) {
+	      this.store.commit('toggleRowExpanded', row);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 309:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _checkbox = __webpack_require__(304);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	var _tag = __webpack_require__(266);
+
+	var _tag2 = _interopRequireDefault(_tag);
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	var _filterPanel = __webpack_require__(310);
+
+	var _filterPanel2 = _interopRequireDefault(_filterPanel);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var getAllColumns = function getAllColumns(columns) {
+	  var result = [];
+	  columns.forEach(function (column) {
+	    if (column.children) {
+	      result.push(column);
+	      result.push.apply(result, getAllColumns(column.children));
+	    } else {
+	      result.push(column);
+	    }
+	  });
+	  return result;
+	};
+
+	var convertToRows = function convertToRows(originColumns) {
+	  var maxLevel = 1;
+	  var traverse = function traverse(column, parent) {
+	    if (parent) {
+	      column.level = parent.level + 1;
+	      if (maxLevel < column.level) {
+	        maxLevel = column.level;
+	      }
+	    }
+	    if (column.children) {
+	      var colSpan = 0;
+	      column.children.forEach(function (subColumn) {
+	        traverse(subColumn, column);
+	        colSpan += subColumn.colSpan;
+	      });
+	      column.colSpan = colSpan;
+	    } else {
+	      column.colSpan = 1;
+	    }
+	  };
+
+	  originColumns.forEach(function (column) {
+	    column.level = 1;
+	    traverse(column);
+	  });
+
+	  var rows = [];
+	  for (var i = 0; i < maxLevel; i++) {
+	    rows.push([]);
+	  }
+
+	  var allColumns = getAllColumns(originColumns);
+
+	  allColumns.forEach(function (column) {
+	    if (!column.children) {
+	      column.rowSpan = maxLevel - column.level + 1;
+	    } else {
+	      column.rowSpan = 1;
+	    }
+	    rows[column.level - 1].push(column);
+	  });
+
+	  return rows;
+	};
+
+	exports.default = {
+	  name: 'ElTableHeader',
+
+	  render: function render(h) {
+	    var _this = this;
+
+	    var originColumns = this.store.states.originColumns;
+	    var columnRows = convertToRows(originColumns, this.columns);
+
+	    return h(
+	      'table',
+	      {
+	        'class': 'el-table__header',
+	        attrs: { cellspacing: '0',
+	          cellpadding: '0',
+	          border: '0' }
+	      },
+	      [h(
+	        'colgroup',
+	        null,
+	        [this._l(this.columns, function (column) {
+	          return h(
+	            'col',
+	            {
+	              attrs: {
+	                name: column.id,
+	                width: column.realWidth || column.width
+	              }
+	            },
+	            []
+	          );
+	        }), !this.fixed && this.layout.gutterWidth ? h(
+	          'col',
+	          {
+	            attrs: { name: 'gutter', width: this.layout.scrollY ? this.layout.gutterWidth : '' }
+	          },
+	          []
+	        ) : '']
+	      ), h(
+	        'thead',
+	        null,
+	        [this._l(columnRows, function (columns, rowIndex) {
+	          return h(
+	            'tr',
+	            null,
+	            [_this._l(columns, function (column, cellIndex) {
+	              return h(
+	                'th',
+	                {
+	                  attrs: {
+	                    colspan: column.colSpan,
+	                    rowspan: column.rowSpan
+	                  },
+	                  on: {
+	                    'mousemove': function mousemove($event) {
+	                      return _this.handleMouseMove($event, column);
+	                    },
+	                    'mouseout': _this.handleMouseOut,
+	                    'mousedown': function mousedown($event) {
+	                      return _this.handleMouseDown($event, column);
+	                    },
+	                    'click': function click($event) {
+	                      return _this.handleHeaderClick($event, column);
+	                    }
+	                  },
+
+	                  'class': [column.id, column.order, column.headerAlign, column.className || '', rowIndex === 0 && _this.isCellHidden(cellIndex, columns) ? 'is-hidden' : '', !column.children ? 'is-leaf' : '', column.labelClassName] },
+	                [h(
+	                  'div',
+	                  { 'class': ['cell', column.filteredValue && column.filteredValue.length > 0 ? 'highlight' : '', column.labelClassName] },
+	                  [column.renderHeader ? column.renderHeader.call(_this._renderProxy, h, { column: column, $index: cellIndex, store: _this.store, _self: _this.$parent.$vnode.context }) : column.label, column.sortable ? h(
+	                    'span',
+	                    { 'class': 'caret-wrapper', on: {
+	                        'click': function click($event) {
+	                          return _this.handleSortClick($event, column);
+	                        }
+	                      }
+	                    },
+	                    [h(
+	                      'i',
+	                      { 'class': 'sort-caret ascending', on: {
+	                          'click': function click($event) {
+	                            return _this.handleSortClick($event, column, 'ascending');
+	                          }
+	                        }
+	                      },
+	                      []
+	                    ), h(
+	                      'i',
+	                      { 'class': 'sort-caret descending', on: {
+	                          'click': function click($event) {
+	                            return _this.handleSortClick($event, column, 'descending');
+	                          }
+	                        }
+	                      },
+	                      []
+	                    )]
+	                  ) : '', column.filterable ? h(
+	                    'span',
+	                    { 'class': 'el-table__column-filter-trigger', on: {
+	                        'click': function click($event) {
+	                          return _this.handleFilterClick($event, column);
+	                        }
+	                      }
+	                    },
+	                    [h(
+	                      'i',
+	                      { 'class': ['el-icon-arrow-down', column.filterOpened ? 'el-icon-arrow-up' : ''] },
+	                      []
+	                    )]
+	                  ) : '']
+	                )]
+	              );
+	            }), !_this.fixed && _this.layout.gutterWidth ? h(
+	              'th',
+	              { 'class': 'gutter', style: { width: _this.layout.scrollY ? _this.layout.gutterWidth + 'px' : '0' } },
+	              []
+	            ) : '']
+	          );
+	        })]
+	      )]
+	    );
+	  },
+
+
+	  props: {
+	    fixed: String,
+	    store: {
+	      required: true
+	    },
+	    layout: {
+	      required: true
+	    },
+	    border: Boolean,
+	    defaultSort: {
+	      type: Object,
+	      default: function _default() {
+	        return {
+	          prop: '',
+	          order: ''
+	        };
+	      }
+	    }
+	  },
+
+	  components: {
+	    ElCheckbox: _checkbox2.default,
+	    ElTag: _tag2.default
+	  },
+
+	  computed: {
+	    isAllSelected: function isAllSelected() {
+	      return this.store.states.isAllSelected;
+	    },
+	    columnsCount: function columnsCount() {
+	      return this.store.states.columns.length;
+	    },
+	    leftFixedCount: function leftFixedCount() {
+	      return this.store.states.fixedColumns.length;
+	    },
+	    rightFixedCount: function rightFixedCount() {
+	      return this.store.states.rightFixedColumns.length;
+	    },
+	    columns: function columns() {
+	      return this.store.states.columns;
+	    }
+	  },
+
+	  created: function created() {
+	    this.filterPanels = {};
+	  },
+	  mounted: function mounted() {
+	    var _this2 = this;
+
+	    if (this.defaultSort.prop) {
+	      (function () {
+	        var states = _this2.store.states;
+	        states.sortProp = _this2.defaultSort.prop;
+	        states.sortOrder = _this2.defaultSort.order || 'ascending';
+	        _this2.$nextTick(function (_) {
+	          for (var i = 0, length = _this2.columns.length; i < length; i++) {
+	            var column = _this2.columns[i];
+	            if (column.property === states.sortProp) {
+	              column.order = states.sortOrder;
+	              states.sortingColumn = column;
+	              break;
+	            }
+	          }
+
+	          if (states.sortingColumn) {
+	            _this2.store.commit('changeSortCondition');
+	          }
+	        });
+	      })();
+	    }
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    var panels = this.filterPanels;
+	    for (var prop in panels) {
+	      if (panels.hasOwnProperty(prop) && panels[prop]) {
+	        panels[prop].$destroy(true);
+	      }
+	    }
+	  },
+
+
+	  methods: {
+	    isCellHidden: function isCellHidden(index, columns) {
+	      if (this.fixed === true || this.fixed === 'left') {
+	        return index >= this.leftFixedCount;
+	      } else if (this.fixed === 'right') {
+	        var before = 0;
+	        for (var i = 0; i < index; i++) {
+	          before += columns[i].colSpan;
+	        }
+	        return before < this.columnsCount - this.rightFixedCount;
+	      } else {
+	        return index < this.leftFixedCount || index >= this.columnsCount - this.rightFixedCount;
+	      }
+	    },
+	    toggleAllSelection: function toggleAllSelection() {
+	      this.store.commit('toggleAllSelection');
+	    },
+	    handleFilterClick: function handleFilterClick(event, column) {
+	      event.stopPropagation();
+	      var target = event.target;
+	      var cell = target.parentNode;
+	      var table = this.$parent;
+
+	      var filterPanel = this.filterPanels[column.id];
+
+	      if (filterPanel && column.filterOpened) {
+	        filterPanel.showPopper = false;
+	        return;
+	      }
+
+	      if (!filterPanel) {
+	        filterPanel = new _vue2.default(_filterPanel2.default);
+	        this.filterPanels[column.id] = filterPanel;
+
+	        filterPanel.table = table;
+	        filterPanel.cell = cell;
+	        filterPanel.column = column;
+	        !this.$isServer && filterPanel.$mount(document.createElement('div'));
+	      }
+
+	      setTimeout(function () {
+	        filterPanel.showPopper = true;
+	      }, 16);
+	    },
+	    handleHeaderClick: function handleHeaderClick(event, column) {
+	      if (!column.filters && column.sortable) {
+	        this.handleSortClick(event, column);
+	      } else if (column.filters && !column.sortable) {
+	        this.handleFilterClick(event, column);
+	      }
+
+	      this.$parent.$emit('header-click', column, event);
+	    },
+	    handleMouseDown: function handleMouseDown(event, column) {
+	      var _this3 = this;
+
+	      if (this.$isServer) return;
+	      if (column.children && column.children.length > 0) return;
+	      /* istanbul ignore if */
+	      if (this.draggingColumn && this.border) {
+	        (function () {
+	          _this3.dragging = true;
+
+	          _this3.$parent.resizeProxyVisible = true;
+
+	          var table = _this3.$parent;
+	          var tableEl = table.$el;
+	          var tableLeft = tableEl.getBoundingClientRect().left;
+	          var columnEl = _this3.$el.querySelector('th.' + column.id);
+	          var columnRect = columnEl.getBoundingClientRect();
+	          var minLeft = columnRect.left - tableLeft + 30;
+
+	          columnEl.classList.add('noclick');
+
+	          _this3.dragState = {
+	            startMouseLeft: event.clientX,
+	            startLeft: columnRect.right - tableLeft,
+	            startColumnLeft: columnRect.left - tableLeft,
+	            tableLeft: tableLeft
+	          };
+
+	          var resizeProxy = table.$refs.resizeProxy;
+	          resizeProxy.style.left = _this3.dragState.startLeft + 'px';
+
+	          document.onselectstart = function () {
+	            return false;
+	          };
+	          document.ondragstart = function () {
+	            return false;
+	          };
+
+	          var handleMouseMove = function handleMouseMove(event) {
+	            var deltaLeft = event.clientX - _this3.dragState.startMouseLeft;
+	            var proxyLeft = _this3.dragState.startLeft + deltaLeft;
+
+	            resizeProxy.style.left = Math.max(minLeft, proxyLeft) + 'px';
+	          };
+
+	          var handleMouseUp = function handleMouseUp() {
+	            if (_this3.dragging) {
+	              var _dragState = _this3.dragState,
+	                  startColumnLeft = _dragState.startColumnLeft,
+	                  startLeft = _dragState.startLeft;
+
+	              var finalLeft = parseInt(resizeProxy.style.left, 10);
+	              var columnWidth = finalLeft - startColumnLeft;
+	              column.width = column.realWidth = columnWidth;
+	              table.$emit('header-dragend', column.width, startLeft - startColumnLeft, column, event);
+
+	              _this3.store.scheduleLayout();
+
+	              document.body.style.cursor = '';
+	              _this3.dragging = false;
+	              _this3.draggingColumn = null;
+	              _this3.dragState = {};
+
+	              table.resizeProxyVisible = false;
+	            }
+
+	            document.removeEventListener('mousemove', handleMouseMove);
+	            document.removeEventListener('mouseup', handleMouseUp);
+	            document.onselectstart = null;
+	            document.ondragstart = null;
+
+	            setTimeout(function () {
+	              columnEl.classList.remove('noclick');
+	            }, 0);
+	          };
+
+	          document.addEventListener('mousemove', handleMouseMove);
+	          document.addEventListener('mouseup', handleMouseUp);
+	        })();
+	      }
+	    },
+	    handleMouseMove: function handleMouseMove(event, column) {
+	      if (column.children && column.children.length > 0) return;
+	      var target = event.target;
+	      while (target && target.tagName !== 'TH') {
+	        target = target.parentNode;
+	      }
+
+	      if (!column || !column.resizable) return;
+
+	      if (!this.dragging && this.border) {
+	        var rect = target.getBoundingClientRect();
+
+	        var bodyStyle = document.body.style;
+	        if (rect.width > 12 && rect.right - event.pageX < 8) {
+	          bodyStyle.cursor = 'col-resize';
+	          this.draggingColumn = column;
+	        } else if (!this.dragging) {
+	          bodyStyle.cursor = '';
+	          this.draggingColumn = null;
+	        }
+	      }
+	    },
+	    handleMouseOut: function handleMouseOut() {
+	      if (this.$isServer) return;
+	      document.body.style.cursor = '';
+	    },
+	    toggleOrder: function toggleOrder(order) {
+	      return !order ? 'ascending' : order === 'ascending' ? 'descending' : null;
+	    },
+	    handleSortClick: function handleSortClick(event, column, givenOrder) {
+	      event.stopPropagation();
+	      var order = givenOrder || this.toggleOrder(column.order);
+
+	      var target = event.target;
+	      while (target && target.tagName !== 'TH') {
+	        target = target.parentNode;
+	      }
+
+	      if (target && target.tagName === 'TH') {
+	        if (target.classList.contains('noclick')) {
+	          target.classList.remove('noclick');
+	          return;
+	        }
+	      }
+
+	      if (!column.sortable) return;
+
+	      var states = this.store.states;
+	      var sortProp = states.sortProp;
+	      var sortOrder = void 0;
+	      var sortingColumn = states.sortingColumn;
+
+	      if (sortingColumn !== column) {
+	        if (sortingColumn) {
+	          sortingColumn.order = null;
+	        }
+	        states.sortingColumn = column;
+	        sortProp = column.property;
+	      }
+
+	      if (!order) {
+	        sortOrder = column.order = null;
+	        states.sortingColumn = null;
+	        sortProp = null;
+	      } else {
+	        sortOrder = column.order = order;
+	      }
+
+	      states.sortProp = sortProp;
+	      states.sortOrder = sortOrder;
+
+	      this.store.commit('changeSortCondition');
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      draggingColumn: null,
+	      dragging: false,
+	      dragState: {}
+	    };
+	  }
+	};
+
+/***/ },
+
+/***/ 310:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(311),
+	  /* template */
+	  __webpack_require__(314),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 311:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vuePopper = __webpack_require__(13);
+
+	var _vuePopper2 = _interopRequireDefault(_vuePopper);
+
+	var _popup = __webpack_require__(132);
+
+	var _locale = __webpack_require__(60);
+
+	var _locale2 = _interopRequireDefault(_locale);
+
+	var _clickoutside = __webpack_require__(10);
+
+	var _clickoutside2 = _interopRequireDefault(_clickoutside);
+
+	var _dropdown = __webpack_require__(312);
+
+	var _dropdown2 = _interopRequireDefault(_dropdown);
+
+	var _checkbox = __webpack_require__(304);
+
+	var _checkbox2 = _interopRequireDefault(_checkbox);
+
+	var _checkboxGroup = __webpack_require__(313);
+
+	var _checkboxGroup2 = _interopRequireDefault(_checkboxGroup);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElTableFilterPanel',
+
+	  mixins: [_vuePopper2.default, _locale2.default],
+
+	  directives: {
+	    Clickoutside: _clickoutside2.default
+	  },
+
+	  components: {
+	    ElCheckbox: _checkbox2.default,
+	    ElCheckboxGroup: _checkboxGroup2.default
+	  },
+
+	  props: {
+	    placement: {
+	      type: String,
+	      default: 'bottom-end'
+	    }
+	  },
+
+	  customRender: function customRender(h) {
+	    return h(
+	      'div',
+	      { 'class': 'el-table-filter' },
+	      [h(
+	        'div',
+	        { 'class': 'el-table-filter__content' },
+	        []
+	      ), h(
+	        'div',
+	        { 'class': 'el-table-filter__bottom' },
+	        [h(
+	          'button',
+	          {
+	            on: {
+	              'click': this.handleConfirm
+	            }
+	          },
+	          [this.t('el.table.confirmFilter')]
+	        ), h(
+	          'button',
+	          {
+	            on: {
+	              'click': this.handleReset
+	            }
+	          },
+	          [this.t('el.table.resetFilter')]
+	        )]
+	      )]
+	    );
+	  },
+
+
+	  methods: {
+	    isActive: function isActive(filter) {
+	      return filter.value === this.filterValue;
+	    },
+	    handleOutsideClick: function handleOutsideClick() {
+	      this.showPopper = false;
+	    },
+	    handleConfirm: function handleConfirm() {
+	      this.confirmFilter(this.filteredValue);
+	      this.handleOutsideClick();
+	    },
+	    handleReset: function handleReset() {
+	      this.filteredValue = [];
+	      this.confirmFilter(this.filteredValue);
+	      this.handleOutsideClick();
+	    },
+	    handleSelect: function handleSelect(filterValue) {
+	      this.filterValue = filterValue;
+
+	      if (typeof filterValue !== 'undefined' && filterValue !== null) {
+	        this.confirmFilter(this.filteredValue);
+	      } else {
+	        this.confirmFilter([]);
+	      }
+
+	      this.handleOutsideClick();
+	    },
+	    confirmFilter: function confirmFilter(filteredValue) {
+	      this.table.store.commit('filterChange', {
+	        column: this.column,
+	        values: filteredValue
+	      });
+	    }
+	  },
+
+	  data: function data() {
+	    return {
+	      table: null,
+	      cell: null,
+	      column: null
+	    };
+	  },
+
+
+	  computed: {
+	    filters: function filters() {
+	      return this.column && this.column.filters;
+	    },
+
+
+	    filterValue: {
+	      get: function get() {
+	        return (this.column.filteredValue || [])[0];
+	      },
+	      set: function set(value) {
+	        if (this.filteredValue) {
+	          if (typeof value !== 'undefined' && value !== null) {
+	            this.filteredValue.splice(0, 1, value);
+	          } else {
+	            this.filteredValue.splice(0, 1);
+	          }
+	        }
+	      }
+	    },
+
+	    filteredValue: {
+	      get: function get() {
+	        if (this.column) {
+	          return this.column.filteredValue || [];
+	        }
+	        return [];
+	      },
+	      set: function set(value) {
+	        if (this.column) {
+	          this.column.filteredValue = value;
+	        }
+	      }
+	    },
+
+	    multiple: function multiple() {
+	      if (this.column) {
+	        return this.column.filterMultiple;
+	      }
+	      return true;
+	    }
+	  },
+
+	  mounted: function mounted() {
+	    var _this = this;
+
+	    this.popperElm = this.$el;
+	    this.referenceElm = this.cell;
+	    this.table.bodyWrapper.addEventListener('scroll', function () {
+	      _this.updatePopper();
+	    });
+
+	    this.$watch('showPopper', function (value) {
+	      if (_this.column) _this.column.filterOpened = value;
+	      if (value) {
+	        _dropdown2.default.open(_this);
+	      } else {
+	        _dropdown2.default.close(_this);
+	      }
+	    });
+	  },
+
+	  watch: {
+	    showPopper: function showPopper(val) {
+	      if (val === true && parseInt(this.popperJS._popper.style.zIndex, 10) < _popup.PopupManager.zIndex) {
+	        this.popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();
+	      }
+	    }
+	  }
+	}; //
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+/***/ },
+
+/***/ 312:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _vue = __webpack_require__(56);
+
+	var _vue2 = _interopRequireDefault(_vue);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var dropdowns = [];
+
+	!_vue2.default.prototype.$isServer && document.addEventListener('click', function (event) {
+	  dropdowns.forEach(function (dropdown) {
+	    var target = event.target;
+	    if (!dropdown || !dropdown.$el) return;
+	    if (target === dropdown.$el || dropdown.$el.contains(target)) {
+	      return;
+	    }
+	    dropdown.handleOutsideClick && dropdown.handleOutsideClick(event);
+	  });
+	});
+
+	exports.default = {
+	  open: function open(instance) {
+	    if (instance) {
+	      dropdowns.push(instance);
+	    }
+	  },
+	  close: function close(instance) {
+	    var index = dropdowns.indexOf(instance);
+	    if (index !== -1) {
+	      dropdowns.splice(instance, 1);
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 313:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/checkbox-group");
+
+/***/ },
+
+/***/ 314:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('transition', {
+	    attrs: {
+	      "name": "el-zoom-in-top"
+	    }
+	  }, [(_vm.multiple) ? _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showPopper),
+	      expression: "showPopper"
+	    }],
+	    staticClass: "el-table-filter"
+	  }, [_c('div', {
+	    staticClass: "el-table-filter__content"
+	  }, [_c('el-checkbox-group', {
+	    directives: [{
+	      name: "model",
+	      rawName: "v-model",
+	      value: (_vm.filteredValue),
+	      expression: "filteredValue"
+	    }],
+	    staticClass: "el-table-filter__checkbox-group",
+	    domProps: {
+	      "value": (_vm.filteredValue)
+	    },
+	    on: {
+	      "input": function($event) {
+	        _vm.filteredValue = $event
+	      }
+	    }
+	  }, _vm._l((_vm.filters), function(filter) {
+	    return _c('el-checkbox', {
+	      attrs: {
+	        "label": filter.value
+	      }
+	    }, [_vm._v(_vm._s(filter.text))])
+	  }))], 1), _c('div', {
+	    staticClass: "el-table-filter__bottom"
+	  }, [_c('button', {
+	    class: {
+	      'is-disabled': _vm.filteredValue.length === 0
+	    },
+	    attrs: {
+	      "disabled": _vm.filteredValue.length === 0
+	    },
+	    on: {
+	      "click": _vm.handleConfirm
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.table.confirmFilter')))]), _c('button', {
+	    on: {
+	      "click": _vm.handleReset
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.table.resetFilter')))])])]) : _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.showPopper),
+	      expression: "showPopper"
+	    }],
+	    staticClass: "el-table-filter"
+	  }, [_c('ul', {
+	    staticClass: "el-table-filter__list"
+	  }, [_c('li', {
+	    staticClass: "el-table-filter__list-item",
+	    class: {
+	      'is-active': !_vm.filterValue
+	    },
+	    on: {
+	      "click": function($event) {
+	        _vm.handleSelect(null)
+	      }
+	    }
+	  }, [_vm._v(_vm._s(_vm.t('el.table.clearFilter')))]), _vm._l((_vm.filters), function(filter) {
+	    return _c('li', {
+	      staticClass: "el-table-filter__list-item",
+	      class: {
+	        'is-active': _vm.isActive(filter)
+	      },
+	      attrs: {
+	        "label": filter.value
+	      },
+	      on: {
+	        "click": function($event) {
+	          _vm.handleSelect(filter.value)
+	        }
+	      }
+	    }, [_vm._v(_vm._s(filter.text))])
+	  })], 2)])])
+	},staticRenderFns: []}
+
+/***/ },
+
+/***/ 315:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-table",
+	    class: {
+	      'el-table--fit': _vm.fit,
+	      'el-table--striped': _vm.stripe,
+	      'el-table--border': _vm.border,
+	      'el-table--fluid-height': _vm.maxHeight,
+	      'el-table--enable-row-hover': !_vm.store.states.isComplex,
+	        'el-table--enable-row-transition': true || (_vm.store.states.data || []).length !== 0 && (_vm.store.states.data || []).length < 100
+	    },
+	    on: {
+	      "mouseleave": function($event) {
+	        _vm.handleMouseLeave($event)
+	      }
+	    }
+	  }, [_c('div', {
+	    ref: "hiddenColumns",
+	    staticClass: "hidden-columns"
+	  }, [_vm._t("default")], 2), (_vm.showHeader) ? _c('div', {
+	    ref: "headerWrapper",
+	    staticClass: "el-table__header-wrapper"
+	  }, [_c('table-header', {
+	    style: ({
+	      width: _vm.layout.bodyWidth ? _vm.layout.bodyWidth + 'px' : ''
+	    }),
+	    attrs: {
+	      "store": _vm.store,
+	      "layout": _vm.layout,
+	      "border": _vm.border,
+	      "default-sort": _vm.defaultSort
+	    }
+	  })], 1) : _vm._e(), _c('div', {
+	    ref: "bodyWrapper",
+	    staticClass: "el-table__body-wrapper",
+	    style: ([_vm.bodyHeight])
+	  }, [_c('table-body', {
+	    style: ({
+	      width: _vm.bodyWidth
+	    }),
+	    attrs: {
+	      "context": _vm.context,
+	      "store": _vm.store,
+	      "layout": _vm.layout,
+	      "row-class-name": _vm.rowClassName,
+	      "row-style": _vm.rowStyle,
+	      "highlight": _vm.highlightCurrentRow
+	    }
+	  }), (!_vm.data || _vm.data.length === 0) ? _c('div', {
+	    staticClass: "el-table__empty-block",
+	    style: ({
+	      width: _vm.bodyWidth
+	    })
+	  }, [_c('span', {
+	    staticClass: "el-table__empty-text"
+	  }, [_vm._t("empty", [_vm._v(_vm._s(_vm.emptyText || _vm.t('el.table.emptyText')))])], 2)]) : _vm._e()], 1), (_vm.fixedColumns.length > 0) ? _c('div', {
+	    ref: "fixedWrapper",
+	    staticClass: "el-table__fixed",
+	    style: ([{
+	        width: _vm.layout.fixedWidth ? _vm.layout.fixedWidth + 'px' : ''
+	      },
+	      _vm.fixedHeight
+	    ])
+	  }, [(_vm.showHeader) ? _c('div', {
+	    ref: "fixedHeaderWrapper",
+	    staticClass: "el-table__fixed-header-wrapper"
+	  }, [_c('table-header', {
+	    style: ({
+	      width: _vm.layout.fixedWidth ? _vm.layout.fixedWidth + 'px' : ''
+	    }),
+	    attrs: {
+	      "fixed": "left",
+	      "border": _vm.border,
+	      "store": _vm.store,
+	      "layout": _vm.layout
+	    }
+	  })], 1) : _vm._e(), _c('div', {
+	    ref: "fixedBodyWrapper",
+	    staticClass: "el-table__fixed-body-wrapper",
+	    style: ([{
+	        top: _vm.layout.headerHeight + 'px'
+	      },
+	      _vm.fixedBodyHeight
+	    ])
+	  }, [_c('table-body', {
+	    style: ({
+	      width: _vm.layout.fixedWidth ? _vm.layout.fixedWidth + 'px' : ''
+	    }),
+	    attrs: {
+	      "fixed": "left",
+	      "store": _vm.store,
+	      "layout": _vm.layout,
+	      "highlight": _vm.highlightCurrentRow,
+	      "row-class-name": _vm.rowClassName,
+	      "row-style": _vm.rowStyle
+	    }
+	  })], 1)]) : _vm._e(), (_vm.rightFixedColumns.length > 0) ? _c('div', {
+	    ref: "rightFixedWrapper",
+	    staticClass: "el-table__fixed-right",
+	    style: ([{
+	        width: _vm.layout.rightFixedWidth ? _vm.layout.rightFixedWidth + 'px' : ''
+	      }, {
+	        right: _vm.layout.scrollY ? (_vm.border ? _vm.layout.gutterWidth : (_vm.layout.gutterWidth || 1)) + 'px' : ''
+	      },
+	      _vm.fixedHeight
+	    ])
+	  }, [(_vm.showHeader) ? _c('div', {
+	    ref: "rightFixedHeaderWrapper",
+	    staticClass: "el-table__fixed-header-wrapper"
+	  }, [_c('table-header', {
+	    style: ({
+	      width: _vm.layout.rightFixedWidth ? _vm.layout.rightFixedWidth + 'px' : ''
+	    }),
+	    attrs: {
+	      "fixed": "right",
+	      "border": _vm.border,
+	      "store": _vm.store,
+	      "layout": _vm.layout
+	    }
+	  })], 1) : _vm._e(), _c('div', {
+	    ref: "rightFixedBodyWrapper",
+	    staticClass: "el-table__fixed-body-wrapper",
+	    style: ([{
+	        top: _vm.layout.headerHeight + 'px'
+	      },
+	      _vm.fixedBodyHeight
+	    ])
+	  }, [_c('table-body', {
+	    style: ({
+	      width: _vm.layout.rightFixedWidth ? _vm.layout.rightFixedWidth + 'px' : ''
+	    }),
+	    attrs: {
+	      "fixed": "right",
+	      "store": _vm.store,
+	      "layout": _vm.layout,
+	      "row-class-name": _vm.rowClassName,
+	      "row-style": _vm.rowStyle,
+	      "highlight": _vm.highlightCurrentRow
+	    }
+	  })], 1)]) : _vm._e(), (_vm.rightFixedColumns.length > 0) ? _c('div', {
+	    staticClass: "el-table__fixed-right-patch",
+	    style: ({
+	      width: _vm.layout.scrollY ? _vm.layout.gutterWidth + 'px' : '0',
+	      height: _vm.layout.headerHeight + 'px'
+	    })
+	  }) : _vm._e(), _c('div', {
+	    directives: [{
+	      name: "show",
+	      rawName: "v-show",
+	      value: (_vm.resizeProxyVisible),
+	      expression: "resizeProxyVisible"
+	    }],
+	    ref: "resizeProxy",
+	    staticClass: "el-table__column-resize-proxy"
+	  })])
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

+ 648 - 0
static/element-ui/lib/tabs.js

@@ -0,0 +1,648 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/dist/";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = __webpack_require__(318);
+
+
+/***/ },
+
+/***/ 3:
+/***/ function(module, exports) {
+
+	module.exports = function normalizeComponent (
+	  rawScriptExports,
+	  compiledTemplate,
+	  scopeId,
+	  cssModules
+	) {
+	  var esModule
+	  var scriptExports = rawScriptExports = rawScriptExports || {}
+
+	  // ES6 modules interop
+	  var type = typeof rawScriptExports.default
+	  if (type === 'object' || type === 'function') {
+	    esModule = rawScriptExports
+	    scriptExports = rawScriptExports.default
+	  }
+
+	  // Vue.extend constructor export interop
+	  var options = typeof scriptExports === 'function'
+	    ? scriptExports.options
+	    : scriptExports
+
+	  // render functions
+	  if (compiledTemplate) {
+	    options.render = compiledTemplate.render
+	    options.staticRenderFns = compiledTemplate.staticRenderFns
+	  }
+
+	  // scopedId
+	  if (scopeId) {
+	    options._scopeId = scopeId
+	  }
+
+	  // inject cssModules
+	  if (cssModules) {
+	    var computed = options.computed || (options.computed = {})
+	    Object.keys(cssModules).forEach(function (key) {
+	      var module = cssModules[key]
+	      computed[key] = function () { return module }
+	    })
+	  }
+
+	  return {
+	    esModule: esModule,
+	    exports: scriptExports,
+	    options: options
+	  }
+	}
+
+
+/***/ },
+
+/***/ 47:
+/***/ function(module, exports) {
+
+	module.exports = require("element-ui/lib/utils/resize-event");
+
+/***/ },
+
+/***/ 318:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tabs = __webpack_require__(319);
+
+	var _tabs2 = _interopRequireDefault(_tabs);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	/* istanbul ignore next */
+	_tabs2.default.install = function (Vue) {
+	  Vue.component(_tabs2.default.name, _tabs2.default);
+	};
+
+	exports.default = _tabs2.default;
+
+/***/ },
+
+/***/ 319:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(320),
+	  /* template */
+	  null,
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 320:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tabNav = __webpack_require__(321);
+
+	var _tabNav2 = _interopRequireDefault(_tabNav);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  name: 'ElTabs',
+
+	  components: {
+	    TabNav: _tabNav2.default
+	  },
+
+	  props: {
+	    type: String,
+	    activeName: String,
+	    closable: Boolean,
+	    addable: Boolean,
+	    value: {},
+	    editable: Boolean
+	  },
+
+	  data: function data() {
+	    return {
+	      currentName: this.value || this.activeName,
+	      panes: []
+	    };
+	  },
+
+
+	  watch: {
+	    activeName: function activeName(value) {
+	      this.setCurrentName(value);
+	    },
+	    value: function value(_value) {
+	      this.setCurrentName(_value);
+	    },
+	    currentName: function currentName(value) {
+	      var _this = this;
+
+	      if (this.$refs.nav) {
+	        this.$nextTick(function (_) {
+	          _this.$refs.nav.scrollToActiveTab();
+	        });
+	      }
+	    }
+	  },
+
+	  methods: {
+	    handleTabClick: function handleTabClick(tab, tabName, event) {
+	      if (tab.disabled) return;
+	      this.setCurrentName(tabName);
+	      this.$emit('tab-click', tab, event);
+	    },
+	    handleTabRemove: function handleTabRemove(pane, ev) {
+	      ev.stopPropagation();
+	      this.$emit('edit', pane.name, 'remove');
+	      this.$emit('tab-remove', pane.name);
+	    },
+	    handleTabAdd: function handleTabAdd() {
+	      this.$emit('edit', null, 'add');
+	      this.$emit('tab-add');
+	    },
+	    setCurrentName: function setCurrentName(value) {
+	      this.currentName = value;
+	      this.$emit('input', value);
+	    },
+	    addPanes: function addPanes(item) {
+	      var index = this.$slots.default.indexOf(item.$vnode);
+	      this.panes.splice(index, 0, item);
+	    },
+	    removePanes: function removePanes(item) {
+	      var panes = this.panes;
+	      var index = panes.indexOf(item);
+	      if (index > -1) {
+	        panes.splice(index, 1);
+	      }
+	    }
+	  },
+	  render: function render(h) {
+	    var type = this.type,
+	        handleTabClick = this.handleTabClick,
+	        handleTabRemove = this.handleTabRemove,
+	        handleTabAdd = this.handleTabAdd,
+	        currentName = this.currentName,
+	        panes = this.panes,
+	        editable = this.editable,
+	        addable = this.addable;
+
+
+	    var newButton = editable || addable ? h(
+	      'span',
+	      {
+	        'class': 'el-tabs__new-tab',
+	        on: {
+	          'click': handleTabAdd
+	        }
+	      },
+	      [h(
+	        'i',
+	        { 'class': 'el-icon-plus' },
+	        []
+	      )]
+	    ) : null;
+
+	    var navData = {
+	      props: {
+	        currentName: currentName,
+	        onTabClick: handleTabClick,
+	        onTabRemove: handleTabRemove,
+	        editable: editable,
+	        type: type,
+	        panes: panes
+	      },
+	      ref: 'nav'
+	    };
+
+	    return h(
+	      'div',
+	      { 'class': {
+	          'el-tabs': true,
+	          'el-tabs--card': type === 'card',
+	          'el-tabs--border-card': type === 'border-card'
+	        } },
+	      [h(
+	        'div',
+	        { 'class': 'el-tabs__header' },
+	        [newButton, h(
+	          'tab-nav',
+	          navData,
+	          []
+	        )]
+	      ), h(
+	        'div',
+	        { 'class': 'el-tabs__content' },
+	        [this.$slots.default]
+	      )]
+	    );
+	  },
+	  created: function created() {
+	    if (!this.currentName) {
+	      this.setCurrentName('0');
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 321:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(322),
+	  /* template */
+	  null,
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 322:
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+	exports.__esModule = true;
+
+	var _tabBar = __webpack_require__(323);
+
+	var _tabBar2 = _interopRequireDefault(_tabBar);
+
+	var _resizeEvent = __webpack_require__(47);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	function noop() {}
+
+	exports.default = {
+	  name: 'TabNav',
+
+	  components: {
+	    TabBar: _tabBar2.default
+	  },
+
+	  props: {
+	    panes: Array,
+	    currentName: String,
+	    editable: Boolean,
+	    onTabClick: {
+	      type: Function,
+	      default: noop
+	    },
+	    onTabRemove: {
+	      type: Function,
+	      default: noop
+	    },
+	    type: String
+	  },
+
+	  data: function data() {
+	    return {
+	      scrollable: false,
+	      navStyle: {
+	        transform: ''
+	      }
+	    };
+	  },
+
+
+	  methods: {
+	    scrollPrev: function scrollPrev() {
+	      var containerWidth = this.$refs.navScroll.offsetWidth;
+	      var currentOffset = this.getCurrentScrollOffset();
+
+	      if (!currentOffset) return;
+
+	      var newOffset = currentOffset > containerWidth ? currentOffset - containerWidth : 0;
+
+	      this.setOffset(newOffset);
+	    },
+	    scrollNext: function scrollNext() {
+	      var navWidth = this.$refs.nav.offsetWidth;
+	      var containerWidth = this.$refs.navScroll.offsetWidth;
+	      var currentOffset = this.getCurrentScrollOffset();
+
+	      if (navWidth - currentOffset <= containerWidth) return;
+
+	      var newOffset = navWidth - currentOffset > containerWidth * 2 ? currentOffset + containerWidth : navWidth - containerWidth;
+
+	      this.setOffset(newOffset);
+	    },
+	    scrollToActiveTab: function scrollToActiveTab() {
+	      if (!this.scrollable) return;
+	      var nav = this.$refs.nav;
+	      var activeTab = this.$el.querySelector('.is-active');
+	      var navScroll = this.$refs.navScroll;
+	      var activeTabBounding = activeTab.getBoundingClientRect();
+	      var navScrollBounding = navScroll.getBoundingClientRect();
+	      var navBounding = nav.getBoundingClientRect();
+	      var currentOffset = this.getCurrentScrollOffset();
+	      var newOffset = currentOffset;
+
+	      if (activeTabBounding.left < navScrollBounding.left) {
+	        newOffset = currentOffset - (navScrollBounding.left - activeTabBounding.left);
+	      }
+	      if (activeTabBounding.right > navScrollBounding.right) {
+	        newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right;
+	      }
+	      if (navBounding.right < navScrollBounding.right) {
+	        newOffset = nav.offsetWidth - navScrollBounding.width;
+	      }
+	      this.setOffset(Math.max(newOffset, 0));
+	    },
+	    getCurrentScrollOffset: function getCurrentScrollOffset() {
+	      var navStyle = this.navStyle;
+
+	      return navStyle.transform ? Number(navStyle.transform.match(/translateX\(-(\d+(\.\d+)*)px\)/)[1]) : 0;
+	    },
+	    setOffset: function setOffset(value) {
+	      this.navStyle.transform = 'translateX(-' + value + 'px)';
+	    },
+	    update: function update() {
+	      var navWidth = this.$refs.nav.offsetWidth;
+	      var containerWidth = this.$refs.navScroll.offsetWidth;
+	      var currentOffset = this.getCurrentScrollOffset();
+
+	      if (containerWidth < navWidth) {
+	        var _currentOffset = this.getCurrentScrollOffset();
+	        this.scrollable = this.scrollable || {};
+	        this.scrollable.prev = _currentOffset;
+	        this.scrollable.next = _currentOffset + containerWidth < navWidth;
+	        if (navWidth - _currentOffset < containerWidth) {
+	          this.setOffset(navWidth - containerWidth);
+	        }
+	      } else {
+	        this.scrollable = false;
+	        if (currentOffset > 0) {
+	          this.setOffset(0);
+	        }
+	      }
+	    }
+	  },
+
+	  updated: function updated() {
+	    this.update();
+	  },
+	  render: function render(h) {
+	    var type = this.type,
+	        panes = this.panes,
+	        editable = this.editable,
+	        onTabClick = this.onTabClick,
+	        onTabRemove = this.onTabRemove,
+	        navStyle = this.navStyle,
+	        scrollable = this.scrollable,
+	        scrollNext = this.scrollNext,
+	        scrollPrev = this.scrollPrev;
+
+
+	    var scrollBtn = scrollable ? [h(
+	      'span',
+	      { 'class': ['el-tabs__nav-prev', scrollable.prev ? '' : 'is-disabled'], on: {
+	          'click': scrollPrev
+	        }
+	      },
+	      [h(
+	        'i',
+	        { 'class': 'el-icon-arrow-left' },
+	        []
+	      )]
+	    ), h(
+	      'span',
+	      { 'class': ['el-tabs__nav-next', scrollable.next ? '' : 'is-disabled'], on: {
+	          'click': scrollNext
+	        }
+	      },
+	      [h(
+	        'i',
+	        { 'class': 'el-icon-arrow-right' },
+	        []
+	      )]
+	    )] : null;
+
+	    var tabs = this._l(panes, function (pane, index) {
+	      var tabName = pane.name || pane.index || index;
+	      var closable = pane.isClosable || editable;
+
+	      pane.index = '' + index;
+
+	      var btnClose = closable ? h(
+	        'span',
+	        { 'class': 'el-icon-close', on: {
+	            'click': function click(ev) {
+	              onTabRemove(pane, ev);
+	            }
+	          }
+	        },
+	        []
+	      ) : null;
+
+	      var tabLabelContent = pane.$slots.label || pane.label;
+	      return h(
+	        'div',
+	        {
+	          'class': {
+	            'el-tabs__item': true,
+	            'is-active': pane.active,
+	            'is-disabled': pane.disabled,
+	            'is-closable': closable
+	          },
+	          ref: 'tabs',
+	          refInFor: true,
+	          on: {
+	            'click': function click(ev) {
+	              onTabClick(pane, tabName, ev);
+	            }
+	          }
+	        },
+	        [tabLabelContent, btnClose]
+	      );
+	    });
+	    return h(
+	      'div',
+	      { 'class': ['el-tabs__nav-wrap', scrollable ? 'is-scrollable' : ''] },
+	      [scrollBtn, h(
+	        'div',
+	        { 'class': ['el-tabs__nav-scroll'], ref: 'navScroll' },
+	        [h(
+	          'div',
+	          { 'class': 'el-tabs__nav', ref: 'nav', style: navStyle },
+	          [!type ? h(
+	            'tab-bar',
+	            {
+	              attrs: { tabs: panes }
+	            },
+	            []
+	          ) : null, tabs]
+	        )]
+	      )]
+	    );
+	  },
+	  mounted: function mounted() {
+	    (0, _resizeEvent.addResizeListener)(this.$el, this.update);
+	  },
+	  beforeDestroy: function beforeDestroy() {
+	    if (this.$el && this.update) (0, _resizeEvent.removeResizeListener)(this.$el, this.update);
+	  }
+	};
+
+/***/ },
+
+/***/ 323:
+/***/ function(module, exports, __webpack_require__) {
+
+	var Component = __webpack_require__(3)(
+	  /* script */
+	  __webpack_require__(324),
+	  /* template */
+	  __webpack_require__(325),
+	  /* scopeId */
+	  null,
+	  /* cssModules */
+	  null
+	)
+
+	module.exports = Component.exports
+
+
+/***/ },
+
+/***/ 324:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	exports.__esModule = true;
+	//
+	//
+	//
+
+	exports.default = {
+	  name: 'TabBar',
+
+	  props: {
+	    tabs: Array
+	  },
+
+	  computed: {
+	    barStyle: {
+	      cache: false,
+	      get: function get() {
+	        var _this = this;
+
+	        if (!this.$parent.$refs.tabs) return {};
+	        var style = {};
+	        var offset = 0;
+	        var tabWidth = 0;
+
+	        this.tabs.every(function (tab, index) {
+	          var $el = _this.$parent.$refs.tabs[index];
+	          if (!$el) {
+	            return false;
+	          }
+
+	          if (!tab.active) {
+	            offset += $el.clientWidth;
+	            return true;
+	          } else {
+	            tabWidth = $el.clientWidth;
+	            return false;
+	          }
+	        });
+
+	        var transform = 'translateX(' + offset + 'px)';
+	        style.width = tabWidth + 'px';
+	        style.transform = transform;
+	        style.msTransform = transform;
+	        style.webkitTransform = transform;
+
+	        return style;
+	      }
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 325:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('div', {
+	    staticClass: "el-tabs__active-bar",
+	    style: (_vm.barStyle)
+	  })
+	},staticRenderFns: []}
+
+/***/ }
+
+/******/ });

部分文件因文件數量過多而無法顯示