b65b9ccc94f1360446ac47d600d96e34bb844545.svn-base 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. 
  2. $(function() {
  3. BemsWebApplication.FacilityCheckItem = {
  4. setupMultiViewInPopup: function(workTypeId, templateId, datagridId, viewModel, selectedFacility, multiViewDataSource) {
  5. "use strict";
  6. var refreshList = function() {
  7. var datagrid = $(['#', datagridId].join('')).dxDataGrid('instance');
  8. datagrid.refresh();
  9. }
  10. var dataSource = BWA.DataUtil.createDataSource({
  11. dataSourceOptions: {
  12. select: [
  13. 'SiteId', 'CheckItemId', 'FacilityCode', 'WorkTypeId',
  14. 'CycleUnitId', 'Name', 'IsYesNoResult', 'IsUse',
  15. 'FmsWorkCodeCycleUnit/Name', 'FmsWorkCodeType/Name'
  16. ],
  17. expand: ['FmsWorkCodeCycleUnit', 'FmsWorkCodeType']
  18. },
  19. }, 'FmsFacilityCheckItem');
  20. var cycleUnitDataSource = null;
  21. var dataGridOptions = utils.datagrid.defaultOptions({
  22. dxDataSource: dataSource,
  23. datagridId: datagridId,
  24. dbId: 'FmsFacilityCheckItem',
  25. height: 480,
  26. columns: [
  27. { dataField: 'FmsWorkCodeCycleUnit_Name', caption: $G( 'checkCycleUnit' ), width: '25%', alignment: 'center' },
  28. { dataField: 'Name', caption: $G( 'itemName' ), width: '55%', alignment: 'center' },
  29. { dataField: 'IsYesNoResult', caption: $G('resultType'), width: '20%', alignment: 'center',
  30. customizeText: function(cellInfo) {
  31. return cellInfo.value ? $G('yesOrNo') : $G('directInput');
  32. }
  33. }
  34. ],
  35. wordWrapEnabled: true,
  36. handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
  37. //dataGrid.clearSelection();
  38. var data = clickRow.data;
  39. var v = viewModel.checkItemMultiView.dataModel;
  40. BWA.DataUtil.copyViewModel(data, v);
  41. var code = $Code.FacilityCheckItemResultType;
  42. v.ResultTypeId(v.IsYesNoResult() ? code.YES_OR_NO : code.DIRECT_INPUT);
  43. var mv = viewModel.checkItemMultiView;
  44. mv.handleRefreshList(refreshList);
  45. var p = mv.popupOptions;
  46. p.isNewData(false);
  47. p.visible(true);
  48. }
  49. });
  50. selectedFacility.subscribe(function(item) {
  51. if (_.has(item, 'SiteId') === false ||
  52. _.has(item, 'FacilityCode') === false) {
  53. return;
  54. }
  55. var eq = BWA.DataUtil.constructEqualFilter;
  56. $(['#', datagridId].join('')).dxDataGrid('instance').filter([
  57. eq('SiteId', item.SiteId()),
  58. 'and',
  59. eq('FacilityCode', item.FacilityCode()),
  60. 'and',
  61. eq('WorkTypeId', workTypeId)
  62. ]);
  63. });
  64. multiViewDataSource.push({
  65. viewModel: viewModel,
  66. dataGridOptions: dataGridOptions,
  67. template: templateId,
  68. handleButtonInsert: function() {
  69. var p = viewModel.checkItemMultiView.popupOptions;
  70. var v = viewModel.checkItemMultiView.dataModel;
  71. BWA.DataUtil.resetViewModel(v);
  72. v.WorkTypeId(workTypeId);
  73. v.FacilityCode(selectedFacility().FacilityCode());
  74. v.CycleUnitId(1);
  75. v.ResultTypeId(0);
  76. p.isNewData(true);
  77. p.visible(true);
  78. viewModel.checkItemMultiView.handleRefreshList(refreshList);
  79. },
  80. handleButtonDelete: function() {
  81. var p = viewModel.checkItemMultiView.popupOptions;
  82. p.workTypeId(workType);
  83. },
  84. });
  85. if (_.has(viewModel,'checkItemMultiView') === false)
  86. {
  87. var dataModel = new BWA.FmsFacilityCheckItemViewModel();
  88. cycleUnitDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeCycleUnit');
  89. cycleUnitDataSource.load().done(function (result) {
  90. viewModel.checkItemMultiView.cycleUnitDataSource(result);
  91. });
  92. dataModel.ResultTypeId = ko.observable();
  93. dataModel.ResultTypeId.subscribe(function(value) {
  94. if (value === $Code.FacilityCheckItemResultType.YES_OR_NO) {
  95. dataModel.IsYesNoResult(true);
  96. }
  97. else {
  98. dataModel.IsYesNoResult(false);
  99. }
  100. });
  101. viewModel.checkItemMultiView = {
  102. dataModel: dataModel,
  103. handleRefreshList: ko.observable(),
  104. cycleUnitDataSource: ko.observableArray(),
  105. resultTypeDataSource: $G.FacilityCheckItemResultType,
  106. toolbarItems: [
  107. { location: 'before', text: $G('detailInfo') },
  108. { location: 'after',widget: 'button', options: {
  109. text: $G('save'), icon: 'save',
  110. clickAction: function () {
  111. viewModel.checkItemMultiView.handleSave();
  112. }
  113. }
  114. },
  115. { location: 'after', widget: 'button', options: {
  116. text: $G('delete'), icon: 'remove', type: 'danger',
  117. clickAction: function() {
  118. viewModel.checkItemMultiView.handleDelete();
  119. }
  120. }
  121. },
  122. {
  123. location: 'after', widget: 'button', options: {
  124. text: $G('close'), icon: 'close',
  125. clickAction: function () {
  126. viewModel.checkItemMultiView.popupOptions.visible(false);
  127. }
  128. }
  129. }
  130. ],
  131. popupOptions: {
  132. width: '520px',
  133. height: 'auto',
  134. animation: utils.popup.createAnimation(),
  135. closeOnOutsideClick: false,
  136. visible: ko.observable(false),
  137. //showingAction: handlePopupShowing,
  138. isNewData: ko.observable(false),
  139. workTypeId: ko.observable(),
  140. },
  141. handleSave: function () {
  142. var mv = viewModel.checkItemMultiView;
  143. var p = mv.popupOptions;
  144. var v = mv.dataModel;
  145. var handleDone = function(successMsg) {
  146. return function() {
  147. mv.handleRefreshList()();
  148. p.visible(false);
  149. utils.toast.show($G(successMsg));
  150. };
  151. };
  152. if (p.isNewData()) {
  153. BemsWebApplication.db.FmsFacilityCheckItem.insert(v.toJS()).done(handleDone('successDatabaseInsertionMsg'));
  154. }
  155. else {
  156. var keys = BWA.db.extractKeysObject('FmsFacilityCheckItem', v);
  157. BemsWebApplication.db.FmsFacilityCheckItem.update(keys, v.toJS()).done(handleDone('successDatabaseEditMsg'));
  158. }
  159. },
  160. handleDelete: function () {
  161. var mv = viewModel.checkItemMultiView;
  162. var p = mv.popupOptions;
  163. var v = mv.dataModel;
  164. var keys = BWA.db.extractKeysObject('FmsFacilityCheckItem', v);
  165. BemsWebApplication.db.FmsFacilityCheckItem.remove(keys).done(function() {
  166. mv.handleRefreshList()();
  167. p.visible(false);
  168. utils.toast.show($G('successDatabaseDeleteMsg'));
  169. });
  170. }
  171. };
  172. }
  173. }
  174. };
  175. });