85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) {
 | |
|     "use strict";
 | |
| 
 | |
|     var MOD_NAME = 'messageCenter',
 | |
|         $ = layui.jquery,
 | |
|         dropdown = layui.dropdown;
 | |
| 
 | |
|     var message = function (opt) {
 | |
|         this.option = opt;
 | |
|     };
 | |
| 
 | |
|     message.prototype.render = function (opt) {
 | |
|         var option = {
 | |
|             elem: opt.elem,
 | |
|             url: opt.url ? opt.url : false,
 | |
|             height: opt.height,
 | |
|             data: opt.data
 | |
|         }
 | |
|         if (option.url != false) {
 | |
|             $.get(option.url, function (result) {
 | |
|                 const { code, success, data } = result;
 | |
|                 $(`${opt.elem}`).append(`<li class="layui-nav-item" lay-unselect="">
 | |
|                     <a href="#" class="notice layui-icon layui-icon-notice"></a>
 | |
|                     </li>`);
 | |
|                 if (code == 200 || success) {
 | |
|                     option.data = data;
 | |
|                     dropdown.render({
 | |
|                         elem: option.elem,
 | |
|                         align: "center",
 | |
|                         content: createHtml(option),
 | |
|                     })
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|         return new message(option);
 | |
|     }
 | |
| 
 | |
|     message.prototype.click = function (callback) {
 | |
|         $("*[notice-id]").click(function (event) {
 | |
|             event.preventDefault();
 | |
|             var id = $(this).attr("notice-id");
 | |
|             var title = $(this).attr("notice-title");
 | |
|             var context = $(this).attr("notice-context");
 | |
|             var form = $(this).attr("notice-form");
 | |
|             callback(id, title, context, form);
 | |
|         })
 | |
|     }
 | |
| 
 | |
|     function createHtml(option) {
 | |
| 
 | |
|         var count = 0;
 | |
|         var notice = '<div class="pear-message-center"><div class="layui-tab layui-tab-brief">'
 | |
|         var noticeTitle = '<ul class="layui-tab-title">';
 | |
|         var noticeContent = '<div class="layui-tab-content" style="height:' + option.height + ';overflow-x: hidden;padding:0px;">';
 | |
| 
 | |
|         $.each(option.data, function (i, item) {
 | |
| 
 | |
|             noticeTitle += `<li class="${i === 0 ? 'layui-this' : ''}">${item.title}</li>`;
 | |
|             noticeContent += '<div class="layui-tab-item layui-show">';
 | |
| 
 | |
| 
 | |
|             $.each(item.children, function (i, note) {
 | |
|                 count++;
 | |
|                 noticeContent += '<div class="message-item" notice-form="' + note.form + '" notice-context="' + note.context +
 | |
|                     '" notice-title="' + note.title + '" notice-id="' + note.id + '">';
 | |
| 
 | |
|                 noticeContent += '<img src="' + note.avatar + '"/><div style="display:inline-block;">' + note.title + '</div>' +
 | |
|                     '<div class="extra">' + note.time + '</div>' +
 | |
|                     '</div>';
 | |
|             })
 | |
| 
 | |
|             noticeContent += '</div>';
 | |
|         })
 | |
| 
 | |
|         noticeTitle += '</ul>';
 | |
|         noticeContent += '</div>';
 | |
|         notice += noticeTitle;
 | |
|         notice += noticeContent;
 | |
|         notice += "</div></div>"
 | |
| 
 | |
|         return notice;
 | |
|     }
 | |
| 
 | |
|     exports(MOD_NAME, new message());
 | |
| }) |