当前位置: 首页 > news >正文

【若依前后端分离】通过输入用户编号自动带出部门名称(部门树)

一、部门树

使用 <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门"/>

<el-col :span="12"><el-form-item label="归属部门" prop="deptId"><treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门"/></el-form-item>
</el-col>

二、用户编号的input中添加失焦事件和回车事件

失焦事件:@blur="userNameChange"

回车事件:@keyup.enter.native="userNameChange"

注意此处的disabled="show"后面会提到

 <el-col :span="12"><el-form-item v-if="form.userId == undefined" label="胸牌号" prop="userName"><el-input v-model="form.userName"placeholder="请输入用户编号":disabled="show"maxlength="30"@keyup.enter.native="userNameChange"@blur="userNameChange"/></el-form-item></el-col>

:disabled="show" 的应用是为了控制 el-input 输入框的禁用状态。这里的 show 是一个布尔类型的变量,当它的值为 true 时,输入框将被禁用,用户无法在其中输入任何内容;反之,当 show 为 false 时,输入框可以正常使用。

在发起请求前:当用户按下回车键或失去焦点触发 userNameChange 方法时,首先设置 this.show = true;。这会导致输入框立刻被禁用,可能的目的是为了防止用户在此期间重复提交请求或修改输入,同时可能伴随着显示加载指示器。

请求完成后:无论API调用成功还是失败,最终都会执行 this.show = false;,重新启用输入框,允许用户继续输入或进行下一步操作。

这样的设计有助于提升用户体验,通过暂时禁用输入框来避免用户在数据加载过程中的误操作,并及时恢复功能,确保界面的交互流畅性。

三、在部门树中,根据已知部门名称查找部门id事件

调用:

const deptId = this.getDeptIdByName(this.deptName)

this.form.deptId = deptId;

getDeptIdByName(name) {/*** 递归函数,根据部门名称查找部门ID* @param {Array} options 部门选项数组* @param {String} targetName 要查找的部门名称* @returns {Number|undefined} 找到的部门ID,未找到则返回undefined*/function findDeptId(options, targetName) {for (const dept of options) {if (dept.label === targetName) {return dept.id;}if (dept.children && dept.children.length > 0) {const result = findDeptId(dept.children, targetName);if (result !== undefined) {return result;}}}return undefined;}// 调用递归函数并返回结果return findDeptId(this.deptOptions, name);
},

四、失焦和回车事件问题

遇到问题:回车后,调用接口信息不显示,再随意输入数据才显示

原因:异步处理不当导致的

因为失焦事件和回车事件中需要调用接口,接口数据还未返回就将值赋给各个控件,所以导致问题发生。

问题解决:添加this.show

/*** 新增用户时,胸牌号回车事件*/
userNameChange() {console.log("---------------失焦事件---------------------")if(this.form.userName){this.show = true;getUserByHR(this.form.userName).then(response => {this.show = false;if (response.code === 200) {if (response.data.code === 200) {//姓名、手机号this.form.nickName = response.data.data.xm;this.form.phonenumber = response.data.data.sjh;//性别if (response.data.data.xb === "男") {this.form.sex = 0;} else {this.form.sex = 1;}//默认普通员工this.form.postIds = [4];//默认普通角色this.form.roleIds = [2];this.form.status = 0;//归属部门// 通过部门编号获取部门id// this.form.deptId=[111];const deptId = this.getDeptIdByName(response.data.data.dept)this.form.deptId = deptId;} else {this.$message.error("获取信息失败");}} else {this.$message.error("连接错误");}console.log("接口信息", response);}).catch(err=>{this.show = false;})}},

http://www.lryc.cn/news/394616.html

相关文章:

  • AIGC时代程序员的跃迁——编程高手的密码武器
  • 园区智慧能源可视化:智能监控与优化能源管理
  • Linux内网端口转公网端口映射
  • 银河麒麟高级服务器操作系统(通用)安装和编译指定的python3版本
  • cs231n 作业3
  • HarmonyOS Next系列之Echarts图表组件(折线图、柱状图、饼图等)实现(八)
  • 网上怎么样可以挣钱,分享几种可以让你在家赚钱的兼职项目
  • 【DevOps】运维过程中经常遇到的Http错误码问题分析(二)
  • 数据结构练习
  • 手动安装Ruby 1.9.3并升级RubyGems
  • go语言day11 错误 defer(),panic(),recover()
  • 构建docker镜像实战
  • 生信算法9 - 正则表达式匹配氨基酸序列、核型和字符串
  • linux ext2文件系统浅析
  • 「树莓派入门」树莓派进阶02-传感器应用与交通灯项目
  • pytorch 指定GPU设备
  • 华为od-C卷200分题目6 - 5G 网络建设
  • 步进电机(STM32+28BYJ-48)
  • Node.js介绍 , 安装与使用
  • JavaEE初阶-网络原理1
  • leetcode秋招冲刺 (专题16--18)
  • 学懂C#编程:实用方法——string字符串指定连接符拼接之 string.Join 的详细用法
  • Javascript常见数据结构和设计模式
  • 【ChatGPT】全面解析 ChatGPT:从起源到未来
  • html+css+js贪吃蛇游戏
  • 新手必学:掌握Excel中这些常用公式,轻松提升数据处理能力
  • 经济寒冬:竞品凶猛,你的产品如何求生?
  • 信号量——Linux并发之魂
  • 自动驾驶中的逆透视变换(Inverse Perspective Mapping,IPM)详解
  • Python地震波逆问题解构算法复杂信号分析