1.实体详情tab(相关实体、开放端口)没超过100条的话,more按钮隐藏;2.i18n的新增,后端校验失败时没弹提示。用户、角色新增的name重复校验失败时没弹提示;3.下拉框背景色调为白色;4.修改密码增加at least five的校验;

This commit is contained in:
hyx
2023-07-15 12:50:03 +08:00
parent ee338b247d
commit 14125d549d
10 changed files with 50 additions and 17 deletions

View File

@@ -71,7 +71,7 @@
.el-input__inner { .el-input__inner {
font-size: 14px; font-size: 14px;
color: #353636; color: #353636;
background-color: #F5F8FA; background-color: #FFFFFF;
} }
.common-select { .common-select {
top: 32px !important; top: 32px !important;

View File

@@ -224,6 +224,13 @@ export default {
callback() callback()
} }
} }
const validateFiveLength = (rule, value, callback) => {
if (value.length < 5) {
callback(new Error(this.$t('validate.atLeastFive')))
} else {
callback()
}
}
return { return {
username: localStorage.getItem(storageKey.username), username: localStorage.getItem(storageKey.username),
language: localStorage.getItem(storageKey.language) ? localStorage.getItem(storageKey.language) : 'en', language: localStorage.getItem(storageKey.language) ? localStorage.getItem(storageKey.language) : 'en',
@@ -244,11 +251,17 @@ export default {
required: true, required: true,
message: this.$t('validate.required'), message: this.$t('validate.required'),
trigger: 'blur' trigger: 'blur'
}, {
validator: validateFiveLength,
trigger: 'change'
}], }],
newPwd2: [{ newPwd2: [{
required: true, required: true,
message: this.$t('validate.required'), message: this.$t('validate.required'),
trigger: 'blur' trigger: 'blur'
}, {
validator: validateFiveLength,
trigger: 'change'
}, { }, {
validator: passwordComparison, validator: passwordComparison,
trigger: 'blur' trigger: 'blur'

View File

@@ -376,7 +376,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} else { } else {
@@ -386,7 +386,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} }

View File

@@ -112,7 +112,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} else { } else {
@@ -122,7 +122,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} }

View File

@@ -186,7 +186,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} else { } else {
@@ -196,7 +196,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} }

View File

@@ -144,6 +144,18 @@ export default {
callback() callback()
} }
} }
const validateUserName = (rule, value, callback) => {
let validate = true
const reg = /^[a-zA-Z0-9_]{2,64}$/
validate = reg.test(value)
if (value.length < 2) {
callback(new Error(this.$t('validate.atLeastTwo')))
} else if (!validate) {
callback(new Error(this.$t('validate.userName')))
} else {
callback()
}
}
return { return {
url: api.user, url: api.user,
loginName: localStorage.getItem(storageKey.username), loginName: localStorage.getItem(storageKey.username),
@@ -154,7 +166,7 @@ export default {
], ],
username: [ username: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ pattern: /^[a-zA-Z0-9_]{2,64}$/, message: this.$t('validate.atLeastTwo') } { validator: validateUserName, trigger: 'change' }
], ],
pin: [ pin: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { required: true, message: this.$t('validate.required'), trigger: 'blur' },
@@ -229,7 +241,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} else { } else {
@@ -239,7 +251,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} }

View File

@@ -33,7 +33,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} else { } else {
@@ -43,7 +43,7 @@ export default {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') }) this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
this.esc(true) this.esc(true)
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg || res.message)
} }
}) })
} }

View File

@@ -10,7 +10,8 @@ export default {
return { return {
isNoData: false, isNoData: false,
showError: false, showError: false,
errorMsg: '' errorMsg: '',
entityDetailRelatedEntitiesShowSize: entityDetailRelatedEntitiesShowSize
} }
}, },
emits: ['toggleLoading'], emits: ['toggleLoading'],

View File

@@ -14,7 +14,7 @@
{{ entity.appName ? entity.appName : entity }} {{ entity.appName ? entity.appName : entity }}
</div> </div>
</div> </div>
<div class="more" v-if="relatedAppList.length > 0"> <div class="more" v-if="relatedAppList.length > entityDetailRelatedEntitiesShowSize">
<span class="button" :style="{'opacity': relatedAppList.length > showRelatedAppListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedAppListInfo,relatedAppList)">{{ $t('overall.more') }} > </span> <span class="button" :style="{'opacity': relatedAppList.length > showRelatedAppListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedAppListInfo,relatedAppList)">{{ $t('overall.more') }} > </span>
</div> </div>
</template> </template>
@@ -34,7 +34,7 @@
{{ entity.ip ? entity.ip : entity }} {{ entity.ip ? entity.ip : entity }}
</div> </div>
</div> </div>
<div class="more" v-if="relatedIpList.length > 0"> <div class="more" v-if="relatedIpList.length > entityDetailRelatedEntitiesShowSize">
<span class="button" :style="{'opacity': relatedIpList.length > showRelatedIpListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedIpListInfo,relatedIpList)">{{ $t('overall.more') }} > </span> <span class="button" :style="{'opacity': relatedIpList.length > showRelatedIpListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedIpListInfo,relatedIpList)">{{ $t('overall.more') }} > </span>
</div> </div>
</template> </template>
@@ -54,7 +54,7 @@
{{ entity.domain ? entity.domain : entity }} {{ entity.domain ? entity.domain : entity }}
</div> </div>
</div> </div>
<div class="more" v-if="relatedDomainList.length > 0"> <div class="more" v-if="relatedDomainList.length > entityDetailRelatedEntitiesShowSize">
<span class="button" :style="{'opacity': relatedDomainList.length > showRelatedDomainListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedDomainListInfo,relatedDomainList)">{{ $t('overall.more') }} > </span> <span class="button" :style="{'opacity': relatedDomainList.length > showRelatedDomainListInfo.num ? 1 : 0.6}" @click="showMore(showRelatedDomainListInfo,relatedDomainList)">{{ $t('overall.more') }} > </span>
</div> </div>
</template> </template>

View File

@@ -10,10 +10,13 @@
<span class="type-title-word">{{ $t('entities.tab.currentDevelopmentPortsAndServices') }}</span>({{ openPortList.length }}) <span class="type-title-word">{{ $t('entities.tab.currentDevelopmentPortsAndServices') }}</span>({{ openPortList.length }})
</div> </div>
<div class="type-content"> <div class="type-content">
<div v-for="(openPort, index) in openPortList" :key="index" class="data-item"> <div v-for="(openPort, index) in openPortList.slice(0,showOpenPortListInfo.num)" :key="index" class="data-item">
{{ openPort.port }}/{{ openPort.l7Protocol }} {{ openPort.port }}/{{ openPort.l7Protocol }}
</div> </div>
</div> </div>
<div class="more" v-if="openPortList.length > entityDetailRelatedEntitiesShowSize">
<span class="button" :style="{'opacity': openPortList.length > showOpenPortListInfo.num ? 1 : 0.6}" @click="showMore(showOpenPortListInfo,openPortList)">{{ $t('overall.more') }} > </span>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -34,6 +37,9 @@ export default {
data () { data () {
return { return {
openPortList: [], openPortList: [],
showOpenPortListInfo: {
num: 0
},
showError: false, showError: false,
errorMsg: '', errorMsg: '',
initFlag: false // 初始化标识,请求接口之后再显示,避免标题初始化会闪一下 initFlag: false // 初始化标识,请求接口之后再显示,避免标题初始化会闪一下
@@ -65,6 +71,7 @@ export default {
this.showError = false this.showError = false
if (!this.isNoData) { if (!this.isNoData) {
this.openPortList = res.data.result this.openPortList = res.data.result
this.handleShowDataNum(this.showOpenPortListInfo, this.openPortList)
} }
} else { } else {
this.httpError(res) this.httpError(res)