BemsWebApplication.ConstructionHistory = function (params, viewInfo) { "use strict"; var imagefileUrl1 = ko.observable(), imagefileUrl2 = ko.observable(), uploadedFileInfo = {}; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter, noteq = BWA.DataUtil.constructNotEqualFilter; var SiteId = BWA.UserInfo.SiteId(); // 공사업체 데이터 소스... var partnerDataSource = BemsWebApplication.db.createDataSource('CmPartner', true, false, true), constructionTypeDataSource = BemsWebApplication.db.createDataSource('FmsConstructionCodeType', true, false, true); var partners = ko.observableArray(), constructionTypes = ko.observableArray(); var constructionTypesForSearch = ko.observableArray(), partnerTypesForSearch = ko.observableArray(); var visibleDeleteButton = ko.observable(true); //권한설정 var hasnotModificationPermission = ko.observable(true); var deferredForSearch = new $.Deferred(); var dataSourceOptions = { select: [ 'SiteId', 'ConstructionId', 'ConstructionTypeId', 'Name', 'StartDate', 'EndDate', 'PartnerId', 'ConstructLocation', 'OwnerShipName', 'CommitmentMan', 'OwnerShipPhoneNo', 'WeldWorkStartTime', 'WeldWorkEndTime', 'GasWorkStartTime', 'GasWorkEndTime', 'PaintWorkStartTime', 'PaintWorkEndTime', 'Comment', 'ProgressId', 'AddDate', 'UpdateDate', 'FmsConstructionCodeProgress/Name', 'CmPartner/Name', 'CmPartner/PhoneNo', 'FmsConstructionCodeType/Name', 'ConstructionDetail', 'InOutStockName', 'FileId1', 'FileId2', 'FileId3', 'CmFile/Name', 'CmFile1/Name', 'CmFile2/Name', 'FmsConstructionEstimation/Comment', 'FmsConstructionEstimation/SafetyScore', 'FmsConstructionEstimation/AbilityScore', 'FmsConstructionEstimation/ServiceScore', 'FmsConstructionEstimation/TotalEstimateScore', ], expand: [ 'FmsConstructionCodeProgress', 'CmPartner', 'FmsConstructionEstimation', 'FmsConstructionCodeType', 'CmFile', 'CmFile1', 'CmFile2' ], extendOptions: { forceOriginalField: true }, filter: [ eq('SiteId', SiteId), 'and', eq('ProgressId', 4)// 공사완료단계 항목 까지만 가져옴 ] }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsConstruction', { dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'Number', caption: $G('number'), width: '10%', alignment: 'center' }, { dataField: 'FmsConstructionCodeType/Name', caption: '공사구분', width: '20%', alignment: 'center' }, { dataField: 'Name', caption: '공사명', width: '80%', alignment: 'center' }, { dataField: 'ConstructLocation', caption: '공사위치', width: '30%', alignment: 'center' }, { dataField: 'CmPartner/Name', caption: '공사업체', width: '20%', alignment: 'center' }, { dataField: 'OwnerShipName', caption: '공사책임자', width: '20%', alignment: 'center' }, { dataField: 'StartDate', caption: '시작일', width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'EndDate', caption: '종료일', width: '20%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd", customizeText: function (cellInfo) { return cellInfo.valueText; } }, { dataField: 'FmsConstructionEstimation/SafetyScore', caption: '안전수칙준수점수', width: '25%', alignment: 'center', visible: false }, { dataField: 'FmsConstructionEstimation/AbilityScore', caption: '공사수행능력점수', width: '25%', alignment: 'center', visible: false }, { dataField: 'FmsConstructionEstimation/ServiceScore', caption: '용역수행능력점수', width: '25%', alignment: 'center', visible: false }, { dataField: 'FmsConstructionEstimation/TotalEstimateScore', caption: '종합점수', width: '25%', alignment: 'center', visible: false }, ], "export": { enabled: true, fileName: '공사 이력', }, paging: { enabled: true, pageSize: 18 }, pager: { }, onExporting: function (e) { e.component.columnOption("Number", "visible", false); e.component.columnOption("FmsConstructionEstimation/SafetyScore", "visible", true); e.component.columnOption("FmsConstructionEstimation/AbilityScore", "visible", true); e.component.columnOption("FmsConstructionEstimation/ServiceScore", "visible", true); e.component.columnOption("FmsConstructionEstimation/TotalEstimateScore", "visible", true); }, onExported: function (e) { e.component.columnOption("Number", "visible", true); e.component.columnOption("FmsConstructionEstimation/SafetyScore", "visible", false); e.component.columnOption("FmsConstructionEstimation/AbilityScore", "visible", false); e.component.columnOption("FmsConstructionEstimation/ServiceScore", "visible", false); e.component.columnOption("FmsConstructionEstimation/TotalEstimateScore", "visible", false); }, popupWidth: '740px', promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: [ { id: 'Name' }, { id: 'ConstructionTypeId', ignoreValue: 0, defaultValue: 0, dataSource: constructionTypesForSearch }, { id: 'PartnerId', ignoreValue: 0, defaultValue: 0, dataSource: partnerTypesForSearch }, { id: 'StartDate', type: 'dateRange', isOnlyDate: true }, { id: 'EndDate', type: 'dateRange', isOnlyDate: true } ], handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { visibleDeleteButton(true); if (isNewInPopup() == false) { if (_.isNull(dataViewModel.FileId1()) === false) { imagefileUrl1('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId1())); } else { imagefileUrl1(undefined); } if (_.isNull(dataViewModel.FileId2()) === false) { imagefileUrl2('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId2())); } else { imagefileUrl2(undefined); } } }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; dataModel.PartnerName = $KoSet(dataModel.PartnerName, data['CmPartner/Name']()); dataModel.PartnerPhoneNo = $KoSet(dataModel.PartnerPhoneNo, data['CmPartner/PhoneNo']()); dataModel.ConstructionTypeName = $KoSet(dataModel.ConstructionTypeName, data['FmsConstructionCodeType/Name']()); dataModel.EstimateComment = $KoSet(dataModel.EstimateComment, data['FmsConstructionEstimation/Comment']()); dataModel.EstimateSafetyScore = $KoSet(dataModel.EstimateSafetyScore, data['FmsConstructionEstimation/SafetyScore']()); dataModel.EstimateAbilityScore = $KoSet(dataModel.EstimateAbilityScore, data['FmsConstructionEstimation/AbilityScore']()); dataModel.EstimateServiceScore = $KoSet(dataModel.EstimateServiceScore, data['FmsConstructionEstimation/ServiceScore']()); dataModel.EstimateTotalEstimateScore = $KoSet(dataModel.EstimateTotalEstimateScore, data['FmsConstructionEstimation/TotalEstimateScore']()); if (data['FileId1']() != null) dataModel.AttachmentFileName1(data['CmFile/Name']()); else dataModel.AttachmentFileName1(''); if (data['FileId2']() != null) dataModel.AttachmentFileName2(data['CmFile1/Name']()); else dataModel.AttachmentFileName2(''); popupVisible(true); }, handleViewShowing: function (dataModel) { //권한설정 hasnotModificationPermission(!BWA.UserInfo.hasPermissionOfModification(viewInfo.viewName)); partnerDataSource.filter([ eq('PartnerTypeId', 1), // 공사업체 유형 필터링 and, eq('SiteId', BWA.UserInfo.SiteId()) ]) $.when( partnerDataSource.load(), constructionTypeDataSource.load() ).done(function (dbPartners, dbConstructionTypes) { partners(dbPartners[0]); constructionTypes(dbConstructionTypes[0]); constructionTypesForSearch($SearchView.createArrayOfSelectBox('ConstructionTypeId', constructionTypes())); partnerTypesForSearch($SearchView.createArrayOfSelectBox('PartnerId', partners())); deferredForSearch.resolve(); }); }, handlePopupShown: function (isEditMode, isNew, dataViewModel) { var partners = viewModel.partners(); var constructionTypes = viewModel.constructionTypes(); if (isNew) { // 신규등록인 경우 dataViewModel.ProgressId(2); // 공사계획 상태를 '진행' 단계로 초기화 dataViewModel.AddDate($G.date(new Date())); dataViewModel.UpdateDate($G.date(new Date())); if (!_.isEmpty(partners)) { dataViewModel.PartnerId(partners[0].PartnerId()); } if (!_.isEmpty(constructionTypes)) { dataViewModel.ConstructionTypeId(constructionTypes[0].ConstructionTypeId()); } } } }); var ConstructionHistoryToolbarItems = [ { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: visibleDeleteButton, clickAction: handlePopupButtonDelete, disabled: hasnotModificationPermission } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handleInsertPopupButtonClose } } ]; function handleConfirmDelete() { var selectedId = {}; selectedId.SiteId = viewModel.dataModel.SiteId(); selectedId.ConstructionId = viewModel.dataModel.ConstructionId(); BemsWebApplication.db['FmsConstructionEstimation'].remove(selectedId).done(function () { BemsWebApplication.db['FmsConstruction'].remove(selectedId).done(function () { viewModel.popupVisible(false); viewModel.refreshList(); utils.toast.show('데이터베이스 항목 삭제 작업이 성공하였습니다.'); }).fail(function () { utils.toast.show('데이터베이스 항목 삭제 작업이 실패하였습니다.', 'error'); }); }).fail(function () { utils.toast.show('데이터베이스 항목 삭제 작업이 실패하였습니다.', 'error'); }); } function handlePopupButtonDelete() { DevExpress.ui.dialog.confirm($G('deleteConfirmMsg'), "삭제").then(function (result) { if (result) { handleConfirmDelete(); } }); } function handleInsertPopupButtonClose() { viewModel.popupVisible(false); } viewModel.imagefileUrl1 = imagefileUrl1; viewModel.imagefileUrl2 = imagefileUrl2; viewModel.constructionTypes = constructionTypes; viewModel.partners = partners; viewModel.dataModel.ConstructionTypeName = ko.observable(); viewModel.dataModel.PartnerName = ko.observable(); viewModel.dataModel.PartnerPhoneNo = ko.observable(); viewModel.dataModel.AttachmentFileName1 = ko.observable(); viewModel.dataModel.AttachmentFileName2 = ko.observable(); viewModel.dataModel.AttachmentFileName3 = ko.observable(); viewModel.ConstructionHistoryToolbarItems = ConstructionHistoryToolbarItems; return viewModel; };