前端开发BOM管理页面
实现效果:
1.点击新建、编辑按钮根据是否传递id值区分路由跳转到图2/图3,编辑BOM表单回显原有数据。
2.引入选择物料组件,保存数据。
图1-BOM表单
图2-新建BOM表单
图3-编辑BOM表单
图4-选择物料组件
一,基于Ant-Design-Vue的Grid 栅格页面布局
概述:
Grid栅格是基于行(Row)和列(Col)两个组件相互配合来定义信息区块的外部框架,以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理。
使用:
使用`row`来建立水一行,平方向每行可平均可分成24份。
使用`col`来建立垂直方向一列,在`row`中使用,并且可用span、gutter配置分栅格和间距。
示例:
二,自定义表单Table
第一步创建表格:
1.#bodyCell是创建的插槽名称,标签内放自己想展示的内容,可以放按钮,图片,任何你想放的元素(#是创建插槽,bodyCell是自己定义的插槽名称)。
2.:columns列,描述数据对象。
3.record是固定写法,以后获取行信息用。
第二步引用数据:
1.在column上绑定数据。
示例:
三,引入组件
第一步引入组件。
import ItemTableSelectModal from "/@/components/business/mes/item/item-table-select-modal/index.vue"
第二步子组件暴露属性/方法。
defineExpose放在<scipt setup>下使用的,目的是把属性和方法暴露出去,可以用于父子组件通信,子组件把属性暴露出去, 父组件用ref获取子组件DOM,子组件暴露的方法或属性可以用dom获取。
第三步父组件ref获取子组件DOM。
<item-table-select-modal ref="itemModal" @select-data="selectItemData" />
四,提交【注意事项】
前端表单提交处理函数,通过异步API调用与后端交互时。注意必须确保所有发送到后端的数据类型与API文档中定义的类型严格匹配。
// ----------------- 提交按钮-----------------
const onSubmit = async() => {
console.log("提交");
form.bomDetailList = dataSource.value;
//修改数据类型为整形
form.itemId = parseInt(form.itemId);
form.itemTypeId = parseInt(form.itemTypeId);
form.itemUnitId = parseInt(form.itemUnitId);
form.bomDetailList.forEach(item => {
item.itemId = parseInt(item.itemId);
item.itemTypeId = parseInt(item.itemTypeId);
item.itemUnitId = parseInt(item.itemUnitId);
});
console.log("提交的form", form);
if(id){
loading.value = true;
try{
await bomApi.update(form)
message.success("编辑成功");
// 路由跳转回页面
router.push({
path: '/mes/bom/list',
});
}catch(err){
smartSentry.captureError(err)
message.error("编辑失败");
}finally{
loading.value = false;
}
}else{
try {
loading.value = true;
await bomApi.add(form)
message.success("添加成功");
//路由跳转回页面
router.push({
path: '/mes/bom/list',
});
} catch (err) {
smartSentry.captureError(err)
message.error("添加失败");
} finally {
loading.value = false;
}
}
};
五,现存问题
编辑功能的物料选择模态框可正常使用,新建功能显示没有定义。
前端开发BOM管理页面
http://localhost:8090//archives/qian-duan-kai-fa-bomguan-li-ye-mian