anxiao_web/pages/cmddispatch/js/popNotify.js

197 lines
8.0 KiB
JavaScript
Raw Normal View History

2024-07-24 09:22:32 +08:00
import { layuiObj } from './index.js';
import { ajax } from '../api/ajax.js';
import { movedeviceurl,stationurl } from '../../../public/js/url.js';
import { timestampFormatTime } from '../../../public/js/timestamp.js';
var notifyIndex=null;
var notifyTemplate={
"holiday":'节日期间,人流密集,请各单位组织排查火灾情况,加强巡逻和值班工作。',
"hightemp":'高温天气预,请各单位组织排查火灾情况,并做好防暑工作。',
"lightningstorm":'雷电暴雨天气预,请各单位排查建筑物,谨防坠物伤人。'
};
var notifyDeviceArr=null;
function popNotify(deviceArr){
notifyDeviceArr=JSON.parse(JSON.stringify(deviceArr));
if(notifyIndex==null){
var notifyType="moveDevice";
if(notifyDeviceArr.length>1){
var title=`通知群发[${notifyDeviceArr.length}]`;
}else{
var title=notifyDeviceArr[0]["showname"];
}
notifyIndex=layuiObj["layer"].open({
type: 1,
title: false, //不显示标题栏
closeBtn: false,
area: ['446px', '430px'],
shade: 0.4,
id: new Date().getTime(), //设定一个id防止重复弹出
btnAlign: 'c',
move:'.layui-move',
moveType: 1, //拖拽模式0或者1
content:`<div class="popnotify popWindows">
<div class="notifyInfo">
<div class="notifyTitle">
<span class="layui-move">通知发送</span>
<img src="./pages/cmddispatch/image/closeInfoWindow.png">
</div>
<div class="notifyContent">
<fieldset class="layui-elem-field layui-field-title">
<legend class="NotifyStationName">${title}</legend>
</fieldset>
<form class="layui-form" action="" lay-filter="sendnotifyForm" id="sendnotifyForm" notifytype='${notifyType}'>
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" value='' placeholder="请输入标题" autocomplete="off" class="layui-input" id="notifyTitle">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<select name="quiz" lay-filter="notifyType" id="notifyType">
<option value="">请选择模板</option>
<option value="holiday">节假日</option>
<option value="hightemp">高温</option>
<option value="lightningstorm">雷电暴雨</option>
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">内容</label>
<div class="layui-input-block notifyTypeFile">
<textarea placeholder="请输入内容" class="layui-textarea" name="desc" id="notifyContent" autocomplete="off" lay-verify="required" style="resize: none;"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block notifyblockBtn">
<button type="button" class="layui-btn" lay-submit id="NotifySubmit">发送</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>`,
success: function(layero){
sendnotifyEvent();
}
});
}
layuiObj.layuiForm.render("select","sendnotifyForm");
layuiObj.layuiForm.render("checkbox","sendnotifyForm");
layuiObj.layuiForm.on('select(notifyType)', function(data){
var value=data["value"];
value=notifyTemplate[value];
$("#notifyContent").val(value);
layuiObj.layuiForm.render("checkbox","sendnotifyForm");
})
//关闭
$(".notifyTitle>img").click(function(){
layuiObj["layer"].close(notifyIndex);
notifyIndex=null;
})
}
function getnotifyContent(){
var title=$("#notifyTitle").val();
var type=$("#notifyType").find("option:selected").text();
var content=$("#notifyContent").val();
var timestamp=(new Date().getTime());
var pts= (new Date()).valueOf();
var obj={};
obj["title"]=title;
obj["content"]=content;
obj["type"]=type;
obj["time"]=timestampFormatTime(timestamp),
obj["timestamp"]=timestamp.toString()
obj["pts"]=pts
return obj;
}
function sendnotifyEvent(){
//发送通知
$("#NotifySubmit").off('click');
$("#NotifySubmit").on('click',function(){
var notifyInfo=getnotifyContent();
var notifySendALL=[];
notifyDeviceArr.map((item)=>{
notifySendALL.push(sendNotifyReq(notifyInfo,item));
notifySendALL.push(sendNotifyMqttReq(notifyInfo,item));
})
Promise.all(notifySendALL).then((res) => {
layuiObj["layer"].close(notifyIndex);
notifyIndex=null;
layuiObj["layer"].msg("发送成功");
});
})
}
function sendNotifyReq(notifyInfo,item){
var nUrl=movedeviceurl+"/mdev/notice/send";
var unameInfo=JSON.parse(sessionStorage.getItem("unameInfoStr"));//获取用户登录信息
var deviceid=item.deviceid;
var obj={
content:notifyInfo["content"],
noticeid:notifyInfo["timestamp"],
receiver:deviceid,
sender:unameInfo["user_name"],
sendtype:"toclient",
title:notifyInfo["title"]
}
return ajax(nUrl,obj);
}
function sendNotifyMqttReq(notifyInfo,item){
var unameInfo=JSON.parse(sessionStorage.getItem("unameInfoStr"));//获取用户登录信息
var deviceid=item.deviceid;
var showname=item.showname;
var station=item.station;
var messageData={
"title":"notify",
"sender":unameInfo.user_name,
"department":"",
"scope":"",
"receiver":[deviceid],
"video":"",
"rtm":notifyInfo["timestamp"],
"data":{
"number":notifyInfo["timestamp"],
"title":notifyInfo["title"],
"content":notifyInfo["content"],
"sender":unameInfo["user_name"],
"time":notifyInfo["time"],
"pts":notifyInfo["timestamp"],
"receiver":"alone",
"alias":showname,
"cid":"",
"noticeid":notifyInfo["timestamp"]
},
"userScope":"",
"userBragide":"",
"userDetachchment":"",
"userBorough":"",
"name":"web"
}
var obj={
// topic:station+"/ter_cmd",
topic:deviceid+"_rtmtranfer",
message:JSON.stringify(messageData)
}
if(stationurl=="http://43.15.198.61:8083"){
var nUrl=stationurl+"/firectrl/client/notice/sendudp";
}else{
var nUrl=stationurl+"/firectrl/client/notice/sendmqtt";
}
return axios({
method:'post',
url:nUrl,
data:obj
})
}
export {popNotify}