第10节 入库管理-查询-保存

采购入库模块

通过接口编写SQL语句完成主子表的创建、绑定以及关于子表信息的动态查询

主表的保存

(1)新增页面(采购入库)
image.png
(2)组件(父子表格)——数据表选择(主表:wms_stock_in)
image.png
(3)点击编辑进入主表编辑信息界面,在里面添加子表(子表:wms_stock_detail)
步骤如下图:
image.png
(4)绑定主子表
点击子表的空白处,新增参数,将主表的主键和子表绑定:stockInId=scope.row.id
image.png

子表的保存和查询设置

(1)进入自定义数据源为其目录(名称:入库
image.png
image.png
(2)在入库目录下新增请求(名称:批量保存入库明细;路径:/save-stock1), 点击保存按钮后编写js代码,编写完后点击保存并复制全路径
//主表的保存功能
var id = body.id; //表示表单中的主表主键
if(!id){
var sql =<br /> INSERT INTO mes.wms_stock_in(id,contract_id,remark,stock_in_code,stock_date,stock_in_num,warehouse_id)<br /> VALUES (#{id},#{contractId},#{remark},#{stockInCode},#{stockDate},#{stockInNum},#{warehouseId})<br />
body.id = MC.uuid();
db.insert(sql,body);
}else{
var sql = <br /> update mes.wms_stock_in<br />set contract_id=#{contractId},remark=#{remark},stock_in_code=#{stockInCode},stock_date=#{stockDate},stock_in_num=#{stockInNum},warehouse_id=#{warehouseId}<br /> where id=#{id} <br />
db.update(sql); //这边没有写,body是,因为API中默认已经将body的数据自动进行匹配
}
var list = body.list;
var insertDetailSql = <br />insert into mes.wms_stock_detail(id,product_id,remark,stock_in_id,purchase_num,purchase_price) VALUES(#{id},#{productId},#{remark},#{stockInId},#{purchaseNum},#{purchasePrice})<br /> //插入子表
var updateDetailSql = update mes.wms_stock_detail set product_id=# {productId},remark=#{remark},stock_in_id=#{stockInId},purchase_num=#{purchaseNum},purchase_price=#{purchasePrice} where id=#{id}<br /> //根据ID来设置参数,更新数据
for(var i=0;i var item =list[i];
item.stockInId = body.id;
if(item.id){ //如果子表ID存在就更新
db.update(updateDetailSql,item);
}else{ //如果子表ID不存在就插入
item.id = MC.uuid(); //创建主键
db.insert(insertDetailSql,item);
}
}
回到采购入库页面,将主表的保存地址替换为批量保存入库明细的全地址
image.png
(2)在入库目录下新增请求(名称:查询入库明细(主子表);路径:/store-detail-page1
点击保存后编写js代码,编写完成后点击保存,将全路径复制到子表的查询地址
var stockInId = body.param.stockInId;
if(!stockInId){
return[]; //如果主键一般都存在,若不存在则返回空
}
var sql = <br /> SELECT p.product_name productName,p.spec_code specCode,ps.type_name typeName,uc.unit_code unitCode,0 as currentAdd,p.count as storeCount,sd.id,sd.purchase_num as purchaseNum,sd.purchase_price as purchasePrice,sd.remark,sd.product_id productId<br /> FROM mes.wms_stock_detail sd<br /> LEFT JOIN mes.wms_product p on sd.product_id = p.id<br /> LEFT JOIN mes.wms_product_class ps on p.product_class_id=ps.id<br /> LEFT JOIN mes.wms_unit_code uc on p.unit_code_id=uc.id<br /> where sd.stock_in_id=#{stockInId}<br />
return db.pager(sql,{stockInId:stockInId})
image.png
运行后可以看到主子表的信息都显示出来了
image.png
(3)实时更新子表的字段信息
image.png
image.png
实现根据产品编码(主键)来实时更新产品信息功能
image.png
image.png
if(data){
scopeRow.productName = data.productName;
scopeRow.typeName = data.typeName;
scopeRow.specCode = data.specCode;
scopeRow.unitCode = data.unitCode;
scopeRow.storeCount = data.storeCount;
}
image.png
scope.vue.apiAddRow({data:{storeCount:””,productName:’’,typeName:’’,specCode:’’,unitCode:’’}})