35388c084dfed799f9769aaf51087bea21667a03.svn-base 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317
  1. BemsWebApplication.DailyReport = function (params, viewInfo) {
  2. 'use strict';
  3. var CmBusinessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField');
  4. var CmUserDataSource = BemsWebApplication.db.createDataSource('CmUser');
  5. var SiteId = BWA.UserInfo.SiteId();
  6. var ELECTRICITY = $Code.FacilityType.ELECTRICITY;
  7. var GAS = $Code.FacilityType.GAS;
  8. var style = 'class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;text-align:right"';
  9. var colorstyle = 'class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;text-align:right"';
  10. var borderstyle = "1px solid #CCCCCC";
  11. var endpointSelector = "";
  12. if (BemsWebApplication.config.mode == "production") {
  13. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
  14. } else {
  15. endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
  16. }
  17. var isVisibleApproalButton = ko.observable(false);
  18. var Datecnt = 0, changeDate = false;
  19. var WATER = $Code.FacilityType.WATER;
  20. var MainFormulaId = 1;
  21. var init;
  22. var temptotalcnt = 0, temptempcnt = 0;
  23. var fuelarray = new Array(ELECTRICITY, GAS, WATER);
  24. var fueltotalarray = new Array(3);
  25. var BemsFormulaDataSource = BemsWebApplication.db.createDataSource('BemsFormula');
  26. var BemsFormulaParameterDataSource = BemsWebApplication.db.createDataSource('BemsFormulaParameter');
  27. var BemsMonitoringPointDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPoint');
  28. var click = false;
  29. var BusinessFieldArray;
  30. var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');
  31. var materialClass = ko.observableArray();
  32. var materialClassForSearch = ko.observableArray();
  33. var week = new Array('일', '월', '화', '수', '목', '금', '토');
  34. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
  35. var popupGridInfo = {
  36. 'gridContainerCommon': 'workCommon',
  37. 'gridContainerMaterialUsage': 'fmsMaterial'
  38. };
  39. var tempseq = BemsWebApplication.config.Report.BusinessFieldSeq.Value;
  40. var tempseqEnable = BemsWebApplication.config.Report.BusinessFieldSeq.Enable;
  41. var tempApprove = BemsWebApplication.config.Report.UserSeq.Value;
  42. var tempApproveEnable = BemsWebApplication.config.Report.UserSeq.Enable;
  43. var businessFieldId = BWA.UserInfo.BusinessFieldId();
  44. var commonbusinessFieldId;
  45. var filter = [
  46. eq('SiteId', SiteId),
  47. ];
  48. var dataSourceOptions = {
  49. select: [
  50. 'SiteId',
  51. 'DailyReportId',
  52. 'Name',
  53. 'Contents',
  54. 'RegisterUserId',
  55. 'AddDate',
  56. 'ApproverUserId',
  57. 'ApproveDate',
  58. 'ApproverUserId2',
  59. 'ApproveDate2',
  60. 'ApproverUserId3',
  61. 'ApproveDate3',
  62. 'ApproverUserId4',
  63. 'ApproveDate4',
  64. 'ApproverUserId5',
  65. 'ApproveDate5',
  66. 'CmUser/Name', // 등록자
  67. 'BusinessFieldId',
  68. 'CmBusinessField/Name',
  69. 'Datas',
  70. ],
  71. expand: [
  72. 'CmUser', 'CmBusinessField'
  73. ],
  74. extendOptions: {
  75. forceOriginalField: true
  76. },
  77. filter: filter
  78. };
  79. var viewModel = self.viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsDailyReport', {
  80. dataSourceOptions: dataSourceOptions,
  81. columns: [
  82. { dataField: 'DailyReportId', caption: '번호', width: '8%', alignment: 'center', allowFiltering: false },
  83. { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '8%', alignment: 'center', visible: false },
  84. { dataField: 'Name', caption: '제목', width: '52%', alignment: 'center' },
  85. { dataField: 'CmUser/Name', caption: '등록자', width: '10%', alignment: 'center' },
  86. {
  87. dataField: 'AddDate', caption: '보고일', width: '10%', alignment: 'center', sortOrder: 'desc',
  88. customizeText: function (cellInfo) {
  89. return $G.date(cellInfo.value);
  90. }
  91. },
  92. { dataField: 'ApproverUserId', caption: '결재자', width: '10%', alignment: 'center', visible: false },
  93. //{
  94. // dataField: 'ApproveDate', caption: '결재일', width: '10%', alignment: 'center', visible: false,
  95. // customizeText: function (cellInfo) {
  96. // return $G.date(cellInfo.value);
  97. // }
  98. //},
  99. { dataField: 'ApproverUserId2', caption: '결재자2', width: '10%', alignment: 'center', visible: false },
  100. //{
  101. // dataField: 'ApproveDate2', caption: '결재일2', width: '10%', alignment: 'center', visible: false,
  102. // customizeText: function (cellInfo) {
  103. // return $G.date(cellInfo.value);
  104. // }
  105. //},
  106. { dataField: 'ApproverUserId3', caption: '결재자3', width: '10%', alignment: 'center', visible: false },
  107. //{
  108. // dataField: 'ApproveDate3', caption: '결재일3', width: '10%', alignment: 'center', visible: false,
  109. // customizeText: function (cellInfo) {
  110. // return $G.date(cellInfo.value);
  111. // }
  112. //},
  113. { dataField: 'ApproverUserId4', caption: '결재자4', width: '10%', alignment: 'center', visible: false },
  114. //{
  115. // dataField: 'ApproveDate4', caption: '결재일4', width: '10%', alignment: 'center', visible: false,
  116. // customizeText: function (cellInfo) {
  117. // return $G.date(cellInfo.value);
  118. // }
  119. //},
  120. { dataField: 'ApproverUserId5', caption: '결재자5', width: '10%', alignment: 'center', visible: false },
  121. //{
  122. // dataField: 'ApproveDate5', caption: '결재일5', width: '10%', alignment: 'center', visible: false,
  123. // customizeText: function (cellInfo) {
  124. // return $G.date(cellInfo.value);
  125. // }
  126. //}
  127. ],
  128. searchViewItems: [
  129. { id: 'Name' },
  130. { id: 'AddDate', type: 'dateRange', isOnlyDate: true },
  131. ],
  132. handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
  133. },
  134. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  135. click = true;
  136. dataGrid.clearSelection();
  137. var data = clickRow.data;
  138. var dataModel = viewModel.dataModel;
  139. self.businessFieldId = data.BusinessFieldId();
  140. dataModel.DailyReportId(data.DailyReportId());
  141. popupVisible(true);
  142. if (tempApproveEnable) {
  143. var temp = tempApprove.split(';')
  144. for (var i = 0; i < temp.length; i++) {
  145. if (temp[i] == BWA.UserInfo.UserId()) {
  146. switch (i) {
  147. case 0:
  148. if (data.ApproverUserId() == null) {
  149. isVisibleApproalButton(true);
  150. viewModel.visibleEditButton(true);
  151. }
  152. else {
  153. isVisibleApproalButton(false);
  154. viewModel.visibleEditButton(false);
  155. }
  156. break;
  157. case 1:
  158. if (data.ApproverUserId2() == null) {
  159. isVisibleApproalButton(true);
  160. viewModel.visibleEditButton(true);
  161. }
  162. else {
  163. isVisibleApproalButton(false);
  164. viewModel.visibleEditButton(false);
  165. }
  166. break;
  167. case 2:
  168. if (data.ApproverUserId3() == null) {
  169. isVisibleApproalButton(true);
  170. viewModel.visibleEditButton(true);
  171. }
  172. else {
  173. isVisibleApproalButton(false);
  174. viewModel.visibleEditButton(false);
  175. }
  176. break;
  177. case 3:
  178. if (data.ApproverUserId4() == null) {
  179. isVisibleApproalButton(true);
  180. viewModel.visibleEditButton(true);
  181. }
  182. else {
  183. isVisibleApproalButton(false);
  184. viewModel.visibleEditButton(false);
  185. }
  186. break;
  187. case 4:
  188. if (data.ApproverUserId5() == null) {
  189. isVisibleApproalButton(true);
  190. viewModel.visibleEditButton(true);
  191. }
  192. else {
  193. isVisibleApproalButton(false);
  194. viewModel.visibleEditButton(false);
  195. }
  196. break;
  197. }
  198. break;
  199. }
  200. }
  201. }
  202. else {
  203. if (data.ApproverUserId() == null) {
  204. isVisibleApproalButton(true);
  205. viewModel.visibleEditButton(true);
  206. }
  207. else {
  208. isVisibleApproalButton(false);
  209. viewModel.visibleEditButton(false);
  210. }
  211. }
  212. },
  213. handleViewShowing: function (dataModel) {
  214. for (var i = 0; i < 3; i++) {
  215. BemsFormulaDataSource.filter([
  216. ['SiteId', '=', SiteId],
  217. 'and',
  218. ['FacilityTypeId', '=', fuelarray[i]],
  219. 'and',
  220. ['FormulaId', '=', MainFormulaId]
  221. ]);
  222. $.when(
  223. BemsFormulaDataSource.load()
  224. ).done(function (result) {
  225. var FacilityCode = result[0].FacilityCode();
  226. BemsFormulaParameterDataSource.filter([
  227. ['SiteId', '=', SiteId],
  228. 'and',
  229. ['FacilityCode', '=', FacilityCode],
  230. 'and',
  231. ['FormulaId', '=', MainFormulaId]
  232. ]);
  233. $.when(
  234. BemsFormulaParameterDataSource.load()
  235. ).done(function (result1) {
  236. for (var i = 0; i < fuelarray.length; i++) {
  237. if (fuelarray[i] == result1[0].FacilityTypeId()) {
  238. fueltotalarray[i] = new Array(result1.length);
  239. break;
  240. }
  241. }
  242. var ParameterResult = new Array(result1.length);
  243. for (var i = 0; i < result1.length; i++) {
  244. ParameterResult[i] = {
  245. ParameterFacilityCode: result1[i].ParameterFacilityCode(),
  246. ParameterPropertyId: result1[i].ParameterPropertyId()
  247. }
  248. }
  249. var cnt = 0;
  250. for (var i = 0; i < result1.length; i++) {
  251. BemsMonitoringPointDataSource.filter([
  252. ['SiteId', '=', SiteId],
  253. 'and',
  254. ['FacilityCode', '=', ParameterResult[i].ParameterFacilityCode],
  255. 'and',
  256. ['PropertyId', '=', ParameterResult[i].ParameterPropertyId]
  257. ]);
  258. $.when(
  259. BemsMonitoringPointDataSource.load()
  260. ).done(function (result3) {
  261. fueltotalarray[result3[0].FuelTypeId() - 1][cnt] = {
  262. FacilityCode: result3[0].FacilityCode(),
  263. PropertyId: result3[0].PropertyId(),
  264. Name: result3[0].Name(),
  265. FuelTypeId: result3[0].FuelTypeId(),
  266. Today: 0,
  267. Daybefore: 0,
  268. Dailyusage: 0
  269. }
  270. cnt++
  271. });
  272. }
  273. });
  274. });
  275. }
  276. CmBusinessFieldDataSource.filter([
  277. ['SiteId', '=', SiteId],
  278. 'and',
  279. ['IsUse', '=', true]
  280. ]);
  281. $.when(
  282. CmBusinessFieldDataSource.load()
  283. ).done(function (result) {
  284. BusinessFieldArray = new Array(result.length);
  285. commonbusinessFieldId = result[0].BusinessFieldId();
  286. if (tempseqEnable == false) {
  287. for (var i = 0; i < result.length; i++) {
  288. BusinessFieldArray[i] = {
  289. BusinessFieldId: result[i].BusinessFieldId,
  290. BusinessFieldName: result[i].Name
  291. }
  292. }
  293. }
  294. else {
  295. var tempseqsplit = tempseq.split(';');
  296. for (var i = 0; i < tempseqsplit.length; i++) {
  297. for (var j = 0; j < result.length; j++) {
  298. if (parseInt(tempseqsplit[i]) == result[j].BusinessFieldId()) {
  299. BusinessFieldArray[i] = {
  300. BusinessFieldId: result[j].BusinessFieldId,
  301. BusinessFieldName: result[j].Name
  302. }
  303. break;
  304. }
  305. }
  306. }
  307. }
  308. });
  309. MaterialCodeClassDataSource.filter([
  310. ['SiteId', '=', SiteId]
  311. ]);
  312. $.when(
  313. MaterialCodeClassDataSource.load()
  314. ).done(function (Result) {
  315. materialClass = ko.observableArray();
  316. var cnt = 0;
  317. for (var i = 0; i < Result.length; i++) {
  318. materialClass.push(Result[i]);
  319. }
  320. materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass()));
  321. });
  322. // 계속 push되는 현상을 막기위해 필터 초기화
  323. //dataSourceOptions.filter.splice(0, dataSourceOptions.filter.length);
  324. //dataSourceOptions.filter.push([eq('SiteId', SiteId)]);
  325. },
  326. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  327. Datecnt = 0;
  328. var $BusinessDataCommon = $('#BusinessDataCommon'); // finds the <detail> element
  329. $('#BusinessDataCommon').empty();
  330. for (var i = 1; i < BusinessFieldArray.length; i++) {
  331. var tempworkCommon = 'workCommon' + i;
  332. popupGridInfo['gridContainerCommon' + i] = tempworkCommon;
  333. $('<div id = componentcommon' + i + ' class="jh-popup-group" style="padding-top:10px"><div class="jh-popup-label fold_btn">' + BusinessFieldArray[i].BusinessFieldName() + " 작업관리" + '</div><div class="act_folding"><div id="gridContainerCommon' + i + '" class="jh-grid-in-popup" style="height:200px"/></div></div>')
  334. .appendTo($BusinessDataCommon)
  335. }
  336. var $BusinessDataMaterial = $('#BusinessDataMaterial'); // finds the <detail> element
  337. $('#BusinessDataMaterial').empty();
  338. for (var i = 1; i < BusinessFieldArray.length; i++) {
  339. var tempfmsMaterial = 'fmsMaterial' + i;
  340. popupGridInfo['gridContainerMaterialUsage' + i] = tempfmsMaterial;
  341. $('<div id = componentmaterial' + i + ' class="jh-popup-group" style="padding-top:10px"><div class="jh-popup-label fold_btn">' + BusinessFieldArray[i].BusinessFieldName() + " 자재사용내역" + '</div><div class="act_folding"><div id="gridContainerMaterialUsage' + i + '" class="jh-grid-in-popup" style="height:200px;;padding-top:3px"/></div></div>')
  342. .appendTo($BusinessDataMaterial)
  343. }
  344. // 신규등록인 경우
  345. init = isNewInPopup();
  346. if (isNewInPopup()) {
  347. isVisibleApproalButton(false);
  348. self.businessFieldId = BWA.UserInfo.BusinessFieldId();
  349. var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode];
  350. $.get(urlHeader + '/DailyReport/CurrentDate', function (date) {
  351. var day = new Date();//var day = new Date(date);
  352. dataViewModel.RegisterDate(day);
  353. day.setDate(day.getDate() - 1);
  354. dataViewModel.AddDate(day);
  355. dataViewModel.Name("[" + new Date(day).format("yyyy-MM-dd") + " " + week[day.getDay()] + "] 업무 일지");
  356. dataViewModel.RegisterUserId(BWA.UserInfo.UserId());
  357. dataViewModel.ReportUrl('');
  358. if (tempseqEnable)
  359. dataViewModel.dataseq(tempseq);
  360. if (tempApproveEnable) {
  361. dataViewModel.Approveseq(tempApprove);
  362. dataViewModel.ApproveCnt(tempApprove.split(';').length);
  363. }
  364. loadBasicInfos();
  365. });
  366. }
  367. else {
  368. EnergyTableCreate();
  369. }
  370. },
  371. handlePopupShown: function () {
  372. setReportLink();
  373. if (!init) {
  374. setPopupGridViewAll();
  375. }
  376. else {
  377. EnergyDataTable();
  378. }
  379. handlePopupShowingExtra();
  380. },
  381. handleViewShown: function (dataViewModel, isEditModeInPopup) {
  382. if (tempApproveEnable) {
  383. var temp = tempApprove.split(';')
  384. for (var i = 2; i <= temp.length; i++) {
  385. $("#gridContainer").dxDataGrid("columnOption", "ApproverUserId" + i, "visible", true);
  386. }
  387. }
  388. $("#gridContainer").dxDataGrid("columnOption", "ApproverUserId", "visible", true);
  389. viewModel.refreshList();
  390. },
  391. handleCancelInPopup: function (dataModel) {
  392. for (var i = 1; i <= temptempcnt; i++) {
  393. for (var j = 1; j <= 5; j++) {
  394. document.getElementById("viewmode" + i + j).style.display = "inline-block";
  395. }
  396. }
  397. for (var i = 1; i <= temptotalcnt; i++) {
  398. for (var j = 1; j <= 5; j++) {
  399. document.getElementById("vitotal" + i + j).style.display = "inline-block";
  400. }
  401. }
  402. for (var i = 1; i <= temptempcnt; i++) {
  403. for (var j = 1; j <= 5; j++) {
  404. document.getElementById("editmode" + i + j).style.display = "none";
  405. }
  406. }
  407. for (var i = 1; i <= temptotalcnt; i++) {
  408. for (var j = 1; j <= 5; j++) {
  409. document.getElementById("edtotal" + i + j).style.display = "none";
  410. }
  411. }
  412. },
  413. handlePopupButtonEdit: function (dataModel) {
  414. //document.getElementById("Viewdate").style.display = "inline-block";
  415. //document.getElementById("Editdate").style.display = "none";
  416. for (var i = 1; i <= temptempcnt; i++) {
  417. for (var j = 1; j <= 5; j++) {
  418. document.getElementById("viewmode" + i + j).style.display = "none";
  419. }
  420. }
  421. for (var i = 1; i <= temptotalcnt; i++) {
  422. for (var j = 1; j <= 5; j++) {
  423. document.getElementById("vitotal" + i + j).style.display = "none";
  424. }
  425. }
  426. for (var i = 1; i <= temptempcnt; i++) {
  427. for (var j = 1; j <= 5; j++) {
  428. document.getElementById("editmode" + i + j).style.display = "inline-block";
  429. }
  430. }
  431. for (var i = 1; i <= temptotalcnt; i++) {
  432. for (var j = 1; j <= 5; j++) {
  433. document.getElementById("edtotal" + i + j).style.display = "inline-block";
  434. }
  435. }
  436. },
  437. getAddedToolbarItemsInPopup: function (e) {
  438. return [
  439. {
  440. location: 'after', widget: 'button', options: {
  441. text: '결재', icon: 'add', type: 'success', visible: isVisibleApproalButton,
  442. clickAction: Approve
  443. }
  444. }];
  445. },
  446. popupWidth: '1200px'
  447. });
  448. function Approve() {
  449. if (tempApproveEnable) {
  450. var temp = tempApprove.split(';')
  451. for (var i = 0; i < temp.length; i++) {
  452. if (temp[i] == BWA.UserInfo.UserId()) {
  453. switch (i) {
  454. case 0:
  455. viewModel.dataModel.ApproverUserId(BWA.UserInfo.Name());
  456. viewModel.dataModel.ApproveDate(new Date());
  457. break;
  458. case 1:
  459. if (viewModel.dataModel.ApproverUserId() == null) {
  460. utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error");
  461. return;
  462. }
  463. else {
  464. viewModel.dataModel.ApproverUserId2(BWA.UserInfo.Name());
  465. viewModel.dataModel.ApproveDate2(new Date());
  466. }
  467. break;
  468. case 2:
  469. if (viewModel.dataModel.ApproverUserId2() == null) {
  470. utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error");
  471. return;
  472. }
  473. else {
  474. viewModel.dataModel.ApproverUserId3(BWA.UserInfo.Name());
  475. viewModel.dataModel.ApproveDate3(new Date());
  476. }
  477. break;
  478. case 3:
  479. if (viewModel.dataModel.ApproverUserId3() == null) {
  480. utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error");
  481. return;
  482. }
  483. else {
  484. viewModel.dataModel.ApproverUserId4(BWA.UserInfo.Name());
  485. viewModel.dataModel.ApproveDate4(new Date());
  486. }
  487. break;
  488. case 4:
  489. if (viewModel.dataModel.ApproverUserId4() == null) {
  490. utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error");
  491. return;
  492. }
  493. else {
  494. viewModel.dataModel.ApproverUserId5(BWA.UserInfo.Name());
  495. viewModel.dataModel.ApproveDate5(new Date());
  496. }
  497. break;
  498. }
  499. var keys = BWA.db.extractKeysObject('FmsDailyReport', viewModel.dataModel);
  500. BWA.db.FmsDailyReport.update(keys, viewModel.dataModel.toJS()).done(function (res) {
  501. utils.toast.show("성공적으로 결재가 진행되었습니다.");
  502. viewModel.popupOptions.visible(false);
  503. viewModel.gridView().refresh();
  504. }).fail(function (error) {
  505. utils.toast.show("결재가 실패하였습니다.", "error");
  506. });
  507. }
  508. }
  509. }
  510. else {
  511. viewModel.dataModel.ApproverUserId(BWA.UserInfo.Name());
  512. viewModel.dataModel.ApproveDate(new Date());
  513. var keys = BWA.db.extractKeysObject('FmsDailyReport', viewModel.dataModel);
  514. BWA.db.FmsDailyReport.update(keys, viewModel.dataModel.toJS()).done(function (res) {
  515. utils.toast.show("성공적으로 결재가 진행되었습니다.");
  516. viewModel.popupOptions.visible(false);
  517. viewModel.gridView().refresh();
  518. }).fail(function (error) {
  519. utils.toast.show("결재가 실패하였습니다.", "error");
  520. });
  521. }
  522. }
  523. function DateChange(e) {
  524. if (e.value != null) {
  525. if (init) {
  526. if (Datecnt != 0) {
  527. changeDate = true;
  528. var $BusinessDataCommon = $('#BusinessDataCommon'); // finds the <detail> element
  529. $('#BusinessDataCommon').empty();
  530. for (var i = 1; i < BusinessFieldArray.length; i++) {
  531. var tempworkCommon = 'workCommon' + i;
  532. popupGridInfo['gridContainerCommon' + i] = tempworkCommon;
  533. $('<div id = componentcommon' + i + ' class="jh-popup-group" style="padding-top:10px"><div class="jh-popup-label fold_btn">' + BusinessFieldArray[i].BusinessFieldName() + " 작업관리" + '</div><div class="act_folding"><div id="gridContainerCommon' + i + '" class="jh-grid-in-popup" style="height:200px"/></div></div>')
  534. .appendTo($BusinessDataCommon)
  535. }
  536. var $BusinessDataMaterial = $('#BusinessDataMaterial'); // finds the <detail> element
  537. $('#BusinessDataMaterial').empty();
  538. for (var i = 1; i < BusinessFieldArray.length; i++) {
  539. var tempfmsMaterial = 'fmsMaterial' + i;
  540. popupGridInfo['gridContainerMaterialUsage' + i] = tempfmsMaterial;
  541. $('<div id = componentmaterial' + i + ' class="jh-popup-group" style="padding-top:10px"><div class="jh-popup-label fold_btn">' + BusinessFieldArray[i].BusinessFieldName() + " 자재사용내역" + '</div><div class="act_folding"><div id="gridContainerMaterialUsage' + i + '" class="jh-grid-in-popup" style="height:200px;;padding-top:3px"/></div></div>')
  542. .appendTo($BusinessDataMaterial)
  543. }
  544. self.businessFieldId = BWA.UserInfo.BusinessFieldId();
  545. var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode];
  546. $.get(urlHeader + '/DailyReport/CurrentDate', function (date) {
  547. viewModel.dataModel.AddDate(new Date(e.value));
  548. viewModel.dataModel.Name("[" + new Date(e.value).format("yyyy-MM-dd") + " " + week[e.value.getDay()] + "] 업무 일지");
  549. viewModel.dataModel.RegisterUserId(BWA.UserInfo.UserId());
  550. viewModel.dataModel.ReportUrl('');
  551. loadBasicInfos();
  552. });
  553. Datecnt = 0;
  554. }
  555. Datecnt++;
  556. }
  557. }
  558. }
  559. function EnergyTableCreate() {
  560. var totalcnt = 0, tempcnt = 0;
  561. var Name = "", FuelId = 0;
  562. var totaladd = false;
  563. var dataModel = viewModel.dataModel;
  564. for (var i = 0; i < 2; i++) {
  565. tempcnt += fueltotalarray[i].length;
  566. }
  567. var $EnergyData = $('#EnergyData');
  568. $('#EnergyData').empty();
  569. for (var i = 1; i <= tempcnt; i++) {
  570. if (i <= fueltotalarray[0].length) {
  571. var Name = fueltotalarray[0][i - 1].Name;
  572. var FuelId = fueltotalarray[0][i - 1].FuelTypeId;
  573. if (i == fueltotalarray[0].length)
  574. totaladd = true;
  575. }
  576. else {
  577. var Name = fueltotalarray[1][i - 3].Name;
  578. var FuelId = fueltotalarray[1][i - 3].FuelTypeId;
  579. if (i == fueltotalarray[0].length + fueltotalarray[1].length)
  580. totaladd = true;
  581. }
  582. var FuelName = "";
  583. var UnitName = "";
  584. switch (FuelId) {
  585. case 1:
  586. FuelName = "전력";
  587. UnitName = "(kwh)";
  588. break;
  589. case 2:
  590. FuelName = "가스";
  591. UnitName = "(m3)";
  592. break;
  593. case 3:
  594. FuelName = "상수도";
  595. break;
  596. }
  597. //수정 창
  598. $('<div id="editmode' + i + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;">' + Name +
  599. '</div><div id="editmode' + i + '2" ' + style + ' data-bind="dxTextArea: { value: dataModel.resultEnergy' + i + 'Today}">' + //dataModel.resultEnergy' + i + '.Today
  600. '</div><div id="editmode' + i + '3" ' + style + ' data-bind="dxTextArea: { value: dataModel.resultEnergy' + i + 'Daybefore}">' + //dataModel.resultEnergy' + i + '.Daybefore}
  601. '</div><div id="editmode' + i + '4" ' + style + ' data-bind="dxTextArea: { value: dataModel.resultEnergy' + i + 'Dailyusage}">' +// dataModel.resultEnergy' + i + '.Dailyusage
  602. '</div><div id="editmode' + i + '5" ' + style + ' data-bind="dxTextArea: { value: dataModel.resultEnergy' + i + 'Monthusage}"></div>')//dataModel.resultEnergy' + i + '.Monthusage
  603. .appendTo($EnergyData)
  604. //보는창
  605. $('<div id="viewmode' + i + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;">' + Name +
  606. '</div><div id="viewmode' + i + '2" ' + style + ' data-bind="text: dataModel.resultEnergy' + i + 'Today">' +
  607. '</div><div id="viewmode' + i + '3" ' + style + ' data-bind="text: dataModel.resultEnergy' + i + 'Daybefore">' +
  608. '</div><div id="viewmode' + i + '4" ' + style + ' data-bind="text: dataModel.resultEnergy' + i + 'Dailyusage">' +
  609. '</div><div id="viewmode' + i + '5" ' + style + ' data-bind="text: dataModel.resultEnergy' + i + 'Monthusage"></div>')
  610. .appendTo($EnergyData)
  611. dataModel['resultEnergy' + i + 'Name'](Name);
  612. dataModel['resultEnergy' + i + 'Today'](0);
  613. dataModel['resultEnergy' + i + 'Daybefore'](0);
  614. dataModel['resultEnergy' + i + 'Dailyusage'](0);
  615. dataModel['resultEnergy' + i + 'Monthusage'](0);
  616. if (i == tempcnt) {
  617. for (var j = tempcnt + 1; j <= 9; j++) {
  618. dataModel['resultEnergy' + j + 'Name']("");
  619. dataModel['resultEnergy' + j + 'Today'](0);
  620. dataModel['resultEnergy' + j + 'Daybefore'](0);
  621. dataModel['resultEnergy' + j + 'Dailyusage'](0);
  622. dataModel['resultEnergy' + j + 'Monthusage'](0);
  623. }
  624. }
  625. if (totaladd == true) {
  626. totalcnt++;
  627. //수정창
  628. $('<div id="edtotal' + totalcnt + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;">' + FuelName + " 합계" + UnitName +
  629. '</div><div id="edtotal' + totalcnt + '2" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Today}">' +
  630. '</div><div id="edtotal' + totalcnt + '3" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Daybefore}">' +
  631. '</div><div id="edtotal' + totalcnt + '4" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Dailyusage}">' +
  632. '</div><div id="edtotal' + totalcnt + '5" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Monthusage}"></div>')
  633. .appendTo($EnergyData)
  634. //보는창
  635. $('<div id="vitotal' + totalcnt + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;">' + FuelName + " 합계" + UnitName +
  636. '</div><div id="vitotal' + totalcnt + '2" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Today">' +
  637. '</div><div id="vitotal' + totalcnt + '3" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Daybefore">' +
  638. '</div><div id="vitotal' + totalcnt + '4" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Dailyusage">' +
  639. '</div><div id="vitotal' + totalcnt + '5" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Monthusage"></div>')
  640. .appendTo($EnergyData)
  641. totaladd = false;
  642. dataModel['resultEnergytotal' + totalcnt + 'Name'](FuelName + " 합계" + UnitName);
  643. dataModel['resultEnergytotal' + totalcnt + 'Today'](0);
  644. dataModel['resultEnergytotal' + totalcnt + 'Daybefore'](0);
  645. dataModel['resultEnergytotal' + totalcnt + 'Dailyusage'](0);
  646. dataModel['resultEnergytotal' + totalcnt + 'Monthusage'](0);
  647. }
  648. if (i == tempcnt && fueltotalarray[2].length != 0) {
  649. totalcnt++;
  650. //수정창
  651. $('<div id="edtotal' + totalcnt + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;">' + "상수도 합계(m3)" +
  652. '</div><div id="edtotal' + totalcnt + '2" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Today}">' +
  653. '</div><div id="edtotal' + totalcnt + '3" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Daybefore}">' +
  654. '</div><div id="edtotal' + totalcnt + '4" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Dailyusage}">' +
  655. '</div><div id="edtotal' + totalcnt + '5" ' + colorstyle + ' data-bind="dxTextArea: { value: dataModel.resultEnergytotal' + totalcnt + 'Monthusage}"></div>')
  656. .appendTo($EnergyData)
  657. //보는창
  658. $('<div id="vitotal' + totalcnt + '1" class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;">' + "상수도 합계(m3)" +
  659. '</div><div id="vitotal' + totalcnt + '2" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Today">' +
  660. '</div><div id="vitotal' + totalcnt + '3" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Daybefore">' +
  661. '</div><div id="vitotal' + totalcnt + '4" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Dailyusage">' +
  662. '</div><div id="vitotal' + totalcnt + '5" ' + colorstyle + ' data-bind="text: dataModel.resultEnergytotal' + totalcnt + 'Monthusage"></div>')
  663. .appendTo($EnergyData)
  664. dataModel['resultEnergytotal' + totalcnt + 'Name']("상수도 합계(m3)");
  665. dataModel['resultEnergytotal' + totalcnt + 'Today'](0);
  666. dataModel['resultEnergytotal' + totalcnt + 'Daybefore'](0);
  667. dataModel['resultEnergytotal' + totalcnt + 'Dailyusage'](0);
  668. dataModel['resultEnergytotal' + totalcnt + 'Monthusage'](0);
  669. }
  670. }
  671. temptempcnt = tempcnt;
  672. temptotalcnt = totalcnt;
  673. var cnt = tempcnt + totalcnt - 1;
  674. document.getElementById("EnergyDataup3").style.height = 109 + (cnt * 35) + "px";
  675. document.getElementById("EnergyDataup2").style.height = 72 + (cnt * 35) + "px";
  676. document.getElementById("EnergyDataup1").style.height = 36 + (cnt * 35) + "px";
  677. document.getElementById("EnergyData").style.height = 36 + (cnt * 35) + "px";
  678. for (var i = 1; i <= tempcnt; i++) {
  679. for (var j = 1; j <= 5; j++) {
  680. document.getElementById("editmode" + i + j).style.border = borderstyle;
  681. ko.applyBindings(viewModel, $("#editmode" + i + j)[0]);
  682. document.getElementById("viewmode" + i + j).style.border = borderstyle;
  683. ko.applyBindings(viewModel, $("#viewmode" + i + j)[0]);
  684. }
  685. }
  686. for (var i = 1; i <= totalcnt; i++) {
  687. for (var j = 1; j <= 5; j++) {
  688. document.getElementById("edtotal" + i + j).style.border = borderstyle;
  689. ko.applyBindings(viewModel, $("#edtotal" + i + j)[0]);
  690. document.getElementById("vitotal" + i + j).style.border = borderstyle;
  691. ko.applyBindings(viewModel, $("#vitotal" + i + j)[0]);
  692. }
  693. }
  694. if (click) {
  695. for (var i = 1; i <= temptempcnt; i++) {
  696. for (var j = 1; j <= 5; j++) {
  697. document.getElementById("editmode" + i + j).style.display = "none";
  698. }
  699. }
  700. for (var i = 1; i <= totalcnt; i++) {
  701. for (var j = 1; j <= 5; j++) {
  702. document.getElementById("edtotal" + i + j).style.display = "none";
  703. }
  704. }
  705. click = false;
  706. }
  707. else {
  708. for (var i = 1; i <= temptempcnt; i++) {
  709. for (var j = 1; j <= 5; j++) {
  710. document.getElementById("viewmode" + i + j).style.display = "none";
  711. }
  712. }
  713. for (var i = 1; i <= totalcnt; i++) {
  714. for (var j = 1; j <= 5; j++) {
  715. document.getElementById("vitotal" + i + j).style.display = "none";
  716. }
  717. }
  718. click = false;
  719. for (var i = 1; i < 4; i++) {
  720. dataModel['resultEnergytotal' + i + 'Today'](0);
  721. dataModel['resultEnergytotal' + i + 'Daybefore'](0);
  722. dataModel['resultEnergytotal' + i + 'Dailyusage'](0);
  723. dataModel['resultEnergytotal' + i + 'Monthusage'](0);
  724. }
  725. }
  726. if (changeDate) {
  727. setReportLink();
  728. EnergyDataTable();
  729. handlePopupShowingExtra();
  730. changeDate = false;
  731. }
  732. }
  733. function setReportLink() {
  734. var addDate = $G.date(viewModel.dataModel.AddDate());
  735. var urlHeader = BemsWebApplication.config.endpoints.service[BemsWebApplication.config.mode];
  736. var reportUrl = urlHeader + '/Report/DailyReportView.aspx?SiteId=' + SiteId + '&AddDate=' + addDate + '&BusinessFieldId=' + self.businessFieldId;
  737. viewModel.dataModel.ReportUrl(reportUrl);
  738. }
  739. function handlePopupShowingExtra() {
  740. // 메뉴 접기 기능
  741. $('.fold_btn').unbind('click');
  742. $('.fold_btn').click(function () {
  743. $(this).siblings('.act_folding').slideToggle();
  744. $(this).siblings().find('.act_folding').slideToggle();
  745. });
  746. // 마우스 휠 이벤트
  747. $('.cw-wordwrap, .dx-popup-content').unbind('dxmousewheel');
  748. $('.cw-wordwrap, .dx-popup-content').on("dxmousewheel", function (e) {
  749. e.stopPropagation();
  750. });
  751. }
  752. function initCap(str) {
  753. var str = str.substring(0, 1).toUpperCase() + str.substring(1, str.length);
  754. return str;
  755. }
  756. function makeUrl(SiteId, businessFieldId) {
  757. var AddDate = $G.date(viewModel.dataModel.AddDate());
  758. var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode];
  759. var url = {
  760. workStatus: urlHeader + '/DailyReport/WorkStatus?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId,
  761. workCommon: urlHeader + '/DailyReport/FmsWorkRequestForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId,
  762. fmsMaterial: urlHeader + '/DailyReport/FmsMaterialForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId,
  763. }
  764. for (var i = 1; i < BusinessFieldArray.length; i++) {
  765. url['workCommon' + i] = urlHeader + '/DailyReport/FmsWorkRequestForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + BusinessFieldArray[i].BusinessFieldId();
  766. url['fmsMaterial' + i] = urlHeader + '/DailyReport/FmsMaterialForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + BusinessFieldArray[i].BusinessFieldId();
  767. }
  768. return url;
  769. }
  770. function loadBasicInfos() {
  771. var init = true;
  772. var userId = BWA.UserInfo.UserId();
  773. viewModel.dataModel.BusinessFieldId(commonbusinessFieldId);
  774. var urls = makeUrl(SiteId, commonbusinessFieldId);
  775. var cnt = 0;
  776. var dataModel = viewModel.dataModel;
  777. for (var i = 1; i < BusinessFieldArray.length; i++) {
  778. $.when($.get(urls['workCommon' + i]),
  779. $.get(urls['fmsMaterial' + i])
  780. ).done(function (tempworkCommon, tempfmsMaterial) {
  781. if (init) {
  782. if (tempworkCommon[0].length == 0) {
  783. for (var i = 1; i < BusinessFieldArray.length; i++) {
  784. dataModel['resultWorkCommon' + i](tempworkCommon[0]);
  785. dataModel['resultFmsMaterial' + i](tempfmsMaterial[0]);
  786. }
  787. }
  788. else {
  789. var k = 0;
  790. for (var i = 0; i < BusinessFieldArray.length; i++) {
  791. if (BusinessFieldArray[i].BusinessFieldId() == tempworkCommon[0][0].BusinessFieldId) {
  792. break;
  793. }
  794. else {
  795. k++;
  796. }
  797. }
  798. dataModel['resultWorkCommon' + k](tempworkCommon[0]);
  799. for (var i = 0; i < tempfmsMaterial[0].length; i++) {
  800. for (var j = 1; j < materialClassForSearch().length; j++) {
  801. if (tempfmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) {
  802. tempfmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name();
  803. break;
  804. }
  805. }
  806. for (var j = 1; j < materialClassForSearch().length; j++) {
  807. if (tempfmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) {
  808. tempfmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name();
  809. break;
  810. }
  811. }
  812. for (var j = 1; j < materialClassForSearch().length; j++) {
  813. if (tempfmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) {
  814. tempfmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name();
  815. break;
  816. }
  817. }
  818. }
  819. dataModel['resultFmsMaterial' + k](tempfmsMaterial[0]);
  820. }
  821. init = false;
  822. }
  823. else {
  824. if (tempworkCommon[0].length == 0) {
  825. for (var i = 1; i < BusinessFieldArray.length; i++) {
  826. if (dataModel['resultWorkCommon' + i]() == null) {
  827. dataModel['resultWorkCommon' + i](tempworkCommon[0]);
  828. dataModel['resultFmsMaterial' + i](tempfmsMaterial[0]);
  829. }
  830. }
  831. }
  832. else {
  833. var k = 0;
  834. for (var i = 0; i < BusinessFieldArray.length; i++) {
  835. if (BusinessFieldArray[i].BusinessFieldId() == tempworkCommon[0][0].BusinessFieldId) {
  836. break;
  837. }
  838. else {
  839. k++;
  840. }
  841. }
  842. dataModel['resultWorkCommon' + k](tempworkCommon[0]);
  843. for (var i = 0; i < tempfmsMaterial[0].length; i++) {
  844. for (var j = 1; j < materialClassForSearch().length; j++) {
  845. if (tempfmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) {
  846. tempfmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name();
  847. break;
  848. }
  849. }
  850. for (var j = 1; j < materialClassForSearch().length; j++) {
  851. if (tempfmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) {
  852. tempfmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name();
  853. break;
  854. }
  855. }
  856. for (var j = 1; j < materialClassForSearch().length; j++) {
  857. if (tempfmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) {
  858. tempfmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name();
  859. break;
  860. }
  861. }
  862. }
  863. dataModel['resultFmsMaterial' + k](tempfmsMaterial[0]);
  864. }
  865. }
  866. cnt++;
  867. if (cnt == BusinessFieldArray.length - 1) {
  868. $.when($.get(urls.workStatus),
  869. $.get(urls.workCommon),
  870. $.get(urls.fmsMaterial)
  871. ).done(function (resultWorkStatus, resultWorkCommon, resultFmsMaterial) {
  872. dataModel.WorkStatusTypeOccasional(resultWorkStatus[0].WorkStatusTypeOccasional);
  873. dataModel.WorkStatusTypePeriodicInspection(resultWorkStatus[0].WorkStatusTypePeriodicInspection);
  874. dataModel.WorkStatusTypeForensicExamination(resultWorkStatus[0].WorkStatusTypeForensicExamination);
  875. dataModel.WorkStatusTypeEtc(resultWorkStatus[0].WorkStatusTypeEtc);
  876. dataModel.WorkStatusTypeTotal(resultWorkStatus[0].WorkStatusTypeTotal);
  877. dataModel.WorkStatusPending(resultWorkStatus[0].WorkStatusPending);
  878. dataModel.WorkStatusInProgress(resultWorkStatus[0].WorkStatusInProgress);
  879. dataModel.WorkStatusDeferred(resultWorkStatus[0].WorkStatusDeferred);
  880. dataModel.WorkStatusComplete(resultWorkStatus[0].WorkStatusComplete);
  881. dataModel.WorkStatusApproved(resultWorkStatus[0].WorkStatusApproved);
  882. dataModel.WorkStatusTotal(resultWorkStatus[0].WorkStatusTotal);
  883. dataModel.resultWorkCommon(resultWorkCommon[0]);
  884. for (var i = 0; i < resultFmsMaterial[0].length; i++) {
  885. for (var j = 1; j < materialClassForSearch().length; j++) {
  886. if (resultFmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) {
  887. resultFmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name();
  888. break;
  889. }
  890. }
  891. for (var j = 1; j < materialClassForSearch().length; j++) {
  892. if (resultFmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) {
  893. resultFmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name();
  894. break;
  895. }
  896. }
  897. for (var j = 1; j < materialClassForSearch().length; j++) {
  898. if (resultFmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) {
  899. resultFmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name();
  900. break;
  901. }
  902. }
  903. }
  904. dataModel.resultFmsMaterial(resultFmsMaterial[0]);
  905. setPopupGridViewAll();
  906. EnergyTableCreate();
  907. });
  908. }
  909. });
  910. }
  911. }
  912. function setPopupGridViewAll() {
  913. for (var gridId in popupGridInfo) {
  914. setPopupGridView(gridId);
  915. }
  916. }
  917. function setPopupGridView(gridId) {
  918. if (gridId.substring(13, 19) == 'Common') {
  919. var grid = handleGridViewInPopup(gridId, {
  920. dataSource: getDataSource(gridId)(),
  921. columns: getColumns(gridId),
  922. onSelectionChanged: function (e) {
  923. e.component.collapseAll(-1);
  924. e.component.expandRow(e.currentSelectedRowKeys[0]);
  925. },
  926. masterDetail: {
  927. enabled: true,
  928. autoExpandAll: false,
  929. template: function (container, options) {
  930. var checkitemData = options.data;
  931. var temptext = checkitemData.TextResult;
  932. var tempdate = checkitemData.TextResultDate;
  933. if (temptext != null) {
  934. for (var i = 0; i < temptext.length; i++) {
  935. var result = temptext[i].replace(/\n/gi, '</p><p>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&nbsp;&ensp;');
  936. result = result.replace(/\?-/g, " -");
  937. container.append($('<p class id="temptext" style="padding-left:17px">' + new Date(tempdate[i]).format("yyyy-MM-dd") + " - " + result + '</p>'));
  938. //container.append($('<p class id="temptext" style="padding-left:17px">' + new Date(tempdate[i]).format("yyyy-MM-dd") + " - " + temptext[i] + '</p>'));
  939. }
  940. }
  941. }
  942. }
  943. });
  944. }
  945. else {
  946. var grid = handleGridViewInPopup(gridId, {
  947. dataSource: getDataSource(gridId)(),
  948. columns: getColumns(gridId),
  949. });
  950. }
  951. grid.refresh();
  952. }
  953. function getColumns(gridId) {
  954. if (gridId.substring(13, 19) == 'Common') {
  955. return [
  956. { dataField: 'No', caption: '번호', width: '5%', alignment: 'center' },
  957. { dataField: 'WorkTypeId', caption: '작업구분', width: '7%', alignment: 'center' },
  958. { dataField: 'RequestDate', caption: '민원접수일시', width: '20%', alignment: 'center', dataType: 'date', format: 'yyyy-MM-dd HH:mm', visible: false },
  959. { dataField: 'WorkProgressId', caption: '작업상태', width: '8%', alignment: 'center' },
  960. { dataField: 'Title', caption: '작업명', width: '80%', alignment: 'center' }
  961. ];
  962. } else {
  963. return [
  964. { dataField: 'No', caption: '번호', width: '5%', alignment: 'center', allowFiltering: false },
  965. { dataField: 'ReleaseType', caption: '출고구분', width: '7%', alignment: 'center' },
  966. {
  967. dataField: 'FirstClassId', caption: '자재(대)', width: '8%', alignment: 'center',
  968. customizeText: function (cellInfo) {
  969. for (var i = 1; i < materialClassForSearch().length; i++) {
  970. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  971. return materialClassForSearch()[i].Name();
  972. }
  973. }
  974. }
  975. },
  976. {
  977. dataField: 'SecondClassId', caption: '자재(중)', width: '8%', alignment: 'center',
  978. customizeText: function (cellInfo) {
  979. for (var i = 1; i < materialClassForSearch().length; i++) {
  980. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  981. return materialClassForSearch()[i].Name();
  982. }
  983. }
  984. }
  985. },
  986. {
  987. dataField: 'ThirdClassId', caption: '자재(소)', width: '8%', alignment: 'center',
  988. customizeText: function (cellInfo) {
  989. for (var i = 1; i < materialClassForSearch().length; i++) {
  990. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  991. return materialClassForSearch()[i].Name();
  992. }
  993. }
  994. }
  995. },
  996. { dataField: 'MaterialCode', caption: '자재코드', width: '17%', alignment: 'center', visible: false },
  997. { dataField: 'MaterialName', caption: '자재명', width: '17%', alignment: 'center' },
  998. { dataField: 'Standard', caption: '규격', width: '18%', alignment: 'center' },
  999. { dataField: 'WorkName', caption: '작업명', width: '19%', alignment: 'center' },
  1000. { dataField: 'Unit', caption: '단위', width: '5%', alignment: 'center' },
  1001. { dataField: 'MaterialCount', caption: '수량', width: '5%', alignment: 'center', allowFiltering: false, format: 'currency' },
  1002. { dataField: 'WorkerName', caption: '작업자', width: '10%', alignment: 'center', allowFiltering: false, visible: false },
  1003. ];
  1004. }
  1005. }
  1006. function EnergyDataTable() {
  1007. var TodayDate = new Date(viewModel.dataModel.AddDate());
  1008. var tempcnt = 0;
  1009. var FacilityCode = 0, PropertyId = 0;
  1010. var Today = 0, Daybefore = 0, Dailyusage = 0, Monthusage = 0;
  1011. for (var i = 0; i < 3; i++) {
  1012. tempcnt += fueltotalarray[i].length;
  1013. }
  1014. var datacnt = 0;
  1015. var EnergtDate = new Array(tempcnt);
  1016. for (var i = 0; i < tempcnt; i++) {
  1017. if (i < fueltotalarray[0].length) {
  1018. EnergtDate[i] = {
  1019. Name: fueltotalarray[0][i].Name,
  1020. Fuel: fueltotalarray[0][i].FuelTypeId,
  1021. FacilityCode: fueltotalarray[0][i].FacilityCode,
  1022. PropertyId: fueltotalarray[0][i].PropertyId,
  1023. Today: 0,
  1024. Daybefore: 0,
  1025. Dailyusage: 0,
  1026. Monthusage: 0
  1027. }
  1028. }
  1029. else if (i < fueltotalarray[0].length + fueltotalarray[1].length) {
  1030. EnergtDate[i] = {
  1031. Name: fueltotalarray[1][i - fueltotalarray[0].length].Name,
  1032. Fuel: fueltotalarray[1][i - fueltotalarray[0].length].FuelTypeId,
  1033. FacilityCode: fueltotalarray[1][i - fueltotalarray[0].length].FacilityCode,
  1034. PropertyId: fueltotalarray[1][i - fueltotalarray[0].length].PropertyId,
  1035. Today: 0,
  1036. Daybefore: 0,
  1037. Dailyusage: 0,
  1038. Monthusage: 0
  1039. }
  1040. }
  1041. else {
  1042. EnergtDate[i] = {
  1043. Name: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].Name,
  1044. Fuel: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].FuelTypeId,
  1045. FacilityCode: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].FacilityCode,
  1046. PropertyId: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].PropertyId,
  1047. Today: 0,
  1048. Daybefore: 0,
  1049. Dailyusage: 0,
  1050. Monthusage: 0
  1051. }
  1052. }
  1053. }
  1054. for (var i = 0; i < EnergtDate.length; i++) {
  1055. var dataSource = new DevExpress.data.DataSource({ //금일
  1056. store: new DevExpress.data.ODataStore({
  1057. url: endpointSelector + "/BemsMonitoringPointHistory15minRawData"
  1058. }),
  1059. requireTotalCount: true,
  1060. pageSize: 1
  1061. });
  1062. dataSource.filter([
  1063. ["SiteId", "=", SiteId],
  1064. "and",
  1065. ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate(), 0, 0, 0)],
  1066. "and",
  1067. ["CreatedDateTime", "<=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate(), 23, 59, 59)],
  1068. "and",
  1069. ["FacilityCode", "=", EnergtDate[i].FacilityCode],
  1070. "and",
  1071. ["PropertyId", "=", EnergtDate[i].PropertyId],
  1072. ]);
  1073. dataSource.sort({ getter: "CreatedDateTime", desc: true });
  1074. dataSource.load()
  1075. .done(function (result) {
  1076. if (result != null && result.length != 0) {
  1077. for (var i = 0; i < EnergtDate.length; i++) {
  1078. if (result[0].FacilityCode == EnergtDate[i].FacilityCode && result[0].PropertyId == EnergtDate[i].PropertyId) {
  1079. EnergtDate[i].Today = result[0].CurrentValue;
  1080. break;
  1081. }
  1082. }
  1083. var dataSource1 = new DevExpress.data.DataSource({ //전일
  1084. store: new DevExpress.data.ODataStore({
  1085. url: endpointSelector + "/BemsMonitoringPointHistory15minRawData"
  1086. }),
  1087. requireTotalCount: true,
  1088. pageSize: 1
  1089. });
  1090. dataSource1.filter([
  1091. ["SiteId", "=", SiteId],
  1092. "and",
  1093. ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() - 1, 0, 0, 0)],
  1094. "and",
  1095. ["CreatedDateTime", "<=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() - 1, 23, 59, 59)],
  1096. "and",
  1097. ["FacilityCode", "=", EnergtDate[i].FacilityCode],
  1098. "and",
  1099. ["PropertyId", "=", EnergtDate[i].PropertyId],
  1100. ]);
  1101. dataSource1.sort({ getter: "CreatedDateTime", desc: true });
  1102. dataSource1.load()
  1103. .done(function (result1) {
  1104. if (result1 != null) {
  1105. for (var i = 0; i < EnergtDate.length; i++) {
  1106. if (result1[0].FacilityCode == EnergtDate[i].FacilityCode && result1[0].PropertyId == EnergtDate[i].PropertyId) {
  1107. EnergtDate[i].Daybefore = result1[0].CurrentValue;
  1108. EnergtDate[i].Dailyusage = EnergtDate[i].Today - result1[0].CurrentValue;
  1109. break;
  1110. }
  1111. }
  1112. var dataSource2 = new DevExpress.data.DataSource({ //월사용량
  1113. store: new DevExpress.data.ODataStore({
  1114. url: endpointSelector + "/BemsMonitoringPointHistoryDaily"
  1115. }),
  1116. requireTotalCount: true,
  1117. pageSize: 31
  1118. });
  1119. dataSource2.filter([
  1120. ["SiteId", "=", SiteId],
  1121. "and",
  1122. ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), 1, 0, 0, 0)],
  1123. "and",
  1124. ["CreatedDateTime", "<", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() + 1, 0, 0, 0)],
  1125. "and",
  1126. ["FacilityCode", "=", EnergtDate[i].FacilityCode],
  1127. "and",
  1128. ["PropertyId", "=", EnergtDate[i].PropertyId],
  1129. ]);
  1130. dataSource2.sort({ getter: "CreatedDateTime", desc: true });
  1131. dataSource2.load()
  1132. .done(function (result2) {
  1133. var temp = 0;
  1134. datacnt = datacnt + 1;
  1135. if (result2 != null) {
  1136. for (var j = 0; j < result2.length; j++) {
  1137. temp += result2[j].DailyValue
  1138. }
  1139. for (var i = 0; i < EnergtDate.length; i++) {
  1140. if (result2[0].FacilityCode == EnergtDate[i].FacilityCode && result2[0].PropertyId == EnergtDate[i].PropertyId) {
  1141. EnergtDate[i].Monthusage = temp;
  1142. break;
  1143. }
  1144. }
  1145. }
  1146. if (datacnt == EnergtDate.length) {
  1147. var dataModel = viewModel.dataModel;
  1148. var powerToday = 0, powerDaybefore = 0, powerDailyusage = 0, powerMonthusage = 0;
  1149. var gasToday = 0, gasDaybefore = 0, gasDailyusage = 0, gasMonthusage = 0;
  1150. var waterToday = 0, waterDaybefore = 0, waterDailyusage = 0, waterMonthusage = 0;
  1151. var fuelcnt = 0;
  1152. var power = 0, gas = 0, water = 0;
  1153. for (var i = 0; i < EnergtDate.length; i++) {
  1154. switch (EnergtDate[i].Fuel) {
  1155. case 1:
  1156. power++;
  1157. break;
  1158. case 2:
  1159. gas++;
  1160. break;
  1161. case 3:
  1162. water++;
  1163. break;
  1164. }
  1165. if (EnergtDate[i].Fuel != 3) {
  1166. var tempnum = i + 1;
  1167. dataModel['resultEnergy' + tempnum + 'Today'](numberWithCommas(EnergtDate[i].Today.toFixed(2)));
  1168. dataModel['resultEnergy' + tempnum + 'Daybefore'](numberWithCommas(EnergtDate[i].Daybefore.toFixed(2)));
  1169. dataModel['resultEnergy' + tempnum + 'Dailyusage'](numberWithCommas(EnergtDate[i].Dailyusage.toFixed(2)));
  1170. dataModel['resultEnergy' + tempnum + 'Monthusage'](numberWithCommas(EnergtDate[i].Monthusage.toFixed(2)));
  1171. }
  1172. else {
  1173. waterToday += EnergtDate[i].Today;
  1174. waterDaybefore += EnergtDate[i].Daybefore;
  1175. waterDailyusage += EnergtDate[i].Dailyusage;
  1176. waterMonthusage += EnergtDate[i].Monthusage;
  1177. }
  1178. }
  1179. if (power != 0) {
  1180. fuelcnt++;
  1181. for (var j = 0; j < power; j++) {
  1182. powerToday += EnergtDate[j].Today;
  1183. powerDaybefore += EnergtDate[j].Daybefore;
  1184. powerDailyusage += EnergtDate[j].Dailyusage;
  1185. powerMonthusage += EnergtDate[j].Monthusage;
  1186. }
  1187. dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(powerToday.toFixed(2)));
  1188. dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(powerDaybefore.toFixed(2)));
  1189. dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(powerDailyusage.toFixed(2)));
  1190. dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(powerMonthusage.toFixed(2)));
  1191. }
  1192. if (gas != 0) {
  1193. fuelcnt++;
  1194. for (var j = power; j < power + gas; j++) {
  1195. gasToday += EnergtDate[j].Today;
  1196. gasDaybefore += EnergtDate[j].Daybefore;
  1197. gasDailyusage += EnergtDate[j].Dailyusage;
  1198. gasMonthusage += EnergtDate[j].Monthusage;
  1199. }
  1200. dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(gasToday.toFixed(2)));
  1201. dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(gasDaybefore.toFixed(2)));
  1202. dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(gasDailyusage.toFixed(2)));
  1203. dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(gasMonthusage.toFixed(2)));
  1204. }
  1205. if (water != 0) {
  1206. fuelcnt++;
  1207. dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(waterToday.toFixed(2)));
  1208. dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(waterDaybefore.toFixed(2)));
  1209. dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(waterDailyusage.toFixed(2)));
  1210. dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(waterMonthusage.toFixed(2)));
  1211. }
  1212. }
  1213. }).fail(function (error) {
  1214. utils.toast.show("[BemsMonitoringPointHistoryDaily] 월 사용량 정보를 읽어올수 없습니다.");
  1215. });
  1216. }
  1217. }).fail(function (error) {
  1218. utils.toast.show("[BemsMonitoringPointHistoryDaily] 전일 정보를 읽어올수 없습니다.");
  1219. });
  1220. }
  1221. }).fail(function (error) {
  1222. utils.toast.show("[BemsMonitoringPointHistoryDaily] 금일 정보를 읽어올수 없습니다.");
  1223. });
  1224. }
  1225. }
  1226. function numberWithCommas(x) {
  1227. return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  1228. }
  1229. function getDataSource(gridId) {
  1230. var urlId = popupGridInfo[gridId];
  1231. if (self.viewModel.dataModel['resultWorkCommon']() != null) {
  1232. if (self.viewModel.dataModel['resultWorkCommon']().length == 0) {
  1233. $("#componentcommon").hide();
  1234. }
  1235. else {
  1236. $("#componentcommon").show();
  1237. }
  1238. if (self.viewModel.dataModel['resultFmsMaterial']().length == 0) {
  1239. $("#componentmaterial").hide();
  1240. }
  1241. else {
  1242. $("#componentmaterial").show();
  1243. }
  1244. }
  1245. for (var i = 1; i < BusinessFieldArray.length; i++) {
  1246. if (self.viewModel.dataModel['resultWorkCommon' + i]() != null) {
  1247. if (self.viewModel.dataModel['resultWorkCommon' + i]().length == 0) {
  1248. $("#componentcommon" + i).hide();
  1249. }
  1250. else {
  1251. $("#componentcommon" + i).show();
  1252. }
  1253. }
  1254. if (self.viewModel.dataModel['resultFmsMaterial' + i]() != null) {
  1255. if (self.viewModel.dataModel['resultFmsMaterial' + i]().length == 0) {
  1256. $("#componentmaterial" + i).hide();
  1257. }
  1258. else {
  1259. $("#componentmaterial" + i).show();
  1260. }
  1261. }
  1262. }
  1263. return self.viewModel.dataModel['result' + initCap(urlId)];
  1264. }
  1265. function handleGridViewInPopup(gridId, options) {
  1266. var mode = 'single';
  1267. $.extend(options, {
  1268. pager: { visible: false },
  1269. selection: {
  1270. mode: mode
  1271. }
  1272. });
  1273. return $("#" + gridId).dxDataGrid(utils.datagrid.defaultOptions(options)).dxDataGrid("instance");
  1274. };
  1275. viewModel.dataModel.ReportUrl = ko.observable();
  1276. viewModel.DateChange = DateChange;
  1277. return viewModel;
  1278. };