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

JAVA-实战7 Tlias实例开发(3)员工管理-下半部分

感じてどきどき

Tlias实例开发-员工管理·下

要求

修改员工

点击“编辑”按钮,查询回显,显示员工原有的信息
修改完成后点击提交,完成信息修改

删除员工

修改员工

修改员工复用了“添加员工”的对话框,然后需要使用查询回显操作,即修改前先返回原数据然后在原数据基础上修改

查询回显时由于工作经历中的日期范围为日期数组,但是服务端返回的数据没有该属性,需要手动添加

if(NewEmpData.value.exprList && NewEmpData.value.exprList.length>0) {NewEmpData.value.exprList.forEach((expr)=>{expr.DateRange = [expr.begin,expr.end];})
}

完整代码如下:


// src/views/emp/index.vue
<script>const ConfirmSummit = ()=>{if(DialogUser.value ==='Add') {AddEmpData();}else {EditEmpData();}}const EditHandler = async (id) => {if(EmpFormRef.value) {EmpFormRef.value.resetFields();}const result = await SelectEmpDataById(id);NewEmpData.value = result.data;if(NewEmpData.value.exprList && NewEmpData.value.exprList.length>0) {NewEmpData.value.exprList.forEach((expr)=>{expr.DateRange = [expr.begin,expr.end];})}DialogUser.value = 'Edit';DialogTitle.value = '编辑员工';DialogFormVisible.value = true;}const EditEmpData = async () =>{if(!EmpFormRef.value) return;EmpFormRef.value.validate(async (valid)=>{if(valid) {const result = await UpdateEmpData(NewEmpData.value);if(result.code) {DialogFormVisible.value = false;EditSuccessMessage();await GetEmpData();} else {EditErrorMessage(result.message);}} else {ErrorCheckMessage();}})}const EditSuccessMessage = ()=> {ElMessage({message: '编辑员工信息成功!',type: 'success',})}const EditErrorMessage = (message)=> {ElMessage.error("编辑员工信息失败: "+message)}
</script>
<template><div class="TableContainer"><el-table :data="EmpData" border style="width: 100%"><el-table-column label="操作" align="center"><template #default="scope"><el-button size="small" type="warning" @click="EditHandler(scope.row.id)"><el-icon><EditPen /></el-icon>编辑</el-button></template></el-table-column></el-table></div>
</template>

实际效果如下:
修改前查询回显
image
image
image
image
修改信息(修改了KSM的工资让她经营乐队,修改了电话号被她私生饭,添加了工作经历在LiveHouse遇见了Mygo)并提交修改
image
image
image
image

删除员工

删除分为单个删除和批量删除,均为危险操作,需要调用确认框确认

// src/api/emp.js
//删除员工数据
export const DeleteEmpDataById = (EmpIdList) =>request.delete(`/empdelete?ids=${EmpIdList}`,EmpIdList);

单个删除

<script>const DeleteHandler = (id) => {ElMessageBox.confirm('选中的员工会被永久删除,是否继续?','请谨慎确认',{confirmButtonText: '确认',cancelButtonText: '取消',type: 'warning',}).then(async ()=>{const result = await DeleteEmpDataById([id]);if (result.code) {DeleteSuccessMessage(); //提示信息DialogFormVisible.value = false; //关闭对话框await GetEmpData(); //查询} else {DeleteErrorMessage(result.message);}}).catch(()=>{DeleteCancelMessage();})}
</script>
<template><div class="TableContainer"><el-table :data="EmpData" border style="width: 100%"><el-table-column label="操作" align="center"><template #default="scope"><el-button size="small" type="danger" @click="DeleteHandler(scope.row.id)"><el-icon><Delete /></el-icon> 删除</el-button></template></el-table-column></el-table></div>
</template>

效果如下:
image
image
image

批量删除

批量删除需要使用el-table-column>中设置type="selection" 实现复选框效果,然后在<el-table>中设置@selection-change="handleSelectionChange"设置复选框发生变化的触发事件

<script>const SelectionChangeHandler = (val) =>{console.log(val);}
</script>
<template><div class="TableContainer"><el-table :data="EmpData" border style="width: 100%" @selection-change="handleSelectionChange"><el-table-column type="selection" width="120" align="center"/><el-table> </div>
</template>

完整代码如下:

<script>const SelectionChangeHandler = (SelectionList) =>{DeleteIdList.value = [];SelectionList.forEach((item) => {DeleteIdList.value.push(item.id);})}const DeleteEmpDataListHandler = () =>{ElMessageBox.confirm('选中的员工会被永久删除,是否继续?','请谨慎确认',{confirmButtonText: '确认',cancelButtonText: '取消',type: 'warning',}).then(async ()=>{const result = await DeleteEmpDataById(DeleteIdList.value);if (result.code) {DeleteSuccessMessage(); //提示信息DialogFormVisible.value = false; //关闭对话框DeleteIdList.value = []await GetEmpData(); //查询} else {DeleteErrorMessage(result.message);}}).catch(()=>{DeleteCancelMessage();})}
</script>

效果如下:
image

效果如下:
image
image
image
image
image

http://www.jsqmd.com/news/593611/

相关文章:

  • 新手必看:知乎话题数据采集从入门到精通(含代理IP配置与数据清洗技巧)
  • 2025届必备的降AI率神器推荐榜单
  • 高光谱成像基础(六)滤波匹配 MF
  • CSS 变量进阶:动态主题与复杂动画
  • ESP32自动登录校园网实战:绕过网页认证,实现设备永久在线(附完整Arduino代码)
  • 01_Neo4j知识体系之原生图数据库架构全景与技术定位
  • 看门狗悖论:对波普尔可证伪主义划界标准的归谬反驳
  • 2025最权威的五大降重复率工具推荐榜单
  • Flutter Web:混合开发的最佳实践
  • 为什么芯片工程师都在学Chisel?从Verilog到高级硬件设计的跃迁指南
  • UPF实战避坑指南:从Power Switch到Isolation Cell,手把手教你搞定低功耗设计
  • 做题记录(Apr.)
  • WPF Customize behavior and dependency property command
  • 2026年喷淋塔除尘器制造商推荐分析,静电除尘器/活性炭吸附/干式打磨台/水帘除尘器,喷淋塔除尘器订制厂家哪家好 - 品牌推荐师
  • ScanNet数据集深度解析:如何利用segs.json和aggregation.json实现点云语义分割
  • AGX Orin 部署PyTorch生态:从JetPack适配到torchvision编译避坑指南
  • VASP机器学习力场训练避坑指南:从500步MD失败到高质量声子谱验证
  • 2025届学术党必备的五大降AI率工具横评
  • 零代码玩转扣子(Coze)智能体:3步生成专属视频教程
  • CF1762D GCD Queries - Rye
  • 【网络安全实战入门】从零到一:在VMware上部署Kali Linux 2022全流程解析
  • 计算机毕业设计:Python地铁运营全维度数据可视化与后台管理系统 Django框架 数据分析 可视化 大数据 机器学习 深度学习(建议收藏)✅
  • OpenClaw、Agent、Skill、MCP 深度解读与区分分析
  • 第三期漫画周报
  • 实验二 C语言分支与循环基础应用编程
  • 2026年花洒产品推荐:花洒哪个品牌好?4款热门花洒排行榜
  • Linux下WRF-Chem Intel编译器实战:从环境配置到编译成功的避坑指南
  • 高效使用Ultimaker Cura:从入门到精通的3D打印切片工作流
  • 非华为电脑也能用上鸿蒙生态?手把手教你给Win10/Win11装上最新华为电脑管家(附移动应用引擎开启方法)
  • 告别printk:用Linux内核Tracepoint给你的驱动调试换个活法(附ext4实战代码)