BCVP.VUE3系列第十四课(3):快速对接业务之编辑删除模板

艺帆风顺 发布于 2025-04-03 28 次阅读


BCVP 开发者社区出品BCVP V3开发数字化服务化绿色化

周末学习不停歇,最近新开一个VUE3全新系列,这一系列会从0开始学习VUE3,使用Vite、TS、Pinia、Element-Plus、mittBus等新知识点,既是查漏补缺,也是知识分享。

目前项目的登录、鉴权、动态菜单、权限按钮、页面布局、标签页、数据增删改查案例等基本功能都已经写完,整体效果如动图,欢迎各位小伙伴可以加入到这个项目,可以提交PR,早期参与贡献的,可以作为核心成员。

代码地址:

https://github.com/anjoy8/bcvp.vue3.git

这是每篇文章一节课一个分支,方便大家学习,系列文章:

第一课:项目初始化与核心知识点说明

第二课:基于泛型基类封装Axios请求

第三课:封装Axios拦截器

第四课:登录页设计

第五课:获取用户信息

第六课:获取动态菜单接口

第七课:基于布局模式实现动态菜单渲染

第八课:丰富面包屑组件

第九课:实现tabs标签栏

第十课:个人中心模块

第十一课:基于总线实现框架多种布局样式

第十二课:渲染动态权限按钮

第十三课:框架底座已写完,欢迎加入我们!

0、本文介绍

本文参考的是开源项目

https://gitee.com/HalseySpicy/Geeker-Admin/tree/template

今天主要是帮助使用本框架的同学可以快速的基于底座进行设计业务逻辑,基于现有的模板,按照统一约定好的规则,直接对关键字进行查找替换即可,本文接着说增删改查之——编辑,顺便很简单的删除:

1、API接口模块

脚本已经是上一篇查询页面中设计好,就需要补充编辑内容即可

参考srcapimoduleApi.ts

    // 编辑业务数据export const editModule = async (params: Module): Promisestring>> => { try { const response = await putstring>>('/api/module/put', params); return response; } catch (error) { throw new Error('请求失败'); }

    2、function事件模块

    事件页面在上篇也新增好了,继续补充新增模块的相关内容。

    srcviewsPermissionmoduleFunctions.ts文件中

      import { getModuleListApi, addModule, editModule } from '@/api/moduleApi'; // 接口
      // ↓↓↓↓↓ 编辑 ↓↓↓↓↓export const editForm = reactive({ IsDeleted: false, // 默认为false表示未删除 Name: "", LinkUrl: "", Area: null, // 可以根据需要初始化为null或其它值 Controller: null, Action: null, Icon: null, Code: null, OrderSort: 0, // 根据你的需求初始化数值 Description: null, IsMenu: false, // 根据需求设置默认值 Enabled: true, // 例如设置为true以允许功能 CreateId: "", CreateBy: "", CreateTime: "", ModifyId: null, ModifyBy: null, ModifyTime: "", ParentId: "", // 初始化为合适的字符串,可能是"0"或"根" Id: ""});export const handleEdit = async () => { if (!(currentRow.value && currentRow.value?.Id)) { ElMessage.error('请选择要编辑的一行数据!'); return; }
      editFormVisible.value = true; editLoading.value = true; if (currentRow.value) { Object.assign(editForm, currentRow.value); } editLoading.value = false; isResouceShow.value++;};export const editSubmit = async () => { const formEl = editFormRef.value; // 获取表单实例 if (!formEl) return;
      await formEl.validate(async (isValid) => { if (isValid) { ElMessageBox.confirm("确认提交吗?", "温馨提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }).then(async () => { const postData = toRaw(editForm); postData.ModifyTime = formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"); console.log(postData); const { success, msg } = await editModule(postData); if (success) { ElMessage.success('提交成功'); await handleQuery({ name: '' }); } else { ElMessage.error('提交失败' + msg); } });
      editFormVisible.value = false;
      } else { ElMessage.error('验证失败,请检查输入项'); } });};
      // ↑↑↑↑↑ 编辑 ↑↑↑↑↑

      3、Vue业务页面模块

      还是继续基于原有页面进行补充。

      页面srcviewsPermissionModule.vue

          el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false"> el-form :model="editForm" label-width="80px" :rules="addFormRules" ref="editFormRef"> el-form-item label="接口地址" prop="LinkUrl"> el-input v-model="editForm.LinkUrl" auto-complete="off">el-input> el-form-item> el-form-item label="接口描述" prop="Name"> el-input v-model="editForm.Name" auto-complete="off">el-input> el-form-item> el-form-item label="状态" prop="Enabled"> el-select v-model="editForm.Enabled" placeholder="请选择状态"> el-option label="激活" :value="true">el-option> el-option label="禁用" :value="false">el-option> el-select> el-form-item> el-form> div slot="footer" class="dialog-footer"> el-button @click.native="editFormVisible = false">取消el-button> el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交el-button> div> el-dialog>

        整体还是比较简单的,得益于我们比较规整的封装,只需要绑定上对应的form表单就行了。

        打完收工:

        当然,删除更是简单,定一个接口调用,写个function即可,具体的可以看看代码,就能立刻明白了。