abp(net core)+easyui+efcore實現倉儲管理系統目錄
abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI前端頁面框架 (十八)
在經過前面八篇文章(abp(net core)+easyui+efcore實現倉儲管理系統——入庫管理之一(三十七) 至abp(net core)+easyui+efcore實現倉儲管理系統——入庫管理之八(四十四) )的學習之后,我們知道了已經基本完成了入庫管理功能。在這篇文章中我們來增加更新與刪除功能的腳本。
十三、修改更新與刪除腳本
1. 在Visual Studio 2017的“解決方案資源管理器”中,找到領域層“ABP.TPLMS.Web.Mvc”項目中的wwwroot目錄下的view-resources\Views\InStock目錄中的找到Index.js文件。如下圖。
2. 在Index.js文件中,寫入相應的腳本代碼。代碼如下:
//-----------------------系統管理-->入庫單管理----------------------//
var editIndex = undefined;
var mainIndex = undefined;
//刷新數據
function initable() {
$("#dgINSO").datagrid({
url: "/InStock/List",
title: "入庫單管理",
pagination: true,
pageSize: 10,
pageList: [10, 20, 30],
fit: true,
fitColumns: false,
loadMsg: "正在加載入庫單信息...",
nowarp: false,
border: false,
idField: "Id",
sortName: "Id",
sortOrder: "asc",
frozenColumns: [[//凍結列
{ field: "ck", checkbox: true, align: "left", width: 50 }
]],
columns: [[
{ title: "編號", field: "Id", width: 50, sortable: true },
{ title: "入庫單號", field: "No", width: 100, sortable: true },
{title: "狀態", field: "Status", width: 50 },
{ title: '到貨日期', field: 'ReceiveTime', width: 100, align: 'center' },
{ title: "貨主", field: "OwnerCode", width: 150, sortable: true },
{ title: "預計到貨時間", field: "PreDeliveryTime", width: 100, sortable: false },
{ title: '客戶', field: 'CustomerName', width: 120, align: 'center' },
{ title: '收貨人',field: 'Oper', width: 100, align: 'center' },
{ title: '審核人',field: 'Checker', width: 120, align: 'center' },
{ title: '件數', field: 'PackageQty', width: 100, align: 'center' },
{ title: '創建時間', field: 'CreationTime', width: 100, align: 'center' }
]]
});
}
//顯示送貨單數據
function ShowCargo() {
abp.log.warn('貨物信息列表日志...');
$("#dgCargo").datagrid({
url: "/Cargo/List",
title: "貨物管理管理",
pagination: true,
pageSize: 10,
pageList: [10, 20, 30],
fit: true,
fitColumns: false,
loadMsg: "正在加載貨物信息...",
nowarp: false,
border: false,
idField: "Id",
sortName: "Id",
sortOrder: "asc",
frozenColumns: [[//凍結列
{ field: "ck", checkbox: true, align: "left", width: 50 }
]],
columns: [[
{ title: "編號", field: "Id", width: 50, sortable: true },
{ title: "供應商", field: "SupplierId", width: 80, sortable: true },
{ title: "HSCode", field: "HSCode", width: 100, sortable: true },
{ title: "貨物代碼", field: "CargoCode", width: 100, sortable: true },
{ title: "貨物名稱", field: "CargoName", width: 80, sortable: false },
{ title: "規格型號", field: "Spcf", width: 100, sortable: false },
{ title: "產銷國", field: "Country", width: 80, sortable: false },
{ title: "計量單位", field: "Unit", width: 100, sortable: false },
{ title: "包裝", field: "Package", width: 100, sortable: false },
{ title: "單價", field: "Price", width: 100, sortable: false },
{ title: "幣制", field: "Curr", width: 80, sortable: false },
{
title: "長寬高", field: "Length", width: 100, sortable: false, formatter: function (value, row, index) {
return row.Length + '*' + row.Width + '*' + row.Height;
}
},
{ title: "體積", field: "Vol", width: 80, sortable: false },
{ title: "備注", field: "Remark", width: 80, sortable: false },
{ title: '創建時間', field: 'CreationTime', width: 100, align: 'center' }
]]
});
abp.log.warn('3貨物信息列表日志...');
}
function ShowCargoInfo() {
$("#divImportCargo").dialog({
closed: false,
title: "選擇貨物信息",
modal: true,
width: 820,
height: 550,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true
});
ShowCargo();
$("#dgCargo").datagrid("clearChecked");
$("#dgCargo").datagrid("clearSelections");
}
function reloaded() { //reload
$("#reload").click(function () {
//
$('#dgINSO').datagrid('reload');
});}
//修改點擊按鈕事件
function updInSOInfo() {
$("#edit").click(function () {
//判斷選擇的中
var row = $("#dgINSO").datagrid('getSelected');
if (row) {
$.messager.confirm('編輯', '您想要編輯嗎?', function (r) {
if (r) {
//先綁定
showINO(row);
//打開對話框編輯
$("#divAddUpdINO").dialog({
closed: false,
title: "修改入庫單",
modal: true,
width: 820,
height: 550,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true,
});
defaultTab();
ShowDetail(row.No);
}
});
SetEnabled(row.Status);
} else {
$.messager.alert('提示', ' 請選擇要編輯的行!', 'warning');
}
});
}
//刪除入庫單
function deleteInSO() {
$("#del").click(function () {
var rows = $("#dgINSO").datagrid("getSelections");
if (rows.length > 0) {
$.messager.confirm("提示", "確定要刪除嗎?", function (res) {
if (res) {
var codes = []; //重要不是{}
for (var i = 0; i < rows.length; i++) {
codes.push(rows[i].Id);
}
$.post("/InStock/Delete", { "ids": codes.join(',') }, function (data) {
if (data == "OK") {
$.messager.alert("提示", "刪除成功!");
$("#dgINSO").datagrid("clearChecked");
$("#dgINSO").datagrid("clearSelections");
$("#dgINSO").datagrid("load", {});
}
else if (data == "NO") {
$.messager.alert("提示", "刪除失敗!");
return;
}
});
}
});
}
})
}
//清空文本框
function clearAll() {
$("#divAddUpdINO input").each(function () {
$(this).val("");
});
$("#PreDeliveryTimeUpdate").val(getNowFormatDate());
$("#StatusUpdate").val("0");
$("#NwtUpdate").val("0");
$("#GwtUpdate").val("0");
$("#PackageQtyUpdate").val("0");
}
function GetNo() {
$.get(abp.appPath + "api/services/app/InStockOrder/GetNo", function (data) {
$("#UpdNO").val(data);
});
}
//獲取當前時間,格式YYYY-MM-DD
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
}
//將表單數據轉為json
function form2Json(id) {
var arr = $("#" + id).serializeArray()
var jsonStr = "";
jsonStr += '{';
for (var i = 0; i < arr.length; i++) {
jsonStr += '"' + arr[i].name + '":"' + arr[i].value + '",'
}
jsonStr = jsonStr.substring(0, (jsonStr.length - 1));
jsonStr += '}'
var json = JSON.parse(jsonStr)
return json
}
function SetEnabled(status) {
//var status = $("#StatusUpdate").val()
if (status == "提交") {
$("#btnSave").prop('disabled', true);
}
else {
$("#btnSave").removeAttr("disabled");
}
}
function defaultTab() {
//默認顯示第一個tab
$('#box').tabs('select', "入庫單");
}
//彈出 導入送貨單的的對話框
function showInSODialog() {
$("#add").click(function () {
$.messager.confirm('編輯', '您想要創建入庫單嗎?', function (r) {
if (r) {
//打開對話框編輯
$("#divAddUpdINO").dialog({
closed: false,
title: "新增入庫單",
modal: true,
width: 820,
height: 550,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true,
});
}
defaultTab();
GetNo();
clearAll();
ShowDetail("");
});
});
$("#btnSave").click(function () {
//保存
var id = $("#IDUpdate").val();
if (id == "" || id == undefined) {
//驗證
$.messager.confirm('確認', '您確認要保存嗎?', function (r) {
if (r) {
var postData = GetINO();
if (postData.No == "" || postData.CustomerCode == "" || postData.CustomerName=="" || postData.OwnerName=="") {
$.messager.alert('提示', ' 請填寫相關必填項!', 'warning');
return;
}
$.post("/InStock/Add", postData, function (data) {
if (data == "OK") {
// $("#divAddUpdDO").dialog("close");
$.messager.alert("提示", "保存成功!");
initable();
collapseRows();
}
else if (data == "NO") {
$.messager.alert("提示", "保存失敗!");
return;
}
});
}
})
}
else {
saveDetail();
initable();
collapseRows();
}
});
}
//添加明細
function ShowDetail(no) {
var lastIndex;
$("#dgINOD").datagrid({
url: "/InStock/GetDetail?no=" + no,
title: "入庫單明細",
pagination: false,
fit: true,
fitColumns: false,
loadMsg: "正在加載入庫單明細信息...",
toolbar: [
{ text: '添加明細', iconCls: 'icon-add', handler: function () { ShowCargoInfo(); } },
{ text: '添加庫位', iconCls: 'icon-edit', handler: function () { SubGridAddRow(); } },
{ text: '刪除', iconCls: 'icon-remove', handler: function () { deviceInfoDeleteClick(); } },
'-'
],
nowarp: false,
border: false,
idField: "Id",
sortName: "Id",
sortOrder: "asc",
singleSelect: true,
iconCls: 'icon-edit',
columns: [[
{ title: "編號", field: "SeqNo", width: 50, sortable: true },
{ title: "入庫單號", field: "InStockNo", width: 100, sortable: true },
{ title: "HSCode", field: "HSCode", width: 80, sortable: false },
{ title: "貨物代碼", field: "CargoCode", width: 100, sortable: true },
{ title: "貨物名稱", field: "CargoName", width: 160, sortable: false },
{ title: "規格型號", field: "Spcf", width: 80, sortable: false },
{
title: "數量", field: "Qty", width: 100, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 4
}
}
},
{
title: "長", field: "Length", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "寬", field: "Width", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{
title: "高", field: "Height", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "產銷國", field: "Country", width: 70, align: 'center' },
{
title: "單價", field: "Price", width: 100, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{
title: "總價", field: "TotalAmt", width: 100, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "包裝", field: "Package", width: 70, align: 'center' },
{ title: "計量單位", field: "Unit", width: 70, align: 'center' },
{
title: "總體積", field: "Vol", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 4
}
}
},
{ title: "品牌", field: "Brand", width: 70, align: 'center' }
]],
onClickRow: function (index, rowData) {
if (mainIndex!=undefined) {
$('#dgINOD').datagrid('collapseRow', mainIndex);
}
if (lastIndex != index) {
$('#dgINOD').datagrid('endEdit', lastIndex);
editrow(index);
}
lastIndex = index;
},
onBeginEdit: function (rowIndex, rowData) {
setEditing(rowIndex);
}
});
}
//計算報價小計
function setEditing(rowIndex) {
var editors = $('#dgINOD').datagrid('getEditors', rowIndex);
var priceEditor = editors[4];
var qtyEditor = editors[0];
var lengthEditor = editors[1];
var widthEditor = editors[2];
var heightEditor = editors[3];
var totalVolEditor = editors[6];
var totalAmtEditor = editors[5];
priceEditor.target.numberbox({
onChange: function () { calculate();}
});
qtyEditor.target.numberbox({
onChange: function () {
calculate();
calculateVol();
}
});
lengthEditor.target.numberbox({
onChange: function () { calculateVol(); }
});
widthEditor.target.numberbox({
onChange: function () { calculateVol(); }
});
heightEditor.target.numberbox({
onChange: function () { calculateVol(); }
});
function calculate() {
var cost = (priceEditor.target.val()) * (qtyEditor.target.val());
console.log(cost);
totalAmtEditor.target.numberbox("setValue", cost);
}
function calculateVol() {
var vol = (lengthEditor.target.val() / 100.0) * (widthEditor.target.val() / 100.0)
* (heightEditor.target.val() / 100.0)* (qtyEditor.target.val());
console.log(vol);
totalVolEditor.target.numberbox("setValue", vol);
}
}
function editrow(index) {
$('#dgINOD').datagrid('selectRow', index)
.datagrid('beginEdit', index);
}
function endEdit() {
var rows = $('#dgINOD').datagrid('getRows');
if (rows==undefined) {
return;
}
for (var i = 0; i < rows.length; i++) {
$('#dgINOD').datagrid('endEdit', i);
}
}
//設置入庫單明細數據
function setGridDetail(effectRow) {
if ($('#dgINOD').datagrid('getChanges').length) {
var inserted = $('#dgINOD').datagrid('getChanges', "inserted");
var deleted = $('#dgINOD').datagrid('getChanges', "deleted");
var updated = $('#dgINOD').datagrid('getChanges', "updated");
if (inserted.length) {
effectRow["inserted"] = JSON.stringify(inserted);
}
if (deleted.length) {
effectRow["deleted"] = JSON.stringify(deleted);
}
if (updated.length) {
effectRow["updated"] = JSON.stringify(updated);
}
}
return effectRow;
}
function saveDetail() {
endEdit();
$.messager.confirm('確認', '您確認要修改嗎?', function (r) {
var effectRow = new Object();
var postData = GetINO();
if (postData.Id) {
effectRow["postdata"] = JSON.stringify(postData);
}
effectRow = setGridDetail(effectRow);
$.post("/InStock/Update", effectRow, function (data) {
if (data.success) {
$.messager.alert("提示", data.result);
$('#dgINOD').datagrid('acceptChanges');
}
else {
$.messager.alert("提示", data.result);
return;
}
}, "JSON")
;
})
}
function init() {
$("#PreDeliveryTimeUpdate").val(getNowFormatDate());
$("#CreationTimeUpdate").val(getNowFormatDate());
$("#btnCancle").click(function () {
$("#divAddUpdINO").dialog("close");
$('#dgINSO').datagrid('reload');
});
$("#btnCancleDO").click(function () {
$("#divImportCargo").dialog("close");
$('#dgINSO').datagrid('reload');
});
$("#btnImportDO").click(function () {
//保存
var rows = $('#dgCargo').datagrid('getSelections');
if (rows.length > 0) {
//驗證
$.messager.confirm('確認', '您確認要保存所選擇的貨物信息嗎?', function (r) {
if (r) {
var obj_No = $("#UpdNO").val();
var ids = [];//重要不是{}
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].Id);
}
var postData = {
"Ids": ids.join(','),
"No": obj_No
};
$.post("/InStock/ImportCargo", postData, function (data) {
if (data == "OK") {
$.messager.alert("提示", "保存貨物信息成功!");
ShowDetail(obj_No);
}
else if (data == "NO") {
$.messager.alert("提示", "保存貨物信息失敗!");
return;
}
});
}
})
}
});
$("#btnSubmit").click(function () {
//保存
var id = $("#IDUpdate").val();
if (id == "" || id == undefined) {
$.messager.alert("提示", "入庫單沒有保存,請先保存!");
return;
}
//驗證
$.messager.confirm('確認', '您確認要提交入庫單嗎?', function (r) {
if (r) {
var postData = {
"Id": id
};
$.post("/InStockMgr/Submit", postData, function (data) {
if (data == "OK") {
$.messager.alert("提示", "入庫單已經提交成功!");
$("#StatusUpdate").val("提交");
SetEnabled("提交");
}
else if (data == "NO") {
$.messager.alert("提示", "入庫單提交失敗!");
return;
}
});
}
})
});
}
function GetINO() {
var postData = {
"No": $("#UpdNO").val(),
"DeliveryNo": "",
"PreDeliveryTime": $("#PreDeliveryTimeUpdate").val(),
"CustomerCode": $("#CustomerCodeUpdate").val(),
"OwnerName": $("#OwnerNameUpdate").val(),
"OwnerCode": $("#OwnerCodeUpdate").val(),
"CustomerName": $("#CustomerNameUpdate").val(),
"CreationTime": $("#CreationTimeUpdate").val(),
"CheckTime": $("#CheckTimeUpdate").val(),
"WarehouseType": $("#WarehouseTypeUpdate").val(),
"WarehouseNo": $("#WarehouseNoUpdate").val(),
"Oper": $("#OperUpdate").val(),
"Receiver": $("#ReceiverUpdate").val(),
"Nwt": $("#NwtUpdate").val(),
"Remark": $("#RemarkUpdate").val(),
"ReceiveTime": $("#ReceiveTimeUpdate").val(),
"Status": $("#StatusUpdate").val(),
"Gwt": $("#GwtUpdate").val(),
"Checker": $("#CheckerUpdate").val(),
"PackageQty": $("PackageQtyUpdate").val(),
"LastUpdateTime": "",
"LastOper":""
};
var id = $("#IDUpdate").val();
if (!(id=="" || id==undefined)) {
postData.Id = id;
}
return postData;
}
function showINO(row)
{
$("#IDUpdate").val(row.Id);
$("#UpdNO").val(row.No);
$("#PreDeliveryTimeUpdate").val(row.PreDeliveryTime);
$("#CustomerCodeUpdate").val(row.CustomerCode);
$("#CustomerNameUpdate").val(row.CustomerName);
$("#OwnerCodeUpdate").val(row.OwnerCode);
$("#OwnerNameUpdate").val(row.OwnerName);
$("#CreationTimeUpdate").val(row.CreationTime);
$("#CheckTimeUpdate").val(row.CheckTime);
$("#WarehouseTypeUpdate").val(row.WarehouseType);
$("#WarehouseNoUpdate").val(row.WarehouseNo);
$("#OperUpdate").val(row.Oper);
$("#ReceiverUpdate").val(row.Receiver);
$("#NwtUpdate").val(row.Nwt);
$("#RemarkUpdate").val(row.Remark);
$("#ReceiveTimeUpdate").val(row.ReceiveTime);
$("#StatusUpdate").val(row.Status);
$("#GwtUpdate").val(row.Gwt);
$("#CheckerUpdate").val(row.Checker);
}
//------------------------系統管理-->入庫單管理結束--------------------------//
3. 在Visual Studio 2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Web.Mvc”項目中的Views目錄下的InStock目錄中的Index.cshtml文件。雙擊打開此文件,把以下代碼刪除或注釋。
<div id="dg-detail-button"> <a href="#" id="add" class="easyui-linkbutton" data-options="iconCls:'icon-add'" style="width:100px; "
onclick="ShowCargoInfo()">添加明細</a> <a href="#" id="addLoc" class="easyui-linkbutton" data-options="iconCls:'icon-add'" style="width:100px; "
onclick="SubGridAddRow()">添加庫位</a> <a href="#" id="del" class="easyui-linkbutton" data-options="iconCls:'icon-remove'" style="width:100px; ">刪除</a> </div>
4. 修改代碼,如下圖。

<td>創建時間:</td> <td> <input type="text" id="CreationTimeUpdate" name="UCreationTime" class="form-control input-sm" /> </td>
