203 lines
6.5 KiB
Vue
203 lines
6.5 KiB
Vue
|
|
<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>
|