e570275e1434dc2dacd13f7379aa899489799b66.svn-base 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. BemsWebApplication.WorkOrder = function( params, viewInfo ) {
  2. "use strict";
  3. var workOrderDataModel = new BemsWebApplication.FmsWorkOrderViewModel(),
  4. workOrderDataModelForView = $.extend( {
  5. 'CmCompany_Name': ko.observable(),
  6. 'FmsWorkCodeEmergency_Name': ko.observable(),
  7. 'CmBusinessField_Name': ko.observable(),
  8. 'CmUser_OrderUserId_Name': ko.observable()
  9. } , workOrderDataModel );
  10. var selectedUserData = params.selectedUserData = ko.observable();
  11. var targetFacilities = ko.observableArray();
  12. var facilityDataSource = BemsWebApplication.Factory.Facility.getDataSourceWithRelation( BemsWebApplication.db.FmsWorkOrderToFacility );
  13. var emergencyCodeDataSource = BemsWebApplication.db.createDataSource( 'FmsWorkCodeEmergency', true, true ),
  14. workOrderDataSource = $DataSource( {
  15. dataSourceOptions: {
  16. store: BemsWebApplication.db.FmsWorkOrder,
  17. select: [ 'SiteId', 'OrderId', 'RequestId', 'EmergencyId', 'ChargeCompanyId', 'BusinessFieldId',
  18. 'OrderedDate', 'Title', 'Contents', 'TeamId', 'WorkerPhoneNo', 'WorkerUserName', 'IsSms',
  19. 'CmCompany/Name',
  20. 'FmsWorkCodeEmergency/Name', 'CmBusinessField/Name', 'CmUser/Name', 'CmUser1/Name' ],
  21. expand: [ 'FmsWorkCodeEmergency', 'CmBusinessField', 'CmCompany' ],
  22. extendOptions: {
  23. multipleItems: [ { id: 'UserId', entries: [ 'CmUser', 'CmUser1' ], fields: [ 'OrderUserId', 'WorkerUserId' ] } ]
  24. }
  25. }
  26. } ),
  27. //facilityDataSource = $DataSource( {
  28. // dataSourceOptions: {
  29. // store: BemsWebApplication.db.FmsWorkResult,
  30. // select: [ 'SiteId', 'OrderId', 'RequestId', 'EmergencyId', 'OrderUserId', 'ChargeCompanyId', 'BusinessFieldId',
  31. // 'OrderedDate', 'Title', 'Contents', 'TeamId', 'WorkerPhoneNo', 'WorkerUserId', 'WorkerUserName', 'IsSms',
  32. // 'CmCompany/Name',
  33. // 'FmsWorkCodeEmergency/Name', 'CmBusinessField/Name', 'CmUser/UserId', 'CmUser1/UserId', 'CmUser/Name', 'CmUser1/Name' ],
  34. // expand: [ 'FmsWorkCodeEmergency', 'CmBusinessField', 'CmCompany' ],
  35. // multiple: [ { id: 'UserId', entries: [ 'CmUser', 'CmUser1'], fields: [ 'OrderUserId', 'WorkerUserId' ] } ]
  36. // }
  37. //} ),
  38. emergencyCodes = ko.observableArray();
  39. var orderButtonsVisibleInDetailPopup = ko.observable(),
  40. editOrderButtonsVisibleInDetailPopup = ko.observable();
  41. var popupVisibleInTransfer = ko.observable( false ),
  42. popupVisibleInWorkOrder = ko.observable( false );
  43. viewInfo.handleAfterLoadingModelByKey = function( data, dataModel ) {
  44. orderButtonsVisibleInDetailPopup( (dataModel.ProgressId() === $Code.WorkProgress.Request) ||
  45. (dataModel.ProgressId() === $Code.WorkProgress.Transfer) );
  46. var workOrderProgress = dataModel.ProgressId() === $Code.WorkProgress.WorkOrder;
  47. editOrderButtonsVisibleInDetailPopup( workOrderProgress );
  48. if( workOrderProgress ) {
  49. workOrderDataSource.filter(
  50. [ 'SiteId', '=', dataModel.SiteId() ],
  51. 'and',
  52. [ 'RequestId', '=', dataModel.RequestId() ]
  53. );
  54. workOrderDataModel.OrderId( null );
  55. workOrderDataSource.load().done( function( result ) {
  56. if( result.length > 0 ) {
  57. BWA.DataUtil.copyViewModel( result[0], workOrderDataModelForView );
  58. BWA.DataUtil.copyViewModel( workOrderDataModelForView, workOrderDataModel );
  59. // workOrderDataModel.fromJS( result[0].toJS() );
  60. }
  61. facilityDataSource.filter(
  62. [ 'SiteId', '=', workOrderDataModel.SiteId() ],
  63. 'and',
  64. [ 'OrderId', '=', workOrderDataModel.OrderId() ]
  65. );
  66. facilityDataSource.load().done( function( facilities ) {
  67. targetFacilities( facilities );
  68. } );
  69. } );
  70. }
  71. else {
  72. workOrderDataModel.WorkerUserName( null );
  73. workOrderDataModel.WorkerUserId( null );
  74. workOrderDataModel.WorkerPhoneNo( null );
  75. workOrderDataModel.ChargeCompanyId( dataModel.ChargeCompanyId() );
  76. workOrderDataModel.BusinessFieldId( dataModel.BusinessFieldId() );
  77. workOrderDataModel.Title( dataModel.Title() );
  78. workOrderDataModel.Contents( dataModel.Content() );
  79. var db = BemsWebApplication.db;
  80. var keys = db.extractKeysObject( 'CmFacility', dataModel );
  81. db.CmFacility.byKey( keys ).done( function( f ) {
  82. targetFacilities.removeAll();
  83. var v = new BemsWebApplication.CmFacilityViewModel();
  84. v.fromJS( f );
  85. targetFacilities.push( v );
  86. } );
  87. }
  88. };
  89. viewInfo.handleViewShowing = function() {
  90. emergencyCodeDataSource.load().done( function( result ) {
  91. emergencyCodes( result );
  92. if( result.length > 0 ) {
  93. workOrderDataModel.EmergencyId( result[0].EmergencyId() );
  94. }
  95. });
  96. };
  97. params.workOrderVisible = ko.observable( false );
  98. params.workOrderDataModel = workOrderDataModelForView;
  99. workOrderDataModel.OrderId.subscribe( function( value ) {
  100. params.workOrderVisible( value !== null );
  101. } );
  102. var facilityFactory = BemsWebApplication.Factory.Facility;
  103. var dataGridOptions = {
  104. dataSource: targetFacilities,
  105. columns: facilityFactory.getColumns( [
  106. { dataField: 'ClassName', width: '40%' },
  107. { dataField: 'Name', width: '40%' },
  108. { dataField: 'FmsWorkCodeProgress_Name', width: '20%' }
  109. ] ),
  110. cellPrepared: facilityFactory.cellPrepared,
  111. height: 400
  112. };
  113. params.facilityDataGridOptions = dataGridOptions;
  114. var viewModel = BemsWebApplication.WorkRequest( params, viewInfo );
  115. viewModel.toolbarItems = [
  116. { location: 'before', text: '작업지시' },
  117. { location: 'after', widget: 'button', options: { text: $G('workOrder'), icon: 'save' , visible: orderButtonsVisibleInDetailPopup,
  118. clickAction: function() { popupVisibleInWorkOrder( true ); }
  119. } },
  120. { location: 'after', widget: 'button', options: { text: $G('cancelWorkOrder'), icon: 'remove' , visible: editOrderButtonsVisibleInDetailPopup,
  121. clickAction: handleCancelWorkOrder
  122. } },
  123. { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'save' , visible: editOrderButtonsVisibleInDetailPopup,
  124. clickAction: function() { popupVisibleInWorkOrder( true ); }
  125. } },
  126. { location: 'after', widget: 'button', options: { text: $G('workTransfer'), icon: 'save', visible: orderButtonsVisibleInDetailPopup,
  127. clickAction: function() { popupVisibleInTransfer( true ); }
  128. } },
  129. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: viewModel.handlePopupButtonClose } }
  130. ];
  131. selectedUserData.subscribe( function( value ) {
  132. workOrderDataModel.WorkerUserId( value.UserId );
  133. workOrderDataModel.WorkerUserName( value.Name );
  134. workOrderDataModel.WorkerPhoneNo( value.MobilePhoneNo );
  135. } );
  136. function handleCancelWorkOrder() {
  137. viewModel.dataModel.ProgressId( $Code.WorkProgress.Request );
  138. var removePromise = BemsWebApplication.db.removeFromViewModel( 'FmsWorkOrder', workOrderDataModel );
  139. workOrderDataModel.OrderId( null );
  140. $.when( viewModel.update(), removePromise ).done( function() {
  141. viewModel.popupVisible( false );
  142. utils.toast.show( '작업지시가 취소 되었습니다.' );
  143. } );
  144. }
  145. function handleTransferPopupButtonSave() {
  146. viewModel.dataModel.ProgressId( $Code.WorkProgress.Transfer );
  147. viewModel.update();
  148. popupVisibleInTransfer( false );
  149. viewModel.popupVisible( false );
  150. }
  151. viewModel.toolbarItemsInTransferPopup = [
  152. { location: 'before', text: $G('workTransfer') },
  153. { location: 'after', widget: 'button', options: { text: $G('setup'), icon: 'save' , clickAction: handleTransferPopupButtonSave } },
  154. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: function() { popupVisibleInTransfer( false ); } } }
  155. ];
  156. viewModel.popupOptionsInTransfer = {
  157. width: '600px',
  158. height: 'auto',
  159. visible: popupVisibleInTransfer,
  160. closeOnOutsideClick: false,
  161. animation: utils.popup.createAnimation()
  162. };
  163. viewModel.emergencyCodes = emergencyCodes;
  164. BemsWebApplication.Factory.WorkOrderPopup.create( viewModel,
  165. targetFacilities,
  166. workOrderDataModel,
  167. popupVisibleInWorkOrder,
  168. editOrderButtonsVisibleInDetailPopup,
  169. dataGridOptions );
  170. return viewModel;
  171. };