Java体系知识之ElementUI

301 阅读2分钟

Java体系知识之ElementUI

 学习如何借助于ElementUI,帮助快速实现效果

1 技术简介

 (1)网站快速成型工具
 (2)Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库
 (3)使用步骤:
     A.引入文件:
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js">           </script>
         <!-- 引入样式 -->
         <link rel="stylesheet" 
         href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js">
         </script>
     B.根据需求->找对应模板->复制粘贴->修改

2 常用组件(重点)

2.1 Basic

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
             .el-row {
                 margin-bottom: 20px;
 ​
                 &:last-child {
               margin-bottom: 0;
                 }
             }
 ​
             .el-col {
                 border-radius: 4px;
             }
 ​
             .bg-purple-dark {
                 background: #99a9bf;
             }
 ​
             .bg-purple {
                 background: #d3dce6;
             }
 ​
             .bg-purple-light {
                 background: #e5e9f2;
             }
 ​
             .grid-content {
                 border-radius: 4px;
                 min-height: 36px;
             }
 ​
             .row-bg {
                 padding: 10px 0;
                 background-color: #f9fafc;
             }
         </style>
     </head>
     <body>
         <div id="root">
             <!-- Basic->Layout 布局 -->
             <el-row :gutter="30">
                 <el-col :span="6">
                     <div class="grid-content bg-purple">111</div>
                 </el-col>
                 <el-col :span="6">
                     <div class="grid-content bg-purple-light">222</div>
                 </el-col>
                 <el-col :span="6">
                     <div class="grid-content bg-purple">333</div>
                 </el-col>
                 <el-col :span="6">
                     <div class="grid-content bg-purple-light">444</div>
                 </el-col>
             </el-row>
             
             <!-- Basic->Button 按钮&Icon 图标 -->
             <el-row>
                 <!-- icon:图标 -->
                 <el-button type="success" 
                            icon="el-icon-star-on" 
                            circle disabled>
                     提交
                 </el-button>
             </el-row>
             
             <!-- Basic->Link 文字链接 -->
             <el-link type="success">成功链接</el-link>
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
 ​
 ​
             },
             methods: {
 ​
 ​
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.2 Form

2.2.1 basic

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
             /* .el-input {
                 width: 30%;
             } */
         </style>
     </head>
     <body>
         <div id="root">
             <!-- 
                 Form->Radio 单选框:
                     需要设置v-model绑定变量;
                     选中意味着变量的值为相应 Radio label属性的值;
                     label可以是String、Number或Boolean;
                     disabled设置禁用;
              -->
             <el-radio v-model="radio" label="1"></el-radio>
             <el-radio v-model="radio" label="2" disabled></el-radio>
             <br>
             <br>
 ​
             <!-- 
                 Form->Checkbox 多选框:
                     checkbox-group元素能把多个 checkbox 管理为一组;
                     需要在 Group 中使用v-model绑定Array类型的变量即可;
                     disabled设置禁用;
             -->
             <el-checkbox-group v-model="checkList">
                 <el-checkbox label="复选框 A"></el-checkbox>
                 <el-checkbox label="复选框 B"></el-checkbox>
                 <el-checkbox label="复选框 C"></el-checkbox>
                 <el-checkbox label="禁用" disabled></el-checkbox>
                 <el-checkbox label="选中且禁用" disabled></el-checkbox>
             </el-checkbox-group>
             <br>
 ​
             <!-- 
                 Form->Input 输入框:
                     disabled:禁用;
                     clearable:清空;
                     show-password:密码框;
                     prefix-icon:input 组件首部增加显示图标
                     suffix-icon:input 组件尾部增加显示图标
                     type:textarea设置文本域
             -->
             <!-- <el-input v-model="input" placeholder="请输入内容" show-password></el-input> -->
 ​
             <!-- <div class="demo-input-suffix">
                 属性方式:
                 <el-input placeholder="请选择日期" suffix-icon="el-icon-date" v-model="input1">
                 </el-input>
                 <el-input placeholder="请输入内容" prefix-icon="el-icon-search" v-model="input2">
                 </el-input>
             </div> -->
 ​
             <!-- 
                 Form->DateTimePicker 日期时间选择器:
                     value-format:可选,绑定值的格式。不指定则绑定值为 Date 对象,string类型
              -->
             <div class="block">
                 <span class="demonstration">默认</span>
                 <!-- value-format   可选,绑定值的格式。不指定则绑定值为 Date 对象  string -->
                 <el-date-picker v-model="value1" type="datetime" placeholder="选择日期时间"
                     value-format="yyyy-MM-dd HH:mm:ss">
                 </el-date-picker>
             </div>{{value1}}
             <br>
 ​
             <!-- 
                 Form->Transfer 穿梭框:
                     Transfer 的数据通过 data 属性传入;
                     数据需要是一个对象数组;
                     每个对象有以下属性:key 为数据的唯一性标识,label 为显示文本,disabled 表示该项数据是否禁止转移;
                     目标列表中的数据项会同步到绑定至 v-model 的变量,值为数据项的 key 所组成的数组;
                     titles:设置列表标题文案
                     button-texts:设置按钮文案
              -->
             <el-transfer v-model="value" :data="transferData" :titles="['未选列表', '已选列表']" :button-texts="['到左边', '到右边']"></el-transfer>
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
                 radio: '1',
                 checkList: ['选中且禁用', '复选框 A', '复选框 B'],
                 input: '',
                 input1: '',
                 input2: '',
                 value1: '',
                 transferData: [{
                         key: 1,
                         label: 'Java'
                     },
                     {
                         key: 2,
                         label: 'Web'
                     },
                     {
                         key: 3,
                         label: 'Python'
                     }, {
                         key: 4,
                         label: 'UI'
                     }],
                 value: [3, 4]
 ​
             },
             methods: {
 ​
 ​
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.2.2 综合案例-登录

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
             /* Card卡片 */
             .text {
                 font-size: 14px;
             }
 ​
             .item {
                 margin-bottom: 18px;
             }
 ​
             .clearfix:before,
             .clearfix:after {
                 display: table;
                 content: "";
             }
 ​
             .clearfix:after {
                 clear: both
             }
 ​
             .box-card {
                 width: 480px;
                 margin: 179px auto;
             }
         </style>
     </head>
     <body>
         <div id="root">
             <!-- Card卡片 -->
             <el-card class="box-card">
                 <div slot="header" class="clearfix">
                     <span>登录</span>
                 </div>
                 <!-- 
                     Form表单:
                         hide-required-asterisk  是否隐藏必填字段的标签旁边的红色星号
                 -->
                 <el-form ref="loginForm" :model="loginForm" label-width="80px" :rules="rules" hide-required-asterisk>
                     <el-form-item label="用户名" prop="userName">
                         <el-input v-model="loginForm.userName" prefix-icon="el-icon-user"></el-input>
                     </el-form-item>
                     <el-form-item label="密码" prop="userPwd">
                         <el-input v-model="loginForm.userPwd" show-password prefix-icon="el-icon-lock"></el-input>
                     </el-form-item>
                     <el-form-item>
                         <el-button type="primary" @click="submitForm('loginForm')">登录</el-button>
                         <el-button @click="resetForm('loginForm')">重置</el-button>
                     </el-form-item>
                 </el-form>
             </el-card>
 ​
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
                 loginForm: {
                     userName: '',
                     userPwd: '',
                 },
                 rules: {
                     userName: [{
                             required: true,
                             message: '请输入用户名',
                             trigger: 'blur'
                         },
                         {
                             min: 4,
                             max: 8,
                             message: '长度在 4 到 8 个字符',
                             trigger: 'blur'
                         }
                     ],
                     userPwd: [{
                             required: true,
                             message: '请输入密码',
                             trigger: 'blur'
                         },
                         {
                             min: 4,
                             max: 8,
                             message: '长度在 4 到 8 个字符',
                             trigger: 'blur'
                         }
                     ],
                 }
 ​
             },
             methods: {
                 submitForm(formName) {
                     this.$refs[formName].validate((valid) => {
                         console.log(valid);
                         if (valid) {
                             alert('submit!');
                         } else {
                             console.log('error submit!!');
                             return false;
                         }
                     });
                 },
                 resetForm(formName) {
                     this.$refs[formName].resetFields();
                 }
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.3 Data

2.3.1 Table表格

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
             .el-table .warning-row {
                 background: oldlace;
             }
 ​
             .el-table .success-row {
                 background: #f0f9eb;
             }
         </style>
     </head>
     <body>
         <div id="root">
             <!-- 
                 Table 表格:
                     el-table:表格
                     data:显示的数据,array类型
                     prop:对应对象中的键名即可填入数据
                     width:定义列宽
                     stripe:创建带斑马纹的表格。它接受一个Boolean,默认为false,设置为true即为启用
                     border:否带有纵向边框,boolean类型,默认是false
                     row-class-name:为Table 中的某一行添加 class,表明该行处于某种状态
                     height:固定表头
                     fixed:固定列,Boolean 值或者leftright,表示左边固定还是右边固定
              -->
             <el-table :data="tableData" style="width: 80%" :row-class-name="tableRowClassName">
                 <el-table-column prop="date" label="日期" width="180">
                 </el-table-column>
                 <el-table-column prop="name" label="姓名" width="180">
                 </el-table-column>
                 <el-table-column prop="address" label="地址" width="180">
                 </el-table-column>
                 <el-table-column prop="sex" label="性别" width="180">
                     <!-- <template slot-scope="scope">
                         <el-tag :type="scope.row.tag === '家' ? 'primary' : 'success'" disable-transitions>
                             {{scope.row.tag}}</el-tag>
                     </template> -->
 ​
                     <!-- slot-scope="scope" | v-slot="scope" -->
                     <template v-slot="scope">
                         <el-tag :type="scope.row.sex === 0 ? 'warning' : 'success'">
                             <span v-if="scope.row.sex==0"></span>
                             <span v-if="scope.row.sex==1"></span>
                         </el-tag>
                     </template>
                 </el-table-column>
                 <el-table-column label="操作">
                     <template slot-scope="scope">
                         <el-button size="small" type="warning" @click="handleEdit(scope.$index, scope.row)">修改
                         </el-button>
                         <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除
                         </el-button>
                     </template>
                 </el-table-column>
             </el-table>
 ​
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
                 /* 表格要呈现的数据 */
                 tableData: [{
                     date: '2016-05-02',
                     name: '王小虎',
                     address: '上海市普陀区金沙江路 1518 弄',
                     sex: 0
                 }, {
                     date: '2016-05-04',
                     name: '王小虎',
                     address: '上海市普陀区金沙江路 1517 弄',
                     sex: 1
                 }, {
                     date: '2016-05-01',
                     name: '王小虎',
                     address: '上海市普陀区金沙江路 1519 弄',
                     sex: 0
                 }, {
                     date: '2016-05-03',
                     name: '王小虎',
                     address: '上海市普陀区金沙江路 1516 弄',
                     sex: 1
                 }]
 ​
             },
             methods: {
                 /* 表格样式 */
                 tableRowClassName({
                     row,
                     rowIndex
                 }) {
                     if (rowIndex === 1) {
                         return 'warning-row';
                     } else if (rowIndex === 3) {
                         return 'success-row';
                     }
                     return '';
                 },
                 /* 修改当前行数据 */
                 handleEdit(index, row) {
                     console.log(index, row);
                 },
                 /* 删除当前行数据 */
                 handleDelete(index, row) {
                     console.log(index, row);
                 }
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.3.2 Pagination 分页

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
 ​
         </style>
     </head>
     <body>
         <div id="root">
             <!-- 
                 Pagination 分页:
                     size-change:每页显示条数pageSize改变时触发
                     current-change:当前页currentPage改变时触发
                     current-page:当前页数,number类型,默认值1
                     page-sizes:每页显示个数选择器的选项设置,number[]类型,比如[10, 20, 30, 40, 50, 100]
                     page-size:每页显示条目个数,number类型,默认10
                     total:总条目数,number类型
              -->
             <div class="block">
                 <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                     :current-page="currentPage4" :page-sizes="[10, 20, 30, 40]" :page-size="20"
                     layout="total, sizes, prev, pager, next, jumper" :total="40">
                 </el-pagination>
             </div>
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
                 currentPage4: 4
 ​
             },
             methods: {
                 /* 每页显示数据条数发生改变时 */
                 handleSizeChange(val) {
                     console.log(val);
                     // console.log(`每页 ${val} 条`);
                     // 使用Axios向服务器端发请求
                     
                 },
                 /* 当前页发生改变时 */
                 handleCurrentChange(val) {
                     console.log(val);
                     // console.log(`当前页: ${val}`);
                     // 使用Axios向服务器端发请求
                     
                 }
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.3.3 Tree 树形控件

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title></title>
         <!-- 开发环境版本,包含了有帮助的命令行警告 -->
         <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
         <!-- 引入样式 -->
         <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
         <!-- 引入组件库 -->
         <script src="https://unpkg.com/element-ui/lib/index.js"></script>
         <style>
 ​
         </style>
     </head>
     <body>
         <!-- 
             分别通过default-expanded-keys和default-checked-keys设置默认展开和默认选中的节点。
             需要注意的是,此时必须设置node-key,其值为节点数据中的一个字段名,该字段在整棵树中是唯一的
          -->
         <div id="root">
             <el-tree :data="treeData" show-checkbox node-key="code" :default-expanded-keys="expandedKeys"
                 :default-checked-keys="checkedKeys" :props="defaultProps">
             </el-tree>
 ​
         </div>
     </body>
     <script>
         new Vue({
             el: "#root",
             data: {
                 /* 默认展开 */
                 expandedKeys:[3],
                 /* 默认选中 */
                 checkedKeys:[2,4],
                 treeData: [{
                     code: 1,
                     name: '一级 1',
                     son: [{
                         code: 4,
                         name: '二级 1-1',
                         son: [{
                             code: 9,
                             name: '三级 1-1-1'
                         }, {
                             code: 10,
                             name: '三级 1-1-2'
                         }]
                     }]
                 }, {
                     code: 2,
                     name: '一级 2',
                     son: [{
                         code: 5,
                         name: '二级 2-1'
                     }, {
                         code: 6,
                         name: '二级 2-2'
                     }]
                 }, {
                     code: 3,
                     name: '一级 3',
                     son: [{
                         code: 7,
                         name: '二级 3-1'
                     }, {
                         code: 8,
                         name: '二级 3-2'
                     }]
                 }],
                 defaultProps: {
                     children: 'son',
                     label: 'name'
                 }
             },
             methods: {
 ​
             },
             mounted() {
 ​
 ​
             }
         })
     </script>
 </html>

2.3.4 Message 消息提示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 开发环境版本,包含了有帮助的命令行警告 -->
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
		<!-- 引入样式 -->
		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
		<!-- 引入组件库 -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
		<style>

		</style>
	</head>
	<body>
		<div id="root">
			<!-- 
				使用场景:
					增加、修改、删除等操作后,给用户设置提示信息
			 -->
			<el-button :plain="true" @click="open2">成功</el-button>
			<el-button :plain="true" @click="open4">错误</el-button>
		</div>
	</body>
	<script>
		new Vue({
			el: "#root",
			data: {

			},
			methods: {
				open2() {
					this.$message({
						showClose: true,
						message: '恭喜你,这是一条成功消息',
						type: 'success'
					});
				},
				open4() {
					this.$message({
						showClose: true,
						/* 利用响应数据:状态码、描述信息、数据 */
						message: '登录失败',
						type: 'error'
					});
				}
			},
			mounted() {


			}
		})
	</script>
</html>

2.3.5 MessageBox 弹框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 开发环境版本,包含了有帮助的命令行警告 -->
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
		<!-- 引入样式 -->
		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
		<!-- 引入组件库 -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
		<style>

		</style>
	</head>
	<body>
		<div id="root">
			<!-- 
				使用场景:
					执行删除:给用户再次考虑的机会,等用户确定后再真正的执行删除
			 -->
			<el-button type="text" @click="deleteData">删除</el-button>

		</div>
	</body>
	<script>
		new Vue({
			el: "#root",
			data: {

			},
			methods: {
				/* 删除操作 */
				deleteData() {
					this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
						confirmButtonText: '确定',
						cancelButtonText: '取消',
						type: 'warning'
					}).then(() => {
						/* this.$message({
							type: 'success',
							message: '删除成功!'
						}); */
						
						// 使用Axios向服务器端发请求,执行删除
						
						
					}).catch(() => {
						this.$message({
							type: 'info',
							message: '已取消删除'
						});
					});
				}
			},
			mounted() {


			}
		})
	</script>
</html>

2.3.6 综合案例-系统主界面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 开发环境版本,包含了有帮助的命令行警告 -->
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
		<!-- 引入样式 -->
		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
		<!-- 引入组件库 -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
		<style>
			/* Container 布局容器 */
			.el-header,
			.el-footer {
				background-color: #B3C0D1;
				color: #333;
				text-align: center;
				line-height: 60px;
			}

			.el-aside {
				background-color: #D3DCE6;
				color: #333;
				text-align: center;
				line-height: 200px;
			}

			.el-main {
				background-color: #E9EEF3;
				color: #333;
				text-align: center;
				line-height: 160px;
			}

			body>.el-container {
				margin-bottom: 40px;
			}

			.el-container:nth-child(5) .el-aside,
			.el-container:nth-child(6) .el-aside {
				line-height: 260px;
			}

			.el-container:nth-child(7) .el-aside {
				line-height: 320px;
			}

			/* 自增样式 */
			html,
			body,
			#root,
			.el-container {
				height: 100%;
			}

			* {
				margin: 0;
				padding: 0;
			}
		</style>
	</head>
	<body>
		<div id="root">
			<!-- Container 布局容器 -->
			<el-container>
				<el-header>
					java教育金融系统
					<!-- <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
					  <el-menu-item index="1">处理中心</el-menu-item>
					  <el-submenu index="2">
					    <template slot="title">我的工作台</template>
					    <el-menu-item index="2-1">选项1</el-menu-item>
					    <el-menu-item index="2-2">选项2</el-menu-item>
					    <el-menu-item index="2-3">选项3</el-menu-item>
					    <el-submenu index="2-4">
					      <template slot="title">选项4</template>
					      <el-menu-item index="2-4-1">选项1</el-menu-item>
					      <el-menu-item index="2-4-2">选项2</el-menu-item>
					      <el-menu-item index="2-4-3">选项3</el-menu-item>
					    </el-submenu>
					  </el-submenu>
					  <el-menu-item index="3" disabled>消息中心</el-menu-item>
					  <el-menu-item index="4"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item>
					</el-menu> -->
				</el-header>
				<el-container>
					<el-aside width="200px">
						<el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen"
							@close="handleClose">
							<!-- 属性绑定 -->
							<el-submenu :index="menu.menuId.toString()" v-for="menu in menuList">
								<template slot="title">
									<!-- 图标 -->
									<i :class="menu.menuIcon"></i>
									<!-- 插值语法 -->
									<span>{{menu.menuName}}</span>
								</template>
								<el-menu-item-group>
									<el-menu-item :index="sub.menuId.toString()" v-for="sub in menu.subMenu">{{sub.menuName}}
									</el-menu-item>
									<!-- <el-menu-item index="1-2">选项2</el-menu-item> -->
								</el-menu-item-group>
							</el-submenu>
							<!-- <el-submenu index="2">
							    <template slot="title">
							      <i class="el-icon-location"></i>
							      <span>导航二</span>
							    </template>
							    <el-menu-item-group>
							      <el-menu-item index="2-1">选项1</el-menu-item>
							      <el-menu-item index="2-2">选项2</el-menu-item>
							    </el-menu-item-group>
							  </el-submenu> -->
						</el-menu>
					</el-aside>
					<el-main>Main</el-main>
				</el-container>
			</el-container>

		</div>
	</body>
	<script>
		new Vue({
			el: "#root",
			data: {
				activeIndex2: '1',
				// 模拟数据
				menuList: [{
					"menuId": 1000,
					"menuName": "系统模块",
					"menuIcon": "el-icon-s-tools",
					"subMenu": [{
						"menuId": 1001,
						"menuName": "用户模块"
					}, {
						"menuId": 1002,
						"menuName": "菜单模块"
					}]
				}, {
					"menuId": 2000,
					"menuName": "产品模块",
					"menuIcon": "el-icon-s-goods",
					"subMenu": [{
						"menuId": 2001,
						"menuName": "产品系列模块"
					}, {
						"menuId": 2002,
						"menuName": "产品基础模块"
					}]
				}]

			},
			methods: {
				handleSelect(key, keyPath) {
					console.log(key, keyPath);
				},
				handleOpen(key, keyPath) {
					console.log(key, keyPath);
				},
				handleClose(key, keyPath) {
					console.log(key, keyPath);
				},
				queryMenus() {
					/* axios.post("", "")
						.then(resp => {
							console.log(resp);
							// 假设服务端返回的数据格式如下
							var menus = [{
								"menuId": 1000,
								"menuName": "系统模块",
								"menuIcon": "el-icon-s-tools",
								"subMenu": [{
									"menuId": 1001,
									"menuName": "用户模块"
								}, {
									"menuId": 1002,
									"menuName": "菜单模块"
								}]
							}, {
								"menuId": 2000,
								"menuName": "产品模块",
								"menuIcon": "el-icon-s-goods",
								"subMenu": [{
									"menuId": 2001,
									"menuName": "产品系列模块"
								}, {
									"menuId": 2002,
									"menuName": "产品基础模块"
								}]
							}];
							this.menuList = menus;
						})
						.catch(error => {
							console.log(error);
						}); */
				}

			},
			mounted() {
				this.queryMenus();
			}
		})
	</script>
</html>

2.3.7 Dialog 对话框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 开发环境版本,包含了有帮助的命令行警告 -->
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
		<!-- 引入样式 -->
		<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
		<!-- 引入组件库 -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
		<style>

		</style>
	</head>
	<body>
		<div id="root">
			<!-- 
				Dialog 对话框:
					自定义内容
					使用场景:
						增加、修改等操作
			 -->
			<!-- 
				点击增加按钮,打开与之关联的增加对话框
			 -->
			<el-button type="success" @click="addDialogFormVisible = true">增加</el-button>

			<!-- 
				增加对话框
			 -->
			<el-dialog title="增加" :visible.sync="addDialogFormVisible">
				<!-- 
					增加表单
				 -->
				<el-form :model="addForm">
					<el-form-item label="活动名称" :label-width="formLabelWidth">
						<el-input v-model="addForm.name" autocomplete="off"></el-input>
					</el-form-item>
					<el-form-item label="活动区域" :label-width="formLabelWidth">
						<el-select v-model="addForm.region" placeholder="请选择活动区域">
							<el-option label="区域一" value="shanghai"></el-option>
							<el-option label="区域二" value="beijing"></el-option>
						</el-select>
					</el-form-item>
				</el-form>
				<div slot="footer" class="dialog-footer">
					<!-- 
						点击取消按钮时:
							关闭对话框
						点击确定按钮时:
							关闭对话框;
							向服务器端发请求,执行数据保存操作
					 -->
					<el-button @click="addDialogFormVisible = false">取 消</el-button>
					<el-button type="primary" @click="addDialogFormVisible = false">确 定</el-button>
				</div>
			</el-dialog>

		</div>
	</body>
	<script>
		new Vue({
			el: "#root",
			data: {
				addDialogFormVisible: false,
				addForm: {
					name: '',
					region: ''
				},
				formLabelWidth: '120px'
			},
			methods: {

			},
			mounted() {


			}
		})
	</script>
</html>