Compare commits

...

3 Commits

  1. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/rest/SlittingproductionplanController.java
  2. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java
  3. 9
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java
  4. 1
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
  5. 88
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java
  6. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java
  7. 13
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java
  8. 7
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java
  9. 3
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java
  10. 8
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java
  11. 33
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
  12. 46
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java
  13. 10
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java
  14. 8
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/controller/RawfoilWorkOrderController.java
  15. 8
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/RawfoilWorkOrderService.java
  16. 2
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/RawfoilWorkOrder.java
  17. 17
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/mapper/CoolPointIvtMapper.xml
  18. 5
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/mapper/RawfoilWorkOrderMapper.xml
  19. 47
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/RawfoilWorkOrderServiceImpl.java
  20. 1
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/SbPointIvtServiceImpl.java
  21. 4
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_CUTPOINTIVT.wql
  22. 29
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql
  23. 2
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java
  24. 7
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java
  25. 31
      lms/nladmin-ui/src/views/wms/pdm/ivt/sbpointivt/index.vue
  26. 2
      lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/Dialog.vue
  27. 92
      lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/index.vue
  28. 10
      lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/rawfoilworkorder.js
  29. 601
      lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/AddDialog.vue
  30. 322
      lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue
  31. 160
      lms/nladmin-ui/src/views/wms/pub/CustomerDialog.vue
  32. 182
      lms/nladmin-ui/src/views/wms/pub/CutpointivtDialog.vue
  33. 191
      lms/nladmin-ui/src/views/wms/pub/SbpointivtDialog.vue

4
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/rest/SlittingproductionplanController.java

@ -37,8 +37,8 @@ public class SlittingproductionplanController {
@Log("新增分切计划") @Log("新增分切计划")
//@SaCheckPermission("@el.check('slittingproductionplan:add')") //@SaCheckPermission("@el.check('slittingproductionplan:add')")
public ResponseEntity<Object> create(@Validated @RequestBody PdmBiSlittingproductionplan dto) { public ResponseEntity<Object> create(@RequestBody JSONObject whereJson) {
biSlittingproductionplanService.create(dto); biSlittingproductionplanService.create(whereJson);
return new ResponseEntity<>(HttpStatus.CREATED); return new ResponseEntity<>(HttpStatus.CREATED);
} }

4
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java

@ -28,9 +28,9 @@ public interface IPdmBiSlittingproductionplanService extends IService<PdmBiSlitt
/** /**
* 创建 * 创建
* @param entity / * @param whereJson /
*/ */
void create(PdmBiSlittingproductionplan entity); void create(JSONObject whereJson);
/** /**
* 编辑 * 编辑

9
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java

@ -178,8 +178,15 @@ public class PdmBiSlittingproductionplan implements Serializable {
private String box_code; private String box_code;
/** 木箱描述 */ /** 木箱描述 */
private String box_description; private String box_description;
/** 批号 */ /** SAP 批号 */
private String pscn; private String pscn;
/** 备注 */ /** 备注 */
private String remark; private String remark;
/** 客户编码 */
private String costomer_code;
/** 客户名称 */
private String costomer_name;
/** 产品厚度 */
private String thickness;
} }

1
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml

@ -252,7 +252,6 @@
<if test="dto.is_parent_ok != null and dto.is_parent_ok != ''"> <if test="dto.is_parent_ok != null and dto.is_parent_ok != ''">
AND plan.is_parent_ok = #{dto.is_parent_ok} AND plan.is_parent_ok = #{dto.is_parent_ok}
</if> </if>
<if test="dto.is_child_tz_ok != null and dto.is_child_tz_ok != ''"> <if test="dto.is_child_tz_ok != null and dto.is_child_tz_ok != ''">
AND plan.is_child_tz_ok = #{dto.is_child_tz_ok} AND plan.is_child_tz_ok = #{dto.is_child_tz_ok}
</if> </if>

88
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java

@ -5,6 +5,7 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -21,6 +22,7 @@ import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils; import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
@ -33,10 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -53,6 +52,8 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
@Autowired @Autowired
private LmsToMesService lmsToMesService; private LmsToMesService lmsToMesService;
@Autowired
private IPdmBiSlittingproductionplanService pdmBiSlittingproductionplanService;
@Override @Override
public Map<String, Object> queryAll(Map whereJson, PageQuery page) { public Map<String, Object> queryAll(Map whereJson, PageQuery page) {
@ -81,17 +82,86 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
} }
@Override @Override
public void create(PdmBiSlittingproductionplan dto) { public void create(JSONObject whereJson) {
String order_type = whereJson.getString("order_type");
String product_name = whereJson.getString("product_name");
String description = whereJson.getString("description");
String parent_container_name = whereJson.getString("parent_container_name");
String restruct_container_name = whereJson.getString("restruct_container_name");
String ware_house = whereJson.getString("ware_house");
String resource_name = whereJson.getString("resource_name");
String split_group = whereJson.getString("split_group");
String manufacture_date = whereJson.getString("manufacture_date");
String customer_code = whereJson.getString("customer_code");
String customer_name = whereJson.getString("customer_name");
JSONArray tableData = whereJson.getJSONArray("tableData");
List<JSONObject> rows = tableData.stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row)))
.collect(Collectors.toList());
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
List<PdmBiSlittingproductionplan> list = new ArrayList<>();
for (int i = 0; i < rows.size(); i++) {
PdmBiSlittingproductionplan pdmBiSlittingproductionplan = pdmBiSlittingproductionplanMapper.selectOne(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.eq(ObjectUtil.isNotEmpty(rows.get(i).getString("container_name")), PdmBiSlittingproductionplan::getContainer_name, rows.get(i).getString("container_name")));
if (ObjectUtil.isNotEmpty(pdmBiSlittingproductionplan)) {
throw new BadRequestException("当前子卷号:" + rows.get(i).getString("container_name") + "已存在分切工单,不允许重复创建!");
}
PdmBiSlittingproductionplan dto = new PdmBiSlittingproductionplan();
dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId()); dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setUpdate_optid(currentUserId); dto.setUpdate_optid(currentUserId);
dto.setOrder_type(order_type);
dto.setProduct_name(product_name);
dto.setDescription(description);
dto.setParent_container_name(parent_container_name);
dto.setRestruct_container_name(restruct_container_name);
if (resource_name.contains("A")) {
dto.setQzz_generation("4");
} else if (resource_name.contains("B")) {
dto.setQzz_generation("5");
}
dto.setWare_house(ware_house);
dto.setResource_name(resource_name);
dto.setSplit_group(split_group);
dto.setManufacture_date(manufacture_date);
dto.setCostomer_code(customer_code);
dto.setCostomer_name(customer_name);
dto.setContainer_name(rows.get(i).getString("container_name"));
dto.setPaper_tube_or_frp(rows.get(i).getString("paper_tube_or_frp"));
if ("1".equals(rows.get(i).getString("paper_tube_or_frp"))) {
dto.setPaper_tube_material(rows.get(i).getString("paper_tube_material"));
dto.setPaper_tube_description(rows.get(i).getString("paper_tube_description"));
dto.setPaper_tube_model(rows.get(i).getString("paper_tube_model"));
// 解析描述数组
String[] tubeArray = rows.get(i).getString("paper_tube_description").split("\\|");
// 定义尺寸与长度
String qzz_size = Character.toString(tubeArray[2].charAt(0));
dto.setQzz_size(qzz_size);
} else if ("2".equals(rows.get(i).getString("paper_tube_or_frp"))) {
dto.setFRP_material(rows.get(i).getString("frp_material"));
dto.setFRP_description(rows.get(i).getString("frp_description"));
dto.setFRP_model(rows.get(i).getString("frp_model"));
String[] tubeArray = rows.get(i).getString("frp_description").split("\\|");
// 定义尺寸与长度
String qzz_size = Character.toString(tubeArray[2].charAt(0));
dto.setQzz_size(qzz_size);
}
dto.setSplit_breadth(rows.get(i).getBigDecimal("split_breadth"));
dto.setSplit_height(rows.get(i).getBigDecimal("split_height"));
dto.setSplit_weight(rows.get(i).getBigDecimal("split_weight"));
dto.setBox_code(rows.get(i).getString("box_code"));
dto.setBox_description(rows.get(i).getString("box_description"));
dto.setUp_or_down(rows.get(i).getString("up_or_down"));
dto.setLeft_or_right(rows.get(i).getString("left_or_right"));
dto.setUpdate_optname(nickName); dto.setUpdate_optname(nickName);
dto.setUpdate_time(now); dto.setUpdate_time(now);
dto.setPscn("N" + TaskUtils.getDateTime("yyMMdd") + CodeUtil.getNewCode("SAP_CODE"));
dto.setMfg_order_name("FQ" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("SBGD_CODE"));
dto.setIs_call("0"); dto.setIs_call("0");
dto.setStart_time(DateUtil.now());
dto.setSale_order_name(IdUtil.getSnowflake(1, 1).nextId() + "");
dto.setStatus("01"); dto.setStatus("01");
dto.setIs_delete("0"); dto.setIs_delete("0");
dto.setIs_paper_ok("0"); dto.setIs_paper_ok("0");
@ -103,7 +173,9 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
} else { } else {
dto.setMaterial_type("FG2"); dto.setMaterial_type("FG2");
} }
pdmBiSlittingproductionplanMapper.insert(dto); list.add(dto);
}
pdmBiSlittingproductionplanService.saveBatch(list);
} }
@Override @Override

2
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java

@ -1,5 +1,6 @@
package org.nl.b_lms.sch.point.service.impl; package org.nl.b_lms.sch.point.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
@ -9,6 +10,7 @@ import cn.hutool.core.date.DateUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.SbPointIvt;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;

13
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.annotation.Log; import org.nl.modules.logging.annotation.Log;
import org.nl.modules.wql.core.content.HttpContext;
import org.nl.wms.pda.mps.service.BakingService; import org.nl.wms.pda.mps.service.BakingService;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -24,7 +25,7 @@ public class BakingController {
@PostMapping("/ovenInAndOut") @PostMapping("/ovenInAndOut")
@Log("烘箱出入") @Log("烘箱出入")
public ResponseEntity<Object> queryRawFoil(@RequestBody JSONObject whereJson) { public ResponseEntity<Object> ovenInAndOut(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bakingService.ovenInAndOut(whereJson), HttpStatus.OK); return new ResponseEntity<>(bakingService.ovenInAndOut(whereJson), HttpStatus.OK);
} }
@ -49,6 +50,16 @@ public class BakingController {
return new ResponseEntity<>(bakingService.reBake(whereJson), HttpStatus.OK); return new ResponseEntity<>(bakingService.reBake(whereJson), HttpStatus.OK);
} }
@PostMapping("/queryHotPoints")
@Log("烘烤区域母卷详情")
public ResponseEntity<Object> queryHotPoints(@RequestBody JSONObject whereJson) {
HttpContext ctx = new HttpContext("11");
ctx.setPage((String) (whereJson.get("page")));
ctx.setRows((String) (whereJson.get("size")));
return new ResponseEntity<>(bakingService.queryHotPoints(whereJson, ctx), HttpStatus.OK);
}
@PostMapping("/inCoolOrOven") @PostMapping("/inCoolOrOven")
@Log("质检不合格") @Log("质检不合格")

7
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java

@ -63,13 +63,6 @@ public class RawFoilController {
return new ResponseEntity<>(rawFoilService.confirmBlanking(whereJson), HttpStatus.OK); return new ResponseEntity<>(rawFoilService.confirmBlanking(whereJson), HttpStatus.OK);
} }
@PostMapping("/start")
@Log("开始生箔工单")
public ResponseEntity<Object> start(@RequestBody JSONObject whereJson) {
rawFoilService.start(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/scrollDowm") @PostMapping("/scrollDowm")
@Log("下卷") @Log("下卷")

3
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java

@ -1,6 +1,7 @@
package org.nl.wms.pda.mps.service; package org.nl.wms.pda.mps.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.modules.wql.core.content.HttpContext;
public interface BakingService { public interface BakingService {
@ -32,4 +33,6 @@ public interface BakingService {
* @return JSONObject * @return JSONObject
*/ */
JSONObject inCoolOrOven(JSONObject whereJson); JSONObject inCoolOrOven(JSONObject whereJson);
JSONObject queryHotPoints(JSONObject whereJson, HttpContext ctx);
} }

8
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java

@ -55,13 +55,5 @@ public interface RawFoilService {
*/ */
JSONObject scrollDowm(JSONObject whereJson); JSONObject scrollDowm(JSONObject whereJson);
/**
* 开始工单
*
* @param whereJson /
* @return JSONObject
*/
JSONObject start(JSONObject whereJson);
JSONObject query(JSONObject whereJson, HttpContext ctx); JSONObject query(JSONObject whereJson, HttpContext ctx);
} }

33
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java

@ -17,7 +17,9 @@ import org.nl.modules.common.utils.RedisUtils;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.core.content.HttpContext;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl; import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.pda.mps.eum.RegionTypeEnum;
@ -549,6 +551,7 @@ public class BakingServiceImpl implements BakingService {
param.put("point_code1", point_code1); param.put("point_code1", point_code1);
param.put("point_code2", endPointCode); param.put("point_code2", endPointCode);
param.put("container_name", container_name); param.put("container_name", container_name);
param.put("request_param", "2");//1-不合格入冷却 2-合格入冷却
param.put("product_area", jsonPoint.getString("product_area")); param.put("product_area", jsonPoint.getString("product_area"));
@ -927,6 +930,7 @@ public class BakingServiceImpl implements BakingService {
param.put("point_code2", endPointCode); param.put("point_code2", endPointCode);
param.put("container_name", container_name); param.put("container_name", container_name);
param.put("product_area", jsonPoint.getString("product_area")); param.put("product_area", jsonPoint.getString("product_area"));
param.put("request_param", "1");//1-不合格入冷却 2-合格入冷却
InCoolIvtTask inCoolIvtTask = new InCoolIvtTask(); InCoolIvtTask inCoolIvtTask = new InCoolIvtTask();
@ -972,4 +976,33 @@ public class BakingServiceImpl implements BakingService {
result.put("message", "操作成功!"); result.put("message", "操作成功!");
return result; return result;
} }
@Override
public JSONObject queryHotPoints(JSONObject whereJson, HttpContext ctx) {
//获取人员对应的区域
UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
String in_area_id = userAreaService.getInArea();
HashMap map = new HashMap();
map.put("flag", "3");
map.put("point_code", whereJson.get("point_code"));
map.put("product_area", whereJson.get("product_area"));
map.put("container_name", whereJson.getString("container_name"));
if (ObjectUtil.isNotEmpty(in_area_id)) {
map.put("in_area_id", in_area_id);
}
JSONObject json = WQL.getWO("ST_IVT_HOTPOINTIVT").addParamMap(map).pageQuery(ctx, "container_name");
JSONArray rows = json.getJSONArray("content");
JSONArray new_rows = new JSONArray();
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
String temperature = (String) redisUtils.hget(row.getString("point_code"), "temperature");
String last_time = (String) redisUtils.hget(row.getString("point_code"), "last_time");
row.put("temperature", temperature);
row.put("last_time", last_time);
new_rows.add(row);
}
json.put("content", new_rows);
return json;
}
} }

46
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java

@ -299,52 +299,6 @@ public class RawFoilServiceImpl implements RawFoilService {
return jo; return jo;
} }
@Override
public JSONObject start(JSONObject whereJson) {
JSONObject raw_jo = whereJson.getJSONObject("raw_jo");
if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("生箔工单不能为空!");
}
RawfoilWorkOrder rawfoilWorkOrder = rawfoilWorkOrderMapper.selectOne(new LambdaQueryWrapper<RawfoilWorkOrder>()
.eq(ObjectUtil.isNotEmpty(raw_jo.getString("workorder_id")), RawfoilWorkOrder::getWorkorder_id, raw_jo.getString("workorder_id")));
if (!StrUtil.equals(rawfoilWorkOrder.getStatus(), "00")) {
throw new BadRequestException("工单状态不为初始化");
}
SbPointIvt sbPointIvt = sbPointIvtMapper.selectOne(new LambdaQueryWrapper<SbPointIvt>()
.eq(ObjectUtil.isNotEmpty(rawfoilWorkOrder.getResource_name()), SbPointIvt::getExt_code, rawfoilWorkOrder.getResource_name()));
if (ObjectUtil.isEmpty(sbPointIvt)) {
throw new BadRequestException("点位:" + rawfoilWorkOrder.getResource_name() + "生箔设备不存在");
}
//查询该生箔工单是否存在未完成的任务
String container_name = raw_jo.getString("container_name");
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("material_code = '" + container_name + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task_jo)) {
throw new BadRequestException("该生箔工单存在未完成的任务,请先完成任务!");
}
if (StrUtil.equals("01", sbPointIvt.getFull_point_status()) && StrUtil.equals("02", sbPointIvt.getEmpty_point_status())) {
//更新点位状态
sbPointIvt.setFull_point_status("02");
sbPointIvt.setEmpty_point_status("01");
sbPointIvtMapper.updateById(sbPointIvt);
rawfoilWorkOrder.setStatus("30");
rawfoilWorkOrder.setFinish_type("02");
rawfoilWorkOrder.setUpdate_time(DateUtil.now());
rawfoilWorkOrderMapper.updateById(rawfoilWorkOrder);
} else {
throw new BadRequestException("当前生箔机:" + sbPointIvt.getExt_code() + "不为满轴位为空且空轴位有轴的状态!");
}
JSONObject jo = new JSONObject();
jo.put("message", "操作成功!");
return jo;
}
@Override @Override
public JSONObject query(JSONObject whereJson, HttpContext ctx) { public JSONObject query(JSONObject whereJson, HttpContext ctx) {
PageHelper.startPage(Integer.parseInt(ctx.getPage()), Integer.parseInt(ctx.getRows())); PageHelper.startPage(Integer.parseInt(ctx.getPage()), Integer.parseInt(ctx.getRows()));

10
lms/nladmin-system/src/main/java/org/nl/wms/pdm/ivt/service/impl/CutPointIvtServiceImpl.java

@ -2,8 +2,10 @@ package org.nl.wms.pdm.ivt.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
@ -46,6 +48,14 @@ public class CutPointIvtServiceImpl implements CutPointIvtService {
if (whereJson.get("point_code") != null) { if (whereJson.get("point_code") != null) {
map.put("point_code", "%" + whereJson.get("point_code") + "%"); map.put("point_code", "%" + whereJson.get("point_code") + "%");
} }
String search = MapUtil.getStr(whereJson, "search");
if (!StrUtil.isEmpty(search)) {
//处理转义字符
if (search.contains("\\")) {
search = search.replace("\\", "\\\\\\");
}
map.put("search", "%" + search + "%");
}
map.put("full_point_status", whereJson.get("full_point_status")); map.put("full_point_status", whereJson.get("full_point_status"));
map.put("empty_point_status", whereJson.get("empty_point_status")); map.put("empty_point_status", whereJson.get("empty_point_status"));
map.put("product_area", whereJson.get("product_area")); map.put("product_area", whereJson.get("product_area"));

8
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/controller/RawfoilWorkOrderController.java

@ -64,6 +64,14 @@ public class RawfoilWorkOrderController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/start")
@Log("开始生箔工单")
public ResponseEntity<Object> start(@RequestBody JSONObject whereJson) {
rawfoilworkorderService.start(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("强制确认") @Log("强制确认")
@PostMapping("/compelEnd") @PostMapping("/compelEnd")

8
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/RawfoilWorkOrderService.java

@ -60,6 +60,14 @@ public interface RawfoilWorkOrderService extends IService<RawfoilWorkOrder> {
*/ */
void deleteAll(Long[] ids); void deleteAll(Long[] ids);
/**
* 开始工单
*
* @param whereJson /
* @return JSONObject
*/
JSONObject start(JSONObject whereJson);
/** /**
* 强制确认 * 强制确认
* *

2
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/RawfoilWorkOrder.java

@ -178,7 +178,7 @@ public class RawfoilWorkOrder implements Serializable {
/** /**
* 母卷状态 * 母卷状态
* 0-未烘烤1-已烘 * 0-未烘烤1-质检合格 2-需复
*/ */
private String roll_status; private String roll_status;

17
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/mapper/CoolPointIvtMapper.xml

@ -45,9 +45,17 @@
SELECT ivt.point_code, SELECT ivt.point_code,
ivt.container_name, ivt.container_name,
ivt.full_point_code, ivt.full_point_code,
ivt.full_point_status, CASE ivt.full_point_status
WHEN '01' THEN '空位'
WHEN '02' THEN '有卷'
ELSE ''
END AS full_point_status,
ivt.empty_point_code, ivt.empty_point_code,
ivt.empty_point_status, CASE ivt.empty_point_status
WHEN '01' THEN '空位'
WHEN '02' THEN '有轴'
ELSE ''
END AS empty_point_status,
CASE der.origin CASE der.origin
WHEN '1' THEN '生箔机' WHEN '1' THEN '生箔机'
WHEN '2' THEN '烘箱' WHEN '2' THEN '烘箱'
@ -56,7 +64,10 @@
END AS origin, END AS origin,
CASE der.roll_status CASE der.roll_status
WHEN '0' THEN '未烘烤' WHEN '0' THEN '未烘烤'
WHEN '1' THEN '已烘烤' WHEN '1' THEN '待质检'
WHEN '2' THEN '正在烘烤'
WHEN '3' THEN '质检合格'
WHEN '4' THEN '需复烤'
ELSE '' ELSE ''
END AS roll_status END AS roll_status
FROM ST_IVT_CoolPointIvt ivt FROM ST_IVT_CoolPointIvt ivt

5
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/dao/mapper/RawfoilWorkOrderMapper.xml

@ -24,7 +24,7 @@
</where> </where>
order by der.realstart_time,der.container_name order by der.realstart_time,der.container_name
</select> </select>
<select id="queryRawFoil" resultType="org.nl.wms.pdm.rawfoilworkorder.service.dao.RawfoilWorkOrder" <select id="queryRawFoil" resultType="org.nl.wms.pdm.rawfoilworkorder.service.dto.RawfoilWorkOrderDto"
parameterType="com.alibaba.fastjson.JSONObject"> parameterType="com.alibaba.fastjson.JSONObject">
SELECT SELECT
der.*, der.*,
@ -52,7 +52,6 @@
CASE der.status CASE der.status
WHEN '00' THEN '初始化' WHEN '00' THEN '初始化'
WHEN '10' THEN '配送中' WHEN '10' THEN '配送中'
WHEN '20' THEN '准备就绪'
WHEN '30' THEN '开始生产' WHEN '30' THEN '开始生产'
WHEN '40' THEN '结束' WHEN '40' THEN '结束'
END AS status_name, END AS status_name,
@ -76,7 +75,7 @@
der.is_delete = '0' der.is_delete = '0'
AND der.status != '40' AND der.status != '40'
<if test="map.getString('point_code') != null and map.getString('point_code') != ''"> <if test="map.getString('point_code') != null and map.getString('point_code') != ''">
AND der.resource_name = #{map.point_code} AND ivt.point_code = #{map.point_code}
</if> </if>
<if test="map.getString('container_name') != null and map.getString('container_name') != ''"> <if test="map.getString('container_name') != null and map.getString('container_name') != ''">

47
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/RawfoilWorkOrderServiceImpl.java

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -19,7 +20,9 @@ import org.nl.b_lms.sch.point.dao.mapper.StIvtSbpointivtMapper;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
//import org.nl.wms.basedata.master.materialbase.service.dao.Materialbase; //import org.nl.wms.basedata.master.materialbase.service.dao.Materialbase;
@ -30,7 +33,9 @@ import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl;
import org.nl.wms.pda.st.service.impl.PrintServiceImpl; import org.nl.wms.pda.st.service.impl.PrintServiceImpl;
import org.nl.wms.pdm.rawfoilworkorder.service.RawfoilWorkOrderService; import org.nl.wms.pdm.rawfoilworkorder.service.RawfoilWorkOrderService;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.RawfoilWorkOrder; import org.nl.wms.pdm.rawfoilworkorder.service.dao.RawfoilWorkOrder;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.SbPointIvt;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.mapper.RawfoilWorkOrderMapper; import org.nl.wms.pdm.rawfoilworkorder.service.dao.mapper.RawfoilWorkOrderMapper;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.mapper.SbPointIvtMapper;
import org.nl.wms.pdm.rawfoilworkorder.service.dto.RawfoilWorkOrderDto; import org.nl.wms.pdm.rawfoilworkorder.service.dto.RawfoilWorkOrderDto;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -62,6 +67,8 @@ public class RawfoilWorkOrderServiceImpl extends ServiceImpl<RawfoilWorkOrderMap
@Autowired @Autowired
SchBaseTaskMapper schBaseTaskMapper; SchBaseTaskMapper schBaseTaskMapper;
@Autowired
SbPointIvtMapper sbPointIvtMapper;
@Override @Override
public Map<String, Object> queryAll(Map whereJson, PageQuery page) { public Map<String, Object> queryAll(Map whereJson, PageQuery page) {
@ -139,6 +146,8 @@ public class RawfoilWorkOrderServiceImpl extends ServiceImpl<RawfoilWorkOrderMap
dto.setUpdate_optname(nickName); dto.setUpdate_optname(nickName);
dto.setUpdate_time(now); dto.setUpdate_time(now);
dto.setCreate_time(now); dto.setCreate_time(now);
dto.setPscn("N" + TaskUtils.getDateTime("yyMMdd")+ CodeUtil.getNewCode("SAP_CODE"));
dto.setMfg_order_name("SB"+TaskUtils.getDateTime("yyMMddHHmmss")+ CodeUtil.getNewCode("SBGD_CODE"));
dto.setOrder_type("2"); dto.setOrder_type("2");
dto.setAgvno("0"); dto.setAgvno("0");
dto.setIs_delete("0"); dto.setIs_delete("0");
@ -196,6 +205,44 @@ public class RawfoilWorkOrderServiceImpl extends ServiceImpl<RawfoilWorkOrderMap
} }
} }
@Override
public JSONObject start(JSONObject whereJson) {
RawfoilWorkOrder rawfoilWorkOrder = rawfoilWorkOrderMapper.selectOne(new LambdaQueryWrapper<RawfoilWorkOrder>()
.eq(ObjectUtil.isNotEmpty(whereJson.getString("workorder_id")), RawfoilWorkOrder::getWorkorder_id, whereJson.getString("workorder_id")));
if (rawfoilWorkOrder== null) {
throw new BadRequestException("查询不到该工单!");
}
if (!StrUtil.equals(rawfoilWorkOrder.getStatus(), "00")) {
throw new BadRequestException("工单状态不为初始化");
}
SbPointIvt sbPointIvt = sbPointIvtMapper.selectOne(new LambdaQueryWrapper<SbPointIvt>()
.eq(ObjectUtil.isNotEmpty(rawfoilWorkOrder.getResource_name()), SbPointIvt::getExt_code, rawfoilWorkOrder.getResource_name()));
if (ObjectUtil.isEmpty(sbPointIvt)) {
throw new BadRequestException("点位:" + rawfoilWorkOrder.getResource_name() + "生箔设备不存在");
}
//查询该生箔工单是否存在未完成的任务
String container_name = whereJson.getString("container_name");
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("material_code = '" + container_name + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task_jo)) {
throw new BadRequestException("该生箔工单存在未完成的任务,请先完成任务!");
}
if (StrUtil.equals("01", sbPointIvt.getFull_point_status()) && StrUtil.equals("02", sbPointIvt.getEmpty_point_status())) {
rawfoilWorkOrder.setStatus("30");
rawfoilWorkOrder.setFinish_type("02");
rawfoilWorkOrder.setUpdate_time(DateUtil.now());
rawfoilWorkOrderMapper.updateById(rawfoilWorkOrder);
} else {
throw new BadRequestException("当前生箔机:" + sbPointIvt.getExt_code() + "不为满轴位为空且空轴位有轴的状态!,请先维护生箔机点位状态再来操作");
}
JSONObject jo = new JSONObject();
jo.put("message", "操作成功!");
return jo;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void compelEnd(JSONObject whereJson) { public void compelEnd(JSONObject whereJson) {

1
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/SbPointIvtServiceImpl.java

@ -47,6 +47,7 @@ public class SbPointIvtServiceImpl extends ServiceImpl<SbPointIvtMapper, SbPoint
wrapper.like(ObjectUtil.isNotEmpty(whereJson.get("point_code")), SbPointIvt::getPoint_code, whereJson.get("point_code")); wrapper.like(ObjectUtil.isNotEmpty(whereJson.get("point_code")), SbPointIvt::getPoint_code, whereJson.get("point_code"));
wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("product_area")), SbPointIvt::getProduct_area, whereJson.get("product_area")); wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("product_area")), SbPointIvt::getProduct_area, whereJson.get("product_area"));
wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("is_used")), SbPointIvt::getIs_used, whereJson.get("is_used")); wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("is_used")), SbPointIvt::getIs_used, whereJson.get("is_used"));
wrapper.like(ObjectUtil.isNotEmpty(whereJson.get("search")), SbPointIvt::getPoint_code, whereJson.get("search"));
// wrapper.in(ObjectUtil.isNotEmpty(in_area_id), SbPointIvt::getProduct_area, in_area_id); // wrapper.in(ObjectUtil.isNotEmpty(in_area_id), SbPointIvt::getProduct_area, in_area_id);
IPage<SbPointIvt> pages = new Page<>(page.getOffset() + 1, page.getPageSize()); IPage<SbPointIvt> pages = new Page<>(page.getOffset() + 1, page.getPageSize());
IPage<SbPointIvt> sbPointIvtList = sbPointIvtMapper.selectPage(pages, wrapper); IPage<SbPointIvt> sbPointIvtList = sbPointIvtMapper.selectPage(pages, wrapper);

4
lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_CUTPOINTIVT.wql

@ -20,6 +20,7 @@
输入.product_area TYPEAS s_string 输入.product_area TYPEAS s_string
输入.is_used TYPEAS s_string 输入.is_used TYPEAS s_string
输入.in_area_id TYPEAS f_string 输入.in_area_id TYPEAS f_string
输入.search TYPEAS s_string
[临时表] [临时表]
@ -57,6 +58,9 @@
OPTION 输入.full_point_status <> "" OPTION 输入.full_point_status <> ""
full_point_status = 输入.full_point_status full_point_status = 输入.full_point_status
ENDOPTION ENDOPTION
OPTION 输入.search <> ""
point_code LIKE 输入.search
ENDOPTION
OPTION 输入.empty_point_status <> "" OPTION 输入.empty_point_status <> ""
empty_point_status = 输入.empty_point_status empty_point_status = 输入.empty_point_status
ENDOPTION ENDOPTION

29
lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql

@ -27,6 +27,7 @@
输入.start_point_code TYPEAS s_string 输入.start_point_code TYPEAS s_string
输入.next_point_code TYPEAS s_string 输入.next_point_code TYPEAS s_string
输入.point_location TYPEAS s_string 输入.point_location TYPEAS s_string
输入.container_name TYPEAS s_string
输入.in_area_id TYPEAS f_string 输入.in_area_id TYPEAS f_string
@ -136,3 +137,31 @@
ENDSELECT ENDSELECT
ENDPAGEQUERY ENDPAGEQUERY
ENDIF ENDIF
IF 输入.flag = "3"
PAGEQUERY
SELECT
hot.*
der.origin
der.roll_status
FROM
PDM_BI_RawFoilWorkOrder der
LEFT JOIN st_ivt_hotpointivt hot ON hot.container_name = der.container_name
LEFT JOIN sch_base_point a ON a.material_code = der.container_name
WHERE
der.is_delete = '0'
AND hot.is_delete = '0'
AND hot.product_area in 输入.in_area_id
OPTION 输入.point_code <> ""
hot.point_code = 输入.point_code
or a.point_code = 输入.point_code
ENDOPTION
OPTION 输入.product_area <> ""
product_area = 输入.product_area
ENDOPTION
OPTION 输入.container_name <> ""
container_name >= 输入.container_name
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

2
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java

@ -279,7 +279,7 @@ public class CoolCutTask extends AbstractAcsTask {
//更新母卷状态 //更新母卷状态
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
map.put("origin", "3"); map.put("origin", "3");
map.put("roll_status", "1"); map.put("roll_status", "3");
map.put("update_optid", currentUserId + ""); map.put("update_optid", currentUserId + "");
map.put("update_optname", currentUsername); map.put("update_optname", currentUsername);
map.put("update_time", DateUtil.now()); map.put("update_time", DateUtil.now());

7
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java

@ -117,8 +117,14 @@ public class InCoolIvtTask extends AbstractAcsTask {
//更新生箔工单母卷信息 //更新生箔工单母卷信息
JSONObject raw_jo = pdm_bi_rawfoilworkorder.query("container_name = '" + jsonTask.getString("material_code") + "'").uniqueResult(0); JSONObject raw_jo = pdm_bi_rawfoilworkorder.query("container_name = '" + jsonTask.getString("material_code") + "'").uniqueResult(0);
String requestParam = jsonTask.getString("request_param");
if ("1".equals(requestParam)) {
raw_jo.put("origin", "2");
raw_jo.put("roll_status", "2");
}else if ("2".equals(requestParam)){
raw_jo.put("origin", "2"); raw_jo.put("origin", "2");
raw_jo.put("roll_status", "1"); raw_jo.put("roll_status", "1");
}
pdm_bi_rawfoilworkorder.update(raw_jo); pdm_bi_rawfoilworkorder.update(raw_jo);
// 更新冷却库存状态 // 更新冷却库存状态
@ -203,6 +209,7 @@ public class InCoolIvtTask extends AbstractAcsTask {
json.put("product_area", form.getString("product_area")); json.put("product_area", form.getString("product_area"));
json.put("sort_seq", "1"); json.put("sort_seq", "1");
json.put("handle_class", THIS_CLASS); json.put("handle_class", THIS_CLASS);
json.put("request_param", form.getString("request_param"));
json.put("create_id", currentUserId); json.put("create_id", currentUserId);
json.put("create_name", currentUsername); json.put("create_name", currentUsername);
json.put("create_time", DateUtil.now()); json.put("create_time", DateUtil.now());

31
lms/nladmin-ui/src/views/wms/pdm/ivt/sbpointivt/index.vue

@ -111,6 +111,37 @@
<el-form-item label="MES启用" prop="is_used"> <el-form-item label="MES启用" prop="is_used">
<el-switch v-model="form.mes_used" active-value="1" inactive-value="0" /> <el-switch v-model="form.mes_used" active-value="1" inactive-value="0" />
</el-form-item> </el-form-item>
<el-form-item label="满轴位状态" prop="full_point_status">
<el-select
v-model="form.full_point_status"
size="mini"
placeholder="满轴位状态"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.sch_full_point_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="空轴位状态" prop="empty_point_status">
<el-select
v-model="form.empty_point_status"
clearable
filterable
size="mini"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.sch_empty_point_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button> <el-button type="text" @click="crud.cancelCU">取消</el-button>

2
lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/Dialog.vue

@ -9,7 +9,7 @@
@close="close" @close="close"
> >
<el-form ref="form" :model="form1" :rules="rules" size="mini" label-width="110px"> <el-form ref="form" :model="form1" :rules="rules" size="mini" label-width="110px">
<el-form-item label="重量" prop="productin_qty"> <el-form-item label="重量(Kg)" prop="productin_qty">
<el-input-number v-model="form1.productin_qty" :min="0" :controls="false" :precision="3" style="width: 250px;"/> <el-input-number v-model="form1.productin_qty" :min="0" :controls="false" :precision="3" style="width: 250px;"/>
</el-form-item> </el-form-item>
</el-form> </el-form>

92
lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/index.vue

@ -84,6 +84,17 @@
</div> </div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'--> <!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission"> <crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="crud.selections.length !== 1"
@click="start"
>
开始工单
</el-button>
<el-button <el-button
slot="right" slot="right"
class="filter-item" class="filter-item"
@ -134,29 +145,17 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="机台编码" prop="resource_name"> <el-form-item label="机台编码" prop="resource_name">
<el-select <el-input v-model="form.resource_name" disabled class="input-with-select">
v-model="form.resource_name" <el-button slot="append" icon="el-icon-search" @click="querySbpointivt()" />
clearable </el-input>
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 250px"
@change="hand"
>
<el-option
v-for="item in resourceList"
:label="item"
:value="item"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="生产工单" prop="mfg_order_name"> <el-form-item label="产品名称" prop="description">
<el-input v-model="form.mfg_order_name" style="width: 250px;" /> <el-input v-model="form.description" disabled style="width: 250px;" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -168,19 +167,6 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="12">
<el-form-item label="产品名称" prop="description">
<el-input v-model="form.description" disabled style="width: 250px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="理论长度" prop="theory_height">
<el-input v-model="form.theory_height" style="width: 250px;" />
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="设备生产速度" prop="eqp_velocity"> <el-form-item label="设备生产速度" prop="eqp_velocity">
@ -204,21 +190,8 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="重量" prop="productin_qty"> <el-form-item label="理论长度" prop="theory_height">
<el-input v-model="form.productin_qty" style="width: 250px;" /> <el-input v-model="form.theory_height" style="width: 250px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="车号" prop="agvno">
<el-input v-model="form.agvno" style="width: 250px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="批次号" prop="pscn">
<el-input v-model="form.pscn" style="width: 250px;" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -255,9 +228,9 @@
<el-table-column prop="theory_height" label="理论长度" :min-width="flexWidth('theory_height',crud.data,'理论长度')" /> <el-table-column prop="theory_height" label="理论长度" :min-width="flexWidth('theory_height',crud.data,'理论长度')" />
<el-table-column prop="realstart_time" label="开始时间" :min-width="flexWidth('realstart_time',crud.data,'开始时间')" /> <el-table-column prop="realstart_time" label="开始时间" :min-width="flexWidth('realstart_time',crud.data,'开始时间')" />
<el-table-column prop="realend_time" label="结束时间" :min-width="flexWidth('realend_time',crud.data,'结束时间')" /> <el-table-column prop="realend_time" label="结束时间" :min-width="flexWidth('realend_time',crud.data,'结束时间')" />
<el-table-column prop="productin_qty" label="重量" :min-width="flexWidth('productin_qty',crud.data,'重量')" :formatter="crud.formatNum3" /> <el-table-column prop="productin_qty" label="重量(Kg)" :min-width="flexWidth('productin_qty',crud.data,'重量(Kg)')" :formatter="crud.formatNum3" />
<el-table-column prop="agvno" label="车号" :min-width="flexWidth('agvno',crud.data,'车号')" /> <el-table-column prop="agvno" label="车号" :min-width="flexWidth('agvno',crud.data,'车号')" />
<el-table-column prop="pscn" label="批次号" :min-width="flexWidth('pscn',crud.data,'批次号')" /> <el-table-column prop="pscn" label="SAP批次号" :min-width="flexWidth('pscn',crud.data,'批次号')" />
<el-table-column prop="product_area" label="生产区域" :min-width="flexWidth('product_area',crud.data,'生产区域')" /> <el-table-column prop="product_area" label="生产区域" :min-width="flexWidth('product_area',crud.data,'生产区域')" />
<el-table-column prop="is_baking" label="请求烘烤" :min-width="flexWidth('is_baking',crud.data,'请求烘烤')" :formatter="formatBakeIsOrNot" /> <el-table-column prop="is_baking" label="请求烘烤" :min-width="flexWidth('is_baking',crud.data,'请求烘烤')" :formatter="formatBakeIsOrNot" />
<el-table-column prop="is_instor" label="请求入半成品库" :min-width="flexWidth('is_instor',crud.data,'请求入半成品库')" :formatter="formatStorIsOrNot" /> <el-table-column prop="is_instor" label="请求入半成品库" :min-width="flexWidth('is_instor',crud.data,'请求入半成品库')" :formatter="formatStorIsOrNot" />
@ -278,6 +251,7 @@
</div> </div>
<Dialog :dialog-show.sync="dialogShow" :open-param="openParam" /> <Dialog :dialog-show.sync="dialogShow" :open-param="openParam" />
<MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" /> <MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" />
<SbpointivtDialog :dialog-show.sync="sbpointivtShow" :mater-opt-code.sync="sbpointivtType" @setSbpointivtValue="setSbpointivtValue" />
</div> </div>
</template> </template>
@ -291,6 +265,7 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation' import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import sbSbpointivt from '@/views/wms/pdm/ivt/sbpointivt/sbpointivt' import sbSbpointivt from '@/views/wms/pdm/ivt/sbpointivt/sbpointivt'
import SbpointivtDialog from '@/views/wms/pub/SbpointivtDialog'
const defaultForm = { const defaultForm = {
workorder_id: null, workorder_id: null,
@ -322,7 +297,7 @@ const defaultForm = {
export default { export default {
name: 'Rawfoilworkorder', name: 'Rawfoilworkorder',
dicts: ['product_area', 'product_status', 'IS_OR_NOT'], dicts: ['product_area', 'product_status', 'IS_OR_NOT'],
components: { pagination, crudOperation, rrOperation, udOperation, Dialog, MaterDialog }, components: { pagination, crudOperation, rrOperation, udOperation, Dialog, MaterDialog, SbpointivtDialog },
mixins: [presenter(), header(), form(defaultForm), crud()], mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() { cruds() {
return CRUD({ return CRUD({
@ -347,6 +322,8 @@ export default {
permission: {}, permission: {},
resourceList: [], resourceList: [],
materShow: false, materShow: false,
sbpointivtType: '',
sbpointivtShow: false,
rules: { rules: {
container_name: [ container_name: [
{ required: true, message: '母卷号不能为空', trigger: 'blur' } { required: true, message: '母卷号不能为空', trigger: 'blur' }
@ -407,7 +384,7 @@ export default {
compelEnd() { compelEnd() {
const _selectData = this.$refs.table.selection const _selectData = this.$refs.table.selection
const data = _selectData[0] const data = _selectData[0]
if (data.status === '09') { if (data.status === '40') {
return this.crud.notify('不能对完成状态的工单强制结束', CRUD.NOTIFICATION_TYPE.INFO) return this.crud.notify('不能对完成状态的工单强制结束', CRUD.NOTIFICATION_TYPE.INFO)
} }
crudRawfoilworkorder.compelEnd(data).then(res => { crudRawfoilworkorder.compelEnd(data).then(res => {
@ -415,10 +392,27 @@ export default {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
}) })
}, },
start() {
const _selectData = this.$refs.table.selection
const data = _selectData[0]
if (data.status !== '00') {
return this.crud.notify('不能对不是初始化状态的工单开始工单', CRUD.NOTIFICATION_TYPE.INFO)
}
crudRawfoilworkorder.start(data).then(res => {
this.crud.toQuery()
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
async querySbpointivt() {
this.sbpointivtShow = true
},
setMaterValue(row) { setMaterValue(row) {
this.form.product_name = row.material_code this.form.product_name = row.material_code
this.form.description = row.material_name this.form.description = row.material_name
}, },
setSbpointivtValue(row) {
this.form.resource_name = row.ext_code
},
print() { print() {
const _selectData = this.$refs.table.selection const _selectData = this.$refs.table.selection
if (!_selectData || _selectData.length < 1) { if (!_selectData || _selectData.length < 1) {

10
lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/rawfoilworkorder.js

@ -48,4 +48,12 @@ export function confirm(data) {
}) })
} }
export default { add, edit, del, compelEnd, confirm, print } export function start(data) {
return request({
url: 'api/rawfoilworkorder/start',
method: 'post',
data
})
}
export default { add, edit, del, compelEnd, confirm, print, start }

601
lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/AddDialog.vue

@ -0,0 +1,601 @@
<template>
<el-dialog
:title="crud.status.title"
append-to-body
fullscreen
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0 || crud.status.view > 0"
width="1200px"
@open="open"
@close="close"
>
<el-row v-show="crud.status.cu > 0" :gutter="20">
<el-col :span="20" style="border: 1px solid white">
<span />
</el-col>
<el-col :span="4">
<span>
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary" @click="crud.submitCU">保存</el-button>
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</el-button>
</span>
</el-col>
</el-row>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
<el-form-item label="生产订单" prop="mfg_order_name">
<el-input v-model="form.mfg_order_name" disabled placeholder="系统生成" style="width: 150px;" />
</el-form-item>
<el-form-item label="订单类型" prop="order_type">
<el-select
v-model="form.order_type"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 150px"
@change="hand1"
>
<el-option
v-for="item in dict.order_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="母卷号" prop="parent_container_name">
<el-input v-model="form.parent_container_name" :disabled="reform_or_normal1()" style="width: 150px;" />
</el-form-item>
<el-form-item label="改制母卷" prop="restruct_container_name">
<el-input v-model="form.restruct_container_name" :disabled="reform_or_normal2()" style="width: 150px;" />
</el-form-item>
<el-form-item label="来源位置" prop="ware_house">
<el-select
v-model="form.ware_house"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 150px"
@change="hand"
>
<el-option
v-for="item in dict.ware_house"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="机台编码" prop="resource_name">
<el-input v-model="form.resource_name" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryCutpointivt()" />
</el-input>
</el-form-item>
<el-form-item label="分切组" prop="split_group">
<el-select
v-model="form.split_group"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 150px"
@change="hand"
>
<el-option
v-for="item in groups"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="生产日期" prop="manufacture_date">
<el-date-picker
v-model="form.manufacture_date"
style="width: 150px;"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
/>
</el-form-item>
<el-form-item label="产品编码" prop="product_name">
<el-input v-model="form.product_name" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryMater(1)" />
</el-input>
</el-form-item>
<el-form-item label="产品描述" prop="description">
<el-input v-model="form.description" disabled style="width: 150px;" />
</el-form-item>
<el-form-item label="客户编码" prop="customer_code">
<el-input v-model="form.customer_code" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryCustomer()" />
</el-input>
</el-form-item>
<el-form-item label="客户名称" prop="customer_name">
<el-input v-model="form.customer_name" disabled style="width: 150px;" />
</el-form-item>
<el-form-item label="明细数" prop="detail_count">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.detail_count" size="mini" disabled style="width: 210px" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" style="width: 150px;" />
</el-form-item>
</el-form>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<div class="crud-opts2" style="margin-bottom: 5px;">
<span class="crud-opts-right2">
<!--左侧插槽-->
<slot name="left" />
<el-button
slot="left"
class="filter-item"
type="primary"
icon="el-icon-plus"
size="mini"
@click="insertdtl()"
>
新增一行
</el-button>
</span>
</div>
<!--表格渲染-->
<el-table
ref="table"
:data="form.tableData"
style="width: 100%;"
border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('container_name',crud.data,'子卷号')" prop="container_name" label="子卷号">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.container_name" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.container_name }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip :min-width="flexWidth('paper_tube_or_frp',crud.data,'管件类型')" prop="paper_tube_or_frp" label="管件类型" >
<template scope="scope">
<el-select
v-show="!scope.row.edit"
v-model="scope.row.paper_tube_or_frp"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 100px"
@change="hand2"
>
<el-option
v-for="item in dict.paper_tube_or_frp_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="paper_tube_material" label="纸筒物料编码" :min-width="flexWidth('paper_tube_material',crud.data,'纸筒物料编码')" >
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.paper_tube_material" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" :disabled="tube_or_FRP1()" @click="queryMater(2,scope.$index, scope.row)" />
</el-input>
<span v-show="scope.row.edit">{{ scope.row.paper_tube_material }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="paper_tube_description" align="center" :min-width="flexWidth('paper_tube_description',crud.data,'纸筒物料描述')" label="纸筒物料描述" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('paper_tube_model',crud.data,'纸筒规格')" prop="paper_tube_model" label="纸筒规格" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('frp_material',crud.data,'FRP管物料编码')" prop="frp_material" label="FRP管物料编码" >
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.frp_material" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" :disabled="tube_or_FRP2()" @click="queryMater(3,scope.$index, scope.row)" />
</el-input>
<span v-show="scope.row.edit">{{ scope.row.frp_material }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip :min-width="flexWidth('frp_description',crud.data,'FRP管物料描述')" prop="frp_description" label="FRP管物料描述" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('frp_model',crud.data,'FRP管规格')" prop="frp_model" label="FRP管规格" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('up_or_down',crud.data,'上轴下轴')" prop="up_or_down" label="上轴下轴" >
<template scope="scope">
<el-select
v-model="scope.row.up_or_down"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
>
<el-option
v-for="item in updowns"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="left_or_right" label="左卷右卷" :min-width="flexWidth('left_or_right',crud.data,'左卷右卷')" >
<template scope="scope">
<el-select
v-model="scope.row.left_or_right"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
>
<el-option
v-for="item in leftorrights"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip :min-width="flexWidth('box_code',crud.data,'木箱物料编码')" prop="frp_material" label="木箱物料编码" >
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.box_code" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryMater(4,scope.$index, scope.row)" />
</el-input>
<span v-show="scope.row.edit">{{ scope.row.box_code }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip :min-width="flexWidth('box_description',crud.data,'木箱描述')" prop="box_description" label="木箱描述" />
<el-table-column show-overflow-tooltip prop="split_breadth" label="子卷幅宽" :min-width="flexWidth('split_breadth',crud.data,'子卷幅宽')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.split_breadth" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.split_breadth }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="split_height" label="子卷理论长度" :min-width="flexWidth('split_height',crud.data,'子卷理论长度')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.split_height" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.split_height }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="split_weight" label="子卷理论长度" :min-width="flexWidth('split_weight',crud.data,'子卷理论重量')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.split_weight" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.split_weight }}</span>
</template>
</el-table-column>
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="120" fixed="right">
<template scope="scope">
<el-button
type="danger"
class="filter-item"
size="mini"
icon="el-icon-delete"
@click.native.prevent="deleteRow(scope.$index, form.tableData)"
/>
</template>
</el-table-column>
</el-table>
<MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" />
<CustomerDialog :dialog-show.sync="customShow" :mater-opt-code.sync="customType" @setCustomValue="setCustomValue" />
<CutpointivtDialog :dialog-show.sync="cutpointivtShow" :mater-opt-code.sync="cutpointivtType" @setCutpointivtValue="setCutpointivtValue" />
</el-dialog>
</template>
<script>
import CRUD, { crud, form } from '@crud/crud'
import crudRawAssist from '@/views/wms/st/inbill/rawassist'
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
import MaterDialog from '@/views/wms/pub/MaterDialog'
import CustomerDialog from '@/views/wms/pub/CustomerDialog'
import CutpointivtDialog from '@/views/wms/pub/CutpointivtDialog'
const defaultForm = {
order_type: null,
product_name: null,
description: null,
parent_container_name: null,
restruct_container_name: null,
ware_house: null,
resource_name: null,
split_group: null,
mfg_order_name: null,
manufacture_date: null,
remark: null,
qzzno: null,
customer_code: null,
customer_name: null,
show_edit: false,
tableData: [],
detail_count: '0'
}
export default {
name: 'AddDialog',
components: { MaterDialog, CustomerDialog, CutpointivtDialog },
mixins: [crud(), form(defaultForm)],
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp_type'],
props: {
dialogShow: {
type: Boolean,
default: false
},
bussConfig: {
type: Object
},
openParam: {
type: Object
}
},
data() {
return {
paper_type: '',
order_type_select: '',
groups: ['A', 'B', 'C', 'D', 'F'],
updowns: [{
value: '1',
label: '上轴'
}, {
value: '2',
label: '下轴'
}],
leftorrights: [{
value: '1',
label: '左卷'
}, {
value: '2',
label: '右卷'
}],
dialogVisible: false,
dtlShow: false,
opendtlParam: null,
bill_btn: false,
mater_btn: false,
storlist: [],
nowrow: {},
nowindex: '',
billtypelist: [],
materType: '',
customType: '',
cutpointivtType: '',
indexType: '',
materShow: false,
customShow: false,
cutpointivtShow: false,
rules: {
order_type: [
{ required: true, message: '订单类型不能为空', trigger: 'blur' }
]
}
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
open() {
crudUserStor.getUserStor().then(res => {
this.storlist = res
})
},
close() {
this.$emit('AddChanged')
},
[CRUD.HOOK.afterToEdit]() {
//
crudRawAssist.getIODtl({ 'bill_code': this.form.bill_code }).then(res => {
this.form.tableData = res
//
for (let i = 0; i < this.form.tableData.length; i++) {
const row = this.form.tableData[i]
this.form.tableData.splice(i, 1, row)
}
})
},
[CRUD.HOOK.afterToAdd]() {
this.bill_btn = false
this.mater_btn = false
},
[CRUD.HOOK.afterToView]() {
this.bill_btn = true
this.mater_btn = true
crudRawAssist.getIODtl({ 'bill_code': this.form.bill_code }).then(res => {
this.form.tableData = res
//
for (let i = 0; i < this.form.tableData.length; i++) {
const row = this.form.tableData[i]
this.form.tableData.splice(i, 1, row)
}
})
},
[CRUD.HOOK.beforeSubmit]() {
//
if (this.form.tableData.length === 0) {
this.crud.notify('请至少选择一条明细', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
},
billTypeChange(val) {
if (val === '000101') {
this.bill_btn = false
this.mater_btn = true
} else if (val === '000102') {
this.bill_btn = true
this.mater_btn = false
} else {
this.bill_btn = true
this.mater_btn = true
}
this.form.tableData = []
this.form.total_qty = 0
this.form.detail_count = 0
},
tableChanged2(row) {
//
this.nowrow.material_code = row.material_code
this.nowrow.material_id = row.material_id
this.nowrow.material_name = row.material_name
this.nowrow.qty_unit_id = row.base_unit_id
this.nowrow.qty_unit_name = row.unit_name
this.form.tableData.splice(this.nowindex, 1, this.nowrow) // splice
},
fun(val) {
return Number(val).toFixed(3)
},
// async queryMater(index, row) {
// checkoutbill.paramByCodeType({ 'bill_type': this.form.bill_type, 'io_flag': '00' }).then(res => {
// this.materType = res.materType
// this.materShow = true
// this.nowindex = index
// this.nowrow = row
// })
// },
hand() {
this.crud.toQuery()
},
hand1(val) {
this.order_type_select = val
},
hand2(val) {
this.paper_type = val
},
async queryMater(index1, index, row) {
this.indexType = index1
this.materShow = true
this.nowindex = index
this.nowrow = row
// 7019FRP482244157410
if (index1 === 1) {
this.materType = '7410'
} else if (index1 === 2) {
this.materType = '4822'
} else if (index1 === 3) {
this.materType = '7019'
} else if (index1 === 4) {
this.materType = '4415'
}
},
async queryCustomer() {
this.customShow = true
},
async queryCutpointivt() {
this.cutpointivtShow = true
},
async insertdtl() {
this.form.tableData.push({ container_name: '', paper_tube_or_frp: '', paper_tube_material: '', paper_tube_description: '', paper_tube_model: '', frp_material: '', frp_description: '', frp_model: '', up_or_down: '', left_or_right: '', box_code: '', box_description: '', box_model: '', split_length: '', split_breadth: '', split_weight: '', edit: false })
this.form.detail_count = this.form.tableData.length
},
tube_or_FRP1() {
if (this.paper_type === '1') {
return false
} else {
return true
}
},
tube_or_FRP2() {
if (this.paper_type === '2') {
return false
} else {
return true
}
},
reform_or_normal1() {
if (this.order_type_select === '1') {
return false
} else {
return true
}
},
reform_or_normal2() {
if (this.order_type_select === '2') {
return false
} else {
return true
}
},
setMaterValue(row) {
if (this.indexType === 1) {
this.form.product_name = row.material_code
this.form.description = row.material_name
} else if (this.indexType === 2) {
this.nowrow.paper_tube_material = row.material_code
this.nowrow.paper_tube_description = row.material_name
this.nowrow.paper_tube_model = row.material_name
} else if (this.indexType === 3) {
this.nowrow.frp_material = row.material_code
this.nowrow.frp_description = row.material_name
this.nowrow.frp_model = row.material_name
} else if (this.indexType === 4) {
this.nowrow.box_code = row.material_code
this.nowrow.box_description = row.material_name
}
this.nowrow.edit = false
this.form.tableData.splice(this.nowindex, 1, this.nowrow) // splice
},
setCustomValue(row) {
this.form.customer_code = row.cust_code
this.form.customer_name = row.cust_name
},
setCutpointivtValue(row) {
this.form.resource_name = row.ext_code
},
deleteRow(index, rows) {
const container_name = rows[index].container_name
let len = rows.length
while (len--) {
const obj = rows[len]
if (container_name === obj.container_name) {
const index = rows.indexOf(obj)
if (index > -1) { //
rows.splice(index, 1)
this.form.detail_count = this.form.tableData.length
}
}
}
},
tableChanged(rows) {
debugger
//
rows.forEach((item) => {
let same_mater = true
this.form.tableData.forEach((row) => {
if (row.container_name === item.container_name) {
same_mater = false
}
})
if (same_mater) {
item.quality_scode = '01'
item.ivt_level = '01'
item.is_active = '1'
this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty)
this.form.tableData.splice(-1, 0, item)
}
})
this.form.detail_count = this.form.tableData.length
},
async insertEvent(row) {
if (this.form.bill_type === '') {
this.crud.notify('请选择业务类型!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
this.opendtlParam = {
optType: 'add'
}
this.dtlShow = true
}
}
}
</script>
<style>
.crud-opts2 {
padding: 4px 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .crud-opts-right2 {
margin-left: auto;
}
</style>

322
lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue

@ -333,296 +333,6 @@
</el-button> </el-button>
</crudOperation> </crudOperation>
<!--表单组件--> <!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="1200px">
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="150px">
<el-row>
<el-col :span="12">
<el-form-item label="订单类型" prop="order_type">
<el-select
v-model="form.order_type"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand1"
>
<el-option
v-for="item in dict.order_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子卷号" prop="container_name">
<el-input v-model="form.container_name" style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="产品编码" prop="product_name">
<el-input v-model="form.product_name" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryMater(1)" />
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品描述" prop="description">
<el-input v-model="form.description" disabled style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="来源母卷号" prop="parent_container_name">
<el-input v-model="form.parent_container_name" :disabled="reform_or_normal1()" style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="改制来源子卷号" prop="restruct_container_name">
<el-input v-model="form.restruct_container_name" :disabled="reform_or_normal2()" style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="子卷立库木箱号" prop="package_box_sn">
<el-input v-model="form.package_box_sn" style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="来源卷位置" prop="ware_house">
<el-select
v-model="form.ware_house"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand"
>
<el-option
v-for="item in dict.ware_house"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分切机台编码" prop="resource_name">
<el-select
v-model="form.resource_name"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand"
>
<el-option
v-for="item in resourceList"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="分切组" prop="split_group">
<el-select
v-model="form.split_group"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand"
>
<el-option
v-for="item in groups"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="批次号" prop="pscn">
<el-input v-model="form.pscn" style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产订单" prop="mfg_order_name">
<el-input v-model="form.mfg_order_name" style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="生产日期" prop="manufacture_date">
<el-date-picker
v-model="form.manufacture_date"
style="width: 370px;"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="管件类型" prop="paper_tube_or_frp">
<el-select
v-model="form.paper_tube_or_frp"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand2"
>
<el-option
v-for="item in dict.paper_tube_or_frp_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="纸筒物料编码" prop="paper_tube_material">
<el-input v-model="form.paper_tube_material" disabled class="input-with-select" style="width: 370px;">
<el-button slot="append" :disabled="tube_or_FRP1()" icon="el-icon-search" @click="queryMater(2)" />
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="纸筒物料描述" prop="paper_tube_description">
<el-input v-model="form.paper_tube_description" disabled style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="纸筒规格" prop="paper_tube_model">
<el-input v-model="form.paper_tube_model" disabled style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="FRP管物料编码" prop="frp_material">
<el-input v-model="form.frp_material" disabled class="input-with-select" style="width: 370px;">
<el-button slot="append" :disabled="tube_or_FRP2()" icon="el-icon-search" @click="queryMater(3)" />
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="FRP管物料描述" prop="frp_description">
<el-input v-model="form.frp_description" disabled style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="FRP管规格" prop="frp_model">
<el-input v-model="form.frp_model" disabled style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="子卷幅宽" prop="split_breadth">
<el-input v-model="form.split_breadth" style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子卷理论长度" prop="split_height">
<el-input v-model="form.split_height" style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="木箱物料编码" prop="box_code">
<el-input v-model="form.box_code" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryMater(4)" />
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="木箱描述" prop="box_description">
<el-input v-model="form.box_description" disabled style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="上轴下轴" prop="up_or_down">
<el-select
v-model="form.up_or_down"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand"
>
<el-option
v-for="item in updowns"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="左卷右卷" prop="left_or_right">
<el-select
v-model="form.left_or_right"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 370px"
@change="hand"
>
<el-option
v-for="item in leftorrights"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="子卷理论重量" prop="split_weight">
<el-input v-model="form.split_weight" style="width: 370px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="销售订单及行号" prop="sale_order_name">
<el-input v-model="form.sale_order_name" style="width: 370px;" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染--> <!--表格渲染-->
<el-table <el-table
ref="table" ref="table"
@ -683,7 +393,7 @@
<el-table-column prop="frp_model" label="FRP管规格" min-width="140" show-overflow-tooltip /> <el-table-column prop="frp_model" label="FRP管规格" min-width="140" show-overflow-tooltip />
<el-table-column prop="box_code" label="木箱物料编码" min-width="140" show-overflow-tooltip /> <el-table-column prop="box_code" label="木箱物料编码" min-width="140" show-overflow-tooltip />
<el-table-column prop="box_description" label="木箱描述" min-width="140" show-overflow-tooltip /> <el-table-column prop="box_description" label="木箱描述" min-width="140" show-overflow-tooltip />
<el-table-column prop="pscn" label="批次号" min-width="140" show-overflow-tooltip /> <el-table-column prop="pscn" label="SAP批次号" min-width="140" show-overflow-tooltip />
<el-table-column prop="is_parent_ok" label="母卷上料完成" width="100px" :formatter="formatParentName" /> <el-table-column prop="is_parent_ok" label="母卷上料完成" width="100px" :formatter="formatParentName" />
<el-table-column prop="is_child_tz_ok" label="子卷套轴完成" width="100px" :formatter="formatChildName" /> <el-table-column prop="is_child_tz_ok" label="子卷套轴完成" width="100px" :formatter="formatChildName" />
<el-table-column prop="is_child_ps_ok" label="子卷配送完成" width="100px" :formatter="formatChildPsName" /> <el-table-column prop="is_child_ps_ok" label="子卷配送完成" width="100px" :formatter="formatChildPsName" />
@ -715,8 +425,11 @@
<!--分页组件--> <!--分页组件-->
<pagination /> <pagination />
</div> </div>
<AddDialog @AddChanged="querytable" />
<tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" /> <tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" />
<MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" /> <MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" />
<CustomerDialog :dialog-show.sync="customShow" :mater-opt-code.sync="customType" @setCustomValue="setCustomValue" />
<CutpointivtDialog :dialog-show.sync="cutpointivtShow" :mater-opt-code.sync="cutpointivtType" @setCutpointivtValue="setCutpointivtValue" />
</div> </div>
</template> </template>
@ -729,7 +442,10 @@ import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import TubeDialog2 from '@/views/wms/pdm/order/slittingplan/tubeDialog2.vue' import TubeDialog2 from '@/views/wms/pdm/order/slittingplan/tubeDialog2.vue'
import MaterDialog from '@/views/wms/pub/MaterDialog' import MaterDialog from '@/views/wms/pub/MaterDialog'
import CustomerDialog from '@/views/wms/pub/CustomerDialog'
import CutpointivtDialog from '@/views/wms/pub/CutpointivtDialog'
import cutSbpointivt from '@/views/wms/pdm/ivt/cutpointivt/cutpointivt' import cutSbpointivt from '@/views/wms/pdm/ivt/cutpointivt/cutpointivt'
import AddDialog from '@/views/wms/pdm/order/slittingplan/AddDialog'
const defaultForm = { const defaultForm = {
workorder_id: null, workorder_id: null,
@ -780,6 +496,8 @@ const defaultForm = {
box_code: null, box_code: null,
box_description: null, box_description: null,
pscn: null, pscn: null,
customer_code: null,
customer_name: null,
joint_type: null, joint_type: null,
paper_weight: null, paper_weight: null,
show_edit: false show_edit: false
@ -787,7 +505,7 @@ const defaultForm = {
export default { export default {
name: 'Slittingproductionplan', name: 'Slittingproductionplan',
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp_type', 'IS_OR_NOT'], dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp_type', 'IS_OR_NOT'],
components: { pagination, crudOperation, rrOperation, udOperation, TubeDialog2, MaterDialog }, components: { pagination, crudOperation, rrOperation, udOperation, TubeDialog2, MaterDialog, CustomerDialog, CutpointivtDialog, AddDialog },
mixins: [presenter(), header(), form(defaultForm), crud()], mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() { cruds() {
return CRUD({ return CRUD({
@ -829,8 +547,12 @@ export default {
label: '右卷' label: '右卷'
}], }],
materType: '', materType: '',
customType: '',
cutpointivtType: '',
indexType: '', indexType: '',
materShow: false, materShow: false,
customShow: false,
cutpointivtShow: false,
rules: { rules: {
order_type: [ order_type: [
{ required: true, message: '分切订单类型不能为空', trigger: 'blur' } { required: true, message: '分切订单类型不能为空', trigger: 'blur' }
@ -880,9 +602,6 @@ export default {
box_description: [ box_description: [
{ required: true, message: '木箱描述不能为空', trigger: 'blur' } { required: true, message: '木箱描述不能为空', trigger: 'blur' }
], ],
pscn: [
{ required: true, message: '批次号不能为空', trigger: 'blur' }
],
manufacture_date: [ manufacture_date: [
{ required: true, message: '生产日期不能为空', trigger: 'blur' } { required: true, message: '生产日期不能为空', trigger: 'blur' }
], ],
@ -929,6 +648,12 @@ export default {
this.materType = '4415' this.materType = '4415'
} }
}, },
async queryCustomer() {
this.customShow = true
},
async queryCutpointivt() {
this.cutpointivtShow = true
},
querytable() { querytable() {
this.$refs.table.clearSelection() this.$refs.table.clearSelection()
this.crud.toQuery() this.crud.toQuery()
@ -988,6 +713,13 @@ export default {
this.form.box_description = row.material_name this.form.box_description = row.material_name
} }
}, },
setCustomValue(row) {
this.form.customer_code = row.cust_code
this.form.customer_name = row.cust_name
},
setCutpointivtValue(row) {
this.form.resource_name = row.ext_code
},
caseFinish() { caseFinish() {
const _selectData = this.$refs.table.selection const _selectData = this.$refs.table.selection
const data = { const data = {

160
lms/nladmin-ui/src/views/wms/pub/CustomerDialog.vue

@ -0,0 +1,160 @@
<template>
<el-dialog
title="客户选择"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="1000px"
@close="close"
@open="open"
>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="模糊搜索">
<el-input
v-model="query.search"
clearable
size="mini"
placeholder="可客户编码、客户名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
size="mini"
border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
@select="handleSelectionChange"
@select-all="onSelectAll"
@current-change="clickChange"
>
<el-table-column v-if="!isSingle" type="selection" width="55" />
<el-table-column v-if="isSingle" label="选择" width="55">
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
</template>
</el-table-column>
<el-table-column prop="cust_code" label="客户编码" min-width="150" show-overflow-tooltip />
<el-table-column prop="cust_name" label="客户名称" min-width="200" show-overflow-tooltip />
<el-table-column prop="cust_simple_name" label="客户简称" show-overflow-tooltip />
<el-table-column prop="corp_address" label="公司地址" show-overflow-tooltip />
<el-table-column prop="faxnumber" label="公司电话" show-overflow-tooltip />
</el-table>
<!--分页组件-->
<pagination />
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import crudCustomerbase from '@/views/wms/basedata/master/customer/customerbase'
import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
export default {
name: 'CustomerDtl',
components: { rrOperation, pagination },
cruds() {
return CRUD({ title: '客户', url: 'api/customerbase', crudMethod: { ...crudCustomerbase }, optShow: {}})
},
mixins: [presenter(), header()],
dicts: ['product_series'],
props: {
dialogShow: {
type: Boolean,
default: false
},
isSingle: {
type: Boolean,
default: true
},
materOptCode: {
type: String,
default: ''
}
},
data() {
return {
dialogVisible: false,
tableRadio: null,
checkrow: null,
rows: []
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
}
},
methods: {
clickChange(item) {
this.tableRadio = item
},
seriesFormat(row) {
return this.dict.label.product_series[row.product_series]
},
open() {
this.crud.query.material_type_id = this.materOptCode
this.crud.toQuery()
},
handleSelectionChange(val, row) {
if (this.isSingle) {
if (val.length > 1) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(val.pop())
} else {
this.checkrow = row
}
}
},
onSelectAll() {
this.$refs.table.clearSelection()
},
close() {
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
},
submit() {
//
if (this.isSingle && this.tableRadio) {
this.$emit('update:dialogShow', false)
this.$emit('setCustomValue', this.tableRadio)
return
}
this.rows = this.$refs.table.selection
if (this.rows.length <= 0) {
this.$message('请先勾选物料')
return
}
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
this.$emit('setCustomValue', this.rows)
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 0px;
}
</style>

182
lms/nladmin-ui/src/views/wms/pub/CutpointivtDialog.vue

@ -0,0 +1,182 @@
<template>
<el-dialog
title="分切点位选择"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="1000px"
@close="close"
@open="open"
>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="模糊搜索">
<el-input
v-model="query.search"
clearable
size="mini"
placeholder="可点位编号、外部编码"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
size="mini"
border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
@select="handleSelectionChange"
@select-all="onSelectAll"
@current-change="clickChange"
>
<el-table-column v-if="!isSingle" type="selection" width="55" />
<el-table-column v-if="isSingle" label="选择" width="55">
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
</template>
</el-table-column>
<el-table-column prop="point_code" label="点位编码" width="100px" show-overflow-tooltip />
<el-table-column prop="full_point_code" label="满轴位" width="110px" show-overflow-tooltip />
<el-table-column prop="full_point_status" label="满轴位状态" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.sch_full_point_status[scope.row.full_point_status] }}
</template>
</el-table-column>
<el-table-column prop="container_name" label="母卷号" width="150px" show-overflow-tooltip />
<el-table-column prop="empty_point_status" label="空轴位状态" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.sch_empty_point_status[scope.row.empty_point_status] }}
</template>
</el-table-column>
<el-table-column prop="empty_vehicle_code" label="空轴编码" width="120px" show-overflow-tooltip />
<el-table-column prop="up_qzzno" label="上气胀轴编码" width="100px" show-overflow-tooltip />
<el-table-column prop="down_qzzno" label="下气胀轴编码" width="100px" show-overflow-tooltip />
<el-table-column prop="ext_code" label="外部编码" width="100px" show-overflow-tooltip />
<el-table-column prop="product_area" label="生产区域" />
<el-table-column prop="point_location" label="位置">
<template slot-scope="scope">
{{ dict.label.point_location[scope.row.point_location] }}
</template>
</el-table-column>
<el-table-column prop="is_used" label="是否启用">
<template slot-scope="scope">
{{ dict.label.is_used[scope.row.is_used] }}
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import crudCutpointivt from '@/views/wms/pdm/ivt/cutpointivt/cutpointivt'
import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
export default {
name: 'CutpointivtDtl',
components: { rrOperation, pagination },
cruds() {
return CRUD({ title: '分切设备', url: 'api/cutpointivt', crudMethod: { ...crudCutpointivt }, optShow: {}})
},
mixins: [presenter(), header()],
dicts: ['sch_full_point_status', 'sch_empty_point_status', 'product_area', 'is_used', 'point_location'],
props: {
dialogShow: {
type: Boolean,
default: false
},
isSingle: {
type: Boolean,
default: true
},
materOptCode: {
type: String,
default: ''
}
},
data() {
return {
dialogVisible: false,
tableRadio: null,
checkrow: null,
rows: []
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
}
},
methods: {
clickChange(item) {
this.tableRadio = item
},
seriesFormat(row) {
return this.dict.label.product_series[row.product_series]
},
open() {
this.crud.query.material_type_id = this.materOptCode
this.crud.toQuery()
},
handleSelectionChange(val, row) {
if (this.isSingle) {
if (val.length > 1) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(val.pop())
} else {
this.checkrow = row
}
}
},
onSelectAll() {
this.$refs.table.clearSelection()
},
close() {
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
},
submit() {
//
if (this.isSingle && this.tableRadio) {
this.$emit('update:dialogShow', false)
this.$emit('setCutpointivtValue', this.tableRadio)
return
}
this.rows = this.$refs.table.selection
if (this.rows.length <= 0) {
this.$message('请先勾选分切点位')
return
}
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
this.$emit('setCutpointivtValue', this.rows)
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 0px;
}
</style>

191
lms/nladmin-ui/src/views/wms/pub/SbpointivtDialog.vue

@ -0,0 +1,191 @@
<template>
<el-dialog
title="生箔点位选择"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="1000px"
@close="close"
@open="open"
>
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="模糊搜索">
<el-input
v-model="query.search"
clearable
size="mini"
placeholder="可点位编号、外部编码"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
size="mini"
border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
@select="handleSelectionChange"
@select-all="onSelectAll"
@current-change="clickChange"
>
<el-table-column v-if="!isSingle" type="selection" width="55" />
<el-table-column v-if="isSingle" label="选择" width="55">
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
</template>
</el-table-column>
<el-table-column prop="point_code" label="点位编码" />
<el-table-column prop="vehicle_code" label="载具编码" />
<el-table-column prop="full_point_code" label="满轴位" :min-width="flexWidth('full_point_code',crud.data,'满轴位')" />
<el-table-column prop="full_point_status" label="满轴位状态" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.sch_full_point_status[scope.row.full_point_status] }}
</template>
</el-table-column>
<el-table-column prop="empty_point_code" label="空轴位" :min-width="flexWidth('empty_point_code',crud.data,'空轴位')" />
<el-table-column prop="empty_point_status" label="空轴位状态" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.sch_empty_point_status[scope.row.empty_point_status] }}
</template>
</el-table-column>
<el-table-column prop="product_area" label="生产区域">
<template slot-scope="scope">
{{ dict.label.product_area[scope.row.product_area] }}
</template>
</el-table-column>
<el-table-column prop="point_location" label="位置">
<template slot-scope="scope">
{{ dict.label.point_location[scope.row.point_location] }}
</template>
</el-table-column>
<el-table-column prop="ext_code" label="外部编码" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="is_used" label="是否启用">
<template slot-scope="scope">
{{ dict.label.is_used[scope.row.is_used] }}
</template>
</el-table-column>
<el-table-column prop="mes_used" label="MES启用">
<template slot-scope="scope">
{{ dict.label.is_used[scope.row.mes_used] }}
</template>
</el-table-column>
<el-table-column prop="update_time" label="修改时间" min-width="150" show-overflow-tooltip />
</el-table>
<!--分页组件-->
<pagination />
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import crudSbpointivt from '@/views/wms/pdm/ivt/sbpointivt/sbpointivt'
import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
export default {
name: 'SbpointivtDtl',
components: { rrOperation, pagination },
cruds() {
return CRUD({ title: '机台编码', url: 'api/sbpointivt', crudMethod: { ...crudSbpointivt }, optShow: {}})
},
mixins: [presenter(), header()],
dicts: ['product_series', 'product_area', 'is_used', 'point_location', 'sch_full_point_status', 'sch_empty_point_status'],
props: {
dialogShow: {
type: Boolean,
default: false
},
isSingle: {
type: Boolean,
default: true
},
materOptCode: {
type: String,
default: ''
}
},
data() {
return {
dialogVisible: false,
tableRadio: null,
checkrow: null,
rows: []
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
}
},
methods: {
clickChange(item) {
this.tableRadio = item
},
seriesFormat(row) {
return this.dict.label.product_series[row.product_series]
},
open() {
this.crud.query.material_type_id = this.materOptCode
this.crud.toQuery()
},
handleSelectionChange(val, row) {
if (this.isSingle) {
if (val.length > 1) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(val.pop())
} else {
this.checkrow = row
}
}
},
onSelectAll() {
this.$refs.table.clearSelection()
},
close() {
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
},
submit() {
//
if (this.isSingle && this.tableRadio) {
this.$emit('update:dialogShow', false)
this.$emit('setSbpointivtValue', this.tableRadio)
return
}
this.rows = this.$refs.table.selection
if (this.rows.length <= 0) {
this.$message('请先勾选生箔点位')
return
}
this.crud.resetQuery(false)
this.$emit('update:dialogShow', false)
this.$emit('setSbpointivtValue', this.rows)
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 0px;
}
</style>
Loading…
Cancel
Save