| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | $(function () {    'use strict';    BemsWebApplication.Popup.AnyCheckSchedule = {        create: function (viewInfo, viewModel, executionPlanOptions) {            var isInnerCheckWorkType = ko.observable(false);            var facilities = ko.observableArray(),                facilitiesInView = ko.observableArray(),                businessFields = ko.observableArray(),                isVisibleEditWorkOrderButton = ko.observable(),                isVisibleButtons = ko.observable();            var eq = BWA.DataUtil.constructEqualFilter;            var and = BWA.DataUtil.andFilter;            var workResultCheckItems = ko.observableArray();            var workResultCheckItemDataSource = BemsWebApplication.db.createDataSource('FmsWorkResultCheckItem', true, true, false, true);            if (executionPlanOptions == null) {                isVisibleEditWorkOrderButton = ko.observable();                isVisibleButtons = ko.observable();            }            else {                isVisibleEditWorkOrderButton = executionPlanOptions ? executionPlanOptions.isVisibleEditWorkOrderButton : undefined;                isVisibleButtons = executionPlanOptions ? executionPlanOptions.isVisibleButtons : undefined;            }            var facilitySearchPopup = null,                facilityFactory = BWA.Factory.Facility,                facilityGridView = ko.observable(undefined),                facilityDataGridOptions,                modifiableFacilityDataGridOptions = undefined,                isWorkOrder = ko.observable(false),                isReject = ko.observable(false);            var workTypeId = null; //= $Code.WorkType.CIVIL_COMPLAINT;            var facilityDataSource = facilityFactory.getBasicDataSourceRef({                dbModeIId: 'FmsWorkRequestToFacility',                primaryKeyDataField: 'WorkRequestId'            });            function isValidateWithFunction(errorMessage) {                if (_.isEmpty(facilities())) {                    errorMessage.message = '점검 계획을 위한 시설이 없습니다.';                    return false;                }                return true;            }            function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {                var workProgressId;                if (isNewInPopup()) {                    workProgressId = $Code.WorkProgress.WORK_PLAN;                }                else {                    workProgressId = clickRowData.WorkProgressId();                }                isVisibleEditWorkOrderButton(workProgressId === $Code.WorkProgress.WORK_STANDBY);                if (isNewInPopup()) {                    isVisibleButtons(false);                }                else {                    isVisibleButtons(workProgressId === $Code.WorkProgress.WORK_PLAN);                }                isWorkOrder(workProgressId >= $Code.WorkProgress.WORK_STANDBY);                isReject(workProgressId === $Code.WorkProgress.WORK_POSTPONE);            }            function handlePopupShowing(isNewInPopup, dataModel, selectedData) {                viewModel.visibleEditButton(false);                viewModel.visibleDeleteButton(false);                $("#gridContainer2").dxDataGrid({                    paging: {                        pageSize: 8,                        enabled: true                    }                });                $("#gridContainer3").dxDataGrid({                    paging: {                        pageSize: 8,                        enabled: true                    }                });                var userInfo = BWA.UserInfo;                if (isNewInPopup()) {                    workTypeId = $Code.WorkType.INNER_CHECK;                    //if (isInnerCheckWorkType()) {                    //    workTypeId = $Code.WorkType.INNER_CHECK;                    //}                    //else {                    //    //workTypeId = $Code.WorkType.CIVIL_COMPLAINT;                    //    workTypeId = $Code.WorkType.any                    //}                    dataModel.BusinessFieldName(userInfo.BusinessFieldName());                    dataModel.BusinessFieldId(userInfo.BusinessFieldId());                    dataModel.RequestUserName(userInfo.Name());                    dataModel.RequestUserId(userInfo.UserId());                    dataModel.WorkTypeId(workTypeId);                    BWA.db.FmsWorkCodeType.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkCodeType')).done(function (workType) {                        dataModel.WorkTypeName(workType.Name);                    });                    var now = moment();                    dataModel.RequestDate(now.toDate());                    dataModel.StartWorkDate(BWA.DataUtil.getDateFromDateTime(now));                    dataModel.WorkProgressId($Code.WorkProgress.WORK_PLAN);                    BWA.db.FmsWorkCodeProgress.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkCodeProgress')).done(function (workProgress) {                        dataModel.WorkProgressName(workProgress.Name);                    });                }            }            function handlePopupShown(isEditMode, isNew, dataViewModel) {            }            // 점검계획 정보가 저장된 후에 호출 된다.             // 등록이면 responseKey가 있고, 수정이면 없다.            function handleAfterSave(responseKey) {                var array = facilities();                if (_.isEmpty(array)) {                    return;                }                var siteId, workRequestId;//, businessFieldId;                if (_.isUndefined(responseKey)) {                    var dataModel = viewModel.dataModel;                    siteId = dataModel.SiteId();                    //businessFieldId = dataModel.BusinessFieldId();                    workRequestId = dataModel.WorkRequestId();                }                else {                    siteId = responseKey.SiteId;                    //businessFieldId = responseKey.BusinessFieldId;                    workRequestId = responseKey.WorkRequestId;                }                var postData;                var parameters = {                    SiteId: siteId,                    //BusinessFieldId: businessFieldId,                    WorkRequestId: workRequestId                };                postData = _.map(array, function (f) {                    return {                        SiteId: siteId,                        //BusinessFieldId: businessFieldId,                        WorkRequestId: workRequestId,                        FacilityCode: f.FacilityCode()                    };                });                BWA.api.post('FmsWorkRequestToFacility/Insert', postData, parameters);            }            function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) {                if (dataViewModel.WorkProgressId() >= $Code.WorkProgress.WORK_PLAN) {                    if (dataViewModel.WorkTypeId() == $Code.WorkType.INNER_CHECK) {                        // WorkType 이 내부점검인 경우 수정/삭제할 수 있어야 함                        viewModel.visibleEditButton(true);                        viewModel.visibleDeleteButton(true);                    }                    else {                        viewModel.visibleEditButton(false);                        viewModel.visibleDeleteButton(false);                    }                }                facilityDataSource.filter([                    eq('SiteId', dataViewModel.SiteId()),                    and,                    //eq('BusinessFieldId', dataViewModel.BusinessFieldId()),                    //and,                    eq('WorkRequestId', dataViewModel.WorkRequestId())                ]);                facilityDataSource.load().done(function (dbFacilities) {                    facilitiesInView(dbFacilities);                });                if (!isNewInPopup()) {                    workResultCheckItemDataSource.filter([                        eq('SiteId', dataViewModel.SiteId()),                        and,                        eq('WorkRequestId', dataViewModel.WorkRequestId())                    ]);                    workResultCheckItemDataSource.load().done(function (dbWorkCheckItems) {                        workResultCheckItems(dbWorkCheckItems);                    });                    viewModel.dataModel.selectedItemCheckDate("");                    viewModel.dataModel.selectedItemTextResult("");                    viewModel.dataModel.selectedItemCheckItemId(0);                }            }            function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {                dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']());                dataViewModel.WorkTypeName(rowData['FmsWorkCodeType/Name']());                dataViewModel.RequestUserName(rowData['CmUser/Name']());                dataViewModel.WorkProgressName(rowData['FmsWorkCodeProgress/Name']());                dataViewModel.RejectUserName($KoValue(rowData['CmUser1/Name']));            }            viewModel.popupVisible.subscribe(function (visible) {                //if (!visible) {                if (visible) {                    facilitiesInView([]);                    facilities([]);                }            });            viewModel.isEditModeInPopup.subscribe(function (isEditMode) {                if (isEditMode) {                    facilities(facilitiesInView.slice(0));                }            });            viewModel.dataModel.WorkTypeName = ko.observable();            viewModel.dataModel.BusinessFieldName = ko.observable();            viewModel.dataModel.RequestUserName = ko.observable();            viewModel.dataModel.RejectUserName = ko.observable();            viewModel.dataModel.WorkProgressName = ko.observable();            viewModel.dataModel.selectedItemCheckDate = ko.observable();            viewModel.dataModel.selectedItemTextResult = ko.observable();            viewModel.dataModel.selectedItemCheckItemId = ko.observable();            viewModel.workResultCheckItems = workResultCheckItems;            viewModel.refreshListData = refreshListData;            viewModel.onItemClick = onItemClick;            facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilitiesInView, viewModel.viewModeInPopup);            modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions(                facilities, viewModel.isEditModeInPopup, facilityGridView);            viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, {                isMultipleSelect: true,                onSelectedFacilities: function (selectedFacilities) {                    var workRequestId = viewModel.dataModel.WorkRequestId();                    _.each(selectedFacilities, function (sf) {                        // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.                        var found = _.some(facilities(), function (f) {                            //return f.FacilityCode() === sf.FacilityCode();                            try {                                return f.FacilityCode() === sf.FacilityCode();                            } catch (e) {                                return f.FacilityCode() === sf.FacilityCode;                            }                        });                        if (found) return;                        //facilities.push({                        //    SiteId: sf.SiteId,                        //    WorkRequestId: ko.observable(workRequestId),                        //    FacilityCode: sf.FacilityCode,                        //    Name: sf.Name,                        //    FirstClassId: sf.FirstClassId,                        //    SecondClassId: sf.SecondClassId,                        //    ThirdClassId: sf.ThirdClassId,                        //});                        //2019.08.08 수정                        try {                            facilities.push({                                SiteId: ko.observable(sf.SiteId()),                                WorkRequestId: ko.observable(workRequestId),                                FacilityCode: ko.observable(sf.FacilityCode()),                                Name: ko.observable(sf.Name()),                                FirstClassId: ko.observable(sf.FirstClassId()),                                SecondClassId: ko.observable(sf.SecondClassId()),                                ThirdClassId: ko.observable(sf.ThirdClassId()),                            });                        } catch (e) {                            facilities.push({                                SiteId: ko.observable(sf.SiteId),                                WorkRequestId: ko.observable(workRequestId),                                FacilityCode: ko.observable(sf.FacilityCode),                                Name: ko.observable(sf.Name),                                FirstClassId: ko.observable(sf.FirstClassId),                                SecondClassId: ko.observable(sf.SecondClassId),                                ThirdClassId: ko.observable(sf.ThirdClassId),                            });                        }                    });                    facilityGridView().refresh();                }            });            function refreshListData() {                //workResultCheckItemDataSource.filter([                //   eq('SiteId', dataViewModel.SiteId()),                //   and,                //   eq('WorkRequestId', dataViewModel.WorkRequestId())                //]);                //workResultCheckItemDataSource.load().done(function (dbWorkCheckItems) {                //    workResultCheckItems(dbWorkCheckItems);                //});                //viewModel.dataModel.selectedItemCheckDate("");                //viewModel.dataModel.selectedItemTextResult("");                //viewModel.dataModel.selectedItemCheckItemId(0);            }            function onItemClick(e) {                viewModel.dataModel.selectedItemCheckDate(e.itemData.CheckDate());                viewModel.dataModel.selectedItemTextResult(e.itemData.TextResult());                viewModel.dataModel.selectedItemCheckItemId(e.itemData.CheckItemId());                if (viewModel.workResultCheckItemMaterialPopup === undefined) {                    return;                }                viewModel.workResultCheckItemMaterialPopup.materials2([]);                viewModel.workResultCheckItemMaterialPopup.materials2DataSource.filter([                    eq('SiteId', viewModel.dataModel.SiteId()),                    and,                    eq('WorkRequestId', viewModel.dataModel.WorkRequestId()),                    and,                    eq('CheckItemId', e.itemData.CheckItemId())                ]);                viewModel.workResultCheckItemMaterialPopup.materials2DataSource.load().done(function (dbMaterials) {                    _.each(dbMaterials, function (sm) {                        viewModel.workResultCheckItemMaterialPopup.materials2.push({                            SiteId: sm.SiteId,                            //PurchaseRequestId: ko.observable(purchaseRequestId),                            MaterialId: sm.MaterialId,                            Name: sm.Name,                            MaterialCode: sm.MaterialCode,                            MaterialCount: sm.MaterialCount                            //FinalPrice: sm.FinalPrice,                        });                    });                });            }            return {                workResultCheckItems: workResultCheckItems,                refreshListData: refreshListData,                isInnerCheckWorkType: isInnerCheckWorkType,                facilitySearchPopup: facilitySearchPopup,                facilities: facilitiesInView,                businessFields: businessFields,                isReject: isReject,                isWorkOrder: isWorkOrder,                isValidateWithFunction: isValidateWithFunction,                facilityDataGridOptions: facilityDataGridOptions,                modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions,                handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,                handleAfterSave: handleAfterSave,                handlePopupShowing: handlePopupShowing,                handlePopupShown: handlePopupShown,                handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,                handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities),                handleBeforePopupShowingPromise: handleBeforePopupShowingPromise            };        }    }});
 |