diff --git a/demo/WalkingTec.Mvvm.BlazorDemo/WalkingTec.Mvvm.BlazorDemo.Model/FrameworkUser.cs b/demo/WalkingTec.Mvvm.BlazorDemo/WalkingTec.Mvvm.BlazorDemo.Model/FrameworkUser.cs index 551a4d1c6..bcaf36224 100644 --- a/demo/WalkingTec.Mvvm.BlazorDemo/WalkingTec.Mvvm.BlazorDemo.Model/FrameworkUser.cs +++ b/demo/WalkingTec.Mvvm.BlazorDemo/WalkingTec.Mvvm.BlazorDemo.Model/FrameworkUser.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text.Json.Serialization; using System.Threading.Tasks; +using WalkingTec.Mvvm.Core.Models; namespace WalkingTec.Mvvm.Core { @@ -38,5 +39,10 @@ public class FrameworkUser : FrameworkUserBase [Display(Name = "_Admin.ZipCode")] [RegularExpression("^[0-9]{6,6}$", ErrorMessage = "Validate.{0}formaterror")] public string ZipCode { get; set; } + + public Guid? DepartmentId { get; set; } + + public Department Department { get; set; } + } } diff --git a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ApiControllers/FileApiController.cs b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ApiControllers/FileApiController.cs index f3549f710..68361a953 100644 --- a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ApiControllers/FileApiController.cs +++ b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ApiControllers/FileApiController.cs @@ -30,6 +30,44 @@ public IActionResult Upload([FromServices] WtmFileProvider fp, string sm = null, return Ok(new { Id = file.GetID(), Name = file.FileName }); } + [HttpPost("[action]")] + [ActionDescription("UploadIm")] + public IActionResult UploadIm([FromServices] WtmFileProvider fp, string sm = null, string groupName = null, string subdir = null, string extra = null, string csName = null) + { + var FileData = Request.Form.Files[0]; + var file = fp.Upload(FileData.FileName, FileData.Length, FileData.OpenReadStream(), groupName, subdir, extra, sm, Wtm.CreateDC(cskey: csName)); + + string src = string.Empty; + + if (FileData.FileName.Contains("jpg") || FileData.FileName.Contains("jpeg") || FileData.FileName.Contains("png") || FileData.FileName.Contains("GIF") || FileData.FileName.Contains("JPG") || FileData.FileName.Contains("PNG")) + { + src = "/api/_file/GetFile/" + file.GetID(); + } + else + { + src = "/api/_file/DownloadFile/" + file.GetID(); + } + + + var data = new + { + src + }; + + var temp = new + { + code = 0, + msg = "", + data + }; + + return Ok(temp); + + + + } + + [HttpPost("[action]")] [ActionDescription("UploadPic")] public IActionResult UploadImage([FromServices] WtmFileProvider fp, int? width = null, int? height = null, string sm = null, string groupName = null, string subdir = null, string extra = null, string csName = null) diff --git a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Controllers/FrameworkUserController.cs b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Controllers/FrameworkUserController.cs index 818f697a8..c3d34d01e 100644 --- a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Controllers/FrameworkUserController.cs +++ b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Controllers/FrameworkUserController.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; +using WalkingTec.Mvvm.Core.Models; namespace WalkingTec.Mvvm.Mvc.Admin.Controllers { @@ -402,6 +403,13 @@ public IActionResult GetFrameworkGroups() return JsonMore(users); } + [AllRights] + public IActionResult GetFrameworkUnitWorks() + { + var data = DC.Set().GetSelectListItems(Wtm, x => x.DepName); + return JsonMore(data); + } + } } diff --git a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ViewModels/FrameworkUserVms/FrameworkUserListVM.cs b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ViewModels/FrameworkUserVms/FrameworkUserListVM.cs index 5768162ee..2e4444123 100644 --- a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ViewModels/FrameworkUserVms/FrameworkUserListVM.cs +++ b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/ViewModels/FrameworkUserVms/FrameworkUserListVM.cs @@ -1,5 +1,6 @@ // WTM默认页面 Wtm buidin page using Microsoft.EntityFrameworkCore; +using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -32,6 +33,7 @@ protected override IEnumerable> InitGridHeader() return new List>{ this.MakeGridHeader(x => x.ITCode), this.MakeGridHeader(x => x.Name), + this.MakeGridHeader(x => x.Department_view), this.MakeGridHeader(x => x.Gender,80), this.MakeGridHeader(x => x.CellPhone,120), this.MakeGridHeader(x => x.RoleName_view), @@ -62,6 +64,7 @@ public override IOrderedQueryable GetSearchQuery() ID = x.ID, ITCode = x.ITCode, Name = x.Name, + Department_view = x.Department.DepName, PhotoId = x.PhotoId, CellPhone = x.CellPhone, IsValid = x.IsValid, @@ -84,5 +87,8 @@ public class FrameworkUser_View : FrameworkUser [Display(Name = "_Admin.Group")] public string GroupName_view { get; set; } + + [Display(Name = "_Admin.Department")] + public string Department_view { get; set; } } } diff --git a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Create.cshtml b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Create.cshtml index 7301d0d9e..665bfda6d 100644 --- a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Create.cshtml +++ b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Create.cshtml @@ -3,44 +3,48 @@ @inject IStringLocalizer Localizer; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Edit.cshtml b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Edit.cshtml index 3732c2431..37f924320 100644 --- a/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Edit.cshtml +++ b/demo/WalkingTec.Mvvm.Demo/Areas/_Admin/Views/FrameworkUser/Edit.cshtml @@ -3,46 +3,50 @@ @inject IStringLocalizer Localizer; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Controllers/DepartmentController.cs b/demo/WalkingTec.Mvvm.Demo/Controllers/DepartmentController.cs new file mode 100644 index 000000000..c70c724a8 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Controllers/DepartmentController.cs @@ -0,0 +1,217 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Extensions; +using WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs; +using WalkingTec.Mvvm.Mvc; + + +namespace WalkingTec.Mvvm.Demo.Controllers +{ + [ActionDescription("单位管理")] + public partial class DepartmentController : BaseController + { + #region Search + [ActionDescription("Sys.Search")] + public ActionResult Index() + { + var vm = Wtm.CreateVM(); + return PartialView(vm); + } + + [ActionDescription("Sys.Search")] + [HttpPost] + public string Search(DepartmentSearcher searcher) + { + var vm = Wtm.CreateVM(passInit: true); + if (ModelState.IsValid) + { + vm.Searcher = searcher; + return vm.GetJson(false); + } + else + { + return vm.GetError(); + } + } + + #endregion + + #region Create + [ActionDescription("Sys.Create")] + public ActionResult Create() + { + var vm = Wtm.CreateVM(); + return PartialView(vm); + } + + [HttpPost] + [ActionDescription("Sys.Create")] + public ActionResult Create(DepartmentVM vm) + { + if (!ModelState.IsValid) + { + return PartialView(vm); + } + else + { + vm.DoAdd(); + if (!ModelState.IsValid) + { + vm.DoReInit(); + return PartialView(vm); + } + else + { + return FFResult().CloseDialog().RefreshGrid(); + } + } + } + #endregion + + #region Edit + [ActionDescription("Sys.Edit")] + public ActionResult Edit(string id) + { + var vm = Wtm.CreateVM(id); + return PartialView(vm); + } + + [ActionDescription("Sys.Edit")] + [HttpPost] + [ValidateFormItemOnly] + public ActionResult Edit(DepartmentVM vm) + { + if (!ModelState.IsValid) + { + return PartialView(vm); + } + else + { + vm.DoEdit(); + if (!ModelState.IsValid) + { + vm.DoReInit(); + return PartialView(vm); + } + else + { + return FFResult().CloseDialog().RefreshGridRow(vm.Entity.ID); + } + } + } + #endregion + + #region Delete + [ActionDescription("Sys.Delete")] + public ActionResult Delete(string id) + { + var vm = Wtm.CreateVM(id); + return PartialView(vm); + } + + [ActionDescription("Sys.Delete")] + [HttpPost] + public ActionResult Delete(string id, IFormCollection nouse) + { + var vm = Wtm.CreateVM(id); + vm.DoDelete(); + if (!ModelState.IsValid) + { + return PartialView(vm); + } + else + { + return FFResult().CloseDialog().RefreshGrid(); + } + } + #endregion + + #region Details + [ActionDescription("Sys.Details")] + public ActionResult Details(string id) + { + var vm = Wtm.CreateVM(id); + return PartialView(vm); + } + #endregion + + #region BatchEdit + [HttpPost] + [ActionDescription("Sys.BatchEdit")] + public ActionResult BatchEdit(string[] IDs) + { + var vm = Wtm.CreateVM(Ids: IDs); + return PartialView(vm); + } + + [HttpPost] + [ActionDescription("Sys.BatchEdit")] + public ActionResult DoBatchEdit(DepartmentBatchVM vm, IFormCollection nouse) + { + if (!ModelState.IsValid || !vm.DoBatchEdit()) + { + return PartialView("BatchEdit", vm); + } + else + { + return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchEditSuccess", vm.Ids.Length]); + } + } + #endregion + + #region BatchDelete + [HttpPost] + [ActionDescription("Sys.BatchDelete")] + public ActionResult BatchDelete(string[] IDs) + { + var vm = Wtm.CreateVM(Ids: IDs); + return PartialView(vm); + } + + [HttpPost] + [ActionDescription("Sys.BatchDelete")] + public ActionResult DoBatchDelete(DepartmentBatchVM vm, IFormCollection nouse) + { + if (!ModelState.IsValid || !vm.DoBatchDelete()) + { + return PartialView("BatchDelete", vm); + } + else + { + return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchDeleteSuccess", vm.Ids.Length]); + } + } + #endregion + + #region Import + [ActionDescription("Sys.Import")] + public ActionResult Import() + { + var vm = Wtm.CreateVM(); + return PartialView(vm); + } + + [HttpPost] + [ActionDescription("Sys.Import")] + public ActionResult Import(DepartmentImportVM vm, IFormCollection nouse) + { + if (vm.ErrorListVM.EntityList.Count > 0 || !vm.BatchSaveData()) + { + return PartialView(vm); + } + else + { + return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.ImportSuccess", vm.EntityList.Count.ToString()]); + } + } + #endregion + + [ActionDescription("Sys.Export")] + [HttpPost] + public IActionResult ExportExcel(DepartmentListVM vm) + { + return vm.GetExportData(); + } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/Controllers/ImApiController.cs b/demo/WalkingTec.Mvvm.Demo/Controllers/ImApiController.cs new file mode 100644 index 000000000..5ccf3f831 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Controllers/ImApiController.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using NPOI.SS.Formula.Functions; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Models; +using WalkingTec.Mvvm.Demo.Hubs; +using WalkingTec.Mvvm.Demo.ViewModels.ImVMs; +using WalkingTec.Mvvm.Mvc; + +namespace WalkingTec.Mvvm.Demo.Controllers +{ + [AllRights] + [AuthorizeJwtWithCookie] + [ApiController] + [Route("api/[controller]/[action]")] + [ActionDescription("imapi控制器")] + public class ImApiController : BaseApiController + { + + + #region 采用按wtm自带分组 + + [HttpGet] + public async Task GetinitData() + { + + var userinfo = await DC.Set().AsNoTracking().FirstOrDefaultAsync(x => x.ID == new Guid(Wtm.LoginUserInfo.UserId)); + + ImUserInfoVM mineinfo = new() + { + username = Wtm.LoginUserInfo.Name, + id = Wtm.LoginUserInfo.UserId, + status = "online", + avatar = Wtm.LoginUserInfo.PhotoId != null ? "/api/_file/getuserphoto/" + Wtm.LoginUserInfo.PhotoId : "", + sign = userinfo.Sign, + + }; + var conn = ConnectionManagement.SignalRConns; + var frameworkGroup = await DC.Set().AsNoTracking().ToListAsync(); + List FriendInfos = new(); + frameworkGroup.ForEach(async group => + { + FriendInfoVM friendInfo = new(); + friendInfo.groupname = group.GroupName; + friendInfo.id = group.ID.ToString(); + + var groupUser = await DC.Set().AsNoTracking().Where(x => x.GroupCode == group.GroupCode).Select(x => x.UserCode).ToArrayAsync(); + + var users = await DC.Set().AsNoTracking() + .Where(x=> groupUser.Any(y=>y== x.ITCode)) + .Select(user => new ImUserInfoVM + { + username = user.Name, + id = user.ID.ToString().ToLower(), + status = ConnectionManagement.IsConn(user.ID.ToString()) == true ? "online" : "offline", + avatar = user.PhotoId != null ? "/api/_file/getuserphoto/" + user.PhotoId : "", + sign = user.Sign, + + }) + .ToListAsync(); + friendInfo.list = users; + FriendInfos.Add(friendInfo); + + }); + + var imInitUserData = new ImInitUserDataVM + { + mine = mineinfo, + friend = FriendInfos + }; + + ImInitDataVM initData = new() + { + code = 0, + msg = "", + data = imInitUserData + }; + + return Ok(initData); + + + } + + + #endregion + + #region 用单位获取,暂时弃用 + //[HttpGet] + //public async Task GetinitData() + //{ + + // var userinfo = await DC.Set().AsNoTracking().FirstOrDefaultAsync(x => x.ID == new Guid(Wtm.LoginUserInfo.UserId)); + + // ImUserInfoVM mineinfo = new() + // { + // username = Wtm.LoginUserInfo.Name, + // id = Wtm.LoginUserInfo.UserId, + // status = "online", + // avatar = Wtm.LoginUserInfo.PhotoId != null ? "/api/_file/getuserphoto/" + Wtm.LoginUserInfo.PhotoId : "", + // sign = userinfo.Sign, + + // }; + // var conn = ConnectionManagement.SignalRConns; + // var department = await DC.Set().AsNoTracking().ToListAsync(); + // List FriendInfos = new(); + // department.ForEach(async work => + // { + // FriendInfoVM friendInfo = new(); + // friendInfo.groupname = work.DepName; + // friendInfo.id = work.ID.ToString(); + // var users = await DC.Set().AsNoTracking() + // .Where(user => user.DepartmentId == work.ID) + // .Select(user => new ImUserInfoVM + // { + // username = user.Name, + // id = user.ID.ToString().ToLower(), + // status = ConnectionManagement.IsConn(user.ID.ToString()) == true ? "online" : "offline", + // avatar = user.PhotoId != null ? "/api/_file/getuserphoto/" + user.PhotoId : "", + // sign = user.Sign, + + // }) + // .ToListAsync(); + // friendInfo.list = users; + // FriendInfos.Add(friendInfo); + + // }); + + // var imInitUserData = new ImInitUserDataVM + // { + // mine = mineinfo, + // friend = FriendInfos + // }; + + // ImInitDataVM initData = new() + // { + // code = 0, + // msg = "", + // data = imInitUserData + // }; + + // return Ok(initData); + + + //} + #endregion + + + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/DataContext.cs b/demo/WalkingTec.Mvvm.Demo/DataContext.cs index a7d281273..30bdaa35c 100644 --- a/demo/WalkingTec.Mvvm.Demo/DataContext.cs +++ b/demo/WalkingTec.Mvvm.Demo/DataContext.cs @@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore.Design; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; +using WalkingTec.Mvvm.Core.Models; using WalkingTec.Mvvm.Demo.Models; using WalkingTec.Mvvm.Demo.Models._Admin; using WalkingTec.Mvvm.Demo.Models.Virus; @@ -51,6 +52,8 @@ public DataContext(DbContextOptions options) : base(options) { } public DbSet TreeTests { get; set; } public DbSet MyGroups { get; set; } public DbSet MyTenants { get; set; } + + public DbSet Departments { get; set; } public override async Task DataInit(object allModules, bool IsSpa) { var state = await base.DataInit(allModules, IsSpa); diff --git a/demo/WalkingTec.Mvvm.Demo/Hubs/ChatHub.cs b/demo/WalkingTec.Mvvm.Demo/Hubs/ChatHub.cs new file mode 100644 index 000000000..a4ccef951 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Hubs/ChatHub.cs @@ -0,0 +1,125 @@ +using Microsoft.AspNetCore.SignalR; +using static Aliyun.OSS.Model.CreateSelectObjectMetaInputFormatModel; +using System.Threading.Tasks; +using System; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Demo.ViewModels.ImVMs; +using System.Text.Json; +using System.Linq; +using Microsoft.EntityFrameworkCore; + +namespace WalkingTec.Mvvm.Demo.Hubs +{ + public class ChatHub : Hub + { + + private WTMContext _wTMContext; + public ChatHub(WTMContext wTMContext, IDataContext DC) + { + _wTMContext = wTMContext; + } + + public async Task SendMessage(string user, string message) + { + await Clients.All.SendAsync("ReceiveMessage", user, message); + } + + #region IM + /// + /// 发送文字聊天 + /// + /// + /// + /// + public async Task SenOneIm(string msg) + { + + ImMsgVM imMsgVM = JsonSerializer.Deserialize(msg); + imMsgVM.timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(); + bool mine = imMsgVM.toid.ToUpper() == _wTMContext.LoginUserInfo.UserId.ToUpper() ? true : false; + imMsgVM.mine = mine; + string jsonString = JsonSerializer.Serialize(imMsgVM); + var toconnid = ConnectionManagement.SignalRConns.FirstOrDefault(x => x.UserId.ToLower() == imMsgVM.toid.ToLower()); + await Clients.Client(toconnid?.ConnectionId).SendAsync("ReceiveOneIm", jsonString); + } + //改变状态 + public async Task ChangeStatus(string status) + { + if (status == "online") + { + await Clients.AllExcept(Context.ConnectionId).SendAsync("online", _wTMContext.LoginUserInfo.UserId); + } + else + { + await Clients.AllExcept(Context.ConnectionId).SendAsync("offline", _wTMContext.LoginUserInfo.UserId); + } + + + } + + //修改签名 + public async Task ChangeSign(string status) + { + var userinfo = await _wTMContext.DC.Set().AsNoTracking().FirstOrDefaultAsync(x => x.ID == new Guid(_wTMContext.LoginUserInfo.UserId)); + userinfo.Sign = status; + _wTMContext.DC.Set().Update(userinfo); + int x = await _wTMContext.DC.SaveChangesAsync(); + if (x > 0) + { + await Clients.Client(Context.ConnectionId).SendAsync("SignBack", "修改签名成功"); + } + else + { + await Clients.Client(Context.ConnectionId).SendAsync("SignBack", "修改签名失败"); + } + + } + + + + + #endregion + + #region 连接事件 + /// + /// 连接初始化事件 + /// + /// + public override Task OnConnectedAsync() + { + var connid = Context.ConnectionId; + var userid = _wTMContext.LoginUserInfo.UserId; + var chk = ConnectionManagement.IsConn(userid); + if (chk == false) + { + SignalRConn signalRConn = new SignalRConn { UserId = userid, ConnectionId = connid }; + ConnectionManagement.AddConnInfo(signalRConn); + } + ConnectionManagement.EditConnInfo(userid, connid); + + + Clients.AllExcept(Context.ConnectionId).SendAsync("online", _wTMContext.LoginUserInfo.UserId).Wait(); + + + return base.OnConnectedAsync(); + } + /// + /// 连接关闭事件 + /// + /// + /// + public override Task OnDisconnectedAsync(Exception exception) + { + var connid = Context.ConnectionId; + ConnectionManagement.DelConnInfo(connid); + Clients.AllExcept(Context.ConnectionId).SendAsync("offline", _wTMContext.LoginUserInfo.UserId).Wait(); + return base.OnDisconnectedAsync(exception); + } + + #endregion + + + + + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/Hubs/ConnectionManagement.cs b/demo/WalkingTec.Mvvm.Demo/Hubs/ConnectionManagement.cs new file mode 100644 index 000000000..3f7c5c5bb --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Hubs/ConnectionManagement.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Linq; + +namespace WalkingTec.Mvvm.Demo.Hubs +{ + public static class ConnectionManagement + { + public static List SignalRConns { get; set; } = new(); + + public static void AddConnInfo(SignalRConn conn) + { + SignalRConns.Add(conn); + } + public static void DelConnInfo(string connid) + { + var signalRConns = SignalRConns.FirstOrDefault(x => x.ConnectionId == connid); + SignalRConns.Remove(signalRConns); + } + public static void EditConnInfo(string userid, string newconnid) + { + var signalRConns = SignalRConns.FirstOrDefault(x => x.UserId.ToLower() == userid.ToLower()); + signalRConns.ConnectionId = newconnid; + } + + public static bool IsConn(string userid) + { + var b = SignalRConns.FirstOrDefault(x => x.UserId.ToLower() == userid.ToLower()); + if (b != null) + { + return true; + } + return false; + } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/Hubs/SignalRConn.cs b/demo/WalkingTec.Mvvm.Demo/Hubs/SignalRConn.cs new file mode 100644 index 000000000..b2e8028ea --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Hubs/SignalRConn.cs @@ -0,0 +1,14 @@ +namespace WalkingTec.Mvvm.Demo.Hubs +{ + public class SignalRConn + { + /// + /// wtm用户id + /// + public string UserId { get; set; } + /// + /// SignalR连接id + /// + public string ConnectionId { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/Models/_Admin/FrameworkUser.cs b/demo/WalkingTec.Mvvm.Demo/Models/_Admin/FrameworkUser.cs index 6f73f5fcc..3b78a16fc 100644 --- a/demo/WalkingTec.Mvvm.Demo/Models/_Admin/FrameworkUser.cs +++ b/demo/WalkingTec.Mvvm.Demo/Models/_Admin/FrameworkUser.cs @@ -1,5 +1,7 @@ +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using WalkingTec.Mvvm.Core.Models; namespace WalkingTec.Mvvm.Core { @@ -34,5 +36,12 @@ public class FrameworkUser : FrameworkUserBase [Display(Name = "_Admin.ZipCode")] [RegularExpression("^[0-9]{6,6}$", ErrorMessage = "Validate.{0}formaterror")] public string ZipCode { get; set; } + [Display(Name = "_Admin.Department")] + public Guid? DepartmentId { get; set; } + [Display(Name = "_Admin.Department")] + public Department Department { get; set; } + [Display(Name = "_Admin.Sign")] + public string Sign { get; set; } + } } diff --git a/demo/WalkingTec.Mvvm.Demo/Program.cs b/demo/WalkingTec.Mvvm.Demo/Program.cs index 4ef0ff6b6..cd93a8663 100644 --- a/demo/WalkingTec.Mvvm.Demo/Program.cs +++ b/demo/WalkingTec.Mvvm.Demo/Program.cs @@ -5,12 +5,11 @@ using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Support.FileHandlers; -using WalkingTec.Mvvm.Demo.Models; +using WalkingTec.Mvvm.Demo.Hubs; using WalkingTec.Mvvm.Mvc; var builder = WebApplication.CreateBuilder(args); @@ -27,6 +26,7 @@ builder.Services.AddWtmHttpClient(builder.Configuration); builder.Services.AddWtmSwagger(); builder.Services.AddWtmMultiLanguages(builder.Configuration); + builder.Services.AddMvc(options => { options.UseWtmMvcOptions(); @@ -47,7 +47,7 @@ options.FileSubDirSelector = SubDirSelector; options.ReloadUserFunc = ReloadUser; }); - +builder.Services.AddSignalR(); var app = builder.Build(); IOptionsMonitor config = app.Services.GetRequiredService>(); @@ -65,6 +65,7 @@ app.UseSession(); app.UseWtmSwagger(false); app.UseWtm(); + app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( @@ -73,6 +74,7 @@ endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); + endpoints.MapHub("/chatHub"); }); app.UseWtmContext(); diff --git a/demo/WalkingTec.Mvvm.Demo/Resources/Program.en.resx b/demo/WalkingTec.Mvvm.Demo/Resources/Program.en.resx index 9f9881410..111a0d4fb 100644 --- a/demo/WalkingTec.Mvvm.Demo/Resources/Program.en.resx +++ b/demo/WalkingTec.Mvvm.Demo/Resources/Program.en.resx @@ -768,6 +768,9 @@ Debug + + Department + Order @@ -945,6 +948,9 @@ Menu + + Sign + Privilege name diff --git a/demo/WalkingTec.Mvvm.Demo/Resources/Program.zh.resx b/demo/WalkingTec.Mvvm.Demo/Resources/Program.zh.resx index 04632a2f2..835e436df 100644 --- a/demo/WalkingTec.Mvvm.Demo/Resources/Program.zh.resx +++ b/demo/WalkingTec.Mvvm.Demo/Resources/Program.zh.resx @@ -771,6 +771,9 @@ 调试 + + 部门 + 顺序 @@ -948,6 +951,9 @@ 菜单显示 + + 签名 + 权限名称 diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentBatchVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentBatchVM.cs new file mode 100644 index 000000000..041ff0e6a --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentBatchVM.cs @@ -0,0 +1,25 @@ +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Models; + +namespace WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs +{ + public partial class DepartmentBatchVM : BaseBatchVM + { + public DepartmentBatchVM() + { + ListVM = new DepartmentListVM(); + LinkedVM = new Department_BatchEdit(); + } + } + /// + /// Class to define batch edit fields + /// + public class Department_BatchEdit : BaseVM + { + + protected override void InitVM() + { + } + + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentImportVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentImportVM.cs new file mode 100644 index 000000000..13eb81456 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentImportVM.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Extensions; +using WalkingTec.Mvvm.Core.Models; + +namespace WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs +{ + + public partial class DepartmentTemplateVM : BaseTemplateVM + { + [Display(Name = "部门名称")] + public ExcelPropety DepName_Excel = ExcelPropety.CreateProperty(x => x.DepName); + [Display(Name = "_Admin.Parent")] + public ExcelPropety Parent_Excel = ExcelPropety.CreateProperty(x => x.ParentId); + + protected override void InitVM() + { + Parent_Excel.DataType = ColumnDataType.ComboBox; + Parent_Excel.ListItems = DC.Set().GetSelectListItems(Wtm, y => y.DepName); + } + + } + + public class DepartmentImportVM : BaseImportVM + { + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentListVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentListVM.cs new file mode 100644 index 000000000..5bd5d6fae --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentListVM.cs @@ -0,0 +1,58 @@ +using System.ComponentModel.DataAnnotations; +using System; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Models; +using System.Collections.Generic; +using System.Linq; +using WalkingTec.Mvvm.Core.Extensions; + +namespace WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs +{ + public partial class DepartmentListVM : BasePagedListVM + { + protected override List InitGridAction() + { + return new List + { + this.MakeStandardAction("Department", GridActionStandardTypesEnum.Create, Localizer["Sys.Create"],dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.BatchEdit, Localizer["Sys.BatchEdit"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.BatchDelete, Localizer["Sys.BatchDelete"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.Import, Localizer["Sys.Import"], dialogWidth: 800), + this.MakeStandardAction("Department", GridActionStandardTypesEnum.ExportExcel, Localizer["Sys.Export"]), + }; + } + + protected override IEnumerable> InitGridHeader() + { + return new List>{ + this.MakeGridHeader(x => x.DepName), + this.MakeGridHeader(x => x.DepName_view), + this.MakeGridHeaderAction(width: 200) + }; + } + + public override IOrderedQueryable GetSearchQuery() + { + var query = DC.Set() + .CheckContain(Searcher.DepName, x => x.DepName) + .Select(x => new Department_View + { + ID = x.ID, + DepName = x.DepName, + DepName_view = x.Parent.DepName, + }) + .OrderBy(x => x.ID); + return query; + } + } + + public class Department_View : Department + { + [Display(Name = "部门名称")] + public String DepName_view { get; set; } + + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentSearcher.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentSearcher.cs new file mode 100644 index 000000000..188888be2 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentSearcher.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using System; +using WalkingTec.Mvvm.Core; + +namespace WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs +{ + public class DepartmentSearcher : BaseSearcher + { + [Display(Name = "部门名称")] + public String DepName { get; set; } + + protected override void InitVM() + { + } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentVM.cs new file mode 100644 index 000000000..9dfc6f8e3 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/DepartmentVMs/DepartmentVM.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using WalkingTec.Mvvm.Core; +using WalkingTec.Mvvm.Core.Extensions; +using WalkingTec.Mvvm.Core.Models; + +namespace WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs +{ + public partial class DepartmentVM : BaseCRUDVM + { + public List AllParents { get; set; } + + public DepartmentVM() + { + SetInclude(x => x.Parent); + } + + protected override void InitVM() + { + AllParents = DC.Set().GetSelectListItems(Wtm, y => y.DepName); + } + + public override void DoAdd() + { + base.DoAdd(); + } + + public override void DoEdit(bool updateAllFields = false) + { + base.DoEdit(updateAllFields); + } + + public override void DoDelete() + { + base.DoDelete(); + } + + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/FriendInfoVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/FriendInfoVM.cs new file mode 100644 index 000000000..e9c781e27 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/FriendInfoVM.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace WalkingTec.Mvvm.Demo.ViewModels.ImVMs +{ + public class FriendInfoVM + { + public string groupname { get; set; } + + public string id { get; set; } + + public List list { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitDataVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitDataVM.cs new file mode 100644 index 000000000..aee99de9a --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitDataVM.cs @@ -0,0 +1,9 @@ +namespace WalkingTec.Mvvm.Demo.ViewModels.ImVMs +{ + public class ImInitDataVM + { + public int code { get; set; } + public string msg { get; set; } + public ImInitUserDataVM data { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitUserDataVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitUserDataVM.cs new file mode 100644 index 000000000..c666f4da9 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImInitUserDataVM.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace WalkingTec.Mvvm.Demo.ViewModels.ImVMs +{ + public class ImInitUserDataVM + { + public ImUserInfoVM mine { get; set; } + public List friend { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImMsgVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImMsgVM.cs new file mode 100644 index 000000000..1df681600 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImMsgVM.cs @@ -0,0 +1,24 @@ +namespace WalkingTec.Mvvm.Demo.ViewModels.ImVMs +{ + public class ImMsgVM + { + public string username { get; set; } + public string avatar { get; set; } + + public string id { get; set; } + + public string type { get; set; } + + public string content { get; set; } + + public int? cid { get; set; } + + public bool mine { get; set; } + + public string fromid { get; set; } + + public long? timestamp { get; set; } + + public string toid { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImUserInfoVM.cs b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImUserInfoVM.cs new file mode 100644 index 000000000..a93517e29 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/ViewModels/ImVMs/ImUserInfoVM.cs @@ -0,0 +1,14 @@ +namespace WalkingTec.Mvvm.Demo.ViewModels.ImVMs +{ + public class ImUserInfoVM + { + public string username { get; set; } + + public string id { get; set; } + + public string status { get; set; } + public string sign { get; set; } + + public string avatar { get; set; } + } +} diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchDelete.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchDelete.cshtml new file mode 100644 index 000000000..83ba95836 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchDelete.cshtml @@ -0,0 +1,12 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentBatchVM +@inject IStringLocalizer Localizer; + + + @Localizer["Sys.BatchDeleteConfirm"] + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchEdit.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchEdit.cshtml new file mode 100644 index 000000000..5ca6b92c2 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/BatchEdit.cshtml @@ -0,0 +1,15 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentBatchVM +@inject IStringLocalizer Localizer; + + +
@Localizer["Sys.BatchEditConfirm"]
+ + + + + + + + +
+ diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Create.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Create.cshtml new file mode 100644 index 000000000..1ed999fa8 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Create.cshtml @@ -0,0 +1,13 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentVM +@inject IStringLocalizer Localizer; + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Delete.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Delete.cshtml new file mode 100644 index 000000000..42c8613ae --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Delete.cshtml @@ -0,0 +1,16 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentVM +@inject IStringLocalizer Localizer; + + + @Localizer["Sys.DeleteConfirm"] + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Details.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Details.cshtml new file mode 100644 index 000000000..f9517a70c --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Details.cshtml @@ -0,0 +1,13 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentVM +@inject IStringLocalizer Localizer; + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Edit.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Edit.cshtml new file mode 100644 index 000000000..46e5413d8 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Edit.cshtml @@ -0,0 +1,14 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentVM +@inject IStringLocalizer Localizer; + + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Import.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Import.cshtml new file mode 100644 index 000000000..f3a595b33 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Import.cshtml @@ -0,0 +1,15 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentImportVM +@inject IStringLocalizer Localizer; + + + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Department/Index.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Department/Index.cshtml new file mode 100644 index 000000000..2c29f0e64 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/Views/Department/Index.cshtml @@ -0,0 +1,9 @@ +@model WalkingTec.Mvvm.Demo.ViewModels.DepartmentVMs.DepartmentListVM +@inject IStringLocalizer Localizer; + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/Views/Shared/_Layout.cshtml b/demo/WalkingTec.Mvvm.Demo/Views/Shared/_Layout.cshtml index cb754dab7..4920d7cdb 100644 --- a/demo/WalkingTec.Mvvm.Demo/Views/Shared/_Layout.cshtml +++ b/demo/WalkingTec.Mvvm.Demo/Views/Shared/_Layout.cshtml @@ -2,45 +2,175 @@ - - @ViewData["title"] - - - - - - - + + @ViewData["title"] + + + + + + + -
- - - - - - - - - - - - - - - - - @RenderBody() +
+ + + + + + + + + + + + + + + + + + + + + @RenderBody() diff --git a/demo/WalkingTec.Mvvm.Demo/WalkingTec.Mvvm.Demo.csproj b/demo/WalkingTec.Mvvm.Demo/WalkingTec.Mvvm.Demo.csproj index 9670f2b1b..d3ca97e72 100644 --- a/demo/WalkingTec.Mvvm.Demo/WalkingTec.Mvvm.Demo.csproj +++ b/demo/WalkingTec.Mvvm.Demo/WalkingTec.Mvvm.Demo.csproj @@ -25,5 +25,17 @@ + + + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/appsettings.json b/demo/WalkingTec.Mvvm.Demo/appsettings.json index f96b147d9..2ba59c52b 100644 --- a/demo/WalkingTec.Mvvm.Demo/appsettings.json +++ b/demo/WalkingTec.Mvvm.Demo/appsettings.json @@ -22,26 +22,26 @@ }, "Connections": [ - { - "Key": "default", - "Value": "Server=(localdb)\\mssqllocaldb;Database=next;Trusted_Connection=True;MultipleActiveResultSets=true", - "DBType": "sqlserver" - } + //{ + // "Key": "default", + // "Value": "Server=(localdb)\\mssqllocaldb;Database=next;Trusted_Connection=True;MultipleActiveResultSets=true", + // "DBType": "sqlserver" + //} //{ // "Key": "abc", // "Value": "Server=local;Database=next21;Trusted_Connection=True;MultipleActiveResultSets=true", // "DbContext": "DataContext2" //} - //{ - // "Key": "default", - // "Value": "Data Source=./Vehicle_DB", - // "DbContext": "DataContext", - // "DBType": "SQLite" //DataBase, you can choose mysql,sqlserver,pgsql,sqlite,oracle - //} + { + "Key": "default", + "Value": "Data Source=im.db", + "DbContext": "DataContext", + "DBType": "SQLite" //DataBase, you can choose mysql,sqlserver,pgsql,sqlite,oracle + } ], "CookiePre": "WTMa", //cookie前缀 "IsQuickDebug": true, //是否启用debug模式 - "EnableTenant": true, //是否启动多租户 + "EnableTenant": true, //是否启动多租户 "SyncDb": true, //是否自动同步数据库 "EncryptKey": "", //加密密钥 "PageMode": "Tab", //页面显示模式,Single或者Tab @@ -123,7 +123,7 @@ "Address": "https://api.github.com" }, "mainhost": { - // "Address": "https://localhost:5001" + // "Address": "https://localhost:5001" } }, "AppSettings": { diff --git a/demo/WalkingTec.Mvvm.Demo/im.db b/demo/WalkingTec.Mvvm.Demo/im.db new file mode 100644 index 000000000..e2a2455a1 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/im.db differ diff --git a/demo/WalkingTec.Mvvm.Demo/im.db-shm b/demo/WalkingTec.Mvvm.Demo/im.db-shm new file mode 100644 index 000000000..c37948c4e Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/im.db-shm differ diff --git a/demo/WalkingTec.Mvvm.Demo/im.db-wal b/demo/WalkingTec.Mvvm.Demo/im.db-wal new file mode 100644 index 000000000..b087b3e80 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/im.db-wal differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/js/signalr/README.md b/demo/WalkingTec.Mvvm.Demo/wwwroot/js/signalr/README.md new file mode 100644 index 000000000..4339b739c --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/js/signalr/README.md @@ -0,0 +1,85 @@ +JavaScript and TypeScript clients for SignalR for ASP.NET Core and Azure SignalR Service + +## Installation + +```bash +npm install @microsoft/signalr +# or +yarn add @microsoft/signalr +``` + +To try previews of the next version, use the `next` tag on NPM: + +```bash +npm install @microsoft/signalr@next +# or +yarn add @microsoft/signalr@next +``` + +## Usage + +See the [SignalR Documentation](https://docs.microsoft.com/aspnet/core/signalr) at docs.microsoft.com for documentation on the latest release. [API Reference Documentation](https://docs.microsoft.com/javascript/api/%40aspnet/signalr/?view=signalr-js-latest) is also available on docs.microsoft.com. + +For documentation on using this client with Azure SignalR Service and Azure Functions, see the [SignalR Service serverless developer guide](https://docs.microsoft.com/azure/azure-signalr/signalr-concept-serverless-development-config). + +### Browser + +To use the client in a browser, copy `*.js` files from the `dist/browser` folder to your script folder include on your page using the ` + + + diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/find.html b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/find.html new file mode 100644 index 000000000..5a66d6e07 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/find.html @@ -0,0 +1,43 @@ + + + + + + + +发现 + + + + + + +
+
此为自定义的【查找】页面,因需求不一,所以官方暂不提供该模版结构与样式,实际使用时,可移至该文件到你的项目中,对页面自行把控。 +
文件所在目录(相对于layui.js):/layim-assets/html/find.html
+
+ + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/getmsg.json b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/getmsg.json new file mode 100644 index 000000000..c4ef35fa4 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/getmsg.json @@ -0,0 +1,72 @@ +{ + "code": 0, + "pages": 1, + "data": [ + { + "id": 76, + "content": "申请添加你为好友", + "uid": 168, + "from": 166488, + "from_group": 0, + "type": 1, + "remark": "test1", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 166488, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B704597964F9BD0DB648292D1B09F7E8/100", + "username": "测试111", + "sign": null + } + }, + { + "id": 75, + "content": "申请添加你为好友", + "uid": 168, + "from": 347592, + "from_group": 0, + "type": 1, + "remark": "test2", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 347592, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B78751375E0531675B1272AD994BA875/100", + "username": "测试222", + "sign": null + } + }, + { + "id": 62, + "content": "测试333 拒绝了你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + }, + { + "id": 60, + "content": "测试666 已经同意你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + } + ] +} \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/msgbox.html b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/msgbox.html new file mode 100644 index 000000000..f56d0f743 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/html/msgbox.html @@ -0,0 +1,218 @@ + + + + + + + +消息盒子 + + + + + + +
    + +
    +
    注意:这些都是模拟数据,实际使用时,需将其中的模拟接口改为你的项目真实接口。 +
    该模版文件所在目录(相对于 layim.js):/html/msgbox.html
    +
    + + + + + + + + + + diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/default.png b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/default.png new file mode 100644 index 000000000..33c7691aa Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/default.png differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/0.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/0.gif new file mode 100644 index 000000000..a63f0d523 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/0.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/1.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/1.gif new file mode 100644 index 000000000..b2b78b218 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/1.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/10.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/10.gif new file mode 100644 index 000000000..556c7e326 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/10.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/11.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/11.gif new file mode 100644 index 000000000..2bfc58be8 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/11.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/12.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/12.gif new file mode 100644 index 000000000..1c321c7eb Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/12.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/13.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/13.gif new file mode 100644 index 000000000..300bbc2a0 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/13.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/14.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/14.gif new file mode 100644 index 000000000..43b6d0a43 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/14.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/15.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/15.gif new file mode 100644 index 000000000..c9f25fa1d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/15.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/16.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/16.gif new file mode 100644 index 000000000..34f28e4cd Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/16.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/17.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/17.gif new file mode 100644 index 000000000..39cd03538 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/17.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/18.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/18.gif new file mode 100644 index 000000000..7bce2997f Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/18.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/19.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/19.gif new file mode 100644 index 000000000..adac542fd Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/19.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/2.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/2.gif new file mode 100644 index 000000000..7edbb58a8 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/2.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/20.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/20.gif new file mode 100644 index 000000000..50631a6e3 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/20.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/21.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/21.gif new file mode 100644 index 000000000..b98421282 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/21.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/22.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/22.gif new file mode 100644 index 000000000..1f0bd8b00 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/22.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/23.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/23.gif new file mode 100644 index 000000000..e05e0f97a Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/23.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/24.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/24.gif new file mode 100644 index 000000000..f35928a26 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/24.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/25.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/25.gif new file mode 100644 index 000000000..0b4a88322 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/25.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/26.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/26.gif new file mode 100644 index 000000000..45c4fb556 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/26.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/27.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/27.gif new file mode 100644 index 000000000..7a4c0131d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/27.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/28.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/28.gif new file mode 100644 index 000000000..fc5a0cfaf Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/28.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/29.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/29.gif new file mode 100644 index 000000000..5dd7442b1 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/29.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/3.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/3.gif new file mode 100644 index 000000000..86df67b7a Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/3.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/30.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/30.gif new file mode 100644 index 000000000..b751f98ab Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/30.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/31.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/31.gif new file mode 100644 index 000000000..c9476d796 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/31.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/32.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/32.gif new file mode 100644 index 000000000..9931b0636 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/32.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/33.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/33.gif new file mode 100644 index 000000000..59111a38c Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/33.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/34.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/34.gif new file mode 100644 index 000000000..a334548e8 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/34.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/35.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/35.gif new file mode 100644 index 000000000..a9322643d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/35.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/36.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/36.gif new file mode 100644 index 000000000..6de432ae9 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/36.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/37.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/37.gif new file mode 100644 index 000000000..d05f2da45 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/37.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/38.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/38.gif new file mode 100644 index 000000000..8b1c88a3e Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/38.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/39.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/39.gif new file mode 100644 index 000000000..38b84a513 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/39.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/4.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/4.gif new file mode 100644 index 000000000..d52200c51 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/4.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/40.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/40.gif new file mode 100644 index 000000000..ae429912d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/40.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/41.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/41.gif new file mode 100644 index 000000000..b9c715c52 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/41.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/42.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/42.gif new file mode 100644 index 000000000..0eb1434b4 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/42.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/43.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/43.gif new file mode 100644 index 000000000..ac0b70085 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/43.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/44.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/44.gif new file mode 100644 index 000000000..ad4449769 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/44.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/45.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/45.gif new file mode 100644 index 000000000..6837fcaf2 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/45.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/46.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/46.gif new file mode 100644 index 000000000..d62916d40 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/46.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/47.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/47.gif new file mode 100644 index 000000000..58a083611 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/47.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/48.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/48.gif new file mode 100644 index 000000000..7ffd1613b Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/48.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/49.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/49.gif new file mode 100644 index 000000000..959b99296 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/49.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/5.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/5.gif new file mode 100644 index 000000000..4e8b09f15 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/5.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/50.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/50.gif new file mode 100644 index 000000000..6e22e7ff1 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/50.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/51.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/51.gif new file mode 100644 index 000000000..ad3f4d3a8 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/51.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/52.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/52.gif new file mode 100644 index 000000000..39f8a2284 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/52.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/53.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/53.gif new file mode 100644 index 000000000..a181ee778 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/53.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/54.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/54.gif new file mode 100644 index 000000000..e289d929b Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/54.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/55.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/55.gif new file mode 100644 index 000000000..4351083ac Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/55.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/56.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/56.gif new file mode 100644 index 000000000..e0eff222b Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/56.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/57.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/57.gif new file mode 100644 index 000000000..0bf130f0d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/57.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/58.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/58.gif new file mode 100644 index 000000000..0f065087d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/58.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/59.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/59.gif new file mode 100644 index 000000000..7081e4f02 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/59.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/6.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/6.gif new file mode 100644 index 000000000..f7715bf52 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/6.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/60.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/60.gif new file mode 100644 index 000000000..6e15f89d7 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/60.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/61.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/61.gif new file mode 100644 index 000000000..f092d7e35 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/61.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/62.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/62.gif new file mode 100644 index 000000000..7fe49840b Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/62.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/63.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/63.gif new file mode 100644 index 000000000..cf8e23e5b Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/63.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/64.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/64.gif new file mode 100644 index 000000000..a7797198a Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/64.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/65.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/65.gif new file mode 100644 index 000000000..7bb98f2d8 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/65.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/66.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/66.gif new file mode 100644 index 000000000..bb6d07750 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/66.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/67.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/67.gif new file mode 100644 index 000000000..6e33f7c4f Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/67.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/68.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/68.gif new file mode 100644 index 000000000..1a6c400d2 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/68.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/69.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/69.gif new file mode 100644 index 000000000..a02f0b223 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/69.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/7.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/7.gif new file mode 100644 index 000000000..e6d4db805 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/7.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/70.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/70.gif new file mode 100644 index 000000000..416c5c14a Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/70.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/71.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/71.gif new file mode 100644 index 000000000..c17d60cbd Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/71.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/8.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/8.gif new file mode 100644 index 000000000..66f967b48 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/8.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/9.gif b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/9.gif new file mode 100644 index 000000000..60447400d Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/images/face/9.gif differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/layim.css b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/layim.css new file mode 100644 index 000000000..face39b42 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/layim.css @@ -0,0 +1,2 @@ +/** WebIMUI-v3.9.8 */ + html #layuicss-skinlayimcss{display:none;position:absolute;width:1989px}body .layui-layim,body .layui-layim-chat{border:1px solid #D9D9D9;border-color:rgba(0,0,0,.05);background-repeat:no-repeat;background-color:#F6F6F6;color:#333;font-family:\5FAE\8F6F\96C5\9ED1}body .layui-layim-chat{background-size:cover}body .layui-layim .layui-layer-title{height:110px;border-bottom:none;background:0 0}.layui-layim-main{position:relative;top:-98px;left:0}body .layui-layim .layui-layer-content,body .layui-layim-chat .layui-layer-content{overflow:visible}.layui-layim cite,.layui-layim em,.layui-layim-chat cite,.layui-layim-chat em{font-style:normal}.layui-layim-info{height:50px;font-size:0;padding:0 15px}.layui-layim-info *{font-size:14px}.layim-tab-content li h5 *,.layui-layim-info div,.layui-layim-skin li,.layui-layim-tab li,.layui-layim-tool li{display:inline-block;vertical-align:top;*zoom:1;*display:inline}.layim-tab-content li h5 span,.layui-layim-info .layui-layim-user,.layui-layim-list li p,.layui-layim-list li span,.layui-layim-remark{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-layim-info .layui-layim-user{max-width:150px;margin-right:5px;font-size:16px}.layui-layim-status{position:relative;top:2px;line-height:19px;cursor:pointer}.layim-status-online{color:#3FDD86}.layim-status-hide{color:#DD691D}.layim-menu-box{display:none;position:absolute;z-index:100;top:24px;left:-31px;padding:5px 0;width:85px;border:1px solid #E2E2E2;border-radius:2px;background-color:#fff;box-shadow:1px 1px 20px rgba(0,0,0,.1)}.layim-menu-box li{position:relative;line-height:22px;padding-left:30px;font-size:12px}.layim-menu-box li cite{padding-right:5px;font-size:14px}.layim-menu-box li i{display:none;position:absolute;left:8px;top:0;font-weight:700;color:#5FB878}.layim-menu-box .layim-this i{display:block}.layim-menu-box li:hover{background-color:#eee}.layui-layim-remark{position:relative;left:-6px;display:block;width:100%;border:1px solid transparent;margin-top:8px;padding:0 5px;height:26px;line-height:26px;background:0 0;border-radius:2px}.layui-layim-remark:focus,.layui-layim-remark:hover{border:1px solid #d2d2d2;border-color:rgba(0,0,0,.15)}.layui-layim-remark:focus{background-color:#fff}.layui-layim-tab{margin-top:10px;padding:9px 0;font-size:0}.layui-layim-tab li{position:relative;width:33.33%;height:24px;line-height:24px;font-size:22px;text-align:center;color:#666;color:rgba(0,0,0,.6);cursor:pointer}.layim-tab-two li{width:50%}.layui-layim-tab li.layim-this:after{content:'';position:absolute;left:0;bottom:-9px;width:100%;height:3px;background-color:#3FDD86}.layui-layim-tab li.layim-hide{display:none}.layui-layim-tab li:hover{opacity:.8;filter:Alpha(opacity=80)}.layim-tab-content{display:none;padding:10px 0;height:349px;overflow:hidden;background-color:#fff;background-color:rgba(255,255,255,.9)}.layim-tab-content:hover{overflow-y:auto}.layim-tab-content li h5{position:relative;margin-right:15px;padding-left:30px;height:28px;line-height:28px;cursor:pointer;font-size:0;white-space:nowrap;overflow:hidden}.layim-tab-content li h5 *{font-size:14px}.layim-tab-content li h5 span{max-width:125px}.layim-tab-content li h5 i{position:absolute;left:12px;top:0;color:#C9BDBB}.layim-tab-content li h5 em{padding-left:5px;color:#999}.layim-tab-content li h5[lay-type=true] i{top:2px}.layim-tab-content li ul{display:none;margin-bottom:10px}.layui-layim-list li{position:relative;height:42px;padding:5px 15px 5px 60px;font-size:0;cursor:pointer}.layui-layim-list li:hover{background-color:#F2F2F2;background-color:rgba(0,0,0,.05)}.layui-layim-list li.layim-null{height:20px;line-height:20px;padding:0;font-size:14px;color:#999;text-align:center;cursor:default}.layui-layim-list li.layim-null:hover{background:0 0}.layui-layim-list li *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layui-layim-list li span{margin-top:4px;max-width:155px}.layui-layim-list li img{position:absolute;left:15px;top:8px;width:36px;height:36px;border-radius:100%}.layui-layim-list li p{display:block;padding-right:30px;line-height:18px;font-size:12px;color:#999}.layui-layim-list li .layim-msg-status{display:none;position:absolute;right:10px;bottom:7px;padding:0 5px;height:16px;line-height:16px;border-radius:16px;text-align:center;font-size:10px;background-color:#F74C31;color:#fff}.layim-list-gray{-webkit-filter:grayscale(100%);-ms-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.layui-layim-tool{padding:0 10px;font-size:0;background-color:#F6F6F6;border-radius:0 0 2px 2px}.layui-layim-tool li{position:relative;width:48px;height:37px;line-height:40px;text-align:center;font-size:22px;cursor:pointer}.layui-layim-tool li:active{background-color:#e2e2e2}.layui-layim-tool .layim-tool-msgbox{line-height:37px}.layui-layim-tool .layim-tool-find{line-height:38px}.layui-layim-tool .layim-tool-skin{font-size:26px}.layim-tool-msgbox span{display:none;position:absolute;left:12px;top:-12px;height:20px;line-height:20px;padding:0 10px;border-radius:2px;background-color:#33DF83;color:#fff;font-size:12px;-webkit-animation-duration:1s;animation-duration:1s}.layim-tool-msgbox .layer-anim-05{display:block}.layui-layim-search{display:none;position:absolute;bottom:5px;left:5px;height:28px;line-height:28px}.layui-layim-search input{width:210px;padding:0 30px 0 10px;height:30px;line-height:30px;border:none;border-radius:3px;background-color:#ddd}.layui-layim-search label{position:absolute;right:6px;top:4px;font-size:20px;cursor:pointer;color:#333;font-weight:400}.layui-layim-skin{margin:10px 0 0 10px;font-size:0}.layui-layim-skin li{margin:0 10px 10px 0;line-height:60px;text-align:center;background-color:#f6f6f6}.layui-layim-skin li,.layui-layim-skin li img{width:86px;height:60px;cursor:pointer}.layui-layim-skin li img:hover{opacity:.8;filter:Alpha(opacity=80)}.layui-layim-skin li cite{font-size:14px;font-style:normal}body .layui-layim-chat{background-color:#fff}body .layui-layim-chat-list{width:760px}body .layui-layim-chat .layui-layer-title{height:80px;border-bottom:none;background-color:#F8F8F8;background-color:rgba(245,245,245,.7)}body .layui-layim-chat .layui-layer-content{background:0 0}.layim-chat-list li *,.layui-layim-min .layui-layer-content *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layim-chat-list{display:none;position:absolute;z-index:1000;top:-80px;width:200px;height:100%;background-color:#D9D9D9;overflow:hidden;font-size:0}.layim-chat-list:hover{overflow-y:auto}.layim-chat-list li,.layui-layim-min .layui-layer-content{position:relative;margin:5px;padding:5px 30px 5px 5px;line-height:40px;cursor:pointer;border-radius:3px}.layim-chat-list li img,.layui-layim-min .layui-layer-content img{width:40px;height:40px;border-radius:100%}.layui-layim-photos{cursor:crosshair}.layim-chat-list li{white-space:nowrap}.layim-chat-list li span,.layui-layim-min .layui-layer-content span{width:100px;padding-left:10px;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layim-chat-list li span cite{color:#999;padding-left:10px}.layim-chat-list li:hover{background-color:#E2E2E2}.layim-chat-list li.layim-this{background-color:#F3F3F3}.layim-chat-list li .layui-icon{display:none;position:absolute;right:5px;top:7px;color:#555;font-size:22px}.layim-chat-list li .layui-icon:hover{color:#c00}.layim-chat-list li:hover .layui-icon{display:inline-block}.layim-chat-system{margin:10px 0;text-align:center}.layim-chat-system span{display:inline-block;line-height:30px;padding:0 15px;border-radius:3px;background-color:#e2e2e2;cursor:default;font-size:14px}.layim-chat{display:none;position:relative;background-color:#fff;background-color:rgba(255,255,255,.9)}.layim-chat-title{position:absolute;top:-80px;height:80px}.layim-chat-other{position:relative;top:15px;left:15px;padding-left:60px;cursor:default}.layim-chat-other img{position:absolute;left:0;top:0;width:50px;height:50px;border-radius:100%}.layim-chat-username{position:relative;top:5px;font-size:18px}.layim-chat-status{margin-top:6px;font-size:14px;color:#999}.layim-chat-group .layim-chat-other .layim-chat-username{cursor:pointer}.layim-chat-group .layim-chat-other .layim-chat-username em{padding:0 10px;color:#999}.layim-chat-main{height:262px;padding:15px 15px 5px;overflow-x:hidden;overflow-y:auto}.layim-chat-main ul li{position:relative;font-size:0;margin-bottom:10px;padding-left:60px;min-height:68px}.layim-chat-text,.layim-chat-user{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layim-chat-user{position:absolute;left:3px}.layim-chat-user img{width:40px;height:40px;border-radius:100%}.layim-chat-user cite{position:absolute;left:60px;top:-2px;width:500px;line-height:24px;font-size:12px;white-space:nowrap;color:#999;text-align:left;font-style:normal}.layim-chat-user cite i{padding-left:15px;font-style:normal}.layim-chat-text{position:relative;line-height:22px;margin-top:25px;padding:8px 15px;background-color:#e2e2e2;border-radius:3px;color:#333;word-break:break-all;max-width:462px\9}.layim-chat-text:after{content:'';position:absolute;left:-10px;top:13px;width:0;height:0;border-style:solid dashed dashed;border-color:#e2e2e2 transparent transparent;overflow:hidden;border-width:10px}.layim-chat-text a{color:#33DF83}.layim-chat-text img{max-width:100%;vertical-align:middle}.layim-chat-text .layui-layim-file,.layui-layim-file{display:block;text-align:center}.layim-chat-text .layui-layim-file{color:#333}.layui-layim-file:hover{opacity:.9}.layui-layim-file i{font-size:80px;line-height:80px}.layui-layim-file cite{display:block;line-height:20px;font-size:14px}.layui-layim-audio{text-align:center;cursor:pointer}.layui-layim-audio .layui-icon{position:relative;top:5px;font-size:24px}.layui-layim-audio p{margin-top:3px}.layui-layim-video{width:120px;height:80px;line-height:80px;background-color:#333;text-align:center;border-radius:3px}.layui-layim-video .layui-icon{font-size:36px;cursor:pointer;color:#fff}.layim-chat-main ul .layim-chat-system{min-height:0;padding:0}.layim-chat-main ul .layim-chat-mine{text-align:right;padding-left:0;padding-right:60px}.layim-chat-mine .layim-chat-user{left:auto;right:3px}.layim-chat-mine .layim-chat-user cite{left:auto;right:60px;text-align:right}.layim-chat-mine .layim-chat-user cite i{padding-left:0;padding-right:15px}.layim-chat-mine .layim-chat-text{margin-left:0;text-align:left;background-color:#5FB878;color:#fff}.layim-chat-mine .layim-chat-text:after{left:auto;right:-10px;border-top-color:#5FB878}.layim-chat-mine .layim-chat-text a{color:#fff}.layim-chat-footer{border-top:1px solid #F1F1F1}.layim-chat-tool{position:relative;padding:0 8px;height:38px;line-height:38px;font-size:0}.layim-chat-tool span{position:relative;margin:0 10px;display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:24px;cursor:pointer}.layim-chat-tool .layim-tool-log{position:absolute;right:5px;font-size:14px}.layim-tool-log i{position:relative;top:2px;margin-right:5px;font-size:20px;color:#999}.layim-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}body .layui-layim-face{margin:10px 0 0 -18px;border:none;background:0 0}body .layui-layim-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-layim-face .layui-layer-TipsG{display:none}.layui-layim-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-layim-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-layim-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layim-chat-textarea{margin-left:10px}.layim-chat-textarea textarea{display:block;width:100%;padding:5px 0 0;height:68px;line-height:20px;border:none;overflow:auto;resize:none;background:0 0}.layim-chat-textarea textarea:focus{outline:0}.layim-chat-bottom{position:relative;height:46px}.layim-chat-send{position:absolute;right:15px;top:3px;height:32px;line-height:32px;font-size:0;cursor:pointer}.layim-chat-send span{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px;line-height:32px;margin-left:5px;padding:0 20px;background-color:#5FB878;color:#fff;border-radius:3px}.layim-chat-send span:hover{background-color:#69BC80}.layim-chat-send span:active{background-color:#59B573}.layim-chat-send .layim-send-btn{border-radius:3px 0 0 3px}.layim-chat-send .layim-send-set{position:relative;width:30px;height:32px;margin-left:0;padding:0;border-left:1px solid #85C998;border-radius:0 3px 3px 0}.layim-send-set .layui-edge{position:absolute;top:14px;left:9px;border-width:6px;border-top-style:solid;border-top-color:#fff}.layim-chat-send .layim-menu-box{left:auto;right:0;top:33px;width:180px;padding:10px 0}.layim-chat-send .layim-menu-box li{padding-right:15px;line-height:28px}body .layui-layim-min{border:1px solid #D9D9D9}.layui-layim-min .layui-layer-content{margin:0 5px;padding:5px 10px;white-space:nowrap}.layui-layim-close .layui-layer-content span{width:auto;max-width:120px}body .layui-layim-members{margin:25px 0 0 -75px;border:none;background:0 0}body .layui-layim-members .layui-layer-content{padding:0;background:0 0;color:#666;box-shadow:none}.layui-layim-members .layui-layer-TipsG{display:none}.layui-layim-members ul{position:relative;width:578px;height:200px;padding:10px 10px 0;border:1px solid #D9D9D9;background-color:#fff;background-color:rgba(255,255,255,.9);box-shadow:none;overflow:hidden;font-size:0}.layui-layim-members ul:hover{overflow:auto}.layim-add-img,.layim-add-remark,.layui-layim-members li{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layui-layim-members li{width:112px;margin:10px 0;text-align:center}.layui-layim-members li a{position:relative;display:inline-block;max-width:100%}.layui-layim-members li a:after{content:'';position:absolute;width:46px;height:46px;left:50%;margin-left:-23px;top:0;border:1px solid #eee;border-color:rgba(0,0,0,.1);border-radius:100%}.layui-layim-members li img{width:48px;height:48px;border-radius:100%}.layui-layim-members li:hover{opacity:.9}.layui-layim-members li a cite{display:block;padding:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .layui-layim-contextmenu{margin:70px 0 0 30px;width:200px;padding:5px 0;border:1px solid #ccc;background:#fff;border-radius:0;box-shadow:0 0 5px rgba(0,0,0,.2)}body .layui-layim-contextmenu .layui-layer-content{padding:0;background-color:#fff;color:#333;font-size:14px;box-shadow:none}.layui-layim-contextmenu .layui-layer-TipsG{display:none}.layui-layim-contextmenu li{padding:0 15px 0 35px;cursor:pointer;line-height:30px}.layui-layim-contextmenu li:hover{background-color:#F2F2F2}.layim-add-box{margin:15px;font-size:0}.layim-add-img img,.layim-add-remark p{margin-bottom:10px}.layim-add-img{width:100px;margin-right:20px;text-align:center}.layim-add-img img{width:100px;height:100px}.layim-add-remark{width:280px}.layim-add-remark .layui-select{width:100%;margin-bottom:10px}.layim-add-remark .layui-textarea{height:80px;min-height:80px;resize:none}.layim-tab-content,.layui-layim-face ul,.layui-layim-tab{margin-bottom:0}.layim-tab-content li h5{margin-top:0;margin-bottom:0},.layui-layim-face img{vertical-align:bottom}.layim-chat-other span{color:#444}.layim-chat-other span cite{padding:0 15px;color:#999}.layim-chat-other:hover{text-decoration:none} \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/layer-mobile.js b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/layer-mobile.js new file mode 100644 index 000000000..0eb5d52bd --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/layer-mobile.js @@ -0,0 +1,2 @@ +/** WebIMUI-v3.9.8 */ + ;layui.define(function(e){"use strict";var t=(window,document),i="querySelectorAll",n="getElementsByClassName",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var o=0,r=["layui-m-layer"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement("div");e.id=s.id=r[0]+o,s.setAttribute("class",r[0]+" "+r[0]+(i.type||0)),s.setAttribute("index",o);var l=function(){var e="object"==typeof i.title;return i.title?'

    '+(e?i.title[0]:i.title)+"

    ":""}(),d=function(){"string"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e=''+i.btn[0]+"",2===t&&(e=''+i.btn[1]+""+e),'
    '+e+"
    "):""}();if(i.fixed||(i.top=i.hasOwnProperty("top")?i.top:100,i.style=i.style||"",i.style+=" top:"+(t.body.scrollTop+i.top)+"px"),2===i.type&&(i.content='

    '+(i.content||"")+"

    "),i.skin&&(i.anim="up"),"msg"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?"
    ':"")+'
    "+l+'
    '+i.content+"
    "+d+"
    ",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute("index"))}document.body.appendChild(s);var m=e.elem=a("#"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n]("layui-m-layerbtn")[0].children,o=s.length,r=0;r
    {{ data.username||data.groupname||data.name||"\u4f5a\u540d" }}

    {{ data.remark||data.sign||"" }}

    new',"{{# }); if(length === 0){ }}",'
  • '+(i[a.type]||"\u6682\u65e0\u6570\u636e")+"
  • ","{{# } }}"].join("")},p=function(a,i,e){return['
    ','
    ',"

    ",e?'':"",'{{ d.title || d.base.title }}',"{{# if(d.data){ }}",'{{# if(d.data.type === "group"){ }}','',"{{# } }}","{{# } }}","

    ","
    ",'
    ',a,"
    ","
    "].join("")},f=['
    ','
    ','
      ','
        ',y({type:"history"}),"
      ","
    ","
    ",'
    ','
      ',"{{# if(d.base.isNewFriend){ }}",'
    • \u65b0\u7684\u670b\u53cb
    • ',"{{# } if(d.base.isgroup){ }}",'
    • \u7fa4\u804a
    • ',"{{# } }}","
    ",'
      ','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"
    • ",'
      {{# if(spread === "true"){ }}{{# } else { }}{{# } }}{{ item.groupname||"\u672a\u547d\u540d\u5206\u7ec4"+index }}( {{ (item.list||[]).length }})
      ','
        ',y({type:"friend",item:"item.list",index:"index"}),"
      ","
    • ","{{# }); if(d.friend.length === 0){ }}",'
      • \u6682\u65e0\u8054\u7cfb\u4eba
      ',"{{# } }}","
    ","
    ",'
    ','
      ',"{{# layui.each(d.base.moreList, function(index, item){ }}",'
    • ','{{item.iconUnicode||""}}{{item.title}}',"
    • ","{{# }); if(!d.base.copyright){ }}",'
    • \u5173\u4e8e
    • ',"{{# } }}","
    ","
    ","
    ",'
      ','
    • \u6d88\u606f
    • ','
    • \u8054\u7cfb\u4eba
    • ','
    • \u66f4\u591a
    • ',"
    "].join(""),h=['
    ','
    ',"
      ","
      ",'","
      "].join(""),v=function(a){return a<10?"0"+(0|a):a};layui.data.date=function(a){var i=new Date(a||new Date);return v(i.getMonth()+1)+"-"+v(i.getDate())+" "+v(i.getHours())+":"+v(i.getMinutes())},layui.data.content=function(a){var i=function(a){return new RegExp("\\n*\\["+(a||"")+"(pre|div|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return a=(a||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(/@(\S+)(\s+?|$)/g,'@$1$2').replace(/face\[([^\s\[\]]+?)\]/g,function(a){var i=a.replace(/^face/g,"");return''+i+''}).replace(/img\[([^\s]+?)\]/g,function(a){return''}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(/audio\[([^\s]+?)\]/g,function(a){return'

      \u97f3\u9891\u6d88\u606f

      '}).replace(/video\[([^\s]+?)\]/g,function(a){return'
      '}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(i(),"<$1 $2>").replace(i("/"),"").replace(/\n/g,"
      ")};var g,b,x=['
    • ','
      {{ d.uid || d.id }}','{{ d.username||"\u4f5a\u540d" }}',"
      ",'
      {{ layui.data.content(d.content||" ") }}
      ',"
    • "].join(""),w={message:{},chat:[]},C=function(a){var i=a.init||{};return mine=i.mine||{},local=layui.data("layim-mobile")[mine.id]||{},obj={base:a,local:local,mine:mine,history:local.history||[]},create=function(i){var n=i.mine||{},l=layui.data("layim-mobile")[n.id]||{},s={base:a,local:l,mine:n,friend:i.friend||[],group:i.group||[],history:l.history||[]};s.sortHistory=T(s.history,"historyTime"),w=e.extend(w,s),k(t(p(f)).render(s)),layui.each(d.ready,function(a,i){i&&i(s)})},w=e.extend(w,obj),a.brief?layui.each(d.ready,function(a,i){i&&i(obj)}):void create(i)},k=function(a){return n.open({type:1,shade:!1,shadeClose:!1,anim:-1,content:a,success:function(a){g=e(a),N(g.find(".layui-layim")),w.base.tabIndex&&R.tab(e(".layui-layim-tab>li").eq(w.base.tabIndex))}})},A=function(a,i){a=a||{};var l=e.extend({},w,{title:a.title||"",data:a.data});return n.open({type:1,shade:!1,shadeClose:!1,anim:-1,content:t(p(a.tpl,i!==-1,!0)).render(l),success:function(i){var t=e(i);t.prev().find(".layim-panel").addClass("layui-m-anim-lout"),a.success&&a.success(i),a.isChat||N(t.find(".layim-content"))},end:a.end})},S=function(a,i,t){return a=a||{},a.id?(n.close(S.index),S.index=A({tpl:h,data:a,title:a.name,isChat:!0,success:function(i){b=e(i),Y(),F(),delete w.message[a.type+a.id],P("Msg");var t=L(),n=t.elem.find(".layim-chat-main");layui.each(d.chatChange,function(a,i){i&&i(t)}),N(n),t.textarea.on("focus",function(){setTimeout(function(){n.scrollTop(n[0].scrollHeight+1e3)},500)})},end:function(){b=null,H.time=0}},i)):n.msg("\u975e\u6cd5\u7528\u6237")},N=function(a){l.ios&&a.on("touchmove",function(i){var e=a.scrollTop();e<=0&&(a.scrollTop(1),i.preventDefault(i)),this.scrollHeight-e-a.height()<=0&&(a.scrollTop(a.scrollTop()-1),i.preventDefault(i))})},L=function(){if(!b)return{};var a=b.find(".layim-chat"),i=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json")));return{elem:a,data:i,textarea:a.find("input")}},T=function(a,i,e){var t=[],n=function(a,e){var t=a[i],n=e[i];return nt?1:0};return layui.each(a,function(a,i){t.push(i)}),t.sort(n),e&&t.reverse(),t},j=function(a){var i=layui.data("layim-mobile")[w.mine.id]||{},e={},n=i.history||{};n[a.type+a.id];if(g){var l=g.find(".layim-list-history");a.historyTime=(new Date).getTime(),a.sign=a.content,n[a.type+a.id]=a,i.history=n,layui.data("layim-mobile",{key:w.mine.id,value:i});var o=l.find(".layim-"+a.type+a.id),c=(w.message[a.type+a.id]||[]).length,d=function(){o=l.find(".layim-"+a.type+a.id),o.find("p").html(a.content),c>0&&o.find(".layim-msg-status").html(c).addClass(s)};if(o.length>0)d(),l.prepend(o.clone()),o.remove();else{e[a.type+a.id]=a;var r=t(y({type:"history",item:"d.data"})).render({data:e});l.prepend(r),d(),l.find(".layim-null").remove()}P("Msg")}},P=function(a,i){if(!i){var i;layui.each(w.message,function(){return i=!0,!1})}e("#LAY_layimNew"+a)[i?"addClass":"removeClass"](s)},H=function(){var a={username:w.mine?w.mine.username:"\u8bbf\u5ba2",avatar:w.mine?w.mine.avatar:layui.cache.layimAssetsPath+"images/default.png",id:w.mine?w.mine.id:null,mine:!0},i=L(),e=i.elem.find(".layim-chat-main ul"),l=i.data,s=w.base.maxLength||3e3,o=(new Date).getTime(),c=i.textarea;if(a.content=c.val(),""!==a.content){if(a.content.length>s)return n.msg("\u5185\u5bb9\u6700\u957f\u4e0d\u80fd\u8d85\u8fc7"+s+"\u4e2a\u5b57\u7b26");o-(H.time||0)>6e4&&(e.append('
    • '+layui.data.date()+"
    • "),H.time=o),e.append(t(x).render(a));var r={mine:a,to:l},u={username:r.mine.username,avatar:r.mine.avatar||layui.cache.layimAssetsPath+"images/default.png",id:l.id,type:l.type,content:r.mine.content,timestamp:o,mine:!0};_(u),layui.each(d.sendMessage,function(a,i){i&&i(r)}),l.content=a.content,j(l),O(),c.val(""),c.next().addClass("layui-disabled")}},q=function(){var a=document.createElement("audio");a.src=layui.cache.layimAssetsPath+"voice/"+w.base.voice,a.play()},I={},D=function(a){a=a||{};var i={},n=L(),l=n.data||{},s=l.id==a.id&&l.type==a.type;a.timestamp=a.timestamp||(new Date).getTime(),a.system||_(a),console.log(a),I=JSON.parse(JSON.stringify(a)),w.base.voice&&q(),(!b&&a.content||!s)&&(w.message[a.type+a.id]?w.message[a.type+a.id].push(a):w.message[a.type+a.id]=[a]);var i={};if("friend"===a.type){var o;layui.each(w.friend,function(i,e){if(layui.each(e.list,function(i,e){if(e.id==a.id)return a.type="friend",a.name=e.username,o=!0}),o)return!0}),o||(a.temporary=!0)}else"group"===a.type?layui.each(w.group,function(e,t){if(t.id==a.id)return a.type="group",a.name=a.groupname=t.groupname,i.avatar=t.avatar||layui.cache.layimAssetsPath+"images/default.png",!0}):a.name=a.name||a.username||a.groupname;var c=e.extend({},a,{avatar:i.avatar||a.avatar||layui.cache.layimAssetsPath+"images/default.png"});if("group"===a.type&&delete c.username,j(c),b&&s){var d=b.find(".layim-chat"),r=d.find(".layim-chat-main ul");a.system?r.append('
    • '+a.content+"
    • "):""!==a.content.replace(/\s/g,"")&&(a.timestamp-(H.time||0)>6e4&&(r.append('
    • '+layui.data.date(a.timestamp)+"
    • "),H.time=a.timestamp),r.append(t(x).render(a))),O()}},_=function(a){var i=layui.data("layim-mobile")[w.mine.id]||{},e=i.chatlog||{};e[a.type+a.id]?(e[a.type+a.id].push(a),e[a.type+a.id].length>c&&e[a.type+a.id].shift()):e[a.type+a.id]=[a],i.chatlog=e,layui.data("layim-mobile",{key:w.mine.id,value:i})},F=function(){var a=layui.data("layim-mobile")[w.mine.id]||{},i=L(),e=a.chatlog||{},n=i.elem.find(".layim-chat-main ul");layui.each(e[i.data.type+i.data.id],function(a,i){(new Date).getTime()>i.timestamp&&i.timestamp-(H.time||0)>6e4&&(n.append('
    • '+layui.data.date(i.timestamp)+"
    • "),H.time=i.timestamp),n.append(t(x).render(i))}),O()},M=function(a){var i,e={},l=g.find(".layim-list-"+a.type);if(w[a.type])if("friend"===a.type)layui.each(w.friend,function(t,l){if(a.groupid==l.id)return layui.each(w.friend[t].list,function(e,t){if(t.id==a.id)return i=!0}),i?n.msg("\u597d\u53cb ["+(a.username||"")+"] \u5df2\u7ecf\u5b58\u5728\u5217\u8868\u4e2d",{anim:6}):(w.friend[t].list=w.friend[t].list||[],e[w.friend[t].list.length]=a,a.groupIndex=t,w.friend[t].list.push(a),!0)});else if("group"===a.type){if(layui.each(w.group,function(e,t){if(t.id==a.id)return i=!0}),i)return n.msg("\u60a8\u5df2\u662f ["+(a.groupname||"")+"] \u7684\u7fa4\u6210\u5458",{anim:6});e[w.group.length]=a,w.group.push(a)}if(!i){var s=t(y({type:a.type,item:"d.data",index:"friend"===a.type?"data.groupIndex":null})).render({data:e});if("friend"===a.type){var o=l.children("li").eq(a.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(w.friend[a.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===a.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},$=function(a){var i=g.find(".layim-list-"+a.type);w[a.type]&&("friend"===a.type?layui.each(w.friend,function(e,t){layui.each(t.list,function(t,n){if(a.id==n.id){var l=i.children("li").eq(e);l.find(".layui-layim-list").children("li");return l.find(".layui-layim-list").children("li").eq(t).remove(),w.friend[e].list.splice(t,1),l.find(".layim-count").html(w.friend[e].list.length),0===w.friend[e].list.length&&l.find(".layui-layim-list").html('
    • \u8be5\u5206\u7ec4\u4e0b\u5df2\u65e0\u597d\u53cb\u4e86
    • '),!0}})}):"group"===a.type&&layui.each(w.group,function(e,t){if(a.id==t.id)return i.children("li").eq(e).remove(),w.group.splice(e,1),0===w.group.length&&i.html('
    • \u6682\u65e0\u7fa4\u7ec4
    • '),!0}))},O=function(){var a=L(),i=a.elem.find(".layim-chat-main"),e=i.find("ul"),t=e.children(".layim-chat-li");if(t.length>=c){var n=t.eq(0);n.prev().remove(),e.prev().hasClass("layim-chat-system")||e.before('
      \u67e5\u770b\u66f4\u591a\u8bb0\u5f55
      '),n.remove()}i.scrollTop(i[0].scrollHeight+1e3)},Y=function(){var a=L(),i=a.textarea,e=i.next();i.off("keyup").on("keyup",function(a){var t=a.keyCode;13===t&&(a.preventDefault(),H()),e[""===i.val()?"addClass":"removeClass"]("layui-disabled")})},J=function(){var a=["[\u5fae\u7b11]","[\u563b\u563b]","[\u54c8\u54c8]","[\u53ef\u7231]","[\u53ef\u601c]","[\u6316\u9f3b]","[\u5403\u60ca]","[\u5bb3\u7f9e]","[\u6324\u773c]","[\u95ed\u5634]","[\u9119\u89c6]","[\u7231\u4f60]","[\u6cea]","[\u5077\u7b11]","[\u4eb2\u4eb2]","[\u751f\u75c5]","[\u592a\u5f00\u5fc3]","[\u767d\u773c]","[\u53f3\u54fc\u54fc]","[\u5de6\u54fc\u54fc]","[\u5618]","[\u8870]","[\u59d4\u5c48]","[\u5410]","[\u54c8\u6b20]","[\u62b1\u62b1]","[\u6012]","[\u7591\u95ee]","[\u998b\u5634]","[\u62dc\u62dc]","[\u601d\u8003]","[\u6c57]","[\u56f0]","[\u7761]","[\u94b1]","[\u5931\u671b]","[\u9177]","[\u8272]","[\u54fc]","[\u9f13\u638c]","[\u6655]","[\u60b2\u4f24]","[\u6293\u72c2]","[\u9ed1\u7ebf]","[\u9634\u9669]","[\u6012\u9a82]","[\u4e92\u7c89]","[\u5fc3]","[\u4f24\u5fc3]","[\u732a\u5934]","[\u718a\u732b]","[\u5154\u5b50]","[ok]","[\u8036]","[good]","[NO]","[\u8d5e]","[\u6765]","[\u5f31]","[\u8349\u6ce5\u9a6c]","[\u795e\u9a6c]","[\u56e7]","[\u6d6e\u4e91]","[\u7ed9\u529b]","[\u56f4\u89c2]","[\u5a01\u6b66]","[\u5965\u7279\u66fc]","[\u793c\u7269]","[\u949f]","[\u8bdd\u7b52]","[\u8721\u70db]","[\u86cb\u7cd5]"],i={};return layui.each(a,function(a,e){i[e]=layui.cache.layimAssetsPath+"images/face/"+a+".gif"}),i}(),B=layui.stope,E=function(a,i,e){var t,n=a.value;e||a.focus(),document.selection?(t=document.selection.createRange(),document.selection.empty(),t.text=i):(t=[n.substring(0,a.selectionStart),i,n.substr(a.selectionEnd)],e||a.focus(),a.value=t.join(""))},R={chat:function(a){var i=layui.data("layim-mobile")[w.mine.id]||{},t=a.data("type"),n=a.data("index"),l=a.attr("data-list")||a.index(),o={};"friend"===t?o=w[t][n].list[l]:"group"===t?o=w[t][l]:"history"===t&&(o=(i.history||{})[n]||{}),o.name=o.name||o.username||o.groupname,"history"!==t&&(o.type=t),S(o,!0),e(".layim-"+o.type+o.id).find(".layim-msg-status").removeClass(s)},spread:function(a){var i=a.attr("lay-type"),e="true"===i?"false":"true",t=layui.data("layim-mobile")[w.mine.id]||{};a.next()["true"===i?"removeClass":"addClass"](s),t["spread"+a.parent().index()]=e,layui.data("layim-mobile",{key:w.mine.id,value:t}),a.attr("lay-type",e),a.find(".layui-icon").html("true"===e?"":"")},tab:function(a){var i=a.index(),e=".layim-tab-content";a.addClass(o).siblings().removeClass(o),g.find(e).eq(i).addClass(s).siblings(e).removeClass(s)},back:function(a){var i=a.parents(".layui-m-layer").eq(0),e=i.attr("index"),t=".layim-panel";setTimeout(function(){n.close(e)},300),a.parents(t).eq(0).removeClass("layui-m-anim-left").addClass("layui-m-anim-rout"),i.prev().find(t).eq(0).removeClass("layui-m-anim-lout").addClass("layui-m-anim-right"),layui.each(d.back,function(a,i){setTimeout(function(){i&&i()},200)})},send:function(){H()},face:function(a,i){var t="",l=L(),s=l.textarea;layui.each(J,function(a,i){t+='
    • '}),t='
        '+t+"
      ",n.popBottom({content:t,success:function(a){var i=e(a).find(".layui-layim-face").children("li");u(i,function(){return E(s[0],"face"+this.title+" ",!0),s.next()[""===s.val()?"addClass":"removeClass"]("layui-disabled"),!1})}});var o=e(document);m?u(o,function(){R.faceHide()}):o.off("click",R.faceHide).on("click",R.faceHide),B(i)},faceHide:function(){n.close(n.popBottom.index),e(document).off("touchend",R.faceHide).off("click",R.faceHide)},image:function(a){var i=a.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},t=L(),l=w.base[e[i]]||{};layui.upload.render({url:l.url||"",method:l.type,elem:a.find("input")[0],accept:i,done:function(a){0==a.code?(a.data=a.data||{},"images"===i?E(t.textarea[0],"img["+(a.data.src||"")+"]"):"file"===i&&E(t.textarea[0],"file("+(a.data.src||"")+")["+(a.data.name||"\u4e0b\u8f7d\u6587\u4ef6")+"]"),H()):n.msg(a.msg||"\u4e0a\u4f20\u5931\u8d25")}})},extend:function(a){var i=a.attr("lay-filter"),e=L();layui.each(d["tool("+i+")"],function(i,t){t&&t.call(a,function(a){E(e.textarea[0],a)},H,e)})},newFriend:function(){layui.each(d.newFriend,function(a,i){i&&i()})},group:function(){A({title:"\u7fa4\u804a",tpl:['
      ',y({type:"group",item:"d.group"}),"
      "].join(""),data:{}})},detail:function(){var a=L();layui.each(d.detail,function(i,e){e&&e(a.data)})},playAudio:function(a){var i=a.data("audio"),e=i||document.createElement("audio"),t=function(){e.pause(),a.removeAttr("status"),a.find("i").html("")};return a.data("error")?n.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"):e.play?void(a.attr("status")?t():(i||(e.src=a.data("src")),e.play(),a.attr("status","pause"),a.data("audio",e),a.find("i").html(""),e.onended=function(){t()},e.onerror=function(){n.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"),a.data("error",!0),t()})):n.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301audio")},playVideo:function(a){var i=a.data("src"),e=document.createElement("video");return e.play?(n.close(R.playVideo.index),void(R.playVideo.index=n.open({type:1,anim:!1,style:"width: 100%; height: 50%;",content:'
      '}))):n.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301video")},chatLog:function(a){var i=L();layui.each(d.chatlog,function(a,e){e&&e(i.data,i.elem.find(".layim-chat-main>ul"))})},moreList:function(a){var i=a.attr("lay-filter");layui.each(d.moreList,function(a,e){e&&e({alias:i})})},about:function(){n.open({content:'

      \u7248\u672c\uff1a v'+i+"

      ",className:"layim-about",shadeClose:!1,btn:"\u6211\u77e5\u9053\u4e86"})}};a("layim-mobile",new r)}).link(layui.cache.layimAssetsPath+"mobile.css","skinlayim-mobilecss"); \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/zepto.js b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/zepto.js new file mode 100644 index 000000000..6d8e64399 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/lib/zepto.js @@ -0,0 +1,2 @@ +/** WebIMUI-v3.9.8 */ + ;layui.define(function(t){var e=function(){function t(t){return null==t?String(t):J[W.call(t)]||"object"}function e(e){return"function"==t(e)}function n(t){return null!=t&&t==t.window}function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function i(e){return"object"==t(e)}function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&"length"in t&&t.length,r=T.type(t);return"function"!=r&&!n(t)&&("array"==r||0===e||"number"==typeof e&&e>0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),$[t]=n),$[t]}function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n]*>/,R=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=["val","css","html","text","data","width","height","offset"],I=["after","prepend","before","append"],V=L.createElement("table"),_=L.createElement("tr"),B={tr:L.createElement("tbody"),tbody:V,thead:V,tfoot:V,td:_,th:_,"*":L.createElement("div")},U=/complete|loaded|interactive/,X=/^[\w-]*$/,J={},W=J.toString,Y={},G=L.createElement("div"),K={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,"<$1>")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e="*"),a=B[e],a.innerHTML=""+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?"":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i="object"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck("parentNode")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return T(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(q,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,"");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a="";if("string"==t(e))n||0===n?a=c(e)+":"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+":"+f(j,e[j])+";":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if("className"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?" ":"")+S.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===E)return x(this,"");S=x(this),g(this,t,e,S).split(/\s+/g).forEach(function(t){S=S.replace(l(t)," ")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css("margin-top"))||0,n.left-=parseFloat(T(t).css("margin-left"))||0,r.top+=parseFloat(T(e[0]).css("border-top-width"))||0,r.left+=parseFloat(T(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&"static"==T(t).css("position");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a["inner"+e]:r(a)?a.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),"array"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):"object"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+"To":"insert"+(n?"Before":"After")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).forEach(function(e){if("ready"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),"addEventListener"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],"removeEventListener"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return"string"==typeof t},v={},g={},y="onfocusin"in window,x={focus:"focusin",blur:"focusout"},b={mouseenter:"mouseover",mouseleave:"mouseout"};g.click=g.mousedown=g.mouseup=g.mousemove="MouseEvents",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,"ajaxBeforeSend",[t,e])!==!1&&void n(e,r,"ajaxSend",[t,e])}function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,"ajaxSuccess",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,"ajaxError",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComplete",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json":w.test(t)?"script":E.test(t)&&"xml")||"text"}function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()&&"jsonp"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+"["+(s||"object"==o||"array"==o?n:"")+"]"),!i&&a?e.add(u.name,u.value):"array"==o||!r&&"object"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/)<[^<]*)*<\/script>/gi,w=/^(?:text|application)\/javascript/i,E=/^(?:text|application)\/xml/i,j="application/json",T="text/html",S=/^\s*$/,C=x.createElement("a");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!("type"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||"Zepto"+y++,l=x.createElement("script"),f=window[c],h=function(e){t(l).triggerHandler("error",e||"abort")},p={abort:h};return n&&n.promise(p),t(l).on("load error",function(o,u){clearTimeout(i),t(l).off().remove(),"error"!=o.type&&r?a(r[0],p,e,n):s(null,u||"error",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h("abort"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\?(.+)=\?/,"?$1="+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h("timeout")},e.timeout)),p)},t.ajaxSettings={type:"GET",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:j,xml:"application/xml, text/xml",html:T,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement("a"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+"//"+C.host!=n.protocol+"//"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf("#"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\?.+=\?/.test(u.url);if(y&&(m="jsonp"),u.cache!==!1&&(e&&e.cache===!0||"script"!=m&&"jsonp"!=m)||(u.url=h(u.url,"_="+Date.now())),"jsonp"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+"=?":u.jsonp===!1?"":"callback=?")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\w-]+:)\/\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j("X-Requested-With","XMLHttpRequest"),j("Accept",w||"*/*"),(w=u.mimeType||w)&&(w.indexOf(",")>-1&&(w=w.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&"GET"!=u.type.toUpperCase())&&j("Content-Type",u.contentType||"application/x-www-form-urlencoded"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==T){if(m=m||f(u.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),"script"==m?(0,eval)(e):"xml"==m?e=N.responseXML:"json"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,"parsererror",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?"error":"abort",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,"abort",N,u,d),N;var P=!("async"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,"timeout",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t("
      ").html(e.replace(b,"")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(e)+"="+N(n))},m(r,e,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t("zepto",e)}); \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/mobile.css b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/mobile.css new file mode 100644 index 000000000..5a7c113d5 --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/mobile.css @@ -0,0 +1,2 @@ +/** WebIMUI-v3.9.8 */ + .layim-panel,.layui-m-layerchild{-webkit-animation-fill-mode:both}html #layuicss-skinlayim-mobilecss{display:none;position:absolute;width:1989px}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}.layui-inline,input,label{vertical-align:middle}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layim-chat-main,.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important}.layui-border-box,.layui-border-box *{box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge,.layui-upload-iframe{position:absolute;width:0;height:0}.layui-edge{border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009E94;background-color:#009E94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layim-tab-content li h5 span,.layui-layim-list li p,.layui-layim-list li span,.layui-m-layerbtn span,.layui-m-layerchild h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;border-radius:0 0 5px 5px;text-align:center}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layim-tab-content li h5,.layui-layim-list li{border-bottom:1px solid #f2f2f2;cursor:pointer}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}.layim-tab-content li h5 *,.layui-layim-skin li,.layui-layim-tab li,.layui-layim-tool li{display:inline-block;vertical-align:top;*zoom:1;*display:inline}.layui-layim-tab{position:absolute;bottom:0;left:0;right:0;height:50px;border-top:1px solid #f2f2f2;background-color:#fff}.layui-layim-tab li{position:relative;width:33.33%;height:50px;text-align:center;color:#666;color:rgba(0,0,0,.6);cursor:pointer}.layui-layim-tab li .layui-icon{position:relative;top:7px;font-size:25px}.layui-layim-tab li span{position:relative;bottom:-3px;display:block;font-size:12px}.layui-layim-tab li[lay-type=more] .layui-icon{top:4px;font-size:22px}.layui-layim-tab li.layim-this{color:#3FDD86}.layim-new{display:none;position:absolute;top:5px;left:50%;margin-left:15px;width:10px;height:10px;border-radius:10px;background-color:#F74C31;color:#fff}.layim-list-top .layim-new{position:relative;vertical-align:top;top:10px;left:initial;margin-left:5px}.layim-list-top i.layui-show{display:inline-block!important}.layim-tab-content,.layim-tab-content li ul{display:none}.layui-layim{position:fixed;left:0;right:0;top:50px;bottom:50px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.layim-tab-content li h5{position:relative;padding-left:35px;height:45px;line-height:45px;font-size:0;white-space:nowrap;overflow:hidden}.layim-tab-content li h5 *{font-size:17px}.layim-tab-content li h5 span{max-width:80%}.layim-tab-content li h5 i{position:absolute;left:12px;top:0;color:#C9BDBB}.layim-tab-content li h5 em{padding-left:5px;color:#999}.layim-list-friend,.layim-list-group{background-color:#fff}.layui-layim-list li{position:relative;height:42px;padding:5px 15px 5px 60px;font-size:0}.layui-layim-list li:active{background-color:#F2F2F2;background-color:rgba(0,0,0,.05)}.layui-layim-list li.layim-null{height:20px;line-height:20px;padding:10px 0;color:#999;text-align:center;cursor:default;font-size:14px}.layim-list-history li.layim-null{padding:30px 0;border-bottom:none;background-color:#eee}.layui-layim-list li *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:17px}.layui-layim-list li span{margin-top:2px;max-width:155px;font-size:17px}.layui-layim-list li img{position:absolute;left:12px;top:8px;width:36px;height:36px;border-radius:100%}.layui-layim-list li p{display:block;padding-right:30px;line-height:18px;font-size:13px;color:#999}.layui-layim-list li .layim-msg-status{display:none;position:absolute;right:10px;bottom:7px;padding:0 5px;height:17px;line-height:17px;border-radius:17px;text-align:center;font-size:10px;background-color:#F74C31;color:#fff}.layim-list-gray{-webkit-filter:grayscale(100%);-ms-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.layim-list-top{background-color:#fff;font-size:17px}.layim-list-top li{position:relative;padding:0 15px 0 50px;line-height:45px;border-bottom:1px solid #f2f2f2;cursor:pointer}.layim-list-top li:last-child{margin-bottom:10px;border-bottom:none}.layim-list-top li .layui-icon{position:absolute;left:12px;top:0;margin-right:10px;color:#36373C;font-size:24px}.layim-list-top li[layim-event=newFriend] .layui-icon{left:15px}.layim-panel,.layim-title{position:fixed;left:0;right:0;top:0}.layim-list-top li[layim-event=group] .layui-icon{font-size:20px}.layim-list-top li[layim-event=about] .layui-icon{font-size:25px}.layim-panel{bottom:0;background-color:#eee;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layim-title{height:50px;line-height:50px;padding:0 15px;background-color:#36373C;color:#fff;font-size:18px}.layim-chat-status{padding-left:15px;font-size:14px;opacity:.7}.layim-title .layim-chat-back{display:inline-block;vertical-align:middle;position:relative;padding:0 15px;margin-left:-10px;top:0;font-size:24px;cursor:pointer}.layim-chat-detail{position:absolute;right:0;top:0;padding:0 15px;font-size:18px;cursor:pointer}.layim-chat-main,.layim-content{position:fixed;top:50px;left:0;right:0;overflow-y:auto;overflow-x:hidden}.layim-chat-detail:active,.layim-title .layim-chat-back:active{opacity:.8}.layui-layim .layim-title{text-align:left}.layui-layim .layim-title p{padding:0 15px}.layim-content{bottom:0}.layim-chat-main{width:100%;bottom:85px;padding:15px;box-sizing:border-box!important}.layim-chat-main ul{overflow-x:hidden}.layim-chat-main ul li{position:relative;font-size:0;margin-bottom:10px;padding-left:60px;min-height:68px}.layim-chat-text,.layim-chat-user{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:15px}.layim-chat-user{position:absolute;left:3px}.layim-chat-user img{width:40px;height:40px;border-radius:100%}.layim-chat-user cite{position:absolute;left:60px;top:-2px;width:500px;line-height:24px;font-size:12px;white-space:nowrap;color:#999;text-align:left;font-style:normal}.layim-chat-user cite i{padding-left:15px;font-style:normal}.layim-chat-text{position:relative;min-height:22px;line-height:22px;margin-top:25px;padding:8px 15px;background-color:#fff;border-radius:3px;color:#333;word-break:break-all}.layim-chat-text:after{content:'';position:absolute;left:-10px;top:13px;width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;border-width:10px}.layim-chat-text a{color:#33DF83}.layim-chat-text img{max-width:100%;vertical-align:middle}.layim-chat-text .layui-layim-file,.layui-layim-file{display:block;text-align:center}.layim-chat-text .layui-layim-file{color:#333}.layui-layim-file:active{opacity:.9}.layui-layim-file i{font-size:80px;line-height:80px}.layui-layim-file cite{display:block;line-height:20px;font-size:17px}.layui-layim-audio{text-align:center;cursor:pointer}.layui-layim-audio .layui-icon{position:relative;top:5px;font-size:24px}.layui-layim-audio p{margin-top:3px}.layui-layim-video{width:120px;height:80px;line-height:80px;background-color:#333;text-align:center;border-radius:3px}.layui-layim-video .layui-icon{font-size:36px;cursor:pointer;color:#fff}.layim-chat-main ul .layim-chat-mine{text-align:right;padding-left:0;padding-right:60px}.layim-chat-mine .layim-chat-user{left:auto;right:3px}.layim-chat-mine .layim-chat-user cite{left:auto;right:60px;text-align:right}.layim-chat-mine .layim-chat-user cite i{padding-left:0;padding-right:15px}.layim-chat-mine .layim-chat-text{margin-left:0;text-align:left;background-color:#5FB878;color:#fff}.layim-chat-mine .layim-chat-text:after{left:auto;right:-10px;border-top-color:#5FB878}.layim-chat-mine .layim-chat-text a{color:#fff}.layim-chat-main ul .layim-chat-system{min-height:0;margin:20px 0 5px;padding:0}.layim-chat-system{margin:10px 0;text-align:center}.layim-chat-system span{display:inline-block;line-height:30px;padding:0 15px;border-radius:3px;background-color:#ddd;color:#fff;font-size:14px;cursor:pointer}.layim-chat-footer{position:fixed;bottom:0;left:10px;right:10px;height:80px}.layim-chat-send{display:-webkit-box;display:-webkit-flex;display:flex}.layim-chat-send input{-webkit-box-flex:1;-webkit-flex:1;flex:1;height:40px;padding-left:5px;border:0;background-color:#fff;border-radius:3px}.layim-chat-send button{border-radius:3px;height:40px;padding:0 20px;border:0;margin-left:10px;background-color:#5FB878;color:#fff}.layim-chat-tool{position:relative;width:100%;overflow-x:auto;padding:0;height:38px;line-height:38px;margin-top:3px;font-size:0;white-space:nowrap}.layim-chat-tool span{position:relative;margin:0 15px;display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:28px;cursor:pointer}.layim-chat-tool .layim-tool-log{position:absolute;right:5px;font-size:14px}.layim-tool-log i{position:relative;top:2px;margin-right:5px;font-size:20px;color:#999}.layim-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layim-layer{position:fixed;bottom:85px;left:10px;right:10px;margin:0 auto}.layui-layim-face{position:relative;max-height:180px;overflow:auto;padding:10px;font-size:0}.layui-layim-face li{cursor:pointer;display:inline-block;vertical-align:bottom;padding:5px 2px;text-align:center;width:10%;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-layim-face li img{width:22px;height:22px}.layim-about{font-size:17px}.layim-about .layui-m-layercont{text-align:left}.layim-about .layui-m-layercont p{line-height:30px}.layim-about .layui-m-layercont a{color:#01AAED} \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/1.jpg b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/1.jpg new file mode 100644 index 000000000..60f6a154e Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/1.jpg differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/2.jpg b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/2.jpg new file mode 100644 index 000000000..0bffb50b0 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/2.jpg differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/3.jpg b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/3.jpg new file mode 100644 index 000000000..53ba92162 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/3.jpg differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/4.jpg b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/4.jpg new file mode 100644 index 000000000..83b47388c Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/4.jpg differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/5.jpg b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/5.jpg new file mode 100644 index 000000000..f0e3b3691 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/skin/5.jpg differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/voice/default.mp3 b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/voice/default.mp3 new file mode 100644 index 000000000..90013c5a2 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim-assets/voice/default.mp3 differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim.js b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim.js new file mode 100644 index 000000000..98d7a3daa --- /dev/null +++ b/demo/WalkingTec.Mvvm.Demo/wwwroot/layuiadmin/layim/dist/layim.js @@ -0,0 +1,3 @@ +/** WebIMUI-v3.9.8 */ + ;layui.define(["layer","laytpl","upload"],function(a){var i="3.9.8",e=layui.$,t=layui.layer,n=layui.laytpl,l=layui.device(),s="layui-show",o="layim-this",d=20,u={},c=function(){this.v=i,e("body").on("click","*[layim-event]",function(a){var i=e(this),t=i.attr("layim-event");ta[t]?ta[t].call(this,i,a):""})};c.prototype.config=function(a){var i=[];if(layui.each(Array(5),function(a){i.push(layui.cache.layimAssetsPath+"skin/"+(a+1)+".jpg")}),a=a||{},a.skin=a.skin||[],layui.each(a.skin,function(a,e){i.unshift(e)}),a.skin=i,a=e.extend({isfriend:!0,isgroup:!0,voice:"default.mp3"},a),window.JSON&&window.JSON.parse)return P(a),this},c.prototype.on=function(a,i){return"function"==typeof i&&(u[a]?u[a].push(i):u[a]=[i]),this},c.prototype.cache=function(){return S},c.prototype.chat=function(a){if(window.JSON&&window.JSON.parse)return T(a),this},c.prototype.setChatMin=function(){return I(),this},c.prototype.setChatStatus=function(a){var i=q();if(i){var e=i.elem.find(".layim-chat-status");return e.html(a),this}},c.prototype.getMessage=function(a){return G(a),this},c.prototype.notice=function(a){return D(a),this},c.prototype.add=function(a){return N(a),this},c.prototype.setFriendGroup=function(a){return N(a,"setGroup"),this},c.prototype.msgbox=function(a){return Y(a),this},c.prototype.addList=function(a){return U(a),this},c.prototype.removeList=function(a){return W(a),this},c.prototype.setFriendStatus=function(a,i){var t=e(".layim-friend"+a);t["online"===i?"removeClass":"addClass"]("layim-list-gray")},c.prototype.content=function(a){return layui.data.content(a)};var r=function(a){var i={friend:"\u8be5\u5206\u7ec4\u4e0b\u6682\u65e0\u597d\u53cb",group:"\u6682\u65e0\u7fa4\u7ec4",history:"\u6682\u65e0\u5386\u53f2\u4f1a\u8bdd"};return a=a||{},a.item=a.item||"d."+a.type,["{{# var length = 0; layui.each("+a.item+", function(i, data){ length++; }}",'
    • {{ data.username||data.groupname||data.name||"\u4f5a\u540d" }}

      {{ data.remark||data.sign||"" }}

      new
    • ',"{{# }); if(length === 0){ }}",'
    • '+(i[a.type]||"\u6682\u65e0\u6570\u636e")+"
    • ","{{# } }}"].join("")},y=['
      ','
      ','
      {{ d.mine.username }}
      ','
      ','{{# if(d.mine.status === "online"){ }}','','{{# } else if(d.mine.status === "hide") { }}','',"{{# } }}",'
        ','
      • \u5728\u7ebf
      • ','
      • \u9690\u8eab
      • ',"
      ","
      ",'',"
      ",'
        ','
      • ','
      • ','
      • ',"
      ",'
        ','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"
      • ",'
        {{# if(spread === "true"){ }}{{# } else { }}{{# } }}{{ item.groupname||"\u672a\u547d\u540d\u5206\u7ec4"+index }}( {{ (item.list||[]).length }})
        ','
          ',r({type:"friend",item:"item.list",index:"index"}),"
        ","
      • ","{{# }); if(d.friend.length === 0){ }}",'
        • \u6682\u65e0\u8054\u7cfb\u4eba
        ',"{{# } }}","
      ",'
        ',"
      • ",'
          ',r({type:"group"}),"
        ","
      • ","
      ",'
        ',"
      • ",'
          ',r({type:"history"}),"
        ","
      • ","
      ",'
        ',"
      • ",'',"
      • ","
      ",'
        ','',"{{# if(d.base.msgbox){ }}",'
      • ',"{{# } }}","{{# if(d.base.find){ }}",'
      • ',"{{# } }}",'
      • ',"{{# if(!d.base.copyright){ }}",'
      • ',"{{# } }}","
      ",'',"
      "].join(""),m=['
        ',"{{# layui.each(d.skin, function(index, item){ }}",'
      • ',"{{# }); }}",'
      • \u7b80\u7ea6
      • ',"
      "].join(""),f=['
      ','
      ','
      ','{{ d.data.name||"\u4f5a\u540d" }} {{d.data.temporary ? "\u4e34\u65f6\u4f1a\u8bdd" : ""}} {{# if(d.data.type==="group"){ }} {{# } }}','

      ',"
      ","
      ",'
      ',"
        ","
        ",'","
        "].join(""),p=['
        ','

        {{ d.data.name||"" }}

        ','
        ','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"

        \u9009\u62e9\u5206\u7ec4

        ",'{{# } if(d.data.type === "friend"){ }}','","{{# } }}",'{{# if(d.data.type === "group"){ }}',"

        \u8bf7\u8f93\u5165\u9a8c\u8bc1\u4fe1\u606f

        ",'{{# } if(d.type !== "setGroup"){ }}','',"{{# } }}","
        ","
        "].join(""),h=['
      • ','
        ',"{{# if(d.mine){ }}",'{{ layui.data.date(d.timestamp) }}{{ d.username||"\u4f5a\u540d" }}',"{{# } else { }}",'{{ d.username||"\u4f5a\u540d" }}{{ layui.data.date(d.timestamp) }}',"{{# } }}","
        ",'
        {{ layui.data.content(d.content||" ") }}
        ',"
      • "].join(""),g='
      • {{ d.data.name||"\u4f5a\u540d" }}{{# if(!d.base.brief){ }}{{# } }}
      • ',v=function(a){return a<10?"0"+(0|a):a};layui.data.date=function(a){var i=new Date(a||new Date);return i.getFullYear()+"-"+v(i.getMonth()+1)+"-"+v(i.getDate())+" "+v(i.getHours())+":"+v(i.getMinutes())+":"+v(i.getSeconds())},layui.data.content=function(a){var i=function(a){return new RegExp("\\n*\\["+(a||"")+"(code|pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")};return a=(a||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(/@(\S+)(\s+?|$)/g,'@$1$2').replace(/face\[([^\s\[\]]+?)\]/g,function(a){var i=a.replace(/^face/g,"");return''+i+''}).replace(/img\[([^\s]+?)\]/g,function(a){return''}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(/audio\[([^\s]+?)\]/g,function(a){return'

        \u97f3\u9891\u6d88\u606f

        '}).replace(/video\[([^\s]+?)\]/g,function(a){return'
        '}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(i(),"<$1 $2>").replace(i("/"),"").replace(/\n/g,"
        ")};var x,b,w,k,C,A=function(a,i,n){return a=a||{},e.ajax({url:a.url,type:a.type||"get",data:a.data,dataType:a.dataType||"json",headers:a.headers||{},cache:!1,success:function(a){0==a.code?i&&i(a.data||{}):t.msg(a.msg||(n||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(a,i){window.console&&console.log&&console.error("LAYIM_DATE_ERROR\uff1a"+i)}})},S={message:{},chat:[]},P=function(a){var i=a.init||{};return mine=i.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:a,local:local,mine:mine,history:local.history||{}},create=function(i){var t=i.mine||{},l=layui.data("layim")[t.id]||{},s={base:a,local:l,mine:t,friend:i.friend||[],group:i.group||[],history:l.history||{}};S=e.extend(S,s),H(n(y).render(s)),(l.close||a.min)&&L(),layui.each(u.ready,function(a,i){i&&i(s)})},S=e.extend(S,obj),a.brief?layui.each(u.ready,function(a,i){i&&i(obj)}):void(i.url?A(i,create,"INIT"):create(i))},H=function(a){return t.open({type:1,area:["260px","520px"],skin:"layui-box layui-layim",title:"​",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:a,success:function(a){x=a,R(a),S.base.right&&a.css("margin-left","-"+S.base.right),b&&t.close(b.attr("times"));var i=[],n=a.find(".layim-list-history");n.find("li").each(function(){i.push(e(this).prop("outerHTML"))}),i.length>0&&(i.reverse(),n.html(i.join(""))),j(),ta.sign()},cancel:function(a){L();var i=layui.data("layim")[S.mine.id]||{};return i.close=!0,layui.data("layim",{key:S.mine.id,value:i}),!1}})},j=function(){x.on("contextmenu",function(a){return a.cancelBubble=!0,a.returnValue=!1,!1});var a=function(){t.closeAll("tips")};x.find(".layim-list-history").on("contextmenu","li",function(i){var n=e(this),l='
        • \u79fb\u9664\u8be5\u4f1a\u8bdd
        • \u6e05\u7a7a\u5168\u90e8\u4f1a\u8bdd\u5217\u8868
        ';n.hasClass("layim-null")||(t.tips(l,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(a){var i=function(a){aa(a)};a.off("mousedown",i).on("mousedown",i)}}),e(document).off("mousedown",a).on("mousedown",a),e(window).off("resize",a).on("resize",a))})},L=function(a){return b&&t.close(b.attr("times")),x&&x.hide(),S.mine=S.mine||{},t.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:''+(a||S.base.title||"\u6211\u7684 IM")+"",move:"#layui-layim-close img",success:function(a,i){b=a,S.base.right&&a.css("margin-left","-"+S.base.right),a.on("click",function(){t.close(i),x.show();var a=layui.data("layim")[S.mine.id]||{};delete a.close,layui.data("layim",{key:S.mine.id,value:a})})}})},T=function(a){a=a||{};var i=e("#layui-layim-chat"),l={data:a,base:S.base,local:S.local};if(!a.id)return t.msg("\u975e\u6cd5\u7528\u6237");if(i[0]){var s=w.find(".layim-chat-list"),o=s.find(".layim-chatlist-"+a.type+a.id),d=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),c=i.children(".layim-chat-box");return"none"===w.css("display")&&w.show(),k&&t.close(k.attr("times")),1!==s.find("li").length||o[0]||(d||w.css("width",800),s.css({height:w.height()}).show(),c.css("margin-left","200px")),o[0]||(s.append(n(g).render(l)),c.append(n(f).render(l)),z(a),E()),M(s.find(".layim-chatlist-"+a.type+a.id)),o[0]||B(),_(a),Q(),C}l.first=!0;var r=C=t.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"​",shade:!1,maxmin:!0,offset:a.offset||"auto",anim:a.anim||0,closeBtn:!S.base.brief&&1,content:n('
          '+g+'
        '+f+"
        ").render(l),success:function(i){w=i,i.css({"min-width":"500px","min-height":"420px"}),z(a),"function"==typeof a.success&&a.success(i),Q(),R(i),_(a),B(),O(),layui.each(u.chatChange,function(a,i){i&&i(q())}),i.on("dblclick",".layui-layim-photos",function(){var a=this.src;t.close(T.photosIndex),t.photos({photos:{data:[{alt:"\u5927\u56fe\u6a21\u5f0f",src:a}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(a,i){T.photosIndex=i}})})},full:function(a){t.style(r,{width:"100%",height:"100%"},!0),E()},resizing:E,restore:E,min:function(){return I(),!1},end:function(){t.closeAll("tips"),w=null}});return r},z=function(a){e(".layim-"+a.type+a.id).each(function(){e(this).hasClass("layim-list-gray")&&layui.layim.setFriendStatus(a.id,"offline")})},E=function(){var a=w.find(".layim-chat-list"),i=w.find(".layim-chat-main"),e=w.height();a.css({height:e}),i.css({height:e-20-80-158})},I=function(a){var i=a||q().data,n=layui.layim.cache().base;w&&!a&&w.hide(),t.close(I.index),I.index=t.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:i.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","50px"],content:''+i.name+"",success:function(i,l){a||(k=i),n.minRight&&t.style(l,{left:e(window).width()-i.outerWidth()-parseFloat(n.minRight)}),i.find(".layui-layer-content span").on("click",function(){t.close(l),a?layui.each(S.chat,function(a,i){T(i)}):w.show(),a&&(S.chat=[],Z())}),i.find(".layui-layer-content img").on("click",function(a){aa(a)})}})},N=function(a,i){return a=a||{},t.close(N.index),N.index=t.open({type:1,area:"430px",title:{friend:"\u6dfb\u52a0\u597d\u53cb",group:"\u52a0\u5165\u7fa4\u7ec4"}[a.type]||"",shade:!1,resize:!1,btn:i?["\u786e\u8ba4","\u53d6\u6d88"]:["\u53d1\u9001\u7533\u8bf7","\u5173\u95ed"],content:n(p).render({data:{name:a.username||a.groupname,avatar:a.avatar||layui.cache.layimAssetsPath+"images/default.png",group:a.group||parent.layui.layim.cache().friend||[],type:a.type},type:i}),yes:function(e,t){var n=t.find("#LAY_layimGroup"),l=t.find("#LAY_layimRemark");i?a.submit&&a.submit(n.val(),e):a.submit&&a.submit(n.val(),l.val(),e)}})},M=function(a,i){a=a||e(".layim-chat-list ."+o);var n=a.index()===-1?0:a.index(),l=".layim-chat",d=w.find(l).eq(n),c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(i){a.hasClass(o)&&M(0===n?a.next():a.prev());var r=w.find(l).length;return 1===r?t.close(C):(a.remove(),d.remove(),2===r&&(w.find(".layim-chat-list").hide(),c||w.css("width","600px"),w.find(".layim-chat-box").css("margin-left",0)),!1)}a.addClass(o).siblings().removeClass(o),d.addClass(s).siblings(l).removeClass(s),d.find("textarea").focus(),layui.each(u.chatChange,function(a,i){i&&i(q())}),O()},O=function(){var a=q(),i=S.message[a.data.type+a.data.id];i&&delete S.message[a.data.type+a.data.id]},q=c.prototype.thisChat=function(){if(w){var a=e(".layim-chat-list ."+o).index(),i=w.find(".layim-chat").eq(a),t=JSON.parse(decodeURIComponent(i.find(".layim-chat-tool").data("json")));return{elem:i,data:t,textarea:i.find("textarea")}}},R=function(a){var i=layui.data("layim")[S.mine.id]||{},e=i.skin;a.css({"background-image":e?"url("+e+")":function(){return S.base.initSkin?"url("+(layui.cache.layimAssetsPath+"skin/"+S.base.initSkin)+")":"none"}()})},_=function(a){var i=layui.data("layim")[S.mine.id]||{},e={},t=i.history||{},l=t[a.type+a.id];if(x){var s=x.find(".layim-list-history");if(a.historyTime=(new Date).getTime(),t[a.type+a.id]=a,i.history=t,layui.data("layim",{key:S.mine.id,value:i}),!l){e[a.type+a.id]=a;var o=n(r({type:"history",item:"d.data"})).render({data:e});s.prepend(o),s.find(".layim-null").remove()}}},$=function(){var a={username:S.mine?S.mine.username:"\u8bbf\u5ba2",avatar:S.mine?S.mine.avatar:layui.cache.layimAssetsPath+"images/default.png",id:S.mine?S.mine.id:null,mine:!0},i=q(),e=i.elem.find(".layim-chat-main ul"),l=S.base.maxLength||3e3;if(a.content=i.textarea.val(),""!==a.content.replace(/\s/g,"")){if(a.content.length>l)return t.msg("\u5185\u5bb9\u6700\u957f\u4e0d\u80fd\u8d85\u8fc7"+l+"\u4e2a\u5b57\u7b26");e.append(n(h).render(a));var s={mine:a,to:i.data},o={username:s.mine.username,avatar:s.mine.avatar||layui.cache.layimAssetsPath+"images/default.png",id:s.to.id,type:s.to.type,content:s.mine.content,timestamp:(new Date).getTime(),mine:!0};V(o),layui.each(u.sendMessage,function(a,i){i&&i(s)})}Z(),i.textarea.val("").focus()},D=function(a){if(a=a||{},window.Notification)if("granted"===Notification.permission){new Notification(a.title||"",{body:a.content||"",icon:a.avatar||layui.cache.layimAssetsPath+"images/default.png"})}else Notification.requestPermission()},J=function(){if(!(l.ie&&l.ie<9)){var a=document.createElement("audio");a.src=layui.cache.layimAssetsPath+"voice/"+S.base.voice,a.play()}},F={},G=function(a){a=a||{};var i=e(".layim-chatlist-"+a.type+a.id),t={},l=i.index();if(a.timestamp=a.timestamp||(new Date).getTime(),a.fromid==S.mine.id&&(a.mine=!0),a.system||V(a),F=JSON.parse(JSON.stringify(a)),S.base.voice&&J(),!w&&a.content||l===-1){if(S.message[a.type+a.id])S.message[a.type+a.id].push(a);else if(S.message[a.type+a.id]=[a],"friend"===a.type){var s;layui.each(S.friend,function(i,e){if(layui.each(e.list,function(i,e){if(e.id==a.id)return e.type="friend",e.name=e.username,S.chat.push(e),s=!0}),s)return!0}),s||(a.name=a.username,a.temporary=!0,S.chat.push(a))}else if("group"===a.type){var o;layui.each(S.group,function(i,e){if(e.id==a.id)return e.type="group",e.name=e.groupname,S.chat.push(e),o=!0}),o||(a.name=a.groupname,S.chat.push(a))}else a.name=a.name||a.username||a.groupname,S.chat.push(a);if("group"===a.type&&layui.each(S.group,function(i,e){if(e.id==a.id)return t.avatar=e.avatar||layui.cache.layimAssetsPath+"images/default.png",!0}),!a.system)return S.base.notice&&D({title:"\u6765\u81ea "+a.username+" \u7684\u6d88\u606f",content:a.content,avatar:t.avatar||a.avatar||layui.cache.layimAssetsPath+"images/default.png"}),I({name:"\u6536\u5230\u65b0\u6d88\u606f",avatar:t.avatar||a.avatar||layui.cache.layimAssetsPath+"images/default.png",anim:6})}if(w){var d=q();d.data.type+d.data.id!==a.type+a.id&&(i.addClass("layui-anim layer-anim-06"),setTimeout(function(){i.removeClass("layui-anim layer-anim-06")},300));var u=w.find(".layim-chat").eq(l),c=u.find(".layim-chat-main ul");a.system?l!==-1&&c.append('
      • '+a.content+"
      • "):""!==a.content.replace(/\s/g,"")&&c.append(n(h).render(a)),Z()}},K="layui-anim-loop layer-anim-05",Y=function(a){var i=x.find(".layim-tool-msgbox");i.find("span").addClass(K).html(a)},V=function(a){var i=layui.data("layim")[S.mine.id]||{};i.chatlog=i.chatlog||{};var e=i.chatlog[a.type+a.id];if(e){var t;layui.each(e,function(i,e){e.timestamp===a.timestamp&&e.type===a.type&&e.id===a.id&&e.content===a.content&&(t=!0)}),t||a.fromid==S.mine.id||e.push(a),e.length>d&&e.shift()}else i.chatlog[a.type+a.id]=[a];layui.data("layim",{key:S.mine.id,value:i})},B=function(){var a=layui.data("layim")[S.mine.id]||{},i=q(),e=a.chatlog||{},t=i.elem.find(".layim-chat-main ul");layui.each(e[i.data.type+i.data.id],function(a,i){t.append(n(h).render(i))}),Z()},U=function(a){var i,e={},l=x.find(".layim-list-"+a.type);if(S[a.type])if("friend"===a.type)layui.each(S.friend,function(n,l){if(a.groupid==l.id)return layui.each(S.friend[n].list,function(e,t){if(t.id==a.id)return i=!0}),i?t.msg("\u597d\u53cb ["+(a.username||"")+"] \u5df2\u7ecf\u5b58\u5728\u5217\u8868\u4e2d",{anim:6}):(S.friend[n].list=S.friend[n].list||[],e[S.friend[n].list.length]=a,a.groupIndex=n,S.friend[n].list.push(a),!0)});else if("group"===a.type){if(layui.each(S.group,function(e,t){if(t.id==a.id)return i=!0}),i)return t.msg("\u60a8\u5df2\u662f ["+(a.groupname||"")+"] \u7684\u7fa4\u6210\u5458",{anim:6});e[S.group.length]=a,S.group.push(a)}if(!i){var s=n(r({type:a.type,item:"d.data",index:"friend"===a.type?"data.groupIndex":null})).render({data:e});if("friend"===a.type){var o=l.find(">li").eq(a.groupIndex);o.find(".layui-layim-list").append(s),o.find(".layim-count").html(S.friend[a.groupIndex].list.length),o.find(".layim-null")[0]&&o.find(".layim-null").remove()}else"group"===a.type&&(l.append(s),l.find(".layim-null")[0]&&l.find(".layim-null").remove())}},W=function(a){var i=x.find(".layim-list-"+a.type);S[a.type]&&("friend"===a.type?layui.each(S.friend,function(e,t){layui.each(t.list,function(t,n){if(a.id==n.id){var l=i.find(">li").eq(e);l.find(".layui-layim-list>li");return l.find(".layui-layim-list>li").eq(t).remove(),S.friend[e].list.splice(t,1),l.find(".layim-count").html(S.friend[e].list.length),0===S.friend[e].list.length&&l.find(".layui-layim-list").html('
      • \u8be5\u5206\u7ec4\u4e0b\u5df2\u65e0\u597d\u53cb\u4e86
      • '),!0}})}):"group"===a.type&&layui.each(S.group,function(e,t){if(a.id==t.id)return i.find(">li").eq(e).remove(),S.group.splice(e,1),0===S.group.length&&i.html('
      • \u6682\u65e0\u7fa4\u7ec4
      • '),!0}))},Z=function(){var a=q(),i=a.elem.find(".layim-chat-main"),e=i.find("ul"),t=e.find("li").length;if(t>=d){var n=e.find("li").eq(0);e.prev().hasClass("layim-chat-system")||e.before('
        \u67e5\u770b\u66f4\u591a\u8bb0\u5f55
        '),t>d&&n.remove()}i.scrollTop(i[0].scrollHeight+1e3),i.find("ul li:last").find("img").load(function(){i.scrollTop(i[0].scrollHeight+1e3)})},Q=function(){var a=q(),i=a.textarea;i.focus(),i.off("keydown").on("keydown",function(a){var e=layui.data("layim")[S.mine.id]||{},t=a.keyCode;if("Ctrl+Enter"===e.sendHotKey)return void(a.ctrlKey&&13===t&&$());if(13===t){if(a.ctrlKey)return i.val(i.val()+"\n");if(a.shiftKey)return;a.preventDefault(),$()}})},X=function(){var a=["[\u5fae\u7b11]","[\u563b\u563b]","[\u54c8\u54c8]","[\u53ef\u7231]","[\u53ef\u601c]","[\u6316\u9f3b]","[\u5403\u60ca]","[\u5bb3\u7f9e]","[\u6324\u773c]","[\u95ed\u5634]","[\u9119\u89c6]","[\u7231\u4f60]","[\u6cea]","[\u5077\u7b11]","[\u4eb2\u4eb2]","[\u751f\u75c5]","[\u592a\u5f00\u5fc3]","[\u767d\u773c]","[\u53f3\u54fc\u54fc]","[\u5de6\u54fc\u54fc]","[\u5618]","[\u8870]","[\u59d4\u5c48]","[\u5410]","[\u54c8\u6b20]","[\u62b1\u62b1]","[\u6012]","[\u7591\u95ee]","[\u998b\u5634]","[\u62dc\u62dc]","[\u601d\u8003]","[\u6c57]","[\u56f0]","[\u7761]","[\u94b1]","[\u5931\u671b]","[\u9177]","[\u8272]","[\u54fc]","[\u9f13\u638c]","[\u6655]","[\u60b2\u4f24]","[\u6293\u72c2]","[\u9ed1\u7ebf]","[\u9634\u9669]","[\u6012\u9a82]","[\u4e92\u7c89]","[\u5fc3]","[\u4f24\u5fc3]","[\u732a\u5934]","[\u718a\u732b]","[\u5154\u5b50]","[ok]","[\u8036]","[good]","[NO]","[\u8d5e]","[\u6765]","[\u5f31]","[\u8349\u6ce5\u9a6c]","[\u795e\u9a6c]","[\u56e7]","[\u6d6e\u4e91]","[\u7ed9\u529b]","[\u56f4\u89c2]","[\u5a01\u6b66]","[\u5965\u7279\u66fc]","[\u793c\u7269]","[\u949f]","[\u8bdd\u7b52]","[\u8721\u70db]","[\u86cb\u7cd5]"],i={};return layui.each(a,function(a,e){i[e]=layui.cache.layimAssetsPath+"images/face/"+a+".gif"}),i}(),aa=layui.stope,ia=function(a,i){var e,t=a.value;a.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=i):(e=[t.substring(0,a.selectionStart),i,t.substr(a.selectionEnd)],a.focus(),a.value=e.join(""))},ea="layui-anim-upbit",ta={status:function(a,i){var t=function(){a.next().hide().removeClass(ea)},n=a.attr("lay-type");if("show"===n)aa(i),a.next().show().addClass(ea),e(document).off("click",t).on("click",t);else{var l=a.parent().prev();a.addClass(o).siblings().removeClass(o),l.html(a.find("cite").html()),l.removeClass("layim-status-"+("online"===n?"hide":"online")).addClass("layim-status-"+n),layui.each(u.online,function(a,i){i&&i(n)})}},sign:function(){var a=x.find(".layui-layim-remark");a.on("change",function(){var a=this.value;layui.each(u.sign,function(i,e){e&&e(a)})}),a.on("keyup",function(a){var i=a.keyCode;13===i&&this.blur()})},tab:function(a){var i,e=".layim-tab-content",t=x.find(".layui-layim-tab>li");"number"==typeof a?(i=a,a=t.eq(i)):i=a.index(),i>2?t.removeClass(o):(ta.tab.index=i,a.addClass(o).siblings().removeClass(o)),x.find(e).eq(i).addClass(s).siblings(e).removeClass(s)},spread:function(a){var i=a.attr("lay-type"),e="true"===i?"false":"true",t=layui.data("layim")[S.mine.id]||{};a.next()["true"===i?"removeClass":"addClass"](s),t["spread"+a.parent().index()]=e,layui.data("layim",{key:S.mine.id,value:t}),a.attr("lay-type",e),a.find(".layui-icon").html("true"===e?"":"")},search:function(a){var i=x.find(".layui-layim-search"),e=x.find("#layui-layim-search"),t=i.find("input"),n=function(a){var i=t.val().replace(/\s/);if(""===i)ta.tab(0|ta.tab.index);else{for(var n=[],l=S.friend||[],s=S.group||[],o="",d=0;d0)for(var r=0;r'+(n[r].username||n[r].groupname||"\u4f5a\u540d")+"

        "+(n[r].remark||n[r].sign||"")+"

        ";else o='
      • \u65e0\u641c\u7d22\u7ed3\u679c
      • ';e.html(o),ta.tab(3)}};!S.base.isfriend&&S.base.isgroup?ta.tab.index=1:S.base.isfriend||S.base.isgroup||(ta.tab.index=2),i.show(),t.focus(),t.off("keyup",n).on("keyup",n)},closeSearch:function(a){a.parent().hide(),ta.tab(0|ta.tab.index)},msgbox:function(){var a=x.find(".layim-tool-msgbox");return t.close(ta.msgbox.index),a.find("span").removeClass(K).html(""),ta.msgbox.index=t.open({type:2,title:"\u6d88\u606f\u76d2\u5b50",shade:!1,maxmin:!0,area:["600px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:S.base.msgbox})},find:function(){return t.close(ta.find.index),ta.find.index=t.open({type:2,title:"\u67e5\u627e",shade:!1,maxmin:!0,area:["1000px","520px"],skin:"layui-box layui-layer-border",resize:!1,content:S.base.find})},skin:function(){t.open({type:1,title:"\u66f4\u6362\u80cc\u666f",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:n(m).render({skin:S.base.skin})})},about:function(){t.alert("\u7248\u672c\uff1a v"+i,{title:"\u5173\u4e8e",shade:!1})},setSkin:function(a){var i=a.attr("src"),e=layui.data("layim")[S.mine.id]||{};e.skin=i,i||delete e.skin,layui.data("layim",{key:S.mine.id,value:e});try{x.css({"background-image":i?"url("+i+")":"none"}),w.css({"background-image":i?"url("+i+")":"none"})}catch(t){}layui.each(u.setSkin,function(a,e){var t=(i||"").replace(layui.cache.layimAssetsPath+"skin/","");e&&e(t,i)})},chat:function(a){var i=layui.data("layim")[S.mine.id]||{},e=a.data("type"),t=a.data("index"),n=a.attr("data-list")||a.index(),l={}; +"friend"===e?l=S[e][t].list[n]:"group"===e?l=S[e][n]:"history"===e&&(l=(i.history||{})[t]||{}),l.name=l.name||l.username||l.groupname,"history"!==e&&(l.type=e),T(l)},tabChat:function(a){M(a)},closeChat:function(a,i){M(a.parent(),1),aa(i)},closeThisChat:function(){M(null,1)},groupMembers:function(a,i){var n=a.find(".layui-icon"),l=function(){n.html(""),a.data("down",null),t.close(ta.groupMembers.index)},s=function(a){aa(a)};a.data("down")?l():(n.html(""),a.data("down",!0),ta.groupMembers.index=t.tips('
          ',a,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(i){var t=S.base.members||{},n=q(),s=i.find(".layim-members-list"),o="",d={},c=w.find(".layui-layer-max").hasClass("layui-layer-maxmin"),r="none"===w.find(".layim-chat-list").css("display");c&&s.css({width:e(window).width()-22-(r||200)}),t.data=e.extend(t.data,{id:n.data.id}),A(t,function(i){layui.each(i.list,function(a,i){o+='
        • '+i.username+"
        • ",d[i.id]=i}),s.html(o),a.find(".layim-chat-members").html(i.members||(i.list||[]).length+"\u4eba"),s.find("li").on("click",function(){var a=e(this).data("uid"),i=d[a];T({name:i.username,type:"friend",avatar:i.avatar||layui.cache.layimAssetsPath+"images/default.png",id:i.id}),l()}),layui.each(u.members,function(a,e){e&&e(i)})}),i.on("mousedown",function(a){aa(a)})}}),e(document).off("mousedown",l).on("mousedown",l),e(window).off("resize",l).on("resize",l),a.off("mousedown",s).on("mousedown",s))},send:function(){$()},setSend:function(a,i){var t=ta.setSend.box=a.siblings(".layim-menu-box"),n=a.attr("lay-type");if("show"===n)aa(i),t.show().addClass(ea),e(document).off("click",ta.setSendHide).on("click",ta.setSendHide);else{a.addClass(o).siblings().removeClass(o);var l=layui.data("layim")[S.mine.id]||{};l.sendHotKey=n,layui.data("layim",{key:S.mine.id,value:l}),ta.setSendHide(i,a.parent())}},setSendHide:function(a,i){(i||ta.setSend.box).hide().removeClass(ea)},face:function(a,i){var n="",l=q();for(var s in X)n+='
        • ';n='
            '+n+"
          ",ta.face.index=t.tips(n,a,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(a){a.find(".layim-face-list>li").on("mousedown",function(a){aa(a)}).on("click",function(){ia(l.textarea[0],"face"+this.title+" "),t.close(ta.face.index)})}}),e(document).off("mousedown",ta.faceHide).on("mousedown",ta.faceHide),e(window).off("resize",ta.faceHide).on("resize",ta.faceHide),aa(i)},faceHide:function(){t.close(ta.face.index)},image:function(a){var i=a.data("type")||"images",e={images:"uploadImage",file:"uploadFile"},n=q(),l=S.base[e[i]]||{};layui.upload.render({url:l.url||"",method:l.type,elem:a.find("input")[0],accept:i,done:function(a){0==a.code?(a.data=a.data||{},"images"===i?ia(n.textarea[0],"img["+(a.data.src||"")+"]"):"file"===i&&ia(n.textarea[0],"file("+(a.data.src||"")+")["+(a.data.name||"\u4e0b\u8f7d\u6587\u4ef6")+"]"),$()):t.msg(a.msg||"\u4e0a\u4f20\u5931\u8d25")}})},media:function(a){var i=a.data("type"),n={audio:"\u97f3\u9891",video:"\u89c6\u9891"},l=q();t.prompt({title:"\u8bf7\u8f93\u5165\u7f51\u7edc"+n[i]+"\u5730\u5740",shade:!1,offset:[a.offset().top-e(window).scrollTop()-158+"px",a.offset().left+"px"]},function(a,e){ia(l.textarea[0],i+"["+a+"]"),$(),t.close(e)})},extend:function(a){var i=a.attr("lay-filter"),e=q();layui.each(u["tool("+i+")"],function(i,t){t&&t.call(a,function(a){ia(e.textarea[0],a)},$,e)})},playAudio:function(a){var i=a.data("audio"),e=i||document.createElement("audio"),n=function(){e.pause(),a.removeAttr("status"),a.find("i").html("")};return a.data("error")?t.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"):e.play?void(a.attr("status")?n():(i||(e.src=a.data("src")),e.play(),a.attr("status","pause"),a.data("audio",e),a.find("i").html(""),e.onended=function(){n()},e.onerror=function(){t.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"),a.data("error",!0),n()})):t.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301audio")},playVideo:function(a){var i=a.data("src"),e=document.createElement("video");return e.play?(t.close(ta.playVideo.index),void(ta.playVideo.index=t.open({type:1,title:"\u64ad\u653e\u89c6\u9891",area:["460px","300px"],maxmin:!0,shade:!1,content:'
          '}))):t.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301video")},chatLog:function(a){var i=q();return S.base.chatLog?(t.close(ta.chatLog.index),ta.chatLog.index=t.open({type:2,maxmin:!0,title:"\u4e0e "+i.data.name+" \u7684\u804a\u5929\u8bb0\u5f55",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:S.base.chatLog+"?id="+i.data.id+"&type="+i.data.type})):t.msg("\u672a\u5f00\u542f\u66f4\u591a\u804a\u5929\u8bb0\u5f55")},menuHistory:function(a,i){var n=layui.data("layim")[S.mine.id]||{},l=a.parent(),s=a.data("type"),o=x.find(".layim-list-history"),d='
        • \u6682\u65e0\u5386\u53f2\u4f1a\u8bdd
        • ';if("one"===s){var u=n.history;delete u[l.data("index")],n.history=u,layui.data("layim",{key:S.mine.id,value:n}),e(".layim-list-history li.layim-"+l.data("index")).remove(),0===o.find("li").length&&o.html(d)}else"all"===s&&(delete n.history,layui.data("layim",{key:S.mine.id,value:n}),o.html(d));t.closeAll("tips")}};a("layim",new c)}).link(layui.cache.layimAssetsPath+"layim.css","skinlayimcss"); \ No newline at end of file diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/upload/2022-12-03/23e853f183234ab094f4dfc883536b60.png b/demo/WalkingTec.Mvvm.Demo/wwwroot/upload/2022-12-03/23e853f183234ab094f4dfc883536b60.png new file mode 100644 index 000000000..bc1af14a1 Binary files /dev/null and b/demo/WalkingTec.Mvvm.Demo/wwwroot/upload/2022-12-03/23e853f183234ab094f4dfc883536b60.png differ diff --git a/demo/WalkingTec.Mvvm.Demo/wwwroot/upload/2022-12-03/65d4d274f78d46eea0d074b80c756369.txt b/demo/WalkingTec.Mvvm.Demo/wwwroot/upload/2022-12-03/65d4d274f78d46eea0d074b80c756369.txt new file mode 100644 index 000000000..e69de29bb diff --git a/demo/WalkingTec.Mvvm.Vue3Demo/WalkingTec.Mvvm.Vue3Demo.csproj b/demo/WalkingTec.Mvvm.Vue3Demo/WalkingTec.Mvvm.Vue3Demo.csproj index 52b2bea6e..f0e71b986 100644 --- a/demo/WalkingTec.Mvvm.Vue3Demo/WalkingTec.Mvvm.Vue3Demo.csproj +++ b/demo/WalkingTec.Mvvm.Vue3Demo/WalkingTec.Mvvm.Vue3Demo.csproj @@ -34,7 +34,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/WalkingTec.Mvvm.Core/Models/Department.cs b/src/WalkingTec.Mvvm.Core/Models/Department.cs new file mode 100644 index 000000000..79663286b --- /dev/null +++ b/src/WalkingTec.Mvvm.Core/Models/Department.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WalkingTec.Mvvm.Core.Models +{ + public class Department : TreePoco + { + [Display(Name = "部门名称")] + [Required(ErrorMessage = "{0}是必填项")] + public string DepName { get; set; } + } +} diff --git a/version.props b/version.props index 67f6be4ce..e7c1969b2 100644 --- a/version.props +++ b/version.props @@ -1,6 +1,6 @@ - 6.3.10 + 6.3.9