feat:asset 列表机房弹框 及其他调整

1.机房配置抽取组件
2.idc配置组件增加详情查看
3.idc配置组件增加联动更新
This commit is contained in:
wangwenrui
2020-01-10 18:16:25 +08:00
parent 663f8e1b4f
commit cda2dd7daf
9 changed files with 312 additions and 453 deletions

View File

@@ -57,9 +57,11 @@
<el-menu-item :index="'3-' + index"> <el-menu-item :index="'3-' + index">
<div @click="jumpToAsset('asset',item.id)"> <div @click="jumpToAsset('asset',item.id)">
<span>{{item.name}}</span> <span>{{item.name}}</span>
<idc-config-box :post-idc="item" placement="left" @after="getIDCOptionData" :button-class="'menu-edit'"> <idc-config-box :post-idc="item" ref="idcConfigBox" placement="left" @after="getIDCOptionData" :button-class="'menu-edit'">
<template v-slot:optionZone> <template v-slot:optionZone>
<div @click="closeAllPop">
<i class="el-icon-edit-outline" @click="getIDCOptionData(item.id)" style="color: inherit"></i> <i class="el-icon-edit-outline" @click="getIDCOptionData(item.id)" style="color: inherit"></i>
</div>
</template> </template>
</idc-config-box> </idc-config-box>
<!--<el-popover <!--<el-popover
@@ -425,6 +427,11 @@
window.location.reload(); window.location.reload();
} }
}, },
closeAllPop:function(){
this.$refs.idcConfigBox.forEach((item)=>{
item.show(false)
})
},
getProjectList() { getProjectList() {
this.$get('project', {}).then(response => { this.$get('project', {}).then(response => {
if (response.code == 200) { if (response.code == 200) {

View File

@@ -0,0 +1,202 @@
<template>
<el-popover :placement="placement" width="400" @hide="hidePop" ref="popBox" v-model="popBox.show">
<div class="">
<div class="pop-window-assetType-content">
<div class="pop-top-btns">
<button type="button" @click="saveOrToEdit" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt" v-if="popBox.isEdit">{{$t('overall.save')}}</span>
<span class="top-tool-btn-txt" v-else>{{$t('overall.edit')}}</span>
</button>
<button type="button" @click="esc" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
<span class="top-tool-btn-txt"><i class="el-icon-close"></i></span>
</button>
</div>
<!--标题-->
<div class="pop-title">{{title}}</div>
<!--表单内容-->
<el-form class="pop-item-wider" :model="cabinet" ref="cabinetForm" :rules="rules">
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.name')" prop="name">
<el-input size='mini' v-model="cabinet.name" v-if="popBox.isEdit"/>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{cabinet.name}}</div>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.uSize')" prop="uSize">
<div :class="{'right-box-form-content-txt':!popBox.isEdit}" >{{cabinet.uSize}}</div>
<el-slider v-model.number="cabinet.uSize" :max="47" v-if="popBox.isEdit"></el-slider>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.remark')">
<el-input size='mini' v-model="cabinet.remark" type="textarea" :rows="2" v-if="popBox.isEdit"/>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{cabinet.remark}}</div>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.DC')" prop="idcId">
<el-select size='mini' v-model="cabinet.idcId" clearable style="width: 100%;" placeholder="" v-if="popBox.isEdit">
<el-option v-for="item in idcDatas" :key="item.key" :label="item.name" :value="item.id">
<span>{{ item.name }}</span>
</el-option>
</el-select>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{idc?idc.name:''}}</div>
</el-form-item>
</el-form>
</div>
</div>
<span :class="buttonClass" @click.prevent.stop="" slot="reference">
<slot name="optionZone">
<i class="el-icon-plus"></i>
</slot>
</span>
</el-popover>
</template>
<script>
export default {
name: "cabinetConfig",
props:{
postCabinet:{type:Object},
placement:{type:String},
buttonClass:{type:String},
isEdit:{type:Boolean,default:true}
},
created() {
this.init();
},
data(){
return {
title:"",
rules:{
name: [
{required: true, message: this.$t('validate.required'), trigger: 'blur'}
],
uSize: [
{required: true, type: 'number', min: 1, max: 47, message: this.$t('validate.required'), trigger: 'blur'}
],
idcId: [
{required: true, message: this.$t('validate.required'), trigger: 'blur'}
]
},
cabinet:{},
popBox:{isEdit:false,show:false},
idcDatas:[],
idc:null
}
},
methods:{
init:function(){
this.getIdcDatas();
},
resetData:function(){
let temp=this;
temp.cabinet={
name:'',
uSize:0,
idcId:null,
remark:''
}
},
saveOrToEdit(){
if (!this.popBox.isEdit) {
this.toEdit(this.cabinet);
} else {
this.save();
}
},
save:function(){
let temp=this;
temp.$refs.cabinetForm.validate((valid => {
if(valid){
if (temp.cabinet.id) {
this.$put('cabinet', temp.cabinet).then(res => {
const h = temp.$createElement;
if (res.code === 200) {
temp.$message({duration: 2000, type: 'success', message: temp.$t("tip.saveSuccess")});
temp.$emit("after",temp.cabinet.idcId);
temp.esc();
} else {
temp.$message.error(res.msg);
}
})
} else {
temp.$post('cabinet', temp.cabinet).then(res => {
const h = temp.$createElement;
if (res.code === 200) {
temp.$message({duration: 2000, type: 'success', message: temp.$t("tip.saveSuccess")});
temp.$emit("after",temp.cabinet.idcId);
temp.esc();
} else {
temp.$message.error(res.msg);
}
})
}
}else{
return false;
}
}))
},
show:function(isShow,isEdit){
this.popBox.show=isShow;
this.popBox.isEdit=isEdit;
},
toEdit:function(u){
this.cabinet = Object.assign({}, u);
this.popBox.isEdit = true;
this.title = this.$t('asset.createAssetTab.editCabinetTab.title') + " ID" + this.cabinet.id;
this.popBox.show = true;
},
getIdcDatas:function(){
let temp=this;
temp.$get('idc').then(response => {
if (response.code === 200) {
temp.idcDatas = response.data.list;
for (let i in temp.idcDatas){
let item=temp.idcDatas[i];
if(item.id==temp.cabinet.idcId){
temp.idc=item;
break;
}
}
}
})
},
openBox:function(){
this.popBox.show=true;
},
esc:function(){
this.popBox.show=false;
},
hidePop:function(){//隐藏事件触发方法
if(this.postCabinet&&this.postCabinet.id){
this.cabinet=this.postCabinet;
}else{
this.resetData();
}
this.clearValidate();
},
clearValidate:function(){
this.$refs.cabinetForm.clearValidate();
}
},
watch:{
postCabinet: {
immediate: true,
deep: true,
handler(n, o) {
if (n && n.id) {
this.title =this.popBox.isEdit? this.$t('asset.createAssetTab.editCabinetTab.title') + " ID" + n.id : this.$t('asset.createAssetTab.cabinet') + " ID" + n.id;
this.cabinet=n;
} else {
this.title = this.$t('asset.createAssetTab.AddCabinetTab.title');
this.resetData();
}
}
},
isEdit:{
immediate: true,
handler(n, o) {
this.popBox.isEdit=n;
}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -3,11 +3,12 @@
<div class=""> <div class="">
<!-- begin--顶部按钮--> <!-- begin--顶部按钮-->
<div class="pop-top-btns"> <div class="pop-top-btns">
<button type="button" v-if="popBox.isEdit && idc.id != ''" @click="del" class="nz-btn nz-btn-size-small nz-btn-style-light"> <button type="button" v-if="idc.id != ''" @click="del" class="nz-btn nz-btn-size-small nz-btn-style-light">
<span class="top-tool-btn-txt">{{$t('overall.delete')}}</span> <span class="top-tool-btn-txt">{{$t('overall.delete')}}</span>
</button> </button>
<button type="button" @click="save" class="nz-btn nz-btn-size-small nz-btn-style-normal"> <button type="button" @click="saveOrToEdit" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span> <span class="top-tool-btn-txt" v-if="popBox.isEdit">{{$t('overall.save')}}</span>
<span class="top-tool-btn-txt" v-else>{{$t('overall.edit')}}</span>
</button> </button>
<button type="button" @click="esc" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square"> <button type="button" @click="esc" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
@@ -20,18 +21,22 @@
<div class="pop-item-wider"> <div class="pop-item-wider">
<el-form class="right-box-form" :model="idc" label-position="left" label-width="150px" :rules="rules" ref="idcForm"> <el-form class="right-box-form" :model="idc" label-position="left" label-width="150px" :rules="rules" ref="idcForm">
<el-form-item :label="$t('asset.createAssetTab.dcName')" prop="name"> <el-form-item :label="$t('asset.createAssetTab.dcName')" prop="name">
<el-input type="text" placeholder="" v-model="idc.name" size="mini" maxlength="64"></el-input> <el-input type="text" placeholder="" v-model="idc.name" size="mini" maxlength="64" v-if="popBox.isEdit"></el-input>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{idc.name}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.location')" prop="location"> <el-form-item :label="$t('asset.createAssetTab.location')" prop="location">
<el-input type="text" placeholder="" v-model="idc.location" size="mini"></el-input> <el-input type="text" placeholder="" v-model="idc.location" size="mini" v-if="popBox.isEdit"></el-input>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{idc.location}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.principal')" prop="principal"> <el-form-item :label="$t('asset.createAssetTab.principal')" prop="principal">
<el-select v-model="idc.principal" clearable size="mini" placeholder=""> <el-select v-model="idc.principal" clearable size="mini" placeholder="" v-if="popBox.isEdit">
<el-option v-for="item in principals" :key="item.id" :label="item.username" :value="item.userId"></el-option> <el-option v-for="item in principals" :key="item.id" :label="item.username" :value="item.userId"></el-option>
</el-select> </el-select>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{idc.principal}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.tel')" prop="tel" > <el-form-item :label="$t('asset.createAssetTab.tel')" prop="tel" >
<el-input type="text" placeholder="" v-model="idc.tel" size="mini"></el-input> <el-input type="text" placeholder="" v-model="idc.tel" size="mini" v-if="popBox.isEdit"></el-input>
<div class="right-box-form-content-txt" v-if="!popBox.isEdit">{{idc.tel}}</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@@ -50,7 +55,8 @@
props:{ props:{
postIdc:{type:Object}, postIdc:{type:Object},
placement:{type:String}, placement:{type:String},
buttonClass:{type:String} buttonClass:{type:String},
isEdit:{type:Boolean,default:true}
}, },
created() { created() {
this.init(); this.init();
@@ -90,7 +96,7 @@
}, },
idc:{}, idc:{},
principals:[], principals:[],
popBox:{isEdit:false,show:false} popBox:{isEdit:true,show:false}
} }
}, },
methods:{ methods:{
@@ -118,6 +124,13 @@
} }
}) })
}, },
saveOrToEdit:function(){
if (!this.popBox.isEdit) {
this.toEdit(this.idc);
} else {
this.save();
}
},
save:function(){ save:function(){
let temp=this; let temp=this;
temp.$refs.idcForm.validate((valide)=>{ temp.$refs.idcForm.validate((valide)=>{
@@ -126,8 +139,9 @@
if(!temp.idc.id){ if(!temp.idc.id){
temp.$post('idc', temp.idc).then(response => { temp.$post('idc', temp.idc).then(response => {
if (response.code === 200) { if (response.code === 200) {
temp.$message({duration: 1000, type: 'success', message: temp.$t("tip.deleteSuccess")}); temp.$message({duration: 1000, type: 'success', message: temp.$t("tip.saveSuccess")});
temp.$emit("after"); temp.$emit("after");
temp.$store.commit('assetDcListChange');
temp.esc(); temp.esc();
} else { } else {
this.$message.error(response.msg); this.$message.error(response.msg);
@@ -136,8 +150,9 @@
}else{ }else{
this.$put('idc', temp.idc).then(response => { this.$put('idc', temp.idc).then(response => {
if (response.code === 200) { if (response.code === 200) {
temp.$message({duration: 1000, type: 'success', message: temp.$t("tip.deleteSuccess")}); temp.$message({duration: 1000, type: 'success', message: temp.$t("tip.saveSuccess")});
temp.$emit("after"); temp.$emit("after");
temp.$store.commit('assetDcListChange');
temp.esc(); temp.esc();
} else { } else {
this.$message.error(response.msg); this.$message.error(response.msg);
@@ -150,6 +165,16 @@
} }
}); });
}, },
toEdit:function(u){
this.idc = Object.assign({}, u);
this.popBox.isEdit = true;
this.title = this.$t('asset.createAssetTab.editIdcTab.title') + " ID" + this.idc.id
this.popBox.show = true;
},
show:function(isShow,isEdit){
this.popBox.show=isShow;
this.popBox.isEdit=isEdit;
},
esc:function(){ esc:function(){
this.popBox.show=false; this.popBox.show=false;
}, },
@@ -191,16 +216,20 @@
handler(n, o) { handler(n, o) {
if (n && n.id) { if (n && n.id) {
this.title = this.$t('asset.createAssetTab.editIdcTab.title') + " ID" + n.id; this.title = this.$t('asset.createAssetTab.editIdcTab.title') + " ID" + n.id;
this.popBox.isEdit=true;
this.idc=n; this.idc=n;
} else { } else {
this.title = this.$t('asset.createAssetTab.AddIdcTab.title'); this.title = this.$t('asset.createAssetTab.AddIdcTab.title');
this.popBox.isEdit=false;
this.resetData(); this.resetData();
} }
} }
}, },
isEdit:{
immediate: true,
handler(n, o) {
this.popBox.isEdit=n;
}
}
} }
} }
</script> </script>

View File

@@ -2,7 +2,7 @@
<div> <div>
<el-form class="pop-item-wider" :model="account" :rules="rules" ref="accountForm"> <el-form class="pop-item-wider" :model="account" :rules="rules" ref="accountForm">
<el-form-item :label="$t('asset.createAssetTab.loginType')" size="mini"> <el-form-item :label="$t('asset.createAssetTab.loginType')" size="mini">
<div class="nz-btn-group float-left" style="padding-top: 4px;"> <div class="nz-btn-group float-left" style="padding-top: 4px;" v-if="isEdit">
<button type="button" @click="changeLoginType(1)" <button type="button" @click="changeLoginType(1)"
class="nz-btn nz-btn-size-small float-left" class="nz-btn nz-btn-size-small float-left"
:class="{'nz-btn-disabled nz-btn-style-normal' : account.authType == 1, 'nz-btn-style-light' : account.authType == 2}"> :class="{'nz-btn-disabled nz-btn-style-normal' : account.authType == 1, 'nz-btn-style-light' : account.authType == 2}">
@@ -14,17 +14,20 @@
<span>{{$t('asset.createAssetTab.ssh')}}</span> <span>{{$t('asset.createAssetTab.ssh')}}</span>
</button> </button>
</div> </div>
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.authType}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.account')" prop="user"> <el-form-item :label="$t('asset.createAssetTab.account')" prop="user">
<el-input size="mini" v-model="account.user"/> <el-input size="mini" v-model="account.user" v-if="isEdit"/>
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.user}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.password')" v-show="account.authType==1" > <el-form-item :label="$t('asset.createAssetTab.password')" v-show="account.authType==1" v-if="isEdit">
<el-input size="mini" type="password" v-model="account.pwd"/> <el-input size="mini" type="password" v-model="account.pwd"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.createAssetTab.port')" prop="port" > <el-form-item :label="$t('asset.createAssetTab.port')" prop="port" >
<el-input size="mini" v-model="account.port"/> <el-input size="mini" v-model="account.port" v-if="isEdit"/>
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.port}}</div>
</el-form-item> </el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.ssh')" v-show="account.authType==2" prop="file"> <el-form-item :label="this.$t('asset.createAssetTab.ssh')" v-show="account.authType==2" prop="file" v-if="isEdit">
<el-upload class="upload-demo" ref="upload" action="" :file-list="uploadFileList" :on-change="handleChange" :auto-upload="false"> <el-upload class="upload-demo" ref="upload" action="" :file-list="uploadFileList" :on-change="handleChange" :auto-upload="false">
<div slot="tip" class="el-upload__tip" v-if="account.privateKey" >{{$t('asset.createAssetTab.sshKeyWasConfig')}}</div> <div slot="tip" class="el-upload__tip" v-if="account.privateKey" >{{$t('asset.createAssetTab.sshKeyWasConfig')}}</div>
<button type="button" class="nz-btn nz-btn-size-small nz-btn-style-normal"> <button type="button" class="nz-btn nz-btn-size-small nz-btn-style-normal">
@@ -42,7 +45,8 @@ export default {
name: "accountConfig", name: "accountConfig",
props:{ props:{
account:{type:Object}, account:{type:Object},
asComponent:{type:Boolean,default:false} asComponent:{type:Boolean,default:false},
isEdit:{type:Boolean,default:true}
}, },
created() { created() {
}, },

View File

@@ -8,9 +8,12 @@
<el-checkbox class="sidebar-info-item" :class="{'sidebar-info-item-active': checkList.indexOf(item.id) != -1}" <el-checkbox class="sidebar-info-item" :class="{'sidebar-info-item-active': checkList.indexOf(item.id) != -1}"
v-for="(item,key) in checkListData" :key="key" :label=item.id> v-for="(item,key) in checkListData" :key="key" :label=item.id>
<span>{{item.name}}</span> <span>{{item.name}}</span>
<idc-config-box :post-idc="addIdcData" placement="left" @after="getIDCOptionData" :button-class="'checkbox-edit'"> <idc-config-box ref="idcConfigBox" :post-idc="item" placement="left" @after="getIDCOptionData" :button-class="'checkbox-edit'">
<template v-slot:optionZone> <template v-slot:optionZone>
<span @click="closeAllPop">
<i class="el-icon-edit-outline" @click="getSingleIDCData(item.id,'edit')"></i> <i class="el-icon-edit-outline" @click="getSingleIDCData(item.id,'edit')"></i>
</span>
</template> </template>
</idc-config-box> </idc-config-box>
<!--<el-popover <!--<el-popover
@@ -139,15 +142,19 @@
<div class="tab-input-square link">{{scope.row.alertNum}}</div> <div class="tab-input-square link">{{scope.row.alertNum}}</div>
</div> </div>
<div v-if="item.prop=='dataCenter'"> <div v-if="item.prop=='dataCenter'">
<idc-config-box :post-idc="JSON.parse(JSON.stringify(scope.row.idc))" placement="left" @after="getAssetData(null, true)" :button-class="'checkbox-edit'"> <idc-config-box :post-idc="JSON.parse(JSON.stringify(scope.row.idc))" ref="idcConfigBox" :is-edit="false" placement="left" @after="getAssetData(null, true)" :button-class="'checkbox-edit'">
<template v-slot:optionZone> <template v-slot:optionZone>
<span class="link">{{scope.row.idc.name}}</span> <span class="link" @click="closeAllPop">{{scope.row.idc.name}}</span>
</template> </template>
</idc-config-box> </idc-config-box>
<!--<span class="link">{{scope.row.idc.name}}</span>--> <!--<span class="link">{{scope.row.idc.name}}</span>-->
</div> </div>
<div v-if="item.prop=='cabinet'"> <div v-if="item.prop=='cabinet'">
<span class="link">{{returnData(scope.row.cabinet)}}</span> <cabinet-config-box v-if="scope.row.cabinet&&scope.row.cabinet!='--'" ref="cabinetConfigBox" placement="left" :is-edit="false" :post-cabinet="JSON.parse(JSON.stringify(scope.row.cabinet))" @after="getAssetData(null, true)">
<span slot="optionZone" @click="closeAllPop" class="link">{{returnData(scope.row.cabinet)}}</span>
</cabinet-config-box>
<span v-else>{{returnData(scope.row.cabinet)}}</span>
</div> </div>
<div v-if="item.prop=='model'"> <div v-if="item.prop=='model'">
<span>{{scope.row.model.name}}</span> <span>{{scope.row.model.name}}</span>
@@ -623,6 +630,14 @@
this.getAssetData(); this.getAssetData();
this.getIDCOptionData(); this.getIDCOptionData();
}, },
closeAllPop:function(){
this.$refs.idcConfigBox.forEach((item)=>{
item.show(false)
})
this.$refs.cabinetConfigBox.forEach((item)=>{
item.show(false)
})
},
search(searchObj) { search(searchObj) {
this.searchLabel = {}; this.searchLabel = {};
this.pageObj.pageNo = 1; this.pageObj.pageNo = 1;

View File

@@ -387,113 +387,9 @@
:value="item.id" :value="item.id"
> >
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
<el-popover <cabinet-config-box placement="left" :post-cabinet="item" button-class="config-dropdown-btn" @after="getCabinetOptionData">
placement="left" <i slot="optionZone" class="el-icon-edit-outline"></i>
trigger="manual" </cabinet-config-box>
v-model="item[item.name]"
width="400"
>
<div class="pop-window-assetType-content">
<div class="pop-top-btns">
<button type="button" @click="editData('cabinet',item)" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span>
</button>
<button type="button" @click="item[item.name] = false" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
<span class="top-tool-btn-txt"><i class="el-icon-close"></i></span>
</button>
</div>
<!--标题-->
<div class="pop-title">{{$t('asset.createAssetTab.editCabinetTab.title')}}</div>
<!--表单内容-->
<el-form class="pop-item-wider" :model="popCabinetData" ref="cabEditForm" :rules="cabRules">
<el-form-item :label="$t('asset.createAssetTab.editCabinetTab.name')" prop="name">
<el-input size="mini" v-model="popCabinetData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editCabinetTab.uSize')" prop="uSize">
<div>{{popCabinetData.uSize}}</div>
<el-slider v-model.number="popCabinetData.uSize" :max="47"></el-slider>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editCabinetTab.remark')">
<el-input v-model="popCabinetData.remark"
type="textarea"
size="mini"
:rows="2"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editCabinetTab.DC')">
<el-select v-model="popCabinetData.idcId" clearable placeholder="" size="mini" style="width: 100%;" prop="idcId">
<el-option
v-for="item in IDCOptionData"
:key="item.key"
:label="item.name"
:value="item.id"
>
<span>{{ item.name }}</span>
<!-- <el-popover-->
<!-- placement="top"-->
<!-- v-model="item[item.name+item.id]"-->
<!-- >-->
<!-- <div class="pop-window-assetType-content">-->
<!-- <div class="right-box-top-btns">-->
<!-- <div class="right-box-top-btn right-box-top-btn-full"-->
<!-- @click="item[item.name+item.id] = false">-->
<!-- <div class="right-box-btn-icon">-->
<!-- <i class="el-icon-close"></i>-->
<!-- </div>-->
<!-- <span>{{$t('overall.esc')}}</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="pop-window">-->
<!-- <span style="display: block;padding-bottom: 20px">标题</span>-->
<!-- <el-form-item label="DC Name">-->
<!-- <el-input v-model="addCabIDCData.name"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="Location">-->
<!-- <el-input v-model="addCabIDCData.location"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="负责人">-->
<!-- <el-select v-model="addCabIDCData.principal"-->
<!-- clearable>-->
<!-- <el-option-->
<!-- v-for="item in idcUserData"-->
<!-- :key="item.key"-->
<!-- :label="item.username"-->
<!-- :value="item.userId"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="Tel">-->
<!-- <el-input v-model="addCabIDCData.tel"/>-->
<!-- </el-form-item>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="right-box-bottom-btns">-->
<!-- <div class="right-box-bottom-btn right-box-bottom-btn-cancel"-->
<!-- @click.stop="item[item.name+item.id]= false">-->
<!-- {{$t('overall.cancel')}}-->
<!-- </div>-->
<!-- <div class="right-box-bottom-btn right-box-bottom-btn-50"-->
<!-- @click="editData('idc',item,'CabIDC')">-->
<!-- {{$t('overall.save')}}-->
<!-- </div>-->
<!-- </div>-->
<!-- <span class="config-dropdown-btn" slot="reference"-->
<!-- @click="getSingleIDCData(item.id,'edit')"><i-->
<!-- class="el-icon-edit-outline"></i></span>-->
<!-- </el-popover>-->
<!-- <span class="config-dropdown-btn config-dropdown-btn-delete"-->
<!-- @click.stop="deleteData('idc',item.id)"><i-->
<!-- class="el-icon-delete"></i></span>-->
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<span class="config-dropdown-btn" slot="reference"
@click.stop="getSingleCabinetData(item.id,'edit',item)">
<i class="el-icon-edit-outline"></i>
</span>
</el-popover>
<span class="config-dropdown-btn config-dropdown-btn-delete" <span class="config-dropdown-btn config-dropdown-btn-delete"
@click.stop="deleteData('cabinet',item.id)"> @click.stop="deleteData('cabinet',item.id)">
@@ -503,107 +399,7 @@
</el-select> </el-select>
<div class="right-box-row-btn right-box-row-btn-small"> <div class="right-box-row-btn right-box-row-btn-small">
<el-popover <cabinet-config-box placement="left" :post-cabinet="addCabinetData" @after="getCabinetOptionData"></cabinet-config-box>
placement="left"
trigger="click"
v-model="popCabinetVisible"
width="400"
>
<div class="pop-window-assetType-content">
<div class="pop-top-btns">
<button type="button" @click="addNewData('cabinet')" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span>
</button>
<button type="button" @click="popoverClose('cabinet')" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
<span class="top-tool-btn-txt"><i class="el-icon-close"></i></span>
</button>
</div>
<!--标题-->
<div class="pop-title">{{$t('asset.createAssetTab.AddCabinetTab.title')}}</div>
<!--表单内容-->
<el-form class="pop-item-wider" :model="addCabinetData" ref="cabAddForm" :rules="cabRules">
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.name')" prop="name">
<el-input size='mini' v-model="addCabinetData.name"/>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.uSize')" prop="uSize">
<div>{{addCabinetData.uSize}}</div>
<el-slider v-model.number="addCabinetData.uSize" :max="47"></el-slider>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.remark')">
<el-input size='mini' v-model="addCabinetData.remark" type="textarea" :rows="2"/>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddCabinetTab.DC')" prop="idcId">
<el-select size='mini' v-model="addCabinetData.idcId" clearable style="width: 100%;" placeholder="">
<el-option
v-for="item in IDCOptionData"
:key="item.key"
:label="item.name"
:value="item.id"
>
<span>{{ item.name }}</span>
<!--<el-popover
placement="left"
v-model="item[item.id+item.name]"
>
<div class="pop-window-assetType-content">
<div class="right-box-top-btns">
<div class="right-box-top-btn right-box-top-btn-full"
@click="item[item.id+item.name] = false">
<div class="right-box-btn-icon">
<i class="el-icon-close"></i>
</div>
<span>{{$t('overall.esc')}}</span>
</div>
</div>
<div class="pop-window">
<span style="display: block;padding-bottom: 20px">{{$t('asset.createAssetTab.editIdcTab.title')}}</span>
<el-form-item :label="$t('asset.createAssetTab.editIdcTab.dcName')">
<el-input v-model="addCabIDCData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editIdcTab.location')">
<el-input v-model="addCabIDCData.location"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editIdcTab.principal')">
<el-select v-model="addCabIDCData.principal"
clearable>
<el-option
v-for="item in idcUserData"
:key="item.key"
:label="item.username"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.editIdcTab.tel')">
<el-input v-model="addCabIDCData.tel"/>
</el-form-item>
</div>
</div>
<div class="right-box-bottom-btns">
<div class="right-box-bottom-btn right-box-bottom-btn-cancel"
@click.stop="item[item.id+item.name]= false">
{{$t('overall.cancel')}}
</div>
<div class="right-box-bottom-btn right-box-bottom-btn-50"
@click="editData('idc',item,'CabIDC')">
{{$t('overall.save')}}
</div>
</div>
<span class="config-dropdown-btn" slot="reference"
@click="getSingleIDCData(item.id,'edit',item)"><i
class="el-icon-edit-outline"></i></span>
</el-popover>
<span class="config-dropdown-btn config-dropdown-btn-delete"
@click.stop="deleteData('idc',item.id)"><i
class="el-icon-delete"></i></span>-->
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div slot="reference"><i class="el-icon-plus"></i></div>
</el-popover>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.uSize')"> <el-form-item :label="this.$t('asset.createAssetTab.uSize')">
@@ -1032,8 +828,6 @@
form.append("idcId", this.assetData.idcId); form.append("idcId", this.assetData.idcId);
form.append("cabinetId", this.assetData.cabinetId); form.append("cabinetId", this.assetData.cabinetId);
form.append("modelId", modelId); form.append("modelId", modelId);
debugger
console.log(this.assetData.accounts)
for(let i in this.assetData.accounts){ for(let i in this.assetData.accounts){
let account=this.assetData.accounts[i]; let account=this.assetData.accounts[i];
if(account.user){ if(account.user){
@@ -1105,7 +899,6 @@
} }
}, },
uploadFile:function(file){ uploadFile:function(file){
console.log(file)
this.assetData.accounts[0].file=file.file; this.assetData.accounts[0].file=file.file;
}, },
clearFile:function(){ clearFile:function(){

View File

@@ -416,112 +416,9 @@
:value="item.id" :value="item.id"
> >
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
<el-popover <cabinet-config-box placement="left" :post-cabinet="item" button-class="config-dropdown-btn" @after="getCabinetOptionData">
placement="left" <i slot="optionZone" class="el-icon-edit-outline"></i>
trigger="manual" </cabinet-config-box>
v-model="item[item.name]"
width="400"
>
<div class="pop-window-assetType-content">
<div class="pop-top-btns">
<button type="button" @click="editData('cabinet',item)" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span>
</button>
<button type="button" @click="item[item.name] = false" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
<span class="top-tool-btn-txt"><i class="el-icon-close"></i></span>
</button>
</div>
<!--标题-->
<div class="pop-title">{{$t('asset.createAssetTab.editCabinetTab.title')}}</div>
<!--表单内容-->
<el-form class="pop-item-wider" :model="popCabinetData" ref="cabEditForm" :rules="cabRules">
<el-form-item :label="$t('asset.editAssetTab.editCabinetTab.name')" prop="name">
<el-input size="mini" v-model="popCabinetData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editCabinetTab.uSize')" prop="uSize">
<div>{{popCabinetData.uSize}}</div>
<el-slider v-model.number="popCabinetData.uSize" :max="47"></el-slider>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editCabinetTab.remark')">
<el-input v-model="popCabinetData.remark"
type="textarea"
:rows="2"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editCabinetTab.DC')" prop="idcId">
<el-select v-model="popCabinetData.idcId" clearable placeholder="" size="mini" style="width: 100%;">
<el-option
v-for="ite in item.children"
:key="ite.id"
:label="ite.name"
:value="ite.id"
>
<span>{{ ite.name }}</span>
<!--<el-popover
placement="left"
v-model="ite[ite.name+ite.id]"
>
<div class="pop-window-assetType-content">
<div class="right-box-top-btns">
<div class="right-box-top-btn right-box-top-btn-full"
@click="ite[ite.name+ite.id] = false">
<div class="right-box-btn-icon">
<i class="el-icon-close"></i>
</div>
<span>{{$t('overall.esc')}}</span>
</div>
</div>
<div class="pop-window">
<span style="display: block;padding-bottom: 20px">标题</span>
<el-form-item label="DC Name">
<el-input v-model="addCabIDCData.name"/>
</el-form-item>
<el-form-item label="Location">
<el-input v-model="addCabIDCData.location"/>
</el-form-item>
<el-form-item label="负责人">
<el-select v-model="addCabIDCData.principal"
clearable>
<el-option
v-for="item in idcUserData"
:key="item.key"
:label="item.username"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="Tel">
<el-input v-model="addCabIDCData.tel"/>
</el-form-item>
</div>
</div>
<div class="right-box-bottom-btns">
<div class="right-box-bottom-btn right-box-bottom-btn-cancel"
@click="ite[ite.name+ite.id]= false">
{{$t('overall.cancel')}}
</div>
<div class="right-box-bottom-btn right-box-bottom-btn-50"
@click="editData('idc',ite,'CabIDC')">
{{$t('overall.save')}}
</div>
</div>
<span class="config-dropdown-btn" slot="reference"
@click="getSingleIDCData(ite.id,'edit',ite)">11<i
class="el-icon-edit-outline"></i></span>
</el-popover>
<span class="config-dropdown-btn config-dropdown-btn-delete"
@click.stop="deleteData('idc',ite.id)"><i
class="el-icon-delete"></i></span>-->
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<span class="config-dropdown-btn" slot="reference"
@click.stop="getSingleCabinetData(item.id,'edit',item)">
<i class="el-icon-edit-outline"></i>
</span>
</el-popover>
<span class="config-dropdown-btn config-dropdown-btn-delete" <span class="config-dropdown-btn config-dropdown-btn-delete"
@click.stop="deleteData('cabinet',item.id)"> @click.stop="deleteData('cabinet',item.id)">
@@ -531,99 +428,7 @@
</el-select> </el-select>
<div class="right-box-row-btn right-box-row-btn-small"> <div class="right-box-row-btn right-box-row-btn-small">
<el-popover <cabinet-config-box placement="left" :post-cabinet="addCabinetData" @after="getCabinetOptionData"></cabinet-config-box>
placement="left"
trigger="click"
v-model="editPopCabinetVisible"
width="400"
>
<div class="pop-window-assetType-content">
<div class="pop-top-btns">
<button type="button" @click="addNewData('cabinet')" class="nz-btn nz-btn-size-small nz-btn-style-normal">
<span class="top-tool-btn-txt">{{$t('overall.save')}}</span>
</button>
<button type="button" @click="editPopoverClose('cabinet')" class="nz-btn nz-btn-size-small nz-btn-style-light nz-btn-style-square">
<span class="top-tool-btn-txt"><i class="el-icon-close"></i></span>
</button>
</div>
<!--标题-->
<div class="pop-title">{{$t('asset.createAssetTab.AddCabinetTab.title')}}</div>
<!--表单内容-->
<el-form class="pop-item-wider" :model="addCabinetData" ref="cabAddForm" :rules="cabRules">
<el-form-item :label="this.$t('asset.editAssetTab.AddCabinetTab.name')" prop="name">
<el-input size="mini" v-model="addCabinetData.name"/>
</el-form-item>
<el-form-item :label="this.$t('asset.editAssetTab.AddCabinetTab.uSize')" prop="uSize">
<div>{{addCabinetData.uSize}}</div>
<el-slider v-model.number="addCabinetData.uSize"></el-slider>
</el-form-item>
<el-form-item :label="this.$t('asset.editAssetTab.AddCabinetTab.remark')">
<el-input v-model="addCabinetData.remark"
type="textarea" size='mini'
:rows="1"/>
</el-form-item>
<el-form-item :label="this.$t('asset.editAssetTab.AddCabinetTab.DC')" prop="idcId">
<el-select size='mini' v-model="addCabinetData.idcId" clearable style="width: 100%;" placeholder="">
<el-option
v-for="item in IDCOptionData"
:key="item.key"
:label="item.name"
:value="item.id"
>
<span>{{ item.name }}</span>
<!--<el-popover
placement="left"
v-model="item[item.id+item.name]"
>
<div class="pop-window-assetType-content">
<div class="right-box-top-btns">
<div class="right-box-top-btn right-box-top-btn-full"
@click="item[item.id+item.name] = false">
<div class="right-box-btn-icon">
<i class="el-icon-close"></i>
</div>
<span>{{$t('overall.esc')}}</span>
</div>
</div>
<div class="pop-window">
<span style="display: block;padding-bottom: 20px">{{$t('asset.editAssetTab.editIdcTab.title')}}</span>
<el-form-item :label="$t('asset.editAssetTab.editIdcTab.dcName')">
<el-input v-model="addCabIDCData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editIdcTab.location')">
<el-input v-model="addCabIDCData.location"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editIdcTab.principal')">
<el-select v-model="addCabIDCData.principal"
clearable>
<el-option
v-for="item in idcUserData"
:key="item.key"
:label="item.username"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.editIdcTab.tel')">
<el-input v-model="addCabIDCData.tel"/>
</el-form-item>
</div>
</div>
<span class="config-dropdown-btn" slot="reference"
@click="getSingleIDCData(item.id,'edit',item)"><i
class="el-icon-edit-outline"></i></span>
</el-popover>
<span class="config-dropdown-btn config-dropdown-btn-delete"
@click.stop="deleteData('idc',item.id)"><i
class="el-icon-delete"></i></span>-->
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div slot="reference"><i class="el-icon-plus"></i></div>
</el-popover>
</div> </div>
</template> </template>
<span v-if="tabView">{{assetViewData.cabinetName}}</span> <span v-if="tabView">{{assetViewData.cabinetName}}</span>
@@ -637,7 +442,7 @@
<!--cli--> <!--cli-->
<div class="asset-sub-title">{{$t('asset.createAssetTab.cli')}}</div> <div class="asset-sub-title">{{$t('asset.createAssetTab.cli')}}</div>
<div class="line-100 asset-line"></div> <div class="line-100 asset-line"></div>
<account-config-box v-for="(item,index) in assetData.accounts" :account="item" :key="index" ref="accountConfigBox"></account-config-box> <account-config-box v-for="(item,index) in assetData.accounts" :is-edit="!tabView" :account="item" :key="index" ref="accountConfigBox"></account-config-box>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
</div> </div>
@@ -1118,16 +923,7 @@
}) })
} }
}, },
uploadFile:function(file){
},
clearFile:function(){
if(this.$refs.upload){
this.$refs.upload.clearFiles();
}
this.uploadFileList=[];
this.assetData.accounts[0].privateKey='';
},
addNewData(type) { addNewData(type) {
if (type === 'IDC') { if (type === 'IDC') {
const h = this.$createElement; const h = this.$createElement;

View File

@@ -33,7 +33,13 @@
</div> </div>
</template> </template>
<template slot-scope="scope" :column="item"> <template slot-scope="scope" :column="item">
<span v-if="item.prop == 'idc'" class="link">{{scope.row[item.prop].name}}</span> <idc-config-box v-if="item.prop == 'idc'" ref="idcConfigBox" :post-idc="JSON.parse(JSON.stringify(scope.row[item.prop]))" :is-edit="false" placement="left" @after="getIdcData" :button-class="'checkbox-edit'">
<template v-slot:optionZone>
<span class="link" @click="closeAllPop">{{scope.row[item.prop].name}}</span>
</template>
</idc-config-box>
<span v-else-if="item.prop == 'type'"> <span v-else-if="item.prop == 'type'">
{{scope.row[item.prop] == '1' ? 'Global' : ''}} {{scope.row[item.prop] == '1' ? 'Global' : ''}}
{{scope.row[item.prop] == '2' ? 'Per-Datacenter' : ''}} {{scope.row[item.prop] == '2' ? 'Per-Datacenter' : ''}}
@@ -466,6 +472,7 @@ export default {
}); });
}, },
getTableData: function() { getTableData: function() {
this.tableData=[];
this.$set(this.searchLabel, "pageNo", this.pageObj.pageNo); this.$set(this.searchLabel, "pageNo", this.pageObj.pageNo);
this.$set(this.searchLabel, "pageSize", this.pageObj.pageSize); this.$set(this.searchLabel, "pageSize", this.pageObj.pageSize);
this.$get('promServer', this.searchLabel).then(response => { this.$get('promServer', this.searchLabel).then(response => {
@@ -541,7 +548,6 @@ export default {
} else { } else {
this.idcData.forEach(item => { this.idcData.forEach(item => {
if (item.id === data) { if (item.id === data) {
console.log(item)
this.popIdcData.name = item.name this.popIdcData.name = item.name
this.popIdcData.location = item.location this.popIdcData.location = item.location
this.popIdcData.principal = item.principal this.popIdcData.principal = item.principal
@@ -576,6 +582,11 @@ export default {
} }
}) })
}, },
closeAllPop:function(){
this.$refs.idcConfigBox.forEach((item)=>{
item.show(false)
})
},
}, },
mounted: function() { mounted: function() {
this.getIdcData(); this.getIdcData();

View File

@@ -26,9 +26,10 @@ import addEndpointBox from './components/common/rightBox/addEndpointBox'; //endp
import assetAddUnit from "./components/page/asset/assetAddUnit"; //资产添加组件 import assetAddUnit from "./components/page/asset/assetAddUnit"; //资产添加组件
import assetEditUnit from "./components/page/asset/assetEditUnit"; //资产添加组件 import assetEditUnit from "./components/page/asset/assetEditUnit"; //资产添加组件
import alertConfigBox from "./components/common/rightBox/alertConfigBox"; //告警规则弹框组件 import alertConfigBox from "./components/common/rightBox/alertConfigBox"; //告警规则弹框组件
import dcConfigBox from "./components/common/dcConfig"; //idc配置弹框组件 import dcConfigBox from "./components/common/popBox/dcConfig"; //idc配置弹框组件
import panelBox from "./components/common/rightBox/panelBox"; //面板弹框组件 import panelBox from "./components/common/rightBox/panelBox"; //面板弹框组件
import moduleListPop from "./components/page/asset/moduleListPop"; //面板弹框组件 import moduleListPop from "./components/page/asset/moduleListPop"; //面板弹框组件
import cabinetConfigBox from "./components/common/popBox/cabinetConfig"; //面板弹框组件
Vue.component("Pagination", Pagination); Vue.component("Pagination", Pagination);
Vue.component("searchInput", searchInput); Vue.component("searchInput", searchInput);
@@ -43,6 +44,7 @@ Vue.component("alert-config-box", alertConfigBox);
Vue.component("idc-config-box", dcConfigBox); Vue.component("idc-config-box", dcConfigBox);
Vue.component("panel-box", panelBox); Vue.component("panel-box", panelBox);
Vue.component("module-list-pop", moduleListPop); Vue.component("module-list-pop", moduleListPop);
Vue.component("cabinet-config-box", cabinetConfigBox);
Vue.prototype.$axios = axios; Vue.prototype.$axios = axios;
Vue.prototype.$post = post; Vue.prototype.$post = post;