| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | BemsWebApplication.WorkOrder = function( params, viewInfo ) {    "use strict";    var workOrderDataModel = new BemsWebApplication.FmsWorkOrderViewModel(),        workOrderDataModelForView = $.extend( {            'CmCompany_Name': ko.observable(),            'FmsWorkCodeEmergency_Name': ko.observable(),            'CmBusinessField_Name': ko.observable(),            'CmUser_OrderUserId_Name': ko.observable()        } , workOrderDataModel );        var selectedUserData = params.selectedUserData = ko.observable();    var targetFacilities = ko.observableArray();    var facilityDataSource = BemsWebApplication.Factory.Facility.getDataSourceWithRelation( BemsWebApplication.db.FmsWorkOrderToFacility );    var emergencyCodeDataSource = BemsWebApplication.db.createDataSource( 'FmsWorkCodeEmergency', true, true ),        workOrderDataSource = $DataSource( {            dataSourceOptions: {                store: BemsWebApplication.db.FmsWorkOrder,                select: [ 'SiteId', 'OrderId', 'RequestId', 'EmergencyId', 'ChargeCompanyId', 'BusinessFieldId',                           'OrderedDate', 'Title', 'Contents', 'TeamId', 'WorkerPhoneNo', 'WorkerUserName', 'IsSms',                          'CmCompany/Name',                          'FmsWorkCodeEmergency/Name', 'CmBusinessField/Name', 'CmUser/Name', 'CmUser1/Name' ],                expand: [ 'FmsWorkCodeEmergency', 'CmBusinessField', 'CmCompany' ],                extendOptions: {                    multipleItems: [ { id: 'UserId', entries: [ 'CmUser', 'CmUser1' ], fields: [ 'OrderUserId', 'WorkerUserId' ] } ]                }            }        } ),        //facilityDataSource = $DataSource( {        //    dataSourceOptions: {        //        store: BemsWebApplication.db.FmsWorkResult,        //        select: [ 'SiteId', 'OrderId', 'RequestId', 'EmergencyId', 'OrderUserId', 'ChargeCompanyId', 'BusinessFieldId',         //                  'OrderedDate', 'Title', 'Contents', 'TeamId', 'WorkerPhoneNo', 'WorkerUserId', 'WorkerUserName', 'IsSms',        //                  'CmCompany/Name',        //                  'FmsWorkCodeEmergency/Name', 'CmBusinessField/Name', 'CmUser/UserId', 'CmUser1/UserId', 'CmUser/Name', 'CmUser1/Name' ],        //        expand: [ 'FmsWorkCodeEmergency', 'CmBusinessField', 'CmCompany' ],        //        multiple: [ { id: 'UserId', entries: [ 'CmUser', 'CmUser1'], fields: [ 'OrderUserId', 'WorkerUserId' ] } ]        //    }        //} ),        emergencyCodes = ko.observableArray();    var orderButtonsVisibleInDetailPopup = ko.observable(),        editOrderButtonsVisibleInDetailPopup = ko.observable();    var popupVisibleInTransfer = ko.observable( false ),        popupVisibleInWorkOrder = ko.observable( false );    viewInfo.handleAfterLoadingModelByKey = function( data, dataModel ) {        orderButtonsVisibleInDetailPopup( (dataModel.ProgressId() === $Code.WorkProgress.Request) ||                                           (dataModel.ProgressId() === $Code.WorkProgress.Transfer) );        var workOrderProgress = dataModel.ProgressId() === $Code.WorkProgress.WorkOrder;        editOrderButtonsVisibleInDetailPopup( workOrderProgress );        if( workOrderProgress ) {            workOrderDataSource.filter(                [ 'SiteId', '=', dataModel.SiteId() ],                'and',                [ 'RequestId', '=', dataModel.RequestId() ]            );            workOrderDataModel.OrderId( null );            workOrderDataSource.load().done( function( result ) {                if( result.length > 0 ) {                    BWA.DataUtil.copyViewModel( result[0], workOrderDataModelForView );                    BWA.DataUtil.copyViewModel( workOrderDataModelForView, workOrderDataModel );//                    workOrderDataModel.fromJS( result[0].toJS() );                }                facilityDataSource.filter(                    [ 'SiteId', '=', workOrderDataModel.SiteId() ],                    'and',                    [ 'OrderId', '=', workOrderDataModel.OrderId() ]                );                facilityDataSource.load().done( function( facilities ) {                    targetFacilities( facilities );                } );            } );        }        else {            workOrderDataModel.WorkerUserName( null );            workOrderDataModel.WorkerUserId( null );            workOrderDataModel.WorkerPhoneNo( null );            workOrderDataModel.ChargeCompanyId( dataModel.ChargeCompanyId() );            workOrderDataModel.BusinessFieldId( dataModel.BusinessFieldId() );            workOrderDataModel.Title( dataModel.Title() );            workOrderDataModel.Contents( dataModel.Content() );            var db = BemsWebApplication.db;            var keys = db.extractKeysObject( 'CmFacility', dataModel );            db.CmFacility.byKey( keys ).done( function( f ) {                targetFacilities.removeAll();                var v = new BemsWebApplication.CmFacilityViewModel();                v.fromJS( f );                targetFacilities.push( v );            } );        }    };    viewInfo.handleViewShowing = function() {        emergencyCodeDataSource.load().done( function( result ) {            emergencyCodes( result );            if( result.length > 0 ) {                workOrderDataModel.EmergencyId( result[0].EmergencyId() );                        }         });    };    params.workOrderVisible = ko.observable( false );    params.workOrderDataModel = workOrderDataModelForView;    workOrderDataModel.OrderId.subscribe( function( value ) {        params.workOrderVisible( value !== null );    } );    var facilityFactory = BemsWebApplication.Factory.Facility;    var dataGridOptions = {        dataSource: targetFacilities,        columns: facilityFactory.getColumns( [             { dataField: 'ClassName', width: '40%' },            { dataField: 'Name', width: '40%' },            { dataField: 'FmsWorkCodeProgress_Name', width: '20%' }         ] ),        cellPrepared: facilityFactory.cellPrepared,        height: 400    };    params.facilityDataGridOptions = dataGridOptions;    var viewModel = BemsWebApplication.WorkRequest( params, viewInfo );    viewModel.toolbarItems = [        { location: 'before', text: '작업지시' },        { location: 'after', widget: 'button', options: { text: $G('workOrder'), icon: 'save' , visible: orderButtonsVisibleInDetailPopup,             clickAction: function()  { popupVisibleInWorkOrder( true ); }        } },        { location: 'after', widget: 'button', options: { text: $G('cancelWorkOrder'), icon: 'remove' , visible: editOrderButtonsVisibleInDetailPopup,           clickAction: handleCancelWorkOrder        } },        { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'save' , visible: editOrderButtonsVisibleInDetailPopup,           clickAction: function()  { popupVisibleInWorkOrder( true ); }        } },        { location: 'after', widget: 'button', options: { text: $G('workTransfer'), icon: 'save', visible: orderButtonsVisibleInDetailPopup,             clickAction: function()  { popupVisibleInTransfer( true ); }        } },        { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: viewModel.handlePopupButtonClose } }    ];            selectedUserData.subscribe( function( value ) {        workOrderDataModel.WorkerUserId( value.UserId );        workOrderDataModel.WorkerUserName( value.Name );        workOrderDataModel.WorkerPhoneNo( value.MobilePhoneNo );    } );                function handleCancelWorkOrder() {        viewModel.dataModel.ProgressId( $Code.WorkProgress.Request );        var removePromise = BemsWebApplication.db.removeFromViewModel( 'FmsWorkOrder', workOrderDataModel );        workOrderDataModel.OrderId( null );        $.when( viewModel.update(), removePromise ).done( function() {            viewModel.popupVisible( false );            utils.toast.show( '작업지시가 취소 되었습니다.' );        } );            }    function handleTransferPopupButtonSave() {        viewModel.dataModel.ProgressId( $Code.WorkProgress.Transfer );        viewModel.update();        popupVisibleInTransfer( false );        viewModel.popupVisible( false );    }    viewModel.toolbarItemsInTransferPopup = [        { location: 'before', text: $G('workTransfer') },        { location: 'after', widget: 'button', options: { text: $G('setup'), icon: 'save' , clickAction: handleTransferPopupButtonSave } },        { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: function() { popupVisibleInTransfer( false ); } } }    ];            viewModel.popupOptionsInTransfer = {        width: '600px',        height: 'auto',        visible: popupVisibleInTransfer,        closeOnOutsideClick: false,        animation: utils.popup.createAnimation()     };    viewModel.emergencyCodes = emergencyCodes;    BemsWebApplication.Factory.WorkOrderPopup.create( viewModel,                                                       targetFacilities,                                                       workOrderDataModel,                                                       popupVisibleInWorkOrder,                                                       editOrderButtonsVisibleInDetailPopup,                                                       dataGridOptions );    return viewModel;};
 |