mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2026-03-24 02:03:27 +08:00
flow ui
This commit is contained in:
1550
OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js
Normal file
1550
OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js
Normal file
File diff suppressed because it is too large
Load Diff
36
OpenAuth.Mvc/Content/scripts/utils/learun-clientdata.js
Normal file
36
OpenAuth.Mvc/Content/scripts/utils/learun-clientdata.js
Normal file
@@ -0,0 +1,36 @@
|
||||
$(function () {
|
||||
$.getclientdata();
|
||||
})
|
||||
var clientdataItem = [];
|
||||
var clientorganizeData = [];
|
||||
var clientdepartmentData = [];
|
||||
var clientpostData = [];
|
||||
var clientroleData = [];
|
||||
var clientuserGroup = [];
|
||||
var clientuserData = [];
|
||||
var authorizeMenuData = [];
|
||||
var authorizeButtonData = [];
|
||||
var authorizeColumnData = [];
|
||||
$.getclientdata = function () {
|
||||
$.ajax({
|
||||
url: contentPath + "/ClientData/GetClientDataJson",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
clientdataItem = data.dataItem;
|
||||
clientorganizeData = data.organize;
|
||||
clientdepartmentData = data.department;
|
||||
clientpostData = data.post;
|
||||
clientroleData = data.role;
|
||||
clientuserGroup = data.userGroup;
|
||||
clientuserData = data.user;
|
||||
authorizeMenuData = data.authorizeMenu;
|
||||
authorizeButtonData = data.authorizeButton;
|
||||
authorizeColumnData = data.authorizeColumn;
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
dialogMsg(errorThrown, -1);
|
||||
}
|
||||
});
|
||||
}
|
||||
406
OpenAuth.Mvc/Content/scripts/utils/learun-flowlayout.js
Normal file
406
OpenAuth.Mvc/Content/scripts/utils/learun-flowlayout.js
Normal file
@@ -0,0 +1,406 @@
|
||||
//初始化设计流程器
|
||||
$.fn.flowdesign = function (options) {
|
||||
var $frmpreview = $(this);
|
||||
if (!$frmpreview.attr('id')) {
|
||||
return false;
|
||||
}
|
||||
var FlowPanel;
|
||||
$frmpreview.html("");
|
||||
var defaults = {
|
||||
flowcontent: "",
|
||||
frmtype: 0,//自定义表单0,系统表单1
|
||||
frmData: "",
|
||||
width: $(window).width(),
|
||||
height: $(window).height() + 2,
|
||||
OpenNode: function () { return false},
|
||||
OpenLine: function () { return false },
|
||||
NodeRemarks: {
|
||||
cursor: "选择指针",
|
||||
direct: "步骤连线",
|
||||
startround: "开始节点",
|
||||
endround: "结束节点",
|
||||
stepnode: "普通节点",
|
||||
shuntnode: "分流节点",
|
||||
confluencenode: "合流节点",
|
||||
group: "区域规划"
|
||||
},
|
||||
haveTool:true,
|
||||
toolBtns: ["startround", "endround", "stepnode", "shuntnode", "confluencenode"],
|
||||
isprocessing: false,
|
||||
nodeData: null,
|
||||
activityId: "",
|
||||
preview:0
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
FlowPanel = $.createGooFlow($(this), {
|
||||
width: options.width,
|
||||
height: options.height,
|
||||
haveHead: true,
|
||||
headBtns: ["undo", "redo"],
|
||||
haveTool: options.haveTool,
|
||||
toolBtns: options.toolBtns,
|
||||
haveGroup: true,
|
||||
useOperStack: true
|
||||
});
|
||||
FlowPanel.setNodeRemarks(options.NodeRemarks);
|
||||
FlowPanel.loadData(options.flowcontent);
|
||||
OpenNode = options.OpenNode;
|
||||
OpenLine = options.OpenLine;
|
||||
//导出数据扩展方法
|
||||
//所有节点必须有进出线段
|
||||
//必须有开始结束节点(且只能为一个)
|
||||
//分流合流节点必须成对出现
|
||||
//分流合流节点必须一一对应且中间必须有且只能有一个普通节点
|
||||
//分流节点与合流节点之前的审核节点必须有且只能有一条出去和进来节点
|
||||
FlowPanel.exportDataEx = function () {
|
||||
var _data = FlowPanel.exportData();
|
||||
var _fromlines = {}, _tolines = {}, _nodes = {}, _fnodes = [], _hnodes = [], _startroundFlag = 0, _endroundFlag = 0;
|
||||
for (var i in _data.lines)
|
||||
{
|
||||
if (_fromlines[_data.lines[i].from] == undefined)
|
||||
{
|
||||
_fromlines[_data.lines[i].from] = [];
|
||||
}
|
||||
_fromlines[_data.lines[i].from].push(_data.lines[i].to);
|
||||
|
||||
if (_tolines[_data.lines[i].to] == undefined) {
|
||||
_tolines[_data.lines[i].to] = [];
|
||||
}
|
||||
_tolines[_data.lines[i].to].push(_data.lines[i].from);
|
||||
}
|
||||
for (var j in _data.nodes)
|
||||
{
|
||||
var _node = _data.nodes[j];
|
||||
var _flag = false;
|
||||
switch (_node.type)
|
||||
{
|
||||
case "startround":
|
||||
_startroundFlag++;
|
||||
if (_fromlines[_node.id] == undefined) {
|
||||
dialogTop("开始节点无法流转到下一个节点", "error");
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case "endround":
|
||||
_endroundFlag++;
|
||||
if ( _tolines[_node.id] == undefined) {
|
||||
dialogTop("无法流转到结束节点", "error");
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case "stepnode":
|
||||
_flag = true;
|
||||
break;
|
||||
case "shuntnode":
|
||||
_flag = true;
|
||||
_fnodes.push(_node.id);
|
||||
break;
|
||||
case "confluencenode":
|
||||
_hnodes.push(_node.id);
|
||||
_flag = true;
|
||||
break;
|
||||
default:
|
||||
dialogTop("节点数据异常,请重新登录下系统!", "error");
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
if (_flag)
|
||||
{
|
||||
if (_tolines[_node.id] == undefined) {
|
||||
labellingRedNode(_node.id);
|
||||
dialogTop("标注红色的节点没有【进来】的连接线段", "error");
|
||||
return -1;
|
||||
}
|
||||
if (_fromlines[_node.id] == undefined) {
|
||||
labellingRedNode(_node.id);
|
||||
dialogTop("标注红色的节点没有【出去】的连接线段", "error");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
_nodes[_node.id] = _node;
|
||||
}
|
||||
if (_startroundFlag == 0) {
|
||||
dialogTop("必须有开始节点", "error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (_endroundFlag == 0)
|
||||
{
|
||||
dialogTop("必须有结束节点", "error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (_fnodes.length != _hnodes.length)
|
||||
{
|
||||
dialogTop("分流节点必须等于合流节点", "error");
|
||||
return -1;
|
||||
}
|
||||
for (var a in _fnodes) {
|
||||
var aNondeid = _fnodes[a];
|
||||
if (_fromlines[aNondeid].length == 1) {
|
||||
labellingRedNode(aNondeid);
|
||||
dialogTop("标注红色的分流节点不允许只有一条【出去】的线段", "error");
|
||||
return -1;
|
||||
}
|
||||
var _hhnodeid = {};
|
||||
for (var b in _fromlines[aNondeid])
|
||||
{
|
||||
btoNode = _fromlines[aNondeid][b];
|
||||
if (_nodes[btoNode].type == "stepnode") {
|
||||
var _nextLine = _fromlines[_nodes[btoNode].id];
|
||||
|
||||
var _nextNode = _nodes[_nextLine[0]];
|
||||
if (_nextNode.type != "confluencenode") {
|
||||
labellingRedNode(_nodes[btoNode].id);
|
||||
dialogTop("标注红色的普通节点下一个节点必须是合流节点", "error");
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
_hhnodeid[_nextLine[0]] = 0;
|
||||
if (_hhnodeid.length > 1) {
|
||||
labellingRedNode(aNondeid);
|
||||
dialogTop("标注红色的分流节点与之对应的合流节点只能有一个", "error");
|
||||
return -1;
|
||||
}
|
||||
if (_tolines[_nextLine[0]].length != _fromlines[aNondeid].length) {
|
||||
labellingRedNode(_nextLine[0]);
|
||||
dialogTop("标注红色的合流节点与之对应的分流节点只能有一个", "error");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (_nextLine.length > 1) {
|
||||
labellingRedNode(_nodes[btoNode].id);
|
||||
dialogTop("标注红色的节点只能有一条出去的线条【分流合流之间】", "error");
|
||||
return -1;
|
||||
}
|
||||
else if (_tolines[_nodes[btoNode].id],length > 1) {
|
||||
labellingRedNode(_nodes[btoNode].id);
|
||||
dialogTop("标注红色的节点只能有一条进来的线条【分流合流之间】", "error");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
labellingRedNode(aNondeid);
|
||||
dialogTop("标注红色的分流节点必须经过一个普通节点到合流节点", "error");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
FlowPanel.SetNodeEx = function (id,data) {
|
||||
FlowPanel.setName(id, data.NodeName, "node", data);
|
||||
}
|
||||
FlowPanel.SetLineEx = function (id, data) {
|
||||
FlowPanel.setName(id, data.LineName, "line", data);
|
||||
}
|
||||
if (options.isprocessing)//如果是显示进程状态
|
||||
{
|
||||
var tipHtml = '<div style="position:absolute;left:10px;margin-top: 10px;padding:10px;border-radius:5px;background:rgba(0,0,0,0.05);z-index:1000;display:inline-block;">';
|
||||
tipHtml += '<div style="display: inline-block;"><i style="padding-right:5px;color:#5cb85c;" class="fa fa-flag"></i><span>已处理</span></div>';
|
||||
tipHtml += '<div style="display: inline-block;margin-left: 10px;"><i style="padding-right:5px;color:#5bc0de;" class="fa fa-flag"></i><span>正在处理</span></div>';
|
||||
tipHtml += '<div style="display: inline-block;margin-left: 10px;"><i style="padding-right:5px;color:#d9534f;" class="fa fa-flag"></i><span>不通过</span></div>';
|
||||
tipHtml += '<div style="display: inline-block;margin-left: 10px;"><i style="padding-right:5px;color:#f0ad4e;" class="fa fa-flag"></i><span>驳回</span></div>';
|
||||
tipHtml += '<div style="display: inline-block;margin-left: 10px;"><i style="padding-right:5px;color:#999;" class="fa fa-flag"></i><span>未处理</span></div></div>';
|
||||
|
||||
$frmpreview.find('.GooFlow_work .GooFlow_work_inner').css('background-image', 'none');
|
||||
$frmpreview.find('td').css('color', '#fff');
|
||||
$frmpreview.css('background', '#fff');
|
||||
$frmpreview.find('.ico').remove();
|
||||
$frmpreview.find('.GooFlow_item').css('border', '0px');
|
||||
$frmpreview.append(tipHtml);
|
||||
$.each(options.nodeData, function (i, item) {
|
||||
$frmpreview.find("#" + item.id).css("background", "#999");
|
||||
if (item.type == "startround") {
|
||||
$frmpreview.find("#" + item.id).css("background", "#5cb85c");
|
||||
}
|
||||
else {
|
||||
if (item.id == options.activityId) {
|
||||
$frmpreview.find("#" + item.id).css("background", "#5bc0de");//正在处理
|
||||
}
|
||||
if (item.setInfo != undefined && item.setInfo.Taged != undefined) {
|
||||
if (item.setInfo.Taged == -1) {
|
||||
$frmpreview.find("#" + item.id).css("background", "#d9534f");//不通过
|
||||
}
|
||||
else if (item.setInfo.Taged == 1) {
|
||||
$frmpreview.find("#" + item.id).css("background", "#5cb85c");//通过
|
||||
}
|
||||
else {
|
||||
$frmpreview.find("#" + item.id).css("background", "#f0ad4e");//驳回
|
||||
}
|
||||
}
|
||||
}
|
||||
if (item.setInfo != undefined && item.setInfo.Taged != undefined)
|
||||
{
|
||||
var _one = top.clientuserData[item.setInfo.UserId];
|
||||
var _row = '<div style="text-align:left">';
|
||||
var tagname = { "-1": "不通过", "1": "通过", "0": "驳回" };
|
||||
_row += "<p>处理人:" + (_one == undefined ? item.setInfo.UserId : _one.RealName)+"</p>";
|
||||
_row += "<p>结果:" + tagname[item.setInfo.Taged] + "</p>";
|
||||
_row += "<p>处理时间:" + item.setInfo.TagedTime + "</p>";
|
||||
_row += "<p>备注:" + item.setInfo.description + "</p></div>";
|
||||
|
||||
$frmpreview.find('#' + item.id).attr('data-toggle', 'tooltip');
|
||||
$frmpreview.find('#' + item.id).attr('data-placement', 'bottom');
|
||||
$frmpreview.find('#' + item.id).attr('title', _row);
|
||||
}
|
||||
});
|
||||
$('[data-toggle="tooltip"]').tooltip({"html":true});
|
||||
}
|
||||
if (options.preview == 1)
|
||||
{
|
||||
preview();
|
||||
}
|
||||
|
||||
//预览
|
||||
function preview() {
|
||||
var _frmitems = {};
|
||||
for (var i in options.frmData) {
|
||||
var _frmitem = options.frmData[i];
|
||||
_frmitems[_frmitem.control_field] = _frmitem.control_label;
|
||||
}
|
||||
var DataBaseLinkData = {};
|
||||
$.ajax({
|
||||
url: "../../SystemManage/DataBaseLink/GetListJson",
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
for (var i in data) {
|
||||
DataBaseLinkData[data[i].DatabaseLinkId] = data[i].DBAlias;
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
dialogMsg(errorThrown, -1);
|
||||
}
|
||||
});
|
||||
|
||||
var _NodeRejectType = { "0": "前一步", "1": "第一步", "2": "某一步", "3": "用户指定", "4": "不处理" };
|
||||
var _NodeIsOver = { "0": "不允许", "1": "允许" };
|
||||
var _NodeDesignate = { "NodeDesignateType1": "所有成员", "NodeDesignateType2": "指定成员", "NodeDesignateType3": "发起者领导", "NodeDesignateType4": "前一步骤领导", "NodeDesignateType5": "发起者部门领导", "NodeDesignateType6": "发起者公司领导" };
|
||||
var _NodeConfluenceType = { "0": "所有步骤通过", "1": "一个步骤通过即可", "2": "按百分比计算" };
|
||||
$.each(options.flowcontent.nodes, function (i, item) {
|
||||
if (item.setInfo != undefined) {
|
||||
var _popoverhtml = "";
|
||||
_popoverhtml += '<div class="flow-portal-panel-title"><i class="fa fa-navicon"></i> 基本信息</div>';
|
||||
_popoverhtml += '<ul>';
|
||||
_popoverhtml += '<li>节点标识:' + item.setInfo.NodeCode + '</li>';
|
||||
_popoverhtml += '<li>驳回类型:' + _NodeRejectType[item.setInfo.NodeRejectType] + '</li>';
|
||||
_popoverhtml += '<li>终止流程:' + _NodeIsOver[item.setInfo.NodeIsOver] + '</li>';
|
||||
if (item.setInfo.Description != "") { _popoverhtml += '<li>备注:' + item.setInfo.Description + '</li>'; }
|
||||
if (item.setInfo.NodeConfluenceType != "") {
|
||||
_popoverhtml += '<li>会签策略:' + _NodeConfluenceType[item.setInfo.NodeConfluenceType] + '</li>';
|
||||
if (item.setInfo.NodeConfluenceType == 2) {
|
||||
_popoverhtml += '<li>会签比例:' + item.setInfo.NodeConfluenceRate + '</li>';
|
||||
}
|
||||
}
|
||||
if (item.setInfo.NodeDataBase != "") {
|
||||
_popoverhtml += '<li>绑定数据库:' + DataBaseLinkData[item.setInfo.NodeDataBase] + '</li>';
|
||||
}
|
||||
if (item.setInfo.NodeTable != "") {
|
||||
_popoverhtml += '<li>绑定表名:' + item.setInfo.NodeTable + '</li>';
|
||||
}
|
||||
if (item.setInfo.NodePram != "") {
|
||||
_popoverhtml += '<li>绑定字段:' + item.setInfo.NodePram + '</li>';
|
||||
}
|
||||
_popoverhtml += '</ul>';
|
||||
|
||||
_popoverhtml += '<div class="flow-portal-panel-title"><i class="fa fa-navicon"></i> 审核者</div>';
|
||||
_popoverhtml += '<ul>';
|
||||
_popoverhtml += '<li>类型:' + _NodeDesignate[item.setInfo.NodeDesignate] + '</li>';
|
||||
if (item.setInfo.NodeDesignateData != undefined) {
|
||||
var _rowstr = "";
|
||||
for (var i in item.setInfo.NodeDesignateData.role) {
|
||||
var _postitem = item.setInfo.NodeDesignateData.role[i];
|
||||
var _one = top.clientroleData[_postitem];
|
||||
_rowstr += ' <span class="label label-success">' + (_one == undefined ? _postitem : _one.FullName) + '</span>';
|
||||
if (i == item.setInfo.NodeDesignateData.role.length - 1) {
|
||||
_popoverhtml += '<li>角色:' + _rowstr + '</li>';
|
||||
}
|
||||
}
|
||||
|
||||
_rowstr = "";
|
||||
for (var i in item.setInfo.NodeDesignateData.post) {
|
||||
var _postitem = item.setInfo.NodeDesignateData.post[i];
|
||||
var _one = top.clientpostData[_postitem];
|
||||
_rowstr += ' <span class="label label-info">' + (_one == undefined ? _postitem : _one.FullName) + '</span>';
|
||||
if (i == item.setInfo.NodeDesignateData.post.length - 1) {
|
||||
_popoverhtml += '<li>岗位:' + _rowstr + '</li>';
|
||||
}
|
||||
}
|
||||
|
||||
_rowstr = "";
|
||||
for (var i in item.setInfo.NodeDesignateData.usergroup) {
|
||||
var _postitem = item.setInfo.NodeDesignateData.usergroup[i];
|
||||
var _one = top.clientuserGroup[_postitem];
|
||||
_rowstr += ' <span class="label label-warning">' + (_one == undefined ? _postitem : _one.FullName) + '</span>';
|
||||
if (i == item.setInfo.NodeDesignateData.usergroup.length - 1) {
|
||||
_popoverhtml += '<li>用户组:' + _rowstr + '</li>';
|
||||
}
|
||||
}
|
||||
|
||||
_rowstr = "";
|
||||
for (var i in item.setInfo.NodeDesignateData.user) {
|
||||
var _postitem = item.setInfo.NodeDesignateData.user[i];
|
||||
var _one = top.clientuserData[_postitem];
|
||||
_rowstr += ' <span class="label label-danger">' + (_one == undefined ? _postitem : _one.RealName) + '</span>';
|
||||
if (i == item.setInfo.NodeDesignateData.user.length - 1) {
|
||||
_popoverhtml += '<li>用户:' + _rowstr + '</li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
_popoverhtml += '</ul>';
|
||||
|
||||
var _row = "";
|
||||
for (var i in item.setInfo.frmPermissionInfo) {
|
||||
var _item = item.setInfo.frmPermissionInfo[i];
|
||||
var _downtext = "";
|
||||
if (_item.down) {
|
||||
_downtext = ' | 可下载';
|
||||
}
|
||||
else if (_item.down != undefined) {
|
||||
_downtext = ' | 不可下载';
|
||||
}
|
||||
_row += '<li>' + _frmitems[_item.fieldid] + ': ' + (_item.look ? '可查看' : '不可查看') + _downtext + '</li>';
|
||||
if (i == item.setInfo.frmPermissionInfo.length - 1) {
|
||||
_popoverhtml += '<div class="flow-portal-panel-title"><i class="fa fa-navicon"></i> 权限分配</div>';
|
||||
_popoverhtml += '<ul>';
|
||||
_popoverhtml += _row;
|
||||
_popoverhtml += '</ul>';
|
||||
}
|
||||
}
|
||||
|
||||
if (item.setInfo.NodeDataBaseToSQL != "" || item.setInfo.NodeSQL != "") {
|
||||
_popoverhtml += '<div class="flow-portal-panel-title"><i class="fa fa-navicon"></i> 执行SQL</div>';
|
||||
_popoverhtml += '<ul>';
|
||||
_popoverhtml += '<li>数据库:' + DataBaseLinkData[item.setInfo.NodeDataBaseToSQL] + '</li>';
|
||||
_popoverhtml += '<li>SQL语句:' + item.setInfo.NodeSQL + '</li>';
|
||||
_popoverhtml += '</ul>';
|
||||
}
|
||||
|
||||
$frmpreview.find('#' + item.id).attr('title', item.name);
|
||||
$frmpreview.find('#' + item.id).attr('data-toggle', 'popover');
|
||||
$frmpreview.find('#' + item.id).attr('data-placement', 'bottom');
|
||||
$frmpreview.find('#' + item.id).attr('data-content', _popoverhtml);
|
||||
}
|
||||
else {
|
||||
$frmpreview.find('#' + item.id).attr('title', item.name);
|
||||
$frmpreview.find('#' + item.id).attr('data-toggle', 'popover');
|
||||
$frmpreview.find('#' + item.id).attr('data-placement', 'bottom');
|
||||
$frmpreview.find('#' + item.id).attr('data-content', "该节点未被设置");
|
||||
}
|
||||
});
|
||||
$frmpreview.find('.GooFlow_item').popover({ html: true });
|
||||
}
|
||||
|
||||
function labellingRedNode(id)
|
||||
{
|
||||
$frmpreview.find('.flow-labellingnode-red').removeClass('flow-labellingnode-red');
|
||||
$frmpreview.find('#' + id).addClass('flow-labellingnode-red');
|
||||
}
|
||||
|
||||
return FlowPanel;
|
||||
}
|
||||
|
||||
|
||||
208
OpenAuth.Mvc/Content/scripts/utils/learun-form.js
Normal file
208
OpenAuth.Mvc/Content/scripts/utils/learun-form.js
Normal file
@@ -0,0 +1,208 @@
|
||||
$.SaveForm = function (options) {
|
||||
var defaults = {
|
||||
url: "",
|
||||
param: [],
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
loading: "正在处理数据...",
|
||||
success: null,
|
||||
close: true
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
Loading(true, options.loading);
|
||||
if ($('[name=__RequestVerificationToken]').length > 0) {
|
||||
options.param["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
|
||||
}
|
||||
window.setTimeout(function () {
|
||||
$.ajax({
|
||||
url: options.url,
|
||||
data: options.param,
|
||||
type: options.type,
|
||||
dataType: options.dataType,
|
||||
success: function (data) {
|
||||
if (data.type == "3") {
|
||||
dialogAlert(data.message, -1);
|
||||
} else {
|
||||
Loading(false);
|
||||
dialogMsg(data.message, 1);
|
||||
options.success(data);
|
||||
if (options.close == true) {
|
||||
dialogClose();
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
Loading(false);
|
||||
dialogMsg(errorThrown, -1);
|
||||
},
|
||||
beforeSend: function () {
|
||||
Loading(true, options.loading);
|
||||
},
|
||||
complete: function () {
|
||||
Loading(false);
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
$.SetForm = function (options) {
|
||||
var defaults = {
|
||||
url: "",
|
||||
param: [],
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
success: null,
|
||||
async:false
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
$.ajax({
|
||||
url: options.url,
|
||||
data: options.param,
|
||||
type: options.type,
|
||||
dataType: options.dataType,
|
||||
async: options.async,
|
||||
success: function (data) {
|
||||
if (data != null && data.type == "3") {
|
||||
dialogAlert(data.message, -1);
|
||||
} else {
|
||||
options.success(data);
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
dialogMsg(errorThrown, -1);
|
||||
}, beforeSend: function () {
|
||||
Loading(true);
|
||||
},
|
||||
complete: function () {
|
||||
Loading(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
$.RemoveForm = function (options) {
|
||||
var defaults = {
|
||||
msg: "注:您确定要删除吗?该操作将无法恢复",
|
||||
loading: "正在删除数据...",
|
||||
url: "",
|
||||
param: [],
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
success: null
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
dialogConfirm(options.msg, function (r) {
|
||||
if (r) {
|
||||
Loading(true, options.loading);
|
||||
window.setTimeout(function () {
|
||||
var postdata = options.param;
|
||||
if ($('[name=__RequestVerificationToken]').length > 0) {
|
||||
postdata["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
|
||||
}
|
||||
$.ajax({
|
||||
url: options.url,
|
||||
data: postdata,
|
||||
type: options.type,
|
||||
dataType: options.dataType,
|
||||
success: function (data) {
|
||||
if (data.type == "3") {
|
||||
dialogAlert(data.message, -1);
|
||||
} else {
|
||||
dialogMsg(data.message, 1);
|
||||
options.success(data);
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
Loading(false);
|
||||
dialogMsg(errorThrown, -1);
|
||||
},
|
||||
beforeSend: function () {
|
||||
Loading(true, options.loading);
|
||||
},
|
||||
complete: function () {
|
||||
Loading(false);
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
}
|
||||
$.ConfirmAjax = function (options) {
|
||||
var defaults = {
|
||||
msg: "提示信息",
|
||||
loading: "正在处理数据...",
|
||||
url: "",
|
||||
param: [],
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
success: null
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
dialogConfirm(options.msg, function (r) {
|
||||
if (r) {
|
||||
Loading(true, options.loading);
|
||||
window.setTimeout(function () {
|
||||
var postdata = options.param;
|
||||
if ($('[name=__RequestVerificationToken]').length > 0) {
|
||||
postdata["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
|
||||
}
|
||||
$.ajax({
|
||||
url: options.url,
|
||||
data: postdata,
|
||||
type: options.type,
|
||||
dataType: options.dataType,
|
||||
success: function (data) {
|
||||
Loading(false);
|
||||
if (data.type == "3") {
|
||||
dialogAlert(data.message, -1);
|
||||
} else {
|
||||
dialogMsg(data.message, 1);
|
||||
options.success(data);
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
Loading(false);
|
||||
dialogMsg(errorThrown, -1);
|
||||
},
|
||||
beforeSend: function () {
|
||||
Loading(true, options.loading);
|
||||
},
|
||||
complete: function () {
|
||||
Loading(false);
|
||||
}
|
||||
});
|
||||
}, 200);
|
||||
}
|
||||
});
|
||||
}
|
||||
$.ExistField = function (controlId, url, param) {
|
||||
var $control = $("#" + controlId);
|
||||
if (!$control.val()) {
|
||||
return false;
|
||||
}
|
||||
var data = {
|
||||
keyValue: request('keyValue')
|
||||
};
|
||||
data[controlId] = $control.val();
|
||||
var options = $.extend(data, param);
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: options,
|
||||
type: "get",
|
||||
dataType: "text",
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.toLocaleLowerCase() == 'false') {
|
||||
ValidationMessage($control, '已存在,请重新输入');
|
||||
$control.attr('fieldexist', 'yes');
|
||||
} else {
|
||||
$control.attr('fieldexist', 'no');
|
||||
}
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
dialogMsg(errorThrown, -1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
476
OpenAuth.Mvc/Content/scripts/utils/learun-im.js
Normal file
476
OpenAuth.Mvc/Content/scripts/utils/learun-im.js
Normal file
@@ -0,0 +1,476 @@
|
||||
$.IMSignalR = function (options) {
|
||||
var defaults = {
|
||||
url: "http://localhost:8081/signalr",//服务地址
|
||||
userId: "",//用户登录Id
|
||||
updateUserList: function (userAllList, onLineUserList) { },//刷新用户列表
|
||||
updateLastUser: function (userLasrList) { },//刷新最新联系人
|
||||
updateUserStatus: function (userId, isOnLine) { },//刷用户在线状态0离线。1在线
|
||||
revMessage: function (formUser, message, dateTime) { },//接收消息
|
||||
revGroupMessage: function (userId, toGroup, message, dateTime) { },//接收群组消息
|
||||
afterLinkSuccess: function () { },//连接服务成功后
|
||||
disconnected: function () { }//断开连接后
|
||||
};
|
||||
var imMethod = {
|
||||
//组的操作
|
||||
IMCreateGroup: function (groupName, userIdList) { },//创建一个组
|
||||
IMUpdateGroupName: function (groupId, groupName) { },//更改组的名字
|
||||
IMAddGroupUserId: function (groupId, userId) { },//增加一个用户到组里
|
||||
IMRemoveGroupUserId: function (userGroupId) { },//从一个组里面移除
|
||||
//消息的操作
|
||||
IMSendToOne: function (toUser, message) { },//发送消息
|
||||
IMSendGroup: function (toUser, message) { },//发送消息群组
|
||||
IMUpdateMessageStatus: function (sendId) { },//更新消息状态
|
||||
IMGetMsgList: function (page, rownum, sendId, callback) { },//获取消息列表
|
||||
IMGetUnReadMsgNumList: function () { },//获取未读消息的条数
|
||||
//联系人操作
|
||||
IMUpdateLastUserByClient: function () { },//主动发起更新最近联系人列表
|
||||
//获取所有用户列表
|
||||
userAllList: {},
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
//Set the hubs URL for the connection
|
||||
$.connection.hub.url = options.url;
|
||||
$.connection.hub.qs = { "userId": options.userId };
|
||||
// Declare a proxy to reference the hub.
|
||||
var chat = $.connection.ChatsHub;
|
||||
//更新联系人列表
|
||||
chat.client.IMUpdateUserList = function (userAllList, onLineUserList) {
|
||||
var userDepartmentList = {};
|
||||
imMethod.userAllList = userAllList;
|
||||
$.each(userAllList, function (Id, item) {
|
||||
if (Id != options.userId) {
|
||||
if (userDepartmentList[item.DepartmentId] == undefined) {
|
||||
userDepartmentList[item.DepartmentId] = {};
|
||||
userDepartmentList[item.DepartmentId].DepartmentName = item.DepartmentId;
|
||||
if (item.UserOnLine == 1) {
|
||||
userDepartmentList[item.DepartmentId].onLineNum = 1;
|
||||
}
|
||||
else {
|
||||
userDepartmentList[item.DepartmentId].onLineNum = 0;
|
||||
}
|
||||
userDepartmentList[item.DepartmentId].UserList = [];
|
||||
userDepartmentList[item.DepartmentId].UserList.push(item);
|
||||
}
|
||||
else {
|
||||
if (item.UserOnLine == 1) {
|
||||
userDepartmentList[item.DepartmentId].onLineNum++;
|
||||
}
|
||||
userDepartmentList[item.DepartmentId].UserList.push(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
options.updateUserList(userDepartmentList, onLineUserList);
|
||||
}
|
||||
//刷新最近的联系人
|
||||
chat.client.IMUpdateLastUser = function (lastUserList) {
|
||||
options.updateLastUser(lastUserList);
|
||||
}
|
||||
//刷新用户在线状态
|
||||
chat.client.IMUpdateUserStatus = function (userId, isOnLine) {
|
||||
imMethod.userAllList[userId].UserOnLine = isOnLine;
|
||||
options.updateUserStatus(userId, isOnLine);
|
||||
}
|
||||
//接收消息
|
||||
chat.client.RevMessage = function (formUser, message, dateTime) {
|
||||
options.revMessage(formUser, message, dateTime);
|
||||
}
|
||||
//接收群消息
|
||||
chat.client.RevGroupMessage = function (userId, toGroup, message, dateTime) {
|
||||
options.revGroupMessage(userId, toGroup, message, dateTime);
|
||||
}
|
||||
// 连接成功后注册服务器方法
|
||||
$.connection.hub.start().done(function () {
|
||||
imMethod.IMCreateGroup = function (groupName, userIdList) {
|
||||
return chat.server.createGroup(groupName, userIdList);
|
||||
};
|
||||
imMethod.IMUpdateGroupName = function (groupId, groupName) {
|
||||
return chat.server.updateGroupName(groupId, groupName);
|
||||
};
|
||||
imMethod.IMAddGroupUserId = function (groupId, userId) {
|
||||
return chat.server.addGroupUserId(groupId, userId);
|
||||
};
|
||||
imMethod.IMRemoveGroupUserId = function (userGroupId) {
|
||||
return chat.server.removeGroupUserId(userGroupId);
|
||||
};
|
||||
|
||||
imMethod.IMSendToOne = function (toUser, message) {
|
||||
chat.server.imSendToOne(toUser, message);
|
||||
};
|
||||
imMethod.IMSendGroup = function (toUser, message) {
|
||||
chat.server.imSendToGroup(toUser, message);
|
||||
};
|
||||
imMethod.IMUpdateMessageStatus = function (sendId) {
|
||||
return chat.server.updateMessageStatus(sendId);
|
||||
};
|
||||
//获取与某用户的消息列表
|
||||
imMethod.IMGetMsgList = function (page, rownum, sendId, callback) {
|
||||
var pagination = { rows: rownum, page: page, sidx: 'CreateDate', sord: 'desc' }
|
||||
chat.server.getMsgList(pagination, sendId).done(function (resdata) {
|
||||
var data = [];
|
||||
for (i = resdata.length, i >= 0; i--;) {
|
||||
resdata[i].CreateDate = formatDate(resdata[i].CreateDate, 'yyyy-MM-dd hh:mm');
|
||||
data.push(resdata[i]);
|
||||
}
|
||||
callback(data);
|
||||
});
|
||||
|
||||
};
|
||||
//获取未读消息的条数
|
||||
imMethod.IMGetUnReadMsgNumList = function (callback) {
|
||||
chat.server.getMsgNumList("0").done(function (resdata) {
|
||||
callback(resdata);
|
||||
});
|
||||
};
|
||||
|
||||
imMethod.IMUpdateLastUserByClient = function () {
|
||||
chat.server.imSendLastUser();
|
||||
}
|
||||
|
||||
options.afterLinkSuccess();
|
||||
});
|
||||
//断开连接后
|
||||
$.connection.hub.disconnected(function () {
|
||||
options.disconnected();
|
||||
});
|
||||
//返回可供客户端调用的方法
|
||||
return imMethod;
|
||||
}
|
||||
//即使通信
|
||||
IMInit = function (options) {
|
||||
var $message_wrap = $(".message-wrap");
|
||||
var $message_window = $(".message-window");
|
||||
var imMethod;
|
||||
var defaults = {
|
||||
userId: "77653de4-d8e7-4903-9f2a-ee47ba3111da",//当前登录Id
|
||||
userName: "", //当前用户名,
|
||||
toUserId: "", //发送人Id
|
||||
toUserName: "", //发送人
|
||||
windowId: "", //当前窗口Id
|
||||
revMessage: GetMessage,
|
||||
afterLinkSuccess: function () { //连接成功后
|
||||
//显示消息未读条数
|
||||
imMethod.IMGetUnReadMsgNumList(function (num) {
|
||||
$message_wrap.find('.message-count').html(num);
|
||||
if (parseInt(num) > 0)
|
||||
{
|
||||
IMIconflash(1);
|
||||
}
|
||||
});
|
||||
},
|
||||
disconnected: function () {
|
||||
IMRemove();
|
||||
},
|
||||
//初始化联系人列表
|
||||
updateUserList: function (userAllList, onLineUserList) {
|
||||
var $ul = $(".message-group #message-contact-list");
|
||||
var html = "";
|
||||
for (var i in userAllList)
|
||||
{
|
||||
var item = userAllList[i];
|
||||
console.log(item);
|
||||
html += '<li><a><i class="fa fa-caret-right"></i><span>' + item.DepartmentName + '</span><em> ' + item.onLineNum + '/' + item.UserList.length + ' </em></a>'
|
||||
var userJson = userAllList[i].UserList.sort(function (a, b) { return a.UserOnLine < b.UserOnLine ? 1 : -1 });
|
||||
if (userJson.length > 0) {
|
||||
html += '<ul class="message-chatlist">';
|
||||
$.each(userJson, function (j) {
|
||||
var src = "/Content/images/off-line.png";
|
||||
if (userJson[j].UserOnLine == 1) {
|
||||
src = "/Content/images/on-line.png";
|
||||
}
|
||||
html += '<li>';
|
||||
html += '<div class="message-oneface"><img src="' + top.contentPath + src + '" /></div>';
|
||||
html += '<div data-value="' + userJson[j].UserId + '" class="message-onename">' + userJson[j].RealName + ' <span>[' + userAllList[i].DepartmentName + ']</span></div>';
|
||||
html += '</li>';
|
||||
});
|
||||
html += '</ul>';
|
||||
}
|
||||
html += '</li>';
|
||||
}
|
||||
$ul.html(html);
|
||||
//点击部门名称展开
|
||||
$message_wrap.find('.message-group a').click(function () {
|
||||
if (!$(this).hasClass("active")) {
|
||||
$(this).addClass("active")
|
||||
$(this).next('.message-chatlist').slideDown(200);
|
||||
$(this).find('i').removeClass('fa-caret-right').addClass('fa-caret-down');
|
||||
} else {
|
||||
$(this).removeClass("active")
|
||||
$(this).next('.message-chatlist').slideUp(200);
|
||||
$(this).find('i').removeClass('fa-caret-down').addClass('fa-caret-right');
|
||||
}
|
||||
});
|
||||
//打开聊天窗口
|
||||
OpenChatWindow();
|
||||
//关闭聊天窗口
|
||||
CloseChatWindow();
|
||||
},
|
||||
//更新最近联系人列表
|
||||
updateLastUser: UpDateLastUser,
|
||||
//刷新用户在线状态
|
||||
updateUserStatus: function (userId, isOnline) {
|
||||
var node = $message_wrap.find('.message-chatlist li').find('[data-value=' + userId + ']')[0];
|
||||
var emnode = $(node.parentNode.parentNode.parentNode).find('em');
|
||||
var usernumlist = emnode.html().split('/');
|
||||
var OnlineNum = parseInt(usernumlist[0].replace(/ /g, ''));//刷新列表人数
|
||||
var src = "off-line.png"
|
||||
if (isOnline == 1) {
|
||||
var linode = $(node.parentNode).clone();
|
||||
var ulnode = $(node.parentNode.parentNode);
|
||||
ulnode.prepend(linode);
|
||||
$(node.parentNode).remove();
|
||||
|
||||
src = "on-line.png";
|
||||
OnlineNum++;
|
||||
}
|
||||
else {
|
||||
OnlineNum--;
|
||||
}
|
||||
$message_wrap.find('.message-chatlist li').find('[data-value=' + userId + ']').prev('.message-oneface').find('img').attr('src', top.contentPath + '/Content/images/' + src + '');
|
||||
emnode.html(" " + OnlineNum + '/' + usernumlist[1]);
|
||||
|
||||
}
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
imMethod = $.IMSignalR(options);
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
IMRemove();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//打开即时聊天
|
||||
$("#btn_message").click(function () {
|
||||
$(this).hide()
|
||||
$message_wrap.show();
|
||||
})
|
||||
//关闭即时聊天
|
||||
$message_wrap.find('.message-close').click(function () {
|
||||
IMIconflash(0);
|
||||
$message_wrap.hide();
|
||||
$message_window.hide();
|
||||
$("#btn_message").show();
|
||||
})
|
||||
//导航切换(联系人、讨论组、最近回话)
|
||||
$message_wrap.find('.message-nav li').click(function () {
|
||||
var tab_Id = $(this).attr('id');
|
||||
switch (tab_Id) {
|
||||
case "nav-contact-tab":
|
||||
$message_wrap.find("#message-contact-list").show();
|
||||
$message_wrap.find("#message-group-list").hide();
|
||||
$message_wrap.find("#message-last-list").hide();
|
||||
$(this).find('span').hide();
|
||||
break;
|
||||
case "nav-group-tab":
|
||||
$message_wrap.find("#message-group-list").show();
|
||||
$message_wrap.find("#message-contact-list").hide();
|
||||
$message_wrap.find("#message-last-list").hide();
|
||||
break;
|
||||
case "nav-last-tab":
|
||||
$message_wrap.find("#message-last-list").show();
|
||||
$message_wrap.find("#message-contact-list").hide();
|
||||
$message_wrap.find("#message-group-list").hide();
|
||||
$(this).find('span').show();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
$(this).parents('ul').find('li').removeClass("active");
|
||||
$(this).addClass("active");
|
||||
});
|
||||
//搜索(同事、讨论组、最近回话)
|
||||
$message_wrap.find('.message-body-search').find('.search-text').keyup(function () {
|
||||
var $chatlist = $("#message-contact-list").find('.message-chatlist');
|
||||
var value = $(this).val();
|
||||
if (value != "") {
|
||||
$chatlist.show();
|
||||
$chatlist.prev('a').hide();
|
||||
window.setTimeout(function () {
|
||||
$chatlist.find('li')
|
||||
.hide()
|
||||
.filter(":contains('" + (value) + "')")
|
||||
.show();
|
||||
}, 200);
|
||||
$chatlist.find('li').hover(function () {
|
||||
$(this).find('span').show();
|
||||
}, function () {
|
||||
$(this).find('span').hide();
|
||||
})
|
||||
} else {
|
||||
$chatlist.hide();
|
||||
$chatlist.find('li').show();
|
||||
$chatlist.prev('a').show();
|
||||
if ($chatlist.prev('a').hasClass('active')) {
|
||||
$chatlist.prev('a.active').next('ul').show();
|
||||
}
|
||||
$chatlist.find('li').find('span').hide();
|
||||
}
|
||||
}).keyup();
|
||||
|
||||
|
||||
//刷新最近联系人列表
|
||||
function UpDateLastUser(userLasrList) {
|
||||
var $ul = $(".message-group #message-last-list");
|
||||
var html = "";
|
||||
//显示消息未读条数
|
||||
imMethod.IMGetUnReadMsgNumList(function (num) {
|
||||
$message_wrap.find('.message-count').html(num);
|
||||
});
|
||||
$ul.html(html);
|
||||
$.each(userLasrList, function (i, item) {
|
||||
|
||||
var model = imMethod.userAllList[item.OtherId];
|
||||
var src = "off-line.png"
|
||||
if (model.UserOnLine == 1) {
|
||||
src = "on-line.png"
|
||||
}
|
||||
html += '<li>';
|
||||
html += '<div class="message-oneface"><img src="' + top.contentPath + '/Content/images/' + src + '" /></div>';
|
||||
html += '<div data-value="' + model.UserId + '" class="message-onename">' + model.RealName + ' <span>[' + model.DepartmentId + ']</span></div>';
|
||||
if (item.UnReadNum > 0) {
|
||||
html += '<span class="message-count">' + item.UnReadNum + '</span>';
|
||||
}
|
||||
html += '</li>';
|
||||
});
|
||||
$ul.append(html);
|
||||
$ul.find('li').hover(function () {
|
||||
$(this).find('span').show();
|
||||
}, function () {
|
||||
$(this).find('span').hide();
|
||||
})
|
||||
//打开聊天窗口
|
||||
OpenChatWindow();
|
||||
//关闭聊天窗口
|
||||
CloseChatWindow();
|
||||
}
|
||||
//打开聊天窗口
|
||||
function OpenChatWindow() {
|
||||
$message_wrap.find('.message-chatlist li').click(function () {
|
||||
$message_window.show();
|
||||
var id = $(this).find('.message-onename').attr('data-value');
|
||||
var name = $(this).find('.message-onename').text();
|
||||
|
||||
defaults.toUserId = id;
|
||||
defaults.toUserName = name;
|
||||
defaults.windowId = id;
|
||||
$message_window.find('.message-window-header .text').html('与 ' + name + ' 聊天中')
|
||||
$message_window.find('.message-window-chat').scrollTop($message_window.find('.message-window-chat')[0].scrollHeight);
|
||||
$message_window.find('.message-window-chat').find('.message-window-content').html('');
|
||||
|
||||
//IMIconflash(0);
|
||||
imMethod.IMGetMsgList(1, 5, id, function (data) {
|
||||
imMethod.IMUpdateMessageStatus(id);
|
||||
$.each(data, function (i) {
|
||||
GetMessage(data[i].SendId, data[i].Content, data[i].CreateDate, true);
|
||||
});
|
||||
//显示消息未读条数
|
||||
imMethod.IMGetUnReadMsgNumList(function (num) {
|
||||
$message_wrap.find('.message-count').html(num);
|
||||
});
|
||||
$(this).find('.message-count').html("");
|
||||
});
|
||||
});
|
||||
}
|
||||
//关闭聊天窗口
|
||||
function CloseChatWindow() {
|
||||
$message_window.find('.message-window-header .close').click(function () {
|
||||
$message_window.hide();
|
||||
defaults.windowId = "";
|
||||
})
|
||||
}
|
||||
SendMessage();
|
||||
//发消息
|
||||
function SendMessage() {
|
||||
var $textarea = $message_window.find('.message-window-send').find('textarea');
|
||||
$textarea.bind('keypress', function (event) {
|
||||
if (event.keyCode == "13") {
|
||||
var sendText = $(this).val();
|
||||
if (sendText) {
|
||||
imMethod.IMSendToOne(options.toUserId, sendText);
|
||||
$message_window.find('.message-window-send').html('<textarea autofocus placeholder="按回车发送消息,shift+回车换行"></textarea>');
|
||||
SendMessage();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
//收消息
|
||||
function GetMessage(fromUer, content, dateTime,flag) {
|
||||
if (fromUer != options.userId) {
|
||||
if (options.windowId == fromUer)
|
||||
{
|
||||
var html = '<div class="left"><div class="author-name">';
|
||||
html += '<img src="/Content/images/on-line.png" />';
|
||||
html += '<small class="chat-text">' + options.toUserName + '</small>';
|
||||
html += '<small class="chat-date">' + dateTime + '</small>';
|
||||
html += '</div><div class="chat-message"><em></em>' + content + '</div></div>';
|
||||
$message_window.find('.message-window-content').append(html)
|
||||
$message_window.find('.message-window-chat').scrollTop($message_window.find('.message-window-chat')[0].scrollHeight);
|
||||
}
|
||||
if (flag == undefined) {
|
||||
//统计未读消息总数量
|
||||
if (options.windowId != fromUer) {
|
||||
var num = parseInt($message_wrap.find('.message-count').html());
|
||||
num += 1;
|
||||
if (num > 99) {
|
||||
num = 99;
|
||||
}
|
||||
$message_wrap.find('.message-count').html(num);
|
||||
IMIconflash(1);
|
||||
}
|
||||
else {//如果窗口是打开的就判定为已读
|
||||
imMethod.IMUpdateMessageStatus(fromUer);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var html = '<div class="right"><div class="author-name">';
|
||||
html += '<small class="chat-date">2015-11-25 11:24</small>';
|
||||
html += '<small class="chat-text">' + options.userName + '</small>';
|
||||
html += '<img src="/Content/images/on-line.png" />';
|
||||
html += '</div>';
|
||||
html += '<div class="chat-message"><em></em>' + content + '</div></div>';
|
||||
$message_window.find('.message-window-content').append(html)
|
||||
$message_window.find('.message-window-chat').scrollTop($message_window.find('.message-window-chat')[0].scrollHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
//图标闪乐
|
||||
var IMinterval;
|
||||
IMIconflash = function (state) {
|
||||
var $obj = $("#icon_message");
|
||||
if (state == 1) {
|
||||
if ($('body').find('embed').length == 0) {
|
||||
$('body').append('<embed src="' + top.contentPath + '/Content/images/video/5103.wav">');
|
||||
}
|
||||
else {
|
||||
$('embed').remove();
|
||||
$('body').append('<embed src="' + top.contentPath + '/Content/images/video/5103.wav">');
|
||||
}
|
||||
IMinterval = setInterval(function () {
|
||||
if (!$obj.hasClass('_ok')) {
|
||||
$obj.addClass('_ok');
|
||||
$obj.hide();
|
||||
} else {
|
||||
$obj.removeClass('_ok');
|
||||
$obj.show();
|
||||
}
|
||||
}, 400);
|
||||
} else {
|
||||
$obj.removeClass('_ok');
|
||||
$obj.show();
|
||||
clearInterval(IMinterval);
|
||||
}
|
||||
}
|
||||
//服务端断开,移除消息窗体
|
||||
IMRemove = function () {
|
||||
var $obj = $('#btn_message');
|
||||
var $messagewrap = $('.message-wrap');
|
||||
$obj.remove();
|
||||
$messagewrap.remove();
|
||||
top.dialogTop("消息服务器连接不上", "error");
|
||||
}
|
||||
1072
OpenAuth.Mvc/Content/scripts/utils/learun-ui.js
Normal file
1072
OpenAuth.Mvc/Content/scripts/utils/learun-ui.js
Normal file
File diff suppressed because it is too large
Load Diff
1656
OpenAuth.Mvc/Content/scripts/utils/learun-webApp.js
Normal file
1656
OpenAuth.Mvc/Content/scripts/utils/learun-webApp.js
Normal file
File diff suppressed because it is too large
Load Diff
1340
OpenAuth.Mvc/Content/scripts/utils/learun-webAppData.js
Normal file
1340
OpenAuth.Mvc/Content/scripts/utils/learun-webAppData.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user