feat: asset侧滑添加module alert 跳转

This commit is contained in:
wangwenrui
2020-01-17 18:57:24 +08:00
parent 79bb41d9a7
commit e4942c6593
6 changed files with 68 additions and 129 deletions

View File

@@ -1,5 +1,4 @@
import vm from '../../../main' import vm from '../../../main'
import ca from "element-ui/src/locale/lang/ca";
export function host(rule, value, callback) { export function host(rule, value, callback) {
const hostReg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ const hostReg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/

View File

@@ -15,15 +15,15 @@
</div>--> </div>-->
<div class="nz-tab" v-if="isEdit"> <div class="nz-tab" v-if="isEdit">
<div class="nz-tab-item-box" @click="changeLoginType(1)" id="account-logintype-1"> <div class="nz-tab-item-box" @click="changeLoginType(1)" id="account-logintype-1">
<div class="nz-tab-item" :class="{'nz-tab-item-active' : account.authType == 1}">{{$t('project.endpoint.endpoint')}}</div> <div class="nz-tab-item" :class="{'nz-tab-item-active' : account.authType == 1}">{{$t('asset.createAssetTab.password')}}</div>
</div> </div>
<div @click="changeLoginType(2)" class="nz-tab-item-box"> <div @click="changeLoginType(2)" class="nz-tab-item-box">
<div class="nz-tab-item" :class="{'nz-tab-item-active' : account.authType == 2}">{{$t('project.metrics.metrics')}}</div> <div class="nz-tab-item" :class="{'nz-tab-item-active' : account.authType == 2}">{{$t('asset.createAssetTab.ssh')}}</div>
</div> </div>
</div> </div>
<el-form-item :label="$t('asset.createAssetTab.loginType')" size="mini" v-if="!isEdit">
<div class="right-box-form-content-txt" v-if="!isEdit">{{account.authType}}</div> <div class="right-box-form-content-txt" >{{account.authType==1?$t('asset.createAssetTab.password'):$t('asset.createAssetTab.ssh')}}</div>
</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 autocomplete="new-password" size="mini" v-model="account.user" v-if="isEdit"/> <el-input autocomplete="new-password" 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>
@@ -79,7 +79,6 @@ export default {
{ validator: validateFile, trigger: 'change'} { validator: validateFile, trigger: 'change'}
] ]
}, },
validateResult:false,
uploadTip:'' uploadTip:''
} }
}, },
@@ -120,7 +119,8 @@ export default {
validateAccount:function(){ validateAccount:function(){
this.validateResult=false; this.validateResult=false;
this.$refs.accountForm.validate((valid) => { this.$refs.accountForm.validate((valid) => {
this.validateResult=valid; this.$emit("setValidateResult",valid);
console.log(valid)
}); });
}, },
validateFile:function(){ validateFile:function(){

View File

@@ -82,7 +82,7 @@
<span>{{scope.row.state==1 ? $t('asset.createAssetTab.inStock') : $t('asset.createAssetTab.notInStock')}}</span> <span>{{scope.row.state==1 ? $t('asset.createAssetTab.inStock') : $t('asset.createAssetTab.notInStock')}}</span>
</div> </div>
<div v-if="item.prop=='Module'"> <div v-if="item.prop=='Module'">
<div v-if="scope.row.moduleNum > 0" @click="getAssetModuleList(scope.row.id)" :id="'asset-module-'+scope.row.id"> <div v-if="scope.row.moduleNum > 0" >
<module-list-pop :asset-id="scope.row.id + ''" @openModuleBox="openModuleBox" placement="left" :ref="'moduleListPop' + scope.row.id"> <module-list-pop :asset-id="scope.row.id + ''" @openModuleBox="openModuleBox" placement="left" :ref="'moduleListPop' + scope.row.id">
<template v-slot:optionZone> <template v-slot:optionZone>
<button class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75">{{scope.row.moduleNum}}</button> <button class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75">{{scope.row.moduleNum}}</button>

View File

@@ -334,7 +334,7 @@
</div> </div>
<div class="line-100 asset-line"></div> <div class="line-100 asset-line"></div>
<template v-if="accountSwitch"> <template v-if="accountSwitch">
<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" :account="item" :key="index" ref="accountConfigBox" @setValidateResult="setAccountValideResult"></account-config-box>
</template> </template>
<el-form-item :label="this.$t('asset.createAssetTab.exporter')" class="exporter-label"> <el-form-item :label="this.$t('asset.createAssetTab.exporter')" class="exporter-label">
@@ -530,6 +530,7 @@
] ]
}, },
uploadFileList:[], uploadFileList:[],
accountValideResult:true
} }
}, },
@@ -765,13 +766,12 @@
}) })
} }
if (type === 'asset') { if (type === 'asset') {
let accountValideResult=true;
if(this.$refs.accountConfigBox&&this.$refs.accountConfigBox.length>0){ if(this.$refs.accountConfigBox&&this.$refs.accountConfigBox.length>0){
this.$refs.accountConfigBox[0].validateAccount(); this.$refs.accountConfigBox[0].validateAccount();
accountValideResult=this.$refs.accountConfigBox[0].validateResult; console.log("accountValideResult-->"+this.accountValideResult)
} }
this.$refs.addAssetForm.validate((valid) => { this.$refs.addAssetForm.validate((valid) => {
if (valid&&accountValideResult) { if (valid&&this.accountValideResult) {
let modelId = '' let modelId = ''
let authType = '' let authType = ''
if (this.assetData.modelId !== '') { if (this.assetData.modelId !== '') {
@@ -867,6 +867,9 @@
}) })
} }
}, },
setAccountValideResult:function(result){
this.accountValideResult=result;
},
uploadFile:function(file){ uploadFile:function(file){
this.assetData.accounts[0].file=file.file; this.assetData.accounts[0].file=file.file;
}, },

View File

@@ -43,11 +43,19 @@
</div> </div>
<span v-if="tabView">{{assetData.state==1 ? $t('asset.createAssetTab.inStock'): $t('asset.createAssetTab.notInStock')}}</span> <span v-if="tabView">{{assetData.state==1 ? $t('asset.createAssetTab.inStock'): $t('asset.createAssetTab.notInStock')}}</span>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.editAssetTab.modelId')" v-if="tabView"> <el-form-item :label="$t('asset.tableTitle.modules')" v-if="tabView">
<div class="tab-input-square">{{assetViewData.moduleNum}}</div> <div v-if="assetViewData.moduleNum > 0" >
<module-list-pop :asset-id="obj.id + ''" @openModuleBox="openModuleBox" placement="left" :ref="'moduleListPop' + obj.id">
<template v-slot:optionZone>
<button class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75">{{assetViewData.moduleNum}}</button>
</template>
</module-list-pop>
</div>
<button type="button" v-else class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75 nz-btn-disabled">{{assetViewData.moduleNum}}</button>
</el-form-item> </el-form-item>
<el-form-item :label="$t('asset.editAssetTab.alert')" v-if="tabView"> <el-form-item :label="$t('asset.tableTitle.alerts')" v-if="tabView">
<div class="tab-input-square">{{assetViewData.alertNum}}</div> <button type="button" v-if="assetViewData.alertNum > 0" id="'asset-alerts-'+scope.row.id" @click="jumpToAlertMsg(obj.id)" class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75">{{assetViewData.alertNum}}</button>
<button type="button" v-else class="nz-btn nz-btn-size-normal nz-btn-style-light nz-btn-min-width-75 nz-btn-disabled">{{assetViewData.alertNum}}</button>
</el-form-item> </el-form-item>
<div class="asset-sub-title">{{$t('asset.createAssetTab.assetInfo')}}</div> <div class="asset-sub-title">{{$t('asset.createAssetTab.assetInfo')}}</div>
<div class="line-100 asset-line"></div> <div class="line-100 asset-line"></div>
@@ -308,114 +316,10 @@
</template> </template>
</idc-config-box> </idc-config-box>
</div> </div>
<!--<el-popover
placement="left"
v-model="item[item.name]"
trigger="manual"
>
<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.editAssetTab.editIdcTab.title')}}</span>
<el-form-item :label="$t('asset.editAssetTab.dcName')">
<el-input v-model="popIdcData.name"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.location')">
<el-input v-model="popIdcData.location"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.principal')">
<el-select v-model="popIdcData.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="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>-->
</el-option> </el-option>
</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"
v-model="editPopIDCVisible"
>
<div class="pop-window-assetType-content">
<div class="right-box-top-btns">
<div class="right-box-top-btn right-box-top-btn-full"
@click="editPopoverClose('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.editAssetTab.AddIdcTab.title')}}</span>
<el-form-item :label="this.$t('asset.editAssetTab.AddIdcTab.dcName')">
<el-input v-model="addIdcData.name"/>
</el-form-item>
<el-form-item :label="this.$t('asset.editAssetTab.AddIdcTab.location')">
<el-input v-model="addIdcData.location"/>
</el-form-item>
<el-form-item :label="$t('asset.editAssetTab.AddIdcTab.principal')">
<el-select 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.editAssetTab.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="editPopoverClose('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>
</template> </template>
<span v-if="tabView">{{assetViewData.idcName}}</span> <span v-if="tabView">{{assetViewData.idcName}}</span>
@@ -471,9 +375,13 @@
<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')}}
<el-switch style="float: right;" v-model="accountSwitch" active-color="#ee9d3f" :disabled="parseInt(assetData.exporter)===1"></el-switch>
</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" :is-edit="!tabView" :account="item" :key="index" ref="accountConfigBox"></account-config-box> <template v-if="accountSwitch">
<account-config-box v-for="(item,index) in assetData.accounts" :is-edit="!tabView" :account="item" :key="index" ref="accountConfigBox" @setValidateResult="setAccountValideResult"></account-config-box>
</template>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
@@ -486,6 +394,7 @@
<span>{{$t('overall.ok')}}</span> <span>{{$t('overall.ok')}}</span>
</button> </button>
</div> </div>
<module-box :module="module" @reload="refreshTabData" ref="moduleBox"></module-box>
</div> </div>
</transition> </transition>
</template> </template>
@@ -522,6 +431,7 @@
uploadFile: null uploadFile: null
}] }]
}, },
accountSwitch:false,//true 开启false 关闭
accountData: '', accountData: '',
assetViewData: { assetViewData: {
assetType: '', assetType: '',
@@ -676,7 +586,9 @@
] ]
}, },
uploadFileList:[], uploadFileList:[],
formData:null formData:null,
module:{},
accountValideResult:true
} }
}, },
/*computed: { /*computed: {
@@ -765,7 +677,8 @@
// this.assetData.accounts[0].pwd = response.data.list[0].accounts[0].pwd // this.assetData.accounts[0].pwd = response.data.list[0].accounts[0].pwd
// this.assetData.accounts[0].port = response.data.list[0].accounts[0].port // this.assetData.accounts[0].port = response.data.list[0].accounts[0].port
// this.assetData.accounts[0].cert = response.data.list[0].accounts[0].privateKey // this.assetData.accounts[0].cert = response.data.list[0].accounts[0].privateKey
this.assetData.accounts[0]=response.data.list[0].accounts[0]?response.data.list[0].accounts[0]:this.assetData.accounts[0]; this.assetData.accounts=response.data.list[0].accounts[0]?response.data.list[0].accounts:[];
this.accountSwitch=this.assetData.accounts.length>0;
this.idcSelectedData.location = response.data.list[0].idc.location this.idcSelectedData.location = response.data.list[0].idc.location
this.idcSelectedData.principal = response.data.list[0].idc.principal this.idcSelectedData.principal = response.data.list[0].idc.principal
this.idcSelectedData.tel = response.data.list[0].idc.tel this.idcSelectedData.tel = response.data.list[0].idc.tel
@@ -776,6 +689,23 @@
}) })
} }
}, },
openModuleBox(module) {
this.module = module;
this.$refs.moduleBox.show(true);
this.$refs['moduleListPop' + this.obj.id].show(false);
},
refreshTabData:function(){
this.$emit('refreshData', 'true');
},
jumpToAlertMsg(assetId) {
this.$store.commit('assetForAlertListChange', assetId);
this.$router.push({
path: "/alertList",
query: {
t: +new Date()
}
});
},
getIDCOptionData() { getIDCOptionData() {
this.$get('idc').then(response => { this.$get('idc').then(response => {
if (response.code === 200) { if (response.code === 200) {
@@ -884,10 +814,12 @@
} }
} }
} }
if(this.$refs.accountConfigBox&&this.$refs.accountConfigBox.length>0){
this.$refs.accountConfigBox[0].validateAccount(); this.$refs.accountConfigBox[0].validateAccount();
let accountValideResult=this.$refs.accountConfigBox[0].validateResult; }
this.$refs.assetEditForm.validate((valid) => { this.$refs.assetEditForm.validate((valid) => {
if (valid&&accountValideResult) { if (valid&&this.accountValideResult) {
this.$put('asset', form,{'Content-Type': 'multipart/form-data'}).then(res => { this.$put('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) {
@@ -966,6 +898,9 @@
}) })
} }
}, },
setAccountValideResult:function(result){
this.accountValideResult=result;
},
//新增型号弹框关闭后重置弹框内容 //新增型号弹框关闭后重置弹框内容
resetVendor() { resetVendor() {
this.addVendorData.value = ''; this.addVendorData.value = '';

View File

@@ -24,7 +24,9 @@
</el-table> </el-table>
</div> </div>
<template slot="reference"> <template slot="reference">
<div @click="getModuleList">
<slot name="optionZone"><div class="tab-input-square link">0</div></slot> <slot name="optionZone"><div class="tab-input-square link">0</div></slot>
</div>
</template> </template>
</el-popover> </el-popover>
</template> </template>