9a554b37ff766dfa79180489bb00a3be1288506c.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. $(function () {
  2. 'use strict';
  3. BemsWebApplication.Popup.RegularCheckSchedule = {
  4. create: function (viewInfo, viewModel, legalCheckOptions, anyCheckOptions) {
  5. var facilities = ko.observableArray(),
  6. facilitiesInView = ko.observableArray(),
  7. businessFields = ko.observableArray(),
  8. viewModeInPopup = ko.observable(true),
  9. isEditModeInPopup = ko.observable(false);
  10. var facilitySearchPopup = null,
  11. facilityFactory = BWA.Factory.Facility,
  12. purchaseProgressCode = BWA.Code.PurchaseProgress,
  13. facilityGridView = ko.observable(),
  14. facilityDataGridOptions,
  15. modifiableFacilityDataGridOptions = undefined;
  16. var facilityDataSource = facilityFactory.getBasicDataSourceRef({
  17. dbModeIId: 'FmsWorkScheduleToFacility',
  18. primaryKeyDataField: 'WorkScheduleId'
  19. });
  20. function isValidateWithFunction(errorMessage) {
  21. if (_.isEmpty(facilities())) {
  22. errorMessage.message = '점검 계획을 위한 시설이 없습니다.';
  23. return false;
  24. }
  25. return true;
  26. }
  27. function handlePopupShowing(isNewInPopup, dataModel) {
  28. $("#gridContainer2").dxDataGrid({
  29. paging: {
  30. pageSize: 8,
  31. enabled: true
  32. }
  33. });
  34. $("#gridContainer3").dxDataGrid({
  35. paging: {
  36. pageSize: 8,
  37. enabled: true
  38. }
  39. });
  40. var userInfo = BWA.UserInfo;
  41. if (isNewInPopup()) {
  42. //if (userInfo.isDependBusinessField(viewInfo.viewName)) {
  43. // BWA.db.CmBusinessField.byKey({
  44. // SiteId: userInfo.SiteId(),
  45. // BusinessFieldId: userInfo.BusinessFieldId()
  46. // }).done(function(businessField) {
  47. // dataModel.BusinessFieldName(businessField.Name);
  48. // });
  49. //}
  50. dataModel.UpdateUserId(userInfo.UserId());
  51. dataModel.UpdateUserName(userInfo.Name());
  52. dataModel.BusinessFieldId(userInfo.BusinessFieldId());
  53. dataModel.BusinessFieldName(userInfo.BusinessFieldName());
  54. //dataModel.WorkDueDate(BWA.DataUtil.getDateFromDateTime(moment().add(1,'d')));
  55. dataModel.WorkDueDate(BWA.DataUtil.getDateFromDateTime(moment()));
  56. }
  57. }
  58. // 점검계획 정보가 저장된 후에 호출 된다.
  59. // 등록이면 responseKey가 있고, 수정이면 없다.
  60. function handleAfterSave(responseKey) {
  61. var array = facilities();
  62. // JD : Facility 가 없는 경우도 있음
  63. //if (_.isEmpty(array)) {
  64. // return;
  65. //}
  66. var siteId, workScheduleId;//, businessFieldId;
  67. if (_.isUndefined(responseKey)) {
  68. var dataModel = viewModel.dataModel;
  69. siteId = dataModel.SiteId();
  70. //businessFieldId = dataModel.BusinessFieldId();
  71. workScheduleId = dataModel.WorkScheduleId();
  72. }
  73. else {
  74. siteId = responseKey.SiteId;
  75. //businessFieldId = responseKey.BusinessFieldId;
  76. workScheduleId = responseKey.WorkScheduleId;
  77. }
  78. var postData;
  79. var parameters = {
  80. SiteId: siteId,
  81. //BusinessFieldId: businessFieldId,
  82. WorkScheduleId: workScheduleId
  83. };
  84. postData = _.map(array, function (f) {
  85. return {
  86. SiteId: siteId,
  87. //BusinessFieldId: businessFieldId,
  88. WorkScheduleId: workScheduleId,
  89. FacilityCode: f.FacilityCode()
  90. };
  91. });
  92. BWA.api.post('FmsWorkScheduleToFacility/Insert', postData, parameters);
  93. }
  94. function handleAfterLoadingModelByKey(data, dataViewModel) {
  95. var eq = BWA.DataUtil.constructEqualFilter;
  96. var and = BWA.DataUtil.andFilter;
  97. facilityDataSource.filter([
  98. eq('SiteId', dataViewModel.SiteId()),
  99. and,
  100. //eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
  101. //and,
  102. eq('WorkScheduleId', dataViewModel.WorkScheduleId())
  103. ]);
  104. facilityDataSource.load().done(function (dbFacilities) {
  105. facilitiesInView(dbFacilities);
  106. });
  107. }
  108. function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
  109. dataViewModel.CycleUnitName(rowData['FmsWorkCodeCycleUnit/Name']());
  110. dataViewModel.HolidayWorkTypeName(rowData['FmsWorkCodeHolidayWorkType/Name']());
  111. dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']());
  112. dataViewModel.UpdateUserName(rowData['CmUser/Name']());
  113. if (!_.isUndefined(legalCheckOptions)) {
  114. if (_.isUndefined(rowData['CmPartner/Name']))
  115. //viewModel.dataModel.InspectionAgencyName("");
  116. viewModel.dataModel.InspectionAgencyName(null);
  117. else
  118. viewModel.dataModel.InspectionAgencyName(rowData['CmPartner/Name']());
  119. }
  120. if (!_.isUndefined(anyCheckOptions)) {
  121. if (_.isUndefined(rowData['CmPartner/Name']))
  122. //viewModel.dataModel.InspectionAgencyName("");
  123. viewModel.dataModel.InspectionAgencyName(null);
  124. else
  125. viewModel.dataModel.InspectionAgencyName(rowData['CmPartner/Name']());
  126. }
  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. if (!_.isUndefined(legalCheckOptions)) {
  139. viewModel.dataModel.InspectionAgencyName = ko.observable();
  140. }
  141. if (!_.isUndefined(anyCheckOptions)) {
  142. viewModel.dataModel.InspectionAgencyName = ko.observable();
  143. }
  144. viewModel.dataModel.CycleUnitName = ko.observable();
  145. viewModel.dataModel.HolidayWorkTypeName = ko.observable();
  146. viewModel.dataModel.BusinessFieldName = ko.observable();
  147. viewModel.dataModel.UpdateUserName = ko.observable();
  148. facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilitiesInView, viewModel.viewModeInPopup);
  149. modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions(facilities, viewModel.isEditModeInPopup, facilityGridView);
  150. viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, {
  151. isMultipleSelect: true,
  152. onSelectedFacilities: function (selectedFacilities) {
  153. var workScheduleId = viewModel.dataModel.WorkScheduleId();
  154. _.each(selectedFacilities, function (sf) {
  155. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  156. // JD : 팝업에서 전체선택시 추가로 하면 오류 발생함. 이에 대한 회피 코드로 try-catch
  157. // JD : 근본적인 원인은 시간 관계상 차후로 넘김
  158. var found = _.some(facilities(), function (f) {
  159. try {
  160. return f.FacilityCode() === sf.FacilityCode();
  161. } catch (e) {
  162. return f.FacilityCode() === sf.FacilityCode;
  163. }
  164. });
  165. if (found) return;
  166. //facilities.push({
  167. // SiteId: sf.SiteId,
  168. // WorkScheduleId: ko.observable(workScheduleId),
  169. // FacilityCode: sf.FacilityCode,
  170. // Name: sf.Name,
  171. // FirstClassId: sf.FirstClassId,
  172. // SecondClassId: sf.SecondClassId,
  173. // ThirdClassId: sf.ThirdClassId,
  174. //});
  175. //2019.08.08 수정
  176. try {
  177. facilities.push({
  178. SiteId: ko.observable(sf.SiteId()),
  179. WorkScheduleId: ko.observable(workScheduleId),
  180. FacilityCode: ko.observable(sf.FacilityCode()),
  181. Name: ko.observable(sf.Name()),
  182. FirstClassId: ko.observable(sf.FirstClassId()),
  183. SecondClassId: ko.observable(sf.SecondClassId()),
  184. ThirdClassId: ko.observable(sf.ThirdClassId()),
  185. });
  186. } catch (e) {
  187. facilities.push({
  188. SiteId: ko.observable(sf.SiteId),
  189. WorkScheduleId: ko.observable(workScheduleId),
  190. FacilityCode: ko.observable(sf.FacilityCode),
  191. Name: ko.observable(sf.Name),
  192. FirstClassId: ko.observable(sf.FirstClassId),
  193. SecondClassId: ko.observable(sf.SecondClassId),
  194. ThirdClassId: ko.observable(sf.ThirdClassId),
  195. });
  196. }
  197. });
  198. facilityGridView().refresh();
  199. }
  200. });
  201. return {
  202. facilities: facilities,
  203. facilitiesInView: facilitiesInView,
  204. facilitySearchPopup: facilitySearchPopup,
  205. businessFields: businessFields,
  206. isValidateWithFunction: isValidateWithFunction,
  207. facilityDataGridOptions: facilityDataGridOptions,
  208. modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions,
  209. handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
  210. handleAfterSave: handleAfterSave,
  211. handlePopupShowing: handlePopupShowing,
  212. handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
  213. handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities),
  214. viewModeInPopup: viewModeInPopup,
  215. isEditModeInPopup: isEditModeInPopup
  216. };
  217. }
  218. }
  219. });