83abd695d981aa44ab205ad20f9d8f72f2503414.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. $(function () {
  2. 'use strict';
  3. BemsWebApplication.Popup.WorkOrder = {
  4. create: function (viewModel) {
  5. var workRequestFacilities = viewModel.popup.facilities,
  6. workRequestDataModel = viewModel.dataModel,
  7. workOrderDataModel = new BWA.FmsWorkOrderViewModel();
  8. var facilities = ko.observableArray(), businessFields = ko.observableArray();
  9. var facilitySearchPopup = viewModel.popup.facilitySearchPopup,
  10. facilityFactory = BWA.Factory.Facility,
  11. facilityGridView = ko.observable(undefined),
  12. facilityDataGridOptions = undefined;
  13. var facilityDataSource = facilityFactory.getBasicDataSourceRef({
  14. dbModeIId: 'FmsWorkOrderToFacility',
  15. primaryKeyDataField: 'WorkRequestId'
  16. });
  17. function onSelectedFacilities(selectedFacilities) {
  18. var workRequestId = workRequestDataModel.WorkRequestId();
  19. _.each(selectedFacilities, function (sf) {
  20. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  21. var found = _.some(facilities(), function (f) {
  22. //return f.FacilityCode() === sf.FacilityCode();
  23. try {
  24. return f.FacilityCode() === sf.FacilityCode();
  25. } catch (e) {
  26. return f.FacilityCode() === sf.FacilityCode;
  27. }
  28. });
  29. if (found) return;
  30. //facilities.push({
  31. // SiteId: sf.SiteId,
  32. // WorkRequestId: ko.observable(workRequestId),
  33. // FacilityCode: sf.FacilityCode,
  34. // Name: sf.Name,
  35. //});
  36. //2019.08.08 수정
  37. try {
  38. facilities.push({
  39. SiteId: ko.observable(sf.SiteId()),
  40. WorkRequestId: ko.observable(workRequestId),
  41. FacilityCode: ko.observable(sf.FacilityCode()),
  42. Name: ko.observable(sf.Name()),
  43. FirstClassId: ko.observable(sf.FirstClassId()),
  44. SecondClassId: ko.observable(sf.SecondClassId()),
  45. ThirdClassId: ko.observable(sf.ThirdClassId()),
  46. });
  47. } catch (e) {
  48. facilities.push({
  49. SiteId: ko.observable(sf.SiteId),
  50. WorkRequestId: ko.observable(workRequestId),
  51. FacilityCode: ko.observable(sf.FacilityCode),
  52. Name: ko.observable(sf.Name),
  53. FirstClassId: ko.observable(sf.FirstClassId),
  54. SecondClassId: ko.observable(sf.SecondClassId),
  55. ThirdClassId: ko.observable(sf.ThirdClassId),
  56. });
  57. }
  58. });
  59. facilityGridView().refresh();
  60. }
  61. var isNew = true,
  62. popupVisible = ko.observable(false),
  63. toolbarItems = [
  64. { location: 'before', text: $G('workOrder') },
  65. //{
  66. // location: 'after', widget: 'button', options: {
  67. // text: $G('facilityInsertion'), icon: 'search',
  68. // clickAction: function () {
  69. // facilitySearchPopup.show(onSelectedFacilities);
  70. // }
  71. // }
  72. //},
  73. //{
  74. // location: 'after', widget: 'button', options: {
  75. // text: $G('facilityDeletion'),
  76. // icon: 'remove',
  77. // type: 'danger',
  78. // clickAction: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities)
  79. // }
  80. //},
  81. { location: 'after', widget: 'button', options: { text: $G('workOrder'), icon: 'save', clickAction: handleSave } },
  82. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handleClose } }
  83. ],
  84. popupOptions = {
  85. width: 1200,
  86. height: 650,
  87. //shading: false,
  88. shadingColor: 'rgba(0,0,0,0.0)',
  89. showingAction: handlePopupShowing,
  90. visible: popupVisible,
  91. closeOnOutsideClick: false,
  92. animation: utils.popup.createAnimation()
  93. };
  94. function handleSave() {
  95. if (isNew) {
  96. insert();
  97. return;
  98. }
  99. update();
  100. }
  101. function insert() {
  102. BWA.db.FmsWorkOrder.insert(workOrderDataModel.toJS()).done(function (response, responseKey) {
  103. var keys = BWA.db.extractKeysObject('FmsWorkRequest', workRequestDataModel);
  104. workRequestDataModel.WorkProgressId($Code.WorkProgress.WORK_STANDBY);
  105. BWA.db.FmsWorkRequest.update(keys, {
  106. WorkProgressId: workRequestDataModel.WorkProgressId()
  107. }).done(function () {
  108. handleAfterSave(responseKey);
  109. });
  110. });
  111. }
  112. function update() {
  113. var keys = BWA.db.extractKeysObject('FmsWorkOrder', workOrderDataModel);
  114. BWA.db.FmsWorkOrder.update(keys, workOrderDataModel.toJS()).done(function () {
  115. popupVisible(false);
  116. utils.toast.show($G('successSaveWorkOrderMsg'));
  117. });
  118. }
  119. function handleClose() {
  120. popupVisible(false);
  121. }
  122. function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {
  123. }
  124. function handlePopupShowing() {
  125. $("#gridContainer_WorkOrder").dxDataGrid({
  126. paging: {
  127. pageSize: 13,
  128. enabled: true
  129. }
  130. });
  131. isNew = (workRequestDataModel.WorkProgressId() === $Code.WorkProgress.WORK_PLAN);
  132. if (isNew) {
  133. //var userInfo = BWA.UserInfo
  134. workOrderDataModel.SiteId(workRequestDataModel.SiteId());
  135. workOrderDataModel.WorkRequestId(workRequestDataModel.WorkRequestId());
  136. workOrderDataModel.BusinessFieldName(workRequestDataModel.BusinessFieldName());
  137. workOrderDataModel.BusinessFieldId(workRequestDataModel.BusinessFieldId());
  138. workOrderDataModel.OrderUserName(workRequestDataModel.RequestUserName());
  139. workOrderDataModel.OrderUserId(workRequestDataModel.RequestUserId());
  140. workOrderDataModel.OrderDate(new Date());
  141. workOrderDataModel.StartWorkDate(workRequestDataModel.StartWorkDate());
  142. workOrderDataModel.Title(workRequestDataModel.Title());
  143. //workOrderDataModel.Content(workRequestDataModel.Content());
  144. workOrderDataModel.Content("");
  145. facilities(workRequestFacilities());
  146. }
  147. else {
  148. // 키값이 WorkRequest와 동일하다.
  149. var keys = BWA.db.extractKeysObject('FmsWorkOrder', workRequestDataModel);
  150. BWA.db.FmsWorkOrder.byKey(keys).done(function (data) {
  151. workOrderDataModel.fromJS(data);
  152. var eq = BWA.DataUtil.constructEqualFilter;
  153. var and = BWA.DataUtil.andFilter;
  154. facilityDataSource.filter([
  155. eq('SiteId', workOrderDataModel.SiteId()),
  156. and,
  157. //eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
  158. //and,
  159. eq('WorkRequestId', workOrderDataModel.WorkRequestId())
  160. ]);
  161. facilityDataSource.load().done(function (dbFacilities) {
  162. facilities(dbFacilities);
  163. });
  164. });
  165. }
  166. }
  167. function handlePopupShown(isEditMode, isNew, dataViewModel) {
  168. }
  169. function closeAfterSave() {
  170. popupVisible(false);
  171. viewModel.popupVisible(false);
  172. viewModel.refreshList();
  173. utils.toast.show($G('successSaveWorkOrderMsg'));
  174. }
  175. // 점검계획 정보가 저장된 후에 호출 된다.
  176. // 등록이면 responseKey가 있고, 수정이면 없다.
  177. function handleAfterSave(responseKey) {
  178. var array = facilities();
  179. if (_.isEmpty(array)) {
  180. closeAfterSave();
  181. return;
  182. }
  183. var postData;
  184. var parameters = {
  185. SiteId: responseKey.SiteId,
  186. WorkRequestId: responseKey.WorkRequestId
  187. };
  188. postData = _.map(array, function (f) {
  189. return {
  190. SiteId: parameters.SiteId,
  191. WorkRequestId: parameters.WorkRequestId,
  192. FacilityCode: f.FacilityCode()
  193. };
  194. });
  195. BWA.api.post('FmsWorkOrderToFacility', postData, parameters).done(function () {
  196. closeAfterSave();
  197. });
  198. }
  199. workOrderDataModel.BusinessFieldName = ko.observable();
  200. workOrderDataModel.OrderUserName = ko.observable();
  201. //facilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions( facilities, ko.observable(true), facilityGridView);
  202. facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions(facilities, ko.observable(true));
  203. return {
  204. popupOptions: popupOptions,
  205. toolbarItems: toolbarItems,
  206. dataModel: workOrderDataModel,
  207. facilityDataGridOptions: facilityDataGridOptions,
  208. show: function () {
  209. popupVisible(true);
  210. }
  211. };
  212. }
  213. }
  214. });