Authored by wangtao

Merge branch 'master-mj' of http://113.200.75.45:82/monitor_v3/hg-monitor-web into master-mj

@@ -4211,6 +4211,11 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele @@ -4211,6 +4211,11 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele
4211 }); 4211 });
4212 }); 4212 });
4213 }, 4213 },
  4214 + //ip格式正则验证
  4215 + validatorIP: function (ip) {
  4216 + var re = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
  4217 + return re.test(ip);
  4218 + },
4214 validatorPhone: function (phone) { 4219 validatorPhone: function (phone) {
4215 if (/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])d{8}$/.test(phone)) { 4220 if (/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])d{8}$/.test(phone)) {
4216 return { 4221 return {
@@ -152,7 +152,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -152,7 +152,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
152 if (snCode != '' && snCode != undefined) { 152 if (snCode != '' && snCode != undefined) {
153 for (let i = 0; i < devicesBak.length; i++) { 153 for (let i = 0; i < devicesBak.length; i++) {
154 if (devicesBak[i].snCode == snCode) { 154 if (devicesBak[i].snCode == snCode) {
155 - devicesBak.pop(devicesBak[i]); 155 + devicesBak.splice(i,1);
  156 + break;
156 } 157 }
157 } 158 }
158 } 159 }
@@ -213,7 +214,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate' @@ -213,7 +214,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'
213 if (fittingSN != '' && fittingSN != undefined) { 214 if (fittingSN != '' && fittingSN != undefined) {
214 for (let i = 0; i < fittingsBak.length; i++) { 215 for (let i = 0; i < fittingsBak.length; i++) {
215 if (fittingsBak[i].fittingSN == fittingSN) { 216 if (fittingsBak[i].fittingSN == fittingSN) {
216 - fittingsBak.pop(fittingsBak[i]); 217 + fittingsBak.splice(i,1);
  218 + break;
217 } 219 }
218 } 220 }
219 } 221 }
@@ -12,10 +12,11 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele @@ -12,10 +12,11 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele
12 var sessions = layui.sessions; 12 var sessions = layui.sessions;
13 var accessToken = sessions.getToken().access_token; 13 var accessToken = sessions.getToken().access_token;
14 var kpiPowerSelect;//指标权限类型下拉框 14 var kpiPowerSelect;//指标权限类型下拉框
  15 + var tagIds = [];
15 form.render(); 16 form.render();
16 initKpiPower(); 17 initKpiPower();
17 initSelect(); 18 initSelect();
18 - 19 + getTags();
19 //初始化下拉框数据 20 //初始化下拉框数据
20 function initSelect() { 21 function initSelect() {
21 admin.req({ 22 admin.req({
@@ -71,6 +72,10 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele @@ -71,6 +72,10 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele
71 $("#kpiAddForm").find("input[name='funVal']").val(strList[2]); 72 $("#kpiAddForm").find("input[name='funVal']").val(strList[2]);
72 } 73 }
73 } 74 }
  75 +
  76 + //标签
  77 + getTags(kpiId);
  78 +
74 form.render(); 79 form.render();
75 } 80 }
76 } 81 }
@@ -134,6 +139,43 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele @@ -134,6 +139,43 @@ layui.define(['table', 'admin', 'form', 'laydate', 'common', 'sessions', 'xmSele
134 return layui.form.val('kpi-add-form'); 139 return layui.form.val('kpi-add-form');
135 } 140 }
136 141
  142 + function getTags(kpiId) {
  143 + admin.req({
  144 + url: domainName + '/api-web/systag/list?type=KPI&id='+kpiId,
  145 + type: 'get',
  146 + sync: false,
  147 + success: function (res) {
  148 + var html = '';
  149 + if(res.data && res.data.length > 0){
  150 + var activeTag = "";
  151 + res.data.forEach((v, i) => {
  152 + if(v.selTag){
  153 + tagIds.push(v.id);
  154 + activeTag = "activeTag";
  155 + }else{
  156 + activeTag = "";
  157 + }
  158 + html += ` <span class="tag ${activeTag}" id="${v.id}">${v.name}</span>`;
  159 + });
  160 + }
  161 + $("#kpi-tags").html(html);
  162 + //添加点击事件
  163 + $("#kpi-tags").find(".tag").on("click",function () {
  164 + if($(this).hasClass("activeTag")){
  165 + $(this).removeClass("activeTag");
  166 + tagIds.splice($(this).attr('id'), 1);
  167 + }else{
  168 + $(this).addClass("activeTag");
  169 + tagIds.push($(this).attr("id"))
  170 + }
  171 + $("#selectTagIds").val(tagIds)
  172 + console.log(tagIds);
  173 + });
  174 +
  175 + }
  176 + });
  177 + }
  178 +
137 return {getData: getSubmitData}; 179 return {getData: getSubmitData};
138 }); 180 });
139 }); 181 });
@@ -417,6 +417,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common', @@ -417,6 +417,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
417 success: function (res) { 417 success: function (res) {
418 layer.msg('保存成功!', {icon: 1, time: 1500}, function () { 418 layer.msg('保存成功!', {icon: 1, time: 1500}, function () {
419 layer.closeAll(); 419 layer.closeAll();
  420 + saveTagRel(kpiId);
420 reloadTable(); 421 reloadTable();
421 }); 422 });
422 }, 423 },
@@ -479,6 +480,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common', @@ -479,6 +480,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
479 success: function (res) { 480 success: function (res) {
480 layer.msg('保存成功!', {icon: 1, time: 1500}, function () { 481 layer.msg('保存成功!', {icon: 1, time: 1500}, function () {
481 layer.closeAll(); 482 layer.closeAll();
  483 + saveTagRel(submitData.kpiId);
482 reloadTable(); 484 reloadTable();
483 }); 485 });
484 }, 486 },
@@ -502,6 +504,25 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common', @@ -502,6 +504,25 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
502 504
503 } 505 }
504 506
  507 + function saveTagRel(kpiId){
  508 +
  509 + var selectTagIds = $("#selectTagIds").val();
  510 +
  511 + var parmas = {
  512 + id:kpiId,
  513 + tags:selectTagIds,
  514 + type:"KPI"
  515 + }
  516 + admin.req({
  517 + url: common.domainName + '/api-web/systag/save',
  518 + method: 'get',
  519 + data : parmas,
  520 + sync: false,
  521 + success: function (res) {
  522 + console.log("标签保存成功!")
  523 + }
  524 + });
  525 + }
505 526
506 //删除模块 527 //删除模块
507 $("#delkpi").on("click", function () { 528 $("#delkpi").on("click", function () {
1 -layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) { 1 +layui.define(['table', 'form', 'admin', 'layer', 'common', 'commonDetail','sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
2 var $ = layui.$; 2 var $ = layui.$;
3 var form = layui.form; 3 var form = layui.form;
4 var layer = layui.layer; 4 var layer = layui.layer;
@@ -10,7 +10,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect @@ -10,7 +10,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
10 var upload = layui.upload; 10 var upload = layui.upload;
11 var domainName = common.domainName; 11 var domainName = common.domainName;
12 var xmSelect = layui.xmSelect; 12 var xmSelect = layui.xmSelect;
13 - 13 + var commonDetail = layui.commonDetail;
14 //对外暴露的接口 14 //对外暴露的接口
15 exports('recoveryverifyAdd', function (data) { 15 exports('recoveryverifyAdd', function (data) {
16 var accessToken = localStorage.getItem("accessToken"); 16 var accessToken = localStorage.getItem("accessToken");
@@ -91,9 +91,38 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect @@ -91,9 +91,38 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
91 return 91 return
92 } 92 }
93 deviceSaveCount += 1; 93 deviceSaveCount += 1;
94 - var html = "<tr><td><select class='layui-select' style='display: block' lay-verify = 'required'><option value='0'>备份服务器</option><option value='1'>源端生产服务器</option><option value='2'>恢复服务器</option></select></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' class='layui-input' width='40px' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>" 94 + var html = "<tr><td><select class='layui-select' style='display: block' lay-verify = 'required'><option value='0'>备份服务器</option><option value='1'>源端生产服务器</option><option value='2'>恢复服务器</option></select></td><td><input type='text' width='40px' lay-filter='ip' class='layui-input' lay-verify = 'required'/></td><td><input type='text' class='layui-input' width='40px' lay-filter='os' lay-verify = 'required'/></td><td><input type='text' width='40px' lay-filter='databaseVersion' class='layui-input' lay-verify = 'required'/></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>"
95 $("#device-table").append(html); 95 $("#device-table").append(html);
96 - 96 + $("input[lay-filter='ip']").keyup(function (){
  97 + var ip = $(this).val();
  98 + var os = $(this).closest('tr').find('td').find("input[lay-filter='os']");
  99 + var databaseVersion = $(this).closest('tr').find('td').find("input[lay-filter='databaseVersion']");
  100 + if(commonDetail.validatorIP(ip)){
  101 + //获取资源信息
  102 + admin.req({
  103 + url: domainName + '/api-web/manage/resource/page?page=1&limit=1&resType=DATABASE_ORACLE&ipEquals='+ip
  104 + }).done(function (response) {
  105 + if(response.data!=null && response.data.length>0){
  106 + var resource = response.data[0];
  107 + os.val(resource.os);
  108 + $(this).closest('tr').find('td').find("input[lay-filter='os']").val(resource.os);
  109 + admin.req({
  110 + url: domainName + '/api-web/manage/resource/findById?resId='+resource.resId
  111 + }).done(function (response) {
  112 + if(response.obj !=null && response.obj.proto){
  113 + var obj = response.obj;
  114 + if(obj.proto !=null && obj.proto.JDBC){
  115 + var version = obj.proto.JDBC.filter(obj=>obj.paramCode==='version');
  116 + if(version) {
  117 + databaseVersion.val(version[0].paramValue);
  118 + }
  119 + }
  120 + }
  121 + });
  122 + }
  123 + });
  124 + };
  125 + }).keyup();
97 $("#table-device :button.edit").click(function () { 126 $("#table-device :button.edit").click(function () {
98 var toEdit = this.value == '保存'; 127 var toEdit = this.value == '保存';
99 this.value = toEdit ? '删除' : '保存'; 128 this.value = toEdit ? '删除' : '保存';
@@ -123,7 +152,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect @@ -123,7 +152,8 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
123 if (ip != '' && ip != undefined) { 152 if (ip != '' && ip != undefined) {
124 for (let i = 0; i < devicesBak.length; i++) { 153 for (let i = 0; i < devicesBak.length; i++) {
125 if (devicesBak[i].ip == ip) { 154 if (devicesBak[i].ip == ip) {
126 - devicesBak.pop(devicesBak[i]); 155 + devicesBak.splice(i,1);
  156 + break;
127 } 157 }
128 } 158 }
129 } 159 }
@@ -448,11 +478,47 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect @@ -448,11 +478,47 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
448 tdArr.push(this.innerHTML); 478 tdArr.push(this.innerHTML);
449 479
450 } else { 480 } else {
451 - this.innerHTML = '<input type="text" value="' + this.innerHTML.replace(/"/g, '&quot;').replace(/<\/?.+?>/g, '').replace(/ /g, '') + '"/>';  
452 - } 481 + if(t==0){
  482 + this.innerHTML = '<input type="text" lay-filter="ip" width="40px" value="' + this.innerHTML.replace(/"/g, '&quot;').replace(/<\/?.+?>/g, '').replace(/ /g, '') + '"/>';
  483 +
  484 + }else if(t==1){
  485 + this.innerHTML = '<input type="text" lay-filter="os" width="40px" value="' + this.innerHTML.replace(/"/g, '&quot;').replace(/<\/?.+?>/g, '').replace(/ /g, '') + '"/>';
  486 +
  487 + }else {
  488 + this.innerHTML = '<input type="text" lay-filter="databaseVersion" width="40px" value="' + this.innerHTML.replace(/"/g, '&quot;').replace(/<\/?.+?>/g, '').replace(/ /g, '') + '"/>';
  489 + } }
453 }) 490 })
454 if (toEdit) { 491 if (toEdit) {
455 - 492 + $("input[lay-filter='ip']").keyup(function (){
  493 + var ip = $(this).val();
  494 + var os = $(this).closest('tr').find('td').find("input[lay-filter='os']");
  495 + var databaseVersion = $(this).closest('tr').find('td').find("input[lay-filter='databaseVersion']");
  496 + if(commonDetail.validatorIP(ip)){
  497 + //获取资源信息
  498 + admin.req({
  499 + url: domainName + '/api-web/manage/resource/page?page=1&limit=1&resType=DATABASE_ORACLE&ipEquals='+ip
  500 + }).done(function (response) {
  501 + if(response.data!=null && response.data.length>0){
  502 + var resource = response.data[0];
  503 + os.val(resource.os);
  504 + $(this).closest('tr').find('td').find("input[lay-filter='os']").val(resource.os);
  505 + admin.req({
  506 + url: domainName + '/api-web/manage/resource/findById?resId='+resource.resId
  507 + }).done(function (response) {
  508 + if(response.obj !=null && response.obj.proto){
  509 + var obj = response.obj;
  510 + if(obj.proto !=null && obj.proto.JDBC){
  511 + var version = obj.proto.JDBC.filter(obj=>obj.paramCode==='version');
  512 + if(version) {
  513 + databaseVersion.val(version[0].paramValue);
  514 + }
  515 + }
  516 + }
  517 + });
  518 + }
  519 + });
  520 + };
  521 + }).keyup();
456 } else { 522 } else {
457 if (tdArr.length > 0) { 523 if (tdArr.length > 0) {
458 var deviceObj = { 524 var deviceObj = {
@@ -463,12 +529,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect @@ -463,12 +529,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
463 'id': id, 529 'id': id,
464 'recordId': recordId 530 'recordId': recordId
465 } 531 }
466 - devicesBak.forEach(e => { 532 + devicesBak = devicesBak.filter((val)=>val.id!=deviceObj.id);
  533 + devicesBak.push(deviceObj);
  534 + /* devicesBak.forEach(e => {
467 if (deviceObj.id == e.id) { 535 if (deviceObj.id == e.id) {
468 devicesBak.pop(e); 536 devicesBak.pop(e);
469 devicesBak.push(deviceObj); 537 devicesBak.push(deviceObj);
470 } 538 }
471 - }) 539 + })*/
472 } 540 }
473 } 541 }
474 }); 542 });
@@ -26,6 +26,7 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi @@ -26,6 +26,7 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi
26 var passPatternTips = ''; 26 var passPatternTips = '';
27 var loginName = localStorage.getItem("lgn"); 27 var loginName = localStorage.getItem("lgn");
28 var bizId = ''; 28 var bizId = '';
  29 + var tagIds = [];
29 30
30 form.render() 31 form.render()
31 32
@@ -203,9 +204,9 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi @@ -203,9 +204,9 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi
203 if (bean.reportFlag == '1') { 204 if (bean.reportFlag == '1') {
204 $form.find("input[name='reportFlag'][value='1']").attr("checked", "checked") 205 $form.find("input[name='reportFlag'][value='1']").attr("checked", "checked")
205 } 206 }
206 - if (bean.resLabel) {  
207 - tagsContent = bean.resLabel.split("#");  
208 - } 207 + // if (bean.resLabel) {
  208 + // tagsContent = bean.resLabel.split("#");
  209 + // }
209 createResExtendParamRow(res['extend']) 210 createResExtendParamRow(res['extend'])
210 createProtocolDom(res['proto'], true) 211 createProtocolDom(res['proto'], true)
211 // 资源类型下拉框 资产系统过来的没有资源类型,需要选择 212 // 资源类型下拉框 资产系统过来的没有资源类型,需要选择
@@ -265,11 +266,12 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi @@ -265,11 +266,12 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi
265 }) 266 })
266 } 267 }
267 $("#resManageAddForm").find("input[name='resType']").val(resType); 268 $("#resManageAddForm").find("input[name='resType']").val(resType);
268 - inputTags.render({  
269 - elem: '#resLabelPluginsSelector',  
270 - content: tagsContent,  
271 - aldaBtn: false  
272 - }) 269 +
  270 + // inputTags.render({
  271 + // elem: '#resLabelPluginsSelector',
  272 + // content: tagsContent,
  273 + // aldaBtn: false
  274 + // })
273 275
274 //表单验证规则 276 //表单验证规则
275 form.verify({ 277 form.verify({
@@ -280,6 +282,43 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi @@ -280,6 +282,43 @@ layui.define(['table', 'form', 'laydate', 'common', 'sessions', 'laydate', 'admi
280 }); 282 });
281 }) 283 })
282 284
  285 + getTags(id);
  286 + function getTags(resId) {
  287 + admin.req({
  288 + url: common.domainName + '/api-web/systag/list?type=RES&id='+resId,
  289 + type: 'get',
  290 + sync: false,
  291 + success: function (res) {
  292 + var html = '';
  293 + if(res.data && res.data.length > 0){
  294 + var activeTag = "";
  295 + res.data.forEach((v, i) => {
  296 + if(v.selTag){
  297 + tagIds.push(v.id);
  298 + activeTag = "activeTag";
  299 + }else{
  300 + activeTag = "";
  301 + }
  302 + html += ` <span class="tag ${activeTag}" id="${v.id}">${v.name}</span>`;
  303 + });
  304 + }
  305 + $("#res-tags").html(html);
  306 + //添加点击事件
  307 + $("#res-tags").find(".tag").on("click",function () {
  308 + if($(this).hasClass("activeTag")){
  309 + $(this).removeClass("activeTag");
  310 + tagIds.splice($(this).attr('id'), 1);
  311 + }else{
  312 + $(this).addClass("activeTag");
  313 + tagIds.push($(this).attr("id"))
  314 + }
  315 + $("#selectResTagIds").val(tagIds)
  316 + });
  317 + }
  318 + });
  319 + }
  320 +
  321 +
283 //动态渲染域的下拉列表数据 322 //动态渲染域的下拉列表数据
284 function initDoMainSelect(domainId) { 323 function initDoMainSelect(domainId) {
285 var newDimainlist = dimainlist.filter(function (v) { 324 var newDimainlist = dimainlist.filter(function (v) {
@@ -1967,12 +1967,13 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form', @@ -1967,12 +1967,13 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form',
1967 if (currentHardwareFlag.endsWith("Y")) formData.resCategory = 'share' 1967 if (currentHardwareFlag.endsWith("Y")) formData.resCategory = 'share'
1968 if (currentHardwareFlag.endsWith("N")) formData.resCategory = 'resources' 1968 if (currentHardwareFlag.endsWith("N")) formData.resCategory = 'resources'
1969 } 1969 }
1970 - var tags = [];  
1971 - var span = $("div#tags span");  
1972 - span.each(function () {  
1973 - tags.push($(this).find("em").text())  
1974 - })  
1975 - formData['resLabel'] = tags.toString(); 1970 + // var tags = [];
  1971 + // var span = $("div#tags span");
  1972 + // span.each(function () {
  1973 + // tags.push($(this).find("em").text())
  1974 + // })
  1975 +
  1976 + // formData['resLabel'] = tags.toString();
1976 /*formData['proto'] = proto; 1977 /*formData['proto'] = proto;
1977 formData['extend'] = extend;*/ 1978 formData['extend'] = extend;*/
1978 if (formData.auxiliaryAdmin) { 1979 if (formData.auxiliaryAdmin) {
@@ -1997,6 +1998,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form', @@ -1997,6 +1998,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form',
1997 layer.msg('保存成功!', {icon: 1, time: 1500}, function () { 1998 layer.msg('保存成功!', {icon: 1, time: 1500}, function () {
1998 layer.closeAll(); 1999 layer.closeAll();
1999 reloadTable(); 2000 reloadTable();
  2001 + saveTagRel(formData.resId);//保存标签
2000 if (next == '1') { 2002 if (next == '1') {
2001 //openCollTaskAndAlarm(res.object) 2003 //openCollTaskAndAlarm(res.object)
2002 openResourceRelationConfigHtml(res.object.resId, res.object.resType) 2004 openResourceRelationConfigHtml(res.object.resId, res.object.resType)
@@ -2009,6 +2011,26 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form', @@ -2009,6 +2011,26 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form',
2009 }) 2011 })
2010 } 2012 }
2011 2013
  2014 + function saveTagRel(reId){
  2015 +
  2016 + var selectResTagIds = $("#selectResTagIds").val();
  2017 +
  2018 + var parmas = {
  2019 + id:reId,
  2020 + tags:selectResTagIds,
  2021 + type:"RES"
  2022 + }
  2023 + admin.req({
  2024 + url: common.domainName + '/api-web/systag/save',
  2025 + method: 'get',
  2026 + data : parmas,
  2027 + sync: false,
  2028 + success: function (res) {
  2029 + console.log("标签保存成功!")
  2030 + }
  2031 + });
  2032 + }
  2033 +
2012 //资源协议验证 2034 //资源协议验证
2013 function validatedProtoParam() { 2035 function validatedProtoParam() {
2014 var flag = true, msg = ''; 2036 var flag = true, msg = '';
@@ -129,7 +129,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','commonDetail', 'sessi @@ -129,7 +129,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common','commonDetail', 'sessi
129 if (id > 0 && id != undefined) { 129 if (id > 0 && id != undefined) {
130 for (let i = 0; i < adjustBak.length; i++) { 130 for (let i = 0; i < adjustBak.length; i++) {
131 if (adjustBak[i].id == id) { 131 if (adjustBak[i].id == id) {
132 - adjustBak.pop(adjustBak[i]); 132 + //adjustBak.pop(adjustBak[i]);
  133 + adjustBak.splice(i,1);
  134 + break;
133 } 135 }
134 } 136 }
135 } 137 }
@@ -108,7 +108,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'commonDetail','sessi @@ -108,7 +108,9 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'commonDetail','sessi
108 if (name != '' && name != undefined) { 108 if (name != '' && name != undefined) {
109 for (let i = 0; i < staffsBak.length; i++) { 109 for (let i = 0; i < staffsBak.length; i++) {
110 if (staffsBak[i].userName == name) { 110 if (staffsBak[i].userName == name) {
111 - staffsBak.pop(staffsBak[i]); 111 + //staffsBak.pop(staffsBak[i]);
  112 + staffsBak.splice(i,1);
  113 + break;
112 } 114 }
113 } 115 }
114 } 116 }
@@ -8686,4 +8686,16 @@ form.layui-card-header.layuiadmin-card-header-auto { @@ -8686,4 +8686,16 @@ form.layui-card-header.layuiadmin-card-header-auto {
8686 border: 1px solid #3B91FF; 8686 border: 1px solid #3B91FF;
8687 background: #3B91FF; 8687 background: #3B91FF;
8688 color: #ffffff; 8688 color: #ffffff;
8689 -}  
  8689 +}
  8690 +
  8691 +.tag{
  8692 + padding: 5px 15px;
  8693 + border: 1px solid #958f8f;
  8694 + border-radius: 5px;
  8695 + cursor: pointer;
  8696 +}
  8697 +.activeTag{
  8698 + background: #E7F0FF;
  8699 + color: #4B93F6;
  8700 + border-color: #478FF8;
  8701 +}
@@ -138,13 +138,22 @@ @@ -138,13 +138,22 @@
138 </div> 138 </div>
139 </div> 139 </div>
140 </div> 140 </div>
141 -  
142 <div class="layui-form-item"> 141 <div class="layui-form-item">
143 <label class="layui-form-label textarea-label">描述:</label> 142 <label class="layui-form-label textarea-label">描述:</label>
144 <div class="layui-input-block" style="margin-left: 130px;"> 143 <div class="layui-input-block" style="margin-left: 130px;">
145 <textarea class="layui-textarea" name="remark"></textarea> 144 <textarea class="layui-textarea" name="remark"></textarea>
146 </div> 145 </div>
147 </div> 146 </div>
  147 + <div class="layui-form-item">
  148 + <div class="layui-inline">
  149 + <label class="layui-form-label">标签:</label>
  150 + <div class="layui-input-block" style="margin-left: 140px;">
  151 + <div id="kpi-tags" style="line-height: 40px">
  152 + </div>
  153 + </div>
  154 + </div>
  155 + <input type="hidden" id="selectTagIds">
  156 + </div>
148 <button class="kpi-add-submit" lay-submit style="display: none" type="submit">提交</button> 157 <button class="kpi-add-submit" lay-submit style="display: none" type="submit">提交</button>
149 </form> 158 </form>
150 </article> 159 </article>
@@ -146,6 +146,16 @@ @@ -146,6 +146,16 @@
146 <textarea class="layui-textarea" name="remark"></textarea> 146 <textarea class="layui-textarea" name="remark"></textarea>
147 </div> 147 </div>
148 </div> 148 </div>
  149 + <div class="layui-form-item">
  150 + <div class="layui-inline">
  151 + <label class="layui-form-label">标签:</label>
  152 + <div class="layui-input-block" style="margin-left: 140px;">
  153 + <div id="kpi-tags" style="line-height: 40px">
  154 + </div>
  155 + </div>
  156 + </div>
  157 + <input type="hidden" id="selectTagIds">
  158 + </div>
149 <button class="kpi-add-submit" lay-submit style="display: none" type="submit">提交</button> 159 <button class="kpi-add-submit" lay-submit style="display: none" type="submit">提交</button>
150 </form> 160 </form>
151 </article> 161 </article>
@@ -189,13 +189,17 @@ @@ -189,13 +189,17 @@
189 </div> 189 </div>
190 <div class="layui-form-item"> 190 <div class="layui-form-item">
191 <label class="layui-form-label">标签</label> 191 <label class="layui-form-label">标签</label>
  192 + <!--<div class="layui-input-block">-->
  193 + <!-- <div class="tags" id="tags">-->
  194 + <!-- <input autocomplete="off" class="layui-input" id="resLabelPluginsSelector" name="resLabel"-->
  195 + <!-- placeholder="标签,回车输入"-->
  196 + <!-- type="text">-->
  197 + <!-- </div>-->
  198 + <!--</div>-->
192 <div class="layui-input-block"> 199 <div class="layui-input-block">
193 - <div class="tags" id="tags">  
194 - <input autocomplete="off" class="layui-input" id="resLabelPluginsSelector" name="resLabel"  
195 - placeholder="标签,回车输入"  
196 - type="text">  
197 - </div> 200 + <div id="res-tags" style="line-height: 40px;margin-left: 10px;"></div>
198 </div> 201 </div>
  202 + <input type="hidden" id="selectResTagIds">
199 </div> 203 </div>
200 <div class="layui-form-item"> 204 <div class="layui-form-item">
201 <label class="layui-form-label" style="height: 100px">备注</label> 205 <label class="layui-form-label" style="height: 100px">备注</label>
@@ -130,8 +130,8 @@ @@ -130,8 +130,8 @@
130 </div> 130 </div>
131 <div class="layui-form-item" id="backDiv" hidden> 131 <div class="layui-form-item" id="backDiv" hidden>
132 <div class="layui-inline inline-half"> 132 <div class="layui-inline inline-half">
133 - <label class="layui-form-label" style="width: 160px"><span  
134 - style="color: red;font-size: 16px">*</span>演练前是否备份:</label> 133 + <label class="layui-form-label" style="width: 130px"><span
  134 + style="color: red;font-size: 16px">*</span>演练前备份:</label>
135 <div class="layui-input-block"> 135 <div class="layui-input-block">
136 <input type="radio" lay-filter="isBack" name="isBack" value="0" title="是" checked> 136 <input type="radio" lay-filter="isBack" name="isBack" value="0" title="是" checked>
137 <input type="radio" lay-filter="isBack" name="isBack" value="1" title="否"> 137 <input type="radio" lay-filter="isBack" name="isBack" value="1" title="否">
@@ -147,8 +147,8 @@ @@ -147,8 +147,8 @@
147 </div> 147 </div>
148 <div class="layui-form-item" id="resultDiv" hidden> 148 <div class="layui-form-item" id="resultDiv" hidden>
149 <div class="layui-inline inline-half"> 149 <div class="layui-inline inline-half">
150 - <label class="layui-form-label"><span  
151 - style="color: red;font-size: 16px">*</span>演练结果:</label> 150 + <label class="layui-form-label" style="width: 130px"><span
  151 + style="color: red;font-size: 16px">*</span>演练后结果:</label>
152 <div class="layui-input-block"> 152 <div class="layui-input-block">
153 <input type="radio" name="status" value="0" title="成功" checked> 153 <input type="radio" name="status" value="0" title="成功" checked>
154 <input type="radio" name="status" value="1" title="失败"> 154 <input type="radio" name="status" value="1" title="失败">