Browse Source

[feat]仓库管理:

仓库入库单
新增 暂收-采购单(仓库入库)保存数据接口
新增查询入库单详情查询所有的仓库Id接口
新增根据仓库ID查询仓库名称接口
修改 temporaryPurchaseWarehouse.html页面布局
dev
liuxiaoxu 9 months ago
parent
commit
3e7f7e5e45
  1. 25
      ruoyi-admin/src/main/java/com/ruoyi/stock/controller/StockInfoController.java
  2. 11
      ruoyi-admin/src/main/java/com/ruoyi/stock/mapper/StockInfoMapper.java
  3. 10
      ruoyi-admin/src/main/java/com/ruoyi/stock/service/IStockInfoService.java
  4. 17
      ruoyi-admin/src/main/java/com/ruoyi/stock/service/impl/StockInfoServiceImpl.java
  5. 9
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java
  6. 11
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java
  7. 2
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java
  8. 30
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  9. 10
      ruoyi-admin/src/main/resources/mapper/stock/StockInfoMapper.xml
  10. 66
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml
  11. 139
      ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/temporaryPurchaseWarehouse.html

25
ruoyi-admin/src/main/java/com/ruoyi/stock/controller/StockInfoController.java

@ -130,4 +130,29 @@ public class StockInfoController extends BaseController
//System.out.println(stockInfos);
return Result.getSuccessResult(stockInfos);
}
/*
* 入库单详情查询所有的仓库Id
* */
@ResponseBody
@GetMapping("/getAllWarehouseCode")
public List<StockInfo> getAllWarehouseCode(){
List<StockInfo> list = stockInfoService.getAllWarehouseCode();
return list;
}
/*
* 根据仓库ID查询仓库名称
* */
@ResponseBody
@GetMapping("/getStockNameByWarehouseCode/{warehouseCode}")
public AjaxResult getStockNameByWarehouseCode(@PathVariable String warehouseCode){
StockInfo stockInfo = stockInfoService.selectStockInfoByCode(warehouseCode);
return AjaxResult.success(stockInfo);
}
}

11
ruoyi-admin/src/main/java/com/ruoyi/stock/mapper/StockInfoMapper.java

@ -59,4 +59,15 @@ public interface StockInfoMapper
* @return 结果
*/
public int deleteStockInfoByIds(String[] StockNOs);
/*
* 入库单详情查询所有的仓库Id
* */
public List<StockInfo> getAllWarehouseCode();
/*
* 根据仓库ID查询仓库名称
* */
public StockInfo selectStockInfoByCode(String warehouseCode);
}

10
ruoyi-admin/src/main/java/com/ruoyi/stock/service/IStockInfoService.java

@ -59,4 +59,14 @@ public interface IStockInfoService
* @return 结果
*/
public int deleteStockInfoById(String StockNO);
/*
* 入库单详情查询所有的仓库Id
* */
public List<StockInfo> getAllWarehouseCode();
/*
* 根据仓库ID查询仓库名称
* */
public StockInfo selectStockInfoByCode(String warehouseCode);
}

17
ruoyi-admin/src/main/java/com/ruoyi/stock/service/impl/StockInfoServiceImpl.java

@ -92,4 +92,21 @@ public class StockInfoServiceImpl implements IStockInfoService
{
return stockInfoMapper.deleteStockInfoById(StockNO);
}
/*
* 入库单详情查询所有的仓库Id
* */
@Override
public List<StockInfo> getAllWarehouseCode() {
return stockInfoMapper.getAllWarehouseCode();
}
/*
* 根据仓库ID查询仓库名称
* */
@Override
public StockInfo selectStockInfoByCode(String warehouseCode) {
return stockInfoMapper.selectStockInfoByCode(warehouseCode);
}
}

9
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java

@ -10,11 +10,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
@ -140,7 +136,7 @@ public class WarehouseStorageOrderController extends BaseController
@Log(title = "仓库入库单", businessType = BusinessType.UPDATE)
@PostMapping("/temporaryPurchaseWarehouse")
@ResponseBody
public AjaxResult temporaryPurchaseWarehouseSave(WarehouseStorageOrder warehouseStorageOrder)
public AjaxResult temporaryPurchaseWarehouseSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder)
{
return toAjax(warehouseStorageOrderService.updateWarehouseStorageOrder(warehouseStorageOrder));
}
@ -157,4 +153,5 @@ public class WarehouseStorageOrderController extends BaseController
return groupedDetails;
}
}

11
ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java

@ -80,4 +80,15 @@ public interface WarehouseStorageOrderDetailMapper
* 根据入库单号查询入库单详情列表
* */
List<WarehouseStorageOrderDetail> selectStorageOrderDetailListByCode(String warehouseStorageCode);
/*
* 根据入库单号供应商id物料号查询物料单详情
* */
WarehouseStorageOrderDetail selectWarehouseStorageOrderByObject(WarehouseStorageOrderDetail tempStorageOrderDetail);
/*
* 根据入库单号供应商id物料号更新对应的物料单详情
* */
int updateWarehouseStorageOrderDetailByObject(WarehouseStorageOrderDetail warehouseStorageOrderDetail);
}

2
ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java

@ -2,6 +2,7 @@ package com.ruoyi.warehouse.mapper;
import java.util.List;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail;
/**
* 仓库入库单Mapper接口
@ -74,4 +75,5 @@ public interface WarehouseStorageOrderMapper
* @return 结果
*/
public int restoreWarehouseStorageOrderById(Long warehouseStorageId);
}

30
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -3,12 +3,17 @@ package com.ruoyi.warehouse.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail;
import com.ruoyi.warehouse.mapper.WarehouseStorageOrderDetailMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import com.ruoyi.warehouse.service.IWarehouseStorageOrderService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
/**
* 仓库入库单Service业务层处理
@ -17,11 +22,14 @@ import com.ruoyi.common.core.text.Convert;
* @date 2024-05-22
*/
@Service
@Slf4j
public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderService
{
@Autowired
private WarehouseStorageOrderMapper warehouseStorageOrderMapper;
@Autowired
private WarehouseStorageOrderDetailMapper storageOrderDetailMapper;
/**
* 查询仓库入库单
*
@ -67,12 +75,34 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
* @param warehouseStorageOrder 仓库入库单
* @return 结果
*/
@Transactional
@Override
public int updateWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder)
{
String loginName = ShiroUtils.getLoginName();
warehouseStorageOrder.setUpdateBy(loginName);
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate());
List<WarehouseStorageOrderDetail> storageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList();
if (StringUtils.isEmpty(storageOrderDetailList)){
log.warn("入库单详情为空:{}",storageOrderDetailList);
}else {
for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : storageOrderDetailList) {
warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageOrder.getWarehouseStorageCode());
WarehouseStorageOrderDetail tempStorageOrderDetail = new WarehouseStorageOrderDetail();
tempStorageOrderDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo());
tempStorageOrderDetail.setSupplierCode(warehouseStorageOrderDetail.getSupplierCode());
tempStorageOrderDetail.setWarehouseStorageCode(warehouseStorageOrder.getWarehouseStorageCode());
WarehouseStorageOrderDetail storageOrderDetailFromData = storageOrderDetailMapper.selectWarehouseStorageOrderByObject(tempStorageOrderDetail);
if (storageOrderDetailFromData == null){
log.warn("数据库中入库单详情为空:{}",tempStorageOrderDetail);
}else {
storageOrderDetailMapper.updateWarehouseStorageOrderDetailByObject(warehouseStorageOrderDetail);
}
}
}
return warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder);
}

10
ruoyi-admin/src/main/resources/mapper/stock/StockInfoMapper.xml

@ -36,6 +36,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where stock_id = #{stockId}
</select>
<select id="getAllWarehouseCode" resultMap="StockInfoResult">
<include refid="selectStockInfoVo"/>
</select>
<select id="selectStockInfoByCode" resultMap="StockInfoResult">
<include refid="selectStockInfoVo"/>
where StockNO = #{warehouseCode}
</select>
<insert id="insertStockInfo" parameterType="StockInfo">
insert into stock_info
<trim prefix="(" suffix=")" suffixOverrides=",">

66
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml

@ -77,7 +77,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where warehouse_storage_code = #{warehouseStorageCode}
</select>
<select id="selectWarehouseStorageOrderByObject" parameterType="WarehouseStorageOrder" resultMap="WarehouseStorageOrderDetailResult">
<include refid="selectWarehouseStorageOrderDetailVo"/>
where warehouse_storage_code = #{warehouseStorageCode}
and supplier_code = #{supplierCode}
and material_no = #{materialNo}
</select>
<insert id="insertWarehouseStorageOrderDetail" parameterType="WarehouseStorageOrderDetail" useGeneratedKeys="true" keyProperty="warehouseStorageDetailId">
insert into warehouse_storage_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -240,6 +245,65 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where warehouse_storage_detail_id = #{warehouseStorageDetailId}
</update>
<update id="updateWarehouseStorageOrderDetailByObject" parameterType="WarehouseStorageOrderDetail">
update warehouse_storage_order_detail
<trim prefix="SET" suffixOverrides=",">
<if test="warehouseStorageCode != null">warehouse_storage_code = #{warehouseStorageCode},</if>
<if test="relatedOrderCode != null">related_order_code = #{relatedOrderCode},</if>
<if test="warehouseStorageStatus != null">warehouse_storage_status = #{warehouseStorageStatus},</if>
<if test="warehouseQualityStatus != null">warehouse_quality_status = #{warehouseQualityStatus},</if>
<if test="warehouseStorageType != null">warehouse_storage_type = #{warehouseStorageType},</if>
<if test="warehouseStorageClass != null">warehouse_storage_class = #{warehouseStorageClass},</if>
<if test="warehouseOrderType != null">warehouse_order_type = #{warehouseOrderType},</if>
<if test="warehouseDeptType != null">warehouse_dept_type = #{warehouseDeptType},</if>
<if test="warehouseEmployee != null">warehouse_employee = #{warehouseEmployee},</if>
<if test="warehouseCode != null">warehouse_code = #{warehouseCode},</if>
<if test="warehouseName != null">warehouse_name = #{warehouseName},</if>
<if test="warehouseDetailAddress != null">warehouse_detail_address = #{warehouseDetailAddress},</if>
<if test="supplierCode != null">supplier_code = #{supplierCode},</if>
<if test="supplierName != null">supplier_name = #{supplierName},</if>
<if test="customerContact != null">customer_contact = #{customerContact},</if>
<if test="contactNumber != null">contact_number = #{contactNumber},</if>
<if test="supplierAddress != null">supplier_address = #{supplierAddress},</if>
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="materialType != null">material_type = #{materialType},</if>
<if test="materialPhotourl != null">material_photoUrl = #{materialPhotourl},</if>
<if test="materialBrand != null">material_brand = #{materialBrand},</if>
<if test="materialUnit != null">material_unit = #{materialUnit},</if>
<if test="materialDescribe != null">material_describe = #{materialDescribe},</if>
<if test="materialProcessMethod != null">material_process_method = #{materialProcessMethod},</if>
<if test="materialDeptType != null">material_dept_type = #{materialDeptType},</if>
<if test="makeTotal != null">make_total = #{makeTotal},</if>
<if test="notifyHasArrivedNum != null">notify_has_arrived_num = #{notifyHasArrivedNum},</if>
<if test="notifyArriveNum != null">notify_arrive_num = #{notifyArriveNum},</if>
<if test="actualHasArrivedNum != null">actual_has_arrived_num = #{actualHasArrivedNum},</if>
<if test="actualArriveNum != null">actual_arrive_num = #{actualArriveNum},</if>
<if test="temporaryHasQualifiedNum != null">temporary_has_qualified_num = #{temporaryHasQualifiedNum},</if>
<if test="temporaryQualifiedNum != null">temporary_qualified_num = #{temporaryQualifiedNum},</if>
<if test="hasStorageNum != null">has_storage_num = #{hasStorageNum},</if>
<if test="storageNum != null">storage_num = #{storageNum},</if>
<if test="qualityHasQualifiedNum != null">quality_has_qualified_num = #{qualityHasQualifiedNum},</if>
<if test="qualityQualifiedNum != null">quality_qualified_num = #{qualityQualifiedNum},</if>
<if test="refundsExchangesNum != null">refunds_exchanges_num = #{refundsExchangesNum},</if>
<if test="arrivedTime != null">arrived_time = #{arrivedTime},</if>
<if test="temporaryTime != null">temporary_time = #{temporaryTime},</if>
<if test="deliveryInspectionTime != null">delivery_inspection_time = #{deliveryInspectionTime},</if>
<if test="qualityTime != null">quality_time = #{qualityTime},</if>
<if test="storageTime != null">storage_time = #{storageTime},</if>
<if test="temporaryRemark != null">temporary_remark = #{temporaryRemark},</if>
<if test="temporaryReportUrl != null">temporary_report_url = #{temporaryReportUrl},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where warehouse_storage_code = #{warehouseStorageCode}
and supplier_code = #{supplierCode}
and material_no = #{materialNo}
</update>
<delete id="deleteWarehouseStorageOrderDetailById" parameterType="Long">
delete from warehouse_storage_order_detail where warehouse_storage_detail_id = #{warehouseStorageDetailId}
</delete>

139
ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/temporaryPurchaseWarehouse.html

@ -18,13 +18,13 @@
<div class="form-group">
<label class="col-sm-3 control-label">入库单号:</label>
<div class="col-sm-8">
<input name="warehouseStorageCode" th:field="*{warehouseStorageCode}" class="form-control" type="text" disabled>
<input name="warehouseStorageCode" th:field="*{warehouseStorageCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">关联单号:</label>
<div class="col-sm-8">
<input name="relatedOrderCode" th:field="*{relatedOrderCode}" class="form-control" type="text" disabled>
<input name="relatedOrderCode" th:field="*{relatedOrderCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="col-xs-12">
@ -39,7 +39,7 @@
<label class="col-sm-3 control-label">到货时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="arrivedTime" th:value="${#dates.format(warehouseStorageOrder.arrivedTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" disabled>
<input name="arrivedTime" th:value="${#dates.format(warehouseStorageOrder.arrivedTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" readonly>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
@ -54,13 +54,15 @@
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓库Id</label>
<label class="col-sm-4 control-label is-required">仓库ID</label>
<div class="col-sm-8">
<input name="warehouseCode" th:field="*{warehouseCode}" class="form-control" type="text">
<select class="form-control" id="warehouseCode" name="warehouseCode" th:field="*{warehouseCode}" required>
<!-- 这里动态生成仓库ID选项 -->
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓库名称:</label>
<label class="col-sm-4 control-label">仓库名称:</label>
<div class="col-sm-8">
<input name="warehouseName" th:field="*{warehouseName}" class="form-control" type="text">
</div>
@ -88,16 +90,66 @@
<script th:inline="javascript">
var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]
var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]]
var prefix = ctx + "warehouse/storageOrder";
$("#form-temporaryPurchaseWarehouse-edit").validate({
focusCleanup: true
});
//生成的不同table的id集合
var tableDatas = [];
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/temporaryPurchaseWarehouse", $('#form-temporaryPurchaseWarehouse-edit').serialize());
const storageOrderData = $("#form-temporaryPurchaseWarehouse-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value;
return obj;
}, {});
// 初始化一个数组用于存放所有表格的数据
let allMaterialDataList = [];
for(let i in tableDatas){
$('#' + tableDatas[i]).each(function() {
const tableData = $(this).bootstrapTable('getData');
console.log(JSON.stringify(tableData));
// 将表数据转换成与qualityReportData格式一致的数组
var materialDataList = tableData.map(function (item) {
// 根据实际字段名调整
return {
"supplierCode": item.supplierCode,
"materialNo": item.materialNo,
"materialName": item.materialName,
"materialType": item.materialType,
"materialPhotourl": item.materialPhotourl,
"materialDescribe": item.materialDescribe,
"materialBrand": item.materialBrand,
"materialUnit": item.materialUnit,
"materialProcessMethod": item.materialProcessMethod,
"notifyHasArrivedNum": item.notifyHasArrivedNum,
"actualHasArrivedNum": item.actualHasArrivedNum,
"temporaryHasQualifiedNum": item.temporaryHasQualifiedNum,
"qualityHasQualifiedNum": item.qualityHasQualifiedNum,
"hasStorageNum": item.hasStorageNum,
"notifyArriveNum": item.notifyArriveNum,
"actualArriveNum": item.actualArriveNum,
"temporaryQualifiedNum": item.temporaryQualifiedNum,
"temporaryRemark": item.temporaryRemark,
"temporaryReportUrl": item.temporaryReportUrl,
// ...其他字段
};
});
allMaterialDataList = allMaterialDataList.concat(materialDataList);
});
}
const combinedData = Object.assign({}, storageOrderData, {
warehouseStorageOrderDetailList: allMaterialDataList
});
// 合并表单数据和表格数据
// const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData);
console.log(combinedData)
// 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/temporaryPurchaseWarehouse", jsonData);
}
$("input[name='arrivedTime']").datetimepicker({
@ -125,9 +177,9 @@
}
});
});
function createTableForSupplier(supplierCode, supplierData) {
var tableId = 'bootstrap-table-' + supplierCode.replace(/[^a-z0-9]/gi, '_').toLowerCase();
tableDatas.push(tableId);
var $tableWrapper = $('<div class="table-responsive mt-3"></div>');
// 确保supplierData至少有一条记录,并从中提取供应商详细信息
@ -253,6 +305,73 @@
$('#tablesContainer').append($tableWrapper);
}
//根据仓库ID查询仓库名称
$(document).ready(function() {
// 初始化时默认加载仓库ID列表
loadWarehouseCodes();
// 监听仓库ID下拉框的变化
$('#warehouseCode').on('change', function() {
var selectedWarehouseCode = $(this).val(); // 获取选中的仓库ID
if (selectedWarehouseCode) {
// 发起Ajax请求获取仓库名称
$.ajax({
type: 'GET',
url: ctx +'stock/stockInfo/getStockNameByWarehouseCode/' + selectedWarehouseCode,
dataType: 'json', // 假设返回的数据格式是JSON
success: function(data) {
console.log(data);
// 将获取到的仓库名称填充到输入框
if(data.data == null){
// 如果返回的数据有问题,可以给出提示或处理
$.modal.alertWarning('未能获取到仓库名称!');
}
$('input[name="warehouseName"]').val(data.data.stockname);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error('Error:', textStatus, errorThrown);
$.modal.alertWarning('查询仓库名称时发生错误!');
}
});
} else {
// 如果没有选择仓库ID,清空仓库名称输入框
$('input[name="warehouseName"]').val('');
}
});
});
// 加载仓库Id列表函数
function loadWarehouseCodes() {
var url = ctx + 'stock/stockInfo/getAllWarehouseCode';
$.ajax({
type: 'GET', // 请求类型
url: url, // 后端接口URL
dataType: 'json', // 预期服务器返回的数据类型
success: function(data) {
if (data && Array.isArray(data)) {
var selectElement = $('#warehouseCode'); // 获取仓库编号下拉框元素
// 清空下拉框现有选项
selectElement.empty();
// 添加默认选项(如果需要)编辑时不需要添加默认选项
selectElement.append('<option value="">所有</option>');
// 遍历返回的数据,添加为下拉框的选项
$.each(data, function(index, item) {
// 仓库ID
selectElement.append('<option value="' + item.stockNO + '">' + item.stockNO + '</option>');
});
// $('#warehouseCode').val(stockNO);
} else {
$.modal.errMsg("数据为空");
}
}
});
}
</script>
</body>
</html>
Loading…
Cancel
Save