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