<div class="layui-card-header">本地便签</div> 
 | 
<div class="note-wrapper"></div> 
 | 
<div class="note-empty"> 
 | 
    <i class="layui-icon layui-icon-face-surprised"></i> 
 | 
    <p>没有便签</p> 
 | 
</div> 
 | 
<div class="btn-circle" id="noteAddBtn" title="添加便签" style="position: absolute;"> 
 | 
    <i class="layui-icon layui-icon-add-1"></i> 
 | 
</div> 
 | 
  
 | 
<script> 
 | 
    layui.use(['layer', 'form', 'util', 'admin'], function () { 
 | 
        var $ = layui.jquery; 
 | 
        var layer = layui.layer; 
 | 
        var util = layui.util; 
 | 
        var admin = layui.admin; 
 | 
        var dataList = [];  // 便签列表 
 | 
        var $noteWrapper = $('.note-wrapper'); 
 | 
  
 | 
        /* 渲染列表 */ 
 | 
        function renderList() { 
 | 
            $noteWrapper.empty(); 
 | 
            dataList = layui.data(admin.setter.tableName).notes; 
 | 
            if (dataList === undefined) dataList = []; 
 | 
            for (var i = 0; i < dataList.length; i++) { 
 | 
                var item = dataList[i]; 
 | 
                $noteWrapper.prepend([ 
 | 
                    '<div class="note-item" data-id="', item.id, '">', 
 | 
                    '   <div class="note-item-content">', util.escape(item.content), '</div>', 
 | 
                    '   <div class="note-item-time">', item.time, '</div>', 
 | 
                    '   <i class="layui-icon layui-icon-close-fill note-item-del"></i>', 
 | 
                    '</div>' 
 | 
                ].join('')); 
 | 
            } 
 | 
            $('.note-empty').css('display', dataList.length === 0 ? 'block' : 'none'); 
 | 
            // 点击修改 
 | 
            $('.note-item').click(function () { 
 | 
                var index = parseInt($(this).attr('data-id')); 
 | 
                showNote(dataList[index]); 
 | 
            }); 
 | 
            // 点击删除 
 | 
            $('.note-item-del').click(function (e) { 
 | 
                var id = parseInt($(this).parent().attr('data-id')); 
 | 
                layer.confirm('确认删除吗?', { 
 | 
                    skin: 'layui-layer-admin', 
 | 
                    shade: .1, 
 | 
                    shadeClose: true 
 | 
                }, function (index) { 
 | 
                    layer.close(index); 
 | 
                    dataList.splice(id, 1); 
 | 
                    for (var i = 0; i < dataList.length; i++) dataList[i].id = i; 
 | 
                    putDataList(); 
 | 
                    renderList(); 
 | 
                }); 
 | 
                e.stopPropagation(); 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        renderList(); 
 | 
  
 | 
        /* 添加 */ 
 | 
        $('#noteAddBtn').click(function () { 
 | 
            showNote(); 
 | 
        }); 
 | 
  
 | 
        // 显示编辑弹窗 
 | 
        function showNote(data) { 
 | 
            var id = data ? data.id : undefined, content = data ? data.content : ''; 
 | 
            admin.open({ 
 | 
                id: 'layer-note-edit', 
 | 
                title: '便签', 
 | 
                type: 1, 
 | 
                area: 'auto', 
 | 
                offset: '50px', 
 | 
                shadeClose: true, 
 | 
                content: '<textarea id="noteEditText" placeholder="请输入内容" style="width: 280px;height: 150px;border: none;color: #666666;word-wrap: break-word;padding: 10px 20px;resize: vertical;">' + content + '</textarea>', 
 | 
                success: function () { 
 | 
                    $('#noteEditText').change(function () { 
 | 
                        content = $(this).val(); 
 | 
                    }); 
 | 
                }, 
 | 
                end: function () { 
 | 
                    if (id !== undefined) { 
 | 
                        if (!content) { 
 | 
                            dataList.splice(id, 1); 
 | 
                            for (var i = 0; i < dataList.length; i++) dataList[i].id = i; 
 | 
                        } else if (content !== dataList[id].content) { 
 | 
                            dataList[id].content = content; 
 | 
                            dataList[id].time = util.toDateString(new Date(), 'yyyy-MM-dd HH:mm'); 
 | 
                        } 
 | 
                    } else if (content) { 
 | 
                        dataList.push({ 
 | 
                            id: dataList.length, content: content, 
 | 
                            time: util.toDateString(new Date(), 'yyyy-MM-dd HH:mm') 
 | 
                        }); 
 | 
                    } 
 | 
                    putDataList(); 
 | 
                    renderList(); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        /* 更新本地缓存 */ 
 | 
        function putDataList() { 
 | 
            layui.data(admin.setter.tableName, {key: 'notes', value: dataList}); 
 | 
        } 
 | 
  
 | 
    }); 
 | 
</script> 
 | 
  
 | 
<style> 
 | 
    .note-wrapper { 
 | 
        padding: 15px 0 15px 15px; 
 | 
        background-color: #fbfbfb; 
 | 
        position: absolute; 
 | 
        top: 43px; 
 | 
        left: 0; 
 | 
        right: 0; 
 | 
        bottom: 0; 
 | 
        overflow-y: auto; 
 | 
        -webkit-overflow-scrolling: touch; 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item { 
 | 
        display: inline-block; 
 | 
        width: 110px; 
 | 
        padding: 12px; 
 | 
        cursor: pointer; 
 | 
        position: relative; 
 | 
        border-radius: 8px; 
 | 
        margin: 0 15px 15px 0; 
 | 
        border: 1px solid #eeeeee; 
 | 
        background-color: #ffffff; 
 | 
        -webkit-user-select: none; 
 | 
        -moz-user-select: none; 
 | 
        -ms-user-select: none; 
 | 
        user-select: none; 
 | 
        -webkit-transition: all .3s ease; 
 | 
        -moz-transition: all .3s ease; 
 | 
        -ms-transition: all .3s ease; 
 | 
        -o-transition: all .3s ease; 
 | 
        transition: all .3s ease; 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item:hover { 
 | 
        box-shadow: 0 0 8px rgba(0, 0, 0, .05); 
 | 
        -webkit-transform: scale(1.02); 
 | 
        -moz-transform: scale(1.02); 
 | 
        -ms-transform: scale(1.02); 
 | 
        -o-transform: scale(1.02); 
 | 
        transform: scale(1.02); 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item .note-item-content { 
 | 
        color: #666; 
 | 
        height: 80px; 
 | 
        font-size: 14px; 
 | 
        overflow: hidden; 
 | 
        word-break: break-all; 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item .note-item-time { 
 | 
        color: #999; 
 | 
        font-size: 12px; 
 | 
        margin-top: 8px; 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item .note-item-del { 
 | 
        position: absolute; 
 | 
        top: 2px; 
 | 
        right: 2px; 
 | 
        color: #FF5722; 
 | 
        font-size: 24px; 
 | 
        height: 24px; 
 | 
        width: 24px; 
 | 
        background-color: #fff; 
 | 
        border-radius: 50%; 
 | 
        visibility: hidden; 
 | 
        -webkit-transition: all .3s ease; 
 | 
        -moz-transition: all .3s ease; 
 | 
        -ms-transition: all .3s ease; 
 | 
        -o-transition: all .3s ease; 
 | 
        transition: all .3s ease; 
 | 
        opacity: 0; 
 | 
    } 
 | 
  
 | 
    .note-wrapper .note-item:hover .note-item-del { 
 | 
        visibility: visible; 
 | 
        opacity: 1; 
 | 
    } 
 | 
  
 | 
    .note-empty { 
 | 
        color: #999; 
 | 
        padding: 80px 0; 
 | 
        text-align: center; 
 | 
        display: none; 
 | 
        position: relative; 
 | 
        z-index: 1 
 | 
    } 
 | 
  
 | 
    .note-empty .layui-icon { 
 | 
        font-size: 60px; 
 | 
        margin-bottom: 10px; 
 | 
        display: inline-block; 
 | 
    } 
 | 
</style> 
 |