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