layui 相关
//layui table filter 监听筛选列工具条的点击事件(解决table右上角筛选时列名称不显示问题)
table.on('toolbar(currentTableFilter)', function(obj){
if(obj.event === 'LAYTABLE_COLS'){// 筛选列按钮被点击
// 获取下拉面板元素
var panel = $(obj.config.elem).find('.layui-table-tool-panel');
console.log('abc', $('.layui-table-tool-panel').html(), $(obj.config.elem), panel.html())
$('.layui-table-tool-panel>li').each(function(index,dom){
$(dom).find('div>div').replaceWith(function() {
return "<span>" + this.innerHTML + "</span>";
});
});
}
});
/**解决layui 列表中swich 按钮结构为div时的样式问题 start **/
.layui-form-switch div {
position: relative;
top: 0;
width: 25px;
margin-left: 21px;
padding: 0!important;
text-align: center!important;
color: #999!important;
font-style: normal!important;
font-size: 12px
}
.layui-form-onswitch div {
margin-left: 0;
margin-right: 21px;
color: #fff!important
}
.layui-checkbox-disabled div {
color: #d2d2d2!important
}
/**解决layui 列表中swich 按钮结构为div时的样式问题 end **/
通过js解决:
layui table函数中添加:
done: function(res, curr, count, origin){
$('.layui-form-switch>div').each(function(index,dom){
$(dom).replaceWith(function() {
return "<em>" + this.innerHTML + "</em>";
});
});
},
1、layui上传图片封装js
//工具函数 function Tools(){ } Tools.prototype = { moneyFormat : function(val,decimals= 2){ let formattedNumber = val.toFixed(decimals); // 将数字保留2位小数 //console.log(formattedNumber); // 输出 "0.00" return formattedNumber; }, /** * 上传图片 * @param upload layui中的upload对象,比如: upload=layui.upload, * @param idSelector 上传按钮的id值 * @param filePath 上传后需要图片存储的路径 */ uploadImg: function({upload,element}, idSelector, filePath){ var uploadInst = upload.render({ elem: '#'+idSelector, url: '/admin/upload/img', // 此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。 data:{path: (typeof(filePath) == 'undefined' ? 'uploadfile/others' : filePath) }, field:'file', acceptMime: 'image/jpeg, image/png', // 只筛选 jpg,png 格式图片 accept:'images', //指定允许上传时校验的文件类型 exts:'jpg|png|jpeg', //允许上传的文件后缀。一般结合 accept 属性来设定。 before: function(obj){ var that = this; // 预读本地文件示例,不支持ie8 obj.preview(function(index, file, result){ $(that.item).parent().find('.cls-upload-img').attr('src', result); // 图片链接(base64) }); var sourceId = $(this.item).attr('id'); if(element && (typeof element != undefined)){ element.progress('filter-demo'+sourceId, '0%'); // 进度条复位 } layer.msg('上传中', {icon: 16, time: 0}); }, done: function(res,index,upload){ if(res.code > 0){// 若上传失败 return layer.msg('上传失败'); } // 上传成功的一些操作 $(this.item).parent().find('.cls-upload-text').html(''); // 置空上传失败的状态 $('input[name="image"]').val(res.data.file_path); }, error: function(index,upload){ // 演示失败状态,并实现重传 var demoText = $(this.item).parent().find('.cls-upload-text'); demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>'); demoText.find('.demo-reload').on('click', function(){ uploadInst.upload(); }); }, progress: function(n, elem, e){ // 进度条 var sourceId = $(this.item).attr('id'); if(element && (typeof element != undefined)){ element.progress('filter-demo'+sourceId, n + '%'); // 可配合 layui 进度条元素使用 } if(n == 100){ layer.msg('上传完毕', {icon: 1}); } } }); } }; var tools = new Tools();
2、layui 上传图片html代码:
<div class="layui-form-item"> <input type="hidden" name="image" lay-verify="required" lay-reqtext="请上传KV图片"> <label class="layui-form-label required">KV图片:</label> <div class="layui-input-block"> <button type="button" class="layui-btn" id="upload-cover-btn"> <i class="layui-icon layui-icon-addition"><!--上传--></i> </button> <div style="width: 90%"> <div class="layui-upload-list"> <img class="layui-upload-img cls-upload-img" id="upload-cover-img" style="width:400px;height: 200px;"> <div id="upload-cover-text" class="cls-upload-text"></div> </div> {{-- <div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="filter-demoupload-cover-btn">--}} {{-- <div class="layui-progress-bar" lay-percent=""></div>--}} {{-- </div>--}} </div> </div> </div>
3、layui 上传图片html中调用js封装的方法
layui.use(['form','tableSelect','upload','layer'], function () { var form = layui.form, layer = layui.layer, $ = layui.$, upload=layui.upload, tableSelect = layui.tableSelect; var element = layui.element; tools.uploadImg({upload}, 'upload-cover-btn', 'uploadfile/admin/news');
判断列表后面的操作按钮的显示隐藏:
<script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-mini" lay-event="look">查看</a> @{{# if(d.status ==0){ }} <a class="layui-btn layui-btn-mini" lay-event="edit">编辑</a> @{{# }if(d.status ==1) { }} <a class="layui-btn layui-btn-mini" lay-event="submit">提交</a> @{{# }if(d.status ==2) { }} <a class="layui-btn layui-btn-danger layui-btn-mini" lay-event="del">删除</a> @{{# } }} </script> demo2: <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter0"></table> <script type="text/html" id="currentTableBar"> {{-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">操作</a>--}} @{{# if(d.status ==0){ }} <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="pass" >通过</a> <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="refuse" >不通过</a> @{{# } }} {{-- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="remove_auth">解绑</a>--}} </script>
在layui layer 弹出层中加载 layui table
layui table 回显数据设置默认选中 , 是否可以设置默认选中多个不连续的行:
你可以通过为每一条需要默认选中的数据设置 LAY_CHECKED: true
来实现默认选中多个不连续的行。举个例子:
layui.use('table', function(){ var table = layui.table; table.render({ elem: '#test' ,data: [ {id: 1, name: '行1', age: 1, LAY_CHECKED: true}, //这条记录的 LAY_CHECKED 设置为 true,表示默认选中 {id: 2, name: '行2', age: 2}, {id: 3, name: '行3', age: 3, LAY_CHECKED: true}, //这条记录的 LAY_CHECKED 设置为 true,表示默认选中 {id: 4, name: '行4', age: 4}, {id: 5, name: '行5', age: 5, LAY_CHECKED: true} //这条记录的 LAY_CHECKED 设置为 true,表示默认选中 ] ,cols: [[ {checkbox: true}, {field: 'id', title: 'ID'}, {field: 'name', title: '名称'}, {field: 'age', title: '年龄'} ]] ,even: true }); });
在上述代码中,id
为 1、3 和 5 的行将在页面加载时默认为选中状态。这也是通过在每一个需要选中的行数据中设置 LAY_CHECKED: true
来达到的目的。
posted on 2023-10-08 13:37 andydaopeng 阅读(35) 评论(0) 编辑 收藏 举报