feat:添加asset-account配置开关逻辑

This commit is contained in:
wangwenrui
2020-01-16 10:43:07 +08:00
parent 7f894f6b79
commit ea224c512d
3 changed files with 58 additions and 125 deletions

View File

@@ -123,6 +123,7 @@ const en = {
tel:'Phone number is invalid', tel:'Phone number is invalid',
host:'IP Address is invalid', host:'IP Address is invalid',
fileSize:'upload file is too large', fileSize:'upload file is too large',
port:'Port is invalide',
config: { config: {
account: { account: {
@@ -217,7 +218,8 @@ const en = {
upload:'Upload', upload:'Upload',
clickToUpload:'Upload', clickToUpload:'Upload',
clickToCover:'Cover', clickToCover:'Cover',
sshKeyWasConfig:'SSH-KEY has been configured' sshKeyWasConfig:'SSH-KEY has been configured',
exporter:'Exporter'
}, },
editAssetTab:{ editAssetTab:{
title:'Create Asset', title:'Create Asset',

View File

@@ -20,11 +20,11 @@
<el-input size="mini" v-model="account.user" v-if="isEdit"/> <el-input size="mini" v-model="account.user" v-if="isEdit"/>
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.user}}</div> <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" v-if="isEdit"> <el-form-item :label="$t('asset.createAssetTab.password')" v-show="account.authType==1" v-if="isEdit" style="display: inline-block">
<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" style="display: inline-block">
<el-input size="mini" v-model="account.port" v-if="isEdit"/> <el-input size="mini" v-model.number="account.port" v-if="isEdit"/>
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.port}}</div> <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" v-if="isEdit"> <el-form-item :label="this.$t('asset.createAssetTab.ssh')" v-show="account.authType==2" prop="file" v-if="isEdit">
@@ -45,7 +45,7 @@ export default {
name: "accountConfig", name: "accountConfig",
props:{ props:{
account:{type:Object}, account:{type:Object},
asComponent:{type:Boolean,default:false}, asComponent:{type:Boolean,default:true},//历史原因增加的逻辑,可删除
isEdit:{type:Boolean,default:true} isEdit:{type:Boolean,default:true}
}, },
created() { created() {
@@ -69,11 +69,23 @@ export default {
if(!value || value == ''){ if(!value || value == ''){
callback(new Error(this.$t('validate.required'))) callback(new Error(this.$t('validate.required')))
} }
if(typeof value != 'number'){
callback(new Error(this.$t('validate.number')))
}
if(value < 1 ||value > 65535){
callback(new Error(this.$t('validate.port')))
}
}else{ }else{
if(this.account.user){ if(this.account.user){
if(!value || value == ''){ if(!value || value == ''){
callback(new Error(this.$t('validate.required'))) callback(new Error(this.$t('validate.required')))
} }
if(typeof value != 'number'){
callback(new Error(this.$t('validate.number')))
}
if(value < 1 ||value > 65535){
callback(new Error(this.$t('validate.port')))
}
} }
} }
callback(); callback();
@@ -92,7 +104,7 @@ export default {
{ validator: validataUser, trigger: 'blur'} { validator: validataUser, trigger: 'blur'}
], ],
port:[ port:[
{ validator: validatePort, trigger: 'blur'} { validator: validatePort, trigger: 'change'}
], ],
file:[ file:[
{ validator: validateFile, trigger: 'change'} { validator: validateFile, trigger: 'change'}

View File

@@ -259,58 +259,7 @@
<i class="el-icon-edit-outline" @click="getSingleIDCData(item.id,'edit', item)"></i> <i class="el-icon-edit-outline" @click="getSingleIDCData(item.id,'edit', item)"></i>
</template> </template>
</idc-config-box> </idc-config-box>
<!--<el-popover
placement="left"
v-model="item[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.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.dcName')">
<el-input v-model="popIdcData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.location')">
<el-input v-model="popIdcData.location"/>
</el-form-item>
<el-form-item :label="$t('asset.createAssetTab.principal')">
<el-select v-model="popIdcData.principal" clearable size="mini">
<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 size="mini" v-model="popIdcData.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]= false">
{{$t('overall.cancel')}}
</div>
<div class="right-box-bottom-btn right-box-bottom-btn-50"
@click="editData('idc',item)">
{{$t('overall.save')}}
</div>
</div>
<span class="config-dropdown-btn" slot="reference"
@click.stop="getSingleIDCData(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('idc',item.id)" :id="'asset-add-idc-op-del-'+item.id"><i @click.stop="deleteData('idc',item.id)" :id="'asset-add-idc-op-del-'+item.id"><i
class="el-icon-delete"></i></span> class="el-icon-delete"></i></span>
@@ -318,58 +267,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">
<idc-config-box placement="left" @after="getIDCOptionData"></idc-config-box> <idc-config-box placement="left" @after="getIDCOptionData"></idc-config-box>
<!--<el-popover
placement="left"
trigger="click"
v-model="popIDCVisible"
>
<div class="pop-window-assetType-content">
<div class="right-box-top-btns">
<div class="right-box-top-btn right-box-top-btn-full"
@click="popoverClose('idc')">
<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.AddIdcTab.title')}}</span>
<el-form-item :label="this.$t('asset.createAssetTab.AddIdcTab.dcName')">
<el-input v-model="addIdcData.name"/>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddIdcTab.location')">
<el-input v-model="addIdcData.location"/>
</el-form-item>
<el-form-item :label="this.$t('asset.createAssetTab.AddIdcTab.principal')">
<el-select size="mini" v-model="addIdcData.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="this.$t('asset.createAssetTab.AddIdcTab.tel')">
<el-input v-model="addIdcData.tel"/>
</el-form-item>
</div>
</div>
<div class="right-box-bottom-btns">
<div class="right-box-bottom-btn right-box-bottom-btn-cancel"
@click="popoverClose('idc')">
{{$t('overall.cancel')}}
</div>
<div class="right-box-bottom-btn right-box-bottom-btn-50"
@click="addNewData('IDC')">
{{$t('overall.save')}}
</div>
</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.location')"> <el-form-item :label="this.$t('asset.createAssetTab.location')">
@@ -417,9 +315,16 @@
<span>{{cabinetSelectedData.remark}}</span> <span>{{cabinetSelectedData.remark}}</span>
</el-form-item> </el-form-item>
<!--CLI--> <!--CLI-->
<div class="asset-sub-title">{{$t('asset.createAssetTab.cli')}}</div> <div class="asset-sub-title" >{{$t('asset.createAssetTab.cli')}}</div>
<el-switch v-model="accountSwitch" active-color="#1166bb" :disabled="parseInt(assetData.exporter)===1"></el-switch>
<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> <template v-if="accountSwitch">
<account-config-box v-for="(item,index) in assetData.accounts" :account="item" :key="index" ref="accountConfigBox"></account-config-box>
</template>
<el-form-item :label="this.$t('asset.createAssetTab.exporter')">
<el-switch v-model="assetData.exporter" active-color="#1166bb" active-value="1" inactive-value="0"></el-switch>
</el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
</div> </div>
@@ -455,8 +360,10 @@
pwd: '', pwd: '',
port: '', port: '',
uploadFile:null uploadFile:null
}] }],
exporter:0
}, },
accountSwitch:false,//true 开启false 关闭
assetStateOption: [ assetStateOption: [
{ {
value: 1, value: 1,
@@ -594,7 +501,8 @@
{required: true, message: this.$t('validate.required'), trigger: 'blur'} {required: true, message: this.$t('validate.required'), trigger: 'blur'}
] ]
}, },
uploadFileList:[] uploadFileList:[],
} }
}, },
/*computed: { /*computed: {
@@ -618,6 +526,11 @@
}, },
'assetData.idcId': function(n, o) { 'assetData.idcId': function(n, o) {
this.addCabinetData.idcId = n; this.addCabinetData.idcId = n;
},
'assetData.exporter':function(n,o){
if(parseInt(n) === 1){
this.accountSwitch=true;
}
} }
}, },
methods: { methods: {
@@ -824,8 +737,11 @@
}) })
} }
if (type === 'asset') { if (type === 'asset') {
this.$refs.accountConfigBox[0].validateAccount(); let accountValideResult=true;
let accountValideResult=this.$refs.accountConfigBox[0].validateResult; if(this.$refs.accountConfigBox&&this.$refs.accountConfigBox.length>0){
this.$refs.accountConfigBox[0].validateAccount();
accountValideResult=this.$refs.accountConfigBox[0].validateResult;
}
this.$refs.addAssetForm.validate((valid) => { this.$refs.addAssetForm.validate((valid) => {
if (valid&&accountValideResult) { if (valid&&accountValideResult) {
let modelId = '' let modelId = ''
@@ -848,18 +764,21 @@
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);
for(let i in this.assetData.accounts){ if(this.accountSwitch){
let account=this.assetData.accounts[i]; for(let i in this.assetData.accounts){
if(account.user){ let account=this.assetData.accounts[i];
form.append("accounts["+i+"].authType",account.authType); if(account.user){
form.append("accounts["+i+"].user", account.user); form.append("accounts["+i+"].authType",account.authType);
form.append("accounts["+i+"].port", account.port); form.append("accounts["+i+"].user", account.user);
form.append("accounts["+i+"].pwd", account.pwd); form.append("accounts["+i+"].port", account.port);
if(account.authType==2){ form.append("accounts["+i+"].pwd", account.pwd);
form.append('cert',account.uploadFile?account.uploadFile.raw:null); if(account.authType==2){
form.append('cert',account.uploadFile?account.uploadFile.raw:null);
}
} }
} }
} }
form.append("exporter",parseInt(this.assetData.exporter));
this.$post('asset', form,{'Content-Type': 'multipart/form-data'}).then(res => { this.$post('asset', form,{'Content-Type': 'multipart/form-data'}).then(res => {
const h = this.$createElement; const h = this.$createElement;
if (res.code === 200) { if (res.code === 200) {