97e4c18c0ea778966279f032f298c6fed44c030b.svn-base 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. BemsWebApplication.EquipStatusInfo = function (params, viewInfo) {
  2. "use strict";
  3. var codeTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true, false, true),
  4. codeStateTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeStateType', false, false, true),
  5. warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, false, true);
  6. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
  7. var codeTypes = ko.observableArray(),
  8. codeStateTypes = ko.observableArray(),
  9. warehouses = ko.observableArray();
  10. var codeTypesForSearch = ko.observableArray(),
  11. codeStateTypesForSearch = ko.observableArray(),
  12. warehousesForSearch = ko.observableArray();
  13. var deferredForSearch = new $.Deferred();
  14. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentEx', {
  15. dataSourceOptions: {
  16. store: BemsWebApplication.odata.FmsEquipmentEx,
  17. select: [
  18. 'SiteId',
  19. 'EquipmentId',
  20. 'Name',
  21. 'EquipmentTypeId',
  22. 'WarehouseId',
  23. 'Unit',
  24. 'Standard',
  25. 'AddDate',
  26. 'UpdateDate',
  27. 'RegisterUserId',
  28. 'SupplierName',
  29. 'SupplierPhoneNo',
  30. 'EquipmentCodeTypeName',
  31. 'TotalStockCount',
  32. 'CurrentStockCount',
  33. 'CurrentRentCount',
  34. 'RegisterUserName',
  35. 'WarehouseName',
  36. 'CurrentStoredCount',
  37. 'CurrentReturnCount',
  38. 'CurrentLossCount'
  39. ],
  40. },
  41. filter: ([
  42. eq('SiteId', BWA.UserInfo.SiteId())
  43. ]),
  44. // TODO : "입고수량","손실수량","반납수량"
  45. columns: [
  46. { dataField: 'EquipmentId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' },
  47. { dataField: 'EquipmentCodeTypeName', caption: '분류', width: '10%', alignment: 'center' },
  48. { dataField: 'Name', caption: '공기구명', width: '30%', alignment: 'center' },
  49. { dataField: 'Standard', caption: '규격', width: '30%', alignment: 'center' },
  50. { dataField: 'Unit', caption: '단위', width: '15%', alignment: 'center' },
  51. { dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  52. { dataField: 'CurrentStoredCount', caption: '입고수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  53. { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  54. { dataField: 'CurrentLossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  55. { dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  56. { dataField: 'WarehouseName', caption: '창고위치', width: '10%', alignment: 'center' },
  57. ],
  58. paging: {
  59. pageSize: 18,
  60. enabled: true
  61. },
  62. pager: {},
  63. "export": {
  64. enabled: true,
  65. fileName: '공기구 사용 목록',
  66. },
  67. onExporting: function (e) {
  68. e.component.columnOption("EquipmentId", "visible", false);
  69. },
  70. onExported: function (e) {
  71. e.component.columnOption("EquipmentId", "visible", true);
  72. },
  73. searchViewItems: [
  74. { id: 'Name' },
  75. { id: 'Standard' },
  76. { id: 'EquipmentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeTypesForSearch }, // 분류
  77. ],
  78. popupWidth: 400,
  79. handleViewShowing: function (dataModel) {
  80. $.when(
  81. codeStateTypeDataSource.load(),
  82. codeTypeDataSource.load(),
  83. warehouseDataSource.load()
  84. ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) {
  85. codeStateTypes(codeStateTypeResult[0]);
  86. codeTypes(codeTypeResult[0]);
  87. warehouses(warehouseResult[0]);
  88. codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));
  89. warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));
  90. deferredForSearch.resolve();
  91. });
  92. },
  93. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  94. dataGrid.clearSelection();
  95. popupVisible(false); // Detail 모드를 수행하지 않음
  96. },
  97. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  98. // 저장 버튼
  99. viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave;
  100. },
  101. handlePopupShown: function (isEditMode, isNew, dataViewModel) {
  102. $.when(
  103. equipmentExDataSource.load()
  104. ).done(function (equipmentExResult) {
  105. equipmentExs(equipmentExResult);
  106. });
  107. if (isNew) { // 신규등록인 경우
  108. dataViewModel.AddDate($G.date(new Date()));
  109. dataViewModel.UpdateDate($G.date(new Date()));
  110. dataViewModel.RegisterUserId(BWA.UserInfo.UserId());
  111. dataViewModel.StoredCount(1);
  112. }
  113. },
  114. handlePopupButtonSave: function () {
  115. var dataViewModel = viewModel.dataModel;
  116. if (IsAdditionalEquipment()) {
  117. if (dataViewModel.EquipmentId() == null) {
  118. utils.toast.show('추가입고할 공기구를 선택하세요.', 'error');
  119. return;
  120. }
  121. }
  122. else {
  123. if (dataViewModel.EquipmentTypeId() == null) {
  124. utils.toast.show('입고할 공기구 분류를 선택하세요.', 'error');
  125. return;
  126. }
  127. else if (dataViewModel.Name() == null) {
  128. utils.toast.show('입고할 공기구 이름을 입력하세요.', 'error');
  129. return;
  130. }
  131. }
  132. if (dataViewModel.WarehouseId() == null) {
  133. utils.toast.show('입고될 창고위치를 선택하세요.', 'error');
  134. return;
  135. }
  136. var parameters = {
  137. SiteId: dataViewModel.SiteId(),
  138. IsAdditionalEquipment: IsAdditionalEquipment()
  139. };
  140. var postData = dataViewModel.toJS();
  141. BWA.api.post('FmsEquipment', postData, parameters).done(
  142. function () {
  143. utils.toast.show($G('successDatabaseInsertionMsg'));
  144. viewModel.popupVisible(false);
  145. viewModel.gridView().refresh();
  146. });
  147. }
  148. });
  149. return viewModel;
  150. };