Vue:要求录入数据用户和登录用户不一致时不允许修改数据

在做项目时遇到了一个问题:要求录入数据用户和登录用户不一致时不允许修改数据
image
最开始的时候我想的很简单直接验证就行:(其他内容不展示,只展示按钮)

<div>
	<button class="button-border" @click="handleUpdate()">
		修改
	</button>
</div>
handleUpdate (row) {

	// 修改校验:协议录入人需要与登录人保持一致
	if(row.input_user_name == this.$store.state.user.name){
	//input_user_name为数据录入的用户名,this.$store.state.user.name就是现登录的用户名
		this.$router.push({ path: '/process/insert', query: { flowId: row.flow_id} })
	}else{
		this.$modal.alertError("协议录入账户与登录账户不一致,不允许修改。");
	}
},

以为要用到slot-scope="scope",所以我直接加在了

标签里,但是发现修改按钮不显示:

<div slot-scope="scope">
	<button class="button-border" @click="handleUpdate(scope.row)">
		修改
	</button>
</div>

在经过网上搜索之后说现在的版本换成了v-slot,官方文档:https://v2.cn.vuejs.org/v2/guide/components-slots.html;
但是经过尝试之后还是不行的,在仔细研究了之后发现将 元素作为承载分发内容的出口,它允许合成组件。所以说我不能使用slot
于是我对这个流程进行了分析:推荐在线画流程图的网站:https://www.processon.com/
image
在看着这个流程图时,我的思路逐渐清晰,发现我好像陷入了误区:
在控制台打印时,我发现这个数据表返回的有一个是ID,而我一直在尝试用ID来调取name,那我为什么不直接获取现在登录的用户ID来和录入数据的用户ID来进行对比呢:

<div>
	<button class="button-border" @click="handleUpdate()">
		修改
	</button>
</div>
//数据
data(){
	return:{
		isDisabled: true,//数据绑定的方法,为true是不可以修改输入框内容
	}
}
//方法
handleUpdate(row) {
	// 修改校验:协议录入人需要与登录人保持一致
	if ( this.form.createBy === this.$store.state.user.userId ) {
	//this.form.createBy为录入数据用户ID,this.$store.state.user.userId为现登录用户ID
		this.isDisabled = !this.isDisabled
	} else {
		this.$modal.alertError("协议录入账户与登录账户不一致,不允许修改。");
	}
	}

这样就实现了录入数据用户和登录用户不一致时不允许修改数据

posted @ 2022-11-24 14:17  Clown&  阅读(63)  评论(1)    收藏  举报