2020-08-19 11:44:26 +08:00
|
|
|
|
<template>
|
2020-08-27 17:05:10 +08:00
|
|
|
|
<div class="mc" @click.self="clickOutside">
|
|
|
|
|
|
<div class="right-box right-box-edit-endpoint">
|
2020-08-19 11:44:26 +08:00
|
|
|
|
<!-- begin--顶部按钮-->
|
2020-09-02 09:38:26 +08:00
|
|
|
|
<div class="right-box-top-btns" v-if="nodeData.id">
|
|
|
|
|
|
<button id="edit-ep-del" type="button" @click="del" class="nz-btn nz-btn-size-normal nz-btn-size-alien nz-btn-style-light ">
|
2020-09-10 17:00:32 +08:00
|
|
|
|
<span class="right-box-top-btn-icon"><i class="nz-icon nz-icon-delete"></i></span>
|
2020-09-02 09:38:26 +08:00
|
|
|
|
<span class="right-box-top-btn-txt">{{$t('overall.delete')}}</span>
|
|
|
|
|
|
</button>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<!-- end--顶部按钮-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- begin--标题-->
|
2020-08-20 14:47:14 +08:00
|
|
|
|
<div class="right-box-title">
|
|
|
|
|
|
<!--{{$t("project.endpoint.editEndpoint") + " ID:" + nodeData.id}}-->
|
|
|
|
|
|
Add Module
|
|
|
|
|
|
</div>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
<!-- end--标题-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- begin--表单-->
|
|
|
|
|
|
<el-scrollbar class="right-box-form-box">
|
2020-08-20 17:09:22 +08:00
|
|
|
|
<el-form class="right-box-form right-box-form-left" ref="form" :model="form" label-width="160px" :rules="rules">
|
2020-08-24 11:22:59 +08:00
|
|
|
|
<el-form-item label="Module Name" prop="moduleId">
|
2020-08-24 15:02:23 +08:00
|
|
|
|
<el-select v-model="form.moduleId" placeholder="" popper-class="asset-dropdown" size="small">
|
2020-08-19 11:44:26 +08:00
|
|
|
|
<el-option
|
2020-08-20 14:47:14 +08:00
|
|
|
|
v-for="item in moduleDataS.module"
|
2020-08-19 11:44:26 +08:00
|
|
|
|
:key="item.id"
|
2020-08-20 14:47:14 +08:00
|
|
|
|
:label="item.name"
|
2020-08-19 11:44:26 +08:00
|
|
|
|
:value="item.id">
|
|
|
|
|
|
</el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
2020-08-26 09:34:30 +08:00
|
|
|
|
<el-form-item label="Icon" prop="iconId" class="icon">
|
2020-08-28 09:32:31 +08:00
|
|
|
|
<el-select v-model="form.iconId" placeholder="" popper-class="asset-dropdown" size="small" :loading="imgageLoading">
|
2020-08-27 15:23:52 +08:00
|
|
|
|
<div slot="prefix" class="sel-image">
|
|
|
|
|
|
<img v-if="form.iconId" :src="selImage.image" style="height: 28px"/>
|
|
|
|
|
|
<span v-if="form.iconId" class="sel-image-name">{{selImage.imageName}}</span>
|
|
|
|
|
|
</div>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in iconArray"
|
|
|
|
|
|
:key="item.id"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.id">
|
2020-08-20 17:09:22 +08:00
|
|
|
|
<span style="float: left;width: 50%">
|
2020-08-27 15:23:52 +08:00
|
|
|
|
<img :src="item.image" style="width: 24px;height: 32px"/>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</span>
|
2020-08-20 17:09:22 +08:00
|
|
|
|
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.imageName }}</span>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</el-option>
|
|
|
|
|
|
</el-select>
|
2020-08-26 09:34:30 +08:00
|
|
|
|
<el-upload
|
|
|
|
|
|
class="avatar-uploader"
|
|
|
|
|
|
action=" "
|
|
|
|
|
|
:show-file-list="false"
|
|
|
|
|
|
:on-success="handleAvatarSuccess"
|
|
|
|
|
|
:before-upload="beforeAvatarUpload"
|
2020-08-27 15:23:52 +08:00
|
|
|
|
:auto-upload="true"
|
2020-08-26 09:34:30 +08:00
|
|
|
|
>
|
|
|
|
|
|
上传文件
|
|
|
|
|
|
</el-upload>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</el-form-item>
|
2020-08-24 15:02:23 +08:00
|
|
|
|
<div class="right-box-sub-title">
|
|
|
|
|
|
<span>{{$t('alert.config.expr')}}</span>
|
|
|
|
|
|
<span class="float-right" @click="addExpression"><i style="font-size: 16px; cursor: pointer;" class="nz-icon nz-icon-create-square"></i></span>
|
|
|
|
|
|
</div>
|
2020-09-07 15:15:10 +08:00
|
|
|
|
<el-row class="element-item expr" style="" v-for="index of promqlKeys.length" :key="'ele' + index">
|
|
|
|
|
|
<el-form-item :rules="{required: true,message: '名称不能为空', trigger: 'blur'}" :prop="'name.' + (index-1)">
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<template>
|
|
|
|
|
|
<el-col class="expr-title" style="">
|
|
|
|
|
|
{{$t('project.topology.chartName')}}
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col style="width: calc(100% - 140px);">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="form.name[index-1]"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
></el-input>
|
|
|
|
|
|
</el-col>
|
2020-09-10 17:00:32 +08:00
|
|
|
|
<el-col style="width: 20px"> <i class="nz-icon nz-icon-minus" @click="removeExpression(index-1)"></i></el-col>
|
2020-09-07 15:15:10 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-form-item>
|
2020-08-24 15:02:23 +08:00
|
|
|
|
<el-row>
|
2020-09-07 15:15:10 +08:00
|
|
|
|
<el-col class="expr-title">
|
2020-09-03 09:51:50 +08:00
|
|
|
|
{{$t('project.topology.unit')}}
|
2020-08-24 15:02:23 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col style="width: calc(100% - 120px);">
|
|
|
|
|
|
<el-cascader filterable placeholder="" popper-class="no-style-class unit-popper-class" size="small" style="width: 100%"
|
2020-09-07 15:15:10 +08:00
|
|
|
|
:options="unitOptions"
|
|
|
|
|
|
:props="{ expandTrigger: 'click',emitPath:false }"
|
|
|
|
|
|
:show-all-levels="false"
|
|
|
|
|
|
v-model="unit[index-1]"
|
|
|
|
|
|
></el-cascader>
|
2020-08-24 15:02:23 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<promql-input
|
|
|
|
|
|
:ref="'promql-'+(index-1)"
|
|
|
|
|
|
:id="promqlKeys[index-1]"
|
|
|
|
|
|
:key="promqlKeys[index-1]"
|
|
|
|
|
|
:expression-list="expressions"
|
|
|
|
|
|
:index="index-1"
|
|
|
|
|
|
:styleType="2"
|
|
|
|
|
|
:plugins="['metric-selector', 'metric-input', 'remove']"
|
|
|
|
|
|
@change="expressionChange"
|
|
|
|
|
|
@removeExpression="removeExpression"
|
|
|
|
|
|
:showRemove="false"
|
2020-09-07 15:15:10 +08:00
|
|
|
|
:projectRightBox="true"
|
2020-08-24 15:02:23 +08:00
|
|
|
|
></promql-input>
|
|
|
|
|
|
<el-row>
|
|
|
|
|
|
<template>
|
2020-09-07 15:15:10 +08:00
|
|
|
|
<el-col class="expr-title">
|
2020-08-24 15:02:23 +08:00
|
|
|
|
{{$t('dashboard.panel.chartForm.legend')}}
|
|
|
|
|
|
<el-popover :content="$t('dashboard.panel.chartForm.legendTip')" placement="top" width="150" trigger="hover">
|
|
|
|
|
|
<i slot="reference" class="nz-icon nz-icon-info-normal" style="font-size: 12px; -webkit-transform:scale(0.75);display:inline-block;" @mouseover="rz"></i>
|
|
|
|
|
|
</el-popover>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col style="width: calc(100% - 120px);">
|
|
|
|
|
|
<el-input v-model="legends[index-1]" type="text" size="small"></el-input>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-row>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</el-form>
|
|
|
|
|
|
</el-scrollbar>
|
|
|
|
|
|
<!-- end--表单-->
|
|
|
|
|
|
|
|
|
|
|
|
<!--底部按钮-->
|
|
|
|
|
|
<div class="right-box-bottom-btns">
|
|
|
|
|
|
<button @click="esc" id="ep-edit-esc" class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-100">
|
|
|
|
|
|
<span>{{$t('overall.cancel')}}</span>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
<button @click="onSubmit" id="ep-edit-save" class="nz-btn nz-btn-size-normal nz-btn-style-normal nz-btn-min-width-100">
|
|
|
|
|
|
<span>{{$t('overall.save')}}</span>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2020-08-27 17:05:10 +08:00
|
|
|
|
</div>
|
2020-08-19 11:44:26 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2020-08-20 14:47:14 +08:00
|
|
|
|
import promqlInput from "@/components/page/dashboard/explore/promqlInput";
|
2020-08-24 15:02:23 +08:00
|
|
|
|
import chartDataFormat from "@/components/charts/chartDataFormat";
|
2020-08-20 14:47:14 +08:00
|
|
|
|
import {getUUID,resetZIndex} from "@/components/common/js/common";
|
|
|
|
|
|
var rz = {
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
rz(e) {
|
|
|
|
|
|
resetZIndex(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
2020-08-19 11:44:26 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
name:"addNode",
|
|
|
|
|
|
components:{
|
2020-08-20 14:47:14 +08:00
|
|
|
|
'promql-input': promqlInput,
|
2020-08-19 11:44:26 +08:00
|
|
|
|
},
|
|
|
|
|
|
props:{
|
2020-08-20 14:47:14 +08:00
|
|
|
|
nodeData:{},
|
2020-08-27 15:23:52 +08:00
|
|
|
|
moduleDataS:{},
|
2020-08-19 11:44:26 +08:00
|
|
|
|
},
|
2020-08-24 15:02:23 +08:00
|
|
|
|
mixins: [rz],
|
2020-08-19 11:44:26 +08:00
|
|
|
|
watch:{
|
|
|
|
|
|
nodeData:{
|
|
|
|
|
|
handler(n){
|
2020-08-24 11:22:59 +08:00
|
|
|
|
this.form.moduleId=n.id;
|
2020-09-02 09:38:26 +08:00
|
|
|
|
if( n.expressions){
|
|
|
|
|
|
n.expressions.forEach((item,index)=>{
|
|
|
|
|
|
this.addExpression();
|
2020-09-07 15:15:10 +08:00
|
|
|
|
this.form.name[index]=item.name;
|
2020-09-02 09:38:26 +08:00
|
|
|
|
this.unit[index]=item.unit;
|
|
|
|
|
|
this.expressions[index]=item.metric;
|
|
|
|
|
|
this.legends[index]=item.legend;
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2020-08-19 11:44:26 +08:00
|
|
|
|
},
|
|
|
|
|
|
immediate: true,
|
|
|
|
|
|
deep: true,
|
2020-08-20 14:47:14 +08:00
|
|
|
|
},
|
|
|
|
|
|
moduleDataS:{
|
|
|
|
|
|
handler(n){
|
2020-08-27 15:23:52 +08:00
|
|
|
|
// console.log(n)
|
|
|
|
|
|
},
|
|
|
|
|
|
immediate: true,
|
|
|
|
|
|
deep: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
'form.iconId':{
|
|
|
|
|
|
handler(n){
|
|
|
|
|
|
if(n){
|
|
|
|
|
|
this.selImage=this.iconArray.find(item=>item.id===n)
|
|
|
|
|
|
}
|
2020-08-20 14:47:14 +08:00
|
|
|
|
},
|
|
|
|
|
|
immediate: true,
|
|
|
|
|
|
deep: true,
|
2020-08-19 11:44:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
data(){
|
|
|
|
|
|
return{
|
|
|
|
|
|
form:{
|
2020-08-24 11:22:59 +08:00
|
|
|
|
moduleId:'',
|
|
|
|
|
|
iconId:'',
|
2020-09-07 15:15:10 +08:00
|
|
|
|
name:[],
|
2020-08-19 11:44:26 +08:00
|
|
|
|
},
|
2020-08-27 15:23:52 +08:00
|
|
|
|
selImage:'',
|
|
|
|
|
|
file:'',
|
|
|
|
|
|
uploadFileList:[],
|
2020-08-24 15:02:23 +08:00
|
|
|
|
unitOptions: chartDataFormat.unitOptions(),
|
2020-08-19 11:44:26 +08:00
|
|
|
|
promqlKeys:[],
|
|
|
|
|
|
expressions: [],
|
2020-08-20 14:47:14 +08:00
|
|
|
|
promqlCount:0,
|
|
|
|
|
|
elementIds:[],
|
|
|
|
|
|
legends:[],
|
2020-08-24 15:02:23 +08:00
|
|
|
|
unit:[],
|
2020-08-28 09:32:31 +08:00
|
|
|
|
imgageLoading:false,
|
2020-08-19 11:44:26 +08:00
|
|
|
|
rules:{
|
2020-08-24 11:22:59 +08:00
|
|
|
|
moduleId:[
|
2020-08-19 11:44:26 +08:00
|
|
|
|
{ required: true, message: '请选择module', trigger: 'blur' },
|
|
|
|
|
|
],
|
2020-08-24 11:22:59 +08:00
|
|
|
|
iconId:[
|
|
|
|
|
|
{ required: true, message: '请选择icon', trigger: 'blur' },
|
2020-08-19 11:44:26 +08:00
|
|
|
|
],
|
|
|
|
|
|
},
|
2020-08-27 15:23:52 +08:00
|
|
|
|
iconArray:[],
|
2020-08-19 11:44:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
2020-08-24 15:02:23 +08:00
|
|
|
|
mounted(){
|
2020-08-27 15:23:52 +08:00
|
|
|
|
// this.addExpression();
|
2020-09-02 09:38:26 +08:00
|
|
|
|
this.addNodeInit();
|
|
|
|
|
|
if( this.nodeData.expressions){
|
|
|
|
|
|
this.nodeData.expressions.forEach((item,index)=>{
|
|
|
|
|
|
this.$refs['promql-'+(index)][0].metricChange(this.expressions[index]);
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2020-08-24 15:02:23 +08:00
|
|
|
|
},
|
2020-08-19 11:44:26 +08:00
|
|
|
|
methods:{
|
2020-08-27 17:05:10 +08:00
|
|
|
|
addNodeInit(selImageId){
|
2020-08-27 15:23:52 +08:00
|
|
|
|
this.$get('/project/topo/icon').then(res=>{
|
2020-08-28 09:32:31 +08:00
|
|
|
|
this.imgageLoading=true;
|
2020-08-27 15:23:52 +08:00
|
|
|
|
this.iconArray=res.data.list;
|
|
|
|
|
|
this.iconArray.forEach((item,index)=>{
|
|
|
|
|
|
item.imageName=item.name;
|
|
|
|
|
|
delete item.name;
|
|
|
|
|
|
this.dealImg(`/project/topo/icon/${item.id}`).then((data)=>{
|
|
|
|
|
|
item.image=data;
|
|
|
|
|
|
if(index===this.iconArray.length-1){
|
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
|
this.iconArray=[...this.iconArray];
|
2020-08-28 09:32:31 +08:00
|
|
|
|
this.imgageLoading=false;
|
2020-09-02 09:38:26 +08:00
|
|
|
|
if(selImageId || this.nodeData.iconId){
|
|
|
|
|
|
this.form.iconId=selImageId || this.nodeData.iconId;
|
2020-08-27 17:05:10 +08:00
|
|
|
|
}
|
2020-08-28 09:32:31 +08:00
|
|
|
|
},100)
|
2020-08-27 15:23:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
dealImg(url) {
|
|
|
|
|
|
// 处理后端传过来的图片流乱码问题
|
|
|
|
|
|
if (url) {
|
|
|
|
|
|
return new Promise((resolve,reject)=>{
|
|
|
|
|
|
this.$axios
|
|
|
|
|
|
.get(url, {
|
|
|
|
|
|
responseType: "arraybuffer"
|
|
|
|
|
|
})
|
|
|
|
|
|
.then(res => {
|
|
|
|
|
|
return ("data:image/jpeg;base64," +btoa(new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), "")));
|
|
|
|
|
|
})
|
|
|
|
|
|
.then(data => {
|
|
|
|
|
|
resolve(data)
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(err => {
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2020-08-19 11:44:26 +08:00
|
|
|
|
onSubmit(){
|
|
|
|
|
|
this.$refs['form'].validate((valid) => {
|
|
|
|
|
|
if (valid) {
|
2020-08-24 11:22:59 +08:00
|
|
|
|
let module=this.moduleDataS.module.find(item=>item.id===this.form.moduleId);
|
|
|
|
|
|
let img=this.iconArray.find(item=>item.id===this.form.iconId);
|
|
|
|
|
|
let model=Object.assign({...this.form},{...module},{...img},{id:this.form.moduleId,shape:'image',shapeProperties:{useImageSize:false}},);
|
2020-08-24 15:02:23 +08:00
|
|
|
|
model.label=model.name;
|
|
|
|
|
|
model.expressions=[];
|
|
|
|
|
|
this.promqlKeys.forEach((item,index)=>{
|
|
|
|
|
|
model.expressions.push({
|
2020-09-07 15:15:10 +08:00
|
|
|
|
"name": this.form.name[index],
|
2020-08-24 15:02:23 +08:00
|
|
|
|
"unit": this.unit[index],
|
|
|
|
|
|
"metric": this.expressions[index],
|
|
|
|
|
|
"legend": this.legends[index],
|
|
|
|
|
|
})
|
|
|
|
|
|
});
|
|
|
|
|
|
this.$emit('addModel',model);
|
2020-08-19 11:44:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
expressionChange: function () {
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
addExpression() {
|
|
|
|
|
|
this.expressions.push('');
|
|
|
|
|
|
this.legends.push('');
|
2020-09-07 15:15:10 +08:00
|
|
|
|
this.form.name.push('');
|
2020-09-15 17:39:11 +08:00
|
|
|
|
this.unit.push(1);
|
2020-08-19 11:44:26 +08:00
|
|
|
|
this.promqlKeys.push(getUUID());
|
|
|
|
|
|
this.elementIds.push("");
|
|
|
|
|
|
this.promqlCount++;
|
|
|
|
|
|
},
|
|
|
|
|
|
removeExpression(index) {
|
2020-08-27 15:23:52 +08:00
|
|
|
|
if (this.promqlCount >= 1) {
|
2020-08-19 11:44:26 +08:00
|
|
|
|
this.expressions.splice(index, 1);
|
|
|
|
|
|
this.legends.splice(index, 1);
|
2020-09-07 15:15:10 +08:00
|
|
|
|
this.form.name.splice(index, 1);
|
2020-08-24 15:02:23 +08:00
|
|
|
|
this.unit.splice(index, 1);
|
2020-08-19 11:44:26 +08:00
|
|
|
|
this.promqlKeys.splice(index, 1);
|
|
|
|
|
|
this.elementIds.splice(index, 1);
|
|
|
|
|
|
this.promqlCount--;
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
this.expressions.forEach((ex, index) => {
|
|
|
|
|
|
if (ex) {
|
|
|
|
|
|
this.$refs[`promql-${index}`][0].metricChange(ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
/*关闭弹框*/
|
|
|
|
|
|
esc(refresh) {
|
|
|
|
|
|
this.$emit("close", refresh);
|
|
|
|
|
|
},
|
|
|
|
|
|
clickOutside() {
|
|
|
|
|
|
this.esc(false);
|
|
|
|
|
|
},
|
|
|
|
|
|
del(){
|
|
|
|
|
|
this.$emit('del');
|
|
|
|
|
|
this.esc();
|
2020-08-26 09:34:30 +08:00
|
|
|
|
},
|
|
|
|
|
|
beforeAvatarUpload(file){
|
2020-08-27 15:23:52 +08:00
|
|
|
|
let isJPG = (file.type === 'image/jpeg' || file.type === 'image/png');
|
2020-08-26 09:34:30 +08:00
|
|
|
|
|
|
|
|
|
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
|
|
|
|
|
|
|
|
|
|
|
if (!isJPG) {
|
2020-08-27 15:23:52 +08:00
|
|
|
|
this.$message.error('上传图片只能是 JPG/png 格式!');
|
2020-08-26 09:34:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (!isLt2M) {
|
2020-08-27 15:23:52 +08:00
|
|
|
|
this.$message.error('上传图片大小不能超过 2MB!');
|
2020-08-26 09:50:09 +08:00
|
|
|
|
}
|
2020-08-27 15:23:52 +08:00
|
|
|
|
this.file=file;
|
|
|
|
|
|
this.upload();
|
2020-08-26 09:50:09 +08:00
|
|
|
|
return false;
|
2020-08-26 09:34:30 +08:00
|
|
|
|
},
|
2020-08-27 15:23:52 +08:00
|
|
|
|
handleAvatarSuccess(file,res){
|
2020-09-27 16:00:41 +08:00
|
|
|
|
|
2020-08-26 09:34:30 +08:00
|
|
|
|
},
|
2020-08-27 15:23:52 +08:00
|
|
|
|
upload() {
|
|
|
|
|
|
let form = new FormData();
|
|
|
|
|
|
form.append("file",this.file);
|
|
|
|
|
|
let fileName=this.file.name;
|
|
|
|
|
|
form.append("name", fileName.substring(0, fileName.lastIndexOf(".")));
|
|
|
|
|
|
this.$post('/project/topo/icon',form,{'Content-Type': 'multipart/form-data'}).then(res => {
|
|
|
|
|
|
if(res.code == 200 ){
|
|
|
|
|
|
this.$message({duration: 2000, type: 'success', message: this.$t("tip.saveSuccess")});
|
2020-08-27 17:05:10 +08:00
|
|
|
|
this.addNodeInit(res.data.id);
|
2020-08-27 15:23:52 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
this.$message.error(res.msg);
|
2020-08-26 09:34:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
2020-08-27 15:23:52 +08:00
|
|
|
|
},
|
2020-08-19 11:44:26 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
2020-08-27 17:05:10 +08:00
|
|
|
|
.mc{
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
width: 100vw;
|
|
|
|
|
|
height: 100vh;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
z-index: 11;
|
|
|
|
|
|
}
|
2020-08-26 09:50:09 +08:00
|
|
|
|
/deep/ .avatar-uploader{
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
color: #1989fa;
|
2020-09-07 15:15:10 +08:00
|
|
|
|
vertical-align: top;
|
2020-08-26 09:50:09 +08:00
|
|
|
|
}
|
2020-08-26 09:34:30 +08:00
|
|
|
|
/deep/.right-box-form .icon .el-select{
|
|
|
|
|
|
width: 60%;
|
|
|
|
|
|
}
|
2020-09-10 17:00:32 +08:00
|
|
|
|
.nz-icon-minus{
|
2020-08-24 15:02:23 +08:00
|
|
|
|
vertical-align: middle;
|
|
|
|
|
|
margin-left: 5px;
|
|
|
|
|
|
}
|
2020-08-27 15:23:52 +08:00
|
|
|
|
.sel-image{
|
|
|
|
|
|
height: 28px;
|
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
|
width: 300px;
|
|
|
|
|
|
text-align: left;
|
|
|
|
|
|
}
|
|
|
|
|
|
.sel-image-name{
|
|
|
|
|
|
float: right;
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
height: 28px;
|
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
|
color: #333333;
|
|
|
|
|
|
}
|
2020-08-19 11:44:26 +08:00
|
|
|
|
.nz-btn-edit-ok{
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
bottom: 0;
|
|
|
|
|
|
right:0;
|
|
|
|
|
|
}
|
|
|
|
|
|
.nz-btn-edit-esc{
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
bottom: 0;
|
|
|
|
|
|
left:0;
|
|
|
|
|
|
}
|
2020-08-27 15:23:52 +08:00
|
|
|
|
.icon /deep/ .el-input.el-input--prefix.el-input--suffix{
|
|
|
|
|
|
border: 1px solid #DCDFE6;
|
|
|
|
|
|
height: 28px;
|
2020-09-07 15:15:10 +08:00
|
|
|
|
width: calc(100% - 10px);
|
2020-08-27 15:23:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
.icon /deep/ .el-input__inner{
|
|
|
|
|
|
display: none;
|
|
|
|
|
|
}
|
|
|
|
|
|
.icon /deep/ .el-input__prefix{
|
|
|
|
|
|
height: 28px;
|
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
|
}
|
2020-09-07 15:15:10 +08:00
|
|
|
|
.element-item.expr /deep/ .el-form-item__content{
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
margin-left: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
.element-item.expr /deep/ .el-form-item__content .el-row{
|
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
.element-item.expr /deep/ .el-form-item__content .el-form-item__error{
|
|
|
|
|
|
left: 120px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.expr-title{
|
|
|
|
|
|
width: 120px;
|
|
|
|
|
|
padding-right: 20px;
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
color: #666;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
letter-spacing: 0;
|
|
|
|
|
|
line-height: 22px;
|
|
|
|
|
|
}
|
2020-08-19 11:44:26 +08:00
|
|
|
|
/* begin--搜索框*/
|
|
|
|
|
|
.endpoint-asset-search {
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
margin-top: -16px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search button {
|
|
|
|
|
|
height: 22px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-dropdown {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 25px;
|
|
|
|
|
|
background-color: #444;
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
width: 44px;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-dropdown-item {
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
line-height: 22px;
|
|
|
|
|
|
height: 22px;
|
|
|
|
|
|
cursor: default;
|
|
|
|
|
|
color: white;
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-label-txt {
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
width: 19px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-dropdown-item:first-of-type {
|
|
|
|
|
|
border-radius: 4px 4px 0 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-dropdown-item:last-of-type {
|
|
|
|
|
|
border-radius: 0 0 4px 4px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-dropdown-item:hover {
|
|
|
|
|
|
background-color: #222;
|
|
|
|
|
|
color: #ff9900;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-asset-search-input {
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
width: 150px;
|
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
|
}
|
|
|
|
|
|
/* end--搜索框*/
|
|
|
|
|
|
|
|
|
|
|
|
/* begin--table*/
|
|
|
|
|
|
.endpoint-sub-table {
|
|
|
|
|
|
padding-top: 30px;
|
|
|
|
|
|
height: 440px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.line-100 {
|
|
|
|
|
|
margin-bottom: 3px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-head {
|
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
|
height: 30px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-row, .endpoint-sub-table-row-disabled {
|
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
|
height: 30px;
|
|
|
|
|
|
color: #656565;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-row:hover {
|
|
|
|
|
|
background-color: #dadada;
|
|
|
|
|
|
cursor: default;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-row-active {
|
|
|
|
|
|
background-color: #dadada;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-row-selected {
|
|
|
|
|
|
background-color: #656565;
|
|
|
|
|
|
color: white;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-col {
|
|
|
|
|
|
display: inline-block;
|
|
|
|
|
|
width: calc(50% - 15px);
|
|
|
|
|
|
padding-left: 10px;
|
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-paginate-all {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
left: 10px;
|
|
|
|
|
|
bottom: 17px;
|
|
|
|
|
|
color: #5a5a5a;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-body {
|
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
overflow: auto;
|
|
|
|
|
|
height: calc(100% - 34px);
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoint-sub-table-body-dialog {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
background-color: #e9ebec;
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
opacity: 0.2;
|
|
|
|
|
|
}
|
|
|
|
|
|
.endpoints-clear-btn {
|
|
|
|
|
|
margin: 6px 0 0 7px;
|
|
|
|
|
|
}
|
|
|
|
|
|
/* end--table*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-row {
|
|
|
|
|
|
margin-bottom: 20px;
|
2020-08-27 15:23:52 +08:00
|
|
|
|
line-height: 32px;
|
2020-08-19 11:44:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
.el-row:last-child {
|
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
.el-col {
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.bg-purple {
|
|
|
|
|
|
background: white;
|
|
|
|
|
|
}
|
|
|
|
|
|
.grid-content {
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
min-height: 36px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.common-float-left {
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
display:inline-block;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.el-inner {
|
|
|
|
|
|
width: 200px;
|
|
|
|
|
|
border-top-width: 0px;
|
|
|
|
|
|
border-left-width: 0px;
|
|
|
|
|
|
border-right-width: 0px;
|
|
|
|
|
|
border-bottom-width: 10px;
|
|
|
|
|
|
border-color:red;
|
|
|
|
|
|
/*outline: medium;*/
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.element-bottom-border {
|
|
|
|
|
|
padding-bottom: 5px;
|
|
|
|
|
|
border-bottom: 1px solid #dfe7f2;
|
|
|
|
|
|
margin-top: 15px;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*metric样式--begin*/
|
|
|
|
|
|
.element-item {
|
|
|
|
|
|
padding: 20px 0;
|
|
|
|
|
|
border-bottom: 1px dashed #dfe7f2;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*metric样式--end*/
|
|
|
|
|
|
.label-center{
|
|
|
|
|
|
vertical-align: middle;
|
|
|
|
|
|
line-height: 34px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.z-top {
|
|
|
|
|
|
z-index: 2900;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|