fix:修复save chart 时填入不存在的panel未创建新panel的问题

This commit is contained in:
wangwenrui
2020-10-19 18:33:18 +08:00
parent 7af562d1b9
commit 41a8029c58
4 changed files with 49 additions and 41 deletions

View File

@@ -104,6 +104,7 @@
params:{type:Object}, params:{type:Object},
exportFileName:{type:String}, exportFileName:{type:String},
importUrl: {type:String,required:true}, importUrl: {type:String,required:true},
link:{type:Object},
}, },
data:function(){ data:function(){
return { return {
@@ -158,6 +159,9 @@
form.append('excelFile',this.importFile.raw); form.append('excelFile',this.importFile.raw);
if(this.paramsType){ if(this.paramsType){
form.append('type',this.paramsType); form.append('type',this.paramsType);
if(this.paramsType==='asset' || this.paramsType==='model'){
form.append('linkId',this.link?this.link.id:'');
}
} }
form.append('language',localStorage.getItem("nz-language") ? localStorage.getItem("nz-language") : 'en') form.append('language',localStorage.getItem("nz-language") ? localStorage.getItem("nz-language") : 'en')
this.$post(this.importUrl,form,{'Content-Type': 'multipart/form-data'}).then(response=>{ this.$post(this.importUrl,form,{'Content-Type': 'multipart/form-data'}).then(response=>{

View File

@@ -20,9 +20,9 @@
<el-form-item :label="$t('config.system.basic.defaultCabinetUsize')" prop="default_cabinet_usize"> <el-form-item :label="$t('config.system.basic.defaultCabinetUsize')" prop="default_cabinet_usize">
<el-input v-model.number="basic.default_cabinet_usize" ></el-input> <el-input v-model.number="basic.default_cabinet_usize" ></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('config.system.basic.exporterTarget')" prop="node_exporter_target_path"> <!--<el-form-item :label="$t('config.system.basic.exporterTarget')" prop="node_exporter_target_path">
<el-input v-model="basic.node_exporter_target_path"></el-input> <el-input v-model="basic.node_exporter_target_path"></el-input>
</el-form-item> </el-form-item>-->
<el-form-item :label="$t('config.system.basic.scrapeInterval')" prop="scrape_interval"> <el-form-item :label="$t('config.system.basic.scrapeInterval')" prop="scrape_interval">
<el-input v-model.number="basic.scrape_interval" ></el-input><span class="nz-input-append">{{$t('config.system.basic.second')}}</span> <el-input v-model.number="basic.scrape_interval" ></el-input><span class="nz-input-append">{{$t('config.system.basic.second')}}</span>
</el-form-item> </el-form-item>
@@ -260,7 +260,7 @@
basicCopy:null, basicCopy:null,
basicRules:{ basicRules:{
system_name:[{required:true,message:this.$t('validate.required'),trigger:'blur'},], system_name:[{required:true,message:this.$t('validate.required'),trigger:'blur'},],
node_exporter_target_path:[{required:true,message:this.$t('validate.required'),trigger:'blur'},], // node_exporter_target_path:[{required:true,message:this.$t('validate.required'),trigger:'blur'},],
alert_api:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:host,trigger: 'blur'}], alert_api:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:host,trigger: 'blur'}],
asset_ping_interval:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:positiveInteger,trigger:'blur'}], asset_ping_interval:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:positiveInteger,trigger:'blur'}],
scrape_interval:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:positiveInteger,trigger:'blur'}], scrape_interval:[{required:true,message:this.$t('validate.required'),trigger:'blur'},{validator:positiveInteger,trigger:'blur'}],

View File

@@ -100,7 +100,7 @@
<el-input size="small" maxlength="64" show-word-limit v-model="editChart.title"></el-input> <el-input size="small" maxlength="64" show-word-limit v-model="editChart.title"></el-input>
</el-form-item> </el-form-item>
<div class="right-box-small-title">{{$t('dashboard.panel.chartForm.option')}}</div> <div class="right-box-sub-title">{{$t('dashboard.panel.chartForm.option')}}</div>
<div style="margin-bottom: 20px;width: 100%"></div> <div style="margin-bottom: 20px;width: 100%"></div>
<!-- type unit start--> <!-- type unit start-->
@@ -646,19 +646,27 @@
// 新建图表 // 新建图表
addCharts(params) { addCharts(params) {
let panelId; let panelId;
let panel;
//先处理panel //先处理panel
let panelPromise=new Promise(resolve => {
if (this.panelId) { if (this.panelId) {
panelId = this.panelId; panelId = this.panelId;
} else if (this.showPanel && this.showPanel.type != "dashboard") { panel=this.panelData.find(p => p.id === this.panelId);
resolve()
} else if (this.showPanel && this.showPanel.type != "dashboard" && this.showPanel.type != 'explore') {
panelId = this.panelData[0].id; panelId = this.panelData[0].id;
panel = this.panelData[0]
resolve()
} else { } else {
panelId = this.autocompleteExist(this.editChart.panelName); panelId = this.autocompleteExist(this.editChart.panelName);
if (!panelId) { if (!panelId) {
this.$post('panel', {name: this.editChart.panelName}).then(response => { this.$post('panel', {name: this.editChart.panelName}).then(response => {
if (response.code === 200) { if (response.code === 200) {
this.$emit("reloadOnlyPanel"); this.$emit("reloadOnlyPanel");
this.$store.commit('panelListChange', true); panel = response.data.panel
panelId = this.autocompleteExist(this.editChart.panelName); panelId=panel.id;
resolve()
} else { } else {
if(response.msg){ if(response.msg){
this.$message.error(response.msg); this.$message.error(response.msg);
@@ -669,9 +677,9 @@
}); });
} }
} }
})
let intervalTime = 1; //设置3秒超时 panelPromise.then(()=>{
let interval = setInterval(() => {
if (panelId) { if (panelId) {
this.panelId = panelId; this.panelId = panelId;
this.$post('panel/' + this.panelId + '/charts', params ? params : this.editChart).then(response => { this.$post('panel/' + this.panelId + '/charts', params ? params : this.editChart).then(response => {
@@ -679,7 +687,6 @@
this.esc(); this.esc();
this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")});
this.$refs.chartForm.resetFields();//清空表单 this.$refs.chartForm.resetFields();//清空表单
let panel = this.panelData.find(p => p.id === this.panelId);
this.$emit('on-create-success', 'create', response.data, params, panel); this.$emit('on-create-success', 'create', response.data, params, panel);
} else { } else {
if (response.msg) { if (response.msg) {
@@ -689,14 +696,8 @@
} }
} }
}); });
clearInterval(interval);
} else if (intervalTime > 15) {
this.$message.error("Time out");
clearInterval(interval);
} else {
intervalTime++;
} }
}, 200); })
}, },
// 更新图表 // 更新图表
updateCharts(params) { updateCharts(params) {
@@ -1320,7 +1321,12 @@
let panel = this.panelData.find(p => { let panel = this.panelData.find(p => {
return p.name == n.panelName; return p.name == n.panelName;
}); });
panel && (this.panelId = panel.id);
if(panel){
this.panelId = panel.id;
}else{
this.panelId = null;
}
} }
} }
/*panelData: { /*panelData: {

View File

@@ -532,7 +532,6 @@ instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="c
}, },
saveChart() { saveChart() {
let chart = { let chart = {
id:'',
title: '', title: '',
type:'line', type:'line',
span:12, span:12,
@@ -553,7 +552,6 @@ instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="c
this.rightBox.show = true; this.rightBox.show = true;
}, },
createSuccess(type, response, param, panel) { //添加chart成功 createSuccess(type, response, param, panel) { //添加chart成功
console.info(response, param, panel);
this.$confirm(this.$t("dashboard.metric.goPanelTip"), this.$t("tip.saveSuccess"), { this.$confirm(this.$t("dashboard.metric.goPanelTip"), this.$t("tip.saveSuccess"), {
confirmButtonText: this.$t("tip.yes"), confirmButtonText: this.$t("tip.yes"),
cancelButtonText: this.$t("tip.no"), cancelButtonText: this.$t("tip.no"),