123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- BemsWebApplication.ConstructionEstimate = function (params, viewInfo) {
- "use strict";
- var imagefileUrl = ko.observable(), uploadedFileInfo = {}, dropZone = null;
- var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter, noteq = BWA.DataUtil.constructNotEqualFilter;
- //권한설정
- var hasnotModificationPermission = ko.observable(true);
- // 공사업체 데이터 소스...
- var partnerDataSource = BemsWebApplication.db.createDataSource('CmPartner', true, false, true),
- constructionTypeDataSource = BemsWebApplication.db.createDataSource('FmsConstructionCodeType', true, false, true);
- var constructionTypesForSearch = ko.observableArray(), partnerTypesForSearch = ko.observableArray();
- var partners = ko.observableArray(), constructionTypes = ko.observableArray();
- var constructionEstimateDataModel = new BemsWebApplication.FmsConstructionEstimationViewModel();
- var deferredForSearch = new $.Deferred();
- var constructionEstimatePopupToolbarItems = [
- { location: 'before', text: '상세보기' },
- { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', clickAction: handlePopupButtonSave, disabled: hasnotModificationPermission } },
- { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: constructionEstimatePopupButtonClose } }
- ];
- var dataSourceOptions = {
- select: [
- 'SiteId',
- 'ConstructionId',
- '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'
- ],
- expand: [
- 'FmsConstructionCodeProgress',
- 'CmPartner',
- 'FmsConstructionEstimation',
- 'FmsConstructionCodeType'
- ],
- extendOptions: {
- forceOriginalField: true
- },
- filter: [
- eq('SiteId', BWA.UserInfo.SiteId()),
- 'and',
- eq('ProgressId', 3), // 공사완료 항목만 가져옴
- ]
- };
- 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', format: "yyyy-MM-dd" },
- { dataField: 'EndDate', caption: '종료일', width: '20%', alignment: 'center', format: "yyyy-MM-dd" },
- ],
- popupWidth: '740px',
- 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 }
- ],
- 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']());
- // 데이터 초기화
- constructionEstimateDataModel.SiteId(data['SiteId']());
- constructionEstimateDataModel.ConstructionId(data['ConstructionId']());
- constructionEstimateDataModel.EstimateDate(new Date());
- constructionEstimateDataModel.EstimateUserId(BWA.UserInfo.UserId());
- constructionEstimateDataModel.Safety01_CleanUp(0);
- constructionEstimateDataModel.Safety02_PersonalProtection(0);
- constructionEstimateDataModel.Safety03_FireExtinguisher(0);
- constructionEstimateDataModel.Safety04_HighPlaceWork(0);
- constructionEstimateDataModel.Safety05_Weld(0);
- constructionEstimateDataModel.Safety06_SurroundingCleanUp(0);
- constructionEstimateDataModel.Safety07_SurroundingHealthy(0);
- constructionEstimateDataModel.Safety08_Noise(0);
- constructionEstimateDataModel.Safety09_FacilityProtection(0);
- constructionEstimateDataModel.Safety10_Waste(0);
- constructionEstimateDataModel.Safety11_Execution(0);
- constructionEstimateDataModel.Safety12_Announcement(0);
- constructionEstimateDataModel.Ability01_Compliance(0);
- constructionEstimateDataModel.Ability02_Fault(0);
- constructionEstimateDataModel.Ability03_SkillLevel(0);
- constructionEstimateDataModel.Ability04_ProcessManagement(0);
- constructionEstimateDataModel.Ability05_Collaboration(0);
- constructionEstimateDataModel.Service01_Compliance(0);
- constructionEstimateDataModel.Service02_SkillLevel(0);
- constructionEstimateDataModel.Comment('');
- constructionEstimateDataModel.SafetyScore(0);
- constructionEstimateDataModel.AbilityScore(0);
- constructionEstimateDataModel.ServiceScore(0);
- 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, dbConstructions) {
- partners(dbPartners[0]);
- constructionTypes(dbConstructions[0]);
- constructionTypesForSearch($SearchView.createArrayOfSelectBox('ConstructionTypeId', constructionTypes()));
- partnerTypesForSearch($SearchView.createArrayOfSelectBox('PartnerId', partners()));
- deferredForSearch.resolve();
- });
- },
- handlePopupShown: function (isEditMode, isNew, dataViewModel) {
- // 공사완료 상태인 경우 EditMode 로 팝업을 띄워야 함
- if (dataViewModel.ProgressId() == 3) {
- setEditMode();
- }
- }
- });
- function setEditMode() {
- viewModel.visibleEditButton(false);
- viewModel.visibleDeleteButton(false);
- viewModel.viewModeInPopup(false);
- viewModel.isEditModeInPopup(true);
- }
- // Subscribe 이벤트의 실제 구현
- function estimateValueChanged() {
- constructionEstimateDataModel.SafetyScore(caculateSafetyScore());
- constructionEstimateDataModel.AbilityScore(caculateAbilityScore());
- constructionEstimateDataModel.ServiceScore(caculateServiceScore());
- }
- // 안전수칙준수 총점 계산
- function caculateSafetyScore() {
- var saftyScore = 0;
- var trueCount = 0;
- trueCount += checkTrue(constructionEstimateDataModel.Safety01_CleanUp());
- trueCount += checkTrue(constructionEstimateDataModel.Safety02_PersonalProtection());
- trueCount += checkTrue(constructionEstimateDataModel.Safety03_FireExtinguisher());
- trueCount += checkTrue(constructionEstimateDataModel.Safety04_HighPlaceWork());
- trueCount += checkTrue(constructionEstimateDataModel.Safety05_Weld());
- trueCount += checkTrue(constructionEstimateDataModel.Safety06_SurroundingCleanUp());
- trueCount += checkTrue(constructionEstimateDataModel.Safety07_SurroundingHealthy());
- trueCount += checkTrue(constructionEstimateDataModel.Safety08_Noise());
- trueCount += checkTrue(constructionEstimateDataModel.Safety09_FacilityProtection());
- trueCount += checkTrue(constructionEstimateDataModel.Safety10_Waste());
- trueCount += checkTrue(constructionEstimateDataModel.Safety11_Execution());
- trueCount += checkTrue(constructionEstimateDataModel.Safety12_Announcement());
- saftyScore = ((trueCount / 12) * 50).toFixed(1);
- return saftyScore;
- }
- // 공사수행능력 총점 계산
- function caculateAbilityScore() {
- var abilityScore = 0;
- var trueCount = 0;
- trueCount += checkTrue(constructionEstimateDataModel.Ability01_Compliance());
- trueCount += checkTrue(constructionEstimateDataModel.Ability02_Fault());
- trueCount += checkTrue(constructionEstimateDataModel.Ability03_SkillLevel());
- trueCount += checkTrue(constructionEstimateDataModel.Ability04_ProcessManagement());
- trueCount += checkTrue(constructionEstimateDataModel.Ability05_Collaboration());
- abilityScore = (trueCount / 5) * 40;
- return abilityScore;
- }
- // 용역수행능력 총점 계산
- function caculateServiceScore() {
- var serviceScore = 0;
- var trueCount = 0;
- trueCount += checkTrue(constructionEstimateDataModel.Service01_Compliance());
- trueCount += checkTrue(constructionEstimateDataModel.Service02_SkillLevel());
- serviceScore = (trueCount / 2) * 10;
- return serviceScore;
- }
- function checkTrue(value) {
- if (value == true) { return 1; }
- else { return 0; }
- }
- function constructionEstimatePopupButtonClose() {
- viewModel.popupVisible(false);
- }
- function handlePopupButtonSave() {
- var postData = constructionEstimateDataModel.toJS();
- var parameters = {
- SiteId: constructionEstimateDataModel.SiteId(),
- ConstructionId: constructionEstimateDataModel.ConstructionId()
- };
- BWA.api.post('FmsConstructionEstimation', postData, parameters).done(function () {
- utils.toast.show($G('successDatabaseInsertionMsg'));
- viewModel.popupOptions.visible(false);
- viewModel.gridView().refresh();
- });
- }
- constructionEstimateDataModel.Safety01_CleanUp.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety02_PersonalProtection.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety03_FireExtinguisher.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety04_HighPlaceWork.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety05_Weld.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety06_SurroundingCleanUp.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety07_SurroundingHealthy.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety08_Noise.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety09_FacilityProtection.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety10_Waste.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety11_Execution.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Safety12_Announcement.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Ability01_Compliance.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Ability02_Fault.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Ability03_SkillLevel.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Ability04_ProcessManagement.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Ability05_Collaboration.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Service01_Compliance.subscribe(function () { estimateValueChanged(); });
- constructionEstimateDataModel.Service02_SkillLevel.subscribe(function () { estimateValueChanged(); });
- viewModel.constructionTypes = constructionTypes;
- viewModel.partners = partners;
- viewModel.constructionEstimateDataModel = constructionEstimateDataModel;
- viewModel.dataModel.ConstructionTypeName = ko.observable();
- viewModel.dataModel.PartnerName = ko.observable();
- viewModel.dataModel.PartnerPhoneNo = ko.observable();
- viewModel.constructionEstimatePopupToolbarItems = constructionEstimatePopupToolbarItems;
- return viewModel;
- };
|