ceba9ea18c91a8bd721174dd640ab102fa161d24.svn-base 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. $(function () {
  2. 'use strict';
  3. BWA.Popup.Equipment = BWA.Popup.Equipment || {};
  4. BWA.Popup.Equipment.create = function (viewModel, options) {
  5. options = options || {};
  6. options.datagridId = options.datagridId || 'equipmentDataGridForSearch';
  7. var onSelectedEquipments = options.onSelectedEquipments,
  8. isMultipleSelect = options.isMultipleSelect;
  9. var dataViewModel = new BemsWebApplication.FmsEquipmentExViewModel(),
  10. initialized = false,
  11. gridView,
  12. popupVisible = ko.observable(false),
  13. equipmentFactory = BemsWebApplication.Factory.Equipment;
  14. //dataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: equipmentFactory.getDataSourceForDataGrid() }, 'FmsEquipmentEx');
  15. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
  16. // 자재 검색시 나타나는 팝업은 공통 및 자신이 포함된 비즈니스 영역만 해당됨
  17. var userInfo = BWA.UserInfo;
  18. //targetFacilityDataSource.filter([
  19. // eq('SiteId', userInfo.SiteId())
  20. //]);
  21. var targetFacilityDataSource = BWA.DataUtil.createDataSource({
  22. dataSourceOptions: {
  23. store: BemsWebApplication.odata.FmsEquipmentEx,
  24. select: [
  25. 'SiteId',
  26. 'EquipmentId',
  27. 'Name',
  28. 'EquipmentTypeId',
  29. 'WarehouseId',
  30. 'Unit',
  31. 'Standard',
  32. 'AddDate',
  33. 'UpdateDate',
  34. 'RegisterUserId',
  35. 'SupplierName',
  36. 'SupplierPhoneNo',
  37. 'EquipmentCodeTypeName',
  38. 'TotalStockCount',
  39. 'CurrentStockCount',
  40. 'RegisterUserName',
  41. 'WarehouseName',
  42. ],
  43. filter: ([
  44. eq('SiteId', userInfo.SiteId())
  45. ]),
  46. },
  47. sort: { field: "EquipmentId", desc: true }
  48. });
  49. var dataGridOptions = utils.datagrid.defaultOptions({
  50. dxDataSource: targetFacilityDataSource,
  51. selectedSourceItem: dataViewModel,
  52. handleDataGridRowClick: function () {
  53. },
  54. columns: [
  55. { dataField: 'Name', caption: '공기구명', width: '25%', alignment: 'center' },
  56. { dataField: 'Standard', caption: '규격', width: '25%', alignment: 'center' },
  57. { dataField: 'WarehouseName', caption: '창고', width: '17%', alignment: 'center' },
  58. { dataField: 'TotalStockCount', caption: '전체수량', width: '17%', alignment: 'center', format: 'currency' },
  59. { dataField: 'CurrentStockCount', caption: '보유수량', width: '16%', alignment: 'center', format: 'currency' },
  60. { dataField: 'Unit', caption: '단위', width: '15%', alignment: 'center', visible: false },
  61. ],
  62. wordWrapEnabled: true,
  63. cellPrepared: BemsWebApplication.Factory.Equipment.cellPrepared
  64. });
  65. if (isMultipleSelect) {
  66. dataGridOptions.selection = { mode: 'multiple', allowSelectAll: true };
  67. dataGridOptions.handleDataGridRowClick = function () { };
  68. }
  69. else {
  70. dataGridOptions.handleDataGridRowClick = function (id, dataGrid, clickRow) {
  71. var data = clickRow.data;
  72. if (!_.isUndefined(onSelectedEquipments)) {
  73. onSelectedEquipments([BWA.DataUtil.convertViewModelToJS(data)]);
  74. //{
  75. // SiteId: data.SiteId(),
  76. // BusinessFieldId: data.BusinessFieldId(),
  77. // MaterialId: data.MaterialId(),
  78. // MaterialCode: data.MaterialCode(),
  79. // FinalPrice: data.FinalPrice(),
  80. // TradeCompanyId: _.isUndefined(data.TradeCompanyId) ? undefined : data.TradeCompanyId(),
  81. // 'FmsMaterialTradeCompany/Name': data['FmsMaterialTradeCompany/Name'],
  82. // Name: data.Name()
  83. //}]);
  84. }
  85. // TODO : 어기서 데이터가 전체선택시와 단일선택시 어찌 바뀌는가...
  86. popupVisible(false);
  87. }
  88. }
  89. function handlePopupShown() {
  90. if (initialized === false) {
  91. gridView = $('#equipmentDataGridForSearch').dxDataGrid('instance');
  92. initialized = true;
  93. }
  94. gridView.clearSelection();
  95. gridView.refresh();
  96. searchView.show();
  97. }
  98. function handlePopupButtonSelect() {
  99. var array = utils.datagrid.getSelectedRowsData(options.datagridId);
  100. if (!_.isUndefined(onSelectedEquipments)) {
  101. onSelectedEquipments(array);
  102. }
  103. popupVisible(false);
  104. }
  105. function handlePopupButtonClose() {
  106. popupVisible(false);
  107. }
  108. var toolbarItems = [
  109. { location: 'before', text: '자재 선택' },
  110. { location: 'after', widget: 'button', options: { text: $G('select'), icon: 'save', visible: isMultipleSelect, clickAction: handlePopupButtonSelect } },
  111. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
  112. ];
  113. var popupOptions = {
  114. width: '720px',
  115. height: '600px',
  116. visible: popupVisible,
  117. closeOnOutsideClick: true,
  118. //showingAction: handlePopupShowing,
  119. shownAction: handlePopupShown,
  120. animation: window.utils.popup.createAnimation()
  121. };
  122. var searchView = BWA.Popup.SearchView.create({
  123. parentPopupId: 'popupSearchEquipment',
  124. parentPopupVisible: popupVisible,
  125. searchItems: [
  126. { id: 'Name' },
  127. { id: 'Standard' }
  128. ],
  129. handleInitializeUpdate: function () {
  130. },
  131. handleSearch: function (filter, searchItems) {
  132. // filter = [
  133. // eq('SiteId', BWA.UserInfo.SiteId()),
  134. // and,
  135. // [
  136. // eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
  137. // 'or',
  138. // eq('BusinessFieldId', 1)
  139. // ],
  140. // ].concat(filter)
  141. // gridView.filter(filter);
  142. //// console.log(filter);
  143. }
  144. });
  145. return {
  146. dataModel: dataViewModel,
  147. //dataSource: dataSource,
  148. popupOptions: popupOptions,
  149. toolbarItems: toolbarItems,
  150. dataGridOptions: dataGridOptions,
  151. searchView: searchView,
  152. show: function () {
  153. popupVisible(true);
  154. }
  155. };
  156. };
  157. });