写点什么

网站开发进阶 (十九) 计划任务功能——信息自动弹出

  • 2022 年 5 月 05 日
  • 本文字数:1463 字

    阅读完需:约 5 分钟

网站开发进阶(十九)计划任务功能——信息自动弹出

​一、前言

在项目开发中需求如下:用户在购药 APP 发出购药请求后,匹配送货的药店端在登陆后或处于在线状态时,系统会以弹窗形式进行信息提示。


初步尝试在控制器中使用window.load方法解决,但失败了。估计放在单个页面中不以分离的形式应该会起作用。

//应用 window.onload 方法


window.onload = function(){    alert("window.onload");}
复制代码

二、思路

在经过多次尝试无果后,自己重新整理了一下思路。完成以上功能主要包括 2 点:

1. 设置一个标志用户登录的标志;

2. 设置定时器(有关定时器详见博文“Java 实现定时器(Timer)”)。因为只有在管理员登陆之后,通过定时检查是否有新的订单出现。逻辑图如下所示:


三、​编程实现

对于“设置一个标志用户登录的标志”的要求,可以采用在用户登录成功之后再调用的方式替换。可采用如下代码实现:

appCallServer($http,"S001",{"uid":$scope.uid,"passwd":MyRsaEncrypt(localStorage.publickey,$scope.passwd)},function(data){//登录成功localStorage.uid=$scope.uid;localStorage.mangname=data.mangname;localStorage.sessionid=data.sessionid;$state.go('shop_MedManag');//window.alert("Test");appCallServer($http,"1015",{"uid":$scope.uid},function(data){console.log(data); 	//控制台输出data数据结构,对于调试很管用if(data.cnt <= 0){  alert("无订单");  return;}if(confirm("有新的订单请求,是否查看?")){  //显示订单  $state.go('shop_billManag');}},//fail functionfunction(data){  alert(data.errtext);});});
复制代码

四、confirm 用法

如果用户点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。


在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入。在调用 confirm() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句。

对于“设置定时器”的要求,可采用如下代码实现:


<script type="text/javascript">  var btn = document.getElementById("butQuery");  var shq = true;  btn.onclick = function(){    //alert("SHQ");    appCallServer($http,"1015",{"uid":$scope.uid},function(data){    if(data.cnt <= 0){      alert("无订单");    	return;    }else{      console.log("data:");      console.log(data);//控制台输出data数据结构,对于调试很管用      if(confirm("有新的订单请求,是否查看啊?")){      //显示订单      $state.go('shop_billManag');      }    }  },  //fail function  function(data){  	alert(data.errtext);  });  }  if (shq){    window.setInterval(function(){btn.click()},1*10*1000);    shq = false;  }</script>
复制代码

五、window.setInterval()函数的用法

javescript网页页脚函数,该函数的意义是让浏览器定时执行一些设定好的函数代码,如:window.setInterval('abc()',3000);即浏览器第隔 3 称秒都会执行一次 abc 函数。

现在能够实现的功能是用户登陆之后,若有新的订单,则会进行弹窗提醒。若用户选择查看订单,则会跳转到“订单管理”页面,然后在“订单管理”页面定时刷新。

六、问题

若用户处于别的管理界面中,即使有新的订单到来,服务端后台会执行查询并返回相应结果。但是管理端前台无法实现弹窗提醒效果。这是一个缺陷。需要寻求一种方法实现弹框可以总是出现在最前端

解决思路

想起了一种新的解决思路:自己创建一个新的弹出框,在每个状态页面执行订单查询操作,若有新的订单需求到来,则进行弹窗提示。

发布于: 刚刚阅读数: 3
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
网站开发进阶(十九)计划任务功能——信息自动弹出_5月月更_No Silver Bullet_InfoQ写作社区