Merge branch 'dev-2.0' of https://git.mesalab.cn/nezha/nezha-fronted into dev-3.1
This commit is contained in:
@@ -2,6 +2,15 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100% - 60px);
|
height: calc(100% - 60px);
|
||||||
display: flex;
|
display: flex;
|
||||||
|
.no-data{
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
color: #909399;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
.nz-detail-view-left{
|
.nz-detail-view-left{
|
||||||
width: 260px;
|
width: 260px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -17,9 +17,16 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<ul class="detail-row-box" ref="dataTable">
|
<ul class="detail-row-box" ref="dataTable">
|
||||||
<li v-for="(item,index) in tableData" :key="index" class="detail-row" @click="detailViewRightShow(item)" :class="item.id === detailViewRightObj.id ? 'selected' : ''">
|
<li
|
||||||
|
v-for="(item,index) in tableData"
|
||||||
|
:key="index"
|
||||||
|
class="detail-row"
|
||||||
|
:class="item.id === detailViewRightObj.id ? 'selected' : ''"
|
||||||
|
@click="detailViewRightShow(item)"
|
||||||
|
@mouseenter="labelHover(item, 'asset', true, $event)"
|
||||||
|
@mouseleave="labelHover(item, 'asset', false)">
|
||||||
<div class="detail-row-info">
|
<div class="detail-row-info">
|
||||||
<div class="asset-manageIp" :title="item.name">
|
<div class="asset-manageIp">
|
||||||
<el-popover :content="$t('asset.assetStatPre')+(item.pingInfo.lastUpdate?utcTimeToTimezoneStr(item.pingInfo.lastUpdate):$t('asset.assetStatDown'))" v-if="item.pingInfo" placement="right" trigger="hover">
|
<el-popover :content="$t('asset.assetStatPre')+(item.pingInfo.lastUpdate?utcTimeToTimezoneStr(item.pingInfo.lastUpdate):$t('asset.assetStatDown'))" v-if="item.pingInfo" placement="right" trigger="hover">
|
||||||
<span slot="reference">
|
<span slot="reference">
|
||||||
<span :class="{'active-icon green-bg':item.pingInfo.status == 1,'active-icon red-bg':item.pingInfo.status == 0}"></span>
|
<span :class="{'active-icon green-bg':item.pingInfo.status == 1,'active-icon red-bg':item.pingInfo.status == 0}"></span>
|
||||||
@@ -31,6 +38,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="asset-name" :title="item.manageIp">{{item.manageIp}}</div>
|
<div class="asset-name" :title="item.manageIp">{{item.manageIp}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<alertLabel
|
||||||
|
v-if="item && item.loading"
|
||||||
|
:id="item.id"
|
||||||
|
:that="item"
|
||||||
|
:type="'asset'"
|
||||||
|
></alertLabel>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -39,10 +52,13 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
import detailViewLeftMixin from '@/components/common/mixin/detailViewLeftMixin'
|
import detailViewLeftMixin from '@/components/common/mixin/detailViewLeftMixin'
|
||||||
|
import alertLabel from '@/components/common/alert/alertLabel'
|
||||||
export default {
|
export default {
|
||||||
name: 'assetDetail',
|
name: 'assetDetail',
|
||||||
mixins: [detailViewLeftMixin],
|
mixins: [detailViewLeftMixin],
|
||||||
|
components: {
|
||||||
|
alertLabel
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
tableTitle: [
|
tableTitle: [
|
||||||
@@ -146,6 +162,18 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// label 鼠标划入
|
||||||
|
labelHover (item, type, loading, e) {
|
||||||
|
if (e) {
|
||||||
|
const dom = e.currentTarget
|
||||||
|
const position = dom.getBoundingClientRect()
|
||||||
|
this.$set(item, 'position', position)
|
||||||
|
}
|
||||||
|
this.$set(item, 'loading', loading)
|
||||||
|
// this.$set(this.tableData,index,item);// 调用父组件
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -32,13 +32,16 @@
|
|||||||
<!-- <div v-if="showLayout.indexOf('pagination') > -1" class="pagination-top pagination-top-hide display-none"></div>-->
|
<!-- <div v-if="showLayout.indexOf('pagination') > -1" class="pagination-top pagination-top-hide display-none"></div>-->
|
||||||
</div>
|
</div>
|
||||||
<div :style="{ height: nzTableHeight }" class="nz-detail-view">
|
<div :style="{ height: nzTableHeight }" class="nz-detail-view">
|
||||||
<div class="nz-detail-view-left">
|
<div class="nz-detail-view-left" v-if="dataLength">
|
||||||
<slot name="nz-detail-view-list"></slot>
|
<slot name="nz-detail-view-list"></slot>
|
||||||
<div v-if="showLayout.indexOf('pagination') > -1" class="nz-detail-view-pagination">
|
<div v-if="showLayout.indexOf('pagination') > -1" class="nz-detail-view-pagination">
|
||||||
<slot name="pagination"></slot>
|
<slot name="pagination"></slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nz-detail-view-right">
|
<div v-else class="no-data">
|
||||||
|
No Data
|
||||||
|
</div>
|
||||||
|
<div class="nz-detail-view-right" v-if="detailViewRightObj">
|
||||||
<detailViewRight
|
<detailViewRight
|
||||||
@getTableData = 'getTableData'
|
@getTableData = 'getTableData'
|
||||||
ref="detailViewRight"
|
ref="detailViewRight"
|
||||||
@@ -79,6 +82,10 @@ export default {
|
|||||||
customTableTitle: {
|
customTableTitle: {
|
||||||
type: Array
|
type: Array
|
||||||
},
|
},
|
||||||
|
dataLength: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
},
|
||||||
layout: {
|
layout: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default () { return [] }
|
default () { return [] }
|
||||||
|
|||||||
@@ -112,8 +112,8 @@
|
|||||||
<el-tab-pane :label="$t('project.endpoint.basic')" name="Basic">
|
<el-tab-pane :label="$t('project.endpoint.basic')" name="Basic">
|
||||||
<!--type-->
|
<!--type-->
|
||||||
<el-form-item :label='$t("project.endpoint.protocol")' class="half-form-item" prop="type">
|
<el-form-item :label='$t("project.endpoint.protocol")' class="half-form-item" prop="type">
|
||||||
<el-select id="module-box-input-type" v-model="editEndpoint.configs[0].config.protocol" :disabled="!!editEndpoint.id || true" class="right-box__select" placeholder="" popper-class="prevent-clickoutside" size="small" value-key="id">
|
<el-select id="module-box-input-type" v-model="editEndpoint.configs[0].config.protocol" :disabled="!!editEndpoint.id && editEndpoint.configs[0].config.protocol === 'snmp'" class="right-box__select" placeholder="" popper-class="prevent-clickoutside" size="small" value-key="id">
|
||||||
<el-option v-for="item in typeList" :id="'module-type-'+item.id" :key="item.value" :label="item.name" :value="item.value"></el-option>
|
<el-option v-for="item in typeList" :id="'module-type-'+item.id" :key="item.value" :label="item.name" :value="item.value" :disabled="item.disabled && !!editEndpoint.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!--host-->
|
<!--host-->
|
||||||
@@ -680,15 +680,18 @@ export default {
|
|||||||
typeList: [
|
typeList: [
|
||||||
{
|
{
|
||||||
value: 'http',
|
value: 'http',
|
||||||
name: 'HTTP'
|
name: 'HTTP',
|
||||||
},
|
disabled: false
|
||||||
{
|
|
||||||
value: 'snmp',
|
|
||||||
name: 'SNMP'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: 'https',
|
value: 'https',
|
||||||
name: 'HTTPS'
|
name: 'HTTPS',
|
||||||
|
disabled: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'snmp',
|
||||||
|
name: 'SNMP',
|
||||||
|
disabled: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
logsBasicList: [
|
logsBasicList: [
|
||||||
|
|||||||
@@ -93,8 +93,8 @@
|
|||||||
<el-tab-pane :label="$t('project.endpoint.basic')" name="Basic">
|
<el-tab-pane :label="$t('project.endpoint.basic')" name="Basic">
|
||||||
<!--type-->
|
<!--type-->
|
||||||
<el-form-item :label='$t("project.endpoint.protocol")' class="half-form-item" prop="type">
|
<el-form-item :label='$t("project.endpoint.protocol")' class="half-form-item" prop="type">
|
||||||
<el-select id="module-box-input-type" v-model="editModule.configs[0].config.protocol" :disabled="!!editModule.id" class="right-box__select" placeholder="" popper-class="right-box-select-top right-public-box-dropdown-top right-box-public-dropdown prevent-clickoutside" size="small" value-key="id" @change="changeBasicType">
|
<el-select id="module-box-input-type" v-model="editModule.configs[0].config.protocol" :disabled="!!editModule.id && editModule.configs[0].config.protocol === 'snmp'" class="right-box__select" placeholder="" popper-class="right-box-select-top right-public-box-dropdown-top right-box-public-dropdown prevent-clickoutside" size="small" value-key="id" @change="changeBasicType">
|
||||||
<el-option v-for="item in typeList" :id="'module-type-'+item.id" :key="item.value" :label="item.name" :value="item.value"></el-option>
|
<el-option v-for="item in typeList" :id="'module-type-'+item.id" :key="item.value" :label="item.name" :value="item.value" :disabled="item.disabled && !!editModule.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!--host-->
|
<!--host-->
|
||||||
@@ -653,15 +653,18 @@ export default {
|
|||||||
typeList: [
|
typeList: [
|
||||||
{
|
{
|
||||||
value: 'http',
|
value: 'http',
|
||||||
name: 'HTTP'
|
name: 'HTTP',
|
||||||
},
|
disabled: false
|
||||||
{
|
|
||||||
value: 'snmp',
|
|
||||||
name: 'SNMP'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: 'https',
|
value: 'https',
|
||||||
name: 'HTTPS'
|
name: 'HTTPS',
|
||||||
|
disabled: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'snmp',
|
||||||
|
name: 'SNMP',
|
||||||
|
disabled: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
logsBasicList: [
|
logsBasicList: [
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
:search-msg="searchMsg"
|
:search-msg="searchMsg"
|
||||||
:detailType="detailType"
|
:detailType="detailType"
|
||||||
:detailViewRightObj="detailViewRightObj"
|
:detailViewRightObj="detailViewRightObj"
|
||||||
|
:dataLength="tableData.length"
|
||||||
@search="search"
|
@search="search"
|
||||||
@changeDetailType="changeDetailType"
|
@changeDetailType="changeDetailType"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user