mirror of
https://github.com/veops/cmdb.git
synced 2025-08-08 15:50:22 +08:00
feat(ui): ipam - address table add view relation
This commit is contained in:
@@ -115,6 +115,7 @@
|
|||||||
:referenceShowAttrNameMap="referenceShowAttrNameMap"
|
:referenceShowAttrNameMap="referenceShowAttrNameMap"
|
||||||
:referenceCIIdMap="referenceCIIdMap"
|
:referenceCIIdMap="referenceCIIdMap"
|
||||||
:columnWidth="columnWidth"
|
:columnWidth="columnWidth"
|
||||||
|
:addressCITypeId="addressCITypeId"
|
||||||
@openAssign="openAssign"
|
@openAssign="openAssign"
|
||||||
@recycle="handleRecycle"
|
@recycle="handleRecycle"
|
||||||
@selectChange="handleTableSelectChange"
|
@selectChange="handleTableSelectChange"
|
||||||
@@ -182,6 +183,7 @@ export default {
|
|||||||
currentSelectScope: '',
|
currentSelectScope: '',
|
||||||
columns: [],
|
columns: [],
|
||||||
attrList: [],
|
attrList: [],
|
||||||
|
attributes: {},
|
||||||
subnetData: {},
|
subnetData: {},
|
||||||
referenceShowAttrNameMap: {},
|
referenceShowAttrNameMap: {},
|
||||||
referenceCIIdMap: {},
|
referenceCIIdMap: {},
|
||||||
@@ -212,6 +214,17 @@ export default {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
handleSearch: this.getIPList,
|
||||||
|
attrList: () => {
|
||||||
|
return this.attrList
|
||||||
|
},
|
||||||
|
attributes: () => {
|
||||||
|
return this.attributes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
addressNullTip() {
|
addressNullTip() {
|
||||||
if (
|
if (
|
||||||
@@ -314,8 +327,10 @@ export default {
|
|||||||
|
|
||||||
async getColumns() {
|
async getColumns() {
|
||||||
const getAttrRes = await getCITypeAttributesById(this.addressCITypeId)
|
const getAttrRes = await getCITypeAttributesById(this.addressCITypeId)
|
||||||
|
this.attributes = _.cloneDeep(getAttrRes)
|
||||||
|
this.attrList = _.cloneDeep(getAttrRes.attributes)
|
||||||
|
|
||||||
const attrList = getAttrRes.attributes
|
const attrList = getAttrRes.attributes
|
||||||
this.attrList = _.cloneDeep(attrList)
|
|
||||||
|
|
||||||
const filterAttrList = _.remove(attrList, (item) => {
|
const filterAttrList = _.remove(attrList, (item) => {
|
||||||
return ['ip', 'subnet_mask', 'assign_status', 'is_used', '_updated_by', '_updated_at'].includes(item.name)
|
return ['ip', 'subnet_mask', 'assign_status', 'is_used', '_updated_by', '_updated_at'].includes(item.name)
|
||||||
@@ -489,9 +504,14 @@ export default {
|
|||||||
const totalWidth = Object.values(columnWidth).reduce((acc, cur) => acc + cur, 0)
|
const totalWidth = Object.values(columnWidth).reduce((acc, cur) => acc + cur, 0)
|
||||||
|
|
||||||
if (totalWidth < wrapWidth) {
|
if (totalWidth < wrapWidth) {
|
||||||
this.columnWidth = {}
|
this.columnWidth = {
|
||||||
|
ip: 130
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.columnWidth = columnWidth
|
this.columnWidth = {
|
||||||
|
...columnWidth,
|
||||||
|
ip: 130
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -111,6 +111,12 @@
|
|||||||
<a-tooltip v-else :title="$t('cmdb.ipam.assign')">
|
<a-tooltip v-else :title="$t('cmdb.ipam.assign')">
|
||||||
<a @click="assignAddress(row)"><ops-icon type="monitor-add2" /></a>
|
<a @click="assignAddress(row)"><ops-icon type="monitor-add2" /></a>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|
||||||
|
<a-tooltip v-if="row._ip_status !== ADDRESS_STATUS.OFFLINE_UNASSIGNED" :title="$t('cmdb.ci.viewRelation')">
|
||||||
|
<a @click="openRelation(row)">
|
||||||
|
<a-icon type="retweet" />
|
||||||
|
</a>
|
||||||
|
</a-tooltip>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vxe-table-column>
|
</vxe-table-column>
|
||||||
@@ -141,6 +147,8 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-pagination>
|
</a-pagination>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<CIDetailDrawer ref="detail" :typeId="addressCITypeId" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -149,8 +157,13 @@ import _ from 'lodash'
|
|||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import { STATUS_COLOR, STATUS_LABEL, ADDRESS_STATUS } from './constants.js'
|
import { STATUS_COLOR, STATUS_LABEL, ADDRESS_STATUS } from './constants.js'
|
||||||
|
|
||||||
|
import CIDetailDrawer from '@/modules/cmdb/views/ci/modules/ciDetailDrawer.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TableIP',
|
name: 'TableIP',
|
||||||
|
components: {
|
||||||
|
CIDetailDrawer
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
columns: {
|
columns: {
|
||||||
type: Array,
|
type: Array,
|
||||||
@@ -171,6 +184,10 @@ export default {
|
|||||||
columnWidth: {
|
columnWidth: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => {}
|
default: () => {}
|
||||||
|
},
|
||||||
|
addressCITypeId: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -284,6 +301,12 @@ export default {
|
|||||||
const ips = records?.map?.((item) => item.ip) || []
|
const ips = records?.map?.((item) => item.ip) || []
|
||||||
this.$emit('selectChange', ips)
|
this.$emit('selectChange', ips)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
openRelation(row) {
|
||||||
|
if (row._id) {
|
||||||
|
this.$refs.detail.create(row._id, 'tab_2', '2')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
Reference in New Issue
Block a user