From 7b142f95c47f673c4468468406d1d1c01e48ab6e Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 7 Nov 2023 16:10:19 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=96=B0=E5=A2=9E=E6=88=90=E5=93=81?= =?UTF-8?q?=E6=8A=A5=E5=BA=9F=E5=AE=A1=E6=A0=B8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 309248 -> 317440 bytes .../instor/rest/ProductScrapController.java | 79 +++ .../instor/service/ProductScrapService.java | 52 ++ .../service/impl/ProductScrapServiceImpl.java | 287 +++++++++++ .../st/instor/wql/QST_IVT_PRODUCTSCRAP.wql | 112 +++++ .../wms/st/inStor/productscrap/AddDialog.vue | 476 ++++++++++++++++++ .../wms/st/inStor/productscrap/AddDtl.vue | 231 +++++++++ .../wms/st/inStor/productscrap/index.vue | 290 +++++++++++ .../st/inStor/productscrap/productscrap.js | 55 ++ 9 files changed, 1582 insertions(+) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTSCRAP.wql create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDtl.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index e0cc1c651e57681a5203d6f26d4440dd605d2e00..bc5a57a9dbb2f14d99644c6248aea364c27be389 100644 GIT binary patch delta 18167 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 QO2$+P9-6?lAE+Jv510*UsQ>@~ delta 12355 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 XdKtlIcTdy*`xkNT#JxA1WhMUu$3p5r diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java new file mode 100644 index 000000000..34025866a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/ProductScrapController.java @@ -0,0 +1,79 @@ +package org.nl.wms.st.instor.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.st.instor.service.ProductScrapService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequiredArgsConstructor +@Api(tags = "成品报废审核") +@RequestMapping("/api/productscrap") +@Slf4j +public class ProductScrapController { + private final ProductScrapService productScrapService; + + @GetMapping + @Log("查询成品报废审核单") + @ApiOperation("查询成品报废审核单") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(productScrapService.pageQuery(whereJson, page), HttpStatus.OK); + } + + @GetMapping("/getOutBillDtl") + @Log("查询明细") + @ApiOperation("查询明细") + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(productScrapService.getOutBillDtl(whereJson), HttpStatus.OK); + } + + @Log("删除") + @ApiOperation("删除") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + productScrapService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping + @Log("修改") + @ApiOperation("修改") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + productScrapService.update(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping() + @Log("新增") + @ApiOperation("新增") + public ResponseEntity insertDtl(@RequestBody JSONObject whereJson) { + productScrapService.insertDtl(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/auditPass") + @Log("审核通过") + @ApiOperation("审核通过") + public ResponseEntity auditPass(@RequestBody JSONObject whereJson) { + productScrapService.auditPass(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/auditOut") + @Log("不通过") + @ApiOperation("不通过") + public ResponseEntity auditOut(@RequestBody JSONObject whereJson) { + productScrapService.auditOut(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java new file mode 100644 index 000000000..b4452140e --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/ProductScrapService.java @@ -0,0 +1,52 @@ +package org.nl.wms.st.instor.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.data.domain.Pageable; + +import java.util.Map; + +public interface ProductScrapService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map pageQuery(Map whereJson, Pageable page); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + /** + * 新增出库单 + * @param whereJson / + */ + void insertDtl (JSONObject whereJson); + /** + * 查询出库单明细 + * @param whereJson / + * @return + */ + JSONArray getOutBillDtl(Map whereJson); + /** + * 修改出库单 + * @param whereJson / + */ + void update(JSONObject whereJson); + + /** + * 审核通过 + * @param whereJson / + */ + void auditPass(JSONObject whereJson); + + /** + * 不通过 + * @param whereJson / + */ + void auditOut(JSONObject whereJson); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java new file mode 100644 index 000000000..d0c1eb0ed --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/ProductScrapServiceImpl.java @@ -0,0 +1,287 @@ +package org.nl.wms.st.instor.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; +import org.nl.wms.st.inbill.service.CheckOutBillService; +import org.nl.wms.st.instor.service.ProductScrapService; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * PC端成品报废审核 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class ProductScrapServiceImpl implements ProductScrapService { + private final CheckOutBillService checkOutBillService; + + @Override + public Map pageQuery(Map whereJson, Pageable page) { + HashMap map = new HashMap<>(whereJson); + map.put("flag", "1"); + if (StrUtil.isNotEmpty(map.get("bill_code"))) { + map.put("bill_code", "%" + map.get("bill_code") + "%"); + } + if (StrUtil.isNotEmpty(map.get("material_code"))) { + map.put("material_code", "%" + map.get("material_code") + "%"); + } + if (StrUtil.isNotEmpty(map.get("pcsn"))) { + map.put("pcsn", (String) whereJson.get("pcsn")); + } + + //获取人员对应的仓库 + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + if (ObjectUtil.isNotEmpty(in_stor_id)) map.put("in_stor_id", in_stor_id); + + JSONObject jo = WQL.getWO("QST_IVT_PRODUCTSCRAP").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "scrap_code desc"); + return jo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("is_delete", "1"); + for (Long scrap_id : ids) { + wo_mst.update(jsonObject,"scrap_id = '"+scrap_id+"'"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void insertDtl(JSONObject map) { + //主表 + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + + JSONArray rows = map.getJSONArray("tableData"); + map.remove("tableData"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + JSONObject mst_jo = new JSONObject(); + mst_jo.put("scrap_id", changeinv_id); + mst_jo.put("scrap_code", CodeUtil.getNewCode("SCRAP_CODE")); + mst_jo.put("biz_date", DateUtil.today()); + mst_jo.put("stor_id", MapUtil.getStr(map, "stor_id")); + mst_jo.put("stor_code", MapUtil.getStr(map, "stor_code")); + mst_jo.put("stor_name", MapUtil.getStr(map, "stor_name")); + mst_jo.put("bill_status", "10"); + mst_jo.put("input_optid", currentUserId + ""); + mst_jo.put("input_optname", nickName); + mst_jo.put("input_time", now); + mst_jo.put("is_delete", "0"); + mst_jo.put("detail_count", rows.size()); + + //调用明细处理方法 + JSONObject ret = this.insertDtlByRows(mst_jo, rows); + mst_jo.put("total_qty", ret.getDoubleValue("total_qty")); + wo_mst.insert(mst_jo); + } + + /** + * 根据传进来的载具物料明细,查询载具所有库存记录,并生成移库明细 + * + * @param rows + */ + @Transactional(rollbackFor = Exception.class) + JSONObject insertDtlByRows(JSONObject jsonMst, JSONArray rows) { + WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_ProductScrapDtl"); + + //定义返回数据 + JSONObject ret = new JSONObject(); + double total_qty = 0; + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("scrapdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("scrap_id", jsonMst.getLongValue("scrap_id")); + jsonDtl.put("seq_no", i); + jsonDtl.put("material_id", json.getLongValue("material_id")); + jsonDtl.put("pcsn", json.getString("pcsn")); + jsonDtl.put("package_box_sn", json.getString("storagevehicle_code")); + jsonDtl.put("fail_source", json.getString("fail_source")); + jsonDtl.put("qty_unit_id", json.getString("qty_unit_id")); + jsonDtl.put("qty_unit_name", json.getString("qty_unit_name")); + jsonDtl.put("qty", json.getDoubleValue("qty")); + jsonDtl.put("remark", json.getString("remark")); + wo_dtl.insert(jsonDtl); + + total_qty = NumberUtil.add(total_qty, json.getDoubleValue("qty")); + + } + ret.put("total_qty", total_qty); + return ret; + } + + @Override + public JSONArray getOutBillDtl(Map whereJson) { + whereJson.put("flag", "2"); + JSONArray jo = WQL.getWO("QST_IVT_PRODUCTSCRAP") + .addParamMap((HashMap) whereJson) + .process() + .getResultJSONArray(0); + return jo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject whereJson) { + //主表 + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + //主表 + WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_ProductScrapDtl"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String scrap_id = (String) whereJson.get("scrap_id"); + //查询主表 + JSONObject jo_mst = wo_mst.query("scrap_id='" + scrap_id + "'").uniqueResult(0); + + //删除所有明细 + wo_dtl.delete("scrap_id = '"+scrap_id+"'"); + + //获取明细 + JSONArray rows = whereJson.getJSONArray("tableData"); + //调用明细处理方法 + JSONObject ret = this.insertDtlByRows(jo_mst, rows); + jo_mst.put("remark", whereJson.get("remark")); + jo_mst.put("biz_date", whereJson.get("biz_date")); + jo_mst.put("detail_count", rows.size()); + jo_mst.put("total_qty", ret.getString("total_qty")); + jo_mst.put("update_optid", currentUserId + ""); + jo_mst.put("update_optname", nickName); + jo_mst.put("update_time", now); + //更新主表 + wo_mst.update(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void auditPass(JSONObject whereJson) { + /* + * 1.校验此些子卷是否都在库内并没有被锁定 + * 2.生成出库单 + * 3.更新单据 + */ + WQLObject mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + WQLObject dtl = WQLObject.getWQLObject("ST_IVT_ProductScrapDtl"); + WQLObject ivt = WQLObject.getWQLObject("st_ivt_structivt"); + + // 查询所有明细 + JSONArray dtlArr = dtl.query("scrap_id = '" + whereJson.getString("scrap_id") + "'").getResultJSONArray(0); + + // 查询库存中这些子卷是否存在 + String pcsnJoining = dtlArr.stream() + .map(row -> JSON.parseObject(row.toString())) + .map(row -> row.getString("pcsn")) + .collect(Collectors.joining("','")); + + List ivtList = ivt.query("pcsn in ('" + pcsnJoining + "') and canuse_qty > 0") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + if (dtlArr.size() != ivtList.size()) throw new BadRequestException("库存异常请检查!"); + + // 校验库存 + boolean is_pass = ivtList.stream() + .allMatch(row -> pcsnJoining.contains(row.getString("pcsn"))); + + if (!is_pass) throw new BadRequestException("库存异常请检查!"); + + /* List collect = ivtList.stream() + .filter(row -> !pcsnJoining.contains(row.getString("pcsn"))) + .map(row -> row.getString("pcsn")) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(collect)) { + throw new BadRequestException("子卷:"+collect.toString()+"异常请检查!"); + }*/ + + // 生成出库单 + JSONObject jsonOutMst = new JSONObject(); + jsonOutMst.put("stor_id",whereJson.getString("stor_id")); + jsonOutMst.put("stor_code", whereJson.getString("stor_code")); + jsonOutMst.put("stor_name", whereJson.getString("stor_name")); + jsonOutMst.put("detail_count", ivtList.size()); + jsonOutMst.put("bill_status", "10"); + jsonOutMst.put("create_mode", "03"); + jsonOutMst.put("biz_date", DateUtil.now()); + jsonOutMst.put("io_type", "1"); + jsonOutMst.put("buss_type", "1002"); + jsonOutMst.put("bill_type", "1002"); + jsonOutMst.put("source_name", "成品报废审核单"); + + JSONArray tableData = new JSONArray(); + for (int i = 0; i < dtlArr.size(); i++) { + JSONObject json = dtlArr.getJSONObject(i); + + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("pcsn", json.getString("pcsn")); + jsonDtl.put("box_no", json.getString("package_box_sn")); + jsonDtl.put("material_id", json.getString("material_id")); + jsonDtl.put("qty_unit_id", json.getLongValue("qty_unit_id")); + jsonDtl.put("qty_unit_name", json.getString("qty_unit_name")); + jsonDtl.put("plan_qty", json.getDoubleValue("qty")); + tableData.add(jsonDtl); + } + + // 调用出库新增并分配 + jsonOutMst.put("tableData", tableData); + String iostorinv_id = checkOutBillService.insertDtl(jsonOutMst); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("iostorinv_id", iostorinv_id); + checkOutBillService.allDiv(jsonObject); + + // 更新主表为完成 + JSONObject param = new JSONObject(); + param.put("bill_status", "99"); + param.put("confirm_optid", SecurityUtils.getCurrentUserId()); + param.put("confirm_optname", SecurityUtils.getCurrentNickName()); + param.put("confirm_time", DateUtil.now()); + mst.update(param,"scrap_id = '"+whereJson.getString("scrap_id")+"'"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void auditOut(JSONObject whereJson) { + WQLObject mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + + // 更新主表为完成 + JSONObject param = new JSONObject(); + param.put("bill_status", "99"); + param.put("confirm_optid", SecurityUtils.getCurrentUserId()); + param.put("confirm_optname", SecurityUtils.getCurrentNickName()); + param.put("confirm_time", DateUtil.now()); + mst.update(param,"scrap_id = '"+whereJson.getString("scrap_id")+"'"); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTSCRAP.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTSCRAP.wql new file mode 100644 index 000000000..d3dcb1ca1 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTSCRAP.wql @@ -0,0 +1,112 @@ +[交易说明] + 交易名: 成品报废审核分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.material_code TYPEAS s_string + 输入.bill_status TYPEAS s_string + 输入.bill_code TYPEAS s_string + 输入.stor_id TYPEAS s_string + 输入.end_time TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.pcsn TYPEAS s_string + 输入.scrap_id TYPEAS s_string + 输入.in_stor_id TYPEAS f_string +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT DISTINCT + mst.* + FROM + ST_IVT_ProductScrapMst mst + LEFT JOIN ST_IVT_ProductScrapDtl dtl ON mst.scrap_id = dtl.scrap_id + WHERE + 1 = 1 + AND mst.is_delete = '0' + and mst.stor_id in 输入.in_stor_id + + OPTION 输入.bill_code <> "" + mst.scrap_code like 输入.bill_code + ENDOPTION + + OPTION 输入.pcsn <> "" + dtl.pcsn = 输入.pcsn + ENDOPTION + + OPTION 输入.stor_id <> "" + mst.stor_id = 输入.stor_id + ENDOPTION + + OPTION 输入.bill_status <> "" + mst.bill_status = 输入.bill_status + ENDOPTION + + OPTION 输入.begin_time <> "" + mst.input_time >= 输入.begin_time + ENDOPTION + + OPTION 输入.end_time <> "" + mst.input_time <= 输入.end_time + ENDOPTION + + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT DISTINCT + dtl.*, + dtl.package_box_sn AS storagevehicle_code, + mater.material_code, + mater.material_name + FROM + ST_IVT_ProductScrapDtl dtl + LEFT JOIN ST_IVT_ProductScrapMst mst ON mst.scrap_id = dtl.scrap_id + LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id + WHERE + 1 = 1 + OPTION 输入.scrap_id <> "" + dtl.scrap_id = 输入.scrap_id + ENDOPTION + + OPTION 输入.scrapdtl_id <> "" + dtl.scrapdtl_id = 输入.scrapdtl_id + ENDOPTION + + order by dtl.seq_no + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue new file mode 100644 index 000000000..07af0dd6f --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue @@ -0,0 +1,476 @@ + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDtl.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDtl.vue new file mode 100644 index 000000000..a36dcb3ea --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDtl.vue @@ -0,0 +1,231 @@ + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue new file mode 100644 index 000000000..6b8a33b65 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/index.vue @@ -0,0 +1,290 @@ + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js new file mode 100644 index 000000000..f5d578e96 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/productscrap.js @@ -0,0 +1,55 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/productscrap', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/productscrap/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/productscrap', + method: 'put', + data + }) +} + +export function getOutBillDtl(params) { + return request({ + url: '/api/productscrap/getOutBillDtl', + method: 'get', + params + }) +} +export function insertDtl(data) { + return request({ + url: '/api/productscrap/insertDtl', + method: 'post', + data + }) +} +export function auditPass(data) { + return request({ + url: '/api/productscrap/auditPass', + method: 'post', + data + }) +} +export function auditOut(data) { + return request({ + url: '/api/productscrap/auditOut', + method: 'post', + data + }) +} +export default { add, edit, del, getOutBillDtl, auditPass, auditOut }