From 8c2656c75145f4e0b3a95a972e069db655743f26 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Thu, 13 Apr 2023 16:44:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=93=E5=BA=93=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MaterialController.java | 56 +++++- .../entity/MaterialAndBarCode.java | 6 + .../depository_manage/pojo/InventoryP.java | 11 +- .../application-out.html | 92 +++++++-- .../application-out.html | 190 ++++++++++++++++-- 5 files changed, 313 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index f6278dcb..9fef3892 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -12,6 +12,7 @@ import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.utils.CrudUtil; import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; @@ -317,16 +318,25 @@ public class MaterialController { } Map param = new HashMap<>(); param.put("mcode", mcode); - List inventory = materialService.findInventory(param); + List inventoryPS = materialService.findInventory(param); Map paramByBarcode = new HashMap<>(); paramByBarcode.put("mcode", mcode); paramByBarcode.put("codeFlag", 1); List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByBarcode); - if (inventory.size() > 0) { - InventoryP materialP = inventory.get(0); + if (inventoryPS.size() > 0) { + List depositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + List tempDepositoryID = new ArrayList<>(); + for (InventoryP inventory:inventoryPS + ) { + tempDepositoryID.add(inventory.getDepositoryId()); + } + tempDepositoryID = (List) CollectionUtils.union(depositoryIdList,tempDepositoryID); + List depositoryByIds = depositoryService.findDepositoryByIds(tempDepositoryID); + InventoryP materialP = inventoryPS.get(0); materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialP.getMid()); materialP.setSplitInfoList(splitInfoByMid); + materialP.setDepositoryList(depositoryByIds); map.put("materialById", materialP); } else { materialById.setPrice(0.0); @@ -440,15 +450,24 @@ public class MaterialController { depositoryIdList.add(rad.getDepositoryId()); } } + // 获取该用户额外可见的仓库 + List tempDepositoryIdlist = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + depositoryIdList= (List) CollectionUtils.union(tempDepositoryIdlist,depositoryIdList); + // 用于存储存在库存的仓库id + List showDepository = new ArrayList<>(); for (Integer depositoryId : depositoryIdList ) { param.put("depositoryId", depositoryId); List inventoryPS = materialService.findInventory(param); + if(inventoryPS.size() > 0){ + showDepository.add(depositoryId); + } inventoryPByCondition.addAll(inventoryPS); } MaterialP mp = null; InventoryP ip = null; + // 用于获取单价 Map paramByPrice = new HashMap<>(); if (inventoryPByCondition.size() > 0) { ip = inventoryPByCondition.get(0); @@ -467,8 +486,11 @@ public class MaterialController { ip.setMaterialAndBarCodeList(materialByBarCodeByCondition); List splitInfoByMid = splitUnitService.findSplitInfoByMid(ip.getMid()); ip.setSplitInfoList(splitInfoByMid); + List depositoryByIds = depositoryService.findDepositoryByIds(showDepository); + ip.setDepositoryList(depositoryByIds); return new RestResponse(ip, 1, 200); - } else if ("in".equals(type)) { + } + else if ("in".equals(type)) { param.put("code", code); materialPByCondition = materialService.findMaterialPByCondition(param); if (materialPByCondition.size() > 0) { @@ -526,12 +548,16 @@ public class MaterialController { depositoryIdList.add(rad.getDepositoryId()); } } + + List tempDepositoryIDList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); + depositoryIdList = (List) CollectionUtils.union(tempDepositoryIDList,depositoryIdList); for (Integer depositoryId : depositoryIdList ) { map.put("depositoryId", depositoryId); List inventoryPS = materialService.findInventory(map); inventoryPList.addAll(inventoryPS); } + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); Map paramByBarcode = new HashMap<>(); for (InventoryP inventoryP : inventoryPList) { List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryP.getMid()); @@ -550,6 +576,7 @@ public class MaterialController { } } } + inventoryP.setDepositoryList(depositoryByIds); inventoryP.setPlacePList(placeList); } @@ -706,6 +733,11 @@ public class MaterialController { if (Integer.compare(placeId, -1) == 0) { // 如果是查询所有库存 List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); + if(map.containsKey("depositoryId")){ + Depository depositoryById = depositoryService.findDepositoryById(ObjectFormatUtil.toInteger(map.get("depositoryId"))); + depositoryByAdminorg = new ArrayList<>(); + depositoryByAdminorg.add(depositoryById); + } for (Depository depository : depositoryByAdminorg) { map.put("depositoryId", depository.getId()); List inventoryPList = materialService.findInventory(map); @@ -752,7 +784,8 @@ public class MaterialController { } } } - } else { + } + else { // 获取当前要转移的库位 Place place = placeService.findPlaceById(placeId); if (Integer.compare(place.getId(), 0) != 0) { @@ -907,6 +940,9 @@ public class MaterialController { depositoryIdList.add(depository.getDepositoryId()); } } + List tempDepositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userByPort); + depositoryIdList = (List) CollectionUtils.union(depositoryIdList,tempDepositoryIdList); + for (Integer depositoryId : depositoryIdList) { param.put("mcode", mcode); @@ -921,6 +957,7 @@ public class MaterialController { } } if (flag) { + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); // 设置当前物料在相关仓库下的所有库位 mp.setPlacePList(placePList); // 设置物料与条形码的对应关系 @@ -928,6 +965,8 @@ public class MaterialController { // 获取拆单信息 List splitInfoByMid = splitUnitService.findSplitInfoByMid(mp.getMid()); mp.setSplitInfoList(splitInfoByMid); + mp.setDepositoryList(depositoryByIds); + } return new RestResponse(mp); @@ -1075,10 +1114,11 @@ public class MaterialController { depositoryIdList.add(depository.getDepositoryId()); } } - + List tempDepositoryIdList = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userByPort); + depositoryIdList = (List) CollectionUtils.union(depositoryIdList,tempDepositoryIdList); List placePList = new ArrayList<>(); for (Integer depositoryId : depositoryIdList) { - Boolean isExist = false; + boolean isExist = false; Map param = new HashMap<>(); param.put("depositoryId", depositoryId); param.put("mid", materialByBarCode.getMid()); @@ -1095,6 +1135,8 @@ public class MaterialController { if (isExist) { List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialByBarCode.getMid()); materialByBarCode.setSplitInfoList(splitInfoByMid); + List depositoryByIds = depositoryService.findDepositoryByIds(depositoryIdList); + materialByBarCode.setDepositoryList(depositoryByIds); return new RestResponse(materialByBarCode); } } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/MaterialAndBarCode.java b/src/main/java/com/dreamchaser/depository_manage/entity/MaterialAndBarCode.java index c9421811..78786acb 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/MaterialAndBarCode.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/MaterialAndBarCode.java @@ -81,4 +81,10 @@ public class MaterialAndBarCode { */ private List splitInfoList; + + /** + * 用于暂存当前物料存在的仓库 + */ + private List depositoryList; + } diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java index 0dc7bf81..d6c1f7cc 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java @@ -1,9 +1,6 @@ package com.dreamchaser.depository_manage.pojo; -import com.dreamchaser.depository_manage.entity.Inventory; -import com.dreamchaser.depository_manage.entity.Material; -import com.dreamchaser.depository_manage.entity.MaterialAndBarCode; -import com.dreamchaser.depository_manage.entity.SplitInfo; +import com.dreamchaser.depository_manage.entity.*; import lombok.Data; import java.util.List; @@ -222,6 +219,12 @@ public class InventoryP { private String iremark; + /** + * 用于暂存该物料所在的仓库 + */ + private List depositoryList; + + public InventoryP(Integer id, Integer depositoryId, String mname, Integer quantity, Double price, String typeName) { this.id = id; this.mname = mname; diff --git a/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html b/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html index 94967262..2f0f1165 100644 --- a/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html +++ b/src/main/resources/templates/pages/applicationForStorageCenter/application-out.html @@ -176,10 +176,11 @@ -
+
-
@@ -692,10 +693,10 @@
-
+
-
@@ -946,7 +947,7 @@ for (let i = 0; i < unitList.length; i++) { $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); } - form.render(); + if (materialAndBarCodeList.length > 0) { // 如果有对应的条形码 var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; @@ -974,6 +975,16 @@ barCode.empty(); } } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = d.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } + form.render(); layer.close(loading2); } } @@ -1131,12 +1142,22 @@ $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 }); form.render(); - } else { + } + else { var barCode = $("#barCode" + idNumber); if (barCode.length > 0) { barCode.empty(); } } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = material.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } form.render(); layer.close(loading2); } @@ -1415,7 +1436,8 @@ $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 }); form.render(); - } else { + } + else { var barCode = $("#barCode" + idNumber); if (barCode.length > 0) { barCode.empty(); @@ -1424,6 +1446,16 @@ materialName.value = material.mname; materialId.value = material.id; codeValue.value = material.code; + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = material.depositoryList; + if(depositoryList !== null){ + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + + } layer.close(loading2); } } @@ -1492,6 +1524,15 @@ for (let i = 0; i < unitList.length; i++) { $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } form.render(); layer.close(loading2); } else { @@ -1521,6 +1562,7 @@ } else { wxScan = wxScan.wx; } + wxScan.scanQRCode({ desc: 'scanQRCode desc', needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, @@ -1610,6 +1652,16 @@ materialName.value = data.mname; materialId.value = data.id; materialCode.value = data.code; + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + form.render(); + } + } layer.close(loading2); } } @@ -1777,10 +1829,22 @@ }; form.on('select()', function (data) { - let unit = data.value; + let id = data.elem.id; let idNum = id.split("unit")[1]; - let mcode = $("#code" + idNum).val(); + let unit = ""; + let mcode = ""; + let depositoryId = "-1"; + if (id.indexOf('unit') !== -1) { + unit = data.value; + } else { + // 获取当前选中的仓库id + depositoryId = data.value; + idNum = id.split('showDepository')[1]; + unit = $("#unit" + idNum).val(); + + } + mcode = $("#code" + idNum).val(); if (mcode === "" || mcode === undefined || mcode === null) { layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, function () { $("#quantity" + idNum).val("") @@ -1793,6 +1857,9 @@ req.quantity = val; req.unit = unit; req.placeId = -1; + if (depositoryId !== "-1") { + req.depositoryId = depositoryId; + } let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); $.ajax({ url: "/material/MaterialQuantityIsTrue", @@ -1817,13 +1884,8 @@ } } - }); - - $('body').on('click', '[data-refresh]', function () { - location.reload(); - }) - + }); }) diff --git a/target/classes/templates/pages/applicationForStorageCenter/application-out.html b/target/classes/templates/pages/applicationForStorageCenter/application-out.html index 2861aebf..7cec117f 100644 --- a/target/classes/templates/pages/applicationForStorageCenter/application-out.html +++ b/target/classes/templates/pages/applicationForStorageCenter/application-out.html @@ -176,6 +176,15 @@
+
+ +
+ +
+
@@ -462,13 +471,14 @@ element = layui.element, step = layui.step; + let depositoryDisplay = $("#depositoryId").css("display"); // 用于分步表单加载 step.render({ elem: '#stepForm', filter: 'stepForm', width: '100%', //设置容器宽度 - height: '700px', + height: '750px', stepItems: [{ title: '填写信息' }, { @@ -680,6 +690,14 @@
+
+
+
+ +
+
@@ -695,7 +713,12 @@ // 获取当前高度 var height = parseInt(($("#stepForm").css('height')).split("px")[0]); params.push(NewIdNumber); - $("#stepForm").css("height", height + 387 + 'px'); + if (depositoryDisplay === "none") { + $("#stepForm").css("height", height + 387 + 'px'); + } else { + $("#stepForm").css("height", height + 435 + 'px'); + + } $("#" + parentId).after(materialItem); }; @@ -837,7 +860,13 @@ // 获取祖父节点 var reparent = parent.parentNode; var height = parseInt(($("#stepForm").css('height')).split("px")[0]); - $("#stepForm").css("height", height - 387 + 'px'); + if (depositoryDisplay === "none") { + + $("#stepForm").css("height", height - 387 + 'px'); + } else { + $("#stepForm").css("height", height - 435 + 'px'); + + } params = remove(params, parentId); reparent.removeChild(parent); }; @@ -918,7 +947,7 @@ for (let i = 0; i < unitList.length; i++) { $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); } - form.render(); + if (materialAndBarCodeList.length > 0) { // 如果有对应的条形码 var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; @@ -946,6 +975,16 @@ barCode.empty(); } } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = d.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } + form.render(); layer.close(loading2); } } @@ -1103,12 +1142,22 @@ $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 }); form.render(); - } else { + } + else { var barCode = $("#barCode" + idNumber); if (barCode.length > 0) { barCode.empty(); } } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = material.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } form.render(); layer.close(loading2); } @@ -1387,7 +1436,8 @@ $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 }); form.render(); - } else { + } + else { var barCode = $("#barCode" + idNumber); if (barCode.length > 0) { barCode.empty(); @@ -1396,6 +1446,16 @@ materialName.value = material.mname; materialId.value = material.id; codeValue.value = material.code; + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = material.depositoryList; + if(depositoryList !== null){ + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + + } layer.close(loading2); } } @@ -1413,7 +1473,75 @@ } else { wxScan = wxScan.wx; } - wxScan.scanQRCode({ + var result = "1646432177297334272";//当needResult为1时返回处理结果 + var req = {}; + req.qrCode = result; + req.codeFlag = 1; + let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); + $.ajax({ + url: "/material/qywxApplicationOutScanBarCode", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode.parentNode; + + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + // 物料编码 + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + + + var materialCode = materialCodeItem[1]; + + var data = d.data; + if (data !== null) { + materialName.value = data.mname; + materialId.value = data.iid; + materialCode.value = data.mcode; + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + barCodeInput.value = result; + var idNumber = materialId.name.split("mid")[1]; + var unit = $("#unit" + idNumber); + unit.empty(); + $("#unit" + idNumber).append(new Option(data.unit, "-1")); + var unitList = data["splitInfoList"]; + for (let i = 0; i < unitList.length; i++) { + $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); + } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } + form.render(); + layer.close(loading2); + } else { + // 如果没有对应关系 + layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", { + icon: 0, + time: 1000 //0.5秒关闭(如果不配置,默认是3秒) + }, function () { + layer.close(loading2); + }) + } + + } + }) + /* wxScan.scanQRCode({ desc: 'scanQRCode desc', needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 @@ -1464,6 +1592,15 @@ for (let i = 0; i < unitList.length; i++) { $("#unit" + idNumber).append(new Option(unitList[i].newUnit, unitList[i].newUnit)); } + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + } + } form.render(); layer.close(loading2); } else { @@ -1479,7 +1616,7 @@ } }) } - }) + })*/ }; @@ -1493,6 +1630,7 @@ } else { wxScan = wxScan.wx; } + wxScan.scanQRCode({ desc: 'scanQRCode desc', needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, @@ -1582,6 +1720,16 @@ materialName.value = data.mname; materialId.value = data.id; materialCode.value = data.code; + if (depositoryDisplay !== "none") { + $("#showDepository" + idNumber).empty(); + let depositoryList = data.depositoryList; + if(depositoryList !== null) { + for (let i = 0; i < depositoryList.length; i++) { + $("#showDepository" + idNumber).append(new Option(depositoryList[i].dname, depositoryList[i].id)); + } + form.render(); + } + } layer.close(loading2); } } @@ -1749,10 +1897,22 @@ }; form.on('select()', function (data) { - let unit = data.value; + let id = data.elem.id; let idNum = id.split("unit")[1]; - let mcode = $("#code" + idNum).val(); + let unit = ""; + let mcode = ""; + let depositoryId = "-1"; + if (id.indexOf('unit') !== -1) { + unit = data.value; + } else { + // 获取当前选中的仓库id + depositoryId = data.value; + idNum = id.split('showDepository')[1]; + unit = $("#unit" + idNum).val(); + + } + mcode = $("#code" + idNum).val(); if (mcode === "" || mcode === undefined || mcode === null) { layer.msg("请输入物料的正确编码!", {icon: 0, time: 500}, function () { $("#quantity" + idNum).val("") @@ -1765,6 +1925,9 @@ req.quantity = val; req.unit = unit; req.placeId = -1; + if (depositoryId !== "-1") { + req.depositoryId = depositoryId; + } let loading2 = layer.open({type: 3, shade: [0.25, '#000'], icon: 2, speed: 0}); $.ajax({ url: "/material/MaterialQuantityIsTrue", @@ -1789,13 +1952,8 @@ } } - }); - - $('body').on('click', '[data-refresh]', function () { - location.reload(); - }) - + }); })