Authored by XuHaoJie

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

 Conflicts:
	hg-monitor-web-zj/src/main/resources/static/vue3/src/router/index.js
  1 +${AnsiColor.BRIGHT_YELLOW}
  2 +
  3 +
  4 +${application.title} ${application.version} Base On Spring Boot ${spring-boot.version}
  5 +
  6 +----------------------------------------------------------------------------------------------------------
  7 + \\\ /// .-. \\\ ///wW Ww(o)__(o) .-. )) (O)) ((O) _ 2022
  8 + ((O) (O)) c(O_O)c ((O)(O))(O)(O)(__ __)c(O_O)c (Oo)-. || || wWw /||_
  9 + | \ / | ,'.---.`, | \ || (..) ( ) ,'.---.`, | (_)) || /\ || (O)_ /`_)
  10 + ||\\//||/ /|_|_|\ \||\\|| || )( / /|_|_|\ \ | .' ||//\\|| .' __)| `.
  11 + || \/ ||| \_____/ ||| \ | _||_ ( )| \_____/ | )|\\ / / \ \( _) | (_))
  12 + || ||'. `---' .`|| || (_/\_) )/ '. `---' .`(/ \) ( / \ )`.__) (.'-'
  13 + (_/ \_) `-...-' (_/ \_) ( `-...-' ) ) ( )
  14 + ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______
  15 +|______|______|______|______|______|______|______|______|______|______|______|______|______|______|______|
  16 +
  17 +
  18 +
  19 +
  20 +
@@ -222,7 +222,7 @@ layui.define(['soulTable', 'commonDetail', 'common', 'laytpl', 'view', 'admin', @@ -222,7 +222,7 @@ layui.define(['soulTable', 'commonDetail', 'common', 'laytpl', 'view', 'admin',
222 // {field: 'provider', title: '厂商', minWidth: x_130, align: 'center', sort: true}, 222 // {field: 'provider', title: '厂商', minWidth: x_130, align: 'center', sort: true},
223 // {field: 'model', title: '型号', minWidth: x_130, align: 'center', sort: true}, 223 // {field: 'model', title: '型号', minWidth: x_130, align: 'center', sort: true},
224 { 224 {
225 - field: 'resName', title: '资源名称', minWidth: x_300, sort: true, 225 + field: 'resName', title: '资源名称', minWidth: x_330, sort: true,
226 templet: '#resindex_resName' }, 226 templet: '#resindex_resName' },
227 {field: 'health', title: '健康状态', minWidth: x_110, align: 'center', sort: true, templet: '#healthTpl'}, 227 {field: 'health', title: '健康状态', minWidth: x_110, align: 'center', sort: true, templet: '#healthTpl'},
228 // {field: 'diskSize', title: '磁盘总大小', minWidth: 120, align: 'center'}, 228 // {field: 'diskSize', title: '磁盘总大小', minWidth: 120, align: 'center'},
  1 +<title>缓存数据</title>
  2 +<iframe src="/vue3/index.html#/cache" class="layadmin-iframe" style="height: 99.5%!important;"/>
@@ -53,3 +53,5 @@ @@ -53,3 +53,5 @@
53 53
54 /*对比分析*/ 54 /*对比分析*/
55 @import "../css/analysis.css"; 55 @import "../css/analysis.css";
  56 +/*缓存数据*/
  57 +@import "../css/cacheData.css";
  1 +.cache-container{
  2 + height:100%;
  3 + background: #FFFFFF;
  4 + padding:20px;
  5 +}
  6 +.tag-item{
  7 + margin-right: 10px;
  8 +}
  9 +.view-container{
  10 + min-height: 600px;
  11 + padding:0 10px 10px;
  12 + display: flex;
  13 + flex-flow: column;
  14 + align-items: flex-start;
  15 +}
  16 +.view-title{
  17 + padding-bottom: 10px;
  18 +}
  19 +.view-detail{
  20 + flex: 1;
  21 + width: 100%;
  22 + text-align: left;
  23 + border:1px solid #ccc;
  24 + max-height: 600px;
  25 + overflow-y: auto;
  26 +}
  27 +.detail-data{
  28 + padding:10px;
  29 +}
1 <div style="display: flex;flex-wrap: nowrap"> 1 <div style="display: flex;flex-wrap: nowrap">
2 - <div style="width: calc(100% - 50px)"> 2 + <div style="width: calc(100% - 10px)">
3 <el-progress 3 <el-progress
4 :text-inside="true" 4 :text-inside="true"
5 :stroke-width="20" 5 :stroke-width="20"
6 - :percentage="textValue"  
7 - :status="status">  
8 - <span>{{textValue == '' ? ' ' : textValue + '%' }}</span> 6 + :percentage="textString"
  7 + status="success">
  8 + <div style="color: black">{{textString == '' ? ' ' : textString + '%' }}</div>
9 </el-progress> 9 </el-progress>
10 </div> 10 </div>
11 - <div style="width: 50px">{{textString == '' ? '' : textString }} </div> 11 + <!-- <div style="width: 50px">{{textString == '' ? '' : textString }} </div>-->
  12 +
  13 + <!--
  14 + <el-progress :text-inside="true" :stroke-width="26" :percentage="textString" >
  15 + <span>{{textString == '' ? ' ' : textString + '%' }}</span>
  16 + </el-progress>
  17 + -->
12 </div> 18 </div>
@@ -3,12 +3,6 @@ export default { @@ -3,12 +3,6 @@ export default {
3 template: '', 3 template: '',
4 components: {}, 4 components: {},
5 props: { 5 props: {
6 - // 百分比数字,例如:50%,percentage= 50  
7 - textValue: {  
8 - type: Number,  
9 - default: 0  
10 - },  
11 -  
12 // 状态 success/exception/warning 6 // 状态 success/exception/warning
13 status: { 7 status: {
14 type: String, 8 type: String,
@@ -20,7 +14,7 @@ export default { @@ -20,7 +14,7 @@ export default {
20 }, 14 },
21 // 文本 15 // 文本
22 textString: { 16 textString: {
23 - type: String, 17 + type: Number,
24 default: 0 18 default: 0
25 }, 19 },
26 optionData: { 20 optionData: {
@@ -154,18 +154,23 @@ @@ -154,18 +154,23 @@
154 <template v-slot> 154 <template v-slot>
155 <div style="padding: 10px" style="display: flex;flex-wrap: wrap"> 155 <div style="padding: 10px" style="display: flex;flex-wrap: wrap">
156 <div v-for="(v,k) in fieldsValueObj[currentRow.id].props" style="width: 50%"> 156 <div v-for="(v,k) in fieldsValueObj[currentRow.id].props" style="width: 50%">
157 - <div style="text-align: left;padding-left: 10px;">{{v}}</div> 157 +
  158 + <div v-if="k.indexOf('_msg') != -1" style="text-align: left;padding-left: 10px;width: 100%">
  159 + {{v}}
  160 + </div>
  161 + <div v-else style="text-align: left;padding-left: 10px;">{{v}}</div>
158 162
159 <div v-if="k.indexOf('_input') != -1"> 163 <div v-if="k.indexOf('_input') != -1">
160 <el-input v-model="settingVal[currentRow.id][k]" :placeholder="v"></el-input> 164 <el-input v-model="settingVal[currentRow.id][k]" :placeholder="v"></el-input>
161 </div> 165 </div>
162 - <el-select v-else v-model="settingVal[currentRow.id][k]" :placeholder="v" style="margin: 3px"> 166 + <el-select clearable v-else-if="k.indexOf('_input') == -1 && k.indexOf('_msg') == -1" v-model="settingVal[currentRow.id][k]" :placeholder="v" style="margin: 3px">
163 <el-option v-for="(value ,index) in fieldsValueObj[currentRow.id].object" 167 <el-option v-for="(value ,index) in fieldsValueObj[currentRow.id].object"
164 :key="index" 168 :key="index"
165 :label="value[fieldsValueObj[currentRow.id].text]" 169 :label="value[fieldsValueObj[currentRow.id].text]"
166 :value="value[fieldsValueObj[currentRow.id].value]" > 170 :value="value[fieldsValueObj[currentRow.id].value]" >
167 </el-option> 171 </el-option>
168 </el-select> 172 </el-select>
  173 +
169 </div> 174 </div>
170 </div> 175 </div>
171 </template> 176 </template>
@@ -146,6 +146,11 @@ const routes = [{ @@ -146,6 +146,11 @@ const routes = [{
146 component: () => myImport('views/portSense/index') 146 component: () => myImport('views/portSense/index')
147 }, 147 },
148 { 148 {
  149 + path: '/cache',
  150 + name: 'cacheData',
  151 + component: () => myImport('views/cacheData/index')
  152 + },
  153 + {
149 path: '/vue3/portSenseConfig', 154 path: '/vue3/portSenseConfig',
150 name: 'portSenseConfig', 155 name: 'portSenseConfig',
151 component: () => myImport('views/portSenseConfig/index') 156 component: () => myImport('views/portSenseConfig/index')
  1 +<div class="cache-container">
  2 + <el-row>
  3 + <el-col :span="24">
  4 + <div class="flex-div-start margin-top-bottom-10">
  5 + <el-input class="margin-right-10" v-model="keyWords" placeholder="输入关键字" />
  6 +
  7 + <div class="flex-div-start">
  8 +
  9 + <el-button type="primary" @click="onBtnSearch()" style="margin-left: 10px">搜索</el-button>
  10 +
  11 + </div>
  12 + </div>
  13 +
  14 +
  15 + </el-col>
  16 +
  17 + </el-row>
  18 + <el-row class="margin-top-bottom-10">
  19 + <el-col :span="24" class="flex-div-start margin-bottom-10">
  20 +
  21 + <el-check-tag class="tag-item" v-for="(item,index) in tagData" :checked="checkedId==item.id" @click="changeTag(item.id)">{{item.name}}</el-check-tag>
  22 +
  23 + </el-col>
  24 + </el-row>
  25 + <el-row class="margin-top-bottom-10">
  26 + <el-col :span="24" class="flex-div-start margin-bottom-10">
  27 +
  28 +<!-- <span>匹配项:{{num}}个</span>-->
  29 + <span>[筛选:{{num}}个]</span>
  30 +
  31 + </el-col>
  32 + </el-row>
  33 + <el-row class="margin-bottom-50">
  34 + <el-col :span="24" class="table-height">
  35 + <cm-table-page v-show="tableDataList" :columns="columns" :dataList="tableDataList" @loaddata="loadTableDataList"
  36 + :showIndex="true" :total="count" :showSelection="false"
  37 + :showBorder="true" :loading="false" :pageSize="pageSize"
  38 + :showPage="true" :showTools="true" :height="(height - 500)">
  39 + <template #tools="{scope}">
  40 + <el-button type="text" size="small" @click.prevent="handleView(scope.row,scope.$index)">
  41 + 查看
  42 + </el-button>
  43 + </template>
  44 + </cm-table-page>
  45 + </el-col>
  46 +
  47 + </el-row>
  48 +</div>
  49 +<cm-dialog :title="titleName" width="90%" :showDialogVisible="cacheVisible" @hidedialog="closeDialog" :showCancelBtn="true" :showFooter="false">
  50 + <template v-slot>
  51 + <div class="view-container">
  52 + <div class="view-title">Value:</div>
  53 + <div class="view-detail">
  54 + <div class="detail-data">
  55 + {{viewData}}
  56 +
  57 + </div>
  58 + </div>
  59 +
  60 + </div>
  61 + <div class="margin-top flex-center ">
  62 + <el-button @click="cancelBtn">取消</el-button>
  63 + </div>
  64 + </template>
  65 +</cm-dialog>
  1 +export default {
  2 + name: 'cacheData',
  3 + template: '',
  4 + components: {},
  5 + props:[],
  6 + data () {
  7 + return {
  8 +
  9 + }
  10 + },
  11 + setup(){
  12 + const {proxy} = Vue.getCurrentInstance();
  13 + // Start LSQ 2022/1/5
  14 + let height = Vue.ref(window.innerHeight - 10);
  15 + // 挂载完
  16 + Vue.onMounted(() => {
  17 +
  18 + })
  19 + //配置项标签数据
  20 + let tagData=Vue.ref([{
  21 + name:'配置1',
  22 + id:'001'
  23 + },{
  24 + name:'配置2',
  25 + id:'002'
  26 + },{
  27 + name:'配置3',
  28 + id:'003'
  29 + }])
  30 + //表格字段
  31 + let columns=Vue.ref([
  32 + {
  33 + prop: 'busTypeName',
  34 + label: '业务系统',
  35 + sortable: true,
  36 + align: 'center',
  37 + },
  38 + {
  39 + prop: 'resName',
  40 + label: '资源名称',
  41 + sortable: true,
  42 + align: 'center',
  43 + },
  44 + ])
  45 + let page=Vue.ref(1);
  46 + let pageSize=Vue.ref(10);
  47 + let keyWords=Vue.ref();
  48 + let count=Vue.ref(0);
  49 + let tableDataList=Vue.ref([{
  50 + busTypeName:'电子税务局',
  51 + id:'111',
  52 + resName:'缓存',
  53 + val:'25698458'
  54 + }]);
  55 + let checkedId = Vue.ref(0);
  56 + let titleName=Vue.ref('查看数据')
  57 + let cacheVisible=Vue.ref(false);
  58 + let viewData=Vue.ref();
  59 + //匹配项数
  60 + let num=Vue.ref(0);
  61 +
  62 + //点击标签进行搜索
  63 + const changeTag = (status) => {
  64 + console.log("aa",status)
  65 + checkedId.value = status;
  66 + getDataList();
  67 + }
  68 + //操作按钮 查看
  69 + const handleView=(row,index)=>{
  70 + viewData.value=row.val;
  71 + cacheVisible.value=true;
  72 +
  73 + }
  74 + //重新加载表格数据
  75 + let loadTableDataList = ({page, limit}) => {
  76 + page.value=page;
  77 + pageSize.value=limit;
  78 + getDataList()
  79 + }
  80 + // 点击按钮搜索
  81 + let onBtnSearch = () => {
  82 + getDataList();
  83 + }
  84 + //获取缓存数据
  85 + let getDataList=()=>{
  86 + let params={
  87 + page:page.value,
  88 + pageSize:pageSize.value,
  89 + keyWord:keyWords.value,
  90 + id:checkedId.value
  91 + }
  92 + /*proxy.$http.get(`/api-web/`, params, function (res) {
  93 + if (res && res.success) {
  94 + count.value = res.count;
  95 + tableDataList.value = res.data;
  96 + }
  97 + });*/
  98 +
  99 + }
  100 + //关闭弹框回调函数
  101 + let closeDialog=()=>{
  102 +
  103 + }
  104 + //关闭弹框
  105 + let cancelBtn=()=>{
  106 + cacheVisible.value=false;
  107 + }
  108 + return {
  109 + num,
  110 + height,
  111 + columns,
  112 + tagData,
  113 + page,
  114 + count,
  115 + pageSize,
  116 + keyWords,
  117 + tableDataList,
  118 + checkedId,
  119 + changeTag,
  120 + handleView,
  121 + loadTableDataList,
  122 + onBtnSearch,
  123 + getDataList,
  124 + cacheVisible,
  125 + titleName,
  126 + viewData,
  127 + closeDialog,
  128 + cancelBtn
  129 +
  130 + }
  131 + //End LSQ 2022/1/5
  132 +
  133 + }
  134 +
  135 +}
@@ -48,6 +48,7 @@ export default { @@ -48,6 +48,7 @@ export default {
48 computed: {}, 48 computed: {},
49 setup(props){ 49 setup(props){
50 const {proxy} = Vue.getCurrentInstance(); 50 const {proxy} = Vue.getCurrentInstance();
  51 + let height = Vue.ref(window.innerHeight - 10);
51 let id = proxy.$global.getQueryVariable('configId') ; 52 let id = proxy.$global.getQueryVariable('configId') ;
52 let config = Vue.ref(id == false ? null : id); 53 let config = Vue.ref(id == false ? null : id);
53 let count=Vue.ref(0); 54 let count=Vue.ref(0);
@@ -148,6 +149,7 @@ export default { @@ -148,6 +149,7 @@ export default {
148 } 149 }
149 150
150 return { 151 return {
  152 + height,
151 getEnvironmentData, 153 getEnvironmentData,
152 loadTableDataList, 154 loadTableDataList,
153 page, 155 page,
@@ -323,7 +323,10 @@ export default { @@ -323,7 +323,10 @@ export default {
323 this.type='base'; 323 this.type='base';
324 this.state=this.faultEnvironmentRadio; 324 this.state=this.faultEnvironmentRadio;
325 this.setDetailConfig(this.type) 325 this.setDetailConfig(this.type)
326 - this.getBaseList(); 326 + if(this.faultEnvironmentRadio==1){
  327 + this.getBaseList();
  328 +
  329 + }
327 330
328 }, 331 },
329 //APM 332 //APM
@@ -644,13 +647,17 @@ export default { @@ -644,13 +647,17 @@ export default {
644 this.baseVisible=false; 647 this.baseVisible=false;
645 if(itemData.faultConfId){ 648 if(itemData.faultConfId){
646 this.faultConfId=itemData.faultConfId; 649 this.faultConfId=itemData.faultConfId;
  650 + this.propsData.faultConfId=this.faultConfId;
  651 +
647 } 652 }
648 this.setTargetId(itemData.targetId); 653 this.setTargetId(itemData.targetId);
649 // this.targetId=itemData; 654 // this.targetId=itemData;
  655 + this.propsData.targetId=itemData.targetId;
650 //获取已添加的环境基础列表 656 //获取已添加的环境基础列表
651 this.getBaseList(); 657 this.getBaseList();
652 }, 658 },
653 getBaseList(){ 659 getBaseList(){
  660 + this.$refs.basic.setBizId();
654 this.$refs.basic.getEnvironmentData(); 661 this.$refs.basic.getEnvironmentData();
655 662
656 }, 663 },
@@ -15,7 +15,15 @@ @@ -15,7 +15,15 @@
15 <el-form :inline="true" :model="searchForm" class="demo-form-inline"> 15 <el-form :inline="true" :model="searchForm" class="demo-form-inline">
16 <el-form-item v-for="searchInfo in obj.searchList" :label="searchInfo.name"> 16 <el-form-item v-for="searchInfo in obj.searchList" :label="searchInfo.name">
17 <el-input v-if="searchInfo.type == 'INPUT'" v-model="searchForm[searchInfo.key]" :placeholder="'请输入' + searchInfo.name"></el-input> 17 <el-input v-if="searchInfo.type == 'INPUT'" v-model="searchForm[searchInfo.key]" :placeholder="'请输入' + searchInfo.name"></el-input>
18 - <el-input v-else v-model="searchForm[searchInfo.key]" :placeholder="'请输入' + searchInfo.name"></el-input> 18 + <el-select v-else v-model="searchForm[searchInfo.key]" :placeholder="'请选择' + searchInfo.name" clearable >
  19 + <el-option
  20 + v-for="item in searchItem[searchInfo.key]"
  21 + :key="item.val"
  22 + :label="item.label"
  23 + :value="item.val"
  24 + >
  25 + </el-option>
  26 + </el-select>
19 </el-form-item> 27 </el-form-item>
20 28
21 <el-form-item> 29 <el-form-item>
@@ -72,6 +72,8 @@ export default { @@ -72,6 +72,8 @@ export default {
72 72
73 let total = Vue.ref(0); 73 let total = Vue.ref(0);
74 74
  75 + let searchItem = Vue.ref({});
  76 +
75 // 计算减去左侧树的宽度 77 // 计算减去左侧树的宽度
76 let max = (function (){ 78 let max = (function (){
77 let right = window.innerWidth; 79 let right = window.innerWidth;
@@ -114,6 +116,9 @@ export default { @@ -114,6 +116,9 @@ export default {
114 if (res && res.object) { 116 if (res && res.object) {
115 obj.value = res.object 117 obj.value = res.object
116 total.value = res.count; 118 total.value = res.count;
  119 +
  120 + // 查询搜索下拉
  121 + getSearchItem(res.object.searchList);
117 } else { 122 } else {
118 obj.value.maps = []; 123 obj.value.maps = [];
119 } 124 }
@@ -133,30 +138,26 @@ export default { @@ -133,30 +138,26 @@ export default {
133 dialogFlg.value = flg; 138 dialogFlg.value = flg;
134 } 139 }
135 140
136 - let cellClick = (row, prop, column) => {  
137 - openCabinet(true);  
138 - showDialog(true);  
139 - cellDetail.value['prop'] = prop;  
140 - cellDetail.value['row'] = row;  
141 - cellDetail.value['title'] = column.label + '详情';  
142 - }  
143 - let cabinetNoSrc = Vue.ref('');  
144 - let openCabinet = (isInit) => {  
145 - if (isInit) {  
146 - cabinetNoSrc.value = "/vue3/src/assets/images/res/img01.jpg"  
147 - } else {  
148 - cabinetNoSrc.value = "/vue3/src/assets/images/res/img03.jpg"  
149 - }  
150 - }  
151 -  
152 let getPage = (pageInfo) =>{ 141 let getPage = (pageInfo) =>{
153 page.value = pageInfo.page; 142 page.value = pageInfo.page;
154 limit.value = pageInfo.limit; 143 limit.value = pageInfo.limit;
155 loadResList() 144 loadResList()
156 } 145 }
157 146
158 - let isManager = () => {  
159 - 147 + let getSearchItem = (searchList) => {
  148 + if(!searchList){
  149 + return;
  150 + }
  151 + searchList.forEach(function (v){
  152 + if(v.type == 'TABLE_REL'){
  153 + //searchItem
  154 + proxy.$http.get(`/api-web/v32/res/search/${v.treeNodeId}/${v.key}`, {}, function (res) {
  155 + if (res && res.data && res.data.length > 0) {
  156 + searchItem.value[v.key] = res.data;
  157 + }
  158 + });
  159 + }
  160 + })
160 } 161 }
161 162
162 163
@@ -166,8 +167,6 @@ export default { @@ -166,8 +167,6 @@ export default {
166 // 挂载完 167 // 挂载完
167 Vue.onMounted(() => { 168 Vue.onMounted(() => {
168 loadTree(); 169 loadTree();
169 -  
170 - openCabinet(true);  
171 }) 170 })
172 171
173 172
@@ -176,6 +175,7 @@ export default { @@ -176,6 +175,7 @@ export default {
176 currentNode, 175 currentNode,
177 treeData, 176 treeData,
178 searchForm, 177 searchForm,
  178 + searchItem,
179 height, 179 height,
180 obj, 180 obj,
181 handleNodeClick, 181 handleNodeClick,
@@ -183,10 +183,7 @@ export default { @@ -183,10 +183,7 @@ export default {
183 dialogFlg, 183 dialogFlg,
184 showDialog, 184 showDialog,
185 cellDetail, 185 cellDetail,
186 - cellClick,  
187 186
188 - openCabinet,  
189 - cabinetNoSrc,  
190 total, 187 total,
191 max, 188 max,
192 getPage, 189 getPage,