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