68ce894420f0474002c22b8167e2391f51fff541.svn-base 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. BemsWebApplication.WorkRequest = function(params, viewInfo) {
  2. "use strict";
  3. var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
  4. workTypeDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeType', true, true),
  5. companyDataSource = BemsWebApplication.db.createDataSource('CmCompany', true, true),
  6. progressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress', true, true),
  7. businessFields = ko.observableArray(),
  8. workTypes = ko.observableArray(),
  9. companies = ko.observableArray(),
  10. progresses = ko.observableArray();
  11. var deferredForSearch = new $.Deferred();
  12. var workTypesForSearch = ko.observableArray(),
  13. companiesForSearch = ko.observableArray(),
  14. businessFieldsForSearch = ko.observableArray(),
  15. progressesForSearch = ko.observableArray();
  16. var selectedFacilityData = ko.observable(),
  17. selectedUserData = params.selectedUserData || ko.observable();
  18. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsWorkRequest', {
  19. dataSourceOptions: {
  20. select: ['SiteId', 'RequestId', 'FmsWorkCodeType/Name', 'CmBusinessField/Name', 'CmCompany/Name', 'CmCompany1/Name', 'Title', 'RequesterName', 'RequestedDate', 'FmsWorkCodeProgress/Name', 'CmFacility/Name'],
  21. expand: ['FmsWorkCodeType', 'CmBusinessField', 'FmsWorkCodeProgress', 'CmFacility'],
  22. extendOptions: {
  23. multipleItems: [{ id: 'CompanyId', entries: ['CmCompany', 'CmCompany1'], fields: ['ChargeCompanyId', 'RequesterCompanyId'] }]
  24. }
  25. },
  26. columns: [
  27. { dataField: 'Number', caption: $G('number'), width: '10%', alignment: 'center' },
  28. { dataField: 'FmsWorkCodeType_Name', caption: $G('workTypeName'), width: '15%', alignment: 'center' },
  29. { dataField: 'CmBusinessField_Name', caption: $G('businessFieldName'), width: '12%', alignment: 'center' },
  30. { dataField: 'Title', caption: $G('requestTitle'), width: '25%', alignment: 'center' },
  31. { dataField: 'RequesterName', caption: $G('requesterName'), width: '13%', alignment: 'center' },
  32. { dataField: 'RequestedDate', caption: $G('requestedDate'), width: '13%', alignment: 'center' },
  33. { dataField: 'FmsWorkCodeProgress_Name', caption: $G('workProgressName'), width: '12%', alignment: 'center' }
  34. ],
  35. promiseDataInSearchView: deferredForSearch.promise(),
  36. searchViewItems: [
  37. { id: 'WorkTypeId', ignoreValue: 0, defaultValue: 0, dataSource: workTypesForSearch },
  38. { id: 'RequesterName' },
  39. { id: 'RequesterPost' },
  40. { id: 'Title' },
  41. { id: 'ChargeCompanyId', ignoreValue: 0, defaultValue: 0, dataSource: companiesForSearch },
  42. { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
  43. { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },
  44. { id: 'RequestedDate', type: 'dateRange', isOnlyDate: true}
  45. ],
  46. handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
  47. dataGrid.clearSelection();
  48. var data = clickRow.data;
  49. var dataModel = viewModel.dataModel;
  50. dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.CmBusinessField_Name);
  51. dataModel.WorkTypeName = $KoSet(dataModel.WorkTypeName, data.FmsWorkCodeType_Name);
  52. dataModel.ChargeCompanyName = $KoSet(dataModel.ChargeCompanyName, data.CmCompany_ChargeCompanyId_Name);
  53. dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data.CmBusinessField_Name);
  54. dataModel.FacilityName = $KoSet(dataModel.FacilityName, data.CmFacility_Name);
  55. popupVisible(true);
  56. },
  57. handleAfterLoadingModelByKey: function(data, dataViewModel) {
  58. if (typeof viewInfo.handleAfterLoadingModelByKey === 'function') {
  59. viewInfo.handleAfterLoadingModelByKey(data, dataViewModel);
  60. }
  61. },
  62. beforeInsertingDataViewModel: function(dataModel) {
  63. dataModel.ProgressId($Code.WorkProgress.Request);
  64. dataModel.RequestedDate(moment().toDate());
  65. // hcLee 2015 11 30
  66. return true;
  67. },
  68. handleViewShowing: function(dataModel) {
  69. $.when(
  70. businessFieldDataSource.load(),
  71. workTypeDataSource.load(),
  72. companyDataSource.load(),
  73. progressDataSource.load())
  74. .done(function(businessFieldResult, workTypeResult, companyResult, progressResult) {
  75. businessFields(businessFieldResult[0]);
  76. workTypes(workTypeResult[0]);
  77. companies(companyResult[0]);
  78. progresses(progressResult[0]);
  79. businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', businessFields()));
  80. workTypesForSearch($SearchView.createArrayOfSelectBox('WorkTypeId', workTypes()));
  81. companiesForSearch($SearchView.createArrayOfSelectBox('CompanyId', companies()));
  82. progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', progresses()));
  83. deferredForSearch.resolve();
  84. });
  85. dataModel.FacilityName = $KoSet(dataModel.FacilityName);
  86. if (typeof viewInfo.handleViewShowing === 'function') {
  87. viewInfo.handleViewShowing();
  88. }
  89. },
  90. handleViewShown: function() {
  91. }
  92. });
  93. viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityData);
  94. viewModel.handleButtonSearchFacility = function() {
  95. viewModel.facilitySearchPopup.show();
  96. };
  97. viewModel.userSearchPopup = $UserSearchPopup(viewModel, params.selectedUserData || selectedUserData);
  98. viewModel.handleButtonSearchUser = function() {
  99. viewModel.userSearchPopup.show();
  100. };
  101. selectedFacilityData.subscribe(function(value) {
  102. viewModel.dataModel.FacilityCode(value.FacilityCode);
  103. viewModel.dataModel.FacilityName(value.Name);
  104. });
  105. if (selectedUserData) {
  106. selectedUserData.subscribe(function(value) {
  107. viewModel.dataModel.RequesterUserId(value.UserId);
  108. viewModel.dataModel.RequesterName(value.Name);
  109. viewModel.dataModel.RequesterCompanyId(value.CompanyId);
  110. viewModel.dataModel.RequesterDepartmentId(value.DepartmentId);
  111. viewModel.dataModel.RequesterPost('{0} / {1}'.formati(value.CompanyName, value.DepartmentName));
  112. });
  113. }
  114. viewModel.businessFields = businessFields;
  115. viewModel.workTypes = workTypes;
  116. viewModel.companies = companies;
  117. viewModel.progresses = progresses;
  118. var tabIndex = ko.observable(0);
  119. // viewModel.currentTabIndex = currentTabIndex;
  120. viewModel.tabsOptionsInWorkRequestPopup = {
  121. dataSource: [
  122. { text: '작업요청' },
  123. { text: '작업지시' },
  124. { text: '대상시설' }
  125. ],
  126. selectedIndex: tabIndex,
  127. visible: params.workOrderVisible || false
  128. };
  129. viewModel.multiViewOptionsInWorkRequestPopup = {
  130. dataSource: [
  131. {
  132. viewModel: viewModel,
  133. dataModel: viewModel.dataModel,
  134. template: 'workRequest'
  135. },
  136. {
  137. viewModel: viewModel,
  138. dataModel: params.workOrderDataModel || {},
  139. template: 'workOrder'
  140. },
  141. {
  142. viewModel: viewModel,
  143. dataGridOptions: params.facilityDataGridOptions || {},
  144. template: 'targetFacility'
  145. }
  146. ],
  147. swipeEnabled: true,
  148. selectedIndex: tabIndex,
  149. height: '600px'
  150. };
  151. viewModel.workOrderVisible = params.workOrderVisible || false;
  152. return viewModel;
  153. };