| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945 | BemsWebApplication.EquipManagement2 = function (params, viewInfo) {    "use strict";    var codeTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true, false, true),        codeStateTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeStateType', false, false, true),        warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, false, true);    var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;    var filePath = "/App_Data/files/form/공기구등록양식.xlsx";    var EquipmentTypes = ko.observableArray();    var EquipmentTypesDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true);    var Equipment = ko.observableArray();    var EquipmentDataSource = BemsWebApplication.db.createDataSource('FmsEquipment', true);    var EquipmentInfo = ko.observableArray();    var FmsEquipmentDataSource = BemsWebApplication.db.createDataSource('FmsEquipment');    var RowEquipmentName, RowEquipmentTypeId;    var equipmentExDataSource = BWA.DataUtil.createDataSource({        dataSourceOptions: {            store: BemsWebApplication.odata.FmsEquipmentEx,            map: function (item) {                return new BemsWebApplication.FmsEquipmentExViewModel(item);            },            filter: ([              eq('SiteId', BWA.UserInfo.SiteId())            ]),        }    });    var visibleEditButton = ko.observable(false);   // 수정 버튼 활성화 여부 플래그    var hasnotModificationPermission = ko.observable(true); // 수정버튼 비활성화 플래그    var visibleDeleteButton = ko.observable(false); // 삭제버튼 활성화 플래그    var visibleCancelButton = ko.observable(false); // 취소버튼 활성화 플래그    var isEditModeInPopup = ko.observable();   // 저장버튼 활성화 플래그    var isNotModifyMode = ko.observable(false);     // 저장버튼 비활성화 플래그       var codeTypes = ko.observableArray(),        codeStateTypes = ko.observableArray(),        warehouses = ko.observableArray(),        equipmentExs = ko.observableArray();    var IsAdditionalEquipment = ko.observable(false);    var codeTypesForSearch = ko.observableArray(),        codeStateTypesForSearch = ko.observableArray(),        warehousesForSearch = ko.observableArray();    var deferredForSearch = new $.Deferred();    var backupDataViewModel = null;    var imagefileUrl = ko.observable(), uploadedFileInfo = {}, dropZone = null;    var equipPopupToolbarItems = [            { location: 'before', text: '입고 등록' },            { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'edit', visible: visibleEditButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonEdit } },            { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: visibleDeleteButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonDelete } },            { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', visible: visibleCancelButton, clickAction: handlePopupButtonCancel } },            { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditModeInPopup, disabled: isNotModifyMode, clickAction: handlePopupButtonSave } },            { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: equipEstimatePopupButtonClose } }    ];    function EquipImport() {        var inputFileControl = document.getElementById("FILE_IMPORT");        $(document).ready(function () {            function changeValue(e) {                if (e.currentTarget.value == "") {                }                else if (!checkFileType(e.currentTarget.value)) {                    utils.toast.show('정해진 양식으로만 올려주세요!', 'error');                    return;                } else {                    var files = e.target.files; //input file 객체를 가져온다.                    var i, f;                    for (i = 0; i != files.length; ++i) {                        f = files[i];                        var reader = new FileReader(); //FileReader를 생성한다.                                 //성공적으로 읽기 동작이 완료된 경우 실행되는 이벤트 핸들러를 설정한다.                        reader.onload = function (e) {                            if (e) {                                var data = e.target.result;                                data = new Uint8Array(data);                                var EXCELarray = [];                                var tempEXCELarray = [];                                var workbook = XLSX.read(data, { type: 'array' });                                workbook.SheetNames.forEach(function (item, index, array) {                                    EXCELarray.push(XLSX.utils.sheet_to_json(workbook.Sheets[item]));                                });                                for (var i = 0; i < EXCELarray[0].length; i++) {                                    var tempmaterial = {                                        SiteId: BWA.UserInfo.SiteId(),                                        EquipmentId: null,                                        Name: EXCELarray[0][i]['이름 (*)'],                                        EquipmentTypeId: EXCELarray[0][i]['분류 (*)'],                                        WarehouseId: EXCELarray[0][i]['창고명칭 (*)'],                                        Unit: EXCELarray[0][i]['단위'],                                        Standard: EXCELarray[0][i]['규격'],                                        AddDate: new Date(),                                        UpdateDate: new Date(),                                        RegisterUserId: BWA.UserInfo.UserId(),                                        SupplierName: EXCELarray[0][i]['공급업체'],                                        SupplierPhoneNo: EXCELarray[0][i]['업체연락처'],                                        ImageFileId: null,                                        TotalStockCount: null,                                        CurrentStockCount: null,                                        CurrentRentCount: null,                                        StoredCount: EXCELarray[0][i]['최초입고수량']                                    }                                    var Addonoff = EXCELarray[0][i]['추가입고여부(*)[아니오]'];                                    // 공기구 분류                                    if (tempmaterial.EquipmentTypeId == null) {                                        utils.toast.show('공기구 분류를 입력해야합니다(' + (i + 1) + '번 행)', 'error');                                        return;                                    }                                    else {                                        var cnt = 0;                                        for (var j = 0; j < EquipmentTypes().length; j++) {                                            if (tempmaterial.EquipmentTypeId == EquipmentTypes()[j].Name()) {                                                tempmaterial.EquipmentTypeId = EquipmentTypes()[j].EquipmentTypeId();                                                break;                                            }                                            else {                                                cnt++;                                                if (cnt == EquipmentTypes().length) {                                                    utils.toast.show('잘못된 공기구 분류 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error');                                                    return;                                                }                                            }                                        }                                    }                                    // 공기구 이름                                    if (tempmaterial.Name == null) {                                        utils.toast.show('공기구 이름을 입력해야합니다(' + (i + 1) + '번 행)', 'error');                                        return;                                    }                                    else {                                        tempmaterial.Name = tempmaterial.Name.toString();                                    }                                    // 규격                                    if (tempmaterial.Standard == null) {                                        tempmaterial.Standard = "";                                    } else {                                        tempmaterial.Standard = tempmaterial.Standard.toString();                                    }                                    for (var j = 0; j < Equipment().length; j++) {                                        if (tempmaterial.Name == Equipment()[j].Name()) {                                            if (tempmaterial.Standard == Equipment()[j].Standard()) {                                                utils.toast.show('동일한 공기구이름과 규격을 입력할수 없습니다(' + (i + 1) + '번 행)', 'error');                                                return;                                            }                                        }                                    }                                    //공기구 창고 명칭                                    if (tempmaterial.WarehouseId == null) {                                        utils.toast.show('창고 명칭을 입력해야합니다(' + (i + 1) + '번 행)', 'error');                                        return;                                    }                                    else {                                        var cnt = 0;                                        for (var j = 0; j < warehouses().length; j++) {                                            if ((tempmaterial.WarehouseId == warehouses()[j].Name()) && warehouses()[j].IsUse() == true) {                                                tempmaterial.WarehouseId = warehouses()[j].WarehouseId();                                                break;                                            }                                            else {                                                cnt++;                                                if (cnt == warehouses().length) {                                                    utils.toast.show('잘못된 창고 명칭 내용을 입력하였습니다(' + (i + 1) + '번 행)', 'error');                                                    return;                                                }                                            }                                        }                                    }                                    //추가입고여부                                    if (Addonoff != null) {                                        if (Addonoff != "아니오") {                                            utils.toast.show('추가입고여부는 아니오만 입력해야합니다(' + (i + 1) + '번 행)[아니오]', 'error');                                            return;                                        }                                    } else {                                        utils.toast.show('추가입고여부를 입력해야합니다(' + (i + 1) + '번 행)', 'error');                                        return;                                    }                                    //단위                                    if (tempmaterial.Unit != null)                                        tempmaterial.Unit = tempmaterial.Unit.toString();                                    //공급업체                                    if (tempmaterial.SupplierName != null)                                        tempmaterial.SupplierName = tempmaterial.SupplierName.toString();                                    //업체 연락처                                    if (tempmaterial.SupplierPhoneNo != null)                                        tempmaterial.SupplierPhoneNo = tempmaterial.SupplierPhoneNo.toString();                                    if (tempmaterial.TotalStockCount != null) {                                        if (typeof (tempmaterial.TotalStockCount) == "string") {                                            utils.toast.show('최초 입고수량은 숫자만 입력가능합니다(' + (i + 1) + '번 행)', 'error');                                            return;                                        }                                        else {                                            tempmaterial.TotalStockCount = tempmaterial.CurrentStockCount = tempmaterial.StoredCount = parseInt(tempmaterial.TotalStockCount);                                        }                                    }                                    tempEXCELarray.push(tempmaterial);                                }                                var parameters = {                                    SiteId: BWA.UserInfo.SiteId(),                                    IsAdditionalEquipment: false                                };                                for (var k = 0; k < tempEXCELarray.length; k++) {                                    BWA.api.post('FmsEquipment/InsertFmsEquipment', tempEXCELarray[k], parameters).done(                                        function () {                                            if (k == tempEXCELarray.length) {                                                EquipmentDataSource.load().done(function (result5) {                                                    utils.toast.show($G('successDatabaseInsertionMsg'));                                                    viewModel.gridView().refresh();                                                });                                            }                                        }).fail(function (error) {                                            utils.toast.show(error);                                        });                                }                            }                        };                        //파일객체를 읽는다. 완료되면 원시 이진 데이터가 문자열로 포함됨.                        reader.readAsArrayBuffer(f);                    }//end. for	                }                $("#FILE_IMPORT").val("");            }            $("#FILE_IMPORT").on("change", changeValue);        });        inputFileControl.click();    }    function checkFileType(filePath) {        var fileLen = filePath.length;        var lastDot = filePath.lastIndexOf('.');        var fileFormat = filePath.substring(lastDot, fileLen).toLowerCase();        if (fileFormat == ".xls" || fileFormat == ".xlsx") {            return true;        } else { return false; }    }    function setupDropZone(dataViewModel) {//2019-11-11 변경        var timer = null;        viewModel.isEditModeInPopup.subscribe(function (value) {            if (value) {                if (timer) {                    clearInterval(timer);                }                timer = setInterval(function () {                    if ($('#equipmentDropZone').length) {                        if (_.isNull(dropZone)) {                            dropZone = BWA.DropZone.create({                                id: '#equipmentDropZone',                                categoryId: $Code.FileCategory.EQUIPMENT,                                uploadedFileInfo: uploadedFileInfo,                                handleRemoveBeforePromise: function () {                                    var keys = BWA.db.extractKeysObject('FmsEquipment', dataViewModel);                                    return BWA.db.FmsEquipment.update(keys, { ImageFileId: null });                                },                                handleSuccess: function (fileInfo) {                                    if (uploadedFileInfo.FileId) {                                        dataViewModel.ImageFileId(uploadedFileInfo.FileId);                                        var keys = BWA.db.extractKeysObject('FmsEquipment', dataViewModel);                                        if (keys.EquipmentId != null) {                                            return BWA.db.FmsEquipment.update(keys, { ImageFileId: uploadedFileInfo.FileId })                                                .done(function (res) {                                                    $('#gridContainer').dxDataGrid('instance').refresh();                                                });                                        }                                    }                                },                                handleRemovedFile: function () {                                    dataViewModel.ImageFileId(null);                                }                            });                        }                    }                }, 100);            }            else {                if (timer) {                    clearInterval(timer);                    timer = null;                }                dropZone = null;            }        });    }    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', {        dataSourceOptions: {            select: [                'SiteId',                'EquipmentHistoryId',                'EquipmentId',                'TotalStockCount',                'CurrentStockCount',                'RentCount',                'CurrentRentCount',                'ReturnCount',                'LossCount',                'StoredCount',                'EquipmentRentId',                'EquipmentStateTypeId',                'AddDate',                'UpdateDate',                'IsReturned',                'FmsEquipment/SupplierName',                'FmsEquipment/SupplierPhoneNo',                'FmsEquipment/FmsEquipmentCodeType/Name',                'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId',                'FmsEquipment/Name',                'FmsEquipment/CmUser/Name',                'FmsEquipmentCodeStateType/Name',                'FmsEquipment/Standard',                'FmsEquipment/Unit',                'FmsEquipment/ImageFileId',                'FmsEquipmentRentInfo/CmUser1/Name',                'FmsEquipmentRentInfo/RentDate',                'FmsEquipmentRentInfo/ReturnDueDate',                'FmsEquipmentRentInfo/ReturnFixDate',                'FmsEquipment/FmsMaterialWarehouse/'            ],            expand: [                'FmsEquipment/FmsEquipmentCodeType',                'FmsEquipmentCodeStateType',                'FmsEquipment/CmUser',                'FmsEquipmentRentInfo',                'FmsEquipmentRentInfo/CmUser1',                'FmsEquipment/FmsMaterialWarehouse',                'FmsEquipmentCodeStateType / Name',                'FmsEquipment/ImageFileId'            ],            extendOptions: {                forceOriginalField: true            },            filter: [                eq('SiteId', BWA.UserInfo.SiteId()),                'and',                eq('EquipmentStateTypeId', 1), // 공사완료 항목만 가져옴             ]        },        columns: [            { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center' },            { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '8%', alignment: 'center' },            { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '20%', alignment: 'center' },            { dataField: 'FmsEquipment/Standard', caption: '규격', width: '20%', alignment: 'center' },            { dataField: 'FmsEquipment/Unit', caption: '단위', width: '10%', alignment: 'center' },            { dataField: 'StoredCount', caption: '수량', width: '10%', alignment: 'center' },            {                dataField: 'UpdateDate', caption: '등록일', width: '17%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",                customizeText: function (cellInfo) {                    return cellInfo.valueText;                }            },            { dataField: 'FmsEquipment/SupplierName', caption: '공급업체', width: '15%', alignment: 'center' },            { dataField: 'FmsEquipment/SupplierPhoneNo', caption: '연락처', width: '15%', alignment: 'center' },            { dataField: 'FmsEquipment/FmsMaterialWarehouse/Name', caption: '창고위치', width: '10%', alignment: 'center' },            { dataField: 'FmsEquipment/CmUser/Name', caption: '관리자', width: '10%', alignment: 'center', visible: false },        ],        paging: {            pageSize: 18,            enabled: true        },        pager: {},        "export": {            enabled: true,            fileName: '공기구 등록 목록',        },        onExporting: function (e) {            e.component.columnOption("EquipmentHistoryId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("EquipmentHistoryId", "visible", true);        },        sort: { field: "EquipmentHistoryId", desc: true },        searchViewItems: [            { id: 'FmsEquipment/FmsEquipmentCodeType/Name' },            { id: 'FmsEquipment/Name' },            { id: 'FmsEquipment/Standard' },            { id: 'UpdateDate', type: 'dateRange', isOnlyDate: true }        ],        popupWidth: 700,        handleViewShowing: function (dataModel) {            //권한설정            hasnotModificationPermission(!BWA.UserInfo.hasPermissionOfModification(viewInfo.viewName));            //2016 04 27 추가 hcLee            warehouseDataSource.filter([                eq('SiteId', BWA.UserInfo.SiteId()),                and,                eq('IsUse', true)            ])            $.when(                codeStateTypeDataSource.load(),                codeTypeDataSource.load(),                warehouseDataSource.load(),                EquipmentTypesDataSource.load(),                EquipmentDataSource.load()            ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult, EquipmentTypesResult, EquipmentResult) {                codeStateTypes(codeStateTypeResult[0]);                codeTypes(codeTypeResult[0]);                warehouses(warehouseResult[0]);                codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes()));                codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));                warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));                EquipmentTypes(EquipmentTypesResult[0]);                Equipment(EquipmentResult[0]);                deferredForSearch.resolve();            });        },        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            viewModel.visibleEditButton(true);            viewModel.visibleDeleteButton(true);            viewModel.isNotModifyMode(true);            var data = clickRow.data;            var viewDataModel = viewModel.dataModel;            viewDataModel.AddDate(data.AddDate());            viewDataModel.UpdateDate(data.UpdateDate());            viewDataModel.SiteId(data.SiteId());            viewDataModel.Name = $KoSet(viewDataModel.Name, data['FmsEquipment/Name']);            viewDataModel.EquipmentTypeId = $KoSet(viewDataModel.EquipmentTypeId, data['FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId']);            viewDataModel.WarehouseId = $KoSet(viewDataModel.WarehouseId, data['FmsEquipment/FmsMaterialWarehouse/WarehouseId']);            viewDataModel.WarehouseName = $KoSet(viewDataModel.WarehouseName, data['FmsEquipment/FmsMaterialWarehouse/Name']);            viewDataModel.Unit = $KoSet(viewDataModel.Unit, data['FmsEquipment/Unit']);            viewDataModel.Standard = $KoSet(viewDataModel.Standard, data['FmsEquipment/Standard']);            viewDataModel.RegisterUserId(BWA.UserInfo.UserId());            viewDataModel.SupplierName = $KoSet(viewDataModel.SupplierName, data['FmsEquipment/SupplierName']);            viewDataModel.SupplierPhoneNo = $KoSet(viewDataModel.SupplierPhoneNo, data['FmsEquipment/SupplierPhoneNo']);            viewDataModel.TotalStockCount(data.TotalStockCount());            viewDataModel.CurrentStockCount(data.CurrentStockCount());            viewDataModel.StoredCount(data.StoredCount());            viewDataModel.CurrentRentCount(data.CurrentRentCount());            viewDataModel.EquipmentId(data.EquipmentId());//2019-11-11 변경            viewDataModel.ImageFileId = $KoSet(viewDataModel.ImageFileId, data['FmsEquipment/ImageFileId']);            // 여기서 ViewModel 설정하고 그리드 rowiTem            // 갯수만 수정하면 되지 않을까? 만일 수정을 요청하면 말이다. hcLee 2016 01 14            popupVisible(true); // Detail 모드를 수행하지 않음  // hcLee 2016 01 14  확인 공기구등록에서는 수정의 의미가 없다            RowEquipmentName = data['FmsEquipment/Name'];            RowEquipmentTypeId = data['FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId'];        },        handleViewShown: function (dataViewModel, isEditModeInPopup) {            setupDropZone(dataViewModel);        },        handlePopupShowing: function (isNewInPopup, dataViewModel) {            imagefileUrl(undefined);//2019-11-11 변경            // 저장 버튼             if (isNewInPopup() == false) {            } else {                dataViewModel.Name('');                dataViewModel.Unit('');                dataViewModel.Standard('');                dataViewModel.SupplierName('');                dataViewModel.SupplierPhoneNo('');                dataViewModel.RegisterUserId(BWA.UserInfo.UserId());                dataViewModel.AddDate(new Date());                dataViewModel.UpdateDate(new Date());                dataViewModel.StoredCount(1);                dataViewModel.ImageFileId(null);                viewModel.isNewInPopup(true);                viewModel.isEditModeInPopup(true);                IsAdditionalEquipment(false);            }            FmsEquipmentDataSource.filter([                ["SiteId", "=", BWA.UserInfo.SiteId()]            ]);            FmsEquipmentDataSource.load().done(function (result) {                EquipmentInfo(result);            });        },        handlePopupShown: function (isEditMode, isNew, dataViewModel) {            $.when(                equipmentExDataSource.load()             ).done(function (equipmentExResult) {                 equipmentExs(equipmentExResult);             });            if (isNew) { // 신규등록인 경우             }        },        handleSaveSuccess: function () {            if (_.isNull(dropZone) === false) {//2019-11-11 변경                dropZone.resetUploadedFileInfo();            }        },        handleBeforeDelete: function () {//2019-11-11 변경            var temp = {                SiteId: BWA.UserInfo.SiteId(),                FileId: viewModel.dataModel.ImageFileId()            }            BWA.db.CmFile.byKey(temp).done(function (data) {                if ($('#equipmentDropZone1').length) {                    if (_.isNull(dropZone)) {                        dropZone = BWA.DropZone.create({                            id: '#equipmentDropZone1',                            categoryId: $Code.FileCategory.EQUIPMENT                        });                        dropZone.removeFile(data);                        dropZone = null;                    }                }            });        },        handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {            if (isNewInPopup() == false) {                getImageUrl();            }        }    });    function handlePopupButtonSave() {        var dataViewModel = viewModel.dataModel;        if (IsAdditionalEquipment()) {            if (dataViewModel.EquipmentId() == null) {                utils.toast.show('추가입고할 공기구를 선택하세요.', 'error');                return;            }        }        else {            if (dataViewModel.EquipmentTypeId() == null) {                utils.toast.show('입고할 공기구 분류 선택하세요.', 'error');                return;            }            else if (dataViewModel.Name() == null || dataViewModel.Name() == "") {                utils.toast.show('입고할 공기구 이름을 입력하세요.', 'error');                return;            }        }        if (dataViewModel.WarehouseId() == null) {            utils.toast.show('입고될 창고위치를 선택하세요.', 'error');            return;        }        if (dataViewModel.StoredCount() == "" || dataViewModel.StoredCount() < 0) {            utils.toast.show('입고수량을 입력하세요. 수량은 0 이상이어야 합니다.', 'error');            return;        }        var isDuplicated = false;        if (viewModel.isNewInPopup()) {            for (var i = 0; i < EquipmentInfo().length; i++) {                if (dataViewModel.Name() == EquipmentInfo()[i].Name() && dataViewModel.EquipmentTypeId() == EquipmentInfo()[i].EquipmentTypeId()) {                    isDuplicated = true;                }            }            if (!BWA.DataUtil.isValidInputValue(dataViewModel.Name())) {                if (!IsAdditionalEquipment()) {                    utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');                    return;                }            }            else {                if (isDuplicated) {                    utils.toast.show('동일 정보가 존재합니다.', 'error');                    return;                }            }        }        else {            for (var i = 0; i < EquipmentInfo().length; i++) {                if (dataViewModel.EquipmentTypeId() == EquipmentInfo()[i].EquipmentTypeId() && dataViewModel.Name() == EquipmentInfo()[i].Name()                    && (RowEquipmentTypeId() != EquipmentInfo()[i].EquipmentTypeId() || RowEquipmentName() != EquipmentInfo()[i].Name())) {                    isDuplicated = true;                }            }            if (!BWA.DataUtil.isValidInputValue(dataViewModel.Name())) {                if (!IsAdditionalEquipment()) {                    utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');                    return;                }            }            else {                if (isDuplicated) {                    utils.toast.show('동일 정보가 존재합니다.', 'error');                    return;                }            }        }        var parameters = {            SiteId: dataViewModel.SiteId(),            IsAdditionalEquipment: IsAdditionalEquipment()        };        var postViewModel = new BemsWebApplication.FmsEquipmentExViewModel();        if (!viewModel.isNewInPopup() || IsAdditionalEquipment()) {            postViewModel.EquipmentId(dataViewModel.EquipmentId());        }        postViewModel.AddDate(dataViewModel.AddDate());        postViewModel.UpdateDate(dataViewModel.UpdateDate());        postViewModel.SiteId(dataViewModel.SiteId());        postViewModel.Name(dataViewModel.Name());        postViewModel.EquipmentTypeId(dataViewModel.EquipmentTypeId())        postViewModel.WarehouseId(dataViewModel.WarehouseId());        postViewModel.Unit(dataViewModel.Unit());        postViewModel.Standard(dataViewModel.Standard());        postViewModel.RegisterUserId(dataViewModel.RegisterUserId());        postViewModel.SupplierName(dataViewModel.SupplierName());        postViewModel.SupplierPhoneNo(dataViewModel.SupplierPhoneNo());        postViewModel.TotalStockCount(dataViewModel.TotalStockCount());        postViewModel.CurrentStockCount(dataViewModel.CurrentStockCount());        postViewModel.StoredCount(dataViewModel.StoredCount());        postViewModel.CurrentRentCount(dataViewModel.CurrentRentCount());        postViewModel.ImageFileId(dataViewModel.ImageFileId());        var postData = postViewModel.toJS();        var url = viewModel.isNewInPopup() ? 'FmsEquipment/InsertFmsEquipment' : 'FmsEquipment/UpdateFmsEquipment';        BWA.api.post(url, postData, parameters).done(//2019-11-11 변경            function (responseKey, response) {                viewModel.dataModel.EquipmentId(responseKey);                if (viewModel.isNewInPopup() === false) {//추가, 변경 여부                    if (_.isNull(dropZone) === false) {                        if (viewModel.dataModel.ImageFileId() != null) { //변경 - 그림삭제                            var temp = {                                SiteId: BWA.UserInfo.SiteId(),                                FileId: viewModel.dataModel.ImageFileId()                            }                            BWA.db.CmFile.byKey(temp).done(function (data) {                                dropZone.removeFile(data);                                dropZone.processQueue();                                utils.toast.show($G('successDatabaseInsertionMsg'));                                equipEstimatePopupButtonClose();                                $('#gridContainer').dxDataGrid('instance').refresh();                            });                        }                        else {                            dropZone.processQueue();//변경 - 그림 삭제 필요없음                            utils.toast.show($G('successDatabaseInsertionMsg'));                            equipEstimatePopupButtonClose();                            $('#gridContainer').dxDataGrid('instance').refresh();                        }                    }                    else {                        utils.toast.show($G('successDatabaseInsertionMsg'));                        equipEstimatePopupButtonClose();                        $('#gridContainer').dxDataGrid('instance').refresh();                    }                }                else {                    if (_.isNull(dropZone) === false) { //추가                        if (viewModel.dataModel.ImageFileId() == null) {                            dropZone.processQueue();                            utils.toast.show($G('successDatabaseInsertionMsg'));                            equipEstimatePopupButtonClose();                            $('#gridContainer').dxDataGrid('instance').refresh();                        }                    }                    else {                        utils.toast.show($G('successDatabaseInsertionMsg'));                        equipEstimatePopupButtonClose();                        $('#gridContainer').dxDataGrid('instance').refresh();                    }                }            });    }    function switchChanged(e) {        var dataViewModel = viewModel.dataModel;        dataViewModel.Name(null);        dataViewModel.EquipmentId(null);        dataViewModel.EquipmentTypeId(null);        dataViewModel.WarehouseId(null);        dataViewModel.Unit(null);        dataViewModel.Standard(null);        dataViewModel.RegisterUserId(BWA.UserInfo.UserId());        dataViewModel.SupplierName(null);        dataViewModel.SupplierPhoneNo(null);        dataViewModel.TotalStockCount(null);        dataViewModel.CurrentStockCount(null);        dataViewModel.StoredCount(1);        dataViewModel.ImageFileId(null);        imagefileUrl(undefined);        if (_.isNull(dropZone) === false) {//2019-11-11 변경            dropZone.destroy();            $('#equipmentDropZone').empty();            dropZone = null;        }    }    function processValueChange(e) {        var foundModel = _.find(equipmentExs(), function (x) {            return x.EquipmentId() === e.value;        });        if (foundModel !== undefined) {            var dataViewModel = viewModel.dataModel;            dataViewModel.EquipmentId(foundModel.EquipmentId());            dataViewModel.EquipmentTypeId(foundModel.EquipmentTypeId());            dataViewModel.WarehouseId(foundModel.WarehouseId());            dataViewModel.Unit(foundModel.Unit());            dataViewModel.Standard(foundModel.Standard());            dataViewModel.UpdateDate(new Date());            dataViewModel.SupplierName(foundModel.SupplierName());            dataViewModel.SupplierPhoneNo(foundModel.SupplierPhoneNo());            dataViewModel.TotalStockCount(foundModel.TotalStockCount());            dataViewModel.CurrentStockCount(foundModel.CurrentStockCount());            dataViewModel.ImageFileId(foundModel.ImageFileId());            getImageUrl();        }    }    function getImageUrl() {        if (_.isNull(viewModel.dataModel.ImageFileId()) === false) {            imagefileUrl('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, viewModel.dataModel.SiteId(), viewModel.dataModel.ImageFileId()));        }        else {            imagefileUrl("images/default.png");        }    }    function getBackupDataViewModel(model) {        var object = {};        $.each(model, function (name, value) {            if (ko.isObservable(value)) {                object[name] = value();            }        });        return object;    }    function restoreDataViewModelFromBackup(model, backupModel) {        $.each(backupModel, function (name, value) {            model[name](value);        });    }    // 수정버튼 클릭    function handlePopupButtonEdit() {        viewModel.isNewInPopup(false);        viewModel.visibleEditButton(false);        viewModel.visibleDeleteButton(false);        viewModel.visibleCancelButton(true);        viewModel.isEditModeInPopup(true);        viewModel.isNotModifyMode(false);        backupDataViewModel = getBackupDataViewModel(viewModel.dataModel);    }    // 삭제버튼 클릭    function handlePopupButtonDelete() {//2019-11-11 변경        DevExpress.ui.dialog.confirm($G('deleteConfirmMsg'), "삭제").then(function (result) {            if (result) {                var postViewModel = new BemsWebApplication.FmsEquipmentExViewModel();                var dataViewModel = viewModel.dataModel;                postViewModel.EquipmentId(dataViewModel.EquipmentId());                var postData = dataViewModel.toJS();                var parameters = {                    SiteId: dataViewModel.SiteId()                };                if (viewModel.dataModel.ImageFileId() != null) {                    var temp = {                        SiteId: BWA.UserInfo.SiteId(),                        FileId: viewModel.dataModel.ImageFileId()                    }                    BWA.db.CmFile.byKey(temp).done(function (data) {                        if ($('#equipmentDropZone1').length) {                            if (_.isNull(dropZone)) {                                dropZone = BWA.DropZone.create({                                    id: '#equipmentDropZone1',                                    categoryId: $Code.FileCategory.EQUIPMENT                                });                                dropZone.removeFile(data);                                dropZone = null;                            }                        }                    });                }                BWA.api.post('FmsEquipment/FmsEquipmentDelete', postData, parameters).done(                    function () {                        EquipmentDataSource.load().done(function (result5) {                            Equipment(result5);                            utils.toast.show($G('successDatabaseDeleteMsg'));                            viewModel.IsAdditionalEquipment(false);                            viewModel.isNewInPopup(false);                            viewModel.visibleEditButton(false);                            viewModel.visibleDeleteButton(false);                            viewModel.visibleCancelButton(false);                            viewModel.isEditModeInPopup(false);                            viewModel.isNotModifyMode(false);                            viewModel.dataModel.ImageFileId(null);                            viewModel.popupVisible(false);                            viewModel.gridView().refresh();                            if (postData.EquipmentRentId != null) {                                BWA.db.FmsEquipmentRentInfo.remove({                                    SiteId: postData.SiteId,                                    EquipmentRentId: postData.EquipmentRentId                                }).done(function () {                                    viewModel.gridView().refresh();                                });                            }                            else {                                viewModel.gridView().refresh();                            }                        });                    });            }        });    }    function EquipDownload() {        var url = "";        if (BemsWebApplication.config.mode == "production") {            url = BemsWebApplication.config.endpoints.service.production + filePath;        } else {            url = BemsWebApplication.config.endpoints.service.local + filePath;        }        window.location.assign(url);    }    // 취소버튼     function handlePopupButtonCancel() {        viewModel.visibleEditButton(true);        viewModel.visibleDeleteButton(true);        viewModel.visibleCancelButton(false);        viewModel.isEditModeInPopup(false);        viewModel.isNotModifyMode(true);        restoreDataViewModelFromBackup(viewModel.dataModel, backupDataViewModel);    }    // 닫기버튼    function equipEstimatePopupButtonClose() {        viewModel.IsAdditionalEquipment(false);        viewModel.isNewInPopup(false);        viewModel.visibleEditButton(false);        viewModel.visibleDeleteButton(false);        viewModel.visibleCancelButton(false);        viewModel.isEditModeInPopup(false);        viewModel.isNotModifyMode(false);        viewModel.dataModel.ImageFileId(null);        viewModel.popupVisible(false);    }    viewModel.EquipImport = EquipImport;    viewModel.EquipDownload = EquipDownload;    viewModel.equipPopupToolbarItems = equipPopupToolbarItems;    viewModel.dataModel.Name = ko.observable();    viewModel.dataModel.EquipmentTypeId = ko.observable();    viewModel.dataModel.WarehouseId = ko.observable();    viewModel.dataModel.Unit = ko.observable();    viewModel.dataModel.Standard = ko.observable();    viewModel.dataModel.SupplierName = ko.observable();    viewModel.dataModel.SupplierPhoneNo = ko.observable();    viewModel.dataModel.RegisterUserId = $KoSet(viewModel.dataModel.RegisterUserId, BWA.UserInfo.UserId());    viewModel.dataModel.AddDate = $KoSet(viewModel.dataModel.AddDate, new Date());    viewModel.dataModel.UpdateDate = $KoSet(viewModel.dataModel.UpdateDate, new Date());    viewModel.dataModel.StoredCount(1);    viewModel.dataModel.ImageFileId = ko.observable();    viewModel.switchChanged = switchChanged;    viewModel.processValueChange = processValueChange;    viewModel.IsAdditionalEquipment = IsAdditionalEquipment;    viewModel.equipmentExs = equipmentExs;    viewModel.codeTypes = codeTypes;    viewModel.codeStateTypes = codeStateTypes;    viewModel.warehouses = warehouses;    viewModel.imagefileUrl = imagefileUrl;    viewModel.backupDataViewModel = backupDataViewModel;    viewModel.visibleEditButton = visibleEditButton;    viewModel.hasnotModificationPermission = hasnotModificationPermission;    viewModel.visibleDeleteButton = visibleDeleteButton;    viewModel.visibleCancelButton = visibleCancelButton;    viewModel.isEditModeInPopup = isEditModeInPopup;    viewModel.isNotModifyMode = isNotModifyMode;    return viewModel;};
 |