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