anxiao_web/pages/cmddispatch/js/popNotify.js

197 lines
8.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}