2bdd4ea748c7a11684c322c8d13d9047608818fa.svn-base 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. $(function () {
  2. 'use strict';
  3. BemsWebApplication.Popup.WorkExecution = {
  4. create: function (viewInfo, viewModel) {
  5. var facilities = ko.observableArray(),
  6. facilitiesInView = ko.observableArray(),
  7. businessFields = ko.observableArray();
  8. var facilitySearchPopup = null,
  9. facilityFactory = BWA.Factory.Facility,
  10. facilityGridView = ko.observable(undefined),
  11. facilityDataGridOptions,
  12. modifiableFacilityDataGridOptions = undefined;
  13. var facilityDataSource = facilityFactory.getBasicDataSourceRef({
  14. dbModeIId: 'FmsWorkOrderToFacility',
  15. primaryKeyDataField: 'WorkRequestId'
  16. });
  17. function isValidateWithFunction(errorMessage) {
  18. if (_.isEmpty(facilities())) {
  19. errorMessage.message = '점검을 위한 시설이 없습니다.';
  20. return false;
  21. }
  22. return true;
  23. }
  24. function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {
  25. var workProgressId;
  26. if (isNewInPopup()) {
  27. workProgressId = $Code.WorkProgress.WORK_PLAN;
  28. }
  29. else {
  30. workProgressId = clickRowData['FmsWorkRequest/WorkProgressId'](); // clickRowData.WorkProgressId();
  31. dataViewModel.WorkProgressId = ko.observable();
  32. dataViewModel.WorkProgressId(workProgressId);
  33. }
  34. }
  35. function handlePopupShowing(isNewInPopup, dataModel, selectedData) {
  36. //var userInfo = BWA.UserInfo;
  37. //if (isNewInPopup()) {
  38. // dataModel.BusinessFieldName(userInfo.BusinessFieldName());
  39. // dataModel.BusinessFieldId(userInfo.BusinessFieldId());
  40. // dataModel.RequestUserName(userInfo.Name());
  41. // dataModel.RequestUserId(userInfo.UserId());
  42. // dataModel.WorkTypeId(workTypeId);
  43. // BWA.db.FmsWorkCodeType.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeType')).done(function (workType) {
  44. // dataModel.WorkTypeName(workType.Name);
  45. // });
  46. // var now = moment();
  47. // dataModel.RequestDate(now.toDate());
  48. // dataModel.StartWorkDate(BWA.DataUtil.getDateFromDateTime(now));
  49. // dataModel.WorkProgressId($Code.WorkProgress.WORK_PLAN);
  50. // BWA.db.FmsWorkCodeProgress.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeProgress')).done(function (workProgress) {
  51. // dataModel.WorkProgressName(workProgress.Name);
  52. // });
  53. //}
  54. $("#gridContainer2").dxDataGrid({
  55. paging: {
  56. pageSize: 14,
  57. enabled: true
  58. }
  59. });
  60. $("#gridContainer3").dxDataGrid({
  61. paging: {
  62. pageSize: 14,
  63. enabled: true
  64. }
  65. });
  66. }
  67. function handlePopupShown(isEditMode, isNew, dataViewModel) {
  68. }
  69. // 점검계획 정보가 저장된 후에 호출 된다.
  70. // 등록이면 responseKey가 있고, 수정이면 없다.
  71. function handleAfterSave(responseKey) {
  72. var array = facilities();
  73. if (_.isEmpty(array)) {
  74. return;
  75. }
  76. var siteId,
  77. workRequestId;//, businessFieldId;
  78. if (_.isUndefined(responseKey)) {
  79. var dataModel = viewModel.dataModel;
  80. siteId = dataModel.SiteId();
  81. //businessFieldId = dataModel.BusinessFieldId();
  82. workRequestId = dataModel.WorkRequestId();
  83. }
  84. else {
  85. siteId = responseKey.SiteId;
  86. //businessFieldId = responseKey.BusinessFieldId;
  87. workRequestId = responseKey.WorkRequestId;
  88. }
  89. var postData;
  90. var parameters = {
  91. SiteId: siteId,
  92. //BusinessFieldId: businessFieldId,
  93. WorkRequestId: workRequestId
  94. };
  95. postData = _.map(array, function (f) {
  96. return {
  97. SiteId: siteId,
  98. //BusinessFieldId: businessFieldId,
  99. WorkRequestId: workRequestId,
  100. FacilityCode: f.FacilityCode()
  101. };
  102. });
  103. BWA.api.post('FmsWorkOrderToFacility', postData, parameters);
  104. }
  105. function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) {
  106. // 작업지시 세부 내용은 수정/삭제 할 수 없음
  107. viewModel.visibleEditButton(false);
  108. viewModel.visibleDeleteButton(false);
  109. var eq = BWA.DataUtil.constructEqualFilter;
  110. var and = BWA.DataUtil.andFilter;
  111. facilityDataSource.filter([
  112. eq('SiteId', dataViewModel.SiteId()),
  113. and,
  114. eq('WorkRequestId', dataViewModel.WorkRequestId())
  115. ]);
  116. facilityDataSource.load().done(function (dbFacilities) {
  117. facilitiesInView(dbFacilities);
  118. });
  119. }
  120. function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
  121. dataViewModel.BusinessFieldName(rowData['FmsWorkRequest/CmBusinessField/Name']());
  122. dataViewModel.WorkTypeName(rowData['FmsWorkRequest/FmsWorkCodeType/Name']());
  123. dataViewModel.OrderUserName(rowData['CmUser/Name']());
  124. dataViewModel.WorkProgressName(rowData['FmsWorkRequest/FmsWorkCodeProgress/Name']());
  125. dataViewModel.Desc($KoValue(rowData['FmsWorkRequest/Content']));
  126. dataViewModel.workDueDate($KoValue(rowData['FmsWorkRequest/StartWorkDate']));
  127. }
  128. viewModel.popupVisible.subscribe(function (visible) {
  129. if (!visible) {
  130. facilitiesInView([]);
  131. }
  132. });
  133. viewModel.isEditModeInPopup.subscribe(function (isEditMode) {
  134. if (isEditMode) {
  135. facilities(facilitiesInView.slice(0));
  136. }
  137. });
  138. viewModel.dataModel.WorkTypeName = ko.observable();
  139. viewModel.dataModel.BusinessFieldName = ko.observable();
  140. viewModel.dataModel.OrderUserName = ko.observable();
  141. viewModel.dataModel.RejectUserName = ko.observable();
  142. viewModel.dataModel.WorkProgressName = ko.observable();
  143. viewModel.dataModel.Desc = ko.observable();
  144. viewModel.dataModel.workDueDate = ko.observable();
  145. facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilitiesInView, viewModel.viewModeInPopup);
  146. modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions(facilities, viewModel.isEditModeInPopup, facilityGridView);
  147. viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, {
  148. isMultipleSelect: true,
  149. onSelectedFacilities: function (selectedFacilities) {
  150. var workRequestId = viewModel.dataModel.WorkRequestId();
  151. _.each(selectedFacilities, function (sf) {
  152. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  153. var found = _.some(facilities(), function (f) {
  154. return f.FacilityCode() === sf.FacilityCode();
  155. });
  156. if (found) return;
  157. facilities.push({
  158. SiteId: sf.SiteId,
  159. WorkRequestId: ko.observable(workRequestId),
  160. FacilityCode: sf.FacilityCode,
  161. Name: sf.Name,
  162. });
  163. });
  164. facilityGridView().refresh();
  165. }
  166. });
  167. return {
  168. facilitySearchPopup: facilitySearchPopup,
  169. facilities: facilitiesInView,
  170. businessFields: businessFields,
  171. isValidateWithFunction: isValidateWithFunction,
  172. facilityDataGridOptions: facilityDataGridOptions,
  173. modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions,
  174. handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
  175. handleAfterSave: handleAfterSave,
  176. handlePopupShowing: handlePopupShowing,
  177. handlePopupShown: handlePopupShown,
  178. handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
  179. handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities),
  180. handleBeforePopupShowingPromise: handleBeforePopupShowingPromise
  181. };
  182. }
  183. }
  184. });