BemsWebApplication.MonthlyReport = function (params, viewInfo) { 'use strict'; var imagefileUrl1 = ko.observable(), uploadedFileInfo = {}, dropZone1 = null ; var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter ; var currentViewModel = new BemsWebApplication.FmsReportViewModel(); var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true); var businessFieldsForSearch = ko.observableArray(); var businessFields = ko.observableArray(); var deferredForSearch = new $.Deferred(); var level = ko.observable(0); // 0 작성, 1:팀장, 2:소장 var isVisibleConfirmButton = ko.observable(false); var isVisibleConfirmCancelButton = ko.observable(false); var dataSourceOptions = { select: [ 'SiteId', 'RId', 'BusinessFieldId', 'CmBusinessField/Name', 'Title', 'Contents', 'RegisterUserId ', 'CmUser/Name', // 등록자 'FileId', 'CmFile/Name', 'CmFile/FileSize', 'MakeDate', 'ConfirmUserId1', 'CmUser1/Name', // 팀장 'ConfirmUserId2', 'CmUser2/Name', // 소장 ], expand: [ 'CmBusinessField', 'CmFile', 'CmUser', 'CmUser1', 'CmUser2' ], extendOptions: { forceOriginalField: true }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], ] }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsReport', { dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'RId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' }, { dataField: 'CmBusinessField/Name', caption: '업무분야', width: '10%', alignment: 'center' }, { dataField: 'MakeDate', caption: '등록일', width: '15%', alignment: 'center', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'Title', caption: '제목', width: '40%', alignment: 'center' }, { dataField: 'CmFile/Name', caption: '파일명', width: '40%', alignment: 'center' }, { dataField: 'CmUser/Name', caption: '등록자', width: '15%', alignment: 'center' }, { dataField: 'CmUser1/Name', caption: '팀장확인', width: '15%', alignment: 'center' }, { dataField: 'CmUser2/Name', caption: '소장확인', width: '15%', alignment: 'center' }, //utils.datagrid.columnIsUse('20%') hcLee 2015 12 23 ], /* toolbarItems: [ { location: 'before', text: '공지사항 입력' }, { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'edit', visible: _.isBoolean(isModifiable) ? isModifiable : visibleEditButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonEdit } }, { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: _.isBoolean(isModifiable) ? isModifiable : visibleDeleteButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonDelete } }, { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', visible: visibleCancelButton, clickAction: handlePopupButtonCancel } }, { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditModeInPopup, disabled: hasnotModificationPermission, clickAction: handlePopupButtonSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } } ], */ //popupWidth: 580, searchViewItems: [ { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch }, { id: 'Title' }, { id: 'Contents' }, { id: 'CmFile/Name' }, { id: 'MakeDate', type: 'dateRange', isOnlyDate: true }, ], mandatoryFields: [ { dataField: 'Title', name: '제목' }, { dataField: 'Contents', name: '내용' }, //{ dataField: 'CmFile/Name', name: '파일명' } ], getAddedToolbarItemsInPopup: function (e) { var isEditModeInPopup = e.isEditModeInPopup, hasnotModificationPermission = e.hasnotModificationPermission ; isEditModeInPopup.subscribe(function (isEditMode) { //tabIndex(0); // 왼쪽 수정은 무조건 매뉴얼 hcLee 2016 03 24추가 //isVisibleHistoryInsertButton(tabIndex() === 1 && isEditMode); if (isEditMode) { isVisibleConfirmCancelButton(false); isVisibleConfirmButton(false); } else { ButtonsView(currentViewModel); } }); return [ { location: 'after', widget: 'button', options: { text: '결재', icon: 'plus', visible: isVisibleConfirmButton, disabled: hasnotModificationPermission, clickAction: function () { //drawingHistoryPopup.handleInsertDrawingHistory(); if (level == 1) currentViewModel.ConfirmUserId1(BWA.UserInfo.UserId()); if (level == 2) { if (_.isNull(currentViewModel.ConfirmUserId1())) { utils.toast.show('팀장확인이 필요합니다.'); viewModel.popupVisible(false); viewModel.handlePopupButtonClose(); return; } currentViewModel.ConfirmUserId2(BWA.UserInfo.UserId()); } var keys = BWA.db.extractKeysObject('FmsReport', currentViewModel); BWA.db.FmsReport.update(keys, currentViewModel.toJS()).done(function (res) { utils.toast.show('일지가 결재 되었습니다.'); //dropZone1.resetUploadedFileInfo(); //reloadDrawingHistory(drawingId()); //dropZone.options.startLoadFileCount = 0; //historyGridView.refresh(); viewModel.popupVisible(false); viewModel.handlePopupButtonClose(); }); } } }, { location: 'after', widget: 'button', options: { text: '결재취소', icon: 'minus', visible: isVisibleConfirmCancelButton, disabled: hasnotModificationPermission, clickAction: function () { if (level == 1) currentViewModel.ConfirmUserId1(null); if (level == 2) currentViewModel.ConfirmUserId2(null); var keys = BWA.db.extractKeysObject('FmsReport', currentViewModel); BWA.db.FmsReport.update(keys, currentViewModel.toJS()).done(function (res) { utils.toast.show('일지결재가 취소 되었습니다.'); //dropZone1.resetUploadedFileInfo(); //reloadDrawingHistory(drawingId()); //dropZone.options.startLoadFileCount = 0; //historyGridView.refresh(); viewModel.popupVisible(false); viewModel.handlePopupButtonClose(); }); } } }, ] }, handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { if (isNewInPopup() == false) { if (_.isNull(dataViewModel.FileId()) === false) { //alert('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId())); imagefileUrl1('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, dataViewModel.SiteId(), dataViewModel.FileId())); } else { imagefileUrl1(undefined); } var keys = BWA.db.extractKeysObject('FmsReport', dataViewModel); BWA.db.FmsReport.update(keys, dataViewModel.toJS()); } }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; currentViewModel = dataModel; if (data['FileId']() != null) { dataModel.AttachmentFileName(data['CmFile/Name']()); } else { dataModel.AttachmentFileName(''); } //alert(dataModel.AttachmentFileName()); popupVisible(true); }, handlePopupButtonClose: function (dataViewModel, backupDataViewModel) { isVisibleConfirmButton(false); isVisibleConfirmCancelButton(false); //isEditModeInPopup(false); viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); }, handlePopupShown: function (isEditModeInPopup, isNewInPopup, dataViewModel) { currentViewModel = dataViewModel; if (isNewInPopup) { isVisibleConfirmButton(false); isVisibleConfirmCancelButton(false); } else { ButtonsView(dataViewModel); /* if (_.isNull(dataViewModel.ConfirmUserId1()) == false || _.isNull(dataViewModel.ConfirmUserId2()) == false) { viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); } else { viewModel.visibleEditButton(true); viewModel.visibleDeleteButton(true); } if (level > 0) { if (level == 1) { if (dataViewModel.ConfirmUserId1() == BWA.UserInfo.UserId()) isVisibleConfirmCancelButton(true); else isVisibleConfirmButton(true); } if (level == 2) { if (dataViewModel.ConfirmUserId2() == BWA.UserInfo.UserId()) isVisibleConfirmCancelButton(true); else isVisibleConfirmButton(true); } } else { isVisibleConfirmButton(false); isVisibleConfirmCancelButton(false); }*/ } }, handleViewShowing: function (dataModel) { if (BWA.UserInfo.UserGroupName().indexOf('소장') > -1) level = 2; else if (BWA.UserInfo.UserGroupName().indexOf('팀장') > -1) level = 1; else level = 0; var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName) if (useBusinessFiltering) { dataSourceOptions.filter.push('and'); dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]); businessFieldDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)] ]); } businessFieldDataSource.load().done(function (dbBusinessFields) { businessFields(dbBusinessFields); businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields())); }); }, handlePopupShowing: function (isNewInPopup, dataViewModel) { // 신규등록인 경우 //imagefileUrl1(undefined); //dropZone1.removeAllFiles(); //if (_.isNull(dropZone1) === false) dropZone1.resetUploadedFileInfo(); if (isNewInPopup()) { // hcLee 2016 01 04 추가 imagefileUrl1(undefined); dataViewModel.MakeDate(new Date()); dataViewModel.RegisterUserId(BWA.UserInfo.UserId()); } viewModel.visibleEditButton(false); // 2017 07 25 hcLee viewModel.visibleDeleteButton(false); // 2017 07 25 hcLee isVisibleConfirmButton(false); // 2017 07 25 hcLee isVisibleConfirmCancelButton(false); // 2017 07 25 hcLee }, handleViewShown: function (dataViewModel, isEditModeInPopup) { setupDropZone(isEditModeInPopup, dataViewModel); }, handleSaveSuccess: function () { if (_.isNull(dropZone1) === false) { dropZone1.resetUploadedFileInfo(); } }, }); function ButtonsView(dataViewModel) { if (_.isNull(dataViewModel.ConfirmUserId1()) == false || _.isNull(dataViewModel.ConfirmUserId2()) == false) { viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); } else { viewModel.visibleEditButton(true); viewModel.visibleDeleteButton(true); } if (level > 0) { if (level == 1) { if (dataViewModel.ConfirmUserId1() == BWA.UserInfo.UserId()) isVisibleConfirmCancelButton(true); else if (_.isNull(dataViewModel.ConfirmUserId1()) == true) // 2017 07 25 hcLee 수정 isVisibleConfirmButton(true); if (_.isNull(dataViewModel.ConfirmUserId2()) == false) isVisibleConfirmCancelButton(false);// 2016 08 11 결재조건 팀장선결 필수로 수정 } if (level == 2) { if (dataViewModel.ConfirmUserId2() == BWA.UserInfo.UserId()) isVisibleConfirmCancelButton(true); else isVisibleConfirmButton(!_.isNull(dataViewModel.ConfirmUserId1())); // 2016 08 11 결재조건 팀장선결 필수로 수정 } } else { isVisibleConfirmButton(false); isVisibleConfirmCancelButton(false); } } function setupDropZone(isEditModeInPopup, dataViewModel) { var timer = null; isEditModeInPopup.subscribe(function (value) { if (value) { if (timer) { clearInterval(timer); } timer = setInterval(function () { if ($('#reportDropZone1').length) { if (_.isNull(dropZone1)) { dropZone1 = BWA.DropZone.create({ id: '#reportDropZone1', previewTemplate: "...", categoryId: $Code.FileCategory.REPORT, uploadedFileInfo: uploadedFileInfo, /* handleRemoveBeforePromise: function () { var keys = BWA.db.extractKeysObject('CmAnnouncement', dataViewModel); return BWA.db.CmAnnouncement.update(keys, { FileId: null }); },*/ handleSuccess: function (fileInfo) { dataViewModel.FileId(fileInfo.FileId); dropZone1.options.startLoadFileCount = 1; }, handleRemovedFile: function () { dataViewModel.FileId(null); dropZone1.options.startLoadFileCount = 0; }, }); uploadedFileInfo.SiteId = dataViewModel.SiteId(); uploadedFileInfo.FileId = dataViewModel.FileId(); if (uploadedFileInfo.FileId) { BWA.db.CmFile.byKey(uploadedFileInfo).done(function (data) { // dropZone1.removeAllFiles(); dropZone1.emit('addedfile', { name: data.Name, size: data.FileSize }); dropZone1.options.startLoadFileCount = 1; dataViewModel.AttachmentFileName(data.Name); //dropZone1.setTempFileFlag(true); //dropZone.options.maxFiles = 0; // 이게 있으면 삭제후 다시 업로드가 안 된다. }); } } } }, 100); } else { if (timer) { clearInterval(timer); timer = null; } dropZone1 = null; } }); } /* var toolbarItems = [ { location: 'before', text: '공지사항 입력' }, { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'edit', visible: _.isBoolean(isModifiable) ? isModifiable : visibleEditButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonEdit } }, { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: _.isBoolean(isModifiable) ? isModifiable : visibleDeleteButton, disabled: hasnotModificationPermission, clickAction: handlePopupButtonDelete } }, { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', visible: visibleCancelButton, clickAction: handlePopupButtonCancel } }, { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditModeInPopup, disabled: hasnotModificationPermission, clickAction: handlePopupButtonSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } } ]; */ viewModel.popupVisible.subscribe(function (value) { if (!value) { viewModel.gridView().refresh(); } }); viewModel.dataModel.AttachmentFileName = ko.observable(); viewModel.imagefileUrl1 = imagefileUrl1; viewModel.businessFields = businessFields; //viewModel.processValueChange = processValueChange; //viewModel.partnerTypes = partnerTypes; //viewModel.contractClasses = contractClasses; //viewModel.contractMethods = contractMethods; //viewModel.contractTypes = contractTypes; //viewModel.paymentTypes = paymentTypes; //viewModel.allPartner = allPartner; //viewModel.filteredPartner = filteredPartner; //viewModel.toolbarItems = toolbarItems; return viewModel; };