|
@@ -0,0 +1,144 @@
|
|
|
+<template>
|
|
|
+ <el-button type="primary" @click="editConfig(null)">新增配置</el-button>
|
|
|
+ <el-table :data="configData" border style="width: 100%;margin-top:10px;" size="small">
|
|
|
+ <el-table-column prop="metricsName" label="指标名称" />
|
|
|
+ <el-table-column prop="viewName" label="图表标题" />
|
|
|
+ <el-table-column label="排名依据">
|
|
|
+ <template #default="{row}">
|
|
|
+ <dict-tag :options="ranking_based" :value="row.rankingBased"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="排名依据" width="130">
|
|
|
+ <template #default="{row}">
|
|
|
+ <el-button type="primary" link @click="editConfig(row)">编辑</el-button>
|
|
|
+ <el-popconfirm title="确认要删除该条信息吗?" @confirm="handleDelete(row)" width="200">
|
|
|
+ <template #reference>
|
|
|
+ <el-button type="danger" link>删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-popconfirm>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ style="margin-top:10px"
|
|
|
+ v-show="total>0"
|
|
|
+ :total="total"
|
|
|
+ v-model:page="query.pageNum"
|
|
|
+ v-model:limit="query.pageSize"
|
|
|
+ @pagination="getConfigList"
|
|
|
+ />
|
|
|
+ <el-dialog v-model="visible" :title="title" width="500">
|
|
|
+ <el-form ref="objRef" :model="form" :rules="rules" label-width="100px" label-suffix=":">
|
|
|
+ <el-form-item label="指标" prop="metricsId">
|
|
|
+ <el-select v-model="form.metricsId" filterable placeholder="请选择..." style="width: 80%" @change="changeMetricsId">
|
|
|
+ <el-option v-for="item in metricsData" :key="item.metricsId" :label="item.metricsName" :value="item.metricsId"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="图表标题" prop="viewName">
|
|
|
+ <el-input v-model="form.viewName" placeholder="请输入图表标题" style="width: 80%" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排名依据" prop="rankingBased">
|
|
|
+ <el-select v-model="form.rankingBased" placeholder="请选择..." style="width: 80%">
|
|
|
+ <el-option v-for="item in ranking_based" :key="item.value" :label="item.label" :value="item.value"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div class="btn-row">
|
|
|
+ <el-button type="primary" @click="handleSubmit">确定</el-button>
|
|
|
+ <el-button @click="visible=false">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import {listConfig,updateConfig,deleteConfig,addConfig} from "@/api/risk/r5"
|
|
|
+import {listModelMs} from "@/api/risk/r2";
|
|
|
+import {onMounted, ref} from "vue";
|
|
|
+const {proxy} = getCurrentInstance()
|
|
|
+const {ranking_based} = proxy.useDict("ranking_based")
|
|
|
+
|
|
|
+const query = ref({
|
|
|
+ configType:"host",
|
|
|
+ pageNum:1,
|
|
|
+ pageSize:10
|
|
|
+})
|
|
|
+const initForm={
|
|
|
+ metricsId:"",
|
|
|
+ metricsName:"",
|
|
|
+ viewName:"",
|
|
|
+ rankingBased:"",
|
|
|
+ configType : "host"
|
|
|
+}
|
|
|
+const form = ref({
|
|
|
+ ...initForm
|
|
|
+})
|
|
|
+const configData = ref([])
|
|
|
+const visible = ref(false)
|
|
|
+const title = ref("")
|
|
|
+const total = ref(0)
|
|
|
+const rules={
|
|
|
+ metricsId: [{required: true, message: "请选择指标"}],
|
|
|
+ viewName: [{required: true, message: "请输入图表标题"}],
|
|
|
+ rankingBased: [{required: true, message: "请选择排名依据"}]
|
|
|
+}
|
|
|
+const metricsData=ref([])
|
|
|
+onMounted(()=>{
|
|
|
+ getConfigList()
|
|
|
+})
|
|
|
+
|
|
|
+async function handleDelete(row){
|
|
|
+ const res = await deleteConfig(row.hcId)
|
|
|
+ updateData(res)
|
|
|
+}
|
|
|
+
|
|
|
+async function getConfigList(){
|
|
|
+ visible.value = false
|
|
|
+ const res = await listConfig(query.value)
|
|
|
+ configData.value = res.rows
|
|
|
+ total.value = res.total
|
|
|
+}
|
|
|
+
|
|
|
+function changeMetricsId(id) {
|
|
|
+ form.value.metricsName = metricsData.value.find(item => item.metricsId === id).metricsName
|
|
|
+}
|
|
|
+
|
|
|
+async function getMetricsList(){
|
|
|
+ const res = await listModelMs()
|
|
|
+ metricsData.value = res.data
|
|
|
+}
|
|
|
+
|
|
|
+function updateData(res){
|
|
|
+ proxy.$message.success(res.msg)
|
|
|
+ getConfigList()
|
|
|
+ proxy.$emit("update")
|
|
|
+}
|
|
|
+
|
|
|
+function handleSubmit(){
|
|
|
+ proxy.$refs.objRef.validate(async valid => {
|
|
|
+ if(valid){
|
|
|
+ const res = form.value.hcId != undefined ? await updateConfig(form.value) : await addConfig(form.value)
|
|
|
+ updateData(res)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+async function editConfig(row){
|
|
|
+ visible.value = true
|
|
|
+ if(!row){
|
|
|
+ title.value = "新增配置"
|
|
|
+ form.value = {...initForm}
|
|
|
+ }else{
|
|
|
+ title.value = "编辑配置"
|
|
|
+ form.value = {...row}
|
|
|
+ }
|
|
|
+ proxy.resetForm("objRef");
|
|
|
+ !metricsData.value.length && await getMetricsList()
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.btn-row{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ margin-top:30px;
|
|
|
+}
|
|
|
+</style>
|