Authored by 王涛

Merge branch 'master-500-dev' of http://192.168.1.136:82/monitor_v3/hg-monitor-w…

…eb into master-500-dev
Showing 19 changed files with 355 additions and 84 deletions
... ... @@ -851,9 +851,24 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'soulTable', 'sessions', 'comm
$('table tr').hover(function (obj) {
$(obj.currentTarget).find('.reslist-view-topo').removeClass('hide');
$(obj.currentTarget).find('.reslist-assets-details').removeClass('hide');
// Start 资源视图中的资源名称在表格中溢出时给最大宽度限制-更改单元格溢出时的tip跑到左上角 LSQ 2022/1/6
var w=$(obj.currentTarget).find('#res-div span').innerWidth();
var spanMaxW=parseInt($(obj.currentTarget).find('#res-div span').css('max-width'));
//-20是一个图标的宽度,若要增加图标,这里的20需要增加
var maxW=(w-20)+'px';
if(w+15>=spanMaxW){
$(obj.currentTarget).find('#res-div span').css('max-width',maxW)
}
}, function (obj) {
$(obj.currentTarget).find('.reslist-view-topo').addClass('hide');
$(obj.currentTarget).find('.reslist-assets-details').addClass('hide');
var w=$(obj.currentTarget).find('#res-div span').innerWidth();
var spanMaxW=parseInt($(obj.currentTarget).find('#res-div span').css('max-width'));
var maxW=(w+20)+'px';
if(w+15>=spanMaxW){
$(obj.currentTarget).find('#res-div span').css('max-width',maxW)
}
//End LSQ 2022/1/6
})
// 加入/移出收藏夹
... ...
... ... @@ -645,6 +645,7 @@ layui.define(['table', 'form', 'sessions', 'common', 'view', 'admin', 'upload','
} else {
clearInterval(timeTask);
layer.confirm(response.msg, {icon: 1, offset: '100px'});
reloadCollectorTable();
resetBtn();
}
} else {
... ...
... ... @@ -96,7 +96,7 @@ layui.extend({
//请求视图渲染
view().render(path.join('/')).then(function(res){
console.log("tag&&&&&&&&&",res,pathURL)
//遍历页签选项卡
var matchTo
,tabs = $('#LAY_app_tabsheader>li');
... ... @@ -113,7 +113,9 @@ layui.extend({
try {
let el = admin.tabsPage.elem;
if(el && el.attr('lay-href-type')){
if(el.attr('lay-href-type') == 'menu' && !matchTo){
//lsq 页面刷新后名称改变 2022-03-29
// if(el.attr('lay-href-type') == 'menu' && !matchTo){
if(el.attr('lay-href-type') == 'menu'){
tabName= admin.tabsPage.elem.text()
}
}
... ...
... ... @@ -533,7 +533,72 @@
</p>
</div>
</script>
<!--//start lsq 首页、资源视图、业务视图的资源名称点击进入详情-->
<!--资源名称-->
<script type="text/html" id="resindex_resName">
<!-- 更改单元格溢出时的tip跑到左上角 LSQ 2022/1/6-->
<div id="res-div">
{{# var urlLast=window.location.hash;
var w=$(".layui-table thead th[data-field='resName']").data('minwidth');
if(urlLast=="#/res/index"){
w=$("[lay-id='resListTable'] table thead th[data-field='resName'").data('minwidth');
}else if(urlLast=="#/biz/index"){
w=$("[lay-id='bizListTable'] table thead th[data-field='resName'").data('minwidth');
}else if(urlLast.indexOf("#/biz/list")!=-1){
w=$("[lay-id='bizResListTable'] table thead th[data-field='resName'").data('minwidth');
w=w?w:$("[lay-id='bizResListTable'] table thead th[data-field='resName'").innerWidth();
}
var maxW=(w-45)+'px';
var styleW="float: left;max-width: "+maxW+";overflow: hidden; text-overflow: ellipsis; white-space: nowrap;display: inline-block;";
}}
<span lay-tips="{{ d.resName }}" style="{{styleW}}" data-zymc="{{ d.resId }}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-childrennum="{{d.childrenNum}}" data-ip="{{ d.ip }}" data-resTypeName="{{ d.resTypeName }}" data-admin="{{ d.admin }}" data-adminname="{{ d.adminName }}" data-pingenable="{{d.pingEnable}}" data-manageIp="{{d.manageIp}}" data-collProtocol="{{d.collProtocol}}" data-provider="{{d.provider}}" data-state="{{d.state}}" class="layui-table-link">{{ d.resName }}</span>
{{# if (d.favId == null) { }}
<a class="layui-icon layui-icon-rate hide" data-favid="{{d.favId}}" data-id="{{d.resId}}" lay-tips="加入收藏夹" style="font-size: 14px"></a>
{{# } else { }}
<a class="layui-icon layui-icon-rate-solid" data-favid="{{d.favId}}" style="color: #FEB61E; font-size: 14px; margin-left: 1px;" data-id="{{d.resId}}" lay-tips="移出收藏夹"></a>
{{# } }}
<a class="layui-icon reslist-view-topo hide" data-resid="{{d.resId}}" style="color: #FEB61E; font-size: 14px; margin-left: 1px;" lay-tips="查看资源拓扑"><i class="iconfont">&#XE515;</i></a>
<!--{{# if (d.resCategory == 'share' && d.hardwareFlag && d.hardwareFlag.endsWith("Y")) { }}
<a class="layui-icon reslist-assets-details hide" data-resid="{{d.resId}}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-ip="{{ d.ip }}" style="color: #FEB61E; font-size: 14px; margin-left: 10px;" lay-tips="资产配置信息"><i class="iconfont">&#XE517;</i></a>
{{# } }}-->
</div>
</script>
<!--详情页面连接状态-->
<script type="text/html" id="linkStateDetailTpl">
{{#
var linkStateHtml = '';
var linkStateTips = '无连接信息';
if(d.linkStateList && d.linkStateList.length) {
linkStateTips = '';
if(d.linkStateList.length == 1) {
var linkState = d.linkStateList[0];
linkStateTips = `${linkState.protocol}: ${linkState.state}`;
if(linkState.state.indexOf('成功') !== -1) {
linkStateHtml = `<span class="span-green">${linkState.state}</span>`;
} else {
linkStateHtml = `<span class="span-red">${linkState.state}</span>`;
}
} else {
linkStateTips += `<ul class='ul-link-state-tips'>`;
layui.each(d.linkStateList, function(index, value) {
if(value.state.indexOf('成功') !== -1) {
linkStateTips += `<li class='li-link-state-tips-green'>${value.protocol}: ${value.state}</li>`;
linkStateHtml += '<div class="layui-badge-dot layui-bg-green"></div>';
} else {
linkStateTips += `<li class='li-link-state-tips-red'>${value.protocol}: ${value.state}</li>`;
linkStateHtml += '<div class="layui-badge-dot layui-bg-red"></div>';
}
});
linkStateTips += '</ul>';
}
}
}}
<div class="div-link-state-list" lay-tips="{{linkStateTips}}">
{{linkStateHtml}}
</div>
</script>
<!--//end lsq 2022-03-29-->
<!--最大文件系统使用率-->
<script type="text/html" id="fileUseRateTpl">
<div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI449F5365" data-flag="fs" data-name="{{d.os=='windows'?'磁盘使用情况':'文件系统使用情况'}}" data-showtype="bar" data-barkpiid="{{d.os=='windows'?'KPI29D42042,KPI1988842F':'KPIA91F44E7,KPI98306224'}}" data-barxaxis="{{d.os=='windows'?'KPI9D22EAB6':'KPI7AC1664E'}}"
... ...
... ... @@ -6,6 +6,13 @@
max-height: 100%;
overflow: auto;
}
.alarmsClearEditor-container .el-button--primary{
background: #1E9FFF;
border-color: #1E9FFF;
}
.alarmsClearEditor-container .el-tag{
color:#1E9FFF;
}
.alarmsClearEditor-info{
/*padding:10px;*/
}
... ... @@ -40,6 +47,10 @@
text-align: left;
width:100%;
}
.info-item-statistics .el-collapse-item__content{
max-height:250px;
overflow: auto;
}
.info-content{
margin-bottom: 5px;
}
... ... @@ -136,3 +147,32 @@
.apply-btn .el-button{
margin:3px;
}
.clearDetail-container{
padding:0 15px;
min-height: 500px;
max-height:800px;
overflow: auto;
}
.clearDetail-title{
text-align: left;
font-size:16px;
}
.clearDetail-handlePer{
display: flex;
align-items: center;
justify-content: space-between;
}
.clearDetail-handlePer{
padding:10px 0;
color:#999999;
}
.editor{
text-align: left;
}
.tag-keyword-span{
padding:5px 10px;
background: #ecf5ff;
color:#1E9FFF;
margin:5px;
border-radius: 3px;
}
... ...
<div class="info-content">
<div class="info-content-body">
<div class="content-body-info">
<div class="info-item-notice">通知信息:{{alarmInfo.alarmContent}}</div>
<div class="info-item-notice">通知人清单:{{alarmInfo.nickName}}</div>
</div>
</div>
</div>
<div class="info-content">
<div class="info-content-body">
<div class="content-body-info">
<div class="info-item-statistics">
统计信息:该告警历史上出现了{{statisticsData.alarmCnt?statisticsData.alarmCnt:0}}次
<span v-if="statisticsData.alarmCnt">,平均持续时长{{statisticsData.continueTimeAvg?statisticsData.continueTimeAvg:0}}s,
... ...
... ... @@ -6,10 +6,6 @@ export default {
type: String,
default: ''
},
alarmInfo:{
type:Object,
default:{}
},
//同类型告警处理审核部分是否显示
isExamine: {
type: Boolean,
... ...
... ... @@ -40,7 +40,7 @@
<template #tools="{scope}" >
<div class="apply-btn">
<el-button v-if="(scope.row.status==1 && scope.row.approver==loginName) || ((scope.row.status==0 || scope.row.status==3) && scope.row.managename==loginName) " @click="handle(scope.row)" size="mini">处理</el-button>
<el-button v-if="(scope.row.status==1 && scope.row.managename==loginName) || scope.row.status==2 " @click="handle(scope.row)" size="mini">查看</el-button>
<el-button v-if="(scope.row.status==1 && scope.row.managename==loginName) || scope.row.status==2 || (scope.row.status==3 && scope.row.approver==loginName)" @click="handle(scope.row)" size="mini">查看</el-button>
</div>
</template>
... ... @@ -52,7 +52,7 @@
<!--新增编辑弹框-->
<cm-dialog :title="dialog.title" :showDialogVisible="dialog.show" @hidedialog="hideDialog" :showFooter="false">
<template v-slot>
<alarmsClearEditor :isExamine="true" @saveback='saveback' :status="dialog.amStatus" :amId="dialog.amId" />
<alarmsClearEditor v-if="dialog.show" :isExamine="true" @saveback='saveback' :status="dialog.amStatus" :amId="dialog.amId" :alarmId="dialog.alarmId"/>
</template>
</cm-dialog>
... ...
... ... @@ -23,7 +23,8 @@ export default {
title : "处理审批",
show:false,
amId : '',
amStatus:0
amStatus:0,
alarmId:'',
});
//表格字段
... ... @@ -116,6 +117,7 @@ export default {
hideDialog(true);
dialog.value.amId = row.id;
dialog.value.amStatus = row.status;
dialog.value.alarmId = row.alarmId;
}
//审核保存后关闭弹框
let saveback=(val)=>{
... ...
<div class="clearDetail-container">
<div class="clearDetail-title">消除原因:{{handleInfoObj.reason}}</div>
<div class="clearDetail-handlePer">
<div class="handlePer-left">
<span>处理人:{{handleInfoObj.managenameName}}</span>
</div>
<div>
<span>处理时间:{{handleInfoObj.managetime}}</span>
</div>
<div class="handlePer-left">
<span>审批人:{{handleInfoObj.approverName}}</span>
</div>
</div>
<div class="clearDetail-pcontent" v-html="handleInfoObj.pcontent">
图文信息{{handleInfoObj.pcontent}}
</div>
</div>
\ No newline at end of file
... ...
export default {
name: 'alarmsClearEditorDetail',
template: '',
components: {
},
props: {
isExamine: {
type: Boolean,
default: false
},
amId:{
type:String,
default: ''
}
},
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
let handleInfoObj=Vue.ref('');
let getDetail=()=>{
proxy.$http.get(`/api-web/bAlarmManage/getAlarmManageById`, {amId:props.amId}, function (res) {
if (res && res.code == 0) {
if(res.object){
handleInfoObj.value=res.object;
}
}
})
}
// 挂载完
Vue.onMounted(() => {
getDetail();
})
return {
handleInfoObj,
getDetail,
}
}
}
... ...
... ... @@ -61,10 +61,19 @@
</div>
</div>
</div>
<div class="info-content">
<div class="info-content-body">
<div class="content-body-info">
<div class="info-item-notice">通知信息:{{alarmInfo.alarmContent}}</div>
<div class="info-item-notice">通知人清单:{{alarmInfo.nickName}}</div>
</div>
</div>
</div>
<!--通知统计信息组件-->
<cm-notice-statistics :alarmId="alarmId" :alarmInfo="alarmInfo" :isExamine="isExamine"></cm-notice-statistics>
<cm-notice-statistics v-if="alarmIdVal" :alarmId="alarmIdVal" :isExamine="isExamine"></cm-notice-statistics>
</div>
<div class="alarmsRadio" v-if="alarmInfo.alarmTypeCustom=='active' || status==0 || status==3">
<div class="alarmsRadio" v-if="alarmInfo.alarmTypeCustom=='active' || alarmInfo.alarmTypeCustom=='his' || status==0 || status==3">
<div class="alarmNotice-title">消除原因</div>
<div class="alarmsNotice">
<div class="alarmsDes"><el-input v-model="reason" placeholder="消除原因" /></div>
... ... @@ -112,10 +121,11 @@
<i class="el-icon-edit-outline update-icon" v-if="!isExamine || status==0 || status==3" @click="showUserDialog(true)" ></i>
</span>
</span>
<span class="title-handle-per" v-if="!isExamine || status==0 || status==3">时间:{{dateTime}}</span>
<span class="title-handle-per" v-if="!isExamine || status==0">时间:{{dateTime}}</span>
<span class="title-handle-per" v-if="status==3">时间:{{handleInfoObj.managetime}}</span>
</div>
<cm-wang-editor v-if="!isExamine || status==0 || status==3" v-model="detail" :repositoryInfo="repositoryInfo" :isDisabled="repositoryInto==1?true:false" :isClear="isClear" @change="change" @changetext="changetext"></cm-wang-editor>
<div class="editor_detail" v-if="isExamine && status!=0 && status!=3" >
<cm-wang-editor v-if="!isExamine || status==0 || (status==3 && handleInfoObj.managename==loginName)" v-model="detail" :repositoryInfo="repositoryInfo" :isDisabled="repositoryInto==1?true:false" :isClear="isClear" @change="change" @changetext="changetext"></cm-wang-editor>
<div class="editor_detail" v-if="isExamine && status!=0 && (status==3 && approverName==loginName)" >
<div v-html="handleInfoObj.pcontent"></div>
</div>
</div>
... ... @@ -134,7 +144,10 @@
</div>
</div>
<div class="alarmsClearTag" v-if="repositoryInto && (!isExamine || status==0 || status==3) ">
<div class="tag-keyword">
<div class="tag-keyword" v-if="approverName==loginName">
关键字:<span class="tag-keyword-span" v-for="tag in dynamicTags">{{tag}}</span>
</div>
<div class="tag-keyword" v-if="handleInfoObj.managename==loginName">
关键字:
<el-tag
v-for="tag in dynamicTags"
... ... @@ -155,7 +168,7 @@
@keyup.enter="handleInputConfirm"
@blur="handleInputConfirm"
/>
<el-button v-else class="button-new-tag ml-1" size="small" @click="showInput">
<el-button v-else class="button-new-tag ml-1" size="small" @click="showInput" >
+ 添加
</el-button>
</div>
... ... @@ -172,13 +185,13 @@
</div>
<div class="alarmsClearEditor-btn">
<el-button type="primary" @click="saveDetail(0)" v-if="!isExamine" size="small">存为草稿</el-button>
<el-button type="primary" @click="saveDetail(1)" v-if="!isExamine || status==0 ||status==3" size="small">确认</el-button>
<el-button type="primary" @click="saveDetail(1)" v-if="!isExamine || status==0 || (status==3 && handleInfoObj.managename==loginName)" size="small">确认</el-button>
{{amStatus}}
<el-button type="primary" @click="saveDetail(2)" v-if="isExamine && status==1 && approverName==loginName" size="small">通过</el-button>
<el-button type="primary" @click="saveDetail(3)" v-if="isExamine && status==1 && approverName==loginName" size="small">不通过</el-button>
<el-button @click="cancleBtn(0)" size="small">取消</el-button>
</div>
<cm-userright title="审批人(不支持多人,多选默认取第一个人)" :titles="titles" :showRole="false" :showGroup="false" :showDialogVisible="showUserDialogVisible" :selectedArr="userFileRight" :userArr="userList" :isUser="false" :showOrg="false" @callback="selectUser"
<cm-userright title="审批人(不支持多人,多选默认取第一个人)" :titles="titles" :buttonTexts="buttonTexts" :showRole="false" :showGroup="false" :showDialogVisible="showUserDialogVisible" :selectedArr="userFileRight" :userArr="userList" :isUser="false" :showOrg="false" @callback="selectUser"
@hideDialog="showUserDialog"></cm-userright>
<!--关键字提取列表-->
<cm-dialog :title="title" width="60%" :showDialogVisible="dialogVisible" :showFooter="true" @okfunc="okfunc" @hidedialog="closeDetail" :showOkBtn="true">
... ...
... ... @@ -15,6 +15,11 @@ export default {
status:{
type:Number,
default:1
},
//告警id
alarmId:{
type:String,
default:''
}
},
data () {
... ... @@ -29,7 +34,7 @@ export default {
let detail=Vue.ref('');
let detailText=Vue.ref('');
//统计信息及同类型告警的alarmId
let alarmId=props.amId?Vue.ref(props.amId):'';
let alarmIdVal=Vue.ref('');
//审批人
let approver=Vue.ref('');
let approverName=Vue.ref('admin');
... ... @@ -197,6 +202,7 @@ export default {
}
// 审批人列表
let titles=['选择列表','已选择列表'];
let buttonTexts=['取消', '选择'];
let showUserDialogVisible = Vue.ref(false);
let userFileRight = Vue.ref([]);//已选择的用户
//获取所有审批人
... ... @@ -256,7 +262,6 @@ export default {
let userNames = userObj.user.map(function (v) {
return v.nickname;
});
console.log("userIds",userObj)
approverName.value=userIds[0];
approverLabel.value=userNames[0];
... ... @@ -284,10 +289,24 @@ export default {
}else{
// getAlarmStatis();
}
alarmIdVal.value=props.alarmId;
getAlarmStatis();
// }
}else {
alarmInfo.value=proxy.$route.query;
let urlObj=proxy.$route.query;
if(urlObj){
for(let key in urlObj){
urlObj[key]=decodeURIComponent(urlObj[key])
}
}
alarmInfo.value=urlObj;
if(alarmInfo.value.alarmTypeCustom=='his'){
let str=alarmInfo.value.alarmContent;
let startIndex=str.indexOf("消除原因");
let endIndex=str.indexOf(",消除内容");
reason.value=str.substring(startIndex+5,endIndex);
}
alarmIdVal.value=alarmInfo.value.primaryKey;
getUser();
}
getUserByToken();
... ... @@ -403,9 +422,6 @@ export default {
let data=res.object;
if(data){
alarmInfo.value=data;
if(alarmInfo.value.id){
alarmId.value=alarmInfo.value.id;
}
if( alarmInfo.value.approver){
approverName.value=alarmInfo.value.approver;
userList.value.map(item=>{
... ... @@ -448,9 +464,9 @@ export default {
options,inputValue,dynamicTags,inputVisible,handleClose,showInput,handleInputConfirm,
getKeyword, timer,dateTime,getDateTime,timeFormat,
title, dialogVisible, height, dataList, columns, closeDetail,okfunc, getPage,selectionChange,dynamicTagsAppend,
showUserDialog,showUserDialogVisible,userFileRight,userList,selectUser,getUserList,titles,
showUserDialog,showUserDialogVisible,userFileRight,userList,selectUser,getUserList,titles,buttonTexts,
getAlarmInfo,alarmInfo,cascaderValue,propsTrigger,handleChange,cascaderOptions,noticeFlag,
getUserByToken,getUser,cancleBtn,repositoryInfo,repositoryId,opinion,getAlarmStatis,handleInfoObj,alarmId
getUserByToken,getUser,cancleBtn,repositoryInfo,repositoryId,opinion,getAlarmStatis,handleInfoObj,alarmIdVal
}
}
... ...
... ... @@ -31,7 +31,8 @@
<template #tools="{scope}">
<div class="list-handle">
<span class="icon-bg">
<i class="el-icon-delete" title="处理" @click="handleDelete(scope.row)"></i>
<!-- <i class="el-icon-delete" title="处理" @click="handleDelete(scope.row)"></i>-->
<i class="el-icon-view" title="查看" @click="handleView(scope.row)"></i>
</span>
</div>
</template>
... ... @@ -43,7 +44,7 @@
<!--弹框-->
<cm-dialog :title="dialog.title" width="40%" :showDialogVisible="dialog.show" @hidedialog="hideDialog" :showFooter="false">
<template v-slot>
<alarmsClearEditor :isExamine=true :amId="dialog.adId" />
<clearDetail :isExamine=true :amId="dialog.amId" />
</template>
</cm-dialog>
... ...
... ... @@ -5,8 +5,8 @@ export default {
'resNameComponents': Vue.defineAsyncComponent(
() => myImport('components/page/res/resNameComponents/index')
),
'alarmsClearEditor': Vue.defineAsyncComponent(
() => myImport('views/alarmsClearEditor/index')
'clearDetail': Vue.defineAsyncComponent(
() => myImport('views/alarmsClearEditor/clearDetail/index')
)
},
props: [],
... ... @@ -20,7 +20,7 @@ export default {
limit: 10,
});
let dialog = Vue.ref({
title : "处理审批",
title : "审批详情",
show:false,
amId : ''
});
... ... @@ -116,10 +116,13 @@ export default {
// 处理弹框
let handle = (row) =>{
hideDialog(true);
dialog.value.amId = row.amId;
dialog.value.amId = row.amid;
}
//查看详情
let handleView = (row) =>{
handle(row);
}
// 挂载完
Vue.onMounted(() => {
getDataList();
... ... @@ -134,7 +137,8 @@ export default {
handle,
loaddata,
tableData,
getDataList
getDataList,
handleView
}
}
... ...
... ... @@ -257,7 +257,6 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
code: 'knFlag'
},
done: function (data) {
console.log("knFlag",data)
let knFlag=data.object.value;
if(knFlag == '1'){
//开启闭环
... ... @@ -270,10 +269,13 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
return;
}
let params=paramsData[0];
console.log("params",params)
for(let key in params){
if(params[key]){
urlParams+=key+'='+params[key]+'&'
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';
... ...
... ... @@ -1031,8 +1031,23 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'commonCols
//绑定鼠标移入移出事件
$('table tr').hover(function (obj) {
$(obj.currentTarget).find('.reslist-view-topo').removeClass('hide');
// Start 资源视图中的资源名称在表格中溢出时给最大宽度限制-更改单元格溢出时的tip跑到左上角 LSQ 2022/1/6
var w=$(obj.currentTarget).find('#res-div span').innerWidth();
var spanMaxW=parseInt($(obj.currentTarget).find('#res-div span').css('max-width'));
//-20是一个图标的宽度,若要增加图标,这里的20需要增加
var maxW=(w-20)+'px';
if(w+15>=spanMaxW){
$(obj.currentTarget).find('#res-div span').css('max-width',maxW)
}
}, function (obj) {
$(obj.currentTarget).find('.reslist-view-topo').addClass('hide');
var w=$(obj.currentTarget).find('#res-div span').innerWidth();
var spanMaxW=parseInt($(obj.currentTarget).find('#res-div span').css('max-width'));
var maxW=(w+20)+'px';
if(w+15>=spanMaxW){
$(obj.currentTarget).find('#res-div span').css('max-width',maxW)
}
//End LSQ 2022/1/6
})
// 加入/移出收藏夹
... ...
... ... @@ -21,7 +21,26 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
var bizId='';//业务Id
var busIdSelect;
var busTypeList = [];
//获取知识库开启状态
var knFlag=0;
var minWidthHandle=100;
function getSysConfCode(){
admin.req({
url: common.domainName + '/api-user/sysConf/getByCode',
type: "get",
data: {
code: 'knFlag'
},
done: function (data) {
knFlag = data.object.value;
if (knFlag == '1') {
//开启闭环
minWidthHandle=150;
}
}
})
}
getSysConfCode();
if (alarmNo) {
$("#historywarningkw").val(alarmNo);
}
... ... @@ -229,7 +248,6 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
})
});
}
//渲染表格
var historywarningTable;
//获取配置的列
... ... @@ -242,6 +260,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
if (retCols) {
cols = retCols;
} else {
cols = [
{type: 'checkbox', fixed: 'left'}
, {
... ... @@ -281,8 +300,13 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
, {field: 'alarmTime', title: '首次告警时间', align: 'center', minWidth: 180, sort: true}
, {field: 'durationStr', title: '持续时间', align: 'center', width: 190}
, {
title: '操作', align: 'center', minWidth: 100,
templet: '<div><!--<span history-data-warn-clear="{{d.id}}" class="layui-table-link">消除</span>--> <span history-data-warn-view="{{d.id}}" class="layui-table-link">查看</span> <span history-data-warn-path="{{d.id}}" class="layui-table-link">轨迹</span></div>'
title: '操作', align: 'center', minWidth: minWidthHandle,
templet: `<div>
<span history-data-warn-clear="{{d.id}}" class="layui-table-link">补录</span>
<span history-data-warn-view="{{d.id}}" class="layui-table-link">查看</span>
<span history-data-warn-path="{{d.id}}" class="layui-table-link">轨迹</span>
</div>`
}
];
}
... ... @@ -355,41 +379,48 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
});
}
//start lsq 历史告警消除 2022-03-23
$('[history-data-warn-clear]').unbind("click").on('click', function () {
// Start 将对象转成key=value&key1=value1 LSQ 2022/03/22
let urlParams='';
// let paramsData=table.checkStatus('historywarningTable').data;
let paramsData= [];
if(resArr){
resArr.map(item=>{
if(item.id==$(this).attr('history-data-warn-clear')){
paramsData.push(item);
}
})
}
let params=paramsData[0];
console.log("params",params)
for(let key in params){
if(params[key]){
urlParams+=key+'='+params[key]+'&'
if(knFlag=='1'){
$('[history-data-warn-clear]').show();
$('[history-data-warn-clear]').unbind("click").on('click', function () {
// Start 将对象转成key=value&key1=value1 LSQ 2022/03/22
let urlParams='';
// let paramsData=table.checkStatus('historywarningTable').data;
let paramsData= [];
if(resArr){
resArr.map(item=>{
if(item.id==$(this).attr('history-data-warn-clear')){
paramsData.push(item);
}
})
}
}
urlParams=urlParams.substr(0,urlParams.length-1)+'&alarmTypeCustom=his';
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();
let params=paramsData[0];
for(let key in params){
if(params[key]){
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=his';
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{
$('[history-data-warn-clear]').hide();
}
//end lsq 2022-03-23
//告警操作日志
$('[history-data-warn-view]').unbind("click").on('click', function () {
... ...
... ... @@ -596,6 +596,9 @@
}else if(urlLast=="#/biz/index"){
w=$("[lay-id='bizListTable'] table thead th[data-field='resName'").data('minwidth');
}else if(urlLast.indexOf("#/biz/list")!=-1){
w=$("[lay-id='bizResListTable'] table thead th[data-field='resName'").data('minwidth');
w=w?w:$("[lay-id='bizResListTable'] table thead th[data-field='resName'").innerWidth();
}
var maxW=(w-45)+'px';
var styleW="float: left;max-width: "+maxW+";overflow: hidden; text-overflow: ellipsis; white-space: nowrap;display: inline-block;";
... ... @@ -728,7 +731,7 @@
{{#
var linkStateHtml = '';
var linkStateTips = '无连接信息';
if(d.linkStateList && d.linkStateList.length >=0 ) {
if(d.linkStateList && d.linkStateList.length >=0 && d.resType !== 'MIDDLEWARE_WEBLOGIC') {
linkStateTips = '';
if(d.linkStateList.length == 1) {
var linkState = d.linkStateList[0];
... ... @@ -779,6 +782,21 @@
linkStateTips += '</ul>';
}
}
}else{
/*对于中间件weblogic来讲,只有控制台有连接状态指标,服务的连接状态是服务对应的服务状态指标,此列表中只展示所有weblogic的服务信息,所以这里直接取视图中的monitorState字段作为连接状态*/
linkStateTips='连接成功';
if(d.linkState.indexOf('成功') !== -1) {
linkStateHtml = '<button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click">成功</button>';
} else {
linkStateHtml = `<button type="button"
id="${d.resId}_bizdanger"
data-message="${d.message}"
data-state="${d.state}"
data-id="${d.resId}_bizdanger"
class="layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click">
失败
</button>`;
}
}
}}
<div class="div-link-state-list" lay-tips="{{linkStateTips}}">
... ...