src/main/java/itemDetl.sql
New file @@ -0,0 +1,18 @@ -- save itemDetl record -- mysql insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl/itemDetl.html', 'itemDetl管理', null , '2', null , '1'); insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl#view', '查询', '', '3', '0', '1'); insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl#btn-add', '新增', '', '3', '1', '1'); insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl#btn-edit', '编辑', '', '3', '2', '1'); insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl#btn-delete', '删除', '', '3', '3', '1'); insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'itemDetl#btn-export', '导出', '', '3', '4', '1'); -- sqlserver insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl/itemDetl.html', N'itemDetl管理', null, '2', null, '1'); insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl#view', N'查询', '30527', '3', '0', '1'); insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl#btn-add', N'新增', '30527', '3', '1', '1'); insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl#btn-edit', N'编辑', '30527', '3', '2', '1'); insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl#btn-delete', N'删除', '30527', '3', '3', '1'); insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'itemDetl#btn-export', N'导出', '30527', '3', '4', '1'); src/main/java/zy/cloud/wms/common/CodeBuilder.java
@@ -1,10 +1,15 @@ package zy.cloud.wms.common; import com.core.generators.CoolGenerator; import com.core.generators.constant.SqlOsType; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; /** * Created by vincent on 2019-06-04 */ @Data public class CodeBuilder { public static void main(String[] args) throws Exception { @@ -15,16 +20,16 @@ // generator.password="xltys1995"; // generator.table="sys_host"; // sqlserver generator.url="localhost:1433;databasename=yjwms"; generator.url="localhost:1433;databasename=wms_saas"; generator.username="sa"; generator.password="sa@123"; generator.table="man_cstmr"; generator.table="man_item_detl"; generator.packagePath="zy.cloud.wms.manager"; generator.sqlOsType = SqlOsType.SQL_SERVER; // generator.js = false; // generator.html = false; // generator.htmlDetail = false; // generator.sql = false; generator.build(); } } src/main/java/zy/cloud/wms/common/model/ReceiveStoDto.java
New file @@ -0,0 +1,38 @@ package zy.cloud.wms.common.model; import lombok.Data; import zy.cloud.wms.manager.entity.OrderDetl; import zy.cloud.wms.manager.entity.Receive; import zy.cloud.wms.manager.entity.ReceiveDetl; import java.util.ArrayList; import java.util.List; @Data public class ReceiveStoDto { private String orderNo; private List<MatnrDto> dtos; public ReceiveStoDto() { } public ReceiveStoDto(String orderNo, List<MatnrDto> dtos) { this.orderNo = orderNo; this.dtos = dtos; } public ReceiveStoDto create(String orderNo, List<ReceiveDetl> receiveDetls) { this.setOrderNo(orderNo); List<MatnrDto> matnrDtos = new ArrayList<>(); for (ReceiveDetl receiveDetl : receiveDetls) { MatnrDto matnrDto = new MatnrDto(); matnrDto.setMatnr(receiveDetl.getMatnr()); matnrDto.setCount(receiveDetl.getAnfme()); matnrDtos.add(matnrDto); } this.setDtos(matnrDtos); return this; } } src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -9,6 +9,7 @@ import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.model.MatnrDto; import zy.cloud.wms.common.model.OrderStoDto; import zy.cloud.wms.common.model.ReceiveStoDto; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.service.*; @@ -32,6 +33,10 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private OrderService orderService; @Autowired private ReceiveService receiveService; @Autowired private ReceiveDetlService receiveDetlService; @Transactional public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto, Long hostId) { @@ -47,6 +52,80 @@ Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr()); if (null == mat) { throw new CoolException(matnrDto.getMatnr() + "物料尚未更新。" + orderStoDto.getOrderNo() +"单据因此中断!"); } Double sumAnfme = Optional.ofNullable(locDetlService.selectCountByMatnr(mat.getMatnr(), hostId)).orElse(0.0D); double lack = 0.0D; // 缺货 if (sumAnfme < matnrDto.getCount()) { lack = matnrDto.getCount() - sumAnfme; // 视图对象 StoPreTab tab = new StoPreTab(); tab.setTitle(mat.getMaktx() + "(" + mat.getMatnr() + ")"); tab.setMatnr(mat.getMatnr()); tab.setMaktx(mat.getMaktx()); tab.setAnfme(matnrDto.getCount()); tab.setLocNo("缺货"); tab.setTotal(lack); tab.setReduce(lack); tab.setRemQty(0.0D); tab.setPrior(false); tab.setPrior$("×"); tab.setType(0); res.add(tab); } // 查询存有当前物料的货位 List<LocDetl> locDetls = locDetlService.findOfSort(hostId, mat.getMatnr()); double issued = Optional.of(matnrDto.getCount() - lack).orElse(0.0D) ; double anfme = issued; for (LocDetl locDetl : locDetls) { if (issued > 0) { // 视图对象 StoPreTab tab = new StoPreTab(); tab.setTitle(mat.getMaktx() + "(" + mat.getMatnr() + ")"); tab.setMatnr(mat.getMatnr()); tab.setMaktx(mat.getMaktx()); tab.setAnfme(matnrDto.getCount()); tab.setLocNo(locDetl.getLocNo()); tab.setNodeId(locDetl.getNodeId()); tab.setTotal(locDetl.getAnfme()); tab.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); tab.setRemQty(tab.getTotal() - tab.getReduce()); tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr())); tab.setPrior$(tab.getPrior()?"✔":"×"); tab.setType(1); res.add(tab); // 剩余待出数量递减 issued = issued - locDetl.getAnfme(); } } } res.sort(new Comparator<StoPreTab>() { @Override public int compare(StoPreTab o1, StoPreTab o2) { // return o1.getMatnr().length() - o2.getMatnr().length(); return (int) (o1.getAnfme() - o2.getAnfme()); } }); return res; } @Transactional public List<StoPreTab> receiveStockOutPreview(ReceiveStoDto receiveStoDto, Long hostId) { if (Cools.isEmpty(receiveStoDto) || Cools.isEmpty(receiveStoDto.getDtos())) { throw new CoolException("数据异常,请联系管理员"); } List<StoPreTab> res = new ArrayList<>(); // 检查库存是否足够 // locDetlService.checkLocDetlCount(orderStoDto.getDtos()); for (MatnrDto matnrDto : receiveStoDto.getDtos()) { // 判断物料是否存在 Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr()); if (null == mat) { throw new CoolException(matnrDto.getMatnr() + "物料尚未更新。" + receiveStoDto.getOrderNo() +"单据因此中断!"); } Double sumAnfme = Optional.ofNullable(locDetlService.selectCountByMatnr(mat.getMatnr(), hostId)).orElse(0.0D); @@ -171,5 +250,83 @@ } } } @Transactional public void receiveStockOutProcess(ReceiveStoDto receiveStoDto, Long hostId) { if (Cools.isEmpty(receiveStoDto) || Cools.isEmpty(receiveStoDto.getDtos())) { return; } Receive receive = receiveService.selectByOrderNo(receiveStoDto.getOrderNo(), hostId); // Order order = orderService.selectByOrderNo(orderStoDto.getOrderNo(), hostId); if (receive == null) { throw new CoolException(receiveStoDto.getOrderNo() + "单据不存在"); } Date now = new Date(); // 检查库存是否足够 locDetlService.checkLocDetlCount(receiveStoDto.getDtos(), hostId); for (MatnrDto matnrDto : receiveStoDto.getDtos()) { // 判断物料是否存在 Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr()); if (null == mat) { throw new CoolException(matnrDto.getMatnr() + "物料尚未更新。" + matnrDto.getCount() +"单据因此中断!"); } // 查询存有当前物料的货位 List<LocDetl> locDetls = locDetlService.findOfSort(hostId, mat.getMatnr()); double issued = Optional.ofNullable(matnrDto.getCount()).orElse(0.0D) ; for (LocDetl locDetl : locDetls) { if (issued > 0) { // 保存出库通知单 Pakout pakout = new Pakout(); pakout.setHostId(hostId); pakout.setWrkSts(1L); pakout.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); pakout.setZpallet(locDetl.getZpallet()); pakout.setLocNo(locDetl.getLocNo()); pakout.setNodeId(locDetl.getNodeId()); pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId())); VersionUtils.setPakout(pakout, mat); pakout.setDocId(receive.getDocType()); // 单据类型 pakout.setDocNum(receive.getOrderNo()); // 单据编号 pakout.setCreateTime(now); pakout.setUpdateTime(now); pakout.setStatus(1); if (!pakoutService.insert(pakout)) { throw new CoolException("保存出库通知单失败"); } if (issued>=locDetl.getAnfme()) { // // 删除库存明细 // if (!locDetlService.removeStock(locDetl.getNodeId(), mat.getMatnr())) { // throw new CoolException("删除库存明细失败"); // } } else { // // 修改库存明细数量 // if (!locDetlService.reduceStock(locDetl.getNodeId(), mat.getMatnr(), issued)) { // throw new CoolException("修改库存明细数量失败"); // } } // 剩余待出数量递减 issued = issued - locDetl.getAnfme(); } } // 修改单据状态 if (!orderService.updateSettle(receiveStoDto.getOrderNo(), 2L, hostId)) { throw new CoolException("修改单据状态失败"); } } } public static void main(String[] args) { for (int i = 2; i < 51; i++) { System.out.println("EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'节点"+i+"名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'man_item_detl', @level2type=N'COLUMN',@level2name=N'node"+i+"_name'\n" + "GO"); System.out.println("EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'节点"+i+"截止日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'man_item_detl', @level2type=N'COLUMN',@level2name=N'node"+i+"_deadline'\n" + "GO"); System.out.println("EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'节点"+i+"完工日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'man_item_detl', @level2type=N'COLUMN',@level2name=N'node"+i+"_real_deadline'\n" + "GO"); System.out.println("EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'节点"+i+"超出日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'man_item_detl', @level2type=N'COLUMN',@level2name=N'node"+i+"_extra_day'\n" + "GO"); } } } src/main/java/zy/cloud/wms/manager/controller/ItemDetlController.java
New file @@ -0,0 +1,128 @@ package zy.cloud.wms.manager.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.common.DateUtils; import zy.cloud.wms.manager.entity.ItemDetl; import zy.cloud.wms.manager.service.ItemDetlService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import zy.cloud.wms.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController public class ItemDetlController extends BaseController { @Autowired private ItemDetlService itemDetlService; @RequestMapping(value = "/itemDetl/{id}/auth") @ManagerAuth public R get(@PathVariable("id") String id) { return R.ok(itemDetlService.selectById(String.valueOf(id))); } @RequestMapping(value = "/itemDetl/list/auth") @ManagerAuth public R list(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, @RequestParam Map<String, Object> param){ EntityWrapper<ItemDetl> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(itemDetlService.selectPage(new Page<>(curr, limit), wrapper)); } private void convert(Map<String, Object> map, EntityWrapper wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)){ String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); } } } @RequestMapping(value = "/itemDetl/add/auth") @ManagerAuth public R add(ItemDetl itemDetl) { itemDetlService.insert(itemDetl); return R.ok(); } @RequestMapping(value = "/itemDetl/update/auth") @ManagerAuth public R update(ItemDetl itemDetl){ if (Cools.isEmpty(itemDetl) || null==itemDetl.getId()){ return R.error(); } itemDetlService.updateById(itemDetl); return R.ok(); } @RequestMapping(value = "/itemDetl/delete/auth") @ManagerAuth public R delete(@RequestParam(value="ids[]") Long[] ids){ for (Long id : ids){ itemDetlService.deleteById(id); } return R.ok(); } @RequestMapping(value = "/itemDetl/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param){ EntityWrapper<ItemDetl> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("itemDetl")); convert(map, wrapper); List<ItemDetl> list = itemDetlService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/itemDetlQuery/auth") @ManagerAuth public R query(String condition) { EntityWrapper<ItemDetl> wrapper = new EntityWrapper<>(); wrapper.like("id", condition); Page<ItemDetl> page = itemDetlService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); for (ItemDetl itemDetl : page.getRecords()){ Map<String, Object> map = new HashMap<>(); map.put("id", itemDetl.getId()); map.put("value", itemDetl.getId()); result.add(map); } return R.ok(result); } @RequestMapping(value = "/itemDetl/check/column/auth") @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper<ItemDetl> wrapper = new EntityWrapper<ItemDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); if (null != itemDetlService.selectOne(wrapper)){ return R.parse(BaseRes.REPEAT).add(getComment(ItemDetl.class, String.valueOf(param.get("key")))); } return R.ok(); } @RequestMapping("/itemDetl/getAll") public R getAll(){ List<ItemDetl> itemDetls = itemDetlService.selectList(null); return R.ok().add(itemDetls); } } src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -200,7 +200,7 @@ @RequestMapping("/docType/all/get") @ManagerAuth public R getDocTypeData() { List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("status", 1).eq("host_id", getHostId()).orderBy("create_time", false)); List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("status", 1).eq("host_id", getHostId()).orderBy("create_time", false).eq("doc_class",1)); return R.ok().add(docTypes); } src/main/java/zy/cloud/wms/manager/entity/ItemDetl.java
New file Diff too large src/main/java/zy/cloud/wms/manager/mapper/ItemDetlMapper.java
New file @@ -0,0 +1,12 @@ package zy.cloud.wms.manager.mapper; import zy.cloud.wms.manager.entity.ItemDetl; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface ItemDetlMapper extends BaseMapper<ItemDetl> { } src/main/java/zy/cloud/wms/manager/service/ItemDetlService.java
New file @@ -0,0 +1,8 @@ package zy.cloud.wms.manager.service; import zy.cloud.wms.manager.entity.ItemDetl; import com.baomidou.mybatisplus.service.IService; public interface ItemDetlService extends IService<ItemDetl> { } src/main/java/zy/cloud/wms/manager/service/impl/ItemDetlServiceImpl.java
New file @@ -0,0 +1,12 @@ package zy.cloud.wms.manager.service.impl; import zy.cloud.wms.manager.mapper.ItemDetlMapper; import zy.cloud.wms.manager.entity.ItemDetl; import zy.cloud.wms.manager.service.ItemDetlService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service("itemDetlService") public class ItemDetlServiceImpl extends ServiceImpl<ItemDetlMapper, ItemDetl> implements ItemDetlService { } src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -1,6 +1,7 @@ package zy.cloud.wms.manager.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; @@ -12,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.model.MatnrDto; import zy.cloud.wms.common.model.OrderStoDto; import zy.cloud.wms.common.model.ReceiveStoDto; import zy.cloud.wms.common.service.MainService; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.*; @@ -54,6 +56,11 @@ private CstmrService cstmrService; @Autowired private PakinService pakinService; @Autowired private ReceiveService receiveService; @Autowired private ReceiveDetlService receiveDetlService; @Override @Transactional @@ -268,31 +275,50 @@ @Override public R stockOutPreview(StockOutParam param, Long userId, Long hostId) { Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); if (order.getSettle() != 1) { Wrapper<Receive> wrapper = new EntityWrapper<Receive>() .eq("order_no", param.getOrderNo()); if (hostId != null) { wrapper.eq("host_id", hostId); } Receive order_no = receiveService.selectOne(wrapper); if (order_no.getSettle() != 1){ return R.error("此单据无法生成拣货单"); } List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId); if (Cools.isEmpty(orderDetls)) { // Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); // if (order.getSettle() != 1) { // return R.error("此单据无法生成拣货单"); // } List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(order_no.getOrderNo(), hostId); if (Cools.isEmpty(receiveDetls)) { return R.error("此单据已失效,请联系管理员"); } OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls); return R.ok().add(mainService.stockOutPreview(dto, hostId)); // List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId); // if (Cools.isEmpty(orderDetls)) { // return R.error("此单据已失效,请联系管理员"); // } ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(order_no.getOrderNo(), receiveDetls); // OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls); return R.ok().add(mainService.receiveStockOutPreview(receiveStoDto, hostId)); } @Override public R stockOutCreate(StockOutParam param, Long userId, Long hostId) { Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); if (order.getSettle() != 1) { Receive receive = receiveService.selectByOrderNo(param.getOrderNo(), hostId); // Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); if (receive.getSettle() != 1) { return R.error("此单据无法生成拣货单"); } List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId); if (Cools.isEmpty(orderDetls)) { List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(param.getOrderNo(), hostId); // List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId); if (Cools.isEmpty(receiveDetls)) { return R.error("此单据已失效,请联系管理员"); } OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls); ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(receive.getOrderNo(), receiveDetls); // OrderStoDto dto = new OrderStoDto().create(receive.getOrderNo(), receiveDetls); // 开始整理出库数据 mainService.stockOutProcess(dto, hostId); mainService.receiveStockOutProcess(receiveStoDto,hostId); return R.ok("生成拣货单成功"); } @@ -433,6 +459,7 @@ pakout.setUpdateTime(now); pakout.setUpdateBy(userId); pakout.setStatus(1); if (!pakoutService.insert(pakout)) { throw new CoolException("生成拣货单失败"); } @@ -517,15 +544,17 @@ @Override @Transactional public R initOrder(InitOrderParam param, Long userId, Long hostId) { Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); if (order != null) { Receive order_no = receiveService.selectOne(new EntityWrapper<Receive>() .eq("order_no", param.getOrderNo())); // Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId); if (order_no != null) { return R.error("抱歉单号已存在,请修改单号"); } Date now = new Date(); Item item = itemService.selectByName(param.getItem()); Cstmr cstmr = cstmrService.selectByName(param.getCstmr()); // 新增订单表头 order = new Order( order_no = new Receive( hostId, String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] param.getOrderNo(), // 订单编号 @@ -562,9 +591,34 @@ now, // 修改时间 null // 备注 ); if (!orderService.insert(order)) { // if (!orderService.insert(order)) { // throw new CoolException("保存订单表头失败!"); // } if (!receiveService.insert(order_no)) { throw new CoolException("保存订单表头失败!"); } // // 遍历商品数量并保存 // for (MatnrDto dto : param.getList()){ // Mat mat = matService.selectByMatnr(hostId, dto.getMatnr()); // if (mat == null) { // log.error("{}商品不存在。", dto.getMatnr()); // continue; // } // OrderDetl orderDetl = new OrderDetl(); // orderDetl.setHostId(hostId); // orderDetl.setOrderId(order.getId()); // 订单内码 // orderDetl.setAnfme(dto.getCount()); // 数量 // orderDetl.setCreateBy(userId); // orderDetl.setCreateTime(now); // orderDetl.setUpdateBy(userId); // orderDetl.setUpdateTime(now); // orderDetl.setStatus(1); // VersionUtils.setOrderDetl(orderDetl, mat); // if (!orderDetlService.insert(orderDetl)) { // throw new CoolException("保存订单明细失败"); // } // } // 遍历商品数量并保存 for (MatnrDto dto : param.getList()){ Mat mat = matService.selectByMatnr(hostId, dto.getMatnr()); @@ -572,17 +626,28 @@ log.error("{}商品不存在。", dto.getMatnr()); continue; } OrderDetl orderDetl = new OrderDetl(); orderDetl.setHostId(hostId); orderDetl.setOrderId(order.getId()); // 订单内码 orderDetl.setAnfme(dto.getCount()); // 数量 orderDetl.setCreateBy(userId); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(userId); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); VersionUtils.setOrderDetl(orderDetl, mat); if (!orderDetlService.insert(orderDetl)) { ReceiveDetl receiveDetl = new ReceiveDetl(); receiveDetl.setHostId(hostId); receiveDetl.setOrderId(order_no.getId()); receiveDetl.setAnfme(dto.getCount()); receiveDetl.setCreateTime(now); receiveDetl.setCreateBy(userId); receiveDetl.setUpdateBy(userId); receiveDetl.setUpdateTime(now); receiveDetl.setStatus(1); receiveDetl.setMatnr(mat.getMatnr()); receiveDetl.setMaktx(mat.getMaktx()); receiveDetl.setName(mat.getName()); receiveDetl.setSpecs(mat.getSpecs()); receiveDetl.setModel(mat.getModel()); receiveDetl.setBatch(mat.getBatch()); receiveDetl.setUnit(mat.getUnit()); receiveDetl.setBarcode(mat.getBarcode()); receiveDetl.setItemNum(mat.getItemNum()); receiveDetl.setCount(mat.getCount()); receiveDetl.setUnitPrice(mat.getPrice()); receiveDetl.setWeight(mat.getWeight()); if (!receiveDetlService.insert(receiveDetl)) { throw new CoolException("保存订单明细失败"); } } src/main/resources/mapper/ItemDetlMapper.xml
New file @@ -0,0 +1,213 @@ <?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="zy.cloud.wms.manager.mapper.ItemDetlMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="zy.cloud.wms.manager.entity.ItemDetl"> <result column="id" property="id" /> <result column="start_day" property="startDay" /> <result column="end_day" property="endDay" /> <result column="node1_name" property="node1Name" /> <result column="node1_deadline" property="node1Deadline" /> <result column="node1_real_deadline" property="node1RealDeadline" /> <result column="node1_extra_day" property="node1ExtraDay" /> <result column="node2_name" property="node2Name" /> <result column="node2_deadline" property="node2Deadline" /> <result column="node2_real_deadline" property="node2RealDeadline" /> <result column="node2_extra_day" property="node2ExtraDay" /> <result column="node3_name" property="node3Name" /> <result column="node3_deadline" property="node3Deadline" /> <result column="node3_real_deadline" property="node3RealDeadline" /> <result column="node3_extra_day" property="node3ExtraDay" /> <result column="node4_name" property="node4Name" /> <result column="node4_deadline" property="node4Deadline" /> <result column="node4_real_deadline" property="node4RealDeadline" /> <result column="node4_extra_day" property="node4ExtraDay" /> <result column="node5_name" property="node5Name" /> <result column="node5_deadline" property="node5Deadline" /> <result column="node5_real_deadline" property="node5RealDeadline" /> <result column="node5_extra_day" property="node5ExtraDay" /> <result column="node6_name" property="node6Name" /> <result column="node6_deadline" property="node6Deadline" /> <result column="node6_real_deadline" property="node6RealDeadline" /> <result column="node6_extra_day" property="node6ExtraDay" /> <result column="node7_name" property="node7Name" /> <result column="node7_deadline" property="node7Deadline" /> <result column="node7_real_deadline" property="node7RealDeadline" /> <result column="node7_extra_day" property="node7ExtraDay" /> <result column="node8_name" property="node8Name" /> <result column="node8_deadline" property="node8Deadline" /> <result column="node8_real_deadline" property="node8RealDeadline" /> <result column="node8_extra_day" property="node8ExtraDay" /> <result column="node9_name" property="node9Name" /> <result column="node9_deadline" property="node9Deadline" /> <result column="node9_real_deadline" property="node9RealDeadline" /> <result column="node9_extra_day" property="node9ExtraDay" /> <result column="node10_name" property="node10Name" /> <result column="node10_deadline" property="node10Deadline" /> <result column="node10_real_deadline" property="node10RealDeadline" /> <result column="node10_extra_day" property="node10ExtraDay" /> <result column="node11_name" property="node11Name" /> <result column="node11_deadline" property="node11Deadline" /> <result column="node11_real_deadline" property="node11RealDeadline" /> <result column="node11_extra_day" property="node11ExtraDay" /> <result column="node12_name" property="node12Name" /> <result column="node12_deadline" property="node12Deadline" /> <result column="node12_real_deadline" property="node12RealDeadline" /> <result column="node12_extra_day" property="node12ExtraDay" /> <result column="node13_name" property="node13Name" /> <result column="node13_deadline" property="node13Deadline" /> <result column="node13_real_deadline" property="node13RealDeadline" /> <result column="node13_extra_day" property="node13ExtraDay" /> <result column="node14_name" property="node14Name" /> <result column="node14_deadline" property="node14Deadline" /> <result column="node14_real_deadline" property="node14RealDeadline" /> <result column="node14_extra_day" property="node14ExtraDay" /> <result column="node15_name" property="node15Name" /> <result column="node15_deadline" property="node15Deadline" /> <result column="node15_real_deadline" property="node15RealDeadline" /> <result column="node15_extra_day" property="node15ExtraDay" /> <result column="node16_name" property="node16Name" /> <result column="node16_deadline" property="node16Deadline" /> <result column="node16_real_deadline" property="node16RealDeadline" /> <result column="node16_extra_day" property="node16ExtraDay" /> <result column="node17_name" property="node17Name" /> <result column="node17_deadline" property="node17Deadline" /> <result column="node17_real_deadline" property="node17RealDeadline" /> <result column="node17_extra_day" property="node17ExtraDay" /> <result column="node18_name" property="node18Name" /> <result column="node18_deadline" property="node18Deadline" /> <result column="node18_real_deadline" property="node18RealDeadline" /> <result column="node18_extra_day" property="node18ExtraDay" /> <result column="node19_name" property="node19Name" /> <result column="node19_deadline" property="node19Deadline" /> <result column="node19_real_deadline" property="node19RealDeadline" /> <result column="node19_extra_day" property="node19ExtraDay" /> <result column="node20_name" property="node20Name" /> <result column="node20_deadline" property="node20Deadline" /> <result column="node20_real_deadline" property="node20RealDeadline" /> <result column="node20_extra_day" property="node20ExtraDay" /> <result column="node21_name" property="node21Name" /> <result column="node21_deadline" property="node21Deadline" /> <result column="node21_real_deadline" property="node21RealDeadline" /> <result column="node21_extra_day" property="node21ExtraDay" /> <result column="node22_name" property="node22Name" /> <result column="node22_deadline" property="node22Deadline" /> <result column="node22_real_deadline" property="node22RealDeadline" /> <result column="node22_extra_day" property="node22ExtraDay" /> <result column="node23_name" property="node23Name" /> <result column="node23_deadline" property="node23Deadline" /> <result column="node23_real_deadline" property="node23RealDeadline" /> <result column="node23_extra_day" property="node23ExtraDay" /> <result column="node24_name" property="node24Name" /> <result column="node24_deadline" property="node24Deadline" /> <result column="node24_real_deadline" property="node24RealDeadline" /> <result column="node24_extra_day" property="node24ExtraDay" /> <result column="node25_name" property="node25Name" /> <result column="node25_deadline" property="node25Deadline" /> <result column="node25_real_deadline" property="node25RealDeadline" /> <result column="node25_extra_day" property="node25ExtraDay" /> <result column="node26_name" property="node26Name" /> <result column="node26_deadline" property="node26Deadline" /> <result column="node26_real_deadline" property="node26RealDeadline" /> <result column="node26_extra_day" property="node26ExtraDay" /> <result column="node27_name" property="node27Name" /> <result column="node27_deadline" property="node27Deadline" /> <result column="node27_real_deadline" property="node27RealDeadline" /> <result column="node27_extra_day" property="node27ExtraDay" /> <result column="node28_name" property="node28Name" /> <result column="node28_deadline" property="node28Deadline" /> <result column="node28_real_deadline" property="node28RealDeadline" /> <result column="node28_extra_day" property="node28ExtraDay" /> <result column="node29_name" property="node29Name" /> <result column="node29_deadline" property="node29Deadline" /> <result column="node29_real_deadline" property="node29RealDeadline" /> <result column="node29_extra_day" property="node29ExtraDay" /> <result column="node30_name" property="node30Name" /> <result column="node30_deadline" property="node30Deadline" /> <result column="node30_real_deadline" property="node30RealDeadline" /> <result column="node30_extra_day" property="node30ExtraDay" /> <result column="node31_name" property="node31Name" /> <result column="node31_deadline" property="node31Deadline" /> <result column="node31_real_deadline" property="node31RealDeadline" /> <result column="node31_extra_day" property="node31ExtraDay" /> <result column="node32_name" property="node32Name" /> <result column="node32_deadline" property="node32Deadline" /> <result column="node32_real_deadline" property="node32RealDeadline" /> <result column="node32_extra_day" property="node32ExtraDay" /> <result column="node33_name" property="node33Name" /> <result column="node33_deadline" property="node33Deadline" /> <result column="node33_real_deadline" property="node33RealDeadline" /> <result column="node33_extra_day" property="node33ExtraDay" /> <result column="node34_name" property="node34Name" /> <result column="node34_deadline" property="node34Deadline" /> <result column="node34_real_deadline" property="node34RealDeadline" /> <result column="node34_extra_day" property="node34ExtraDay" /> <result column="node35_name" property="node35Name" /> <result column="node35_deadline" property="node35Deadline" /> <result column="node35_real_deadline" property="node35RealDeadline" /> <result column="node35_extra_day" property="node35ExtraDay" /> <result column="node36_name" property="node36Name" /> <result column="node36_deadline" property="node36Deadline" /> <result column="node36_real_deadline" property="node36RealDeadline" /> <result column="node36_extra_day" property="node36ExtraDay" /> <result column="node37_name" property="node37Name" /> <result column="node37_deadline" property="node37Deadline" /> <result column="node37_real_deadline" property="node37RealDeadline" /> <result column="node37_extra_day" property="node37ExtraDay" /> <result column="node38_name" property="node38Name" /> <result column="node38_deadline" property="node38Deadline" /> <result column="node38_real_deadline" property="node38RealDeadline" /> <result column="node38_extra_day" property="node38ExtraDay" /> <result column="node39_name" property="node39Name" /> <result column="node39_deadline" property="node39Deadline" /> <result column="node39_real_deadline" property="node39RealDeadline" /> <result column="node39_extra_day" property="node39ExtraDay" /> <result column="node40_name" property="node40Name" /> <result column="node40_deadline" property="node40Deadline" /> <result column="node40_real_deadline" property="node40RealDeadline" /> <result column="node40_extra_day" property="node40ExtraDay" /> <result column="node41_name" property="node41Name" /> <result column="node41_deadline" property="node41Deadline" /> <result column="node41_real_deadline" property="node41RealDeadline" /> <result column="node41_extra_day" property="node41ExtraDay" /> <result column="node42_name" property="node42Name" /> <result column="node42_deadline" property="node42Deadline" /> <result column="node42_real_deadline" property="node42RealDeadline" /> <result column="node42_extra_day" property="node42ExtraDay" /> <result column="node43_name" property="node43Name" /> <result column="node43_deadline" property="node43Deadline" /> <result column="node43_real_deadline" property="node43RealDeadline" /> <result column="node43_extra_day" property="node43ExtraDay" /> <result column="node44_name" property="node44Name" /> <result column="node44_deadline" property="node44Deadline" /> <result column="node44_real_deadline" property="node44RealDeadline" /> <result column="node44_extra_day" property="node44ExtraDay" /> <result column="node45_name" property="node45Name" /> <result column="node45_deadline" property="node45Deadline" /> <result column="node45_real_deadline" property="node45RealDeadline" /> <result column="node45_extra_day" property="node45ExtraDay" /> <result column="node46_name" property="node46Name" /> <result column="node46_deadline" property="node46Deadline" /> <result column="node46_real_deadline" property="node46RealDeadline" /> <result column="node46_extra_day" property="node46ExtraDay" /> <result column="node47_name" property="node47Name" /> <result column="node47_deadline" property="node47Deadline" /> <result column="node47_real_deadline" property="node47RealDeadline" /> <result column="node47_extra_day" property="node47ExtraDay" /> <result column="node48_name" property="node48Name" /> <result column="node48_deadline" property="node48Deadline" /> <result column="node48_real_deadline" property="node48RealDeadline" /> <result column="node48_extra_day" property="node48ExtraDay" /> <result column="node49_name" property="node49Name" /> <result column="node49_deadline" property="node49Deadline" /> <result column="node49_real_deadline" property="node49RealDeadline" /> <result column="node49_extra_day" property="node49ExtraDay" /> <result column="node50_name" property="node50Name" /> <result column="node50_deadline" property="node50Deadline" /> <result column="node50_real_deadline" property="node50RealDeadline" /> <result column="node50_extra_day" property="node50ExtraDay" /> </resultMap> </mapper> src/main/resources/mapper/OrderMapper.xml
@@ -44,7 +44,7 @@ </resultMap> <update id="updateSettle"> update man_order set settle = #{settle} where 1=1 and order_no = #{orderNo} and host_id = #{hostId} update man_receive set settle = #{settle} where 1=1 and order_no = #{orderNo} and host_id = #{hostId} </update> <select id="getPage" resultMap="BaseResultMap"> src/main/resources/mapper/ReceiveDetlMapper.xml
@@ -33,8 +33,8 @@ <select id="selectByOrderNo" resultMap="BaseResultMap"> select mod.* from man_order_detl mod left join man_order mo on mo.id = mod.order_id from man_receive_detl mod left join man_receive mo on mo.id = mod.order_id where 1=1 and mo.order_no = #{orderNo} and mo.host_id = #{hostId} src/main/webapp/static/js/itemDetl/itemDetl.js
New file @@ -0,0 +1,848 @@ var pageCurr; layui.config({ base: baseUrl + "/static/layui/lay/modules/" }).use(['table','laydate', 'form', 'admin'], function(){ var table = layui.table; var $ = layui.jquery; var layer = layui.layer; var layDate = layui.laydate; var form = layui.form; var admin = layui.admin; // 数据渲染 tableIns = table.render({ elem: '#itemDetl', headers: {token: localStorage.getItem('token')}, url: baseUrl+'/itemDetl/list/auth', page: true, limit: 16, limits: [16, 30, 50, 100, 200, 500], toolbar: '#toolbar', cellMinWidth: 50, cols: [[ {type: 'checkbox'} ,{field: 'id', align: 'center',title: 'ID'} ,{field: 'startDay$', align: 'center',title: '项目启动日期'} ,{field: 'endDay$', align: 'center',title: '项目结束日期'} // ,{field: 'node1Name', align: 'center',title: '节点1名称'} // ,{field: 'node1Deadline$', align: 'center',title: '节点1截止日期'} // ,{field: 'node1RealDeadline$', align: 'center',title: '节点1完工日期'} // ,{field: 'node1ExtraDay', align: 'center',title: '节点1超出日期'} // ,{field: 'node2Name', align: 'center',title: '节点2名称'} // ,{field: 'node2Deadline$', align: 'center',title: '节点2截止日期'} // ,{field: 'node2RealDeadline$', align: 'center',title: '节点2完工日期'} // ,{field: 'node2ExtraDay', align: 'center',title: '节点2超出日期'} // ,{field: 'node3Name', align: 'center',title: '节点3名称'} // ,{field: 'node3Deadline$', align: 'center',title: '节点3截止日期'} // ,{field: 'node3RealDeadline$', align: 'center',title: '节点3完工日期'} // ,{field: 'node3ExtraDay', align: 'center',title: '节点3超出日期'} // ,{field: 'node4Name', align: 'center',title: '节点4名称'} // ,{field: 'node4Deadline$', align: 'center',title: '节点4截止日期'} // ,{field: 'node4RealDeadline$', align: 'center',title: '节点4完工日期'} // ,{field: 'node4ExtraDay', align: 'center',title: '节点4超出日期'} // ,{field: 'node5Name', align: 'center',title: '节点5名称'} // ,{field: 'node5Deadline$', align: 'center',title: '节点5截止日期'} // ,{field: 'node5RealDeadline$', align: 'center',title: '节点5完工日期'} // ,{field: 'node5ExtraDay', align: 'center',title: '节点5超出日期'} // ,{field: 'node6Name', align: 'center',title: '节点6名称'} // ,{field: 'node6Deadline$', align: 'center',title: '节点6截止日期'} // ,{field: 'node6RealDeadline$', align: 'center',title: '节点6完工日期'} // ,{field: 'node6ExtraDay', align: 'center',title: '节点6超出日期'} // ,{field: 'node7Name', align: 'center',title: '节点7名称'} // ,{field: 'node7Deadline$', align: 'center',title: '节点7截止日期'} // ,{field: 'node7RealDeadline$', align: 'center',title: '节点7完工日期'} // ,{field: 'node7ExtraDay', align: 'center',title: '节点7超出日期'} // ,{field: 'node8Name', align: 'center',title: '节点8名称'} // ,{field: 'node8Deadline$', align: 'center',title: '节点8截止日期'} // ,{field: 'node8RealDeadline$', align: 'center',title: '节点8完工日期'} // ,{field: 'node8ExtraDay', align: 'center',title: '节点8超出日期'} // ,{field: 'node9Name', align: 'center',title: '节点9名称'} // ,{field: 'node9Deadline$', align: 'center',title: '节点9截止日期'} // ,{field: 'node9RealDeadline$', align: 'center',title: '节点9完工日期'} // ,{field: 'node9ExtraDay', align: 'center',title: '节点9超出日期'} // ,{field: 'node10Name', align: 'center',title: '节点10名称'} // ,{field: 'node10Deadline$', align: 'center',title: '节点10截止日期'} // ,{field: 'node10RealDeadline$', align: 'center',title: '节点10完工日期'} // ,{field: 'node10ExtraDay', align: 'center',title: '节点10超出日期'} // ,{field: 'node11Name', align: 'center',title: '节点11名称'} // ,{field: 'node11Deadline$', align: 'center',title: '节点11截止日期'} // ,{field: 'node11RealDeadline$', align: 'center',title: '节点11完工日期'} // ,{field: 'node11ExtraDay', align: 'center',title: '节点11超出日期'} // ,{field: 'node12Name', align: 'center',title: '节点12名称'} // ,{field: 'node12Deadline$', align: 'center',title: '节点12截止日期'} // ,{field: 'node12RealDeadline$', align: 'center',title: '节点12完工日期'} // ,{field: 'node12ExtraDay', align: 'center',title: '节点12超出日期'} // ,{field: 'node13Name', align: 'center',title: '节点13名称'} // ,{field: 'node13Deadline$', align: 'center',title: '节点13截止日期'} // ,{field: 'node13RealDeadline$', align: 'center',title: '节点13完工日期'} // ,{field: 'node13ExtraDay', align: 'center',title: '节点13超出日期'} // ,{field: 'node14Name', align: 'center',title: '节点14名称'} // ,{field: 'node14Deadline$', align: 'center',title: '节点14截止日期'} // ,{field: 'node14RealDeadline$', align: 'center',title: '节点14完工日期'} // ,{field: 'node14ExtraDay', align: 'center',title: '节点14超出日期'} // ,{field: 'node15Name', align: 'center',title: '节点15名称'} // ,{field: 'node15Deadline$', align: 'center',title: '节点15截止日期'} // ,{field: 'node15RealDeadline$', align: 'center',title: '节点15完工日期'} // ,{field: 'node15ExtraDay', align: 'center',title: '节点15超出日期'} // ,{field: 'node16Name', align: 'center',title: '节点16名称'} // ,{field: 'node16Deadline$', align: 'center',title: '节点16截止日期'} // ,{field: 'node16RealDeadline$', align: 'center',title: '节点16完工日期'} // ,{field: 'node16ExtraDay', align: 'center',title: '节点16超出日期'} // ,{field: 'node17Name', align: 'center',title: '节点17名称'} // ,{field: 'node17Deadline$', align: 'center',title: '节点17截止日期'} // ,{field: 'node17RealDeadline$', align: 'center',title: '节点17完工日期'} // ,{field: 'node17ExtraDay', align: 'center',title: '节点17超出日期'} // ,{field: 'node18Name', align: 'center',title: '节点18名称'} // ,{field: 'node18Deadline$', align: 'center',title: '节点18截止日期'} // ,{field: 'node18RealDeadline$', align: 'center',title: '节点18完工日期'} // ,{field: 'node18ExtraDay', align: 'center',title: '节点18超出日期'} // ,{field: 'node19Name', align: 'center',title: '节点19名称'} // ,{field: 'node19Deadline$', align: 'center',title: '节点19截止日期'} // ,{field: 'node19RealDeadline$', align: 'center',title: '节点19完工日期'} // ,{field: 'node19ExtraDay', align: 'center',title: '节点19超出日期'} // ,{field: 'node20Name', align: 'center',title: '节点20名称'} // ,{field: 'node20Deadline$', align: 'center',title: '节点20截止日期'} // ,{field: 'node20RealDeadline$', align: 'center',title: '节点20完工日期'} // ,{field: 'node20ExtraDay', align: 'center',title: '节点20超出日期'} // ,{field: 'node21Name', align: 'center',title: '节点21名称'} // ,{field: 'node21Deadline$', align: 'center',title: '节点21截止日期'} // ,{field: 'node21RealDeadline$', align: 'center',title: '节点21完工日期'} // ,{field: 'node21ExtraDay', align: 'center',title: '节点21超出日期'} // ,{field: 'node22Name', align: 'center',title: '节点22名称'} // ,{field: 'node22Deadline$', align: 'center',title: '节点22截止日期'} // ,{field: 'node22RealDeadline$', align: 'center',title: '节点22完工日期'} // ,{field: 'node22ExtraDay', align: 'center',title: '节点22超出日期'} // ,{field: 'node23Name', align: 'center',title: '节点23名称'} // ,{field: 'node23Deadline$', align: 'center',title: '节点23截止日期'} // ,{field: 'node23RealDeadline$', align: 'center',title: '节点23完工日期'} // ,{field: 'node23ExtraDay', align: 'center',title: '节点23超出日期'} // ,{field: 'node24Name', align: 'center',title: '节点24名称'} // ,{field: 'node24Deadline$', align: 'center',title: '节点24截止日期'} // ,{field: 'node24RealDeadline$', align: 'center',title: '节点24完工日期'} // ,{field: 'node24ExtraDay', align: 'center',title: '节点24超出日期'} // ,{field: 'node25Name', align: 'center',title: '节点25名称'} // ,{field: 'node25Deadline$', align: 'center',title: '节点25截止日期'} // ,{field: 'node25RealDeadline$', align: 'center',title: '节点25完工日期'} // ,{field: 'node25ExtraDay', align: 'center',title: '节点25超出日期'} // ,{field: 'node26Name', align: 'center',title: '节点26名称'} // ,{field: 'node26Deadline$', align: 'center',title: '节点26截止日期'} // ,{field: 'node26RealDeadline$', align: 'center',title: '节点26完工日期'} // ,{field: 'node26ExtraDay', align: 'center',title: '节点26超出日期'} // ,{field: 'node27Name', align: 'center',title: '节点27名称'} // ,{field: 'node27Deadline$', align: 'center',title: '节点27截止日期'} // ,{field: 'node27RealDeadline$', align: 'center',title: '节点27完工日期'} // ,{field: 'node27ExtraDay', align: 'center',title: '节点27超出日期'} // ,{field: 'node28Name', align: 'center',title: '节点28名称'} // ,{field: 'node28Deadline$', align: 'center',title: '节点28截止日期'} // ,{field: 'node28RealDeadline$', align: 'center',title: '节点28完工日期'} // ,{field: 'node28ExtraDay', align: 'center',title: '节点28超出日期'} // ,{field: 'node29Name', align: 'center',title: '节点29名称'} // ,{field: 'node29Deadline$', align: 'center',title: '节点29截止日期'} // ,{field: 'node29RealDeadline$', align: 'center',title: '节点29完工日期'} // ,{field: 'node29ExtraDay', align: 'center',title: '节点29超出日期'} // ,{field: 'node30Name', align: 'center',title: '节点30名称'} // ,{field: 'node30Deadline$', align: 'center',title: '节点30截止日期'} // ,{field: 'node30RealDeadline$', align: 'center',title: '节点30完工日期'} // ,{field: 'node30ExtraDay', align: 'center',title: '节点30超出日期'} // ,{field: 'node31Name', align: 'center',title: '节点31名称'} // ,{field: 'node31Deadline$', align: 'center',title: '节点31截止日期'} // ,{field: 'node31RealDeadline$', align: 'center',title: '节点31完工日期'} // ,{field: 'node31ExtraDay', align: 'center',title: '节点31超出日期'} // ,{field: 'node32Name', align: 'center',title: '节点32名称'} // ,{field: 'node32Deadline$', align: 'center',title: '节点32截止日期'} // ,{field: 'node32RealDeadline$', align: 'center',title: '节点32完工日期'} // ,{field: 'node32ExtraDay', align: 'center',title: '节点32超出日期'} // ,{field: 'node33Name', align: 'center',title: '节点33名称'} // ,{field: 'node33Deadline$', align: 'center',title: '节点33截止日期'} // ,{field: 'node33RealDeadline$', align: 'center',title: '节点33完工日期'} // ,{field: 'node33ExtraDay', align: 'center',title: '节点33超出日期'} // ,{field: 'node34Name', align: 'center',title: '节点34名称'} // ,{field: 'node34Deadline$', align: 'center',title: '节点34截止日期'} // ,{field: 'node34RealDeadline$', align: 'center',title: '节点34完工日期'} // ,{field: 'node34ExtraDay', align: 'center',title: '节点34超出日期'} // ,{field: 'node35Name', align: 'center',title: '节点35名称'} // ,{field: 'node35Deadline$', align: 'center',title: '节点35截止日期'} // ,{field: 'node35RealDeadline$', align: 'center',title: '节点35完工日期'} // ,{field: 'node35ExtraDay', align: 'center',title: '节点35超出日期'} // ,{field: 'node36Name', align: 'center',title: '节点36名称'} // ,{field: 'node36Deadline$', align: 'center',title: '节点36截止日期'} // ,{field: 'node36RealDeadline$', align: 'center',title: '节点36完工日期'} // ,{field: 'node36ExtraDay', align: 'center',title: '节点36超出日期'} // ,{field: 'node37Name', align: 'center',title: '节点37名称'} // ,{field: 'node37Deadline$', align: 'center',title: '节点37截止日期'} // ,{field: 'node37RealDeadline$', align: 'center',title: '节点37完工日期'} // ,{field: 'node37ExtraDay', align: 'center',title: '节点37超出日期'} // ,{field: 'node38Name', align: 'center',title: '节点38名称'} // ,{field: 'node38Deadline$', align: 'center',title: '节点38截止日期'} // ,{field: 'node38RealDeadline$', align: 'center',title: '节点38完工日期'} // ,{field: 'node38ExtraDay', align: 'center',title: '节点38超出日期'} // ,{field: 'node39Name', align: 'center',title: '节点39名称'} // ,{field: 'node39Deadline$', align: 'center',title: '节点39截止日期'} // ,{field: 'node39RealDeadline$', align: 'center',title: '节点39完工日期'} // ,{field: 'node39ExtraDay', align: 'center',title: '节点39超出日期'} // ,{field: 'node40Name', align: 'center',title: '节点40名称'} // ,{field: 'node40Deadline$', align: 'center',title: '节点40截止日期'} // ,{field: 'node40RealDeadline$', align: 'center',title: '节点40完工日期'} // ,{field: 'node40ExtraDay', align: 'center',title: '节点40超出日期'} // ,{field: 'node41Name', align: 'center',title: '节点41名称'} // ,{field: 'node41Deadline$', align: 'center',title: '节点41截止日期'} // ,{field: 'node41RealDeadline$', align: 'center',title: '节点41完工日期'} // ,{field: 'node41ExtraDay', align: 'center',title: '节点41超出日期'} // ,{field: 'node42Name', align: 'center',title: '节点42名称'} // ,{field: 'node42Deadline$', align: 'center',title: '节点42截止日期'} // ,{field: 'node42RealDeadline$', align: 'center',title: '节点42完工日期'} // ,{field: 'node42ExtraDay', align: 'center',title: '节点42超出日期'} // ,{field: 'node43Name', align: 'center',title: '节点43名称'} // ,{field: 'node43Deadline$', align: 'center',title: '节点43截止日期'} // ,{field: 'node43RealDeadline$', align: 'center',title: '节点43完工日期'} // ,{field: 'node43ExtraDay', align: 'center',title: '节点43超出日期'} // ,{field: 'node44Name', align: 'center',title: '节点44名称'} // ,{field: 'node44Deadline$', align: 'center',title: '节点44截止日期'} // ,{field: 'node44RealDeadline$', align: 'center',title: '节点44完工日期'} // ,{field: 'node44ExtraDay', align: 'center',title: '节点44超出日期'} // ,{field: 'node45Name', align: 'center',title: '节点45名称'} // ,{field: 'node45Deadline$', align: 'center',title: '节点45截止日期'} // ,{field: 'node45RealDeadline$', align: 'center',title: '节点45完工日期'} // ,{field: 'node45ExtraDay', align: 'center',title: '节点45超出日期'} // ,{field: 'node46Name', align: 'center',title: '节点46名称'} // ,{field: 'node46Deadline$', align: 'center',title: '节点46截止日期'} // ,{field: 'node46RealDeadline$', align: 'center',title: '节点46完工日期'} // ,{field: 'node46ExtraDay', align: 'center',title: '节点46超出日期'} // ,{field: 'node47Name', align: 'center',title: '节点47名称'} // ,{field: 'node47Deadline$', align: 'center',title: '节点47截止日期'} // ,{field: 'node47RealDeadline$', align: 'center',title: '节点47完工日期'} // ,{field: 'node47ExtraDay', align: 'center',title: '节点47超出日期'} // ,{field: 'node48Name', align: 'center',title: '节点48名称'} // ,{field: 'node48Deadline$', align: 'center',title: '节点48截止日期'} // ,{field: 'node48RealDeadline$', align: 'center',title: '节点48完工日期'} // ,{field: 'node48ExtraDay', align: 'center',title: '节点48超出日期'} // ,{field: 'node49Name', align: 'center',title: '节点49名称'} // ,{field: 'node49Deadline$', align: 'center',title: '节点49截止日期'} // ,{field: 'node49RealDeadline$', align: 'center',title: '节点49完工日期'} // ,{field: 'node49ExtraDay', align: 'center',title: '节点49超出日期'} // ,{field: 'node50Name', align: 'center',title: '节点50名称'} // ,{field: 'node50Deadline$', align: 'center',title: '节点50截止日期'} // ,{field: 'node50RealDeadline$', align: 'center',title: '节点50完工日期'} // ,{field: 'node50ExtraDay', align: 'center',title: '节点50超出日期'} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150} ]], request: { pageName: 'curr', pageSize: 'limit' }, parseData: function (res) { return { 'code': res.code, 'msg': res.msg, 'count': res.data.total, 'data': res.data.records } }, response: { statusCode: 200 }, done: function(res, curr, count) { if (res.code === 403) { top.location.href = baseUrl+"/"; } pageCurr=curr; limit(); } }); // 监听排序事件 table.on('sort(itemDetl)', function (obj) { var searchData = {}; $.each($('#search-box [name]').serializeArray(), function() { searchData[this.name] = this.value; }); searchData['orderByField'] = obj.field; searchData['orderByType'] = obj.type; tableIns.reload({ where: searchData, page: {curr: 1} }); }); // 监听头工具栏事件 table.on('toolbar(itemDetl)', function (obj) { var checkStatus = table.checkStatus(obj.config.id).data; switch(obj.event) { case 'addData': showEditModel(); break; case 'deleteData': if (checkStatus.length === 0) { layer.msg('请选择要删除的数据', {icon: 2}); return; } var ids = checkStatus.map(function (d) { return d.id; }); del(ids); break; case 'exportData': layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){ var titles=[]; var fields=[]; obj.config.cols[0].map(function (col) { if (col.type === 'normal' && col.hide === false && col.toolbar == null) { titles.push(col.title); fields.push(col.field); } }); var exportData = {}; $.each($('#search-box [name]').serializeArray(), function() { exportData[this.name] = this.value; }); var param = { 'itemDetl': exportData, 'fields': fields }; $.ajax({ url: baseUrl+"/itemDetl/export/auth", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(param), dataType:'json', contentType:'application/json;charset=UTF-8', method: 'POST', success: function (res) { layer.closeAll(); if (res.code === 200) { table.exportFile(titles,res.data,'xls'); } else if (res.code === 403) { top.location.href = baseUrl+"/"; } else { layer.msg(res.msg, {icon: 2}) } } }); }); break; } }); // 监听行工具事件 table.on('tool(itemDetl)', function(obj){ var data = obj.data; switch (obj.event) { case 'edit': showEditModel(data); break; case "del": var ids = [data.id]; del(ids); break; } }); /* 弹窗 - 新增、修改 */ function showEditModel(mData) { admin.open({ type: 1, area: '600px', title: (mData ? '修改' : '添加') + '订单状态', content: $('#editDialog').html(), success: function (layero, dIndex) { layDateRender(); form.val('detail', mData); form.on('submit(editSubmit)', function (data) { var loadIndex = layer.load(2); $.ajax({ url: baseUrl+"/itemDetl/"+(mData?'update':'add')+"/auth", headers: {'token': localStorage.getItem('token')}, data: data.field, method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200){ layer.close(dIndex); layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}); } } }) return false; }); $(layero).children('.layui-layer-content').css('overflow', 'visible'); layui.form.render('select'); } }); } /* 删除 */ function del(ids) { layer.confirm('确定要删除选中数据吗?', { skin: 'layui-layer-admin', shade: .1 }, function (i) { layer.close(i); var loadIndex = layer.load(2); $.ajax({ url: baseUrl+"/itemDetl/delete/auth", headers: {'token': localStorage.getItem('token')}, data: {ids: ids}, method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200){ layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403){ top.location.href = baseUrl+"/"; } else { layer.msg(res.msg, {icon: 2}); } } }) }); } // 搜索 form.on('submit(search)', function (data) { pageCurr = 1; tableReload(false); }); // 重置 form.on('submit(reset)', function (data) { pageCurr = 1; clearFormVal($('#search-box')); tableReload(false); }); // 时间选择器 function layDateRender() { layDate.render({ elem: '#startDay\\$', type: 'datetime' }); layDate.render({ elem: '#endDay\\$', type: 'datetime' }); layDate.render({ elem: '#node1Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node1RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node2Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node2RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node3Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node3RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node4Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node4RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node5Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node5RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node6Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node6RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node7Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node7RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node8Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node8RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node9Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node9RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node10Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node10RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node11Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node11RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node12Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node12RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node13Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node13RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node14Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node14RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node15Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node15RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node16Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node16RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node17Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node17RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node18Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node18RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node19Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node19RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node20Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node20RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node21Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node21RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node22Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node22RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node23Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node23RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node24Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node24RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node25Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node25RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node26Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node26RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node27Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node27RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node28Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node28RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node29Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node29RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node30Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node30RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node31Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node31RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node32Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node32RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node33Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node33RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node34Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node34RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node35Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node35RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node36Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node36RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node37Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node37RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node38Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node38RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node39Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node39RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node40Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node40RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node41Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node41RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node42Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node42RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node43Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node43RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node44Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node44RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node45Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node45RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node46Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node46RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node47Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node47RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node48Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node48RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node49Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node49RealDeadline\\$', type: 'datetime' }); layDate.render({ elem: '#node50Deadline\\$', type: 'datetime' }); layDate.render({ elem: '#node50RealDeadline\\$', type: 'datetime' }); } layDateRender(); }); // 关闭动作 $(document).on('click','#data-detail-close', function () { parent.layer.closeAll(); }); function tableReload(child) { var searchData = {}; $.each($('#search-box [name]').serializeArray(), function() { searchData[this.name] = this.value; }); tableIns.reload({ where: searchData, page: {curr: pageCurr} }); } src/main/webapp/views/itemDetl/itemDetl.html
New file @@ -0,0 +1,1288 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> <link rel="stylesheet" href="../../static/css/common.css" media="all"> </head> <body> <!-- 搜索栏 --> <div id="search-box" class="layui-form layui-card-header"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off"> </div> </div> <!-- 待添加 --> <div id="data-search-btn" class="layui-btn-container layui-form-item"> <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> </div> </div> <!-- 表格 --> <div class="layui-form"> <table class="layui-hide" id="itemDetl" lay-filter="itemDetl"></table> </div> <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button> <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button> </div> </script> <script type="text/html" id="operate"> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/itemDetl/itemDetl.js" charset="utf-8"></script> </body> <!-- 表单弹窗 --> <script type="text/html" id="editDialog"> <form id="detail" lay-filter="detail" class="layui-form admin-form"> <input name="id" type="hidden"> <div class="layui-row"> <div class="layui-col-md12"> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">ID: </label> <div class="layui-input-block"> <input class="layui-input" name="id" placeholder="请输入ID" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">项目启动日期: </label> <div class="layui-input-block"> <input class="layui-input" name="startDay" id="startDay$" placeholder="请输入项目启动日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">项目结束日期: </label> <div class="layui-input-block"> <input class="layui-input" name="endDay" id="endDay$" placeholder="请输入项目结束日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点1名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node1Name" placeholder="请输入节点1名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点1截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node1Deadline" id="node1Deadline$" placeholder="请输入节点1截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点1完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node1RealDeadline" id="node1RealDeadline$" placeholder="请输入节点1完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点1超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node1ExtraDay" placeholder="请输入节点1超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点2名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node2Name" placeholder="请输入节点2名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点2截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node2Deadline" id="node2Deadline$" placeholder="请输入节点2截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点2完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node2RealDeadline" id="node2RealDeadline$" placeholder="请输入节点2完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点2超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node2ExtraDay" placeholder="请输入节点2超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点3名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node3Name" placeholder="请输入节点3名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点3截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node3Deadline" id="node3Deadline$" placeholder="请输入节点3截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点3完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node3RealDeadline" id="node3RealDeadline$" placeholder="请输入节点3完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点3超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node3ExtraDay" placeholder="请输入节点3超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点4名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node4Name" placeholder="请输入节点4名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点4截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node4Deadline" id="node4Deadline$" placeholder="请输入节点4截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点4完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node4RealDeadline" id="node4RealDeadline$" placeholder="请输入节点4完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点4超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node4ExtraDay" placeholder="请输入节点4超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点5名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node5Name" placeholder="请输入节点5名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点5截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node5Deadline" id="node5Deadline$" placeholder="请输入节点5截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点5完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node5RealDeadline" id="node5RealDeadline$" placeholder="请输入节点5完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点5超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node5ExtraDay" placeholder="请输入节点5超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点6名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node6Name" placeholder="请输入节点6名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点6截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node6Deadline" id="node6Deadline$" placeholder="请输入节点6截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点6完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node6RealDeadline" id="node6RealDeadline$" placeholder="请输入节点6完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点6超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node6ExtraDay" placeholder="请输入节点6超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点7名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node7Name" placeholder="请输入节点7名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点7截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node7Deadline" id="node7Deadline$" placeholder="请输入节点7截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点7完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node7RealDeadline" id="node7RealDeadline$" placeholder="请输入节点7完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点7超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node7ExtraDay" placeholder="请输入节点7超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点8名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node8Name" placeholder="请输入节点8名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点8截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node8Deadline" id="node8Deadline$" placeholder="请输入节点8截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点8完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node8RealDeadline" id="node8RealDeadline$" placeholder="请输入节点8完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点8超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node8ExtraDay" placeholder="请输入节点8超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点9名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node9Name" placeholder="请输入节点9名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点9截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node9Deadline" id="node9Deadline$" placeholder="请输入节点9截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点9完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node9RealDeadline" id="node9RealDeadline$" placeholder="请输入节点9完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点9超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node9ExtraDay" placeholder="请输入节点9超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点10名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node10Name" placeholder="请输入节点10名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点10截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node10Deadline" id="node10Deadline$" placeholder="请输入节点10截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点10完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node10RealDeadline" id="node10RealDeadline$" placeholder="请输入节点10完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点10超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node10ExtraDay" placeholder="请输入节点10超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点11名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node11Name" placeholder="请输入节点11名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点11截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node11Deadline" id="node11Deadline$" placeholder="请输入节点11截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点11完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node11RealDeadline" id="node11RealDeadline$" placeholder="请输入节点11完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点11超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node11ExtraDay" placeholder="请输入节点11超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点12名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node12Name" placeholder="请输入节点12名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点12截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node12Deadline" id="node12Deadline$" placeholder="请输入节点12截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点12完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node12RealDeadline" id="node12RealDeadline$" placeholder="请输入节点12完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点12超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node12ExtraDay" placeholder="请输入节点12超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点13名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node13Name" placeholder="请输入节点13名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点13截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node13Deadline" id="node13Deadline$" placeholder="请输入节点13截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点13完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node13RealDeadline" id="node13RealDeadline$" placeholder="请输入节点13完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点13超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node13ExtraDay" placeholder="请输入节点13超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点14名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node14Name" placeholder="请输入节点14名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点14截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node14Deadline" id="node14Deadline$" placeholder="请输入节点14截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点14完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node14RealDeadline" id="node14RealDeadline$" placeholder="请输入节点14完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点14超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node14ExtraDay" placeholder="请输入节点14超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点15名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node15Name" placeholder="请输入节点15名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点15截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node15Deadline" id="node15Deadline$" placeholder="请输入节点15截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点15完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node15RealDeadline" id="node15RealDeadline$" placeholder="请输入节点15完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点15超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node15ExtraDay" placeholder="请输入节点15超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点16名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node16Name" placeholder="请输入节点16名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点16截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node16Deadline" id="node16Deadline$" placeholder="请输入节点16截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点16完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node16RealDeadline" id="node16RealDeadline$" placeholder="请输入节点16完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点16超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node16ExtraDay" placeholder="请输入节点16超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点17名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node17Name" placeholder="请输入节点17名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点17截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node17Deadline" id="node17Deadline$" placeholder="请输入节点17截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点17完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node17RealDeadline" id="node17RealDeadline$" placeholder="请输入节点17完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点17超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node17ExtraDay" placeholder="请输入节点17超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点18名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node18Name" placeholder="请输入节点18名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点18截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node18Deadline" id="node18Deadline$" placeholder="请输入节点18截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点18完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node18RealDeadline" id="node18RealDeadline$" placeholder="请输入节点18完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点18超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node18ExtraDay" placeholder="请输入节点18超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点19名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node19Name" placeholder="请输入节点19名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点19截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node19Deadline" id="node19Deadline$" placeholder="请输入节点19截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点19完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node19RealDeadline" id="node19RealDeadline$" placeholder="请输入节点19完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点19超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node19ExtraDay" placeholder="请输入节点19超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点20名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node20Name" placeholder="请输入节点20名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点20截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node20Deadline" id="node20Deadline$" placeholder="请输入节点20截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点20完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node20RealDeadline" id="node20RealDeadline$" placeholder="请输入节点20完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点20超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node20ExtraDay" placeholder="请输入节点20超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点21名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node21Name" placeholder="请输入节点21名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点21截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node21Deadline" id="node21Deadline$" placeholder="请输入节点21截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点21完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node21RealDeadline" id="node21RealDeadline$" placeholder="请输入节点21完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点21超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node21ExtraDay" placeholder="请输入节点21超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点22名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node22Name" placeholder="请输入节点22名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点22截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node22Deadline" id="node22Deadline$" placeholder="请输入节点22截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点22完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node22RealDeadline" id="node22RealDeadline$" placeholder="请输入节点22完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点22超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node22ExtraDay" placeholder="请输入节点22超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点23名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node23Name" placeholder="请输入节点23名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点23截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node23Deadline" id="node23Deadline$" placeholder="请输入节点23截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点23完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node23RealDeadline" id="node23RealDeadline$" placeholder="请输入节点23完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点23超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node23ExtraDay" placeholder="请输入节点23超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点24名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node24Name" placeholder="请输入节点24名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点24截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node24Deadline" id="node24Deadline$" placeholder="请输入节点24截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点24完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node24RealDeadline" id="node24RealDeadline$" placeholder="请输入节点24完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点24超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node24ExtraDay" placeholder="请输入节点24超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点25名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node25Name" placeholder="请输入节点25名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点25截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node25Deadline" id="node25Deadline$" placeholder="请输入节点25截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点25完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node25RealDeadline" id="node25RealDeadline$" placeholder="请输入节点25完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点25超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node25ExtraDay" placeholder="请输入节点25超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点26名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node26Name" placeholder="请输入节点26名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点26截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node26Deadline" id="node26Deadline$" placeholder="请输入节点26截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点26完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node26RealDeadline" id="node26RealDeadline$" placeholder="请输入节点26完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点26超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node26ExtraDay" placeholder="请输入节点26超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点27名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node27Name" placeholder="请输入节点27名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点27截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node27Deadline" id="node27Deadline$" placeholder="请输入节点27截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点27完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node27RealDeadline" id="node27RealDeadline$" placeholder="请输入节点27完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点27超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node27ExtraDay" placeholder="请输入节点27超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点28名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node28Name" placeholder="请输入节点28名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点28截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node28Deadline" id="node28Deadline$" placeholder="请输入节点28截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点28完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node28RealDeadline" id="node28RealDeadline$" placeholder="请输入节点28完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点28超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node28ExtraDay" placeholder="请输入节点28超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点29名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node29Name" placeholder="请输入节点29名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点29截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node29Deadline" id="node29Deadline$" placeholder="请输入节点29截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点29完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node29RealDeadline" id="node29RealDeadline$" placeholder="请输入节点29完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点29超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node29ExtraDay" placeholder="请输入节点29超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点30名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node30Name" placeholder="请输入节点30名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点30截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node30Deadline" id="node30Deadline$" placeholder="请输入节点30截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点30完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node30RealDeadline" id="node30RealDeadline$" placeholder="请输入节点30完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点30超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node30ExtraDay" placeholder="请输入节点30超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点31名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node31Name" placeholder="请输入节点31名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点31截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node31Deadline" id="node31Deadline$" placeholder="请输入节点31截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点31完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node31RealDeadline" id="node31RealDeadline$" placeholder="请输入节点31完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点31超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node31ExtraDay" placeholder="请输入节点31超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点32名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node32Name" placeholder="请输入节点32名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点32截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node32Deadline" id="node32Deadline$" placeholder="请输入节点32截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点32完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node32RealDeadline" id="node32RealDeadline$" placeholder="请输入节点32完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点32超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node32ExtraDay" placeholder="请输入节点32超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点33名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node33Name" placeholder="请输入节点33名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点33截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node33Deadline" id="node33Deadline$" placeholder="请输入节点33截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点33完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node33RealDeadline" id="node33RealDeadline$" placeholder="请输入节点33完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点33超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node33ExtraDay" placeholder="请输入节点33超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点34名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node34Name" placeholder="请输入节点34名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点34截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node34Deadline" id="node34Deadline$" placeholder="请输入节点34截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点34完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node34RealDeadline" id="node34RealDeadline$" placeholder="请输入节点34完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点34超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node34ExtraDay" placeholder="请输入节点34超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点35名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node35Name" placeholder="请输入节点35名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点35截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node35Deadline" id="node35Deadline$" placeholder="请输入节点35截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点35完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node35RealDeadline" id="node35RealDeadline$" placeholder="请输入节点35完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点35超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node35ExtraDay" placeholder="请输入节点35超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点36名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node36Name" placeholder="请输入节点36名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点36截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node36Deadline" id="node36Deadline$" placeholder="请输入节点36截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点36完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node36RealDeadline" id="node36RealDeadline$" placeholder="请输入节点36完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点36超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node36ExtraDay" placeholder="请输入节点36超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点37名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node37Name" placeholder="请输入节点37名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点37截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node37Deadline" id="node37Deadline$" placeholder="请输入节点37截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点37完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node37RealDeadline" id="node37RealDeadline$" placeholder="请输入节点37完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点37超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node37ExtraDay" placeholder="请输入节点37超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点38名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node38Name" placeholder="请输入节点38名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点38截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node38Deadline" id="node38Deadline$" placeholder="请输入节点38截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点38完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node38RealDeadline" id="node38RealDeadline$" placeholder="请输入节点38完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点38超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node38ExtraDay" placeholder="请输入节点38超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点39名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node39Name" placeholder="请输入节点39名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点39截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node39Deadline" id="node39Deadline$" placeholder="请输入节点39截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点39完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node39RealDeadline" id="node39RealDeadline$" placeholder="请输入节点39完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点39超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node39ExtraDay" placeholder="请输入节点39超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点40名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node40Name" placeholder="请输入节点40名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点40截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node40Deadline" id="node40Deadline$" placeholder="请输入节点40截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点40完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node40RealDeadline" id="node40RealDeadline$" placeholder="请输入节点40完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点40超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node40ExtraDay" placeholder="请输入节点40超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点41名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node41Name" placeholder="请输入节点41名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点41截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node41Deadline" id="node41Deadline$" placeholder="请输入节点41截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点41完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node41RealDeadline" id="node41RealDeadline$" placeholder="请输入节点41完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点41超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node41ExtraDay" placeholder="请输入节点41超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点42名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node42Name" placeholder="请输入节点42名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点42截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node42Deadline" id="node42Deadline$" placeholder="请输入节点42截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点42完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node42RealDeadline" id="node42RealDeadline$" placeholder="请输入节点42完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点42超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node42ExtraDay" placeholder="请输入节点42超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点43名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node43Name" placeholder="请输入节点43名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点43截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node43Deadline" id="node43Deadline$" placeholder="请输入节点43截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点43完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node43RealDeadline" id="node43RealDeadline$" placeholder="请输入节点43完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点43超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node43ExtraDay" placeholder="请输入节点43超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点44名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node44Name" placeholder="请输入节点44名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点44截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node44Deadline" id="node44Deadline$" placeholder="请输入节点44截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点44完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node44RealDeadline" id="node44RealDeadline$" placeholder="请输入节点44完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点44超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node44ExtraDay" placeholder="请输入节点44超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点45名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node45Name" placeholder="请输入节点45名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点45截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node45Deadline" id="node45Deadline$" placeholder="请输入节点45截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点45完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node45RealDeadline" id="node45RealDeadline$" placeholder="请输入节点45完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点45超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node45ExtraDay" placeholder="请输入节点45超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点46名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node46Name" placeholder="请输入节点46名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点46截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node46Deadline" id="node46Deadline$" placeholder="请输入节点46截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点46完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node46RealDeadline" id="node46RealDeadline$" placeholder="请输入节点46完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点46超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node46ExtraDay" placeholder="请输入节点46超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点47名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node47Name" placeholder="请输入节点47名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点47截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node47Deadline" id="node47Deadline$" placeholder="请输入节点47截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点47完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node47RealDeadline" id="node47RealDeadline$" placeholder="请输入节点47完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点47超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node47ExtraDay" placeholder="请输入节点47超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点48名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node48Name" placeholder="请输入节点48名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点48截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node48Deadline" id="node48Deadline$" placeholder="请输入节点48截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点48完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node48RealDeadline" id="node48RealDeadline$" placeholder="请输入节点48完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点48超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node48ExtraDay" placeholder="请输入节点48超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点49名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node49Name" placeholder="请输入节点49名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点49截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node49Deadline" id="node49Deadline$" placeholder="请输入节点49截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点49完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node49RealDeadline" id="node49RealDeadline$" placeholder="请输入节点49完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点49超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node49ExtraDay" placeholder="请输入节点49超出日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点50名称: </label> <div class="layui-input-block"> <input class="layui-input" name="node50Name" placeholder="请输入节点50名称"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点50截止日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node50Deadline" id="node50Deadline$" placeholder="请输入节点50截止日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点50完工日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node50RealDeadline" id="node50RealDeadline$" placeholder="请输入节点50完工日期"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">节点50超出日期: </label> <div class="layui-input-block"> <input class="layui-input" name="node50ExtraDay" placeholder="请输入节点50超出日期"> </div> </div> </div> </div> <hr class="layui-bg-gray"> <div class="layui-form-item text-right"> <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> </div> </form> </script> </html>