mirror of https://github.com/veops/cmdb.git
后台管理-模型关联 关系删除&&筛选
This commit is contained in:
parent
ff061d4d2e
commit
522991e23b
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="model-relation">
|
||||||
<a-card :bordered="false">
|
|
||||||
<a-button @click="handleCreate" type="primary" style="margin-bottom: 15px;" icon="plus">新增关系</a-button>
|
<a-button @click="handleCreate" type="primary" style="margin-bottom: 15px;" icon="plus">新增关系</a-button>
|
||||||
<model-relation-table ref="table"></model-relation-table>
|
<model-relation-table ref="table"></model-relation-table>
|
||||||
<a-modal
|
<a-modal
|
||||||
|
@ -59,7 +58,6 @@
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</a-card>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -110,16 +108,13 @@ export default {
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
const _currentId = localStorage.getItem('ops_cityps_currentId')
|
const _currentId = localStorage.getItem('ops_cityps_currentId')
|
||||||
console.log(_currentId)
|
|
||||||
if (_currentId) {
|
if (_currentId) {
|
||||||
this.currentId = _currentId
|
this.currentId = _currentId
|
||||||
}
|
}
|
||||||
searchResourceType({ page_size: 9999, app_id: 'cmdb' }).then((res) => {
|
searchResourceType({ page_size: 9999, app_id: 'cmdb' }).then((res) => {
|
||||||
console.log('searchResourceType', res)
|
|
||||||
this.resource_type = { groups: res.groups, id2perms: res.id2perms }
|
this.resource_type = { groups: res.groups, id2perms: res.id2perms }
|
||||||
})
|
})
|
||||||
this.loadCITypes(!_currentId)
|
this.loadCITypes(!_currentId)
|
||||||
console.log(this.CITypeId)
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
currentCId() {
|
currentCId() {
|
||||||
|
@ -168,7 +163,6 @@ export default {
|
||||||
},
|
},
|
||||||
getCITypes() {
|
getCITypes() {
|
||||||
getCITypes().then((res) => {
|
getCITypes().then((res) => {
|
||||||
console.log('getCITypes', res.ci_types)
|
|
||||||
this.CITypes = res.ci_types
|
this.CITypes = res.ci_types
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -196,9 +190,6 @@ export default {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields((err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log('Received values of form: ', values)
|
|
||||||
|
|
||||||
createRelation(values.source_ci_type_id, values.ci_type_id, values.relation_type_id, values.constraint).then(
|
createRelation(values.source_ci_type_id, values.ci_type_id, values.relation_type_id, values.constraint).then(
|
||||||
(res) => {
|
(res) => {
|
||||||
this.$message.success(`添加成功`)
|
this.$message.success(`添加成功`)
|
||||||
|
@ -215,8 +206,6 @@ export default {
|
||||||
this.$refs.table.refresh()
|
this.$refs.table.refresh()
|
||||||
},
|
},
|
||||||
handleDelete(record) {
|
handleDelete(record) {
|
||||||
console.log(record)
|
|
||||||
|
|
||||||
deleteRelation(record.source_ci_type_id, record.id).then((res) => {
|
deleteRelation(record.source_ci_type_id, record.id).then((res) => {
|
||||||
this.$message.success(`删除成功!`)
|
this.$message.success(`删除成功!`)
|
||||||
|
|
||||||
|
@ -236,4 +225,12 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style></style>
|
<style lang="less" scoped>
|
||||||
|
.model-relation {
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 15px;
|
||||||
|
padding: 24px;
|
||||||
|
height: calc(100vh - 64px);
|
||||||
|
margin-bottom: -24px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<vxe-table
|
<vxe-table
|
||||||
|
ref="xTable"
|
||||||
stripe
|
stripe
|
||||||
class="ops-stripe-table"
|
class="ops-stripe-table"
|
||||||
show-header-overflow
|
show-header-overflow
|
||||||
show-overflow
|
show-overflow
|
||||||
resizable
|
resizable
|
||||||
:max-height="`${windowHeight - 183}px`"
|
:height="`${windowHeight - 160}px`"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
:sort-config="{ defaultSort: { field: 'created_at', order: 'desc' } }"
|
:sort-config="{ defaultSort: { field: 'created_at', order: 'desc' } }"
|
||||||
>
|
>
|
||||||
|
@ -16,21 +17,8 @@
|
||||||
field="relation_type_id"
|
field="relation_type_id"
|
||||||
title="关系"
|
title="关系"
|
||||||
:filters="[{ data: '' }]"
|
:filters="[{ data: '' }]"
|
||||||
:filter-method="filterRelationMethod"
|
:filter-multiple="false"
|
||||||
:filter-recover-method="filterRelationRecoverMethod"
|
|
||||||
>
|
>
|
||||||
<template #filter="{ $panel, column }">
|
|
||||||
<template v-for="(option, index) in column.filters">
|
|
||||||
<input
|
|
||||||
type="type"
|
|
||||||
:key="index"
|
|
||||||
v-model="option.data"
|
|
||||||
@input="$panel.changeOption($event, !!option.data, option)"
|
|
||||||
@keyup.enter="$panel.confirmFilter()"
|
|
||||||
placeholder="按回车确认筛选"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<a-tag color="cyan">
|
<a-tag color="cyan">
|
||||||
{{ row.relation_type.name }}
|
{{ row.relation_type.name }}
|
||||||
|
@ -39,9 +27,14 @@
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="child.alias" title="目标模型"></vxe-column>
|
<vxe-column field="child.alias" title="目标模型"></vxe-column>
|
||||||
<vxe-column field="constraint" title="关联约束"></vxe-column>
|
<vxe-column field="constraint" title="关联约束"></vxe-column>
|
||||||
<vxe-column field="authorization" title="授权" width="89px">
|
<vxe-column field="authorization" title="操作" width="89px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
|
<a-space>
|
||||||
<a @click="handleOpenGrant(row)"><a-icon type="user-add"/></a>
|
<a @click="handleOpenGrant(row)"><a-icon type="user-add"/></a>
|
||||||
|
<a-popconfirm title="确认删除?" @confirm="deleteRelation(row)">
|
||||||
|
<a :style="{ color: 'red' }"><ops-icon type="icon-xianxing-delete"/></a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
|
@ -50,7 +43,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getCITypeRelations } from '@/modules/cmdb/api/CITypeRelation'
|
import { getCITypeRelations, deleteRelation } from '@/modules/cmdb/api/CITypeRelation'
|
||||||
import { getRelationTypes } from '@/modules/cmdb/api/relationType'
|
import { getRelationTypes } from '@/modules/cmdb/api/relationType'
|
||||||
import CMDBGrant from '../../../components/cmdbGrant'
|
import CMDBGrant from '../../../components/cmdbGrant'
|
||||||
|
|
||||||
|
@ -86,40 +79,35 @@ export default {
|
||||||
item.constraint = this.handleConstraint(item.constraint)
|
item.constraint = this.handleConstraint(item.constraint)
|
||||||
})
|
})
|
||||||
this.tableData = res
|
this.tableData = res
|
||||||
console.log('MainData', res)
|
|
||||||
},
|
},
|
||||||
// 获取关系
|
// 获取关系
|
||||||
async getRelationTypes() {
|
async getRelationTypes() {
|
||||||
const res = await getRelationTypes()
|
const res = await getRelationTypes()
|
||||||
const relationTypeMap = new Map()
|
this.relationTypeList = res.map((item) => ({ value: item.id, label: item.name }))
|
||||||
res.forEach((item) => {
|
const $table = this.$refs.xTable
|
||||||
relationTypeMap.set(item.id, item.name)
|
if ($table) {
|
||||||
})
|
const nameColumn = $table.getColumnByField('relation_type_id')
|
||||||
this.relationTypeList = relationTypeMap
|
if (nameColumn) {
|
||||||
console.log('relationTypeList', this.relationTypeList)
|
$table.setFilter(nameColumn, this.relationTypeList)
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 转换关联关系
|
// 转换关联关系
|
||||||
handleConstraint(constraintId) {
|
handleConstraint(constraintId) {
|
||||||
return this.constraintMap[constraintId]
|
return this.constraintMap[constraintId]
|
||||||
},
|
},
|
||||||
handleOpenGrant(record) {
|
handleOpenGrant(record) {
|
||||||
console.log('record', record)
|
|
||||||
console.log(`${record.parent.name} -> ${record.child.name}`)
|
|
||||||
// this.$refs.grantDrawer.open({ name: `${record.parent.name} -> ${record.child.name}` })
|
|
||||||
this.$refs.cmdbGrant.open({
|
this.$refs.cmdbGrant.open({
|
||||||
name: `${record.parent.name} -> ${record.child.name}`,
|
name: `${record.parent.name} -> ${record.child.name}`,
|
||||||
typeRelationIds: [record.parent_id, record.child_id],
|
typeRelationIds: [record.parent_id, record.child_id],
|
||||||
cmdbGrantType: 'type_relation',
|
cmdbGrantType: 'type_relation',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
filterRelationMethod({ option, row }) {
|
deleteRelation(row) {
|
||||||
return row.relation_type.name.includes(String(option.data))
|
deleteRelation(row.parent_id, row.child_id).then((res) => {
|
||||||
},
|
this.$message.success(`删除成功!`)
|
||||||
filterRelationRecoverMethod({ option }) {
|
this.getRelationTypes()
|
||||||
option.data = ''
|
})
|
||||||
},
|
|
||||||
refresh() {
|
|
||||||
this.getMainData()
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue