主頁 > .NET開發 > abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十一(四十七)

abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十一(四十七)

2020-09-14 15:10:47 .NET開發

abp(net core)+easyui+efcore實作倉儲管理系統目錄

abp(net core)+easyui+efcore實作倉儲管理系統——ABP總體介紹(一) abp(net core)+easyui+efcore實作倉儲管理系統——解決方案介紹(二) abp(net core)+easyui+efcore實作倉儲管理系統——領域層創建物體(三)  abp(net core)+easyui+efcore實作倉儲管理系統——定義倉儲并實作 (四) abp(net core)+easyui+efcore實作倉儲管理系統——創建應用服務(五) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之控制器(六) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之串列視圖(七) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之增刪改視圖(八) abp(net core)+easyui+efcore實作倉儲管理系統——展現層實作增刪改查之選單與測驗(九) abp(net core)+easyui+efcore實作倉儲管理系統——使用 WEBAPI實作CURD (十一)

abp(net core)+easyui+efcore實作倉儲管理系統——EasyUI前端頁面框架 (十八)

abp(net core)+easyui+efcore實作倉儲管理系統——EasyUI之貨物管理一 (十九) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之一(二十七) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之三(二十九) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之八(三十四) abp(net core)+easyui+efcore實作倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之十(三十六) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之一(三十七) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之二(三十八) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之三存盤程序(三十九) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之四(四十) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之五(四十一) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之六(四十二) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之七(四十三) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之八(四十四)    abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之九(四十五) abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十(四十六)  

 

    在上面文章abp(net core)+easyui+efcore實作倉儲管理系統——入庫管理之十(四十六) 的學習之后,我們已經實作了入庫單的基本功能,增加,洗掉,修改接下來,我們實作添加庫位的功能

 

、入庫單添加庫位資訊

   入庫單的每一條明細資料,會對應一個或多個庫位,這就要求能夠對某一行的資料進行子表嵌套,在這里通過采用easyui的datagrid-detailview.js插件創建子表格,大致的效果圖如下所示:

 

 

  1. Visual Studio 2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Web.Mvc”專案的“Views/InStock”檔案夾,然后滑鼠左鍵雙擊打開“Index.cshtml”檔案,在“@section scripts{”節中添加如下代碼,
  <script src="https://www.cnblogs.com/chillsrc/p/~/lib/easyui-1.8/datagrid-detailview.js" asp-append-version="true"></script>

      2. 在Visual Studio 2017的“解決方案資源管理器”中,找到表示“ABP.TPLMS.Web.Mvc”專案中的wwwroot\view-resources\InStock目錄,

       3. 在InStock目錄中找到Index.js檔案,在此檔案的頭部我們要定義兩個變數mainIndex與editIndex,用來定位當前我們選中了哪一行,

var editIndex = undefined;
var mainIndex = undefined;

       4. 我們在此檔案中的showDetail(no)方法中找到datagrid組件,并修改此組件的onClickRow事件中的相關代碼,

onClickRow

rowIndex, rowData

當用戶點擊一行時觸發,引數包括:
rowIndex:被點擊行的索引,從 0 開始
rowData:被點擊行對應的記錄

 

 
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' }

        ]],
        view: detailview,

        detailFormatter: function (index, row) {
            return '<div style="padding:2px"><table id="dgINODItem-' + index + '"></table></div>';
        },

        onExpandRow: function (index, row) {
            var ddv = $('#dgINODItem-' + index);
            ddv.datagrid({
                url: '/InStock/GetLocs?Id=' + row.Id,
                fitColumns: false,

                singleSelect: true,
                rownumbers: true,

                loadMsg: '',
                height: 'auto',
                columns: [[
                    { field: 'SeqNo', title: '序號', width: 50 },
                    {
                        field: 'Qty', title: '數量', width: 120, editor: {
                            type: 'numberbox', options: {
                                required: true, min: 0, precision: 2
                            }
                        }
                    },
                    {
                        field: 'Loc', title: '庫位', width: 150, editor: {

                            type: 'text', options: {
                                required: true
                            }
                        }
                    },

                    { field: 'CreationTime', title: '創建時間', hidden: 'true' },

                    { field: 'Id', title: 'Id', width: 50, hidden: 'true' },
                    { field: 'InStockOrderDetailId', title: 'InodId', width: 50, hidden: 'true' }
                ]],

                onResize: function () {
                    $('#dgINOD').datagrid('fixDetailRowHeight', index);
                },
                onl oadSuccess: function () {
                    setTimeout(function () {
                        $('#dgINOD').datagrid('fixDetailRowHeight', index);

                    }, 0);
                    editIndex = undefined;//主網格換行
                },
                onAfterEdit: function (rowIndex, rowData, changes) {
                    editIndex = undefined;
                },

                onClickRow: function (index1, row1) {

                    if (editIndex != index1) {
                        if (endEditing(ddv)) {
                            ddv.datagrid('selectRow', index1).datagrid('beginEdit', index1);
                            editIndex = index1;

                        }
                        else { ddv.datagrid('selectRow', editIndex); }
                    }
                }
            });
            $('#dgINOD').datagrid('fixDetailRowHeight', index);
        }, 

        onClickRow: function (index, rowData) {
            if (mainIndex!=undefined) {
                $('#dgINOD').datagrid('collapseRow', mainIndex);

            }           

            if (lastIndex != index) {
                $('#dgINOD').datagrid('endEdit', lastIndex);
                editrow(index);
            }
            lastIndex = index;
            mainIndex = index;
        },       

        onBeginEdit: function (rowIndex, rowData) {  
            setEditing(rowIndex);
        }
    });
}

 

5. 除了要修改上面的函式之外,我們還需要添加一些函式方法,下面就給出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) {                

                     //打開對話框編輯
                    $("#divAddUpdINO").dialog({
                        closed: false,
                        title: "修改入庫單",
                        modal: true,
                        width: 820,
                        height: 550,
                        collapsible: true,
                        minimizable: true,
                        maximizable: true,
                        resizable: true,

                    });    
                    //先系結                  

                    showINO(row);
                    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 =https://www.cnblogs.com/chillsrc/p/="OK") {
                            $.messager.alert("提示", "洗掉成功!");
                            $("#dgINSO").datagrid("clearChecked");
                            $("#dgINSO").datagrid("clearSelections");
                            $("#dgINSO").datagrid("load", {});
                        }                       
                        else if (data =https://www.cnblogs.com/chillsrc/p/="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) {
    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 =https://www.cnblogs.com/chillsrc/p/ GetINO();                    

                    if (postData.No == "" || postData.CustomerCode == "" || postData.CustomerName=="" || postData.OwnerName=="") {
                        $.messager.alert('提示', ' 請填寫相關必填項!', 'warning');

                        return;
                    }                   

                    $.post("/InStock/Add", postData, function (data) {
                        if (data =https://www.cnblogs.com/chillsrc/p/="OK") {
                            $.messager.alert("提示", "保存成功!");

                            initable();
                            collapseRows();
                        }

                        else if (data =https://www.cnblogs.com/chillsrc/p/="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' }

        ]],

        view: detailview,

        detailFormatter: function (index, row) {
            return '<div style="padding:2px"><table id="dgINODItem-' + index + '"></table></div>';

        },

        onExpandRow: function (index, row) {
            var ddv = $('#dgINODItem-' + index);
            ddv.datagrid({
                url: '/InStock/GetLocs?Id=' + row.Id,
                fitColumns: false,
                singleSelect: true,
                rownumbers: true,
                loadMsg: '',
                height: 'auto',
                columns: [[                   //[{"InStockOrderDetailId":24,"SeqNo":1,"Loc":"A121","Qty":121.00,"CreationTime":"2020-02-17 16:37:05","Id":1}]
                    { field: 'SeqNo', title: '序號', width: 50 },
                    {
                        field: 'Qty', title: '數量', width: 120, editor: {
                            type: 'numberbox', options: {
                                required: true, min: 0, precision: 2
                            }
                        }
                    },
                    {
                        field: 'Loc', title: '庫位', width: 150, editor: {
                            type: 'text', options: {
                                required: true
                            }
                        }
                    },

                    { field: 'CreationTime', title: '創建時間', hidden: 'true' }, 

                    { field: 'Id', title: 'Id', width: 50, hidden: 'true' },
                    { field: 'InStockOrderDetailId', title: 'InodId', width: 50, hidden: 'true' }
                ]],

                onResize: function () {
                    $('#dgINOD').datagrid('fixDetailRowHeight', index);
                },

                onl oadSuccess: function () {
                    setTimeout(function () {
                        $('#dgINOD').datagrid('fixDetailRowHeight', index);

                    }, 0);
                    editIndex = undefined;//主網格換行
                },
                onAfterEdit: function (rowIndex, rowData, changes) {

                    editIndex = undefined;
                },

                onClickRow: function (index1, row1) {
                    if (editIndex != index1) {
                        if (endEditing(ddv)) {
                       ddv.datagrid('selectRow', index1).datagrid('beginEdit', index1);
                            editIndex = index1;

                        }
                        else { ddv.datagrid('selectRow', editIndex); }

                    }
                }
            });
            $('#dgINOD').datagrid('fixDetailRowHeight', index);

        },

        onClickRow: function (index, rowData) {
            if (mainIndex!=undefined) {
                $('#dgINOD').datagrid('collapseRow', mainIndex);

            }          

            if (lastIndex != index) {
                $('#dgINOD').datagrid('endEdit', lastIndex);
                editrow(index);
            }

            lastIndex = index;
            mainIndex = 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 setSubGridLoc(effectRow) { var ddv = $('#dgINODItem-' + mainIndex); var dgcnt = ddv.datagrid().length; if (mainIndex != undefined && dgcnt>0) { endEditSub(ddv); var changes = ddv.datagrid('getChanges'); if (changes.length) { var insed = ddv.datagrid('getChanges', "inserted"); var deled = ddv.datagrid('getChanges', "deleted"); var upded = ddv.datagrid('getChanges', "updated"); if (insed.length) { effectRow["locsInserted"] = JSON.stringify(insed); } if (deled.length) { effectRow["locsDeleted"] = JSON.stringify(deled); } if (upded.length) { effectRow["locsUpdated"] = JSON.stringify(upded); } } } return effectRow; } //設定入庫單明細資料 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 endEditSub(ddv) { if (mainIndex != undefined) { var rows = ddv.datagrid('getRows'); if (rows!=undefined) { for (var i = 0; i < rows.length; i++) { ddv.datagrid('endEdit', i); } } } } function saveDetail() { endEdit(); $.messager.confirm('確認', '您確認要修改嗎?', function (r) { var effectRow = new Object(); var postData =https://www.cnblogs.com/chillsrc/p/ GetINO(); if (postData.Id) { effectRow["postdata"] = JSON.stringify(postData); } effectRow = setSubGridLoc(effectRow); effectRow = setGridDetail(effectRow); $.post("/InStock/Update", effectRow, function (data) { // alert(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 =https://www.cnblogs.com/chillsrc/p/ { "Ids": ids.join(','), "No": obj_No }; $.post("/InStock/ImportCargo", postData, function (data) { if (data =https://www.cnblogs.com/chillsrc/p/="OK") { $.messager.alert("提示", "保存貨物資訊成功!"); ShowDetail(obj_No); } else if (data =https://www.cnblogs.com/chillsrc/p/="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 =https://www.cnblogs.com/chillsrc/p/ { "Id": id }; $.post("/InStock/Submit", postData, function (data) { if (data =https://www.cnblogs.com/chillsrc/p/="OK") { $.messager.alert("提示", "入庫單已經提交成功!"); $("#StatusUpdate").val("提交"); SetEnabled("提交"); } else if (data =https://www.cnblogs.com/chillsrc/p/="NO") { $.messager.alert("提示", "入庫單提交失敗!"); return; } }); } }) }); } function SubGridAddRow() { var ddv = $('#dgINODItem-' + mainIndex); var row = $('#dgINOD').datagrid('getSelected'); if (mainIndex != undefined && editIndex!=undefined) { ddv.datagrid('endEdit', editIndex); } if (editIndex == undefined) { var seqno = ddv.datagrid("getRows").length + 1; ddv.datagrid('insertRow', { index: 0, row: { InStockOrderDetailId: row.Id, SeqNo: seqno} }); ddv.datagrid('beginEdit', 0); editIndex = 0; } } function endEditing(ddv) { var changes = ddv.datagrid('getChanges'); if (editIndex == undefined) { return true } if (ddv.datagrid('validateRow', editIndex)) { //驗證前一行 //回傳編輯器,結束編輯 ddv.datagrid('endEdit', editIndex); editIndex = undefined; return true; } else { return false; } } function collapseRows() { var rows = $('#dgINOD').datagrid('getRows'); $.each(rows, function (i, k) { //獲取當前所有展開的子網格 var expander = $('#dgINOD').datagrid('getExpander', i); if (expander.length && expander.hasClass('datagrid-row-collapse')) { if (k.id != row.id) { //折疊上一次展開的子網格 $('#dgINOD').datagrid('collapseRow', i); } } }); } function GetINO() { var postData =https://www.cnblogs.com/chillsrc/p/ { "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); $("#PackageQtyUpdate").val(row.PackageQty); $("#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); } //------------------------系統管理-->入庫單管理結束------------------------//

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/36136.html

標籤:.NET Core

上一篇:vue+element 部署linux服務器

下一篇:.NET Core MediatR訂閱發布

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more