667e02d8120bca3cf7e401720cde638b2336bd5f.svn-base 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. $(function () {
  2. 'use strict';
  3. BemsWebApplication.Popup.WorkHistory = {
  4. create: function (viewInfo, viewModel) {
  5. var facilitiesInView = ko.observableArray();
  6. var facilityFactory = BWA.Factory.Facility;
  7. var popupVisible = ko.observable();
  8. var viewModel = viewModel;
  9. var isReject = ko.observable(false);
  10. var eq = BWA.DataUtil.constructEqualFilter;
  11. var and = BWA.DataUtil.andFilter;
  12. var facilityDataSource = facilityFactory.getBasicDataSourceRef({
  13. dbModeIId: 'FmsWorkResultToFacility',
  14. primaryKeyDataField: 'WorkRequestId'
  15. });
  16. //var workResultCheckItemDataSource = BemsWebApplication.db.createDataSource('FmsWorkResultCheckItem', true, true, false, true);// 2018 01 29 hcLee
  17. var workResultCheckItemDataSource = BWA.DataUtil.createDataSource({ // 2018 01 29 hcLee -->
  18. dataSourceOptions: {
  19. paginate: false,
  20. select: [
  21. 'SiteId', 'WorkRequestId',
  22. 'FacilityCode',
  23. 'CheckItemId',
  24. 'BoolResult',
  25. 'TextResult',
  26. 'CheckDate',
  27. 'FileId1',
  28. 'FileId2',
  29. 'CmFile/Name',
  30. 'CmFile1/Name',
  31. ],
  32. expand: [
  33. 'CmFile',
  34. 'CmFile1'],
  35. extendOptions: {
  36. forceOriginalField: true
  37. },
  38. }
  39. }, 'FmsWorkResultCheckItem'); // <-- 2018 01 29 hcLee
  40. var workResultCheckItems = ko.observableArray();
  41. //var selectedItemCheckDate = ko.observable();
  42. //var selectedItemTextResult = ko.observable();
  43. function onItemClick(e) {
  44. if (viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel !== undefined) {
  45. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.CheckItemId(e.itemData.CheckItemId());
  46. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.CheckDate(e.itemData.CheckDate());
  47. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.TextResult(e.itemData.TextResult());
  48. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.SiteId(e.itemData.SiteId());
  49. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.WorkRequestId(e.itemData.WorkRequestId());
  50. // hcLee 2018 01 29 -->
  51. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.FileId1(e.itemData.FileId1());
  52. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.FileId2(e.itemData.FileId2());
  53. //viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName1(e.itemData['CmFile/Name']());
  54. (e.itemData.FileId1() != null) ? viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName1(e.itemData['CmFile/Name']()) : viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName1(null);
  55. (e.itemData.FileId2() != null) ? viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName2(e.itemData['CmFile1/Name']()) : viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.AttachmentFileName2(null);
  56. // <-- hcLee 2018 01 29
  57. viewModel.isAddHistoryButton(false);
  58. viewModel.isEditHistoryButton(false);
  59. viewModel.addWorkResultCheckItemPopup.isNew(false);
  60. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkDone(viewModel.isWorkDone());// hcLee 2016 04 04
  61. viewModel.addWorkResultCheckItemPopup.workCheckItemViewModel.IsWorkHold(viewModel.isWorkHold());// hcLee 2016 04 04
  62. viewModel.addWorkResultCheckItemPopup.show();
  63. }
  64. }
  65. function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) {
  66. var workProgressId;
  67. if (isNewInPopup()) {
  68. workProgressId = $Code.WorkProgress.WORK_PLAN;
  69. }
  70. else {
  71. workProgressId = clickRowData['WorkProgressId'](); // clickRowData.WorkProgressId();
  72. dataViewModel.WorkProgressId = ko.observable();
  73. dataViewModel.WorkProgressId(workProgressId);
  74. isReject(workProgressId === $Code.WorkProgress.WORK_POSTPONE);
  75. }
  76. }
  77. function handlePopupShowing(isNewInPopup, dataModel, selectedData) {
  78. viewModel.dataModel.selectedItemCheckDate("");
  79. viewModel.dataModel.selectedItemTextResult("");
  80. viewModel.dataModel.selectedItemCheckItemId(0);
  81. viewModel.dataModel.FacilityList("");
  82. viewModel.dataModel.FacilityListValueOnOff(false);
  83. }
  84. function handlePopupShown(isEditMode, isNew, dataViewModel) {
  85. $("#search").dxButton({
  86. });
  87. }
  88. function searchpopup() {
  89. viewModel.WorkResultCheckItemFacilityPopup.selectedFacility(viewModel.dataModel);
  90. viewModel.WorkResultCheckItemFacilityPopup.visible(true);
  91. }
  92. function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) {
  93. // 작업지시 세부 내용은 수정/삭제 할 수 없음
  94. viewModel.visibleEditButton(false);
  95. viewModel.visibleDeleteButton(false);
  96. facilityDataSource.filter([
  97. eq('SiteId', dataViewModel.SiteId()),
  98. and,
  99. eq('WorkRequestId', dataViewModel.WorkRequestId())
  100. ]);
  101. facilityDataSource.load().done(function (dbFacilities) {
  102. facilitiesInView(dbFacilities);
  103. var facilityList = "";
  104. for (var i = 0; i < dbFacilities.length; i++) {
  105. facilityList += (i + 1) + ". " + dbFacilities[i].Name();
  106. if (i + 1 == dbFacilities.length) { break; }
  107. facilityList += '\n';
  108. }
  109. if (facilityList == "") {
  110. viewModel.dataModel.FacilityListValueOnOff(false);
  111. }
  112. else {
  113. viewModel.dataModel.FacilityListValueOnOff(true);
  114. }
  115. viewModel.dataModel.FacilityList(facilityList);
  116. });
  117. refreshListData();
  118. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  119. }
  120. function refreshListData() {
  121. workResultCheckItemDataSource.filter([
  122. eq('SiteId', viewModel.dataModel.SiteId()),
  123. and,
  124. eq('WorkRequestId', viewModel.dataModel.WorkRequestId())
  125. ]);
  126. workResultCheckItemDataSource.load().done(function (dbWorkCheckItems) {
  127. workResultCheckItems(dbWorkCheckItems);
  128. });
  129. viewModel.dataModel.selectedItemCheckDate("");
  130. viewModel.dataModel.selectedItemTextResult("");
  131. viewModel.dataModel.selectedItemCheckItemId(0);
  132. }
  133. function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
  134. //추가
  135. if (viewModel.dataModel.ResultContent == null) {
  136. viewModel.dataModel.ResultContent = ko.observable();
  137. }
  138. else {
  139. viewModel.dataModel.ResultContent('');
  140. }
  141. if (viewModel.dataModel.ResultConfirmDesc == null) {
  142. viewModel.dataModel.ResultConfirmDesc = ko.observable();
  143. }
  144. else {
  145. viewModel.dataModel.ResultConfirmDesc('');
  146. }
  147. if (rowData.WorkProgressId() > 3) {
  148. if (rowData['FmsWorkResult/Content']() !== undefined) {
  149. viewModel.dataModel.ResultContent(rowData['FmsWorkResult/Content']());
  150. }
  151. if (rowData['FmsWorkResult/ConfirmDesc']() !== undefined) {
  152. viewModel.dataModel.ResultConfirmDesc(rowData['FmsWorkResult/ConfirmDesc']());
  153. }
  154. dataViewModel.StartDate(new Date(rowData['FmsWorkResult/StartDate']()));
  155. dataViewModel.EndDate(new Date(rowData['FmsWorkResult/EndDate']()));
  156. dataViewModel.DateVisible(true);
  157. }
  158. else {
  159. dataViewModel.DateVisible(false);
  160. }
  161. //추가
  162. dataViewModel.Title(rowData['Title']());
  163. dataViewModel.workDueDate(rowData['StartWorkDate']());
  164. dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']());
  165. dataViewModel.WorkTypeName(rowData['FmsWorkCodeType/Name']());
  166. dataViewModel.RequestUserName(rowData['CmUser/Name']());
  167. dataViewModel.RejectUserName($KoValue(rowData['CmUser1/Name']));
  168. if (rowData['FmsWorkResult/CmUser/Name'] !== undefined) {
  169. dataViewModel.WorkerUserName(rowData['FmsWorkResult/CmUser/Name']());
  170. }
  171. else {
  172. dataViewModel.WorkerUserName('');
  173. }
  174. if (rowData['FmsWorkResult/CmUser1/Name'] !== undefined) {
  175. dataViewModel.ConfirmedUserName(rowData['FmsWorkResult/CmUser1/Name']());
  176. }
  177. else {
  178. dataViewModel.ConfirmedUserName('');
  179. }
  180. dataViewModel.WorkProgressName(rowData['FmsWorkCodeProgress/Name']());
  181. if (rowData['FmsWorkOrder/OrderDate'] !== undefined) {
  182. dataViewModel.OrderDate(rowData['FmsWorkOrder/OrderDate']());
  183. }
  184. else {
  185. dataViewModel.OrderDate('');
  186. }
  187. if (rowData['FmsWorkOrder/Content'] !== undefined) {
  188. dataViewModel.OrderContent(rowData['FmsWorkOrder/Content']());
  189. }
  190. ////viewModel.workResultCheckItemMaterialPopup.materials2DataSource.filter([
  191. //viewModel.workApprovalMaterialPopup.materials2DataSource.filter([
  192. // eq('SiteId', rowData.SiteId()),
  193. // and,
  194. // eq('WorkRequestId', rowData.WorkRequestId())
  195. // //, and,
  196. // //eq('CheckItemId', e.itemData.CheckItemId())
  197. //]);
  198. ////viewModel.workResultCheckItemMaterialPopup.materials2DataSource.load().done(function (dbMaterials) {
  199. //viewModel.workApprovalMaterialPopup.materials2DataSource.load().done(function (dbMaterials) {
  200. // _.each(dbMaterials, function (sm) {
  201. // //viewModel.workResultCheckItemMaterialPopup.materials2.push({
  202. // viewModel.workApprovalMaterialPopup.materials2.push({
  203. // SiteId: sm.SiteId,
  204. // //PurchaseRequestId: ko.observable(purchaseRequestId),
  205. // MaterialId: sm.MaterialId,
  206. // Name: sm.Name,
  207. // MaterialCode: sm.MaterialCode,
  208. // MaterialCount: sm.MaterialCount
  209. // //FinalPrice: sm.FinalPrice,
  210. // });
  211. // });
  212. //});
  213. }
  214. function modifyWorkItem() {
  215. var workCheckItem = new BemsWebApplication.FmsWorkResultCheckItemViewModel();
  216. workCheckItem.SiteId(viewModel.dataModel.SiteId());
  217. workCheckItem.WorkRequestId(viewModel.dataModel.WorkRequestId());
  218. workCheckItem.CheckItemId(viewModel.dataModel.selectedItemCheckItemId());
  219. workCheckItem.TextResult(viewModel.dataModel.selectedItemTextResult())
  220. var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', workCheckItem);
  221. BWA.db.FmsWorkResultCheckItem.update(keys, workCheckItem.toJS()).done(function (res) {
  222. utils.toast.show($G('successDatabaseInsertionMsg'));
  223. refreshListData();
  224. });
  225. }
  226. viewModel.dataModel.DateVisible = ko.observable();
  227. viewModel.dataModel.StartDate = ko.observable();
  228. viewModel.dataModel.EndDate = ko.observable();
  229. viewModel.dataModel.Title = ko.observable();
  230. viewModel.dataModel.workDueDate = ko.observable();
  231. viewModel.dataModel.BusinessFieldName = ko.observable();
  232. viewModel.dataModel.WorkTypeName = ko.observable();
  233. viewModel.dataModel.WorkerUserName = ko.observable();
  234. viewModel.dataModel.ConfirmedUserName = ko.observable();
  235. viewModel.dataModel.WorkProgressName = ko.observable();
  236. viewModel.dataModel.OrderDate = ko.observable();
  237. viewModel.dataModel.RejectUserName = ko.observable();
  238. viewModel.dataModel.RequestUserName = ko.observable();
  239. viewModel.dataModel.OrderContent = ko.observable();
  240. viewModel.dataModel.FacilityList = ko.observable();
  241. viewModel.dataModel.FacilityListValueOnOff = ko.observable();
  242. viewModel.dataModel.selectedItemCheckDate = ko.observable();
  243. viewModel.dataModel.selectedItemTextResult = ko.observable();
  244. viewModel.dataModel.selectedItemCheckItemId = ko.observable();
  245. viewModel.workResultCheckItems = workResultCheckItems;
  246. viewModel.refreshListData = refreshListData;
  247. viewModel.onItemClick = onItemClick;
  248. viewModel.searchpopup = searchpopup;
  249. viewModel.addWorkResultCheckItemPopup.popupVisible.subscribe(function (visible) {
  250. if (!visible) {
  251. refreshListData();
  252. }
  253. });
  254. function sleep(ms) {
  255. var ts1, ts2 = null;
  256. ts1 = new Date().getTime() + ms;
  257. do ts2 = new Date().getTime(); while (ts2 < ts1);
  258. }
  259. return {
  260. isReject: isReject,
  261. popupVisible: popupVisible,
  262. modifyWorkItem: modifyWorkItem,
  263. workResultCheckItems: workResultCheckItems,
  264. handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
  265. handlePopupShowing: handlePopupShowing,
  266. handlePopupShown: handlePopupShown,
  267. handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
  268. handleBeforePopupShowingPromise: handleBeforePopupShowingPromise,
  269. refreshListData: refreshListData
  270. };
  271. }
  272. }
  273. });