BemsWebApplication.CurrentWork = function (params, viewInfo) { "use strict"; var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true), workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType'), progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress'), businessFields = ko.observableArray(), workTypes = ko.observableArray(), progresses = ko.observableArray(); var FmsMaterialExdataSource = new DevExpress.data.DataSource({ store: BemsWebApplication.odata.FmsMaterialEx, requireTotalCount: true, pageSize: 1000 }); var Today = new Date(); // hcLee 2018 01 29 --> var imagefileUrl1 = ko.observable(), imagefileUrl2 = ko.observable(), dropZone1 = null, dropZone2 = null, uploadedFileInfo = {}, uploadedFileInfo2 = {}; // <-- hcLee 2018 01 29 //var currentDataModel = null; //권한설정 var hasnotModificationPermission = ko.observable(true); var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName); var isVisibleExecutionButton = ko.observable(true); var isAddHistoryButton = ko.observable(true); var isEditHistoryButton = ko.observable(false); var isWorkDone = ko.observable(false); var isWorkHold = ko.observable(false); var popup, addWorkResultCheckItemPopup = null; var workResultCheckItemMaterialPopup = null; var WorkResultCheckItemFacilityPopup = null; //workExecutionRegisterPopup var deferredForSearch = new $.Deferred(); var workTypesForSearch = ko.observableArray(), businessFieldsForSearch = ko.observableArray(), progressesForSearch = ko.observableArray(); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter, noteq = BWA.DataUtil.constructNotEqualFilter; var selectedFacilityData = ko.observable(), selectedUserData = params.selectedUserData || ko.observable(); var dataSourceOptions = { select: [ 'SiteId', 'WorkRequestId', 'StartDate', 'EndDate', 'ConfirmedDate', 'ConfirmedUserId', 'IsConfirmed', 'CauseClassId', 'Content', 'FmsWorkRequest/WorkTypeId', 'FmsWorkOrder/Title', 'FmsWorkOrder/OrderDate', 'FmsWorkRequest/WorkProgressId', 'CmUser/Name', // 작업자 'CmUser1/Name', // 승인자 'FmsWorkRequest/FmsWorkCodeType/Name', 'FmsWorkRequest/CmBusinessField/Name', 'FmsWorkRequest/FmsWorkCodeProgress/Name', 'FmsWorkRequest/BusinessFieldId', 'FmsWorkOrder/Content', 'FmsWorkRequest/Content', 'FmsWorkRequest/StartWorkDate', ], expand: [ 'FmsWorkRequest', 'FmsWorkOrder', 'FmsWorkRequest/FmsWorkCodeType', 'FmsWorkRequest/CmBusinessField', 'FmsWorkRequest/FmsWorkCodeProgress', 'FmsWorkOrder/CmBusinessField', 'CmUser', 'CmUser1'], //expand: ['FmsWorkCodeType', 'CmBusinessField', 'FmsWorkCodeProgress', 'CmUser', 'CmUser1'], extendOptions: { forceOriginalField: true } }; if (!useBusinessFiltering) { dataSourceOptions.filter = [ eq('SiteId', BWA.UserInfo.SiteId()), and, [ eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING), 'or', eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD) ], ]; } else { dataSourceOptions.filter = [ eq('SiteId', BWA.UserInfo.SiteId()), and, [ eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING), 'or', eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORK_HOLD) ], and, [eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]]; } var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkResult', { popupWidth: 890, dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'WorkRequestId', caption: $G('number'), width: '8%', alignment: 'center' }, { dataField: 'FmsWorkRequest/CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' }, { dataField: 'FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '10%', alignment: 'center' }, { dataField: 'FmsWorkOrder/OrderDate', caption: $G('orderedDate'), width: '12%', alignment: 'center', sortOrder: 'desc', visible: false, customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'StartDate', caption: $G('startDate'), width: '12%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { //dataField: 'EndDate', caption: $G('endDate'), width: '12%', alignment: 'center', 2016 03 08 수정 dataField: 'EndDate', caption: '종료예정일', width: '12%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'FmsWorkOrder/Title', caption: '작업명', width: '35%', alignment: 'center' }, { dataField: 'FmsWorkRequest/FmsWorkCodeProgress/Name', caption: $G('workProgressName'), width: '10%', alignment: 'center' }, { dataField: 'CmUser/Name', caption: '작업자', width: '15%', alignment: 'center' }, //{ dataField: 'CmUser1/Name', caption: '승인자', width: '15%', alignment: 'center' } { dataField: 'FmsWorkRequest/Content', caption: '신청내용', width: '0%', alignment: 'center' }, ], promiseDataInSearchView: deferredForSearch.promise(), searchViewItems: _.compact([ { id: 'FmsWorkRequest/BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, //{ id: 'WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch }, { id: 'CmUser/Name' }, { id: 'FmsWorkOrder/Title' }, { id: 'FmsWorkRequest/WorkProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch }, { id: 'StartDate', type: 'dateRange', isOnlyDate: true }, { id: 'EndDate', type: 'dateRange', isOnlyDate: true } ]), getAddedToolbarItemsInPopup: function (e) { var isEditModeInPopup = e.isEditModeInPopup; return [ { location: 'after', widget: 'button', options: { text: '작업이력추가', icon: 'add', type: 'success', visible: isAddHistoryButton, clickAction: showNewWorkItem, disabled: hasnotModificationPermission } }, { location: 'after', widget: 'button', options: { text: '작업진행', icon: 'add', type: 'success', visible: isWorkHold, clickAction: workReStart, disabled: hasnotModificationPermission } } //{ // location: 'after', widget: 'button', options: { // text: '작업이력수정', icon: 'save', // clickAction: function () { // if (popup && popup.modifyWorkItem) { // popup.modifyWorkItem(); // } // } // } //} ]; }, beforeInsertingDataViewModel: function (dataModel) { return true; // hcLee }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; if (data['FmsWorkRequest/WorkProgressId']() >= $Code.WorkProgress.WORK_COMPLETE) { isAddHistoryButton(false); } else { isAddHistoryButton(true); } if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_COMPLETE) { isWorkDone(true); //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(true); } else { isWorkDone(false); } if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_HOLD) { isWorkHold(true); //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false); //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(true); } else { //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false); isWorkHold(false); } viewModel.dataModel.BusinessFieldId = ko.observable(); viewModel.dataModel.BusinessFieldId(data['FmsWorkRequest/BusinessFieldId']()); if (popup && popup.handleBeforeShowingPopupForEdit) { popup.handleBeforeShowingPopupForEdit(data, dataModel); } //popup.show(); popupVisible(true); workResultCheckItemMaterialPopup.visible(true); }, handleBeforePopupShowingPromise: function () { if (popup && popup.handleBeforePopupShowingPromise) { popup.handleBeforePopupShowingPromise.apply(popup, arguments); } }, handleAfterLoadingModelByKey: function () { if (popup && popup.handleAfterLoadingModelByKey) { popup.handleAfterLoadingModelByKey.apply(popup, arguments); } }, handlePopupShowing: function () { if (popup && popup.handlePopupShowing) { popup.handlePopupShowing.apply(this, arguments); } }, handlePopupShown: function (editMode, isNewInPopup, dataModel) { if (popup && popup.handlePopupShown) { popup.handlePopupShown.apply(this, arguments); } }, handleSaveButtonInPopup: function (isInsert) { if (isInsert === false) { if (popup && popup.handleAfterSave) { popup.handleAfterSave(undefined); } } }, handleAfterSaveInPopup: function (responseKey, response) { if (popup && popup.handleAfterSave) { popup.handleAfterSave(responseKey, response); } }, handleViewShowing: function (dataModel) { //권한설정 hasnotModificationPermission(!BWA.UserInfo.hasPermissionOfModification(viewInfo.viewName)); FmsMaterialExdataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); FmsMaterialExdataSource.load().done(function (result) { if (result != null) { viewModel.dataModel.MaterialExdataSource(result); } }).fail(function (error) { utils.toast.show(error); }); var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) if (useBusinessFiltering) { dataSourceOptions.filter.push('and'); dataSourceOptions.filter.push([eq('FmsWorkRequest/BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('FmsWorkRequest/BusinessFieldId', 1)]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)] ]); } $.when( businessFieldDataSource.load(), workTypeDataSource.load(), progressDataSource.load() ).done(function (businessFieldResult, workTypeResult, progressResult) { businessFields(businessFieldResult[0]); workTypes(workTypeResult[0]); progresses(progressResult[0]); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields())); workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypes())); progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progresses())); deferredForSearch.resolve(); }); }, handleViewShown: function () { setupDropZone(addWorkResultCheckItemPopup.isEditMode, addWorkResultCheckItemPopup.workCheckItemViewModel); }, hasnotModificationPermission: hasnotModificationPermission //권한설정 }); viewModel.isEditHistoryButton = isEditHistoryButton; viewModel.isAddHistoryButton = isAddHistoryButton; viewModel.isWorkDone = isWorkDone; viewModel.isWorkHold = isWorkHold; viewModel.businessFields = businessFields; viewModel.workTypes = workTypes; viewModel.isAddPopup = ko.observable(true); viewModel.isApprovalMode = ko.observable(false); viewModel.isWorkHistory = ko.observable(false); // hcLee 2018 01 29 --> viewModel.imagefileUrl1 = imagefileUrl1; viewModel.imagefileUrl2 = imagefileUrl2; // <-- hcLee 2018 01 29 viewModel.dataModel.MaterialExdataSource = ko.observable(); //위치이동 2016 04 05 hcLee //addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel); popup = viewModel.popup = BWA.Popup.CurrentWork.create(viewInfo, viewModel); //workExecutionRegisterPopup = viewModel.workExecutionRegisterPopup = BWA.Popup.WorkExecutionRegister.create(viewInfo, viewModel); //위치이동 2016 04 05 hcLee addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel, popup.refreshListData); //addWorkResultCheckItemPopup = viewModel.addWorkResultCheckItemPopup = BWA.Popup.AddWorkResultCheckItem.create(viewInfo, viewModel); workResultCheckItemMaterialPopup = viewModel.workResultCheckItemMaterialPopup = BWA.Popup.WorkResultCheckItemMaterial.create(viewInfo, viewModel); WorkResultCheckItemFacilityPopup = viewModel.WorkResultCheckItemFacilityPopup = BWA.Popup.WorkResultCheckItemFacility.create(viewInfo, viewModel); // 2016 04 05 //viewModel.addWorkResultCheckItemPopup.refreshListData = popup.refreshListData(); viewModel.popupOptions.visible.subscribe(function (visible) { if (!visible) { viewModel.gridView().refresh(); } }); viewModel.popupOptions.position = { offset: '-200 0' }; viewModel.popupOptions.height = '830px'; function saveWorkResultAproval() { utils.toast.show('Approval Clicked!'); } viewModel.addWorkResultCheckItemPopup.popupVisible.subscribe(function (visible) { if (visible) { popup.refreshListData(); workResultCheckItemMaterialPopup.refreshMaterialGrid(); } //addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false); disable필요 /* if (data['FmsWorkRequest/WorkProgressId']() == $Code.WorkProgress.WORK_HOLD) { addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(true); } else { addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false); }*/ }); function showNewWorkItem() { if (addWorkResultCheckItemPopup.workCheckItemViewModel !== undefined) { var dataModel = viewModel.dataModel; addWorkResultCheckItemPopup.workCheckItemViewModel.CheckDate(dataModel.EndDate()); addWorkResultCheckItemPopup.workCheckItemViewModel.TextResult(''); addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(false); addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(false); // hcLee 2018 02 01 --> isEditHistoryButton(false); addWorkResultCheckItemPopup.workCheckItemViewModel.FileId1(null); addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName1(null); addWorkResultCheckItemPopup.workCheckItemViewModel.FileId2(null); addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName2(null); // <-- hcLee 2018 02 01 ///////////////////////2019-11-19 변경 viewModel.dropZone1 = dropZone1 = null; viewModel.dropZone2 = dropZone2 = null; ///////////////////////2019-11-19 변경 viewModel.addWorkResultCheckItemPopup.isNew(true); } addWorkResultCheckItemPopup.show(); } function workReStart() { utils.dialog.confirm("작업보류를 작업진행으로 변경하시겠습니까?", "작업 재진행", function (result) { if (result) { var parameters = { SiteId: BWA.UserInfo.SiteId(), WorkRequestId: viewModel.dataModel.WorkRequestId(), WorkProgressId: $Code.WorkProgress.WORKING, UserId: BWA.UserInfo.UserId() }; // FmsWorkRequest 업데이트: WorkProgressId(5) BWA.api.post('FmsWorkRequest', null, parameters).done(function () { viewModel.popupVisible(false); }); } }); } ///////////////////////2019-11-19 변경 function setupDropZone(isEditModeInPopup, dataViewModel) { var timer = null; isEditModeInPopup.subscribe(function (value) { if (value) { if (timer) { clearInterval(timer); } timer = setInterval(function () { if ($('#workcheckitemDropZone1').length) { if (_.isNull(dropZone1)) { dropZone1 = BWA.DropZone.create({ id: '#workcheckitemDropZone1', categoryId: $Code.FileCategory.WORK, uploadedFileInfo: uploadedFileInfo, handleRemoveBeforePromise: function () { var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel); return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId1: null }); }, handleSuccess: function (fileInfo) { if (uploadedFileInfo.FileId) { dataViewModel.FileId1(fileInfo.FileId); var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel); if (keys.CheckItemId != null) { return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId1: fileInfo.FileId }) .done(function (res) { popup.refreshListData(); }); } } }, handleRemovedFile: function () { dataViewModel.FileId1(null); } }); viewModel.dropZone1 = dropZone1; } } if ($('#workcheckitemDropZone2').length) { if (_.isNull(dropZone2)) { dropZone2 = BWA.DropZone.create({ id: '#workcheckitemDropZone2', categoryId: $Code.FileCategory.WORK, uploadedFileInfo: uploadedFileInfo2, handleRemoveBeforePromise: function () { var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel); return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId2: null }); }, handleSuccess: function (fileInfo) { if (uploadedFileInfo.FileId) { dataViewModel.FileId2(fileInfo.FileId); var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', dataViewModel); if (keys.CheckItemId != null) { return BWA.db.FmsWorkResultCheckItem.update(keys, { FileId2: fileInfo.FileId }) .done(function (res) { popup.refreshListData(); }); } } }, handleRemovedFile: function () { dataViewModel.FileId2(null); }, }); viewModel.dropZone2 = dropZone2; } } }, 800); } else { if (timer) { clearInterval(timer); timer = null; } dropZone1 = null; dropZone2 = null; } }); } ///////////////////////2019-11-19 변경 return viewModel; };