"_createItem": function(item,serviceTime,feeds) { var htmlStr, itemEl, feedData; var elEl = this.element, listEl = $('.fs-worktodo-list-inner', elEl); htmlStr = worktodoItemCompiled({ "workToDoListID":item.workToDoListID, "feedID": item.feedID, "isCompleted": item.isCompleted, "isImportant": item.isImportant, "title": item.title.replace(/\n/g,'<br/>'), "createTime": util.getDateSummaryDesc(moment.unix(item.createTime),moment.unix(serviceTime), 1), "isBelongToMe":loginUserData.id==item.creatorID?true:false, //是否属于自己创建的待办 "creatorID":item.creatorID, "creatorName":item.creatorName }); itemEl = $(htmlStr); feedData= _.find(feeds,function(itemData){ return itemData.feedID==item.feedID; }); item.feed=feedData; itemEl.data('store', item).appendTo(listEl); if (feedData) { this._createFeedV(itemEl,serviceTime); } return itemEl; },
_.each(locations, function(item, n) { var slocation = item.country + item.province + item.city + item.district + item.street + item.streetNumber; var createTime = util.getDateSummaryDesc(moment.unix(item.createTime), moment.unix(responseData.serviceTime), 2); //时间 var listNum = n + 1; var slocation = slocation; newItems.push(_.extend({},item,{ "createTime":createTime, "listNum":listNum, "slocation":slocation })); });
"renderArchiveBar": function(archiveData, itemData) { var archive = archiveData; var htmlStr = ""; var archiveTime, fmarchiveTime, archiveTag, archiveRemindHtml; if (!archive) { htmlStr = ""; } else { archiveTime = archive.archiveTime; //fmarchiveTime = moment.unix(archiveTime).from(moment.unix(itemData.serviceTime)); fmarchiveTime = util.getDateSummaryDesc(moment.unix(archiveTime), moment.unix(itemData.serviceTime), 1); archiveTag = ""; _.each(archive.tags, function(archivetag) { archiveTag += '<span class="ar-tip"><a href="javascript:void(0);">' + archivetag.tagName + '</a></span>'; }); archiveRemindHtml = '<div class="archive-remind"><span class="ar-time">归档于:' + fmarchiveTime + '</span><span class="ar-tit">标签:</span>' + archiveTag + '<span class="ar-modfiy"><a href="javascript:void(0);">修改</a></span></div>'; htmlStr = archiveRemindHtml; } return htmlStr; }
"tipTpl":function(itemData){ var address=that._addressHelper(itemData); return '<h3 style="margin-bottom: 15px;">'+address+'</h3><p style="color:#999999;">'+util.getDateSummaryDesc(moment.unix(itemData.createTime),new Date(),2)+'</p>'; }
_.each(items, function (item, index) { feedid = item.feedReplyID; senderName = item.sender.name; employeeID = item.sender.employeeID; profileImage = item.sender.profileImage; ctime = util.getDateSummaryDesc(moment.unix(item.createTime), moment.unix(responseData.serviceTime), 1); // feedText = pinLink(item.replyContent, item); //判断回复人是不是自己 if (employeeID == currentUserData.employeeID) { senderName = '我'; } else { senderName = item.sender.name; } /* 正文格式化 */ var feedFormatContent = formatFeedContent(300, item); var feedFormatContentOpenBtn = ''; var contentEllipsis = ''; var feedTextAll = feedFormatContent.leftHtml; //没截取过的正文 feedText = feedFormatContent.summaryHtml; //截取过的正文 //添加展开收起按钮 if (feedTextAll.length > 0) { contentEllipsis = '<span class="feed-content-lefthtml hide">' + feedTextAll + '</span><span class="feed-content-ellipsis">…</span>'; feedFormatContentOpenBtn = '<br/><br/><a href="javascript:;" class="feed-reply-content-visible-h" feedwordnum="' + feedFormatContent.feedWordNum + '"> 展开正文(共' + feedFormatContent.feedWordNum + '个字)</a>'; } /* 来自哪里 */ if (item.source != 1) { sourceDescription = ',来自' + item.sourceDescription; } /* 操作类型 */ switch (data.feedType) { case 1: //分享 operationTypeStr = ''; break; case 2: //日志 if (util.getPlanOperationType(item.operationType)) { operationTypeStr = ',' + util.getPlanOperationType(item.operationType); } else { operationTypeStr = ''; } break; case 3: //指令 if (util.getWorkOperationTypeName(item.operationType)) { operationTypeStr = ',' + util.getWorkOperationTypeName(item.operationType); } else { operationTypeStr = ''; } break; case 4: //审批 if (util.getApproveOperationTypeName(item.operationType)) { operationTypeStr = ',' + util.getApproveOperationTypeName(item.operationType); } else { operationTypeStr = ''; } break; default: operationTypeStr = ''; break; } feedreplylistStr += '<div class="fs-reply-list-wrapper fn-clear preview-reply-list-item"><div class="reply-item fs-list-item"> <div class="item-face"> <a href="#profile/=/empid-' + employeeID + '"> <img src="' + util.getAvatarLink(profileImage, '3') + '" alt=""></a> </div> <div class="item-detail" feedid="' + feedid + '" employeeid="' + employeeID + '"> <div class="item-info"> <div> <a href="#profile/=/empid-' + employeeID + '" class="aj-senderName" name="' + item.sender.name + '">' + senderName + '</a>:<span class="feed-summary-text">' + feedText + '</span>' + contentEllipsis + '(' + ctime + operationTypeStr + sourceDescription + ')' + feedFormatContentOpenBtn + '</div></div> <div class="item-func myreply preview-feed"> <div class="handle"> <a href="javascript:void(0);" class="aj-replysubmit-sub">回复</a> </div> </div> </div> </div></div>'; });
formatMessageData = function (msg, sessionData, tmpls) { var content = msg.content, messageTypes = constants.messageType, httpReg = constants.httpReg, o = { typeName: '', senderId: msg.senderId, senderName: msg.senderName, messageId: msg.messageId, messageTime: msg.messageTime, profileImage: msg.profileImage, createTime: util.getDateSummaryDesc(moment.unix(msg.messageTime / 1000), moment.unix(msg.serviceTime), 1) }; for (var i in messageTypes) { if (messageTypes.hasOwnProperty(i) && messageTypes[i] == msg.messageType) { o.typeName = i; } } if (!content) return; switch (msg.messageType) { case messageTypes.image: content = json.parse(content); content.FileSize = util.getFileSize(content.FileSize); content.ThumbnailUrl = util.getFileUrl(content.Thumbnail); content.fileName = content.N; _.extend(o, content); break; case messageTypes.document: content = json.parse(content); content.Size = util.getFileSize(content.Size); content.FileType = util.getFileType({"name": content.File}, true); content.DownloadUrl = util.getFileUrl(content.File, true, content.Name); _.extend(o, content); break; case messageTypes.audio: content = json.parse(content); content.File = util.getFileUrl(content.File); _.extend(o, content); break; case messageTypes.location: content = json.parse(content); content.messageTime = parseInt(o.messageTime / 1000, 10); _.extend(o, content); break; case messageTypes.workNotice: // 工作提醒 content = json.parse(content); _.extend(o, { "title": content.T, "desc": content.C, "feedid": content.F }); break; case messageTypes.systemPrompt: content = json.parse(content); var systemPrompt = constants.systemPrompt, t = content.T, u = content.U, _html = [], _s = ''; switch (t) { case systemPrompt.exit: _s = '退出群对话'; break; case systemPrompt.invite: _s = '邀请'; _.each(content.A, function (id) { var _n; if(id == loginUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "加入群对话"; break; case systemPrompt.kick: _s = '将'; _.each(content.A, function (id) { var _n; if(id == loginUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "移出群对话"; break; case systemPrompt.name: if (content.V) { _s = "将群对话的名称修改为:" + content.V; } else { _s = "取消了群对话名称"; } break; } o.content = _s; break; case messageTypes.text: default: content = content.replace(/</g, '<').replace(/>/g, '>').replace(/[\n\r]/g, '<br/>').replace(new RegExp(' ', 'g'), ' '); content = content.replace(httpReg, function (httpText) { var protocolReg = /https{0,1}|ftp/gi; return '<a href="' + (protocolReg.test(httpText) ? '' : 'http://') + httpText + '" target="_blank">' + httpText + '</a>'; }); content = util.emoji(content); o.content = content; } if (tmpls) { return tmpls[o.typeName](o); } return o; },
getMessageHtml = function (tmpl, msg) { var content = msg.content, messageTypes = constants.messageType, httpReg = new RegExp("(http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?|www\\.[a-z0-9\\-]+(\\.[a-zA-Z]{2,4}){1,2}(:\\d+)?/?", "gi"), //用于判断文本内容超链接 o = { typeName: '', senderId: msg.senderId, senderName: msg.senderName, messageId: msg.messageId, messageTime: msg.messageTime, profileImage: msg.profileImage, createTime: util.getDateSummaryDesc(moment.unix(msg.messageTime/1000), moment.unix(msg.serviceTime), 1) }; for (var i in messageTypes) { if (messageTypes.hasOwnProperty(i) && messageTypes[i] == msg.messageType) { o.typeName = i; } } if(!content) return ; switch (msg.messageType) { case messageTypes.emotion://大表情 var objContent = json.parse(content);//转换为JSON对象 var directoryStr=objContent.PackId+'/'; var imgNameStr='fs_bee_'+(objContent.Index-1)+'.gif'; var imgStr='<img class="fs-img-emotion" src="'+FS.ASSETS_PATH+'/images/'+directoryStr+imgNameStr+'">'; o.content = imgStr; break; case messageTypes.image: content = json.parse(content); content.FileSize = util.getFileSize(content.FileSize); content.ThumbnailUrl = util.getFileUrl(content.Thumbnail); content.fileName = content.N; _.extend(o, content); break; case messageTypes.document: content = json.parse(content); content.Size = util.getFileSize(content.Size); content.FileType = util.getFileType({"name": content.File}, true); content.DownloadUrl = util.getFileUrl(content.File, content.Name, true); _.extend(o, content); break; case messageTypes.audio: content = json.parse(content); content.File = getMp3Url(content.File); _.extend(o, content); break; case messageTypes.location: content = json.parse(content); content.messageTime = parseInt(o.messageTime/1000, 10); _.extend(o, content); break; case messageTypes.workNotice: // 工作提醒 content = json.parse(content); _.extend(o, { "title": content.T, "desc": content.C, "feedid": content.F }); break; case messageTypes.linkWorkItem: // 链接到工作项 content = json.parse(content); var title = { 'P1': '日志', 'P2': '周计划', 'P3': '月计划', 'A1': '普通审批', 'A2': '请假单', 'A3': '报销单', 'A4': '差旅单', 'A5': '借款单', 'W': '指令' }; var _t = ''; if(content.T == 'W'){ _t = title['W']; } else { if(content.T == 'P' && content.ST == 1){ _t = moment(content.D).format('MM月DD日的日志'); } else { _t = title[content.T + content.ST]; } } _.extend(o, { "title": _t, "desc": content.C, "feedid": content.F }); break; case messageTypes.linkWorkSchdule: // 链接到日程 content = json.parse(content); _.extend(o, { "title": moment(content.ST).format('MM月DD日 HH:mm的日程'), "desc": content.C, "feedid": content.F }); break; case messageTypes.systemPrompt: content = json.parse(content); var systemPrompt = constants.systemPrompt, t = content.T, u = content.U, _html = [], _s = ''; switch (t) { case systemPrompt.exit: _s = '退出群对话'; break; case systemPrompt.invite: _s = '邀请'; _.each(content.A, function (id) { if(id == u) return ; var _n; if(id == currentUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "加入群对话"; break; case systemPrompt.kick: _s = '将'; _.each(content.A, function (id) { if(id == u) return ; var _n; if(id == currentUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "移出群对话"; break; case systemPrompt.name: if(content.V){ _s = "将群对话的名称修改为:" + content.V; } else { _s = "取消了群对话名称"; } break; } o.content = _s; break; case messageTypes.systemTextPrompt: // 纯文本型系统提示 o.content = content; break; case messageTypes.text: default: content = content.replace(/</g, '<').replace(/>/g, '>').replace(/[\n\r]/g, '<br/>').replace(new RegExp(' ', 'g'), ' '); content = content.replace(httpReg, function (httpText) { var protocolReg = /https{0,1}|ftp/gi; return '<a href="' + (protocolReg.test(httpText) ? '' : 'http://') + httpText + '" target="_blank">' + httpText + '</a>'; }); content = util.emoji(content); o.content = content; } return tmpl[o.typeName](o); };
_.each(items, function (item) { var sessionType = item.sessionCategory, lastMessage = item.lastMessage; if(sessionType != constants.sessionType.single && sessionType != constants.sessionType.discussion || !lastMessage){ return ; } var lastContent = lastMessage.content, senderId = lastMessage.senderId, messageType = lastMessage.messageType; var o = { sessionId: item.sessionId, sessionName: item.sessionName, sessionType: sessionType, lastMessageTime: lastMessage.messageTime, lastCreateTime: util.getDateSummaryDesc(moment.unix(parseInt(lastMessage.messageTime/1000, 10)), moment.unix(responseData.serviceTime), 1) }; if (!senderId ) { if(messageType == constantsMessageType.systemPrompt){ senderId = json.parse(lastContent).U; } else { return ; } } var sender = lastMessage.sender; if(sessionType == constants.sessionType.discussion){ o.profileImageUrl = item.portraitPath ? util.getFileUrl(item.portraitPath) : FS.ASSETS_PATH + '/images/group_default_50x50.png'; if(!o.sessionName){ var t = []; _.each(item.participantIds, function (i) { if(i == currentUserData.id) { return ; } var _e = util.getContactDataById(i, 'p'); if(_e){ t.push(_e.name); } }); o.sessionName = t.join('、'); } if(!o.sessionName){ o.sessionName = '群对话'; } } else { o.profileImageUrl = sender ? util.getAvatarLink(sender.profileImage, 2) : FS.ASSETS_PATH+'/images/employee_default_120_120.png'; } o.name = senderId == currentUserData.employeeID ? '我' : sender.name; /* 是否显示“新”图标 */ if (item.notReadFlag) { o.newico = '<div class="img-new"></div>'; } else { o.newico = ''; } o.content = getMessageHtml(messageTpl, { content: lastContent, messageType: messageType, senderId: senderId, senderName: o.name, messageId: lastMessage.messageId, messageTime: lastMessage.messageTime }); r.push(o); });