拆分单完成

This commit is contained in:
weizhiqiang 2019-10-20 21:51:37 +08:00
parent 82874d15c8
commit 8722a0816b
26 changed files with 1873 additions and 14 deletions

View file

@ -0,0 +1,71 @@
package com.skyeye.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.service.SplitListService;
/**
* @Author 卫志强
* @Description 拆分单
* @Date 2019/10/16 15:32
*/
@Controller
public class SplitListController {
@Autowired
private SplitListService splitListService;
/**
* 获取拆分单列表信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/SplitListController/querySplitListToList")
@ResponseBody
public void querySplitListToList(InputObject inputObject, OutputObject outputObject) throws Exception{
splitListService.querySplitListToList(inputObject, outputObject);
}
/**
* 新增拆分单信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/SplitListController/insertSplitListMation")
@ResponseBody
public void insertSplitListMation(InputObject inputObject, OutputObject outputObject) throws Exception{
splitListService.insertSplitListMation(inputObject, outputObject);
}
/**
* 编辑拆分单信息时进行回显
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/SplitListController/querySplitListMationToEditById")
@ResponseBody
public void querySplitListMationToEditById(InputObject inputObject, OutputObject outputObject) throws Exception{
splitListService.querySplitListMationToEditById(inputObject, outputObject);
}
/**
* 编辑拆分单信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/SplitListController/editSplitListMationById")
@ResponseBody
public void editSplitListMationById(InputObject inputObject, OutputObject outputObject) throws Exception{
splitListService.editSplitListMationById(inputObject, outputObject);
}
}

View file

@ -0,0 +1,26 @@
package com.skyeye.dao;
import java.util.List;
import java.util.Map;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
public interface SplitListDao {
public List<Map<String, Object>> querySplitListToList(Map<String, Object> params, PageBounds pageBounds) throws Exception;
public Map<String, Object> queryMaterialsById(Map<String, Object> bean) throws Exception;
public int insertSplitListMation(Map<String, Object> depothead) throws Exception;
public int insertSplitListChildMation(List<Map<String, Object>> entitys) throws Exception;
public Map<String, Object> querySplitListMationToEditById(Map<String, Object> map) throws Exception;
public List<Map<String, Object>> querySplitListItemMationToEditById(Map<String, Object> bean) throws Exception;
public int deleteSplitListChildMation(Map<String, Object> bean) throws Exception;
public int editSplitListMationById(Map<String, Object> depothead) throws Exception;
}

View file

@ -30,7 +30,13 @@ public class ErpConstants {
//采购单
PURCHASE_ORDER("采购订单", "CGDD", "10"),
//销售单
OUTCHASE_ORDER("销售订单", "XSDD", "11");
OUTCHASE_ORDER("销售订单", "XSDD", "11"),
//拆分单
SPLIT_LIST_ORDER("拆分订单", "CFDD", "12"),
//组装单
ASSEMBLY_SHEET_ORDER("组装订单", "ZZDD", "13"),
//调拨单
ALLOCATION_FORM_ORDER("调拨订单", "DBDD", "14");
private String nameCode;
private String code;

View file

@ -0,0 +1,16 @@
package com.skyeye.service;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
public interface SplitListService {
public void querySplitListToList(InputObject inputObject, OutputObject outputObject) throws Exception;
public void insertSplitListMation(InputObject inputObject, OutputObject outputObject) throws Exception;
public void querySplitListMationToEditById(InputObject inputObject, OutputObject outputObject) throws Exception;
public void editSplitListMationById(InputObject inputObject, OutputObject outputObject) throws Exception;
}

View file

@ -98,7 +98,7 @@ public class OtherOutLetsServiceImpl implements OtherOutLetsService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 1);//类型(1.出库/2.入库)
depothead.put("type", 1);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUT_IS_OTHERS.getNum());//其他出库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUT_IS_OTHERS.getNum());

View file

@ -98,7 +98,7 @@ public class OtherWareHousServiceImpl implements OtherWareHousService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PUT_IS_OTHERS.getNum());//其他入库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PUT_IS_OTHERS.getNum());

View file

@ -98,7 +98,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PURCHASE_ORDER.getNum());//采购单
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PURCHASE_ORDER.getNum());
@ -399,7 +399,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PUT_IS_PURCHASE.getNum());//采购入库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PUT_IS_PURCHASE.getNum());

View file

@ -108,7 +108,7 @@ public class PurchasePutServiceImpl implements PurchasePutService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PUT_IS_PURCHASE.getNum());//采购入库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PUT_IS_PURCHASE.getNum());

View file

@ -108,7 +108,7 @@ public class PurchaseReturnsServiceImpl implements PurchaseReturnsService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 1);//类型(1.出库/2.入库)
depothead.put("type", 1);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUT_IS_PURCHASE_RETURNS.getNum());//采购退货
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUT_IS_PURCHASE_RETURNS.getNum());

View file

@ -98,7 +98,7 @@ public class RetailOutLetServiceImpl implements RetailOutLetService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 1);//类型(1.出库/2.入库)
depothead.put("type", 1);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUT_IS_RETAIL.getNum());//零售出库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUT_IS_RETAIL.getNum());

View file

@ -98,7 +98,7 @@ public class RetailReturnsServiceImpl implements RetailReturnsService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PUT_IS_RETAIL_RETURNS.getNum());//零售退货
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PUT_IS_RETAIL_RETURNS.getNum());

View file

@ -98,7 +98,7 @@ public class SalesOrderServiceImpl implements SalesOrderService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 1);//类型(1.出库/2.入库)
depothead.put("type", 1);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUTCHASE_ORDER.getNum());//销售单
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUTCHASE_ORDER.getNum());
@ -399,7 +399,7 @@ public class SalesOrderServiceImpl implements SalesOrderService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUT_IS_SALES_OUTLET.getNum());//销售出库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUT_IS_SALES_OUTLET.getNum());

View file

@ -108,7 +108,7 @@ public class SalesOutLetServiceImpl implements SalesOutLetService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 1);//类型(1.出库/2.入库)
depothead.put("type", 1);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.OUT_IS_SALES_OUTLET.getNum());//销售出库
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.OUT_IS_SALES_OUTLET.getNum());

View file

@ -108,7 +108,7 @@ public class SalesReturnsServiceImpl implements SalesReturnsService{
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 2);//类型(1.出库/2.入库)
depothead.put("type", 2);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.PUT_IS_SALES_RETURNS.getNum());//销售退货
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.PUT_IS_SALES_RETURNS.getNum());

View file

@ -0,0 +1,220 @@
package com.skyeye.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.common.util.ToolUtil;
import com.skyeye.dao.SplitListDao;
import com.skyeye.erp.util.ErpConstants;
import com.skyeye.erp.util.ErpOrderNum;
import com.skyeye.service.SplitListService;
import net.sf.json.JSONArray;
@Service
public class SplitListServiceImpl implements SplitListService{
@Autowired
private SplitListDao splitListDao;
/**
* 获取拆分单列表信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@Override
public void querySplitListToList(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> params = inputObject.getParams();
params.put("userId", inputObject.getLogParams().get("id"));
List<Map<String, Object>> beans = splitListDao.querySplitListToList(params,
new PageBounds(Integer.parseInt(params.get("page").toString()), Integer.parseInt(params.get("limit").toString())));
PageList<Map<String, Object>> beansPageList = (PageList<Map<String, Object>>)beans;
int total = beansPageList.getPaginator().getTotalCount();
outputObject.setBeans(beans);
outputObject.settotal(total);
}
/**
* 新增拆分单信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@SuppressWarnings("unchecked")
@Override
@Transactional(value="transactionManager")
public void insertSplitListMation(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
String depotheadStr = map.get("depotheadStr").toString();//拆分单产品列表
if(ToolUtil.isJson(depotheadStr)){
String useId = ToolUtil.getSurFaceId();//单据主表id
String userId = inputObject.getLogParams().get("id").toString();
//处理数据
JSONArray jArray = JSONArray.fromObject(depotheadStr);
//产品中间转换对象单据子表存储对象
Map<String, Object> bean, entity;
List<Map<String, Object>> entitys = new ArrayList<>();//单据子表实体集合信息
BigDecimal allPrice = new BigDecimal("0");//主单总价
BigDecimal itemAllPrice = null;//子单对象
for(int i = 0; i < jArray.size(); i++){
bean = jArray.getJSONObject(i);
entity = splitListDao.queryMaterialsById(bean);
if(entity != null && !entity.isEmpty()){
//获取单价
itemAllPrice = new BigDecimal(bean.get("estimatePurchasePrice").toString());
entity.put("id", ToolUtil.getSurFaceId());
entity.put("headerId", useId);//单据主表id
entity.put("operNumber", bean.get("rkNum"));//数量
//计算子单总价单价*数量
itemAllPrice = itemAllPrice.multiply(new BigDecimal(bean.get("rkNum").toString()));
entity.put("allPrice", itemAllPrice);//单据子表总价
entity.put("estimatePurchasePrice", bean.get("estimatePurchasePrice"));//单价
entity.put("remark", bean.get("remark"));//备注
entity.put("depotId", bean.get("depotId"));//仓库
if("1".equals(bean.get("materialType").toString())){
entity.put("mType", 1);//商品类型 0.普通 1.组合件 2.普通子件
}else{
entity.put("mType", 2);//商品类型 0.普通 1.组合件 2.普通子件
}
entity.put("userId", userId);
entity.put("deleteFlag", 0);//删除标记0未删除1删除
entitys.add(entity);
//计算主单总价
allPrice = allPrice.add(itemAllPrice);
}
}
if(entitys.size() == 0){
outputObject.setreturnMessage("请选择产品");
return;
}
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("type", 3);//类型(1.出库/2.入库3.其他)
depothead.put("subType", ErpConstants.DepoTheadSubType.SPLIT_LIST_ORDER.getNum());//拆分单
ErpOrderNum erpOrderNum = new ErpOrderNum();
String orderNum = erpOrderNum.getOrderNumBySubType(userId, ErpConstants.DepoTheadSubType.SPLIT_LIST_ORDER.getNum());
depothead.put("defaultNumber", orderNum);//初始票据号
depothead.put("number", orderNum);//票据号
depothead.put("operPersonId", userId);//操作员id
depothead.put("operPersonName", inputObject.getLogParams().get("userName"));//操作员名字
depothead.put("createTime", ToolUtil.getTimeAndToString());//创建时间
depothead.put("operTime", map.get("operTime"));//拆分单时间即单据日期
depothead.put("remark", map.get("remark"));//备注
depothead.put("totalPrice", allPrice);//合计金额
depothead.put("status", "2");//状态0未审核1.审核中2.审核通过3.审核拒绝4.已转采购|销售
depothead.put("userId", userId);
depothead.put("deleteFlag", 0);//删除标记0未删除1删除
splitListDao.insertSplitListMation(depothead);
splitListDao.insertSplitListChildMation(entitys);
}else{
outputObject.setreturnMessage("数据格式错误");
}
}
/**
* 编辑拆分单信息时进行回显
* @param inputObject
* @param outputObject
* @throws Exception
*/
@Override
public void querySplitListMationToEditById(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
map.put("userId", inputObject.getLogParams().get("id"));
//获取主表信息
Map<String, Object> bean = splitListDao.querySplitListMationToEditById(map);
if(bean != null && !bean.isEmpty()){
//获取子表信息
List<Map<String, Object>> norms = splitListDao.querySplitListItemMationToEditById(bean);
bean.put("items", norms);
outputObject.setBean(bean);
outputObject.settotal(1);
}else{
outputObject.setreturnMessage("该数据已不存在.");
}
}
/**
* 编辑拆分单信息
* @param inputObject
* @param outputObject
* @throws Exception
*/
@SuppressWarnings("unchecked")
@Override
@Transactional(value="transactionManager")
public void editSplitListMationById(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
String depotheadStr = map.get("depotheadStr").toString();//拆分单产品列表
if(ToolUtil.isJson(depotheadStr)){
String useId = map.get("id").toString();//单据主表id
String userId = inputObject.getLogParams().get("id").toString();
//处理数据
JSONArray jArray = JSONArray.fromObject(depotheadStr);
//产品中间转换对象单据子表存储对象
Map<String, Object> bean, entity;
List<Map<String, Object>> entitys = new ArrayList<>();//单据子表实体集合信息
BigDecimal allPrice = new BigDecimal("0");//主单总价
BigDecimal itemAllPrice = null;//子单对象
for(int i = 0; i < jArray.size(); i++){
bean = jArray.getJSONObject(i);
entity = splitListDao.queryMaterialsById(bean);
if(entity != null && !entity.isEmpty()){
//获取单价
itemAllPrice = new BigDecimal(bean.get("estimatePurchasePrice").toString());
entity.put("id", ToolUtil.getSurFaceId());
entity.put("headerId", useId);//单据主表id
entity.put("operNumber", bean.get("rkNum"));//数量
//计算子单总价单价*数量
itemAllPrice = itemAllPrice.multiply(new BigDecimal(bean.get("rkNum").toString()));
entity.put("allPrice", itemAllPrice);//单据子表总价
entity.put("estimatePurchasePrice", bean.get("estimatePurchasePrice"));//单价
entity.put("remark", bean.get("remark"));//备注
entity.put("depotId", bean.get("depotId"));//仓库
if("1".equals(bean.get("materialType").toString())){
entity.put("mType", 1);//商品类型 0.普通 1.组合件 2.普通子件
}else{
entity.put("mType", 2);//商品类型 0.普通 1.组合件 2.普通子件
}
entity.put("userId", userId);
entity.put("deleteFlag", 0);//删除标记0未删除1删除
entitys.add(entity);
//计算主单总价
allPrice = allPrice.add(itemAllPrice);
}
}
if(entitys.size() == 0){
outputObject.setreturnMessage("请选择产品");
return;
}
//单据主表对象
Map<String, Object> depothead = new HashMap<>();
depothead.put("id", useId);
depothead.put("operTime", map.get("operTime"));//拆分单时间即单据日期
depothead.put("remark", map.get("remark"));//备注
depothead.put("totalPrice", allPrice);//合计金额
depothead.put("userId", userId);
//删除之前绑定的产品
splitListDao.deleteSplitListChildMation(map);
//重新添加
splitListDao.editSplitListMationById(depothead);
splitListDao.insertSplitListChildMation(entitys);
}else{
outputObject.setreturnMessage("数据格式错误");
}
}
}

View file

@ -51,7 +51,8 @@
FORMAT(a.tax_unit_price, 2) taxUnitPrice,
FORMAT(a.tax_rate, 2) taxRate,
FORMAT(a.tax_money, 2) taxMoney,
FORMAT(a.tax_last_money, 2) taxLastMoney
FORMAT(a.tax_last_money, 2) taxLastMoney,
CASE a.m_type WHEN 0 THEN '普通' WHEN 1 THEN '组合件' WHEN 2 THEN '普通子件' ELSE '' END mTypeName
FROM
erp_depotitem a
LEFT JOIN erp_depot b ON a.depot_id = b.id,
@ -63,6 +64,7 @@
AND a.delete_flag = '0'
AND a.material_id = c.id
AND a.m_unit_id = d.id
ORDER BY a.m_type ASC
</select>
<select id="queryOddNumberBySubType" parameterType="java.util.Map" resultType="java.util.Map">

View file

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.skyeye.dao.SplitListDao">
<select id="querySplitListToList" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id,
a.default_number defaultNumber,
CONVERT (a.oper_time, char) operTime,
a.oper_person_name operPersonName,
b.supplier supplierName,
FORMAT(a.total_price, 2) totalPrice,
a.status,
GROUP_CONCAT(DISTINCT CONCAT(c.material_name, c.material_model) SEPARATOR ',') materialNames,
a.link_number linkNumber,
FORMAT(a.change_amount, 2) changeAmount
FROM
erp_depothead a
LEFT JOIN erp_supplier b ON a.organ_id = b.id
LEFT JOIN erp_depotitem c ON c.header_id = a.id
WHERE
a.sub_type = '12'
AND a.tenant_id = #{userId}
AND a.delete_flag = '0'
<if test="material != '' and material != null">
AND c.material_name LIKE '%${material}%'
</if>
<if test="defaultNumber != '' and defaultNumber != null">
AND a.default_number LIKE '%${defaultNumber}%'
</if>
<if test="startTime != '' and startTime != null and endTime != '' and endTime != null">
AND a.oper_time >= #{startTime} AND #{endTime} >= a.oper_time
</if>
GROUP BY a.id
ORDER BY a.create_time DESC
</select>
<select id="queryMaterialsById" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id materialId,
a.`name` materialName,
a.model materialModel,
b.id mUnitId,
IFNULL(c.`name`, a.unit_name) unitName,
IFNULL(c.number, '1') baseNumber,
#{depotId} depotId
FROM
erp_material a,
erp_material_norms b
LEFT JOIN erp_unit c ON b.unit_id = c.id
WHERE
a.id = b.meterial_id
AND b.id = #{mUnitId}
AND a.id = b.meterial_id
AND a.delete_flag = '0'
AND b.delete_flag = '0'
</select>
<insert id="insertSplitListMation" parameterType="java.util.Map">
INSERT into erp_depothead
(id, `type`, sub_type, default_number, number, oper_person_id, oper_person_name, create_time, oper_time, organ_id, account_id, total_price,
pay_type, remark, status, tenant_id, delete_flag)
VALUES(#{id}, #{type}, #{subType}, #{defaultNumber}, #{number}, #{operPersonId}, #{operPersonName}, #{createTime}, #{operTime}, #{organId}, #{accountId}, #{totalPrice},
'1', #{remark}, #{status}, #{userId}, #{deleteFlag})
</insert>
<insert id="insertSplitListChildMation" parameterType="java.util.Map">
INSERT INTO erp_depotitem
(id, header_id, material_id, material_name, material_model, m_unit_id, oper_number, basic_number, unit_price, all_price, remark, depot_id,
m_type, tenant_id, delete_flag)
values
<foreach collection="list" item="item" index="index" separator="," >
(#{item.id}, #{item.headerId}, #{item.materialId}, #{item.materialName}, #{item.materialModel}, #{item.mUnitId}, #{item.operNumber}, #{item.baseNumber}, #{item.estimatePurchasePrice}, #{item.allPrice}, #{item.remark}, #{item.depotId},
#{item.mType}, #{item.userId}, #{item.deleteFlag})
</foreach>
</insert>
<select id="querySplitListMationToEditById" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id,
a.default_number defaultNumber,
CONVERT (a.oper_time, CHAR) operTime,
a.organ_id organId,
a.account_id accountId,
CONVERT(a.total_price, decimal(24, 2)) totalPrice,
a.pay_type payType,
a.remark,
CONVERT(a.change_amount, decimal(24, 2)) changeAmount,
a.link_number linkNumber,
a.give_change giveChange
FROM
erp_depothead a
WHERE a.id = #{id}
AND a.tenant_id = #{userId}
AND a.delete_flag = '0'
AND a.sub_type = '12'
</select>
<select id="querySplitListItemMationToEditById" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id,
a.material_id materialId,
a.oper_number operNumber,
a.m_unit_id mUnitId,
CONVERT(a.unit_price, decimal(24, 2)) unitPrice,
CONVERT(a.all_price, decimal(24, 2)) allPrice,
a.remark,
a.depot_id depotId,
IFNULL(SUM(b.oper_number * (CASE c.sub_type
WHEN 10 THEN 0
WHEN 11 THEN 0
ELSE CASE c.type WHEN 2 THEN 1 ELSE -1 END
END)), 0) currentTock,
a.m_type mType
FROM
erp_depotitem a
LEFT JOIN erp_depotitem b ON b.depot_id = a.depot_id AND b.m_unit_id = a.m_unit_id AND b.header_id != a.header_id
LEFT JOIN erp_depothead c ON c.id = b.header_id
WHERE
a.header_id = #{id}
AND a.delete_flag = '0'
GROUP BY a.id
ORDER BY a.m_type ASC
</select>
<delete id="deleteSplitListChildMation" parameterType="java.util.Map">
DELETE
FROM
erp_depotitem
WHERE
header_id = #{id}
</delete>
<update id="editSplitListMationById" parameterType="java.util.Map">
UPDATE erp_depothead
<set>
<if test="operTime != '' and operTime != null">
oper_time = #{operTime},
</if>
<if test="organId != '' and organId != null">
organ_id = #{organId},
</if>
account_id = #{accountId},
remark = #{remark},
<if test="payType != '' and payType != null">
pay_type = #{payType},
</if>
<if test="totalPrice != '' and totalPrice != null">
total_price = #{totalPrice},
</if>
change_amount = #{changeAmount},
give_change = #{giveChange},
</set>
WHERE id = #{id}
AND tenant_id = #{userId}
AND sub_type = '12'
</update>
</mapper>

View file

@ -560,6 +560,31 @@
</url>
<!-- 零售管理结束 -->
<!-- 拆分单开始 -->
<url id="splitlist001" path="/post/SplitListController/querySplitListToList" val="获取拆分单列表信息" allUse="2">
<property id="defaultNumber" name="defaultNumber" ref="" var="票据单号" />
<property id="material" name="material" ref="" var="产品信息:名称或者型号" />
<property id="startTime" name="startTime" ref="" var="单据开始时间"/>
<property id="endTime" name="endTime" ref="" var="单据结束时间"/>
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
</url>
<url id="splitlist002" path="/post/SplitListController/insertSplitListMation" val="新增拆分单信息" allUse="2">
<property id="operTime" name="operTime" ref="required" var="单据日期" />
<property id="remark" name="remark" ref="" var="备注" />
<property id="depotheadStr" name="depotheadStr" ref="required" var="产品列表" />
</url>
<url id="splitlist003" path="/post/SplitListController/querySplitListMationToEditById" val="编辑拆分单信息时进行回显" allUse="2">
<property id="rowId" name="id" ref="required" var="拆分单id" />
</url>
<url id="splitlist004" path="/post/SplitListController/editSplitListMationById" val="编辑拆分单信息" allUse="2">
<property id="operTime" name="operTime" ref="required" var="单据日期" />
<property id="remark" name="remark" ref="" var="备注" />
<property id="depotheadStr" name="depotheadStr" ref="required" var="产品列表" />
<property id="rowId" name="id" ref="required" var="拆分单id" />
</url>
<!-- 拆分单结束 -->
<!-- 统计开始 -->
<url id="statistics001" path="/post/StatisticsController/queryWarehousingDetails" val="入库明细" allUse="1">
<property id="materialName" name="materialName" ref="" var="产品名称" />

View file

@ -0,0 +1,383 @@
var material = new Array(); //产品集合
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'jquery', 'winui', 'laydate'], function(exports) {
winui.renderColor();
layui.use(['form'], function(form) {
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
var $ = layui.$,
laydate = layui.laydate;
var enclosureInfo = ""; //附件id
var rowNum = 1; //表格的序号
var depotHtml = "", materialHtml = "";//仓库
var tockObject = new Array();//根据仓库和规格id查询出来的对应库存信息
var usetableTemplate = $("#usetableTemplate").html();
var selOption = getFileContent('tpl/template/select-option.tpl');
//单据时间
laydate.render({
elem: '#operTime',
type: 'datetime',
value: getFormatDate(),
trigger: 'click'
});
initDepotHtml();
//初始化仓库
function initDepotHtml() {
AjaxPostUtil.request({url: reqBasePath + "storehouse008", params: {}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
//加载仓库数据
depotHtml = getDataUseHandlebars(selOption, json);
//初始化产品
initMaterialHtml();
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
//初始化产品
function initMaterialHtml() {
AjaxPostUtil.request({url: reqBasePath + "material010", params: {}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
material = json.rows;
//加载产品数据
materialHtml = getDataUseHandlebars(selOption, json);
//渲染
form.render();
//初始化一行数据
addRow();
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
//仓库加载变化事件
form.on('select(selectDepotProperty)', function(data) {
var thisRowNum = data.elem.id.replace("depotId", "");//获取当前行
var thisRowValue = data.value;
loadTockByDepotAndMUnit(thisRowNum);
});
//产品加载变化事件
form.on('select(selectMaterialProperty)', function(data) {
var thisRowNum = data.elem.id.replace("materialId", "");//获取当前行
var thisRowValue = data.value;
if(!isNull(thisRowValue) && thisRowValue != '请选择') {
$.each(material, function(i, item) {
if(thisRowValue == item.id){
$("#unitId" + thisRowNum).html(getDataUseHandlebars(selOption, {rows: item.unitList}));
var rkNum = parseInt($("#rkNum" + thisRowNum).val());
//设置默认选中
if(item.unit == 2){//多单位
$.each(item.unitList, function(j, bean) {
if(item.firstInUnit == bean.unitId){
$("#unitId" + thisRowNum).val(bean.id);
$("#unitPrice" + thisRowNum).val(bean.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(bean.retailPrice)).toFixed(2));//金额
return false;
}
});
}else{//不是多单位
var firstItem = item.unitList[0];
$("#unitId" + thisRowNum).val(firstItem.id);
$("#unitPrice" + thisRowNum).val(firstItem.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(firstItem.retailPrice)).toFixed(2));//金额
}
form.render('select');
return false;
}
});
} else {
$("#unitId" + thisRowNum).html(""); //重置规格为空
form.render('select');
}
//加载库存
loadTockByDepotAndMUnit(thisRowNum);
//计算价格
calculatedTotalPrice();
});
//产品规格加载变化事件
form.on('select(selectUnitProperty)', function(data) {
var thisRowNum = data.elem.id.replace("unitId", "");//获取当前行
var thisRowValue = data.value;
//当前选中的产品id
var chooseMaterialId = $("#materialId" + thisRowNum).val();
if(!isNull(thisRowValue) && thisRowValue != '请选择') {
$.each(material, function(i, item) {
if(chooseMaterialId == item.id){//获取产品
$.each(item.unitList, function(j, bean) {
if(thisRowValue == bean.id){//获取规格
//获取当前行数量
var rkNum = parseInt($("#rkNum" + thisRowNum).val());
$("#unitPrice" + thisRowNum).val(bean.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(bean.retailPrice)).toFixed(2));//金额
return false;
}
});
return false;
}
});
} else {
$("#unitPrice" + thisRowNum).val("0.00");//重置单价为空
$("#amountOfMoney" + thisRowNum).val("0.00");//重置金额为空
}
//加载库存
loadTockByDepotAndMUnit(thisRowNum);
//计算价格
calculatedTotalPrice();
});
/**
* 根据仓库和规格加载库存
* @param rowNum 表格行坐标
*/
function loadTockByDepotAndMUnit(rowNum){
//获取当前选中的仓库
var chooseDepotId = $("#depotId" + rowNum).val();
//获取当前选中的规格
var chooseUnitId = $("#unitId" + rowNum).val();
//当两个都不为空时
if(!isNull(chooseDepotId) && !isNull(chooseUnitId)){
var inTockObject = -1;
$.each(tockObject, function(i, item){
if(item.depotId == chooseDepotId && item.unitId == chooseUnitId){
inTockObject = i;
$("#currentTock" + rowNum).html(item.currentTock);
return false;
}
});
//如果数组中不包含对应的库存
if(inTockObject < 0){
//获取库存
AjaxPostUtil.request({url: reqBasePath + "material011", params: {depotId: chooseDepotId, mUnitId: chooseUnitId}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
var currentTock = 0;
if(!isNull(json.bean)){
currentTock = json.bean.currentTock;
}
tockObject.push({
depotId: chooseDepotId,
unitId: chooseUnitId,
currentTock: currentTock
});
$("#currentTock" + rowNum).html(currentTock);
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
}else{
//否则重置库存为空
$("#currentTock" + rowNum).html("");
}
}
var showTdByEdit = 'rkNum';//根据那一列的值进行变化,默认根据数量
//数量变化
$("body").on("input", ".rkNum, .unitPrice, .amountOfMoney", function() {
if($(this).attr("class").replace("layui-input change-input ", "") != showTdByEdit){
showTdByEdit = $(this).attr("class").replace("layui-input change-input ", "");
$(".change-input").parent().removeAttr("style");
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
calculatedTotalPrice();
});
$("body").on("change", ".rkNum, .unitPrice, .amountOfMoney", function() {
if($(this).attr("class").replace("layui-input change-input ", "") != showTdByEdit){
showTdByEdit = $(this).attr("class").replace("layui-input change-input ", "");
$(".change-input").parent().removeAttr("style");
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
calculatedTotalPrice();
});
//计算总价
function calculatedTotalPrice(){
var rowTr = $("#useTable tr");
var allPrice = 0;
$.each(rowTr, function(i, item) {
//获取行坐标
var rowNum = $(item).attr("trcusid").replace("tr", "");
//获取数量
var rkNum = parseInt(isNull($("#rkNum" + rowNum).val()) ? "0" : $("#rkNum" + rowNum).val());
//获取单价
var unitPrice = parseFloat(isNull($("#unitPrice" + rowNum).val()) ? "0" : $("#unitPrice" + rowNum).val());
//获取单价
var amountOfMoney = parseFloat(isNull($("#amountOfMoney" + rowNum).val()) ? "0" : $("#amountOfMoney" + rowNum).val());
if("rkNum" === showTdByEdit){//数量
//输出金额
$("#amountOfMoney" + rowNum).val((rkNum * unitPrice).toFixed(2));
}else if("unitPrice" === showTdByEdit){//单价
//输出金额
$("#amountOfMoney" + rowNum).val((rkNum * unitPrice).toFixed(2));
}else if("amountOfMoney" === showTdByEdit){//金额
//输出单价
$("#unitPrice" + rowNum).val((amountOfMoney / rkNum).toFixed(2));
}
allPrice += parseFloat($("#amountOfMoney" + rowNum).val());
});
$("#allPrice").html(allPrice.toFixed(2));
}
form.on('submit(formAddBean)', function(data) {
//表单验证
if(winui.verifyForm(data.elem)) {
//获取已选用品数据
var rowTr = $("#useTable tr");
if(rowTr.length == 0) {
winui.window.msg('请选择产品.', {icon: 2, time: 2000});
return false;
}
var tableData = new Array();
var noError = false; //循环遍历表格数据时,是否有其他错误信息
var hasAssembly = false;//判断是否有组合件
$.each(rowTr, function(i, item) {
//获取行编号
var rowNum = $(item).attr("trcusid").replace("tr", "");
//商品类型
var materialTypeId = $("#materialTypeId" + rowNum).val();
if(parseInt($("#rkNum" + rowNum).val()) == 0) {
$("#rkNum" + rowNum).addClass("layui-form-danger");
$("#rkNum" + rowNum).focus();
winui.window.msg('数量不能为0', {icon: 2, time: 2000});
noError = true;
return false;
}
if(materialTypeId === "1"){
if(!hasAssembly){
//当前没有组合件
hasAssembly = true;
}else{
$("#materialTypeId" + rowNum).addClass("layui-form-danger");
$("#materialTypeId" + rowNum).focus();
winui.window.msg('拆分单中只能存在一个组合件.', {icon: 2, time: 2000});
noError = true;
return false;
}
if(parseInt($("#rkNum" + rowNum).val()) > parseInt($("#currentTock" + rowNum).html())){
$("#rkNum" + rowNum).addClass("layui-form-danger");
$("#rkNum" + rowNum).focus();
winui.window.msg('超过库存数量.', {icon: 2, time: 2000});
noError = true;
return false;
}
}
if(inTableDataArrayByAssetarId($("#materialId" + rowNum).val(), $("#depotId" + rowNum).val(), $("#unitId" + rowNum).val(), tableData)) {
$("#depotId" + rowNum).addClass("layui-form-danger");
$("#depotId" + rowNum).focus();
winui.window.msg('一张单中不允许出现相同当库的产品信息,且单位不能重复.', {icon: 2, time: 2000});
noError = true;
return false;
}
var row = {
depotId: $("#depotId" + rowNum).val(),
materialId: $("#materialId" + rowNum).val(),
mUnitId: $("#unitId" + rowNum).val(),
rkNum: $("#rkNum" + rowNum).val(),
estimatePurchasePrice: $("#unitPrice" + rowNum).val(),
materialType: materialTypeId,
remark: $("#remark" + rowNum).val()
};
tableData.push(row);
});
if(noError) {
return false;
}
if(!hasAssembly){
winui.window.msg('请选择组合件.', {icon: 2, time: 2000});
return false;
}
var params = {
operTime: $("#operTime").val(),
remark: $("#remark").val(),
depotheadStr: JSON.stringify(tableData)
};
AjaxPostUtil.request({url: reqBasePath + "splitlist002", params: params, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
parent.layer.close(index);
parent.refreshCode = '0';
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
return false;
});
//判断选中的产品是否也在数组中
function inTableDataArrayByAssetarId(materialId, depotId, unitId, array) {
var isIn = false;
$.each(array, function(i, item) {
if(item.depotId === depotId && item.mUnitId === unitId && item.materialId === materialId) {
isIn = true;
return false;
}
});
return isIn;
}
//新增行
$("body").on("click", "#addRow", function() {
addRow();
});
//删除行
$("body").on("click", "#deleteRow", function() {
deleteRow();
});
//新增行
function addRow() {
var par = {
id: "row" + rowNum.toString(), //checkbox的id
trId: "tr" + rowNum.toString(), //行的id
materialTypeId: "materialTypeId" + rowNum.toString(), //商品类型的id
depotId: "depotId" + rowNum.toString(), //仓库id
materialId: "materialId" + rowNum.toString(), //产品id
unitId: "unitId" + rowNum.toString(), //规格id
currentTock: "currentTock" + rowNum.toString(), //库存id
rkNum: "rkNum" + rowNum.toString(), //数量id
unitPrice: "unitPrice" + rowNum.toString(), //单价id
amountOfMoney: "amountOfMoney" + rowNum.toString(), //金额id
remark: "remark" + rowNum.toString() //备注id
};
$("#useTable").append(getDataUseHandlebars(usetableTemplate, par));
//赋值给仓库
$("#" + "depotId" + rowNum.toString()).html(depotHtml);
//赋值给产品
$("#" + "materialId" + rowNum.toString()).html(materialHtml);
form.render('select');
form.render('checkbox');
rowNum++;
//设置根据某列变化的颜色
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
//删除行
function deleteRow() {
var checkRow = $("#useTable input[type='checkbox'][name='tableCheckRow']:checked");
if(checkRow.length > 0) {
$.each(checkRow, function(i, item) {
$(item).parent().parent().remove();
});
} else {
winui.window.msg('请选择要删除的行', {icon: 2, time: 2000});
}
}
$("body").on("click", "#cancle", function() {
parent.layer.close(index);
});
});
});

View file

@ -0,0 +1,27 @@
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui'], function (exports) {
winui.renderColor();
layui.use(['form'], function (form) {
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
var $ = layui.$;
var beanTemplate = $("#beanTemplate").html();
showGrid({
id: "showForm",
url: reqBasePath + "erpcommon001",
params: {rowId: parent.rowId},
pagination: false,
template: beanTemplate,
ajaxSendAfter:function(json){
form.render();
}
});
});
});

View file

@ -0,0 +1,417 @@
var material = new Array(); //产品集合
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'jquery', 'winui', 'laydate'], function(exports) {
winui.renderColor();
layui.use(['form'], function(form) {
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
var $ = layui.$,
laydate = layui.laydate;
var enclosureInfo = ""; //附件id
var rowNum = 1; //表格的序号
var depotHtml = "", materialHtml = "";//仓库
var tockObject = new Array();//根据仓库和规格id查询出来的对应库存信息
var usetableTemplate = $("#usetableTemplate").html();
var beanTemplate = $("#beanTemplate").html();
var selOption = getFileContent('tpl/template/select-option.tpl');
//加载单据数据
var orderObject = [];
showGrid({
id: "showForm",
url: reqBasePath + "splitlist003",
params: {rowId: parent.rowId},
pagination: false,
template: beanTemplate,
ajaxSendAfter:function(json){
//单据时间
laydate.render({
elem: '#operTime',
type: 'datetime',
trigger: 'click'
});
orderObject = json;
initDepotHtml();
}
});
//初始化仓库
function initDepotHtml() {
AjaxPostUtil.request({url: reqBasePath + "storehouse008", params: {}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
//加载仓库数据
depotHtml = getDataUseHandlebars(selOption, json);
//初始化产品
initMaterialHtml();
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
//初始化产品
function initMaterialHtml() {
AjaxPostUtil.request({url: reqBasePath + "material010", params: {}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
material = json.rows;
//加载产品数据
materialHtml = getDataUseHandlebars(selOption, json);
//渲染数据到页面
initDataToShow();
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
//渲染数据到页面
function initDataToShow(){
//渲染列表项
$.each(orderObject.bean.items, function(i, item){
addRow();
$.each(material, function(j, bean) {
if(item.materialId == bean.id){
$("#unitId" + (rowNum - 1)).html(getDataUseHandlebars(selOption, {rows: bean.unitList}));
$("#unitId" + (rowNum - 1)).val(item.mUnitId);//单位回显
return false;
}
});
$("#materialTypeId" + (rowNum - 1)).val(item.mType);//产品类型回显
$("#depotId" + (rowNum - 1)).val(item.depotId);//仓库回显
$("#materialId" + (rowNum - 1)).val(item.materialId);//产品回显
$("#currentTock" + (rowNum - 1)).html(item.currentTock);//库存回显
$("#rkNum" + (rowNum - 1)).val(item.operNumber);//数量回显
$("#unitPrice" + (rowNum - 1)).val(item.unitPrice.toFixed(2));//单价回显
$("#amountOfMoney" + (rowNum - 1)).val(item.allPrice.toFixed(2));//金额回显
$("#remark" + (rowNum - 1)).val(item.remark);//备注回显
//设置标识
$("tr[trcusid='tr" + (rowNum - 1) + "']").attr("thisid", item.id);
});
//渲染
form.render();
}
//仓库加载变化事件
form.on('select(selectDepotProperty)', function(data) {
var thisRowNum = data.elem.id.replace("depotId", "");//获取当前行
var thisRowValue = data.value;
loadTockByDepotAndMUnit(thisRowNum);
});
//产品加载变化事件
form.on('select(selectMaterialProperty)', function(data) {
var thisRowNum = data.elem.id.replace("materialId", "");//获取当前行
var thisRowValue = data.value;
if(!isNull(thisRowValue) && thisRowValue != '请选择') {
$.each(material, function(i, item) {
if(thisRowValue == item.id){
$("#unitId" + thisRowNum).html(getDataUseHandlebars(selOption, {rows: item.unitList}));
var rkNum = parseInt($("#rkNum" + thisRowNum).val());
//设置默认选中
if(item.unit == 2){//多单位
$.each(item.unitList, function(j, bean) {
if(item.firstInUnit == bean.unitId){
$("#unitId" + thisRowNum).val(bean.id);
$("#unitPrice" + thisRowNum).val(bean.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(bean.retailPrice)).toFixed(2));//金额
return false;
}
});
}else{//不是多单位
var firstItem = item.unitList[0];
$("#unitId" + thisRowNum).val(firstItem.id);
$("#unitPrice" + thisRowNum).val(firstItem.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(firstItem.retailPrice)).toFixed(2));//金额
}
form.render('select');
return false;
}
});
} else {
$("#unitId" + thisRowNum).html(""); //重置规格为空
form.render('select');
}
//加载库存
loadTockByDepotAndMUnit(thisRowNum);
//计算价格
calculatedTotalPrice();
});
//产品规格加载变化事件
form.on('select(selectUnitProperty)', function(data) {
var thisRowNum = data.elem.id.replace("unitId", "");//获取当前行
var thisRowValue = data.value;
//当前选中的产品id
var chooseMaterialId = $("#materialId" + thisRowNum).val();
if(!isNull(thisRowValue) && thisRowValue != '请选择') {
$.each(material, function(i, item) {
if(chooseMaterialId == item.id){//获取产品
$.each(item.unitList, function(j, bean) {
if(thisRowValue == bean.id){//获取规格
//获取当前行数量
var rkNum = parseInt($("#rkNum" + thisRowNum).val());
$("#unitPrice" + thisRowNum).val(bean.retailPrice.toFixed(2));//单价
$("#amountOfMoney" + thisRowNum).val((rkNum * parseFloat(bean.retailPrice)).toFixed(2));//金额
return false;
}
});
return false;
}
});
} else {
$("#unitPrice" + thisRowNum).val("0.00");//重置单价为空
$("#amountOfMoney" + thisRowNum).val("0.00");//重置金额为空
}
//加载库存
loadTockByDepotAndMUnit(thisRowNum);
//计算价格
calculatedTotalPrice();
});
/**
* 根据仓库和规格加载库存
* @param rowNum 表格行坐标
*/
function loadTockByDepotAndMUnit(rowNum){
//获取当前选中的仓库
var chooseDepotId = $("#depotId" + rowNum).val();
//获取当前选中的规格
var chooseUnitId = $("#unitId" + rowNum).val();
//当两个都不为空时
if(!isNull(chooseDepotId) && !isNull(chooseUnitId)){
var inTockObject = -1;
$.each(tockObject, function(i, item){
if(item.depotId == chooseDepotId && item.unitId == chooseUnitId){
inTockObject = i;
$("#currentTock" + rowNum).html(item.currentTock);
return false;
}
});
//如果数组中不包含对应的库存
if(inTockObject < 0){
//获取库存
AjaxPostUtil.request({url: reqBasePath + "material011", params: {depotId: chooseDepotId, mUnitId: chooseUnitId}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
var currentTock = 0;
if(!isNull(json.bean)){
currentTock = json.bean.currentTock;
}
tockObject.push({
depotId: chooseDepotId,
unitId: chooseUnitId,
currentTock: currentTock
});
$("#currentTock" + rowNum).html(currentTock);
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
}else{
//否则重置库存为空
$("#currentTock" + rowNum).html("");
}
}
var showTdByEdit = 'rkNum';//根据那一列的值进行变化,默认根据数量
//数量变化
$("body").on("input", ".rkNum, .unitPrice, .amountOfMoney", function() {
if($(this).attr("class").replace("layui-input change-input ", "") != showTdByEdit){
showTdByEdit = $(this).attr("class").replace("layui-input change-input ", "");
$(".change-input").parent().removeAttr("style");
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
calculatedTotalPrice();
});
$("body").on("change", ".rkNum, .unitPrice, .amountOfMoney", function() {
if($(this).attr("class").replace("layui-input change-input ", "") != showTdByEdit){
showTdByEdit = $(this).attr("class").replace("layui-input change-input ", "");
$(".change-input").parent().removeAttr("style");
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
calculatedTotalPrice();
});
//计算总价
function calculatedTotalPrice(){
var rowTr = $("#useTable tr");
var allPrice = 0;
$.each(rowTr, function(i, item) {
//获取行坐标
var rowNum = $(item).attr("trcusid").replace("tr", "");
//获取数量
var rkNum = parseInt(isNull($("#rkNum" + rowNum).val()) ? "0" : $("#rkNum" + rowNum).val());
//获取单价
var unitPrice = parseFloat(isNull($("#unitPrice" + rowNum).val()) ? "0" : $("#unitPrice" + rowNum).val());
//获取单价
var amountOfMoney = parseFloat(isNull($("#amountOfMoney" + rowNum).val()) ? "0" : $("#amountOfMoney" + rowNum).val());
if("rkNum" === showTdByEdit){//数量
//输出金额
$("#amountOfMoney" + rowNum).val((rkNum * unitPrice).toFixed(2));
}else if("unitPrice" === showTdByEdit){//单价
//输出金额
$("#amountOfMoney" + rowNum).val((rkNum * unitPrice).toFixed(2));
}else if("amountOfMoney" === showTdByEdit){//金额
//输出单价
$("#unitPrice" + rowNum).val((amountOfMoney / rkNum).toFixed(2));
}
allPrice += parseFloat($("#amountOfMoney" + rowNum).val());
});
$("#allPrice").html(allPrice.toFixed(2));
}
form.on('submit(formEditBean)', function(data) {
//表单验证
if(winui.verifyForm(data.elem)) {
//获取已选用品数据
var rowTr = $("#useTable tr");
if(rowTr.length == 0) {
winui.window.msg('请选择产品.', {icon: 2, time: 2000});
return false;
}
var tableData = new Array();
var noError = false; //循环遍历表格数据时,是否有其他错误信息
var hasAssembly = false;//判断是否有组合件
$.each(rowTr, function(i, item) {
//获取行编号
var rowNum = $(item).attr("trcusid").replace("tr", "");
//商品类型
var materialTypeId = $("#materialTypeId" + rowNum).val();
if(parseInt($("#rkNum" + rowNum).val()) == 0) {
$("#rkNum" + rowNum).addClass("layui-form-danger");
$("#rkNum" + rowNum).focus();
winui.window.msg('数量不能为0', {icon: 2, time: 2000});
noError = true;
return false;
}
if(materialTypeId === "1"){
if(!hasAssembly){
//当前没有组合件
hasAssembly = true;
}else{
$("#materialTypeId" + rowNum).addClass("layui-form-danger");
$("#materialTypeId" + rowNum).focus();
winui.window.msg('拆分单中只能存在一个组合件.', {icon: 2, time: 2000});
noError = true;
return false;
}
if(parseInt($("#rkNum" + rowNum).val()) > parseInt($("#currentTock" + rowNum).html())){
$("#rkNum" + rowNum).addClass("layui-form-danger");
$("#rkNum" + rowNum).focus();
winui.window.msg('超过库存数量.', {icon: 2, time: 2000});
noError = true;
return false;
}
}
if(inTableDataArrayByAssetarId($("#materialId" + rowNum).val(), $("#depotId" + rowNum).val(), $("#unitId" + rowNum).val(), tableData)) {
$("#depotId" + rowNum).addClass("layui-form-danger");
$("#depotId" + rowNum).focus();
winui.window.msg('一张单中不允许出现相同当库的产品信息,且单位不能重复.', {icon: 2, time: 2000});
noError = true;
return false;
}
var row = {
depotId: $("#depotId" + rowNum).val(),
materialId: $("#materialId" + rowNum).val(),
mUnitId: $("#unitId" + rowNum).val(),
rkNum: $("#rkNum" + rowNum).val(),
estimatePurchasePrice: $("#unitPrice" + rowNum).val(),
materialType: materialTypeId,
thisId: isNull($(item).attr("thisid")) ? "" : $(item).attr("thisid"),
remark: $("#remark" + rowNum).val()
};
tableData.push(row);
});
if(noError) {
return false;
}
var params = {
operTime: $("#operTime").val(),
remark: $("#remark").val(),
depotheadStr: JSON.stringify(tableData),
rowId: parent.rowId
};
AjaxPostUtil.request({url: reqBasePath + "splitlist004", params: params, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
parent.layer.close(index);
parent.refreshCode = '0';
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
return false;
});
//判断选中的产品是否也在数组中
function inTableDataArrayByAssetarId(materialId, depotId, unitId, array) {
var isIn = false;
$.each(array, function(i, item) {
if(item.depotId === depotId && item.mUnitId === unitId && item.materialId === materialId) {
isIn = true;
return false;
}
});
return isIn;
}
//新增行
$("body").on("click", "#addRow", function() {
addRow();
});
//删除行
$("body").on("click", "#deleteRow", function() {
deleteRow();
});
//新增行
function addRow() {
var par = {
id: "row" + rowNum.toString(), //checkbox的id
trId: "tr" + rowNum.toString(), //行的id
materialTypeId: "materialTypeId" + rowNum.toString(), //商品类型的id
depotId: "depotId" + rowNum.toString(), //仓库id
materialId: "materialId" + rowNum.toString(), //产品id
unitId: "unitId" + rowNum.toString(), //规格id
currentTock: "currentTock" + rowNum.toString(), //库存id
rkNum: "rkNum" + rowNum.toString(), //数量id
unitPrice: "unitPrice" + rowNum.toString(), //单价id
amountOfMoney: "amountOfMoney" + rowNum.toString(), //金额id
remark: "remark" + rowNum.toString() //备注id
};
$("#useTable").append(getDataUseHandlebars(usetableTemplate, par));
//赋值给仓库
$("#" + "depotId" + rowNum.toString()).html(depotHtml);
//赋值给产品
$("#" + "materialId" + rowNum.toString()).html(materialHtml);
form.render('select');
form.render('checkbox');
rowNum++;
//设置根据某列变化的颜色
$("." + showTdByEdit).parent().css({'background-color': '#e6e6e6'});
}
//删除行
function deleteRow() {
var checkRow = $("#useTable input[type='checkbox'][name='tableCheckRow']:checked");
if(checkRow.length > 0) {
$.each(checkRow, function(i, item) {
$(item).parent().parent().remove();
});
} else {
winui.window.msg('请选择要删除的行', {icon: 2, time: 2000});
}
}
$("body").on("click", "#cancle", function() {
parent.layer.close(index);
});
});
});

View file

@ -0,0 +1,164 @@
var rowId = "";
//单据的开始时间、结束时间
var startTime = "", endTime = "";
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui', 'form', 'laydate'], function (exports) {
winui.renderColor();
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
table = layui.table;
laydate.render({
elem: '#operTime', //指定元素
range: '~'
});
//表格渲染
table.render({
id: 'messageTable',
elem: '#messageTable',
method: 'post',
url: reqBasePath + 'splitlist001',
where: {defaultNumber: $("#defaultNumber").val(), material: $("#material").val(), startTime: startTime, endTime: endTime},
even: true, //隔行变色
page: true,
limits: [8, 16, 24, 32, 40, 48, 56],
limit: 8,
cols: [[
{ title: '序号', type: 'numbers'},
{ field: 'defaultNumber', title: '单据编号', align: 'left', width: 200, templet: function(d){
return '<a lay-event="details" class="notice-title-click">' + d.defaultNumber + '</a>';
}},
{ field: 'materialNames', title: '产品信息', align: 'left', width: 300},
{ field: 'totalPrice', title: '合计金额', align: 'left', width: 120},
{ field: 'operPersonName', title: '操作人', align: 'left', width: 100},
{ field: 'operTime', title: '单据日期', align: 'center', width: 140 },
{ title: '操作', fixed: 'right', align: 'center', width: 200, toolbar: '#tableBar'}
]]
});
table.on('tool(messageTable)', function (obj) { //注tool是工具条事件名test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'delete') { //删除
deletemember(data);
}else if (layEvent === 'details') { //详情
details(data);
}else if (layEvent === 'edit') { //编辑
edit(data);
}
});
//搜索表单
form.render();
form.on('submit(formSearch)', function (data) {
//表单验证
if (winui.verifyForm(data.elem)) {
loadTable();
}
return false;
});
//删除
function deletemember(data){
layer.confirm('确认要删除信息吗?', { icon: 3, title: '删除操作' }, function (index) {
AjaxPostUtil.request({url:reqBasePath + "member004", params: {rowId: data.id}, type:'json', callback:function(json){
if(json.returnCode == 0){
winui.window.msg("删除成功。", {icon: 1,time: 2000});
loadTable();
}else{
winui.window.msg(json.returnMessage, {icon: 2,time: 2000});
}
}});
});
}
//详情
function edit(data){
rowId = data.id;
_openNewWindows({
url: "../../tpl/splitlist/splitlistedit.html",
title: "编辑",
pageId: "splitlistedit",
area: ['90vw', '90vh'],
callBack: function(refreshCode){
if (refreshCode == '0') {
winui.window.msg("操作成功", {icon: 1,time: 2000});
loadTable();
} else if (refreshCode == '-9999') {
winui.window.msg("操作失败", {icon: 2,time: 2000});
}
}});
}
//详情
function details(data){
rowId = data.id;
_openNewWindows({
url: "../../tpl/splitlist/splitlistdetails.html",
title: "详情",
pageId: "splitlistdetails",
area: ['90vw', '90vh'],
callBack: function(refreshCode){
}});
}
//添加
$("body").on("click", "#addBean", function(){
_openNewWindows({
url: "../../tpl/splitlist/splitlistadd.html",
title: "新增",
pageId: "splitlistadd",
area: ['90vw', '90vh'],
callBack: function(refreshCode){
if (refreshCode == '0') {
winui.window.msg("操作成功", {icon: 1,time: 2000});
loadTable();
} else if (refreshCode == '-9999') {
winui.window.msg("操作失败", {icon: 2,time: 2000});
}
}});
});
$("body").on("click", "#reloadTable", function() {
loadTable();
});
$("body").on("click", "#formSearch", function () {
refreshTable();
})
//刷新
function loadTable(){
if(isNull($("#operTime").val())){//一定要记得当createTime为空时
startTime = "";
endTime = "";
}else {
startTime = $("#operTime").val().split('~')[0].trim() + ' 00:00:00';
endTime = $("#operTime").val().split('~')[1].trim() + ' 23:59:59';
}
table.reload("messageTable", {where:{defaultNumber: $("#defaultNumber").val(), material: $("#material").val(), startTime: startTime, endTime: endTime}});
}
//搜索
function refreshTable(){
if(isNull($("#operTime").val())){//一定要记得当createTime为空时
startTime = "";
endTime = "";
}else {
startTime = $("#operTime").val().split('~')[0].trim() + ' 00:00:00';
endTime = $("#operTime").val().split('~')[1].trim() + ' 23:59:59';
}
table.reload("messageTable", {page: {curr: 1}, where:{defaultNumber: $("#defaultNumber").val(), material: $("#material").val(), startTime: startTime, endTime: endTime}})
}
exports('splitlistlist', {});
});

View file

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div style="margin: 0 auto; padding: 20px;">
<form class="layui-form" action="" id="showForm">
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">单据日期<i class="red">*</i></label>
<div class="layui-input-block">
<input type="text" id="operTime" name="operTime" win-verify="required" placeholder="请选择单据日期" class="layui-input"/>
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">列表项<i class="red">*</i></label>
<div class="layui-input-block">
<div class="winui-toolbar">
<div class="winui-tool" style="text-align: left;">
<button id="addRow" class="winui-toolbtn" type="button"><i class="fa fa-plus" aria-hidden="true"></i>新增行</button>
<button id="deleteRow" class="winui-toolbtn" type="button"><i class="fa fa-trash-o" aria-hidden="true"></i>删除行</button>
</div>
</div>
<table class="layui-table">
<thead>
<tr>
<th style="width: 30px;"></th>
<th style="width: 100px;">商品类型</th>
<th style="width: 120px;">仓库</th>
<th style="width: 120px;">产品(型号)</th>
<th style="width: 70px;">单位</th>
<th style="width: 80px;">库存</th>
<th style="width: 80px;">数量</th>
<th style="width: 80px;">单价</th>
<th style="width: 80px;">金额</th>
<th style="min-width: 100px;">备注</th>
</tr>
</thead>
<tbody id="useTable" class="insurance-table">
</tbody>
</table>
</div>
</div>
<div class="layui-form-item layui-col-xs4">
<label class="layui-form-label">共计金额</label>
<div class="layui-input-block ver-center" id="allPrice">
0.00
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea id="remark" name="remark" placeholder="请输入备注" class="layui-textarea" style="height: 100px;" maxlength="200"></textarea>
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<div class="layui-input-block">
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formAddBean">保存</button>
</div>
</div>
</form>
</div>
<!-- usetableTemplate -->
<script type="text/x-handlebars-template" id="usetableTemplate">
<tr trcusid="{{trId}}">
<td><input type="checkbox" rowId="{{id}}" lay-filter="checkboxProperty" name="tableCheckRow"/></td>
<td><select id="{{materialTypeId}}" lay-search win-verify="required"><option value="1">组合件</option><option value="2">普通子件</option></select></td>
<td><select id="{{depotId}}" lay-filter="selectDepotProperty" lay-search win-verify="required"></select></td>
<td><select id="{{materialId}}" lay-filter="selectMaterialProperty" lay-search win-verify="required"></select></td>
<td><select id="{{unitId}}" lay-filter="selectUnitProperty" lay-search win-verify="required"></select></td>
<td id="{{currentTock}}"></td>
<td><input type="text" class="layui-input change-input rkNum" value="1" id="{{rkNum}}" win-verify="required|number"/></td>
<td><input type="text" class="layui-input change-input unitPrice" id="{{unitPrice}}" win-verify="required|money"/></td>
<td><input type="text" class="layui-input change-input amountOfMoney" id="{{amountOfMoney}}" win-verify="required|money"/></td>
<td><input type="text" class="layui-input" id="{{remark}}"/></td>
</tr>
</script>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/splitlist/'}).use('splitlistadd');
</script>
</body>
</html>

View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div style="padding:20px; margin:0 auto;">
<form class="layui-form" action="" id="showForm">
</form>
<script type="text/x-handlebars-template" id="beanTemplate">
{{#bean}}
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">单据日期:</label>
<div class="layui-input-block ver-center">
{{operTime}}
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">单据编号:</label>
<div class="layui-input-block ver-center">
{{defaultNumber}}
</div>
</div>
<div class="layui-form-item layui-col-xs6">
<label class="layui-form-label">操作人:</label>
<div class="layui-input-block ver-center">
{{operPersonName}}
</div>
</div>
<div class="layui-form-item layui-col-xs6">
<label class="layui-form-label">操作日期:</label>
<div class="layui-input-block ver-center">
{{createTime}}
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">列表项:</label>
<div class="layui-input-block ver-center">
<table class="layui-table">
<thead>
<tr>
<th style="width: 100px;">商品类型</th>
<th style="width: 120px;">仓库</th>
<th style="width: 150px;">产品(型号)</th>
<th style="width: 70px;">单位</th>
<th style="width: 80px;">数量</th>
<th style="width: 80px;">单价</th>
<th style="width: 80px;">金额</th>
<th style="min-width: 100px;">备注</th>
</tr>
</thead>
<tbody id="useTable" class="insurance-table">
{{#each items}}
<tr>
<td>{{mTypeName}}</td>
<td>{{deportName}}</td>
<td>{{materialNames}}</td>
<td>{{unitName}}</td>
<td>{{operNumber}}</td>
<td>{{unitPrice}}</td>
<td>{{allPrice}}</td>
<td>{{remark}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="layui-form-item layui-col-xs4">
<label class="layui-form-label">共计金额</label>
<div class="layui-input-block ver-center">
{{totalPrice}}元
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">备注:</label>
<div class="layui-input-block ver-center">
{{remark}}
</div>
</div>
{{/bean}}
</script>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/splitlist/'}).use('splitlistdetails');
</script>
</body>
</html>

View file

@ -0,0 +1,98 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div style="margin: 0 auto; padding: 20px;">
<form class="layui-form" action="" id="showForm">
</form>
</div>
<!-- usetableTemplate -->
<script type="text/x-handlebars-template" id="usetableTemplate">
<tr trcusid="{{trId}}">
<td><input type="checkbox" rowId="{{id}}" lay-filter="checkboxProperty" name="tableCheckRow"/></td>
<td><select id="{{materialTypeId}}" lay-search win-verify="required"><option value="1">组合件</option><option value="2">普通子件</option></select></td>
<td><select id="{{depotId}}" lay-filter="selectDepotProperty" lay-search win-verify="required"></select></td>
<td><select id="{{materialId}}" lay-filter="selectMaterialProperty" lay-search win-verify="required"></select></td>
<td><select id="{{unitId}}" lay-filter="selectUnitProperty" lay-search win-verify="required"></select></td>
<td id="{{currentTock}}"></td>
<td><input type="text" class="layui-input change-input rkNum" value="1" id="{{rkNum}}" win-verify="required|number"/></td>
<td><input type="text" class="layui-input change-input unitPrice" id="{{unitPrice}}" win-verify="required|money"/></td>
<td><input type="text" class="layui-input change-input amountOfMoney" id="{{amountOfMoney}}" win-verify="required|money"/></td>
<td><input type="text" class="layui-input" id="{{remark}}"/></td>
</tr>
</script>
<!-- beanTemplate -->
<script type="text/x-handlebars-template" id="beanTemplate">
{{#bean}}
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">单据日期<i class="red">*</i></label>
<div class="layui-input-block">
<input type="text" id="operTime" name="operTime" win-verify="required" placeholder="请选择单据日期" class="layui-input" value="{{operTime}}"/>
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">列表项<i class="red">*</i></label>
<div class="layui-input-block">
<div class="winui-toolbar">
<div class="winui-tool" style="text-align: left;">
<button id="addRow" class="winui-toolbtn" type="button"><i class="fa fa-plus" aria-hidden="true"></i>新增行</button>
<button id="deleteRow" class="winui-toolbtn" type="button"><i class="fa fa-trash-o" aria-hidden="true"></i>删除行</button>
</div>
</div>
<table class="layui-table">
<thead>
<tr>
<th style="width: 30px;"></th>
<th style="width: 100px;">商品类型</th>
<th style="width: 120px;">仓库</th>
<th style="width: 120px;">产品(型号)</th>
<th style="width: 70px;">单位</th>
<th style="width: 80px;">库存</th>
<th style="width: 80px;">数量</th>
<th style="width: 80px;">单价</th>
<th style="width: 80px;">金额</th>
<th style="min-width: 100px;">备注</th>
</tr>
</thead>
<tbody id="useTable" class="insurance-table">
</tbody>
</table>
</div>
</div>
<div class="layui-form-item layui-col-xs4">
<label class="layui-form-label">共计金额</label>
<div class="layui-input-block ver-center" id="allPrice">
{{totalPrice}}
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea id="remark" name="remark" placeholder="请输入备注" class="layui-textarea" style="height: 100px;" maxlength="200">{{remark}}</textarea>
</div>
</div>
<div class="layui-form-item layui-col-xs12">
<div class="layui-input-block">
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formEditBean">保存</button>
</div>
</div>
{{/bean}}
</script>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/splitlist/'}).use('splitlistedit');
</script>
</body>
</html>

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div class="txtcenter" style="margin:0 auto;padding-top:10px;">
<form class="layui-form layui-form-pane" action="" autocomplete="off">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">单据编号</label>
<div class="layui-input-inline">
<input type="text" id="defaultNumber" name="defaultNumber" placeholder="请输入单据编号" class="layui-input" />
</div>
<label class="layui-form-label">商品信息</label>
<div class="layui-input-inline">
<input type="text" id="material" name="material" placeholder="请输入名称或者型号" class="layui-input" />
</div>
<label class="layui-form-label">单据日期</label>
<div class="layui-input-inline">
<input type="text" id="operTime" name="operTime" placeholder="请选择单据日期" class="layui-input" />
</div>
<button type="reset" class="layui-btn layui-btn-primary list-form-search">重置</button>
<button class="layui-btn list-form-search" lay-submit lay-filter="formSearch">搜索</button>
</div>
</div>
</form>
</div>
<div class="winui-toolbar">
<div class="winui-tool">
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
<button id="addBean" class="winui-toolbtn"><i class="fa fa-plus" aria-hidden="true"></i>新增</button>
</div>
</div>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
<script type="text/html" id="tableBar">
{{# if(2 == 2){ }}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
{{# } }}
{{# if(d.enabled == 2 && auth('1569133240001')){ }}
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">未用到</a>
{{# } }}
</script>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/splitlist/'}).use('splitlistlist');
</script>
</body>
</html>