Browse Source

[feat] 售后管理

新增删除出货设备后端接口
新增查询售后维护设备出库列表后端接口
新增 保存售后维护设备出库后端接口
新增 售后第一次维护设备后端接口
新增 修改保存售后第一次维护设备
新增 展示售后第一次维护设备物料信息接口
新增 第一次维护设备删除物料信息出货设备信息 接口
新增 第一次维护设备前端页面
修改销售订单页面的 生产状态
修改 售后维护设备前端页面只展示订单类型为销售订单
dev
liuxiaoxu 5 months ago
parent
commit
385abde545
  1. 11
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AfterSalesShippingDeviceController.java
  2. 109
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesWarehouseOutController.java
  3. 2
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java
  4. 18
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java
  5. 20
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesWarehouseOutService.java
  6. 23
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java
  7. 68
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesWarehouseOutServiceImpl.java
  8. 9
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java
  9. 5
      ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml
  10. 21
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml
  11. 266
      ruoyi-admin/src/main/resources/templates/aftersales/warehouseOutOrder/maintenanceEquipmentOne.html
  12. 20
      ruoyi-admin/src/main/resources/templates/aftersales/warehouseOutOrder/warehouseOutOrder.html
  13. 147
      ruoyi-admin/src/main/resources/templates/system/makeorder/addProduceInbound.html
  14. 11
      ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html

11
ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AfterSalesShippingDeviceController.java

@ -164,17 +164,6 @@ public class AfterSalesShippingDeviceController extends BaseController
} }
/**
* 删除出货设备
*/
@RequiresPermissions("aftersales:shippingDevice:remove")
@Log(title = "出货设备", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(afterSalesShippingDeviceService.deleteAfterSalesShippingDeviceByIds(ids));
}
/** /**
* 作废出货设备 * 作废出货设备

109
ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesWarehouseOutController.java

@ -5,6 +5,8 @@ import java.util.List;
import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO; import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.warehouse.domain.WarehouseOutOrder; import com.ruoyi.warehouse.domain.WarehouseOutOrder;
import com.ruoyi.warehouse.domain.WarehouseOutOrderDetail;
import com.ruoyi.warehouse.service.IWarehouseOutOrderDetailService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -23,7 +25,7 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
/** /**
* 出库Controller * 售后维护设备出库Controller
* *
* @author 刘晓旭 * @author 刘晓旭
* @date 2024-04-23 * @date 2024-04-23
@ -37,6 +39,10 @@ public class AftersalesWarehouseOutController extends BaseController
@Autowired @Autowired
private IAftersalesWarehouseOutService warehouseOutOrderService; private IAftersalesWarehouseOutService warehouseOutOrderService;
@Autowired
private IWarehouseOutOrderDetailService outOrderDetailService;
@RequiresPermissions("aftersales:warehouseOutOrder:view") @RequiresPermissions("aftersales:warehouseOutOrder:view")
@GetMapping() @GetMapping()
public String warehouseOutOrder() public String warehouseOutOrder()
@ -45,7 +51,7 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 查询出库列表 * 查询售后维护设备出库列表
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:list") @RequiresPermissions("aftersales:warehouseOutOrder:list")
@PostMapping("/list") @PostMapping("/list")
@ -53,26 +59,26 @@ public class AftersalesWarehouseOutController extends BaseController
public TableDataInfo list(WarehouseOutOrder warehouseOutOrder) public TableDataInfo list(WarehouseOutOrder warehouseOutOrder)
{ {
startPage(); startPage();
List<WarehouseOutOrder> list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder); List<WarehouseOutOrder> list = warehouseOutOrderService.selectAftersalesWarehouseOutOrderList(warehouseOutOrder);
return getDataTable(list); return getDataTable(list);
} }
/** /**
* 导出出库列表 * 导出售后维护设备出库列表
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:export") @RequiresPermissions("aftersales:warehouseOutOrder:export")
@Log(title = "出库", businessType = BusinessType.EXPORT) @Log(title = "售后维护设备出库", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
@ResponseBody @ResponseBody
public AjaxResult export(WarehouseOutOrder warehouseOutOrder) public AjaxResult export(WarehouseOutOrder warehouseOutOrder)
{ {
List<WarehouseOutOrder> list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder); List<WarehouseOutOrder> list = warehouseOutOrderService.selectAftersalesWarehouseOutOrderList(warehouseOutOrder);
ExcelUtil<WarehouseOutOrder> util = new ExcelUtil<WarehouseOutOrder>(WarehouseOutOrder.class); ExcelUtil<WarehouseOutOrder> util = new ExcelUtil<WarehouseOutOrder>(WarehouseOutOrder.class);
return util.exportExcel(list, "出库数据"); return util.exportExcel(list, "售后维护设备出库数据");
} }
/** /**
* 新增出库 * 新增售后维护设备出库
*/ */
@GetMapping("/add") @GetMapping("/add")
public String add() public String add()
@ -81,10 +87,10 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 新增保存出库 * 新增保存售后维护设备出库
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:add") @RequiresPermissions("aftersales:warehouseOutOrder:add")
@Log(title = "出库", businessType = BusinessType.INSERT) @Log(title = "售后维护设备出库", businessType = BusinessType.INSERT)
@PostMapping("/add") @PostMapping("/add")
@ResponseBody @ResponseBody
public AjaxResult addSave(WarehouseOutOrder warehouseOutOrder) public AjaxResult addSave(WarehouseOutOrder warehouseOutOrder)
@ -93,7 +99,7 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 修改出库 * 修改售后维护设备出库
*/ */
@GetMapping("/edit/{outOrderId}") @GetMapping("/edit/{outOrderId}")
public String edit(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap) public String edit(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap)
@ -104,10 +110,10 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 修改保存出库 * 修改保存售后维护设备出库
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:edit") @RequiresPermissions("aftersales:warehouseOutOrder:edit")
@Log(title = "出库", businessType = BusinessType.UPDATE) @Log(title = "售后维护设备出库", businessType = BusinessType.UPDATE)
@PostMapping("/edit") @PostMapping("/edit")
@ResponseBody @ResponseBody
public AjaxResult editSave(WarehouseOutOrder warehouseOutOrder) public AjaxResult editSave(WarehouseOutOrder warehouseOutOrder)
@ -116,7 +122,7 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 查看出库详情 * 查看售后维护设备出库详情
*/ */
@GetMapping("/detail/{outOrderId}") @GetMapping("/detail/{outOrderId}")
public String detail(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap) public String detail(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap)
@ -127,10 +133,10 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 修改保存出库详情 * 修改保存售后维护设备出库详情
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:edit") @RequiresPermissions("aftersales:warehouseOutOrder:edit")
@Log(title = "出库", businessType = BusinessType.UPDATE) @Log(title = "售后维护设备出库", businessType = BusinessType.UPDATE)
@PostMapping("/detail") @PostMapping("/detail")
@ResponseBody @ResponseBody
public AjaxResult detailSave(WarehouseOutOrder warehouseOutOrder) public AjaxResult detailSave(WarehouseOutOrder warehouseOutOrder)
@ -154,7 +160,7 @@ public class AftersalesWarehouseOutController extends BaseController
* 修改保存出货设备 * 修改保存出货设备
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:addShippingDevices") @RequiresPermissions("aftersales:warehouseOutOrder:addShippingDevices")
@Log(title = "出库", businessType = BusinessType.INSERT) @Log(title = "售后维护设备出库", businessType = BusinessType.INSERT)
@PostMapping("/addShippingDevices") @PostMapping("/addShippingDevices")
@ResponseBody @ResponseBody
public AjaxResult addShippingDevicesSave(WarehouseOutOrder warehouseOutOrder) public AjaxResult addShippingDevicesSave(WarehouseOutOrder warehouseOutOrder)
@ -206,10 +212,10 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/** /**
* 删除出库 * 删除售后维护设备出库
*/ */
@RequiresPermissions("aftersales:warehouseOutOrder:remove") @RequiresPermissions("aftersales:warehouseOutOrder:remove")
@Log(title = "出库", businessType = BusinessType.DELETE) @Log(title = "售后维护设备出库", businessType = BusinessType.DELETE)
@PostMapping( "/remove") @PostMapping( "/remove")
@ResponseBody @ResponseBody
public AjaxResult remove(String ids) public AjaxResult remove(String ids)
@ -218,4 +224,69 @@ public class AftersalesWarehouseOutController extends BaseController
} }
/**
* 售后第一次维护设备
*/
@GetMapping("/maintenanceEquipmentOne/{outOrderId}")
public String maintenanceEquipmentOne(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap)
{
WarehouseOutOrder warehouseOutOrder = warehouseOutOrderService.selectWarehouseOutOrderById(outOrderId);
mmap.put("warehouseOutOrder", warehouseOutOrder);
return prefix + "/maintenanceEquipmentOne";
}
/**
* 修改保存售后第一次维护设备
*/
@RequiresPermissions("aftersales:warehouseOutOrder:maintenanceEquipmentOne")
@Log(title = "售后维护设备出库", businessType = BusinessType.UPDATE)
@PostMapping("/maintenanceEquipmentOne")
@ResponseBody
public AjaxResult maintenanceEquipmentOneSave(WarehouseOutOrder warehouseOutOrder)
{
return toAjax(warehouseOutOrderService.updateWarehouseOutOrder(warehouseOutOrder));
}
/**
* 展示售后第一次维护设备物料信息
* */
@PostMapping("/getMaintenanceEquipmentOneMaterials")
@ResponseBody
public TableDataInfo getMaintenanceEquipmentOneMaterials(WarehouseOutOrder warehouseOutOrder)
{
startPage();
List<WarehouseOutOrderDetail> list = warehouseOutOrderService.selectOutOrderDetailListByCode(warehouseOutOrder);
return getDataTable(list);
}
/**
* 展示售后第一次维护设备料号相关出货设备信息
*/
@PostMapping("/showAftersalesShippingDevicelist")
@ResponseBody
public TableDataInfo showAftersalesShippingDevicelist(WarehouseOutOrder warehouseOutOrder)
{
startPage();
List<SelectShippingDeviceVO> list = warehouseOutOrderService.selectAftersalesShippingDevicelistByCodeAndNo(warehouseOutOrder);
return getDataTable(list);
}
/**
* 第一次维护设备删除物料信息出货设备信息
*/
@Log(title = "售后维护设备出库", businessType = BusinessType.DELETE)
@PostMapping("/deleteRow")
@ResponseBody
public AjaxResult deleteRow(String shippingDeviceId)
{
return toAjax(warehouseOutOrderService.deleteAftersalesShippingDeviceById(shippingDeviceId));
}
} }

2
ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AfterSalesShippingDeviceMapper.java

@ -67,7 +67,7 @@ public interface AfterSalesShippingDeviceMapper
* @param shippingDeviceCode 出货设备ID * @param shippingDeviceCode 出货设备ID
* @return 结果 * @return 结果
*/ */
public int deleteAfterSalesShippingDeviceById(Long shippingDeviceCode); public int deleteAfterSalesShippingDeviceById(String shippingDeviceId);
/** /**
* 批量删除出货设备 * 批量删除出货设备

18
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAfterSalesShippingDeviceService.java

@ -74,24 +74,6 @@ public interface IAfterSalesShippingDeviceService
*/ */
public int updateAfterSalesShippingDevice(AfterSalesShippingDeviceEditDto afterSalesShippingDeviceEditDto); public int updateAfterSalesShippingDevice(AfterSalesShippingDeviceEditDto afterSalesShippingDeviceEditDto);
/**
* 批量删除出货设备
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteAfterSalesShippingDeviceByIds(String ids);
/**
* 删除出货设备信息
*
* @param shippingDeviceCode 出货设备ID
* @return 结果
*/
public int deleteAfterSalesShippingDeviceById(Long shippingDeviceCode);
/** /**
* 作废出货设备 * 作废出货设备
* @param shippingDeviceCode 出货设备ID * @param shippingDeviceCode 出货设备ID

20
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesWarehouseOutService.java

@ -5,6 +5,7 @@ import java.util.List;
import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO; import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.warehouse.domain.WarehouseOutOrder; import com.ruoyi.warehouse.domain.WarehouseOutOrder;
import com.ruoyi.warehouse.domain.WarehouseOutOrderDetail;
/** /**
* 出库单Service接口 * 出库单Service接口
@ -28,7 +29,7 @@ public interface IAftersalesWarehouseOutService
* @param warehouseOutOrder 出库单 * @param warehouseOutOrder 出库单
* @return 出库单集合 * @return 出库单集合
*/ */
public List<WarehouseOutOrder> selectWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder); public List<WarehouseOutOrder> selectAftersalesWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder);
/** /**
@ -96,4 +97,21 @@ public interface IAftersalesWarehouseOutService
SelectMaterialsVO selectShippingDevicesById(String quoteId, String materialCode); SelectMaterialsVO selectShippingDevicesById(String quoteId, String materialCode);
List<SelectShippingDeviceVO> selectShippingDeviceBySalesOrderCode(SelectMaterialsVO selectMaterialsVO); List<SelectShippingDeviceVO> selectShippingDeviceBySalesOrderCode(SelectMaterialsVO selectMaterialsVO);
/*
* 根据设备ID删除出货设备信息
* */
int deleteAftersalesShippingDeviceById(String shippingDeviceId);
/**
* 展示售后第一次维护设备料号相关出货设备信息
*/
List<SelectShippingDeviceVO> selectAftersalesShippingDevicelistByCodeAndNo(WarehouseOutOrder warehouseOutOrder);
/**
* 展示售后第一次维护设备物料相关信息
* */
List<WarehouseOutOrderDetail> selectOutOrderDetailListByCode(WarehouseOutOrder warehouseOutOrder);
} }

23
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AfterSalesShippingDeviceServiceImpl.java

@ -168,29 +168,6 @@ public class AfterSalesShippingDeviceServiceImpl implements IAfterSalesShippingD
return afterSalesShippingDeviceMapper.updateAfterSalesShippingDevice(afterSalesShippingDevice); return afterSalesShippingDeviceMapper.updateAfterSalesShippingDevice(afterSalesShippingDevice);
} }
/**
* 删除出货设备对象
*
* @param ids 需要删除的数据ID
* @return 结果
*/
@Override
public int deleteAfterSalesShippingDeviceByIds(String ids)
{
return afterSalesShippingDeviceMapper.deleteAfterSalesShippingDeviceByIds(Convert.toStrArray(ids));
}
/**
* 删除出货设备信息
*
* @param shippingDeviceCode 出货设备ID
* @return 结果
*/
@Override
public int deleteAfterSalesShippingDeviceById(Long shippingDeviceCode)
{
return afterSalesShippingDeviceMapper.deleteAfterSalesShippingDeviceById(shippingDeviceCode);
}
/** /**
* 作废出货设备 * 作废出货设备

68
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesWarehouseOutServiceImpl.java

@ -7,12 +7,15 @@ import com.ruoyi.aftersales.domain.AfterSalesShippingDevice;
import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO; import com.ruoyi.aftersales.domain.vo.SelectMaterialsVO;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.domain.SysSalesOrderChild;
import com.ruoyi.system.mapper.SysSalesOrderChildMapper; import com.ruoyi.system.mapper.SysSalesOrderChildMapper;
import com.ruoyi.warehouse.domain.WarehouseOutOrder; import com.ruoyi.warehouse.domain.WarehouseOutOrder;
import com.ruoyi.warehouse.domain.WarehouseOutOrderDetail;
import com.ruoyi.warehouse.mapper.WarehouseOutOrderDetailMapper;
import com.ruoyi.warehouse.mapper.WarehouseOutOrderMapper; import com.ruoyi.warehouse.mapper.WarehouseOutOrderMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -39,6 +42,9 @@ public class AftersalesWarehouseOutServiceImpl implements IAftersalesWarehouseOu
@Autowired @Autowired
private AfterSalesShippingDeviceMapper shippingDeviceMapper; private AfterSalesShippingDeviceMapper shippingDeviceMapper;
@Autowired
private WarehouseOutOrderDetailMapper outOrderDetailMapper;
/** /**
* 查询出库单 * 查询出库单
* *
@ -58,9 +64,11 @@ public class AftersalesWarehouseOutServiceImpl implements IAftersalesWarehouseOu
* @return 出库单 * @return 出库单
*/ */
@Override @Override
public List<WarehouseOutOrder> selectWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder) public List<WarehouseOutOrder> selectAftersalesWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder)
{ {
return warehouseOutOrderMapper.selectWarehouseOutOrderList(warehouseOutOrder);
return warehouseOutOrderMapper.selectAftersalesWarehouseOutOrderList(warehouseOutOrder);
} }
@Override @Override
@ -131,6 +139,62 @@ public class AftersalesWarehouseOutServiceImpl implements IAftersalesWarehouseOu
return selectShippingDeviceVOs; return selectShippingDeviceVOs;
} }
/**
* 展示售后第一次维护设备料号相关出货设备信息
*/
@Override
public List<SelectShippingDeviceVO> selectAftersalesShippingDevicelistByCodeAndNo(WarehouseOutOrder warehouseOutOrder) {
List<SelectShippingDeviceVO> selectShippingDeviceVOs = new ArrayList<>();
AfterSalesShippingDevice afterSalesShippingDevice = new AfterSalesShippingDevice();
afterSalesShippingDevice.setSalesOrderCode(warehouseOutOrder.getSalesOrderCode());
afterSalesShippingDevice.setMaterialNo(warehouseOutOrder.getMaterialNo());
List<AfterSalesShippingDevice> afterSalesShippingDevices = shippingDeviceMapper.selectShippingDeviceList(afterSalesShippingDevice);
if (!StringUtils.isNotEmpty(afterSalesShippingDevices)) {
// 记录日志
log.warn("未查找到与销售订单关联的出库设备数据, 销售订单编码: {}", warehouseOutOrder.getSalesOrderCode());
throw new BusinessException("未查出库设备数据");
}
for (AfterSalesShippingDevice tempAfterSalesShippingDevice : afterSalesShippingDevices) {
SelectShippingDeviceVO shippingDeviceVO = new SelectShippingDeviceVO();
shippingDeviceVO.setShippingDeviceId(tempAfterSalesShippingDevice.getShippingDeviceId());
shippingDeviceVO.setDeviceModelCode(tempAfterSalesShippingDevice.getDeviceModelCode());
shippingDeviceVO.setDeviceRunningNumber(tempAfterSalesShippingDevice.getDeviceRunningNumber());
shippingDeviceVO.setMakePhotoUrl(tempAfterSalesShippingDevice.getMakePhotourl());
shippingDeviceVO.setQuoteId(tempAfterSalesShippingDevice.getSalesOrderCode());
selectShippingDeviceVOs.add(shippingDeviceVO);
}
return selectShippingDeviceVOs;
}
/**
* 展示售后第一次维护设备物料相关信息
* */
@Override
public List<WarehouseOutOrderDetail> selectOutOrderDetailListByCode(WarehouseOutOrder warehouseOutOrder) {
String outOrderCode = warehouseOutOrder.getOutOrderCode();
if (!StringUtils.isNotEmpty(outOrderCode)) {
// 记录日志
log.warn("未查找到与出库单号关联的出库单详情数据, 出库单号: {}", outOrderCode);
throw new BusinessException("未查出库单详情数据");
}
List<WarehouseOutOrderDetail> warehouseOutOrderDetails = outOrderDetailMapper.selectOutOrderDetailListByCode(outOrderCode);
return warehouseOutOrderDetails;
}
/*
* 售后第一次维护设备信息根据设备ID删除出货设备信息
* */
@Override
public int deleteAftersalesShippingDeviceById(String shippingDeviceId) {
return shippingDeviceMapper.deleteAfterSalesShippingDeviceById(shippingDeviceId);
}
@Override @Override
public List<SelectMaterialsVO> selectMaterialByMaterialCode(SelectMaterialsVO selectMaterialsVO) { public List<SelectMaterialsVO> selectMaterialByMaterialCode(SelectMaterialsVO selectMaterialsVO) {
List<SelectMaterialsVO> selectMaterialsVOs = new ArrayList<>(); List<SelectMaterialsVO> selectMaterialsVOs = new ArrayList<>();

9
ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java

@ -27,6 +27,15 @@ public interface WarehouseOutOrderMapper
*/ */
public List<WarehouseOutOrder> selectWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder); public List<WarehouseOutOrder> selectWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder);
/**
* 查询售后维护设备仓库出库单列表
*
* @param warehouseOutOrder 仓库出库单
* @return 仓库出库单集合
*/
public List<WarehouseOutOrder> selectAftersalesWarehouseOutOrderList(WarehouseOutOrder warehouseOutOrder);
/** /**
* 新增仓库出库单 * 新增仓库出库单
* *

5
ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml

@ -225,10 +225,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where shipping_device_id= #{shippingDeviceId} where shipping_device_id= #{shippingDeviceId}
</update> </update>
<delete id="deleteAfterSalesShippingDeviceById" parameterType="Long"> <delete id="deleteAfterSalesShippingDeviceById" parameterType="String">
delete from aftersales_shipping_device where shipping_device_code = #{shippingDeviceCode} delete from aftersales_shipping_device where shipping_device_id = #{shippingDeviceId}
</delete> </delete>
<delete id="deleteAfterSalesShippingDeviceByIds" parameterType="String"> <delete id="deleteAfterSalesShippingDeviceByIds" parameterType="String">
delete from aftersales_shipping_device where shipping_device_code in delete from aftersales_shipping_device where shipping_device_code in
<foreach item="shippingDeviceCode" collection="array" open="(" separator="," close=")"> <foreach item="shippingDeviceCode" collection="array" open="(" separator="," close=")">

21
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml

@ -64,6 +64,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
</select> </select>
<select id="selectAftersalesWarehouseOutOrderList" parameterType="WarehouseOutOrder" resultMap="WarehouseOutOrderResult">
<include refid="selectWarehouseOutOrderVo"/>
<where>
<if test="outOrderCode != null and outOrderCode != ''"> and out_order_code = #{outOrderCode}</if>
<if test="warehouseOutStatus != null and warehouseOutStatus != ''"> and warehouse_out_status = #{warehouseOutStatus}</if>
<if test="relatedOrderCode != null and relatedOrderCode != ''"> and related_order_code = #{relatedOrderCode}</if>
<if test="warehouseOrderType != null and warehouseOrderType != ''"> and warehouse_order_type = #{warehouseOrderType}</if>
<if test="outMakeCode != null and outMakeCode != ''"> and out_make_code = #{outMakeCode}</if>
<if test="warehouseName != null and warehouseName != ''"> and warehouse_name like concat('%', #{warehouseName}, '%')</if>
<if test="applyName != null and applyName != ''"> and apply_name like concat('%', #{applyName}, '%')</if>
<if test="supplierName != null and supplierName != ''"> and supplier_name like concat('%', #{supplierName}, '%')</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
<if test="deliveryDate != null "> and delivery_date = #{deliveryDate}</if>
and warehouse_order_type = "0"
</where>
</select>
<select id="selectWarehouseOutOrderById" parameterType="Long" resultMap="WarehouseOutOrderResult"> <select id="selectWarehouseOutOrderById" parameterType="Long" resultMap="WarehouseOutOrderResult">
<include refid="selectWarehouseOutOrderVo"/> <include refid="selectWarehouseOutOrderVo"/>
where out_order_id = #{outOrderId} where out_order_id = #{outOrderId}

266
ruoyi-admin/src/main/resources/templates/aftersales/warehouseOutOrder/maintenanceEquipmentOne.html

@ -0,0 +1,266 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('修改出库单')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-warehouseOutOrder-edit" th:object="${warehouseOutOrder}">
<input name="outOrderId" th:field="*{outOrderId}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">出库单号:</label>
<div class="col-sm-8">
<input name="outOrderCode" th:field="*{outOrderCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库对象:</label>
<div class="col-sm-8">
<input name="outOrderName" th:field="*{outOrderName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">销售单号:</label>
<div class="col-sm-8">
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">申请人员:</label>
<div class="col-sm-8">
<input name="applyName" th:field="*{applyName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">生产单号:</label>
<div class="col-sm-8">
<input name="makeNo" th:field="*{makeNo}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户ID:</label>
<div class="col-sm-8">
<input name="customerId" th:field="*{customerId}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称:</label>
<div class="col-sm-8">
<input name="customerName" th:field="*{customerName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货联系人:</label>
<div class="col-sm-8">
<input name="deliveryName" th:field="*{deliveryName}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货电话:</label>
<div class="col-sm-8">
<input name="deliveryNumber" th:field="*{deliveryNumber}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货地址:</label>
<div class="col-sm-8">
<input name="deliveryAddress" th:field="*{deliveryAddress}" class="form-control" type="text">
</div>
</div>
<div class="col-sm-12 select-table table-striped">
<h3 class="mb-4">物料信息</h3>
<table id="bootstrap-table"></table>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<!--用于可以修改列表字段的插件-->
<th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript">
var addFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:addShippingDevices')}]];
var prefix = ctx + "aftersales/warehouseOutOrder";
var warehouseOutOrder = [[${warehouseOutOrder}]];
$("#form-warehouseOutOrder-edit").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-warehouseOutOrder-edit').serialize());
}
}
$("input[name='outOrderTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='planDeliveryTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$(function() {
var options = {
url: prefix + "/getMaintenanceEquipmentOneMaterials",
modalName: "物料信息",
showColumns: false,
pagination: false,
showToggle: false,
showRefresh:false,
showSearch:false,
queryParams:queryParams,
detailView: true,
onExpandRow : function(index, row, $detail) {
initChildTable(index, row, $detail);
},
columns: [{
checkbox: true
},
{ title:'销售订单号',
field:'quoteId',
visible: false
},
{
title: '料号',
field: 'materialCode',
},
{
title: '图片',
field: 'photoUrl',
},
{
title: '物料名称',
field: 'materialName',
},
{
title: '物料类型',
field: 'materialType',
},
{
title: '单位',
field: 'materialUnit',
},
{
title: '品牌',
field: 'brand',
},
{
title: '描述',
field: 'describe',
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="addShippingDevices(\'' + row.quoteId + '\',\'' + row.materialCode + '\')"><i class="fa fa-add"></i>添加出货设备</a>');
return actions.join('');
}
}
]
};
$.table.init(options);
})
initChildTable = function(index, row, $detail) {
var parentRow = row;
var childTableId = 'child_table_'+index;
$detail.html('<table id="'+childTableId+'"></table>');
$('#'+childTableId).bootstrapTable({
url: prefix + "/showAftersalesShippingDevicelist",
method: 'post',
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {
salesOrderCode: warehouseOutOrder.salesOrderCode,
materialNo: parentRow.materialNo
},
columns: [
{
title: '出货设备ID',
field: 'shippingDeviceId',
},
{
title: '设备型号',
field: 'deviceModelCode',
},
{
title: '流水号',
field: 'deviceRunningNumber',
},
{
title: '设备SN号',
field: 'snCode',
editable:true
},
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
return '<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="deleteRow(\'' + row.shippingDeviceId + '\')"><i class="fa fa-remove"></i>删除</a>';
}
}
],
});
};
function queryParams(params) {
var curParams = {
// 传递参数查询参数
outOrderCode: warehouseOutOrder.outOrderCode
};
return curParams;
}
function deleteRow(shippingDeviceId) {
// 弹出确认框询问用户是否确定删除
if (confirm("确定要删除这条记录吗?")) {
// 发送删除请求到服务器
$.ajax({
url: prefix + "/deleteRow", // 请根据实际API路径调整
type: 'POST',
data: {
shippingDeviceId: shippingDeviceId, // 传递需要删除的记录的ID
},
success: function(result) {
if (result.success) { // 假设result是一个对象,包含success属性来表示操作是否成功
// 删除操作成功,从表格中移除这一行
$('#child_table_' + index).bootstrapTable('remove', {
field: 'shippingDeviceId',
values: [shippingDeviceId]
});
toastr.success("删除成功!"); // 显示成功提示信息,这里使用toastr作为示例,确保已引入相关库
} else {
toastr.error("删除失败: " + result.message); // 显示失败原因,同样确保已引入toastr库
}
},
error: function() {
toastr.error("发生错误,删除失败!"); // 网络错误或后端错误处理
}
});
}
};
/*添加出货设备*/
function addShippingDevices(quoteId, materialCode) {
// 确保URL编码,特别是如果materialCode中可能含有特殊字符
var url = ctx + 'aftersales/warehouseOutOrder/addShippingDevices/' + encodeURIComponent(quoteId) + '/' + encodeURIComponent(materialCode);
$.modal.open("添加出货设备", url);
}
</script>
</body>
</html>

20
ruoyi-admin/src/main/resources/templates/aftersales/warehouseOutOrder/warehouseOutOrder.html

@ -64,8 +64,10 @@
var editFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:edit')}]]; var editFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:edit')}]];
var detailFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:detail')}]]; var detailFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:detail')}]];
var removeFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:remove')}]]; var removeFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:remove')}]];
var cancelFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:cancel')}]]; var maintenanceEquipmentOneFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:maintenanceEquipmentOne')}]];
var restoreFlag = [[${@permission.hasPermi('aftersales:warehouseOutOrder:restore')}]];
var warehouseOutStatusDatas = [[${@dict.getType('warehouse_out_status')}]]; var warehouseOutStatusDatas = [[${@dict.getType('warehouse_out_status')}]];
var warehouseOrderTypeDatas = [[${@dict.getType('warehouse_order_type')}]]; var warehouseOrderTypeDatas = [[${@dict.getType('warehouse_order_type')}]];
var warehouseOutTypeDatas = [[${@dict.getType('warehouse_out_type')}]]; var warehouseOutTypeDatas = [[${@dict.getType('warehouse_out_type')}]];
@ -174,6 +176,9 @@
var actions = []; var actions = [];
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>编辑</a> '); // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>详情</a> '); actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
if (row.warehouseOutStatus== "1"){
actions.push('<a class="btn btn-success btn-xs ' + maintenanceEquipmentOneFlag + '" href="javascript:void(0)" onclick="maintenanceEquipmentOne(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>维护设备</a> ');
}
return actions.join(''); return actions.join('');
} }
}] }]
@ -182,12 +187,21 @@
}); });
/*详情*/ /*详情*/
function detail(outOrderId ) { function detail(outOrderId) {
// 在这里编写派单操作的逻辑,使用传入的aftersalesOrderId参数 // 在这里编写派单操作的逻辑,使用传入的aftersalesOrderId参数
// 示例逻辑: // 示例逻辑:
var url = ctx + 'aftersales/warehouseOutOrder/detail/'+outOrderId; var url = ctx + 'aftersales/warehouseOutOrder/detail/'+outOrderId;
$.modal.open("详情",url); $.modal.open("详情",url);
} }
/*售后第一次维护设备*/
function maintenanceEquipmentOne(outOrderId) {
// 在这里编写派单操作的逻辑,使用传入的aftersalesOrderId参数
// 示例逻辑:
var url = ctx + 'aftersales/warehouseOutOrder/maintenanceEquipmentOne/'+outOrderId;
$.modal.open("售后第一次维护设备",url);
}
</script> </script>
</body> </body>
</html> </html>

147
ruoyi-admin/src/main/resources/templates/system/makeorder/addProduceInbound.html

@ -163,19 +163,6 @@
align: 'center', align: 'center',
title: '已完成数' title: '已完成数'
}, },
// {
// field: 'currentNum',
// title: '本次完成数',
// formatter: function (value,row,index){
// var curIndex = index;
// // 物料类型是成品,通过添加设备履历表计算数量
// if(row.materialType == 'chcpsb'){
// return '<input readonly class = "form-control" data-id = "currentNum_'+curIndex+'" name="inboundDetails['+curIndex+'].currentNum">' +
// '<input class = "form-control hidden" data-id = "equipResumeArrayStr_'+curIndex+'" name="inboundDetails['+curIndex+'].equipResumeArrayStr">';
// }
// return '<input class = "form-control" data-id = "currentNum_'+curIndex+'" name="inboundDetails['+curIndex+'].currentNum">';
// }
// },
{ {
field: 'currentNum', field: 'currentNum',
title: '本次完成数', title: '本次完成数',
@ -205,7 +192,6 @@
var childTableId = 'child_table_'+index; var childTableId = 'child_table_'+index;
var childFormTableId = 'child_form_table_'+index; var childFormTableId = 'child_form_table_'+index;
var childTableFormId = 'child_table_form_'+index; var childTableFormId = 'child_table_form_'+index;
// $detail.html('<form id="'+childTableFormId+'"><table id="'+childTableId+'"></table><table id="'+childFormTableId+'"></table></form>');
$detail.html('<table id="'+childTableId+'"></table>'); $detail.html('<table id="'+childTableId+'"></table>');
// BOM展示 // BOM展示
$('#'+childTableId).bootstrapTable({ $('#'+childTableId).bootstrapTable({
@ -383,104 +369,63 @@
function addEquipmentResume(curIndex,materialCode){ function addEquipmentResume(curIndex,materialCode){
var url = prefix + "/addEquipmentResume?makeNo="+$("#makeNo").val()+"&saleNo="+$("#saleNo").val()+"&materialNo="+materialCode+"&curIndex="+curIndex; var url = prefix + "/addEquipmentResume?makeNo="+$("#makeNo").val()+"&saleNo="+$("#saleNo").val()+"&materialNo="+materialCode+"&curIndex="+curIndex;
// var options = {
// title: '设备履历表',
// url: url,
// // callBack: doSubmit
// };
// $.modal.openOptions(options);
$.modal.open("设备履历表",url); $.modal.open("设备履历表",url);
} }
// function doSubmit(index, layero,uniqueId) { $("#form-makeorder-edit").validate({
// // debugger focusCleanup: true
// var iframeWin = window[layero.find('iframe')[0]['name']]; });
// // 行取不到
// // var data = iframeWin.$('#bootstrap-sub-table-1').bootstrapTable('getData'); // function submitHandler() {
// // alert(JSON.stringify(data)); // debugger
// // var data = $("#form-makeorder-edit").serializeArray();
// // 取不到 // alert(JSON.stringify(data));
// // var options = iframeWin.$('#bootstrap-sub-table-1').bootstrapTable('getOptions'); // $.operate.save(ctx + "erp/inboundOrder/add", data);
// // var data = options.data;
// // alert(JSON.stringify(data));
//
// var formData = iframeWin.$("#form-equipMaterial-add").serializeArray();
// var formObj = serializeObject(formData);
// var formObjStr = JSON.stringify(formObj);
// // alert(formObjStr);
// // 关闭弹出框
// layer.close(index);
// var curIndex = formObj.curIndex;
// if(formObj.equipResumes){
// var currentNum = formObj.equipResumes.length;
// var equipResumeArrayStr = JSON.stringify(formObj.equipResumes);
// $('[data-id="currentNum_'+curIndex+'"]').val(currentNum);
// $('[data-id="equipResumeArrayStr_'+curIndex+'"]').val(equipResumeArrayStr);
// }
//
// } // }
function serializeObject(formData) {
var obj = {}; /*
$.each(formData, function () { * 提交设备履历信息
if (this.name.indexOf("[") !== -1 && this.name.indexOf("].") !== -1) { * */
let temp1 = this.name.split("["); function submitHandler() {
let temp2 = temp1[1].split("]."); // 获取表单数据
let list_name = temp1[0]; const makeorderData = $("#form-makeorder-edit").serializeArray().reduce((obj, item) => {
let list_index = parseInt(temp2[0]); obj[item.name] = item.value;
let list_key = temp2[1];
// console.log(list_name, '-', list_index, '-', list_key)
if (obj[list_name]) {
// console.log(obj[list_name])
let arr = obj[list_name]
if (arr.length < list_index + 1) {
for (let i = arr.length; i < list_index + 1; i++) {
// console.log(list_index + 1)
let list_obj_temp = {}
arr.push(list_obj_temp)
}
}
let list_obj = obj[list_name][list_index];
list_obj[list_key] = this.value || '';
} else {
let arr = []
if (list_index !== 0) {
for (let i = 0; i < list_index + 1; i++) {
// console.log(list_index + 1)
let list_obj_temp = {}
arr.push(list_obj_temp)
}
}
let list_obj = {}
list_obj[list_key] = this.value || '';
arr.push(list_obj)
obj[list_name] = arr;
}
} else {
if (obj[this.name]) {
if (!obj[this.name].push) {
obj[this.name] = [obj[this.name]];
}
obj[this.name].push(this.value || '');
} else {
obj[this.name] = this.value || '';
}
}
});
return obj; return obj;
} }, {});
// 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
var table = $('#bootstrap-sub-table-1').bootstrapTable('getData');
//获取选中复选框行的数据
// 将表数据转换成与complaintNoticeData格式一致的数组
var materialDataList = table.map(function(item) {
// 根据实际字段名调整
return {
"materialCode":item.materialCode,
"materialName": item.materialName,
"unit": item.unit,
"brand": item.brand,
"describe":item.describe,
"processMethod":item.processMethod,
"deliveryTime":item.deliveryTime,
"materialNum":item.materialNum,
"currentNum": item.currentNum,
"completedNum": item.completedNum,
$("#form-makeorder-edit").validate({ // ...其他字段
focusCleanup: true };
}); });
function submitHandler() { // 合并表单数据和表格数据
debugger const combinedData = Object.assign({}, makeorderData, { sysEquipDetailDtos: materialDataList });
var data = $("#form-makeorder-edit").serializeArray();
alert(JSON.stringify(data)); console.log(combinedData)
$.operate.save(ctx + "erp/inboundOrder/add", data); // 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/addEquipmentResumeSave", jsonData);
} }
</script> </script>
</body> </body>
</html> </html>

11
ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html

@ -355,8 +355,9 @@
actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度查看</a> '); actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度查看</a> ');
} }
if (row.makeStatus == "0" || row.makeStatus == "1"){ // 生产状态部分完成/全部完成
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i> 出货</a> '); if (row.makeStatus == "5" || row.makeStatus == "6"){
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="salesDeliverGoods(\'' + row.salesOrderId + '\')"><i class="fa fa-edit"></i> 出货</a> ');
} }
// 详情 // 详情
@ -373,6 +374,12 @@
function downloadFile(filepath) { function downloadFile(filepath) {
window.location.href =prefix + "/downloadFile?filepath="+ filepath; window.location.href =prefix + "/downloadFile?filepath="+ filepath;
} }
//出货
function salesDeliverGoods(salesOrderId){
var url = prefix + "/salesDeliverGoods/" + salesOrderId;
$.modal.open("出货",url);
}
</script> </script>
</body> </body>
</html> </html>

Loading…
Cancel
Save