项目的老师运行系统之后提出了一些问题和建议,我针对我负责的部分出现的问题进行了修改,以下是问题解决和解决方案
1、问题:
黑名单管理中,点击移除,提示移除成功,接口返回fail。批量移除也是一样的问题。
原因及解决方案:
由于没有在代码中设置每次记录变化之后及时刷新的功能,导致记录已经从数据库中删除了,但是仍然停留在页面上,第二次点击删除按钮时,就会造成页面提示成功但是接口返回fail的情况,因此在代码中多添加一行代码,每次请求接口删除响应数据之后及时刷新页面,解决此问题。
deleteFromBlack(){//从黑名单中批量删除用户
for (let i = 0; i < this.multipleSelection.length; i++) {
this.sz_openid_black[i] = this.multipleSelection[i].user_openid;//sz_openid_black存放选中的用户的openid
}
this.formData=this.sz_openid_black
const _this = this
this.$axios.post('http://grandland.gl-data.com:14332/manage/usermanage/freeblacklist', this.formData).then(function (resp) {
_this.$message({
message: '移除成功!',
type: 'success'
});
})
this.$router.go(0);
},
2)问题:
用户管理中
上图这个功能,用户管理,添加黑名单操作,未选中任何活动,仍然提示加入黑名单成功。这种操作,前端需要判空的,如果没有选择,在前端就提示不允许后续操作了。
原因及解决办法:
是由于代码中没有进行判空,导致选中部分但是不选中活动依然会执行请求接口的代码。
在代码中添加判空的过程:
submitActUser(){ //处理表单选择的活动,提交表单
//获取选择的活动
for(let i=0;i<this.SelectActivities.length;i++){
this.temp_formData[i]=this.SelectActivities[i].act_id;
}
this.act_formData=this.temp_formData;
const _this = this
if(this.radio===1){//选择全部活动
this.isall='1';
var parm1={
act_ids:this.act_formData,
user_openid:this.formData,
isall:this.isall
}
this.$axios.post('http://grandland.gl-data.com:14332/manage/usermanage/addblacklist',
parm1).then(function (resp) {
_this.$message({
message: '加入黑名单成功!',
type: 'success'
});
})
}else{//选择部分
this.isall='0';
if(this.SelectActivities.length<=0){
_this.$message({
message: '请选择限制的活动!',
type: 'error'
});
}else{
var parm={
act_ids:this.act_formData,
user_openid:this.formData,
isall:this.isall
}
this.$axios.post('http://grandland.gl-data.com:14332/manage/usermanage/addblacklist', parm).then(function (resp) {
_this.$message({
message: '加入黑名单成功!',
type: 'success'
});
})
}
}
}
在此类问题中,需要考虑到用户使用这个系统时,不会完全按照开发者的意愿进行操作,因此开发系统时需要对各种异常情况进行考虑和处理,增强系统的可用性。