文章目录

  • ElementUI相关内容
  • 一、ElementUI入门
  • 二、使用@vue/cli3.0快速搭建elementui
  • 三、ElementUI调用接口
  • 四、分页
  • 五、Message
  • 5.1、Message提示消息
  • 5.2、Message-box弹框($ confirm、$ msgbox等,具体应用例如删除等弹框)
  • 六、ElementUI下拉框(v-for、key、value)
  • 6.1基本用法
  • 6.2 解决报错:从后台返回的数据在让elementui的select显示对应的lable值而不是value值
  • 七、Dialog 对话框(弹框,有visible属性)
  • 八、解决 “element el-tree在给default-checked-keys设置时会把节点下的所有子节点都选中” 的问题
  • 九、时间选择器 < el-time-picker >


ElementUI相关内容

一、ElementUI入门

elementUI官方中文文档:https://element.eleme.cn/#/zh-CN/component/button

二、使用@vue/cli3.0快速搭建elementui

在搭建好全局@vue/cli3.2的基础上,创建一个项目并添加elementui插件。

vue create my-app
cd my-app
vue add element

参考链接:https://github.com/ElementUI/vue-cli-plugin-element

三、ElementUI调用接口

转载:

四、分页

<el-row>
	<el-col :span="24">
		<div class="pagination">
			<el-pagination
				@size-change="handleSizeChange"
				@current-change="handleCurrentChange"
				:current-page="currentPage"  //当前页数
				:page-sizes="[10, 20, 50, 100]"  //可选择的每页显示的条数[10页、20页、50页、100页]
				:page-size="limit"  //当前限制的每页所显示的条数,可pagesize数组进行选择
				layout="total, sizes, prev, pager, next, jumper"
				:total="count">   //记录数据的总条数,通过调用接口获取所有的记录条数
			</el-pagination>
		</div>
	</el-col>
</el-row>

<script>
name:"goods_index",
data(){
	return{
		limit:10,
		currentPage:1,
		count:0,   //暂时给定的值,表明是int类型,后面会通过在methods中调用接口获取数据中所有记录的总条数
	},
}
// 分页
	handleSizeChange(val) {
		console.log(`每页 ${val} 条`);
		this.limit = val   //每页的条数限制
		this.Lists(); //嗲用axios接口
	},
			
	handleCurrentChange(val) {
		console.log(`当前页: ${val}`);
		this.currentPage = val   //当前页
		this.Lists(); //嗲用axios接口
	},
</script>

效果示例:

elementui 存放字体文件 elementui文档中文版_ico

elememtui文档连接:https://element.eleme.cn/#/zh-CN/component/pagination#pagination-fen-ye

五、Message

5.1、Message提示消息

参考文档:https://element.eleme.cn/#/zh-CN/component/message#fang-fa

5.2、Message-box弹框($ confirm、$ msgbox等,具体应用例如删除等弹框)

参考文档:官方文档1、$ msgbox

<el-button
	type="danger" 
	icon="el-icon-delete"
	@click="delDio(scope.row)"  //将行数据传到delDio函数中
	size="medium">
		删除
</el-button>
<script>
....
 delDio(row) {
      let _this = this;
      const h = this.$createElement;
      this.$msgbox({
        title: "提示",
        message: h("p", null, [
          h("span", null, "是否确认 "),
          h("span", { style: "color: #F45A38"}, "删除"),
          h("span", null, "该商品? ")
        ]),
        type: "warning",
        showCancelButton: true,
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        customClass: "message_box",
        cancelButtonClass: "message_box_cancle",
        confirmButtonClass: "message_box_confirm",
        beforeClose: (action, instance, done) => {
          if (action === "confirm") {
            instance.confirmButtonLoading = true;
            instance.confirmButtonText = "删除中...";
            _this.$api .Delete('/index/index' + "/" + row.id, {})
              .then(res => {
                if (res.code == 0) {
                  instance.confirmButtonLoading = false;
                  done();
                  this.Lists(); //再次调用接口,进行Lists刷新
                }
              })
              .catch(err => {
                instance.confirmButtonLoading = false;
                _this.$message.error(err.msg);
                done();
              });
          } else {
            done();
          }
        }
      })
        .then(action => {
          console.log("======");
          this.$message({
            type: "success",
            message: "删除成功!"
          });
        })
        .catch(action => {
          this.$message({
            type: "info",
            message: "已取消删除"
          });
        });
    }
  }
</script>

elementui 存放字体文件 elementui文档中文版_数组_02


效果:

elementui 存放字体文件 elementui文档中文版_elementui 存放字体文件_03


2、$confirm

<el-button
	type="danger" 
	icon="el-icon-delete"
	@click="delDio(scope.row)"  //将行数据传到delDio函数中
	size="medium">
		删除
</el-button>
<script>
......
delDio(row){
	let _this = this;
	this.$confirm('是否删除?', '提示', {
		confirmButtonText: '确定',
		cancelButtonText: '取消',
		type: 'warning',	
	}).then(async () => {
		_this.$api.post(_this.$apiUrl.maintain + '/'+ row.id,{
		status:row.status,  //调用post接口需要传进去的data参数
	}).then(res =>{
		_this.goodsLists()
		this.$message({
			type: 'success',
			message: '删除成功!',
		});
	})
}).catch(() => {
	this.$message({
		type: 'info',
		message: '取消删除'
	});          
});
}
</script>

效果图:

elementui 存放字体文件 elementui文档中文版_数组_04

六、ElementUI下拉框(v-for、key、value)

6.1基本用法

1、elementui的几个关键点
(1)v-mode:双向绑定数据,当前下拉框选中的值
(2)v-for:通过遍历循环options,获取下拉框的值,:key为唯一值,表示下拉框通过那一个值进行遍历
(3):lable的值为显示在下拉框中的值,:lable是每个数据的唯一标识,也是v-model所绑定值
(4)在el-option中,设定disabled值为 true,即可禁用该选项(该选项显示为灰色,禁止选中)

<el-option v-for="item in Lists" :key="item.id" :label="item.name" :value="item.id"       :disabled="item.disabled">

v-model对应当前选中的 :value 的值

2、elementui举例说明

<div class="row_center">
	<span style="width: 120px;">角色权限:</span>
	<el-select v-model="country" clearable placeholder="请选择"> 
		<el-option
			 v-for="item in Lists"  //循环遍历Lists数组
			:key="item.id"   //数组的id进行遍历
			:label="item.name"   //下拉框显示的是对象数组中name字段的值
			:value="item.id">   //唯一标识,与v-model的绑定值相对应
		</el-option>
	</el-select>
</div>
<script>
export default{
	name:'admin_list',
	data(){
		return{
			Lists:[
				{id:1,name:'中国'},
				{id:2,name:'美国'},
				{id:3,name:'英国'}
			],
			country:''
		}
	},
}
</script>

6.2 解决报错:从后台返回的数据在让elementui的select显示对应的lable值而不是value值

错误截图(图片转自):

elementui 存放字体文件 elementui文档中文版_ico_05


解决方法:出现这种情况可能是从后台返回的数据类型和value的数据类型不一致,可以通过强制性转换成一致的

七、Dialog 对话框(弹框,有visible属性)

Diolog弹框通过visible属性来控制是否显示

<el-dialog
  	:modal-append-to-body='false'
  	:title="title"   //动态设置弹框的头部标题
  	width="48%" 
  	custom-class="dialog_bar" 
  	:visible.sync="isShow"  //通过变量isShow来决定弹框是否显示
  	:before-close="handleClose">   //在关闭痰喘之前的操作
    <div class="dialog_info">
  		<div class="row_center" style="margin-bottom: 20px;">
  			<span style="width: 120px;">账户:</span>
  			<el-input v-model="account" placeholder="请输入账户" ></el-input>
  		</div>
  		<div class="row_center" style="margin-bottom: 20px;">
  			<span style="width: 120px;">密码:</span>
  			<el-input v-model="password" placeholder="请输入登录密码" ></el-input>
  		</div>
  		<el-button type="success" icon="el-icon-plus" @click="showDiolog">弹框</el-button>
  	</div>
</el-dialog>
<script>
export default{
	dataa(){
		isShow:false     //isShow最开将值设为false,则弹框受visible属性的控制会进行影藏
		account:'',
		password:''
	}
	methods:{
	handleClose(done) {   //在点击dialog关闭之前会执行handClose这个事件
		 this.$confirm('确认关闭?')  //点击关闭后弹出“确认关闭”的弹框
		.then(_ => {
			  done();
		})
		.catch(_ => {});
		},	
	}
	showDiolog(){  //点击showDiolog时间将,isShow的值会被赋值为true,此时弹框显示
	let _this = this
	_this.isShow = false
}
</script>

补充:Dialog的visible属性需要添加 .sync 才有效

八、解决 “element el-tree在给default-checked-keys设置时会把节点下的所有子节点都选中” 的问题

default-checked-keys 表示默认勾选的节点的 key 的数组
给default-checked-keys给定一个数组时,会把数组中所含父子节点的所有子节点选上

解决方法:
在< el-tree>中添加check-strictly属性

<el-tree
      :data="treeData"
      node-key="id"
      ref="tree"
      lazy
      show-checkbox
      :load="loadNode"
      check-strictly   /
      :props="defaultProps"
      :default-checked-keys="dataId"
      @check-change="handleCheckChange"
    >

elementui 存放字体文件 elementui文档中文版_数组_06

九、时间选择器 < el-time-picker >

参考文档https://element.eleme.cn/#/zh-CN/component/time-picker#methods