BemsWebApplication.PartnerEstimateList = 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 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 deferredForSearch = new $.Deferred(); var dataSourceOptions = { select: [ 'SiteId', 'ConstructionId', 'Name', 'StartDate', 'EndDate', 'PartnerId', 'ConstructionTypeId', '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', 'FmsConstructionEstimation/SafetyScore', 'FmsConstructionEstimation/AbilityScore', 'FmsConstructionEstimation/ServiceScore', 'FmsConstructionEstimation/TotalEstimateScore', ], expand: [ 'FmsConstructionCodeProgress', 'CmPartner', 'FmsConstructionEstimation', 'FmsConstructionCodeType', 'CmFile', 'CmFile1', 'CmFile2' ], extendOptions: { forceOriginalField: true }, filter: [ eq('SiteId', BWA.UserInfo.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: '60%', alignment: 'center' }, { dataField: 'CmPartner/Name', caption: '공사업체', width: '20%', alignment: 'center' }, { dataField: 'FmsConstructionEstimation/SafetyScore', caption: '안전수칙준수점수', width: '20%', alignment: 'center' }, { dataField: 'FmsConstructionEstimation/AbilityScore', caption: '공사수행능력점수', width: '20%', alignment: 'center' }, { dataField: 'FmsConstructionEstimation/ServiceScore', caption: '용역수행능력점수', width: '20%', alignment: 'center' }, { dataField: 'FmsConstructionEstimation/TotalEstimateScore', caption: '종합평가점수', width: '20%', alignment: 'center' }, { dataField: 'StartDate', caption: '시작일', width: '20%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'EndDate', caption: '종료일', width: '20%', alignment: 'center' }, ], 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) { viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); 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 = data['CmPartner/Name'](); //dataModel.PartnerPhoneNo = data['CmPartner/PhoneNo'](); 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) { partnerDataSource.filter([ eq('PartnerTypeId', 1), // 공사업체 유형 필터링 and, eq('SiteId', BWA.UserInfo.SiteId()) ]) $.when( partnerDataSource.load(), constructionTypeDataSource.load() ) .done(function (dbPartners, dbConstructions) { partners(dbPartners[0]); constructionTypes(dbConstructions[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()); } } } }); 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(); return viewModel; };