5f974e1f1bd8ddd05c073dca4b72c002e98f9621.svn-base 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. $(function () {
  2. 'use strict';
  3. var eq = BWA.DataUtil.constructEqualFilter,
  4. or = BWA.DataUtil.orFilter,
  5. and = BWA.DataUtil.andFilter;
  6. var visible = ko.observable(false),
  7. newInfo = ko.observable(false),
  8. userDataSource = BWA.DataUtil.createDataSource({
  9. dataSourceOptions: {
  10. paginate: false,
  11. select: ['SiteId', 'CompanyId', 'DepartmentId', 'UserId', 'Name', 'EmploymentType', 'Email', 'MobilePhoneNo', 'EmploymentStatus', 'CmPosition/Name', 'CmDepartment/Name', 'CmCompany/Name'],
  12. expand: ["CmPosition", "CmDepartment", "CmCompany"],
  13. extendOptions: {
  14. alterNames: {
  15. 'CmPosition/Name': 'PositionName',
  16. 'CmDepartment/Name': 'DepartmentName',
  17. 'CmCompany/Name': 'CompanyName'
  18. }
  19. }
  20. }
  21. }, 'CmUser'),
  22. userInfo = {
  23. SiteId: ko.observable(),
  24. UserId: ko.observable(),
  25. Name: ko.observable(),
  26. CompanyName: ko.observable(),
  27. PositionName: ko.observable(),
  28. DepartmentName: ko.observable(),
  29. MobilePhoneNo: ko.observable(),
  30. Email: ko.observable()
  31. };
  32. var announceGridView = undefined;
  33. var now = new Date();
  34. var endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0);
  35. var announceDataSource = BWA.DataUtil.createDataSource({
  36. dataSourceOptions: {
  37. paginate: false,
  38. select: [
  39. 'SiteId',
  40. 'AnnouncementId',
  41. 'BusinessFieldId',
  42. 'CmBusinessField/Name',
  43. 'Title',
  44. 'Contents',
  45. 'RegisterUserId ',
  46. 'CmUser/Name', // 등록자
  47. 'FileId',
  48. 'CmFile/Name',
  49. 'CmFile/FileSize',
  50. 'AddDate',
  51. 'UpdateDate',
  52. 'IsUse',
  53. 'ReadCount'
  54. ],
  55. expand: ['CmBusinessField', 'CmFile', 'CmUser'],
  56. extendOptions: {
  57. forceOriginalField: true
  58. },
  59. }
  60. }, 'CmAnnouncement');
  61. var announcements = ko.observableArray();
  62. var constructionDataSource = BWA.DataUtil.createDataSource({
  63. dataSourceOptions: {
  64. paginate: false,
  65. select: [
  66. 'SiteId',
  67. 'ConstructionId',
  68. 'Name',
  69. 'StartDate',
  70. 'EndDate',
  71. 'PartnerId',
  72. 'ConstructLocation',
  73. 'OwnerShipName',
  74. 'CommitmentMan',
  75. 'OwnerShipPhoneNo',
  76. 'WeldWorkStartTime',
  77. 'WeldWorkEndTime',
  78. 'GasWorkStartTime',
  79. 'GasWorkEndTime',
  80. 'PaintWorkStartTime',
  81. 'PaintWorkEndTime',
  82. 'Comment',
  83. 'ProgressId',
  84. 'AddDate',
  85. 'UpdateDate',
  86. 'FmsConstructionCodeProgress/Name',
  87. 'CmPartner/Name',
  88. 'CmPartner/PhoneNo',
  89. 'FmsConstructionCodeType/Name',
  90. 'ConstructionDetail',
  91. 'InOutStockName',
  92. 'FileId1',
  93. 'FileId2',
  94. 'FileId3',
  95. 'CmFile/Name',
  96. 'CmFile1/Name',
  97. 'CmFile2/Name'
  98. ],
  99. expand: [
  100. 'FmsConstructionCodeProgress',
  101. 'CmPartner',
  102. 'FmsConstructionEstimation',
  103. 'FmsConstructionCodeType',
  104. 'CmFile',
  105. 'CmFile1',
  106. 'CmFile2'
  107. ],
  108. extendOptions: {
  109. forceOriginalField: true
  110. },
  111. }
  112. }, 'FmsConstruction');
  113. var constructions = ko.observableArray();
  114. var workDataSource = BWA.DataUtil.createDataSource({
  115. dataSourceOptions: {
  116. paginate: false,
  117. select: [
  118. 'SiteId', 'WorkRequestId',
  119. //'StartDate', 'EndDate',
  120. 'StartWorkDate',
  121. //'ConfirmedDate', 'ConfirmedUserId', 'IsConfirmed',
  122. 'FmsWorkRequest/Content',
  123. 'FmsWorkRequest/WorkTypeId',
  124. 'Title',
  125. 'CmUser/Name', // 작업지시자
  126. //'FmsWorkResult/WorkerUserId/Name',
  127. 'OrderDate',
  128. 'FmsWorkRequest/WorkProgressId',
  129. //'CmUser1/Name', // 승인자
  130. 'FmsWorkRequest/FmsWorkCodeType/Name',
  131. 'CmBusinessField/Name',
  132. 'FmsWorkRequest/FmsWorkCodeProgress/Name',
  133. 'FmsWorkRequest/WorkTypeId',
  134. 'FmsWorkResult/CmUser/Name', // 작업자
  135. 'FmsWorkResult/CmUser1/Name', // 승인자 test ok hcLee 2016 03 22
  136. 'FmsWorkResult/EndDate', // 작업자
  137. 'BusinessFieldId',
  138. 'Content'
  139. ],
  140. expand: [
  141. 'FmsWorkRequest',
  142. 'FmsWorkResult',
  143. 'FmsWorkResult/CmUser',
  144. 'FmsWorkResult/CmUser1',
  145. 'FmsWorkRequest/FmsWorkCodeType',
  146. 'FmsWorkRequest/FmsWorkCodeProgress',
  147. 'CmBusinessField',
  148. 'CmUser'],
  149. extendOptions: {
  150. forceOriginalField: true
  151. },
  152. }
  153. }, 'FmsWorkOrder');
  154. //}, 'FmsWorkRequest');
  155. var works = ko.observableArray();
  156. var announcePopupVisible = ko.observable(false);
  157. function announceHandlePopupButtonClose() {
  158. announcePopupVisible(false);
  159. announceGridView.refresh();
  160. }
  161. var announceDataModel = new BemsWebApplication.CmAnnouncementViewModel();
  162. announceDataModel.BusinessFieldName = ko.observable();
  163. announceDataModel.FileUrl = ko.observable();
  164. announceDataModel.FileName = ko.observable();
  165. var constructionPopupVisible = ko.observable(false);
  166. function constructionHandlePopupButtonClose() {
  167. constructionPopupVisible(false);
  168. }
  169. var constructionDataModel = ko.observable();
  170. constructionDataModel = new BemsWebApplication.FmsConstructionViewModel();
  171. var workPopupVisible = ko.observable(false);
  172. function workHandlePopupButtonClose() {
  173. workPopupVisible(false);
  174. }
  175. var workDataModel = ko.observable();
  176. workDataModel = new BemsWebApplication.FmsWorkOrderViewModel();
  177. BWA.UserPanel = {
  178. newInfo: newInfo,
  179. UserInfo: userInfo,
  180. announceDataModel: announceDataModel,
  181. announcePopupOptions: {
  182. width: '680px',
  183. height: 'auto',
  184. visible: announcePopupVisible,
  185. closeOnOutsideClick: true,
  186. showingAction: function (e) {
  187. },
  188. shownAction: function (e) {
  189. var keys = BWA.db.extractKeysObject('CmAnnouncement', BWA.UserPanel.announceDataModel);
  190. BWA.UserPanel.announceDataModel.ReadCount(BWA.UserPanel.announceDataModel.ReadCount() + 1);
  191. BWA.db.CmAnnouncement.update(keys, BWA.UserPanel.announceDataModel.toJS()).done(function (e) {
  192. announceGridView.refresh();
  193. });
  194. }
  195. },
  196. announcePopupToolbarItems: [
  197. { location: 'before', text: '상세보기' },
  198. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: announceHandlePopupButtonClose } }
  199. ],
  200. constructionDataModel: constructionDataModel,
  201. constructionPopupOptions: {
  202. width: '680px',
  203. height: 'auto',
  204. visible: constructionPopupVisible,
  205. closeOnOutsideClick: true,
  206. showingAction: function (e) { },
  207. shownAction: function (e) { }
  208. },
  209. constructionPopupToolbarItems: [
  210. { location: 'before', text: '상세보기' },
  211. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: constructionHandlePopupButtonClose } }
  212. ],
  213. workDataModel: workDataModel,
  214. workPopupOptions: {
  215. width: '680px',
  216. height: 'auto',
  217. visible: workPopupVisible,
  218. closeOnOutsideClick: true,
  219. showingAction: function (e) { },
  220. shownAction: function (e) { }
  221. },
  222. workPopupToolbarItems: [
  223. { location: 'before', text: '상세보기' },
  224. { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: workHandlePopupButtonClose } }
  225. ],
  226. workDataGridOptions: utils.datagrid.defaultOptions({
  227. dataSource: works,
  228. datagridId: 'workDataGridInUserPanel',
  229. handleDataGridRowClick: function (id, dataGrid, clickRow) { // function () {
  230. dataGrid.clearSelection();
  231. var data = clickRow.data;
  232. //BWA.UserPanel.workDataModel = data;
  233. BWA.UserPanel.workDataModel.Title(data.Title());
  234. BWA.UserPanel.workDataModel.WorkProgressName = $KoSet(BWA.UserPanel.workDataModel.WorkProgressName, data['FmsWorkRequest/FmsWorkCodeProgress/Name']());
  235. BWA.UserPanel.workDataModel.WorkerUserName = $KoSet(BWA.UserPanel.workDataModel.WorkerUserName, data['FmsWorkResult/CmUser/Name']);
  236. BWA.UserPanel.workDataModel.StartWorkDate(data.StartWorkDate());
  237. BWA.UserPanel.workDataModel.OrderDate(data.OrderDate());
  238. BWA.UserPanel.workDataModel.Content(data.Content());
  239. //BWA.UserPanel.workDataModel.Title = $KoSet(BWA.UserPanel.workDataModel.Title, data['Title']());
  240. /*
  241. BWA.UserPanel.workDataModel.BusinessFieldName = $KoSet(BWA.UserPanel.workDataModel.BusinessFieldName, data['CmBusinessField/Name']());
  242. BWA.UserPanel.workDataModel.WorkTypeName = $KoSet(BWA.UserPanel.workDataModel.WorkTypeName, data['FmsWorkRequest/FmsWorkCodeType/Name']());
  243. BWA.UserPanel.workDataModel.WorkerUserName = $KoSet(BWA.UserPanel.workDataModel.WorkerUserName, data['FmsWorkResult/WorkerUserId/Name']);
  244. BWA.UserPanel.workDataModel.ConfirmedUserName = $KoSet(BWA.UserPanel.workDataModel.ConfirmedUserName, '');
  245. BWA.UserPanel.workDataModel.WorkProgressName = $KoSet(BWA.UserPanel.workDataModel.WorkProgressName, '');
  246. //BWA.UserPanel.workDataModel.OrderDate = $KoSet(BWA.UserPanel.workDataModel.OrderDate, '');
  247. BWA.UserPanel.workDataModel.OrderDate(data.OrderDate());
  248. BWA.UserPanel.workDataModel.Content(data.Content());
  249. */
  250. //if (data['CmUser1/Name'] !== undefined) {
  251. // BWA.UserPanel.workDataModel.ConfirmedUserName(data['CmUser1/Name']());
  252. //}
  253. //BWA.UserPanel.workDataModel.EndDate = $KoSet(BWA.UserPanel.workDataModel.EndDate, data['FmsWorkResult/EndDate']);
  254. //BWA.UserPanel.workDataModel.OrderDate(data['FmsWorkOrder/OrderDate']());
  255. //if (data['FmsWorkOrder/Content'] !== undefined) {
  256. // BWA.UserPanel.workDataModel.OrderContent(data['FmsWorkOrder/Content']());
  257. //}
  258. workPopupVisible(true);
  259. },
  260. useNumberColumn: true,
  261. columns: [
  262. { dataField: 'WorkRequestId', caption: $G('number'), width: '12%', alignment: 'center', sortOrder: 'desc' },
  263. { dataField: 'FmsWorkRequest/FmsWorkCodeType/Name', caption: $G('workTypeName'), width: '15%', alignment: 'center' },
  264. { dataField: 'FmsWorkRequest/FmsWorkCodeProgress/Name', caption: $G('workProgressName'), width: '15%', alignment: 'center' },
  265. //{ dataField: 'FmsWorkResult/CmUser/Name', caption: $G('workProgressName'), width: '15%', alignment: 'center' }, test ok hcLee 2016 03 22
  266. //{ dataField: 'FmsWorkResult/CmUser1/Name', caption: $G('workProgressName'), width: '15%', alignment: 'center' }, test ok hcLee 2016 03 22
  267. { dataField: 'Title', caption: '작업명', width: '33%', alignment: 'center' },
  268. ],
  269. height: 220,
  270. paging: { pageSize: 4 },
  271. pager: { visible: true }
  272. }),
  273. constructionDataGridOptions: utils.datagrid.defaultOptions({
  274. dataSource: constructions,
  275. datagridId: 'constructionDataGridInUserPanel',
  276. handleDataGridRowClick: function (id, dataGrid, clickRow) { // function () {
  277. dataGrid.clearSelection();
  278. var data = clickRow.data;
  279. //BWA.UserPanel.constructionDataModel = data;
  280. BWA.UserPanel.constructionDataModel.Name(data.Name());
  281. BWA.UserPanel.constructionDataModel.ConstructLocation(data.ConstructLocation());
  282. //BWA.UserPanel.constructionDataModel.ConstructionTypeName(data.ConstructionTypeName());
  283. //BWA.UserPanel.constructionDataModel.ProgressName(data.ProgressName());
  284. BWA.UserPanel.constructionDataModel.StartDate(data.StartDate());
  285. BWA.UserPanel.constructionDataModel.EndDate(data.EndDate());
  286. BWA.UserPanel.constructionDataModel.WeldWorkStartTime(data.WeldWorkStartTime());
  287. BWA.UserPanel.constructionDataModel.WeldWorkEndTime(data.WeldWorkEndTime());
  288. BWA.UserPanel.constructionDataModel.GasWorkStartTime(data.GasWorkStartTime());
  289. BWA.UserPanel.constructionDataModel.GasWorkEndTime(data.GasWorkEndTime());
  290. BWA.UserPanel.constructionDataModel.PaintWorkStartTime(data.PaintWorkStartTime());
  291. BWA.UserPanel.constructionDataModel.PaintWorkStartTime(data.PaintWorkStartTime());
  292. BWA.UserPanel.constructionDataModel.ConstructionDetail(data.ConstructionDetail());
  293. BWA.UserPanel.constructionDataModel.InOutStockName(data.InOutStockName());
  294. BWA.UserPanel.constructionDataModel.PartnerName = $KoSet(BWA.UserPanel.constructionDataModel.PartnerName, data['CmPartner/Name']());
  295. BWA.UserPanel.constructionDataModel.PartnerPhoneNo = $KoSet(BWA.UserPanel.constructionDataModel.PartnerPhoneNo, data['CmPartner/PhoneNo']());
  296. BWA.UserPanel.constructionDataModel.ConstructionTypeName = $KoSet(BWA.UserPanel.constructionDataModel.ConstructionTypeName, data['FmsConstructionCodeType/Name']());
  297. BWA.UserPanel.constructionDataModel.ProgressName = $KoSet(BWA.UserPanel.constructionDataModel.ProgressName, data['FmsConstructionCodeProgress/Name']());
  298. BWA.UserPanel.constructionDataModel.FileUrl1 = $KoSet(BWA.UserPanel.constructionDataModel.FileUrl1, '');
  299. BWA.UserPanel.constructionDataModel.FileUrl2 = $KoSet(BWA.UserPanel.constructionDataModel.FileUrl2, '');
  300. BWA.UserPanel.constructionDataModel.AttachmentFileName1 = $KoSet(BWA.UserPanel.constructionDataModel.AttachmentFileName1, '');
  301. BWA.UserPanel.constructionDataModel.AttachmentFileName2 = $KoSet(BWA.UserPanel.constructionDataModel.AttachmentFileName2, '');
  302. if (data['FileId1']() != null) {
  303. BWA.UserPanel.constructionDataModel.AttachmentFileName1(data['CmFile/Name']());
  304. BWA.UserPanel.constructionDataModel.FileUrl1('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, data.SiteId(), data.FileId1()));
  305. } else {
  306. BWA.UserPanel.constructionDataModel.AttachmentFileName1('');
  307. BWA.UserPanel.constructionDataModel.FileUrl1('');
  308. }
  309. if (data['FileId2']() != null) {
  310. BWA.UserPanel.constructionDataModel.AttachmentFileName2(data['CmFile1/Name']());
  311. BWA.UserPanel.constructionDataModel.FileUrl2('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, data.SiteId(), data.FileId2()));
  312. }
  313. else {
  314. BWA.UserPanel.constructionDataModel.AttachmentFileName2('');
  315. BWA.UserPanel.constructionDataModel.FileUrl2('');
  316. }
  317. constructionPopupVisible(true);
  318. },
  319. useNumberColumn: true,
  320. columns: [
  321. { dataField: 'ConstructionId', caption: $G('number'), width: '15%', alignment: 'center', sortOrder: 'desc' },
  322. { dataField: 'FmsConstructionCodeType/Name', caption: '공사구분', width: '20%', alignment: 'center' },
  323. { dataField: 'Name', caption: '공사명', width: '80%', alignment: 'center' },
  324. ],
  325. height: 220,
  326. paging: { pageSize: 4 },
  327. pager: { visible: true }
  328. }),
  329. announceDataGridOptions: utils.datagrid.defaultOptions({
  330. //dxDataSource: announcements,
  331. dataSource: announcements,
  332. datagridId: 'announcementDataGridInUserPanel',
  333. handleDataGridRowClick: function (id, dataGrid, clickRow) {
  334. dataGrid.clearSelection();
  335. var data = clickRow.data;
  336. BWA.UserPanel.announceDataModel.AnnouncementId(data.AnnouncementId());
  337. BWA.UserPanel.announceDataModel.SiteId(data.SiteId());
  338. BWA.UserPanel.announceDataModel.Title(data.Title());
  339. BWA.UserPanel.announceDataModel.Contents(data.Contents());
  340. BWA.UserPanel.announceDataModel.AddDate(data.AddDate());
  341. BWA.UserPanel.announceDataModel.BusinessFieldName(data['CmBusinessField/Name']());
  342. BWA.UserPanel.announceDataModel.ReadCount(data.ReadCount());
  343. if (data.FileId() == null) {
  344. BWA.UserPanel.announceDataModel.FileName('');
  345. BWA.UserPanel.announceDataModel.FileUrl('');
  346. } else {
  347. BWA.UserPanel.announceDataModel.FileName(data['CmFile/Name']());
  348. BWA.UserPanel.announceDataModel.FileUrl('{0}/CmFile(SiteId={1},FileId={2})/$value'.formati(BWA.db._url, data.SiteId(), data.FileId()));
  349. }
  350. announcePopupVisible(true);
  351. },
  352. columns: [
  353. { dataField: 'AnnouncementId', caption: $G('number'), width: '15%', alignment: 'center', sortOrder: 'desc' },
  354. { dataField: 'Title', caption: '제목', width: '40%', alignment: 'center' },
  355. ],
  356. useNumberColumn: true,
  357. height: 220,
  358. paging: { pageSize: 4 },
  359. pager: { visible: true },
  360. contentReadyAction: function (e) {
  361. announceGridView = e.component;
  362. },
  363. }),
  364. options: {
  365. width: '1400',
  366. height: '670',
  367. visible: visible,
  368. position: { my: 'top', at: 'top', of: window },
  369. animation: {
  370. show: { type: "slide", easing: 'ease-in-out', duration: 400, from: { top: -649 }, to: { top: 0 } },
  371. hide: { type: "slide", easing: 'ease-in-out', duration: 400, from: { top: 1 }, to: { top: -649 } }
  372. },
  373. showingAction: function () {
  374. userDataSource.filter([
  375. eq('SiteId', BWA.UserInfo.SiteId()),
  376. and,
  377. eq('UserId', BWA.UserInfo.UserId())
  378. ]);
  379. userDataSource.load().done(function (users) {
  380. if (_.isEmpty(users)) {
  381. return; // logout 처리 필요
  382. }
  383. BWA.DataUtil.copyViewModel(users[0], userInfo);
  384. });
  385. announceDataSource.filter([
  386. eq('SiteId', BWA.UserInfo.SiteId()),
  387. // hcLee 2015 12 24
  388. and,
  389. ['UpdateDate', '>', endDate],
  390. and, // 2016 03 14
  391. [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]
  392. ]);
  393. announceDataSource.load().done(function (announceResult) {
  394. announcements(announceResult);
  395. });
  396. constructionDataSource.filter([
  397. eq('SiteId', BWA.UserInfo.SiteId()),
  398. and,
  399. ['ProgressId', '<', 3]
  400. ]);
  401. constructionDataSource.load().done(function (constructResult) {
  402. constructions(constructResult);
  403. });
  404. workDataSource.filter([
  405. eq('SiteId', BWA.UserInfo.SiteId()),
  406. and,
  407. [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)], // hcLee 2016 04 04 추가
  408. and, // 2016 03 14
  409. [['FmsWorkRequest/WorkProgressId', '=', $Code.WorkProgress.WORK_STANDBY], // 3 대기만 보여준다 2016 03 09
  410. or,
  411. [eq('FmsWorkRequest/WorkProgressId', $Code.WorkProgress.WORKING), 'and', eq('FmsWorkResult/WorkerUserId', BWA.UserInfo.UserId())]]
  412. ]);
  413. workDataSource.load().done(function (workResult) {
  414. works(workResult);
  415. });
  416. },
  417. contentReadyAction: function (e) {
  418. },
  419. shading: false,
  420. closeOnOutsideClick: true
  421. },
  422. handleToggleOpenClose: function () {
  423. visible(!visible());
  424. },
  425. show: function () {
  426. visible(true);
  427. },
  428. hide: function () {
  429. visible(false);
  430. }
  431. };
  432. });