cmc-web/webs/ams-web/src/views/resource/resource-topo/index.vue

98 lines
2.8 KiB
Vue
Raw Normal View History

2024-08-20 12:11:31 +00:00
<template>
<div>
2024-08-28 07:20:00 +00:00
<AmsPosition></AmsPosition>
2024-08-20 12:11:31 +00:00
<cb-advance-table title="拓扑列表" :search-configs="searchConfigs" :data="list" :params="params" :columns="columns" :get-list="getList" :total="total" :loading="loading">
2024-08-28 07:20:00 +00:00
<template #action v-if="isLeaderPosition">
2024-08-20 12:11:31 +00:00
<el-button type="primary" @click="handleCreate()" icon="el-icon-plus">新增</el-button>
</template>
<template #name="name, record">
<span class="detail-href" @click="getDetail(record.id)">{{ name }}</span>
</template>
<template #operate="val, record">
2024-08-28 07:20:00 +00:00
<template v-if="isLeaderPosition">
<el-button type="text" @click="handleCreate(record)"><i class="el-icon-edit"></i> 编辑</el-button>
<div class="action-divider"></div>
<el-button type="text" @click="handleDelete(record)"><i class="el-icon-delete"></i> 删除</el-button>
</template>
2024-08-20 12:11:31 +00:00
</template>
</cb-advance-table>
<Detail :detail="detail" v-if="visible" @goBack="visible = false"></Detail>
<AddData :add-data="addData" v-if="addData.dialog" @getList="getList"></AddData>
</div>
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs } from 'vue'
import { useTable } from '@cmp/cmp-element'
import { columns, searchConfigs } from './config'
import { getInstanceTopo, removeInstanceTopo, getInstanceTopoDetail } from 'services/resource'
2024-08-28 08:50:02 +00:00
import usePostion from '@/views/usePosition'
2024-08-28 07:20:00 +00:00
import AmsPosition from '@/views/AmsPosition.vue'
2024-08-20 12:11:31 +00:00
export default defineComponent({
components: {
AddData: () => import('./components/AddData.vue'),
2024-08-21 01:17:14 +00:00
Detail: () => import('./detail/index.vue'),
2024-08-28 07:20:00 +00:00
AmsPosition,
2024-08-20 12:11:31 +00:00
},
setup() {
2024-08-28 07:20:00 +00:00
const { isLeaderPosition } = usePostion(() => getList())
2024-08-20 12:11:31 +00:00
const { list, total, loading, getList, params, handleDelete } = useTable({
getService: getInstanceTopo,
2024-08-21 01:17:14 +00:00
removeService: removeInstanceTopo,
2024-08-20 12:11:31 +00:00
})
const state = reactive({
addData: {
dialog: false,
2024-08-21 01:17:14 +00:00
data: {},
2024-08-20 12:11:31 +00:00
},
detail: {},
2024-08-21 01:17:14 +00:00
visible: false,
2024-08-20 12:11:31 +00:00
})
function handleCreate(record?: Object) {
if (record) {
// 编辑
state.addData.data = {
...state.addData.data,
2024-08-21 01:17:14 +00:00
...record,
2024-08-20 12:11:31 +00:00
}
} else {
// 新增
state.addData.data = {
startType: 'ALL',
topologyLevelUp: 2,
2024-08-21 01:17:14 +00:00
topologyLevelDown: 2,
2024-08-20 12:11:31 +00:00
}
}
state.addData.dialog = true
}
async function getDetail(id: Number) {
const res = await getInstanceTopoDetail(id)
if (res.success) {
state.detail = res.data
state.visible = true
}
}
return {
list,
total,
loading,
getList,
params,
columns,
searchConfigs,
handleCreate,
handleDelete,
getDetail,
2024-08-21 01:17:14 +00:00
...toRefs(state),
2024-08-28 07:20:00 +00:00
isLeaderPosition,
2024-08-20 12:11:31 +00:00
}
2024-08-21 01:17:14 +00:00
},
2024-08-20 12:11:31 +00:00
})
</script>
<style></style>