Authored by 王涛

Merge branch 'master-500-dev-lushangqing' into 'master-500-dev'

首页告警消除调整,【告警闭环】告警消除时建议将处理意见为必填项



See merge request !532
... ... @@ -2414,7 +2414,8 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele
templet: '<div><span data-biz-detail-status="{{ d.id }}" class="layui-table-link">告警消除</span></div>'
}
]],
done: function () {
done: function (res) {
let alarmData=res.data;
$( '[lay-id="' + tableId + '"] [data-warn-zbmc]').unbind('click').on('click', function () {
var name = $(this).data("name");
var params = {
... ... @@ -2430,32 +2431,96 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele
$('[lay-id="' + tableId + '"] [data-biz-detail-status]').click(function (e) {
var id = $(e.target).data('biz-detail-status');
layer.prompt({id:"detail_clear_alarm_id", title: '告警消除', formType: 2}, function (text, index) {
admin.req({
url: common.domainName + '/api-web/home/alarm/clear'
, type: "post"
, data: {
ids: id.toString(),
reason: text,
access_token: obj.sessions.getToken().access_token,
noticeFlag: $('input[name="noticeFlag"]:checked').val()
}
, done: function (res) {
//如果消除成功,关闭弹出框然后重新加载页面
if (res.success) {
layer.close(index);
layer.msg('告警已消除!', {icon: 1, time: 2000});
alarmlist.reload()
} else {
layer.msg('告警消除失败,请与管理员联系!', {icon: 7, time: 3000});
let alarmObj='';
alarmData.map(item=>{
if(item.id==id){
alarmObj=item;
}
})
//获取知识库开启状态 lsq 2022-04-15
admin.req({
url: common.domainName + '/api-user/sysConf/getByCode',
type: "get",
data: {
code: 'knFlag'
},
done: function (data) {
let knFlag = data.object.value;
if (knFlag == '1') {
//开启闭环
// Start 将对象转成key=value&key1=value1 LSQ 2022/03/22
let urlParams = '';
let params = alarmObj;
for (let key in params) {
if (params[key] || params[key] == 0) {
let str = params[key];
if (typeof str == 'string') {
str = str.replace(/%/g, '%25');
}
urlParams += key + '=' + encodeURIComponent(str) + '&'
}
}
urlParams = urlParams.substr(0, urlParams.length - 1) + '&alarmTypeCustom=active';
//判断告警是否已经存入消除草稿 lsq 2022-04-14
admin.req({
url: common.domainName + '/api-web/bAlarmManage/manageInto',
type: "get",
data: {
alarmId: params.id
},
done: function (data) {
if (data.data && data.data.length > 0) {
//已存入了草稿
layer.msg('告警消除已存入草稿中了!', {icon: 2, time: 2000});
} else {
layer.open({
title: ['告警消除', 'font-size:18px;'],
type: 2,
area: ['80%', '90%'],
shadeClose: true,//开启遮罩层
id: 'alarms_clear_id',
// content: laytpl(res.body).render(JSON.stringify(params)),
content: ['/vue3/index.html#/alarmsClearEditor?' + urlParams, 'no'],
cancel: function () {
clearTimeout();
}
});
}
}
})
} else {
//不开启闭环
//获取以往告警消除意见
layer.prompt({id:"detail_clear_alarm_id", title: '告警消除', formType: 2}, function (text, index) {
admin.req({
url: common.domainName + '/api-web/home/alarm/clear'
, type: "post"
, data: {
ids: id.toString(),
reason: text,
access_token: obj.sessions.getToken().access_token,
noticeFlag: $('input[name="noticeFlag"]:checked').val()
}
, done: function (res) {
//如果消除成功,关闭弹出框然后重新加载页面
if (res.success) {
layer.close(index);
layer.msg('告警已消除!', {icon: 1, time: 2000});
alarmlist.reload()
} else {
layer.msg('告警消除失败,请与管理员联系!', {icon: 7, time: 3000});
}
}
});
});
$("#detail_clear_alarm_id").find('textarea.layui-layer-input').attr("placeholder","消除意见(必填)");
$("#detail_clear_alarm_id").append('<div style="padding-top: 15px;"><span>是否通知:</span> ' +
'<input type="radio" name="noticeFlag" value="true" title="是">&nbsp;是' +
'<input type="radio" name="noticeFlag" value="false" title="否" checked="" style="margin-left: 20px;">&nbsp;否</div> ');
}
});
});
$("#detail_clear_alarm_id").find('textarea.layui-layer-input').attr("placeholder","消除意见(必填)");
$("#detail_clear_alarm_id").append('<div style="padding-top: 15px;"><span>是否通知:</span> ' +
'<input type="radio" name="noticeFlag" value="true" title="是">&nbsp;是' +
'<input type="radio" name="noticeFlag" value="false" title="否" checked="" style="margin-left: 20px;">&nbsp;否</div> ');
}
})
});
}
});
... ...
... ... @@ -137,9 +137,11 @@
v-model="opinion"
type="textarea"
:rows="5"
placeholder="此处输入审核意见"
maxLength="200"
show-word-limit
placeholder="此处输入审核意见(最大200个字符)"
/>
<div class="opinion-style" v-if="((status==2 || (status==3 && approverName==loginName) || (status==1 && handleInfoObj.managename==loginName)) && handleInfoObj.managename!=approverName) || (status==2 && handleInfoObj.managename==approverName)">
<div class="opinion-style" v-if="((status==2 || (status==3 && approverName==loginName) || (status==1 && handleInfoObj.managename==loginName)) && handleInfoObj.managename!=approverName) || (status==2 && handleInfoObj.managename==approverName) || status==3">
{{opinion}}
</div>
</div>
... ...
... ... @@ -34,6 +34,7 @@ export default {
},
setup(props, {attrs, slots, emit}){
const {proxy} = Vue.getCurrentInstance();
let test=Vue.ref('');
let isClear=Vue.ref(false);
let detail=Vue.ref('');
... ... @@ -48,7 +49,6 @@ export default {
let loginName=Vue.ref('');
let options=Vue.ref([{value:'001',name:'admin'},{value:'002',name:'root'}])
let timer=Vue.ref(null);
//富文本带标签内容
let change=(val)=> {
detail.value=val;
... ... @@ -76,7 +76,7 @@ export default {
proxy.$global.showMsg("请输入审核意见", 'warning');
return;
}
if((val==0 || val==1 ) && repositoryInto.value && !pcontent){
if((val==0 || val==1 ) && repositoryInto.value && (!pcontent || !detailText.value)){
proxy.$global.showMsg("请输入处理方案", 'warning');
return;
}
... ... @@ -110,7 +110,7 @@ export default {
alarmType:alarmInfo.value.alarmTypeCustom,//告警类型,active活动告警,his历史告警
managetime:dateTime.value,
managename:loginName.value,
alarmHisId:alarmInfo.value.alarmTypeCustom=='active' || props.status==0?'':alarmInfo.value.primaryKey,
alarmHisId:alarmInfo.value.alarmTypeCustom=='active' || props.status==0?handleInfoObj.value.alarmHisId:alarmInfo.value.primaryKey,
}
if(repositoryId.value){
params.repositoryId=repositoryId.value;//引用知识库id
... ...