41099fd2d64475b8e0d6f4ea249d60d3d9079da0.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. 
  2. BemsWebApplication.WorkResult = function(params, viewInfo) {
  3. "use strict";
  4. var facilityFactory = BemsWebApplication.Factory.Facility;
  5. var workResultFactory = BemsWebApplication.Factory.WorkResult;
  6. var workRequestDataModel = $.extend({
  7. 'WorkTypeName': ko.observable(),
  8. 'ChargeCompanyName': ko.observable(),
  9. 'RequesterCompanyName': ko.observable(),
  10. 'BusinessFieldName': ko.observable(),
  11. 'FacilityName': ko.observable(),
  12. 'ProgressName': ko.observable(),
  13. }, new BemsWebApplication.FmsWorkRequestViewModel()),
  14. workRequestDataSource = BWA.DataUtil.createDataSource({
  15. dataSourceOptions: {
  16. store: BemsWebApplication.db.FmsWorkRequest,
  17. select: [
  18. 'SiteId', 'RequestId', 'WorkTypeId', 'BusinessFieldId', 'CheckGroupId', 'ScheduleId',
  19. 'ProgressId', 'RequesterDepartmentId',
  20. 'FacilityCode', 'ChargeCompanyId', 'RequesterUserId', 'RequesterName',
  21. 'RequesterCompanyId', 'RequesterPost', 'RequesterMobileNo', 'IsReceiveSms',
  22. 'IsSendTeamSms', 'Title', 'Content', 'RequestedDate',
  23. 'FmsWorkCodeType/Name', 'CmCompany/Name', 'CmCompany1/Name',
  24. 'CmBusinessField/Name', 'CmFacility/Name', 'FmsWorkCodeProgress/Name'
  25. ],
  26. expand: ['CmBusinessField', 'CmFacility', 'FmsWorkCodeType', 'FmsWorkCodeProgress'],
  27. extendOptions: {
  28. multipleItems: [
  29. { id: 'CompanyId', entries: ['CmCompany', 'CmCompany1'], fields: ['ChargeCompanyId', 'RequesterCompanyId'] }
  30. ],
  31. alterNames: {
  32. 'CmCompany/ChargeCompanyId/Name': 'ChargeCompanyName',
  33. 'CmCompany/RequesterCompanyId/Name': 'RequesterCompanyName',
  34. 'CmBusinessField/Name': 'BusinessFieldName',
  35. 'CmFacility/Name': 'FacilityName',
  36. 'FmsWorkCodeType/Name': 'WorkTypeName',
  37. 'FmsWorkCodeProgress/Name': 'ProgressName'
  38. }
  39. }
  40. }
  41. }),
  42. facilityDataSource = facilityFactory.getDataSourceWithRelation(BemsWebApplication.db.FmsWorkOrderToFacility, {
  43. select: ['ProgressId', 'FmsWorkCodeProgress/Name'],
  44. expand: ['FmsWorkCodeProgress']
  45. });
  46. var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
  47. workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType', true, true),
  48. companyDataSource = BemsWebApplication.db.createDataSource('CmCompany', true, true),
  49. progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress', true, true);
  50. var deferredForSearch = new $.Deferred();
  51. var workTypesForSearch = ko.observableArray(),
  52. businessFieldsForSearch = ko.observableArray(),
  53. companiesForSearch = ko.observableArray(),
  54. progressesForSearch = ko.observableArray(),
  55. targetFacilities = ko.observableArray();
  56. var timer = null,
  57. popupElement = null,
  58. workContentsPopup = null;
  59. //params.shownActionInPopup = function( e ) {
  60. // console.log( $(e.element[0]).html() );
  61. // $( e.element ).on( 'transitioned', function( e ) {
  62. // console.log( e );
  63. // } );
  64. //}
  65. //params.popupPosition = ko.observable( { my: 'center', at: 'center', of: window } );
  66. //params.popupPosition.subscribe( function( value ) {
  67. // console.log( value );
  68. //} );
  69. params.popupPosition = { offset: '-200 0' };
  70. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkOrder', {
  71. dataSourceOptions: workResultFactory.getDataSourceOptionsWithFilter(params.filter || [
  72. ['FmsWorkRequest/FmsWorkCodeProgress/ProgressId', '<', $Code.WorkProgress.WorkConfirm]
  73. ]),
  74. columns: workResultFactory.defaultColumns,
  75. promiseDataInSearchView: deferredForSearch.promise(),
  76. searchViewItems: [
  77. { id: 'FmsWorkRequest/WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch },
  78. { id: 'Title' },
  79. { id: 'OrderedDate', type: 'dateRange', isOnlyDate: true },
  80. { id: 'CmUser/Name' },
  81. { id: 'ChargeCompanyId', ignoreValue: 0, defaultValue: 0, dataSource: companiesForSearch },
  82. { id: 'FmsWorkRequest/CmBusinessField/BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
  83. { id: 'FmsWorkRequest/ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },
  84. ],
  85. handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
  86. dataGrid.clearSelection();
  87. var data = clickRow.data;
  88. var dataModel = viewModel.dataModel;
  89. dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.BusinessFieldName);
  90. dataModel.ChargeCompanyName = $KoSet(dataModel.ChargeCompanyName, data.CompanyName);
  91. dataModel.EmergencyName = $KoSet(dataModel.EmergencyName, data.EmergencyName);
  92. //dataModel.WorkTypeName = $KoSet( dataModel.WorkTypeName, data.FmsWorkCodeType_Name );
  93. //dataModel.ChargeCompanyName = $KoSet( dataModel.ChargeCompanyName, data.CmCompany_ChargeCompanyId_Name );
  94. //dataModel.BusinessFieldName = $KoSet( dataModel.BusinessFieldName, data.CmBusinessField_Name );
  95. //dataModel.FacilityName = $KoSet( dataModel.FacilityName, data.CmFacility_Name );
  96. if (_.isUndefined(params.selectedData) === false) {
  97. params.selectedData(data);
  98. }
  99. workRequestDataSource.filter(
  100. ['SiteId', '=', data.SiteId()],
  101. 'and',
  102. ['RequestId', '=', data.RequestId()]
  103. );
  104. workRequestDataSource.load().done(function(result) {
  105. if (result.length > 0) {
  106. BWA.DataUtil.copyViewModel(result[0], workRequestDataModel);
  107. }
  108. facilityDataSource.filter(
  109. ['SiteId', '=', data.SiteId()],
  110. 'and',
  111. ['OrderId', '=', data.OrderId()]
  112. );
  113. refreshFaciliyList();
  114. }).always(function() {
  115. popupVisible(true);
  116. });
  117. },
  118. handleAfterLoadingModelByKey: function(data, dataViewModel) {
  119. },
  120. handleViewShowing: function(dataModel) {
  121. $.when(
  122. businessFieldDataSource.load(),
  123. workTypeDataSource.load(),
  124. companyDataSource.load(),
  125. progressDataSource.load())
  126. .done(function(businessFieldResult, workTypeResult, companyResult, progressResult) {
  127. businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFieldResult[0]));
  128. workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypeResult[0]));
  129. companiesForSearch($SearchView.createArrayOfSelectBox('CompanyId', companyResult[0]));
  130. progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progressResult[0]));
  131. deferredForSearch.resolve();
  132. });
  133. },
  134. handleViewShown: function() {
  135. },
  136. contentReadyActionInPopup: function(e) {
  137. params.mainPopupElement(e.element.offsetParent());
  138. },
  139. });
  140. function refreshFaciliyList() {
  141. var deferred = new $.Deferred();
  142. facilityDataSource.load().done(function(facilities) {
  143. targetFacilities(facilities);
  144. deferred.resolve(targetFacilities());
  145. });
  146. return deferred.promise();
  147. }
  148. params.mainPopupElement = ko.observable();
  149. viewModel.refreshFaciliyList = refreshFaciliyList;
  150. viewModel.toolbarItems = [
  151. { location: 'before', text: '작업관리' },
  152. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: viewModel.handlePopupButtonClose } }
  153. ];
  154. var tabIndex = ko.observable(0);
  155. viewModel.tabsOptions = {
  156. dataSource: [
  157. { text: '작업요청' },
  158. { text: '작업지시' },
  159. { text: '대상시설' }
  160. ],
  161. selectedIndex: tabIndex
  162. };
  163. workContentsPopup = BemsWebApplication.Factory.WorkResultContentsPopup.create(viewModel, params);
  164. viewModel.multiViewOptions = {
  165. dataSource: [
  166. {
  167. viewModel: viewModel,
  168. dataModel: workRequestDataModel,
  169. template: 'workRequest'
  170. },
  171. {
  172. viewModel: viewModel,
  173. dataModel: viewModel.dataModel,
  174. template: 'workOrder'
  175. },
  176. {
  177. viewModel: viewModel,
  178. dataGridOptions: {
  179. dataSource: targetFacilities,
  180. columns: facilityFactory.getColumns([
  181. //{ dataField: 'ClassName', width: '40%' },
  182. { dataField: 'FmsFacilityCodeClass/Name', width: '10%' },
  183. { dataField: 'FmsFacilityCodeClass1/Name', width: '15%' },
  184. { dataField: 'FmsFacilityCodeClass2/Name', width: '15%' },
  185. { dataField: 'Name', width: '40%' },
  186. { dataField: 'FmsWorkCodeProgress_Name', caption: $G('workProgress'), alignment: 'center', width: '20%' }
  187. ]),
  188. cellPrepared: facilityFactory.cellPrepared,
  189. hoverStateEnabled: true,
  190. selection: { mode: 'single' },
  191. contentReadyAction: function(e) {
  192. workContentsPopup.setFacilityGridViewInstance(e.component);
  193. },
  194. rowClick: function(clickRow) {
  195. workContentsPopup.setSelectedFacility(clickRow.data);
  196. workContentsPopup.visible(false);
  197. workContentsPopup.visible(true);
  198. },
  199. height: 400
  200. },
  201. template: 'targetFacility'
  202. }
  203. ],
  204. swipeEnabled: true,
  205. selectedIndex: tabIndex,
  206. height: '520px'
  207. };
  208. viewModel.workRequestDataModel = workRequestDataModel;
  209. return viewModel;
  210. };