| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 | $(function () {    'use strict';    BemsWebApplication.Popup.WorkOrder = {        create: function (viewModel) {            var workRequestFacilities = viewModel.popup.facilities,                workRequestDataModel = viewModel.dataModel,                workOrderDataModel = new BWA.FmsWorkOrderViewModel();            var facilities = ko.observableArray(), businessFields = ko.observableArray();            var facilitySearchPopup = viewModel.popup.facilitySearchPopup,                facilityFactory = BWA.Factory.Facility,                facilityGridView = ko.observable(undefined),                facilityDataGridOptions = undefined;            var facilityDataSource = facilityFactory.getBasicDataSourceRef({                dbModeIId: 'FmsWorkOrderToFacility',                primaryKeyDataField: 'WorkRequestId'            });            function onSelectedFacilities(selectedFacilities) {                var workRequestId = workRequestDataModel.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,                    //});                    //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();            }            var isNew = true,                popupVisible = ko.observable(false),                toolbarItems = [                    { location: 'before', text: $G('workOrder') },                    //{                    //    location: 'after', widget: 'button', options: {                    //        text: $G('facilityInsertion'), icon: 'search',                    //        clickAction: function () {                    //            facilitySearchPopup.show(onSelectedFacilities);                    //        }                    //    }                    //},                    //{                    //    location: 'after', widget: 'button', options: {                    //        text: $G('facilityDeletion'),                    //        icon: 'remove',                    //        type: 'danger',                    //        clickAction: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities)                    //    }                    //},                    { location: 'after', widget: 'button', options: { text: $G('workOrder'), icon: 'save', clickAction: handleSave } },                    { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handleClose } }                ],                popupOptions = {                    width: 1200,                    height: 650,                    //shading: false,                    shadingColor: 'rgba(0,0,0,0.0)',                    showingAction: handlePopupShowing,                    visible: popupVisible,                    closeOnOutsideClick: false,                    animation: utils.popup.createAnimation()                };            function handleSave() {                if (isNew) {                    insert();                    return;                }                update();            }            function insert() {                BWA.db.FmsWorkOrder.insert(workOrderDataModel.toJS()).done(function (response, responseKey) {                    var keys = BWA.db.extractKeysObject('FmsWorkRequest', workRequestDataModel);                    workRequestDataModel.WorkProgressId($Code.WorkProgress.WORK_STANDBY);                    BWA.db.FmsWorkRequest.update(keys, {                        WorkProgressId: workRequestDataModel.WorkProgressId()                    }).done(function () {                        handleAfterSave(responseKey);                    });                });            }            function update() {                var keys = BWA.db.extractKeysObject('FmsWorkOrder', workOrderDataModel);                BWA.db.FmsWorkOrder.update(keys, workOrderDataModel.toJS()).done(function () {                    popupVisible(false);                    utils.toast.show($G('successSaveWorkOrderMsg'));                });            }            function handleClose() {                popupVisible(false);            }            function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {            }            function handlePopupShowing() {                $("#gridContainer_WorkOrder").dxDataGrid({                    paging: {                        pageSize: 13,                        enabled: true                    }                });                isNew = (workRequestDataModel.WorkProgressId() === $Code.WorkProgress.WORK_PLAN);                if (isNew) {                    //var userInfo = BWA.UserInfo                    workOrderDataModel.SiteId(workRequestDataModel.SiteId());                    workOrderDataModel.WorkRequestId(workRequestDataModel.WorkRequestId());                    workOrderDataModel.BusinessFieldName(workRequestDataModel.BusinessFieldName());                    workOrderDataModel.BusinessFieldId(workRequestDataModel.BusinessFieldId());                    workOrderDataModel.OrderUserName(workRequestDataModel.RequestUserName());                    workOrderDataModel.OrderUserId(workRequestDataModel.RequestUserId());                    workOrderDataModel.OrderDate(new Date());                    workOrderDataModel.StartWorkDate(workRequestDataModel.StartWorkDate());                    workOrderDataModel.Title(workRequestDataModel.Title());                    //workOrderDataModel.Content(workRequestDataModel.Content());                    workOrderDataModel.Content("");                    facilities(workRequestFacilities());                }                else {                    // 키값이 WorkRequest와 동일하다.                    var keys = BWA.db.extractKeysObject('FmsWorkOrder', workRequestDataModel);                    BWA.db.FmsWorkOrder.byKey(keys).done(function (data) {                        workOrderDataModel.fromJS(data);                        var eq = BWA.DataUtil.constructEqualFilter;                        var and = BWA.DataUtil.andFilter;                        facilityDataSource.filter([                            eq('SiteId', workOrderDataModel.SiteId()),                            and,                            //eq('BusinessFieldId', dataViewModel.BusinessFieldId()),                            //and,                            eq('WorkRequestId', workOrderDataModel.WorkRequestId())                        ]);                        facilityDataSource.load().done(function (dbFacilities) {                            facilities(dbFacilities);                        });                    });                }            }            function handlePopupShown(isEditMode, isNew, dataViewModel) {            }            function closeAfterSave() {                popupVisible(false);                viewModel.popupVisible(false);                viewModel.refreshList();                utils.toast.show($G('successSaveWorkOrderMsg'));            }            // 점검계획 정보가 저장된 후에 호출 된다.             // 등록이면 responseKey가 있고, 수정이면 없다.            function handleAfterSave(responseKey) {                var array = facilities();                if (_.isEmpty(array)) {                    closeAfterSave();                    return;                }                var postData;                var parameters = {                    SiteId: responseKey.SiteId,                    WorkRequestId: responseKey.WorkRequestId                };                postData = _.map(array, function (f) {                    return {                        SiteId: parameters.SiteId,                        WorkRequestId: parameters.WorkRequestId,                        FacilityCode: f.FacilityCode()                    };                });                BWA.api.post('FmsWorkOrderToFacility', postData, parameters).done(function () {                    closeAfterSave();                });            }            workOrderDataModel.BusinessFieldName = ko.observable();            workOrderDataModel.OrderUserName = ko.observable();            //facilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions( facilities, ko.observable(true), facilityGridView);            facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilities, ko.observable(true));            return {                popupOptions: popupOptions,                toolbarItems: toolbarItems,                dataModel: workOrderDataModel,                facilityDataGridOptions: facilityDataGridOptions,                show: function () {                    popupVisible(true);                }            };        }    }});
 |