123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- function signalViewModel(account, name, personid, RYXZ, DbFactory) {
- var that = this;
- this.count = 0;
- //人员性质
- this.RYXZ = RYXZ;
- //本地数据库对象
- this.DbFactory = DbFactory;
- ///消息数
- this.Notify = [];
- //账户
- this.Account = account;
- //登录名
- this.Name = name;
- //人员ID
- this.PersonId = personid;
- //登录的集成代理类
- this.LoginProxy = $.connection.LoginHub;
- //初始化连接服务器成功后调用
- //this.LoginProxy.client.connectedSuccess = function (connectId) {
- // ZLPMS.Msg('成功获取到在线用户信息');
- //}
- //所有用户登录成功更新数量
- this.LoginProxy.client.userLoginCallback = function (cnt) {
- $("#onlineUser").text(cnt);
- }
- //提示断线
- $.connection.hub.disconnected(function () {
- alert("服务已断开连接,请刷新网页!")
- //if (that.count <= 3) {
- // debugger
- // setTimeout(function () {
- // that.count++
- // that.register()
- // }, 2000);
- //}
- })
- //尝试重连
- //$.connection.hub.reconnecting(function () {
- // that.register()
- //});
- //接收服务器新消息
- this.LoginProxy.client.newMessage = function (msg) {
- that.showNotification(msg);
- layer.open({
- offset: 'rb',
- title: false,
- area: '200px',
- shade: 0,
- type: 1,
- content: '<p style="padding:10px;color:#8e804b;font-size:15px">' + msg + '</p>',
- icon: 1,
- anim: 2
- //btn: '知道了',
- //yes: function(index){
- // layer.close(index);
- //}
- });
- }
- //被踢下线
- this.LoginProxy.client.offline = function () {
- alert('您的账号在其它客户端登录,被强制下线');
- window.onbeforeunload = function (e) { };
- ZLPMS.Loading3('正在退出...');
- window.location.href = "/Account/Login";
- //$.ajax({
- // type: "post",
- // url: "/Admin/Permissions/LoginHandler.ashx?tag=Logout",
- // data: null,
- // dataType: "text",
- // success: function (data, textStatus) {
- // G_SYSTEM_EXIT = true;
- // window.location.href = "/Account/Login";
- // },
- // error: function (XMLHttpRequest, textStatus, errorThrown) {
- // //DuiFn.MsgAlert(XMLHttpRequest.statusText);
- // },
- // complete: function (XHR, TS) {
- // G_SYSTEM_EXIT = true;
-
- // }
- //});
- }
- //返回用户列表(json)
- this.LoginProxy.client.users = function (json) {
-
- var html = '<div id="user" style="padding:10px; widht:100%; height:90%;">';
- var data = eval(json);
- $.each(data, function (i, n) {
- html += '<p style="font-size:18px;"><i class="fa fa-user-o"></i> ' + n.UserName + '</p>';
- });
- html += "</div>";
- layer.open({
- offset: 'r',
- id:'onLineUser',
- title: '在线用户',
- area: ['180px', '500px'],
- shade: 0,
- type: 1,
- content: html,
- icon: 1,
- anim: 2
- });
- }
- //向服务端发起注册
- this.register = function () {
-
- var that = this;
- //向服务器注册客户端
- $.connection.hub.start().done(function () {
- //客户端向服务器的Hub类注册成功事件(成功后,执行登录)
- that.LoginProxy.server.clientLogin(that.Account, that.Name, that.PersonId);
- }).fail(function () {
- //客户端向服务器的Hub类注册失败事件
- alert('客户端向服务器的Hub类注册失败事件');
- });
- };
- //获取在线用户
- this.getuser = function () {
- var that = this;
- that.LoginProxy.server.getuser();
- }
- //获取APP下载二维码
- this.GetApp = function () {
- layer.open({
- offset: 'auto',
- id: 'AppdownLoad',
- title: 'APP下载',
- area: ['460px', '330px'],
- shade: 0,
- type: 1,
- content:`<div style="display:flex;justify-content:space-around;align-items:center;flex-direction:row">`+
- `<div style="display:flex;justify-content:center;align-items:center;flex-direction:column"><img src="/Content/Images/APP_Android.PNG" style="width:200px;height:auto"><div style="font-size:15px;font-weight:500">Android版</div> </div>`+
- `<div style="display:flex;justify-content:center;align-items:center;flex-direction:column"><img src="/Content/Images/APP_IOS.png" style="width:200px;height:auto"><div style="font-size:15px;font-weight:500">IOS版</div> </div>` +
- `</div>`,
- icon: 1,
- anim: 2
- });
- }
- ///推送问题处理信息
- this.LoginProxy.client.SendDealMessage = function (ProblemId,Message, Type) {
- that.showNotification(Message);
- that.AddNotify(Message, ProblemId, Type);
-
- }
- //新问题推送
- this.LoginProxy.client.RefreshSupport = function (Type) {
- debugger
- var project = document.getElementById("if154")
- var surpport = document.getElementById("if203")
- var product = document.getElementById("if6")
-
- if (Type == "1" && project) {
- project.contentWindow.com.RefreshOnDeal();
- that.showNotification("收到一条新的项目问题");
-
- }
-
- if (Type == "2"&&surpport) {
- surpport.contentWindow.com.RefreshNoDeal();
- that.showNotification("收到一条新的技术支持问题");
-
- }
- if (Type == "3" && product) {
- product.contentWindow.com.RefreshNoDeal();
- that.showNotification("收到一条新的研发问题");
-
- }
-
- }
- this.LoginProxy.client.newMessageToRefrsh = function (Message,ProblemId) {
- var project = document.getElementById("if154")
- var surpport = document.getElementById("if203")
- var product = document.getElementById("if6")
- if (project) {
- project.contentWindow.com.RefreshOnDeal();
- }
- if (surpport) {
- surpport.contentWindow.com.RefreshNoDeal();
- }
- if (product) {
- product.contentWindow.com.RefreshNoDeal();
- }
- that.AddNotify(Message,ProblemId,0);
- that.showNotification(Message);
- }
- this.showNotification=function (message) {
- window.Notification.permission = "granted";
- if (window.Notification) {
- if (window.Notification.permission == "granted") {
- var notification = new Notification('你有一条新信息', {
- body: message,
- requireInteraction:true,
- icon: "/Content/Images/zllogo.png"
- });
-
-
- } else {
- window.Notification.requestPermission();
- }
- } else alert('你的浏览器不支持消息提示功能,请使用chrome内核的浏览器!');
- };
- this.OpenMessage = function (message) {
- layer.open({
- offset: 'rb',
- title: false,
- area: '200px',
- shade: 0,
- type: 1,
- content: '<p style="padding:10px;color:#8e804b;font-size:15px">' + message + '</p>',
- icon: 1,
- anim: 2,
- id:'OpenMessage'
- });
- }
- this.GetNotify = function () {
- DbFactory.get("Notify", function (data) {
- data = data.Value;
- that.Notify = data;
- for (var i in data) {
- var nof = data[i];
- if (i < 5)
- $("#Notify").append("<a href='#' onclick=\"checkproblem('" + nof.id + "','" + nof.rowId + "')\" class='list-item'><img src='" + nof.Img + "' style='width:25px' /><p class='item-center'>" + nof.Message + "</p><p class='item-fter'></p></a>");
- }
- if (data.length > 0)
- $("#NotifyCount").append("<span class='badge topbadge badge-danger' >" + data.length + "</span>");
- })
-
- }
- this.AddNotify = function (message, ProblemId,Type) {
- $("#Notify").empty();
- $('#NotifyCount').find('.badge').remove();
- var Img = that.GetIcon(Type);
- that.Notify.unshift({ rowId: that.GetId(4), Message: message, id: ProblemId, Img: Img });
- for (var i in that.Notify) {
- var nof = that.Notify[i];
- if(i<5)
- $("#Notify").append("<a href='#' onclick=\"checkproblem('" + nof.id + "','" + nof.rowId + "')\" class='list-item'><img src='" + nof.Img + "' style='width:25px' /><p class='item-center'>" + nof.Message + "</p><p class='item-fter'></p></a>");
- }
- if (that.Notify.length > 0)
- $("#NotifyCount").append("<span class='badge topbadge badge-danger' >" + that.Notify.length + "</span>");
- that.DbFactory.save({ id: "Notify", Value: that.Notify })
- }
- this.RemovedNotify = function (rowId) {
- $("#Notify").empty();
- $('#NotifyCount').find('.badge').remove();
- for (var i in that.Notify) {
- if (that.Notify[i].rowId == rowId) {
- that.Notify.splice(i, 1);
- break;
- }
-
- }
- for (var i in that.Notify) {
- var nof = that.Notify[i];
- if (i < 5)
- $("#Notify").append("<a href='#' onclick=\"checkproblem('" + nof.id + "','" + nof.rowId + "')\" class='list-item'><img src='" + nof.Img + "' style='width:25px' /><p class='item-center'>" + nof.Message + "</p><p class='item-fter'></p></a>");
- }
- if (that.Notify.length > 0)
- $("#NotifyCount").append("<span class='badge topbadge badge-danger' >" + that.Notify.length + "</span>");
- that.DbFactory.save({ id: "Notify", Value: that.Notify })
- }
- //清除所有消息
- $("#message-Clear").bind('click', function () {
- $("#Notify").empty();
- $('#NotifyCount').find('.badge').remove();
- that.Notify = [];
- })
- this.GetIcon = function (Type) {
- var Icon;
- switch (Type) {
- case 0: Icon = "/Content/Images/Problem/xin.png"; break;
- case 1: Icon = "/Content/Images/Problem/zhipai.png"; break;
- case 2: Icon = "/Content/Images/Problem/jiejue.png"; break;
- case 3: Icon = "/Content/Images/Problem/huitui.png"; break;
- case 4: Icon = "/Content/Images/Problem/zhongzhi.png"; break;
- case 5: Icon = "/Content/Images/Problem/tijiao.png"; break;
- case 6: Icon = "/Content/Images/Problem/daishouli.png"; break;
- case 7: Icon = "/Content/Images/Problem/daichuli.png"; break;
- default: Icon = "/Content/Images/Problem/xin.png"
- }
- return Icon;
- }
- this.GetTime = function (Time) {
- var sdate = new Date(Time);
- var now = new Date();
- var days = now.getTime() - sdate.getTime();
- var day = parseInt(days / (1000 * 60 * 60));
- if (day < 1) {
- day = parseInt(day * 60) + "分钟前";
- } else if (day < 24) {
- day = day + "小时前";
- } else if (48 > day > 24) {
- day = "昨天";
- } else {
- day = parseInt(day / 24) + '天' + '前';
- }
- return day;
- }
- this.GetId=function(n){
- var res = '';
- for (; res.length < n; res += Math.random().toString(36).substr(2).toUpperCase()) { }
- return res.substr(0, n);
- }
- //处理问题
- this.DealProblem=function (showAtt, IsSupport,ProblemId) {
- //是否为技术支持处理
- IsSupport = IsSupport || 0;
- //受理问题
- var receiveProblem = function (title,HJID) {
- var index = top.ZLPMS.Loading3(2);
- //受理问题
- $.ajax({
- url: '/Support/ReceiveProblem',
- data: { id: ProblemId },
- method: 'post',
- success: function (data) {
- top.ZLPMS.UnLoading(index);
- var url = "/Problem/ProductionPdeal?id=" + ProblemId + "&showAtt=" + showAtt + '&workflowid=' + HJID + '&IsSupport=' + IsSupport;
- //成功后调用
- if (data.code == 200) {
- top.ZLPMS.OpenNewWindow("处理问题:" + title, url, '1000px', '640px', function () {
- //回调用刷新(只有确定后才刷新)
- });
- } else {//显示具体原因,并提示是否强制处理
- top.ZLPMS.Confirm('该问题已被他人受理,您确定要继续处理吗?', 3, function (idx) {
- top.ZLPMS.CloseWindow(idx);
- top.ZLPMS.OpenNewWindow("处理问题", url, '1000px', '640px');
- })
- }
- }
- });
- };
- $.post('/Problem/GetProblemById/' + ProblemId, function (data) {
- var row = data[0];
- if (row) {
- /*已关闭的问题,已解决的问题,已受理的问题, 不需要处理*/
- if (row.是否终止 == 1) {
- top.ZLPMS.Msg('已终止的问题不需要再处理!');
- return;
- }
- if (row.是否解决 == 1) {
- top.ZLPMS.Msg('已解决的问题不需要再处理!');
- return;
- }
- if (row.环节ID > 3 && that.RYXZ != '1') {
- top.ZLPMS.Msg('非本部人员不能处理技术支持与研发处理环节问题,仅能查阅!');
- return;
- }
- if (row.环节ID == 3 && (that.RYXZ == '3' || that.RYXZ == '4' || that.RYXZ == '5')) {//客户,机构管理员,卫计委人员无法处理项目问题
- top.ZLPMS.Msg('客户,机构管理员,卫计委人员无法处理项目问题,仅能查阅!');
- return;
- }
- //打开处理窗口
- receiveProblem(row.编号, row.环节ID);
- } else {//提醒用户没有选择问题记录
- top.ZLPMS.Msg('没有选择需要处理的问题记录,请选择后再处理!');
- }
- })
-
- }
- //获取公告
- this.LoginProxy.client.GetNotice = function () {
- $.get("/Notice/PanDuanIsShow", function (data) {
- if (data == "True") {
- //显示公告通知
- top.ZLPMS.OpenNewWindow("公告通知", "/Notice/Notice_Window", "850px", "555px")
- }
- })
- }
- //超时推送
- this.OverTimePush = function () {
- //受理超时
- $.post("/Problem/GetAcceptOverTime", function (data) {
- if (data && data.length > 0) {
- that.AddNotifyMuti("问题待受理已超时,请注意受理",data,6);
- }
- //处理超时
- $.post("/Problem/GetDealOverTime", function (data2) {
- if (data2 && data2.length > 0) {
- that.AddNotifyMuti("问题处理已超时,请注意解决", data2, 7);
- }
- });
- })
-
- }
- this.AddNotifyMuti = function (message, ProblemIds, Type) {
- $("#Notify").empty();
- $('#NotifyCount').find('.badge').remove();
- var Img = that.GetIcon(Type);
- outer:
- for (var t in ProblemIds) {
- var Problem = ProblemIds[t].ID;
- var ProblemNum = ProblemIds[t].编号;
- //如果消息里面存在,则不添加
- inter:
- for (var i in that.Notify) {
- if (that.Notify[i].id == Problem) {
- continue outer;
- }
- }
- that.Notify.unshift({ rowId: that.GetId(4), Message: "编号【" + ProblemNum + "】" + message, id: Problem, Img: Img });
- }
-
- for (var i in that.Notify) {
- var nof = that.Notify[i];
- if (i < 5)
- $("#Notify").append("<a href='#' onclick=\"checkproblem('" + nof.id + "','" + nof.rowId + "')\" class='list-item'><img src='" + nof.Img + "' style='width:25px' /><p class='item-center'>" + nof.Message + "</p><p class='item-fter'></p></a>");
- }
- if (that.Notify.length > 0)
- $("#NotifyCount").append("<span class='badge topbadge badge-danger' >" + that.Notify.length + "</span>");
- }
- }
|