e1fc28a8491cc0846eb402e5ca0d3380f6b76109.svn-base 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841
  1. $(function () {
  2. 'use strict';
  3. // viewModel 을 가져오지 못해서 임의로 객체 선언후 할당
  4. var fmsmaterialsDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true, true);
  5. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter, noteq = BWA.DataUtil.constructNotEqualFilter;
  6. var endpointSelector = "";
  7. if (BemsWebApplication.config.mode == "production") {
  8. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
  9. } else {
  10. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
  11. }
  12. BemsWebApplication.Popup.AddWorkResultCheckItem = {
  13. create: function (viewInfo, viewModel, refreshListData) {
  14. var dataModel = null;
  15. var IsWorkDone = ko.observable(false);
  16. var IsWorkHold = ko.observable(false);
  17. var tempViewModel = viewModel;
  18. var materials = ko.observableArray();
  19. var materialsEx = ko.observableArray();
  20. var materialFactory = BWA.Factory.Material;
  21. var materialGridView;
  22. var materialColumns = materialFactory.getColumns([
  23. { dataField: 'MaterialCode', width: '30%' },
  24. { dataField: 'Name', width: '40%' },
  25. { dataField: 'Standard', width: '40%' }
  26. ]);
  27. var usedMaterialsDataSource = BemsWebApplication.db.createDataSource('FmsWorkResultCheckItemMaterial', true, true, true);
  28. var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'),
  29. facilityTypes = ko.observableArray(),
  30. isNew = ko.observable(false),
  31. MaterialExdataSource = ko.observableArray(),
  32. popupVisible = ko.observable(),
  33. isEditMode = ko.observable(false),
  34. isViewMode = ko.observable(true),
  35. cancelButtonVisible = ko.observable(true),
  36. // facilityDataModel = new BWA.CmFacilityViewModel(),
  37. workCheckItemViewModel = new BemsWebApplication.FmsWorkResultCheckItemViewModel();
  38. workCheckItemViewModel.IsWorkDone = ko.observable(false);
  39. workCheckItemViewModel.IsWorkHold = ko.observable(false);
  40. workCheckItemViewModel.IsdateboxCheckDate = ko.observable();
  41. workCheckItemViewModel.AttachmentFileName1 = ko.observable();
  42. workCheckItemViewModel.AttachmentFileName2 = ko.observable();
  43. // 2018 01 29 -->
  44. var FileEdit = ko.observable(false);
  45. var FileView = ko.observable(false);
  46. // <-- 2018 01 29
  47. var popupOptions = {
  48. width: '998px',
  49. height: 'auto',
  50. //shading: false,
  51. shadingColor: 'rgba(0,0,0,0.0)',
  52. visible: popupVisible,
  53. closeOnOutsideClick: false,
  54. animation: utils.popup.createAnimation(),
  55. shownAction: handleViewShown,
  56. showingAction: handlePopupShowing,
  57. hiddenAction: handlePopuphidden,
  58. },
  59. toolbarItems = [
  60. { location: 'before', text: $G('detailInfo') },
  61. // hcLee 2018 01 29 -->
  62. {
  63. location: 'after', widget: 'button',
  64. options: {
  65. text: '사진수정', icon: 'edit', visible: FileEdit,
  66. clickAction: function () {
  67. if (viewModel.isAddHistoryButton() == false) {
  68. FileView(false);
  69. FileEdit(false);
  70. }
  71. else {
  72. FileView(true);
  73. FileEdit(false);
  74. isEditMode(!isEditMode());
  75. }
  76. }
  77. }
  78. },
  79. {
  80. location: 'after', widget: 'button',
  81. options: {
  82. //text: '사진보기', icon: 'edit', visible: isEditMode() ? true : false,
  83. text: '사진보기', icon: 'edit', visible: FileView,
  84. clickAction: function () {
  85. if (viewModel.isAddHistoryButton() == false) {
  86. FileView(false);
  87. FileEdit(false);
  88. }
  89. else {
  90. FileView(false);
  91. FileEdit(true);
  92. isEditMode(!isEditMode());
  93. setdownLoadUrl();
  94. }
  95. }
  96. }
  97. },
  98. // <-- hcLee 2018 01 29
  99. {
  100. location: 'after', widget: 'button',
  101. options: {
  102. text: $G('materialInsertion'), icon: 'search', visible: viewModel.isAddHistoryButton,
  103. clickAction: function () {
  104. viewModel.isAddPopup(true);
  105. viewModel.materialSearchPopup.show();
  106. }
  107. }
  108. },
  109. {
  110. location: 'after', widget: 'button',
  111. options: {
  112. text: $G('materialDeletion'), icon: 'remove', type: 'danger', visible: viewModel.isAddHistoryButton,
  113. clickAction: function () { handleDeleteSelectedMaterials(); }
  114. }
  115. },
  116. {
  117. location: 'after', widget: 'button',
  118. options: {
  119. text: $G('edit'), icon: 'edit', visible: viewModel.isEditHistoryButton,
  120. clickAction: handlePopupButtonEdit
  121. }
  122. },
  123. {
  124. location: 'after', widget: 'button',
  125. options: {
  126. text: $G('save'), icon: 'save', visible: viewModel.isAddHistoryButton,
  127. clickAction: handlePopupButtonSave
  128. }
  129. },
  130. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
  131. ],
  132. modifiableMaterialDataGridOptions = utils.datagrid.defaultOptions({
  133. width: 500,
  134. pager: {
  135. showPageSizeSelector: false,
  136. allowedPageSizes: []
  137. },
  138. dataSource: materials,
  139. selection: { mode: 'multiple', allowSelectAll: true },
  140. columns: materialColumns.concat([{
  141. dataField: 'MaterialCount', width: '20%', type: 'number',
  142. caption: $G('materialCount'), alignment: 'center',
  143. cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({
  144. min: 0,
  145. max: 1000000,
  146. dataField: 'MaterialCount',
  147. convertValueWhenValueChanged: function (value) {
  148. return Math.max(1, value);
  149. }
  150. })
  151. }]),
  152. cellClick: function (e) {
  153. utils.datagrid.cellClickEventForDataGridTemplate(e, 'MaterialCount');
  154. },
  155. contentReadyAction: function (e) {
  156. materialGridView = e.component;
  157. },
  158. });
  159. isEditMode.subscribe(function (isEdit) {
  160. isViewMode(!isEdit);
  161. });
  162. popupVisible.subscribe(function (value) {
  163. if (!value) {
  164. materials([]);
  165. }
  166. });
  167. viewModel.materialSearchPopup = BWA.Popup.Material.create(viewModel, {
  168. // TODO : 입고수량이 0 이상인 것을 필터링할 필요는 없는지 확인필요
  169. isMultipleSelect: true,
  170. onSelectedMaterials: function (selectedMaterials) {
  171. if (viewModel.isAddPopup()) {
  172. _.each(selectedMaterials, function (sm) {
  173. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  174. var found = _.some(materials(), function (m) {
  175. return (typeof (m.MaterialId) == "function" ? m.MaterialId() : m.MaterialId) === (typeof (sm.MaterialId) == "function" ? sm.MaterialId() : sm.MaterialId);
  176. });
  177. if (found) return;
  178. if ((typeof (sm.StockCount) == "function" ? sm.StockCount() : sm.StockCount) > 0) {
  179. materials.push({
  180. SiteId: sm.SiteId,
  181. MaterialId: sm.MaterialId,
  182. Name: sm.Name,
  183. MaterialCode: sm.MaterialCode,
  184. MaterialCount: ko.observable(1),
  185. FinalPrice: sm.FinalPrice,
  186. MaxMaterialCount: sm.StockCount,
  187. Standard: sm.Standard
  188. });
  189. } else {
  190. utils.toast.show('재고가 없는 항목은 선택할 수 없습니다.', 'warning');
  191. }
  192. });
  193. materialGridView.refresh();
  194. }
  195. else if (viewModel.isApprovalMode()) {
  196. _.each(selectedMaterials, function (sm) {
  197. // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다.
  198. var found = _.some(viewModel.workResultCheckItemMaterialPopup.materials2(), function (m) {
  199. return (typeof (m.MaterialId) == "function" ? m.MaterialId() : m.MaterialId) === (typeof (sm.MaterialId) == "function" ? sm.MaterialId() : sm.MaterialId);
  200. });
  201. if (found) return;
  202. viewModel.workResultCheckItemMaterialPopup.materials2.push({
  203. SiteId: sm.SiteId,
  204. MaterialId: sm.MaterialId,
  205. Name: sm.Name,
  206. MaterialCode: sm.MaterialCode,
  207. MaterialCount: ko.observable(1),
  208. FinalPrice: sm.FinalPrice,
  209. MaxMaterialCount: sm.StockCount,
  210. Standard: sm.Standard
  211. });
  212. });
  213. viewModel.workResultCheckItemMaterialPopup.materialGridView2().refresh();
  214. }
  215. }
  216. });
  217. function handleDeleteSelectedMaterials() {
  218. var rows = materialGridView.getSelectedRowsData();
  219. if (_.isEmpty(rows)) {
  220. utils.toast.show('선택된 자재가 없습니다.', 'error');
  221. return;
  222. }
  223. _.each(rows, function (row) {
  224. var array = materials();
  225. var length = array.length;
  226. var id = row.MaterialId();
  227. for (var i = 0 ; i < length ; i++) {
  228. if (id === array[i].MaterialId()) {
  229. materials().splice(i, 1);
  230. break;
  231. }
  232. }
  233. });
  234. materialGridView.refresh();
  235. }
  236. function handlePopupButtonEdit() {
  237. viewModel.isEditHistoryButton(!viewModel.isEditHistoryButton);
  238. viewModel.isAddHistoryButton(true);
  239. FileView(true);
  240. isEditMode(true);
  241. }
  242. function handlePopupButtonClose() {
  243. isEditMode(false); // hcLee 2018 01 29
  244. viewModel.isAddHistoryButton(true);
  245. //viewModel.isAddHistoryButton(true);//2019.08.26
  246. popupVisible(false);
  247. }
  248. function refreshList() {
  249. }
  250. function getDoneFunc(messageId) {
  251. return function () {
  252. refreshList();
  253. popupVisible(false);
  254. utils.toast.show($G(messageId));
  255. };
  256. }
  257. function handlePopupButtonSave() {
  258. viewModel.isAddHistoryButton(true);
  259. if (workCheckItemViewModel.TextResult() === "") {
  260. utils.toast.show('작업내용을 입력하세요.', 'error');
  261. return;
  262. }
  263. workCheckItemViewModel.SiteId(tempViewModel.dataModel.SiteId());
  264. workCheckItemViewModel.WorkRequestId(tempViewModel.dataModel.WorkRequestId());
  265. if (isNew()) {
  266. BWA.db.FmsWorkResultCheckItem.insert({
  267. SiteId: workCheckItemViewModel.SiteId(),
  268. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  269. FacilityCode: workCheckItemViewModel.FacilityCode(),
  270. CheckItemId: workCheckItemViewModel.CheckItemId(),
  271. BoolResult: workCheckItemViewModel.BoolResult(),
  272. TextResult: workCheckItemViewModel.TextResult(),
  273. CheckDate: workCheckItemViewModel.CheckDate(),
  274. FileId1: workCheckItemViewModel.FileId1(),
  275. FileId2: workCheckItemViewModel.FileId2(),
  276. }
  277. ).done(function (response, responseKey) {
  278. ///////////////////////2019-11-19 변경
  279. if (responseKey.CheckItemId != null)
  280. workCheckItemViewModel.CheckItemId(responseKey.CheckItemId);
  281. if (_.isNull(viewModel.dropZone1) === false) { //추가
  282. if (workCheckItemViewModel.FileId1() == null) {
  283. viewModel.dropZone1.processQueue();
  284. refreshListData();
  285. }
  286. }
  287. if (_.isNull(viewModel.dropZone2) === false) { //추가
  288. if (workCheckItemViewModel.FileId2() == null) {
  289. viewModel.dropZone2.processQueue();
  290. refreshListData();
  291. }
  292. }
  293. ///////////////////////2019-11-19 변경
  294. // 작업을 완료처리 할 경우
  295. if (workCheckItemViewModel.IsWorkDone()) {
  296. var parameters = {
  297. SiteId: workCheckItemViewModel.SiteId(),
  298. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  299. WorkProgressId: $Code.WorkProgress.WORK_COMPLETE,
  300. UserId: BWA.UserInfo.UserId()
  301. };
  302. //fmsreesult enddate 변경
  303. var store = new DevExpress.data.ODataStore({
  304. url: endpointSelector + "/FmsWorkResult",
  305. key: ["SiteId", "WorkRequestId"],
  306. keyType: { SiteId: "Int32", WorkRequestId: "Int32" }
  307. });
  308. store.update({ SiteId: workCheckItemViewModel.SiteId(), WorkRequestId: workCheckItemViewModel.WorkRequestId() },
  309. {
  310. EndDate: workCheckItemViewModel.IsdateboxCheckDate()
  311. }).done(function (values, key) {
  312. // FmsWorkRequest 업데이트: WorkProgressId(5)
  313. BWA.api.post('FmsWorkRequest', null, parameters).done(function () {
  314. tempViewModel.dataModel.WorkProgressName('작업완료');
  315. var array = materials();
  316. if (array.length != 0) {
  317. var postData;
  318. var parameters2 = {
  319. SiteId: workCheckItemViewModel.SiteId(),
  320. BusinessFieldId: tempViewModel.dataModel.BusinessFieldId(),
  321. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  322. CheckItemId: responseKey.CheckItemId
  323. };
  324. postData = _.map(array, function (m) {
  325. return {
  326. SiteId: workCheckItemViewModel.SiteId(),
  327. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  328. MaterialId: m.MaterialId(),
  329. MaterialCount: m.MaterialCount(),
  330. CheckItemId: responseKey.CheckItemId,
  331. MaterialCode: m.MaterialCode(),
  332. Name: m.Name()
  333. };
  334. });
  335. // FmsWorkResultCheckItemMaterial 에 저장해야 함
  336. BWA.api.post('FmsWorkResultCheckItemMaterial/Update', postData, parameters2).done(function () {
  337. utils.toast.show($G('successDatabaseInsertionMsg'));
  338. materials([]);
  339. isEditMode(false);
  340. popupVisible(false);
  341. refreshListData(); // hcLee 2018 01 29
  342. // hcLee 2016 05 30
  343. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  344. // 작업이력버튼 표시 안함
  345. viewModel.isAddHistoryButton(false);
  346. viewModel.popupVisible(false); // 작업완료는 화면 닫음
  347. });
  348. }
  349. else {
  350. utils.toast.show($G('successDatabaseInsertionMsg'));
  351. isEditMode(false);
  352. refreshListData(); // hcLee 2018 01 29
  353. popupVisible(false);
  354. // 작업이력버튼 표시 안함
  355. viewModel.isAddHistoryButton(false);
  356. viewModel.popupVisible(false); // 작업완료는 화면 닫음
  357. }
  358. utils.toast.show($G('successDatabaseUpdateMsg'));
  359. workCheckItemViewModel.CheckDate('');
  360. workCheckItemViewModel.TextResult('');
  361. workCheckItemViewModel.IsWorkDone(false);
  362. refreshListData(); // hcLee 2018 01 29
  363. viewModel.popupVisible(false); // 작업완료는 화면 닫음
  364. });
  365. })
  366. .fail(function (error) {
  367. utils.toast.show(error);
  368. });
  369. }
  370. else if (workCheckItemViewModel.IsWorkHold()) {
  371. var parameters = {
  372. SiteId: workCheckItemViewModel.SiteId(),
  373. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  374. WorkProgressId: $Code.WorkProgress.WORK_HOLD,
  375. UserId: BWA.UserInfo.UserId()
  376. };
  377. // FmsWorkRequest 업데이트: WorkProgressId(5)
  378. BWA.api.post('FmsWorkRequest', null, parameters).done(function () {
  379. tempViewModel.dataModel.WorkProgressName('작업보류');
  380. var array = materials();
  381. if (array.length != 0) {
  382. var postData;
  383. var parameters2 = {
  384. SiteId: workCheckItemViewModel.SiteId(),
  385. BusinessFieldId: tempViewModel.dataModel.BusinessFieldId(),
  386. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  387. CheckItemId: responseKey.CheckItemId
  388. };
  389. postData = _.map(array, function (m) {
  390. return {
  391. SiteId: workCheckItemViewModel.SiteId(),
  392. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  393. MaterialId: m.MaterialId(),
  394. MaterialCount: m.MaterialCount(),
  395. CheckItemId: responseKey.CheckItemId,
  396. MaterialCode: m.MaterialCode(),
  397. Name: m.Name()
  398. };
  399. });
  400. // FmsWorkResultCheckItemMaterial 에 저장해야 함
  401. BWA.api.post('FmsWorkResultCheckItemMaterial/Update', postData, parameters2).done(function () {
  402. utils.toast.show($G('successDatabaseInsertionMsg'));
  403. isEditMode(false);
  404. materials([]);
  405. refreshListData(); // hcLee 2018 01 29
  406. popupVisible(false);
  407. // hcLee 2016 05 30
  408. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  409. });
  410. }
  411. else {
  412. utils.toast.show($G('successDatabaseInsertionMsg'));
  413. isEditMode(false);
  414. refreshListData(); // hcLee 2018 01 29
  415. popupVisible(false);
  416. }
  417. viewModel.popupVisible(false);
  418. });
  419. }
  420. else {
  421. var array = materials();
  422. if (array.length != 0) {
  423. var postData;
  424. var parameters2 = {
  425. SiteId: workCheckItemViewModel.SiteId(),
  426. BusinessFieldId: tempViewModel.dataModel.BusinessFieldId(),
  427. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  428. CheckItemId: responseKey.CheckItemId
  429. };
  430. postData = _.map(array, function (m) {
  431. return {
  432. SiteId: workCheckItemViewModel.SiteId(),
  433. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  434. MaterialId: (typeof (m.MaterialId) == "function" ? m.MaterialId() : m.MaterialId),
  435. MaterialCount: m.MaterialCount(),
  436. CheckItemId: responseKey.CheckItemId,
  437. MaterialCode: (typeof (m.MaterialCode) == "function" ? m.MaterialCode() : m.MaterialCode),
  438. Name: (typeof (m.Name) == "function" ? m.Name() : m.Name)
  439. };
  440. });
  441. // FmsWorkResultCheckItemMaterial 에 저장해야 함
  442. BWA.api.post('FmsWorkResultCheckItemMaterial/Update', postData, parameters2).done(function () {
  443. utils.toast.show($G('successDatabaseInsertionMsg'));
  444. isEditMode(false);
  445. materials([]);
  446. refreshListData(); // hcLee 2018 01 29
  447. popupVisible(false);
  448. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  449. });
  450. }
  451. else {
  452. utils.toast.show($G('successDatabaseInsertionMsg'));
  453. isEditMode(false);
  454. refreshListData(); // hcLee 2018 01 29
  455. popupVisible(false);
  456. }
  457. }
  458. });
  459. }
  460. else { // 수정? hcLee 2015 12 28
  461. var keys = BWA.db.extractKeysObject('FmsWorkResultCheckItem', workCheckItemViewModel);
  462. BWA.db.FmsWorkResultCheckItem.update(keys,
  463. {
  464. SiteId: workCheckItemViewModel.SiteId(),
  465. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  466. FacilityCode: workCheckItemViewModel.FacilityCode(),
  467. CheckItemId: workCheckItemViewModel.CheckItemId(),
  468. BoolResult: workCheckItemViewModel.BoolResult(),
  469. TextResult: workCheckItemViewModel.TextResult(),
  470. CheckDate: workCheckItemViewModel.CheckDate(),
  471. FileId1: workCheckItemViewModel.FileId1(),
  472. FileId2: workCheckItemViewModel.FileId2(),
  473. }).done(function (res) {
  474. ///////////////////////2019-11-19 변경
  475. if (res.CheckItemId != null)
  476. workCheckItemViewModel.CheckItemId(res.CheckItemId);
  477. if (_.isNull(viewModel.dropZone1) === false) {
  478. if (workCheckItemViewModel.FileId1() != null) { //변경 - 그림삭제
  479. var temp = {
  480. SiteId: BWA.UserInfo.SiteId(),
  481. FileId: workCheckItemViewModel.FileId1()
  482. }
  483. BWA.db.CmFile.byKey(temp).done(function (data) {
  484. viewModel.dropZone1.removeFile(data);
  485. viewModel.dropZone1.processQueue();
  486. refreshListData();
  487. });
  488. }
  489. else {
  490. viewModel.dropZone1.processQueue();//변경 - 그림 삭제 필요없음
  491. refreshListData();
  492. }
  493. }
  494. if (_.isNull(viewModel.dropZone2) === false) {
  495. if (workCheckItemViewModel.FileId2() != null) { //변경 - 그림삭제
  496. var temp = {
  497. SiteId: BWA.UserInfo.SiteId(),
  498. FileId: workCheckItemViewModel.FileId2()
  499. }
  500. BWA.db.CmFile.byKey(temp).done(function (data) {
  501. viewModel.dropZone2.removeFile(data);
  502. viewModel.dropZone2.processQueue();
  503. refreshListData();
  504. });
  505. }
  506. else {
  507. viewModel.dropZone2.processQueue();//변경 - 그림 삭제 필요없음
  508. refreshListData();
  509. }
  510. }
  511. ///////////////////////2019-11-19 변경
  512. // 작업을 완료처리 할 경우
  513. if (workCheckItemViewModel.IsWorkDone()) {
  514. var parameters = {
  515. SiteId: workCheckItemViewModel.SiteId(),
  516. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  517. WorkProgressId: $Code.WorkProgress.WORK_COMPLETE,
  518. UserId: BWA.UserInfo.UserId()
  519. };
  520. // FmsWorkRequest 업데이트: WorkProgressId(5)
  521. BWA.api.post('FmsWorkRequest', null, parameters).done(function () {
  522. var array = materials();
  523. //if (array.length != 0) {
  524. var postData;
  525. var parameters2 = {
  526. SiteId: workCheckItemViewModel.SiteId(),
  527. BusinessFieldId: tempViewModel.dataModel.BusinessFieldId(),
  528. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  529. CheckItemId: workCheckItemViewModel.CheckItemId()
  530. };
  531. postData = _.map(array, function (m) {
  532. return {
  533. SiteId: workCheckItemViewModel.SiteId(),
  534. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  535. MaterialId: (typeof (m.MaterialId) == "function" ? m.MaterialId() : m.MaterialId),
  536. MaterialCount: m.MaterialCount(),
  537. CheckItemId: workCheckItemViewModel.CheckItemId(),
  538. MaterialCode: (typeof (m.MaterialCode) == "function" ? m.MaterialCode() : m.MaterialCode),
  539. Name: (typeof (m.Name) == "function" ? m.Name() : m.Name)
  540. };
  541. });
  542. // FmsWorkResultCheckItemMaterial 에 저장해야 함
  543. BWA.api.post('FmsWorkResultCheckItemMaterial/Update', postData, parameters2).done(function () {
  544. utils.toast.show($G('successDatabaseInsertionMsg'));
  545. isEditMode(false);
  546. materials([]);
  547. refreshListData(); // hcLee 2018 01 29
  548. popupVisible(false);
  549. // 작업이력버튼 표시 안함
  550. viewModel.isAddHistoryButton(false);
  551. // hcLee 2016 05 30
  552. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  553. });
  554. //}
  555. //else {
  556. // utils.toast.show($G('successDatabaseInsertionMsg'));
  557. // refreshListData(); // hcLee 2018 01 29
  558. // popupVisible(false);
  559. // // 작업이력버튼 표시 안함
  560. // viewModel.isAddHistoryButton(false);
  561. //}
  562. utils.toast.show($G('successDatabaseUpdateMsg'));
  563. workCheckItemViewModel.CheckDate('');
  564. workCheckItemViewModel.TextResult('');
  565. workCheckItemViewModel.IsWorkDone(false);
  566. });
  567. }
  568. else {
  569. var array = materials();
  570. var postData;
  571. var parameters2 = {
  572. SiteId: workCheckItemViewModel.SiteId(),
  573. BusinessFieldId: tempViewModel.dataModel.BusinessFieldId(),
  574. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  575. CheckItemId: workCheckItemViewModel.CheckItemId()
  576. };
  577. postData = _.map(array, function (m) {
  578. return {
  579. SiteId: workCheckItemViewModel.SiteId(),
  580. WorkRequestId: workCheckItemViewModel.WorkRequestId(),
  581. MaterialId: m.MaterialId(),
  582. MaterialCount: m.MaterialCount(),
  583. CheckItemId: workCheckItemViewModel.CheckItemId(),
  584. MaterialCode: m.MaterialCode(),
  585. Name: m.Name()
  586. };
  587. });
  588. // FmsWorkResultCheckItemMaterial 에 저장해야 함
  589. BWA.api.post('FmsWorkResultCheckItemMaterial/Update', postData, parameters2).done(function () {
  590. isEditMode(false);
  591. utils.toast.show($G('successDatabaseInsertionMsg'));
  592. materials([]);
  593. refreshListData(); // hcLee 2018 01 29
  594. popupVisible(false);
  595. // hcLee 2016 05 30
  596. viewModel.workResultCheckItemMaterialPopup.refreshMaterialGrid();
  597. });
  598. }
  599. });
  600. }
  601. }
  602. function handleViewShowing() {
  603. viewModel.imagefileUrl1(null);
  604. viewModel.imagefileUrl2(null);
  605. }
  606. function handleViewShown() {
  607. if (!isNew()) {
  608. // hcLee 2018 01 29 -->
  609. if (viewModel.isAddHistoryButton() == false) {
  610. FileView(false);
  611. FileEdit(false);
  612. }
  613. else {
  614. FileView(false);
  615. FileEdit(true);
  616. }
  617. isEditMode(false);
  618. // <-- hcLee 2018 01 29
  619. // 중요 !!! hcLee 2015 12 29
  620. usedMaterialsDataSource.filter([
  621. eq('SiteId', workCheckItemViewModel.SiteId()),
  622. and,
  623. eq('WorkRequestId', workCheckItemViewModel.WorkRequestId()),
  624. and,
  625. eq('CheckItemId', workCheckItemViewModel.CheckItemId())
  626. ]);
  627. //////////////
  628. fmsmaterialsDataSource.filter([
  629. eq('SiteId', viewModel.dataModel.SiteId())
  630. ]);
  631. var fmsMaterialsdata;
  632. fmsmaterialsDataSource.load().done(function (fmsMaterials) {
  633. fmsMaterialsdata = fmsMaterials;
  634. usedMaterialsDataSource.load().done(function (dbMaterials) {
  635. _.each(dbMaterials, function (sm) {
  636. var standard = "";
  637. var StockCount = null;
  638. for (var i = 0; i < fmsMaterialsdata.length ; i++) {
  639. if (sm.MaterialId() == fmsMaterialsdata[i].MaterialId()) {
  640. standard = fmsMaterialsdata[i].Standard();
  641. if (standard == null)
  642. standard = ""
  643. break;
  644. }
  645. }
  646. if (viewModel.dataModel.MaterialExdataSource() != null)
  647. MaterialExdataSource(viewModel.dataModel.MaterialExdataSource())
  648. if (MaterialExdataSource() !== null) {
  649. for (var i = 0; i < MaterialExdataSource().length; i++) {
  650. if (sm.MaterialId() == MaterialExdataSource()[i].MaterialId) {
  651. StockCount = MaterialExdataSource()[i].StockCount;
  652. break;
  653. }
  654. }
  655. }
  656. if (StockCount == null) {
  657. materials.push({
  658. SiteId: sm.SiteId,
  659. MaterialId: sm.MaterialId,
  660. Name: sm.Name,
  661. MaterialCode: sm.MaterialCode,
  662. MaterialCount: sm.MaterialCount,
  663. Standard: standard,
  664. });
  665. } else {
  666. materials.push({
  667. SiteId: sm.SiteId,
  668. MaterialId: sm.MaterialId,
  669. Name: sm.Name,
  670. MaterialCode: sm.MaterialCode,
  671. MaterialCount: sm.MaterialCount,
  672. MaxMaterialCount: StockCount,
  673. Standard: standard,
  674. });
  675. }
  676. });
  677. materialGridView.refresh();
  678. //viewModel.workResultCheckItemMaterialPopup.materialGridView2().refresh();
  679. });
  680. setdownLoadUrl();
  681. });
  682. }// hcLee 2018 01 29 -->
  683. else { // 새이력
  684. viewModel.imagefileUrl1(null);
  685. viewModel.imagefileUrl2(null);
  686. if (viewModel.isAddHistoryButton() == false) {
  687. FileView(false);
  688. FileEdit(false);
  689. isEditMode(false);
  690. }
  691. else {
  692. FileView(true);
  693. FileEdit(false);
  694. isEditMode(true);
  695. }
  696. }
  697. // <-- hcLee 2018 01 29
  698. }
  699. function handlePopupShowing() {
  700. $("#gridContainer3").dxDataGrid({
  701. paging: {
  702. pageSize: 7,
  703. enabled: true
  704. }
  705. });
  706. }
  707. function handlePopuphidden() {
  708. //viewModel.isAddHistoryButton(true);//2019.08.26
  709. }
  710. // hcLee 2018 01 29 -->
  711. function setdownLoadUrl() {
  712. if (_.isNull(viewModel.workCheckItemViewModel.FileId1()) === false) {
  713. viewModel.imagefileUrl1('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, BWA.UserInfo.SiteId(), viewModel.workCheckItemViewModel.FileId1()));
  714. }
  715. else {
  716. viewModel.imagefileUrl1(undefined);
  717. }
  718. if (_.isNull(viewModel.workCheckItemViewModel.FileId2()) === false) {
  719. viewModel.imagefileUrl2('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, BWA.UserInfo.SiteId(), viewModel.workCheckItemViewModel.FileId2()));
  720. }
  721. else {
  722. viewModel.imagefileUrl2(undefined);
  723. }
  724. }
  725. // <-- hcLee 2018 01 29
  726. viewModel.workCheckItemViewModel = workCheckItemViewModel;
  727. return {
  728. IsWorkDone: IsWorkDone,
  729. IsWorkHold: IsWorkHold,
  730. modifiableMaterialDataGridOptions: modifiableMaterialDataGridOptions,
  731. workCheckItemViewModel: workCheckItemViewModel,
  732. popupVisible: popupVisible,
  733. isNew: isNew,
  734. MaterialExdataSource: MaterialExdataSource,
  735. isEditMode: isEditMode,
  736. // hcLee 2018 01 29 -->
  737. FileEdit: FileEdit,
  738. FileView: FileView,
  739. setdownLoadUrl: setdownLoadUrl,
  740. // <-- hcLee 2018 01 29
  741. options: popupOptions,
  742. toolbarItems: toolbarItems,
  743. handlePopupButtonSave: handlePopupButtonSave,
  744. handleViewShown: handleViewShown,
  745. handleViewShowing: handleViewShowing,
  746. handlePopupShowing: handlePopupShowing,
  747. dataModel: dataModel,
  748. switchWorkDone: function (e) {
  749. if (workCheckItemViewModel.IsWorkDone()) {
  750. workCheckItemViewModel.IsWorkHold(false);
  751. }
  752. },
  753. switchWorkHold: function (e) {
  754. if (workCheckItemViewModel.IsWorkDone()) {
  755. workCheckItemViewModel.IsWorkHold(false);
  756. }
  757. },
  758. dateboxCheckDate: function (e) {
  759. if (e.value == "")
  760. var time = e.previousValue;
  761. else
  762. var time = e.value;
  763. workCheckItemViewModel.IsdateboxCheckDate(new Date(time.getFullYear(), time.getMonth(), time.getDate()));
  764. },
  765. show: function () {
  766. popupVisible(true);
  767. }
  768. };
  769. }
  770. }
  771. });