ITP_OPER01010.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721
  1. require(['config'], function() {
  2. require([
  3. ], function($) {
  4. pageObj.init();
  5. });
  6. });
  7. /********************************************************
  8. --------------------------------------------------------
  9. - Object 목록 -
  10. --------------------------------------------------------
  11. * let pageObj = {} : 화면공통 Object *
  12. * let listObj = {} : 목록화면 Object *
  13. * let viewObj = {} : 상세화면 Object *
  14. * let modifyObj = {} : 수정화면 Object *
  15. * let createObj = {} : 신규화면 Object *
  16. *******************************************************/
  17. const OPER01010_GRID_ID = '#ITP_OPER01010_jqGrid';
  18. const OPER01010_GRID_LIST = '#ITP_OPER01010_jqGrid_list';
  19. const OPER01010_GRID_PAGER = '#ITP_OPER01010_jqGridPager';
  20. const OPER01010_GRID_EMPTY = '#ITP_OPER01010_jqGridEmpty';
  21. /*
  22. const OPER01010_VIEW_GRID_ID = '#ITP_OPER01010_VIEW_jqGrid';
  23. const OPER01010_VIEW_GRID_LIST = '#ITP_OPER01010_VIEW_jqGrid_list';
  24. const OPER01010_VIEW_GRID_PAGER = '#ITP_OPER01010_VIEW_jqGridPager';
  25. const OPER01010_VIEW_GRID_EMPTY = '#ITP_OPER01010_VIEW_jqGridEmpty';
  26. const OPER01010_DETAIL_GRID_ID = '#ITP_OPER01010_DETAIL_jqGrid';
  27. const OPER01010_DETAIL_GRID_LIST = '#ITP_OPER01010_DETAIL_jqGrid_list';
  28. const OPER01010_DETAIL_GRID_PAGER = '#ITP_OPER01010_DETAIL_jqGridPager';
  29. const OPER01010_DETAIL_GRID_EMPTY = '#ITP_OPER01010_DETAIL_jqGridEmpty';
  30. const OPER01010_NEW_GRID_ID = '#ITP_OPER01010_NEW_jqGrid';
  31. const OPER01010_NEW_GRID_LIST = '#ITP_OPER01010_NEW_jqGrid_list';
  32. const OPER01010_NEW_GRID_PAGER = '#ITP_OPER01010_NEW_jqGridPager';
  33. const OPER01010_NEW_GRID_EMPTY = '#ITP_OPER01010_NEW_jqGridEmpty';
  34. */
  35. let ITP_FORM_OPER01010_DETAIL_IS_DUPLICATE = false;
  36. let ITP_FORM_OPER01010_DETAIL_IS_WRITING = false;
  37. let API_DETAIL_GRID_LIST = '/api/user/detail-grid-list';
  38. let API_USERAUTH_GRID_LIST = '/api/user/userauth-grid-list';
  39. let API_DETAIL_INFO = '/api/user/info-user';
  40. let API_DETAIL_SAVE = '/api/user/save-user';
  41. let API_CHECK_DUPLICATE = '/api/user/check-duplicate';
  42. let API_INTI_USERPW = '/api/user/inti-userpw';
  43. let API_POP_GRID_LIST = '/api/brand/pop-grid-list';
  44. /*화면 Grid ColModel*/
  45. const gridColModel = {
  46. list: [
  47. {
  48. index: 'AFFL_SHOP_NM', name: 'afflShopNm',
  49. label: ITP_MSG_LOCALE.label.afflShopNm, //브랜드그룹
  50. width: '10', fixed: false, align: 'left',
  51. minwidth: 150, maxwidth: 250,
  52. sortable: false, hidden: false, classes: 'ui-ellipsis'
  53. },
  54. {
  55. index: 'BRAND_NM', name: 'brandNm',
  56. label: ITP_MSG_LOCALE.label.brandNm, //브랜드
  57. width: '13', fixed: false, align: 'left',
  58. minwidth: 150, maxwidth: 250,
  59. sortable: false, hidden: false, classes: 'ui-ellipsis'
  60. },
  61. {
  62. index: 'AUTH_TP_NM', name: 'authTpNm',
  63. label: ITP_MSG_LOCALE.label.authTpNm, //권한명
  64. width: '10', fixed: false, align: 'center',
  65. sortable: false, hidden: false
  66. },
  67. {
  68. index: 'SHOP_NM', name: 'storeId',
  69. label: ITP_MSG_LOCALE.label.storeId, //매장아이디
  70. width: '10', fixed: false, align: 'left',
  71. minwidth: 150, maxwidth: 250,
  72. sortable: false, hidden: true
  73. },
  74. {
  75. index: 'STORE_NM', name: 'storeNm',
  76. label: ITP_MSG_LOCALE.label.storeNm, //매장명
  77. width: '13', fixed: false, align: 'left',
  78. minwidth: 150, maxwidth: 250,
  79. sortable: false, hidden: false, classes: 'ui-ellipsis'
  80. },
  81. {
  82. index: 'SPPLY_ID', name: 'spplyId',
  83. label: ITP_MSG_LOCALE.label.spplyId, //공급사아이디
  84. width: '10', fixed: false, align: 'left',
  85. minwidth: 150, maxwidth: 250,
  86. sortable: false, hidden: true, classes: 'ui-ellipsis'
  87. },
  88. {
  89. index: 'SPPLY_NM', name: 'spplyNm',
  90. label: ITP_MSG_LOCALE.label.spplyNm, //공급사명
  91. width: '13', fixed: false, align: 'left',
  92. minwidth: 150, maxwidth: 250,
  93. sortable: false, hidden: false
  94. },
  95. {
  96. index: 'AUTH_TP_CD', name: 'authTpCd',
  97. label: ITP_MSG_LOCALE.label.authTpNm, //권한코드
  98. width: '13', fixed: false, align: 'left',
  99. minwidth: 150, maxwidth: 250,
  100. sortable: false, hidden: true
  101. },
  102. {
  103. index: 'USER_ID', name: 'userId',
  104. label: ITP_MSG_LOCALE.label.userId, //사용자ID
  105. width: '10', fixed: false, align: 'center',
  106. minwidth: 120, maxwidth: 200,
  107. sortable: false, hidden: false
  108. },
  109. {
  110. index: 'USER_NM', name: 'userNm',
  111. label: ITP_MSG_LOCALE.label.userName, //닉네임
  112. width: '13', fixed: false, align: 'left',
  113. minwidth: 120,
  114. sortable: false, hidden: false, classes: 'ui-ellipsis'
  115. },
  116. {
  117. index: 'EMAIL', name: 'email',
  118. label: ITP_MSG_LOCALE.label.idEmail, //아이디(이메일)
  119. width: '15', fixed: false, align: 'left',
  120. minwidth: 150, maxwidth: 250,
  121. sortable: false, hidden: false, classes: 'ui-ellipsis'
  122. },
  123. {
  124. index: 'TEL_NO', name: 'telNo',
  125. label: ITP_MSG_LOCALE.label.telephone, //휴대폰 번호
  126. width: '10', fixed: false, align: 'center',
  127. minwidth: 150, maxwidth: 250,
  128. sortable: false, hidden: false
  129. },
  130. {
  131. index: 'USER_STAT_NM', name: 'userStatNm',
  132. label: ITP_MSG_LOCALE.label.status, //상태
  133. width: '6', fixed: false, align: 'center',
  134. sortable: false, hidden: false
  135. },
  136. {
  137. index: 'USER_STAT_DT', name: 'userStatDt',
  138. label: ITP_MSG_LOCALE.label.statusDt, //상태일시
  139. width: '10', fixed: false, align: 'center',
  140. sortable: false, hidden: false
  141. },
  142. {
  143. index: 'ADD_DT', name: 'addDt',
  144. label: ITP_MSG_LOCALE.label.regDt, //등록일
  145. width: '10', fixed: false, align: 'center',
  146. sortable: false, hidden: false
  147. },
  148. {
  149. index: 'LAST_LOGIN_DT', name: 'lastLoginDt',
  150. label: ITP_MSG_LOCALE.label.lastLogin, //마지막 로그인
  151. width: '12', fixed: false, align: 'center',
  152. minwidth: 150, maxwidth: 250,
  153. sortable: false, hidden: false
  154. }
  155. ],
  156. detail: [
  157. {
  158. index: 'VIEW_CD', name: 'viewCd',
  159. label: ITP_MSG_LOCALE.label.viewCd,
  160. width: '10', fixed: false, align: 'center',
  161. sortable: false, hidden: true
  162. },
  163. {
  164. index: 'AUTH_NO', name: 'authNo',
  165. label: ITP_MSG_LOCALE.label.permitCd,
  166. width: '20', fixed: false, align: 'left',
  167. sortable: false, editable: false, edittype: 'text',
  168. editrules: {required: true}
  169. },
  170. {
  171. index: 'AUTH_NM', name: 'authNm',
  172. label: ITP_MSG_LOCALE.label.permitName,
  173. width: '30', fixed: false, align: 'left',
  174. sortable: true, editable: false, edittype: 'text',
  175. editrules: {required: true}
  176. },
  177. {
  178. index: 'USE_YN_NM', name: 'useYnNm',
  179. label: ITP_MSG_LOCALE.label.status,
  180. width: '10', fixed: false, align: 'center',
  181. sortable: false, editable: false, edittype: 'text'
  182. },
  183. {
  184. index: 'ADD_DT', name: 'addDt',
  185. label: ITP_MSG_LOCALE.label.regDt,
  186. width: '10', fixed: false, align: 'center',
  187. sortable: false, editable: false, edittype: 'text'
  188. }
  189. ]
  190. };
  191. /*화면공통 Object*/
  192. let pageObj = {
  193. init: function () {
  194. this.ui.init();
  195. this.event.init();
  196. afflShopObj.init();
  197. },
  198. pageMode: '',
  199. ui: {
  200. init: function () {
  201. this.button();
  202. this.form();
  203. this.ready();
  204. },
  205. button: function () {
  206. // 버튼 권한설정
  207. fn_proc_btn_auth('OPER01010');
  208. // 공통코드 표시
  209. $('select').each(function() {
  210. if($(this).data('select-code')) {
  211. fn_make_select(CODE_LIST, $(this).data('select-code'), $(this).attr('id'));
  212. }
  213. });
  214. // 조회일자 지정
  215. var now = new Date();
  216. $('#ITP_FORM_OPER01010_SEARCH_FROM_DT').val(itp_fn_get_before_month() );
  217. $('#ITP_FORM_OPER01010_SEARCH_TO_DT').val(itp_fn_get_today_ko() );
  218. $('#ITP_TAB_OPER01010 .input-group.date').datepicker(ITP_DATE_LANGUAGE);
  219. $('#ITP_FORM_OPER01010_SEARCH_FROM_DT').datepicker();
  220. $('#ITP_FORM_OPER01010_SEARCH_TO_DT').datepicker();
  221. },
  222. form: function() {
  223. itp_fn_form_event.onKeyup('#ITP_FORM_OPER01010_DETAIL');
  224. itp_fn_form_event.onKeyup('#ITP_FORM_OPER01010_NEW');
  225. },
  226. afflInfo: {
  227. init: function() {
  228. this.authTpCd = fn_make_user_info.get('authTpCd');
  229. if(this.authTpCd === '30' || this.authTpCd === '40') {
  230. this.afflShopId = fn_make_user_info.get('afflShopId');
  231. this.afflShopNm = fn_make_user_info.get('afflShopNm');
  232. this.brandId = fn_make_user_info.get('brandId');
  233. this.brandNm = fn_make_user_info.get('brandNm');
  234. this.setAffl();
  235. }
  236. },
  237. setAffl: function() {
  238. var _this = this;
  239. var afflShopId = '#ITP_FORM_OPER01010_' + (pageObj.pageMode === 'ADD' ? 'DETAIL' : 'SEARCH') + '_AFFL_SHOP_ID';
  240. var afflShopNm = '#ITP_FORM_OPER01010_' + (pageObj.pageMode === 'ADD' ? 'DETAIL' : 'SEARCH') + '_AFFL_SHOP_NM';
  241. //var brandId = '#ITP_FORM_OPER01010_' + (pageObj.pageMode === 'ADD' ? 'DETAIL' : 'SEARCH') + '_BRAND_ID';
  242. $(afflShopId).val(_this.afflShopId);
  243. $(afflShopNm).val(_this.afflShopNm);
  244. //$(brandId).val(_this.brandId);
  245. $(afflShopNm).attr('readonly', true);
  246. if(_this.authTpCd === '30') {
  247. var callbackFn = (result) => {
  248. var brandList = [];
  249. $.each(result.gridRows, function(i, item) {
  250. brandList.push({'brandId': item.brandId, 'brandNm': item.brandNm});
  251. });
  252. _this.setBrand(brandList);
  253. };
  254. var param = {
  255. 'afflShopId': _this.afflShopId
  256. };
  257. fn_ajax_call(API_POP_GRID_LIST, JSON.stringify(param), callbackFn, 'POST');
  258. } else {
  259. var brandList = [{'brandId': _this.brandId, 'brandNm': _this.brandNm}];
  260. this.setBrand(brandList);
  261. }
  262. },
  263. setBrand: function(AFFL_BRAND) {
  264. var _this = this;
  265. if(AFFL_BRAND.length > 0) {
  266. var brandId = 'ITP_FORM_OPER01010_' + (pageObj.pageMode === 'ADD' ? 'DETAIL_BRAND_ID' : 'SEARCH_BRAND_ID');
  267. (_this.authTpCd === '30') ? fn_make_select_brand(AFFL_BRAND, brandId, true, '선택') : fn_make_select_brand(AFFL_BRAND, brandId, false);
  268. $('#' + brandId).val(_this.brandId);
  269. } else {
  270. }
  271. }
  272. },
  273. ready: function () {
  274. listObj.init();
  275. }
  276. },
  277. event: {
  278. init: function () {
  279. this.button();
  280. },
  281. button: function () {
  282. // 버튼 클릭 이벤트
  283. $('button').each(function() {
  284. var id = $(this).attr('id');
  285. $(this).on('click', function() {
  286. switch (id) {
  287. case 'ITP_BTN_OPER01010_SRH' : listObj.button.search(); break; // 조회 버튼 클릭
  288. case 'ITP_BTN_OPER01010_NEWREG' : listObj.button.create(); break; // 신규등록 버튼
  289. case 'ITP_BTN_OPER01010_MODIFY' : modifyObj.button.modify(); break; // 수정 버튼
  290. case 'ITP_BTN_OPER01010_CANCELLIST' : createObj.button.cancel(); break; // 취소/목록 버튼
  291. case 'ITP_BTN_OPER00210_DELETE' : break; // 삭제 버튼
  292. case 'ITP_BTN_OPER01010_SAVE' : createObj.button.save(); break; // 저장 버튼
  293. case 'ITP_FORM_OPER01010_DETAIL_DUP' : createObj.button.duplicate(); break; // 중복체크
  294. case 'ITP_BTN_OPER01010_NEW_RESET_PW' : createObj.button.resetPass(); break; // 상세:비밀번호 초기화
  295. //case 'ITP_BTN_OPER01010_DETAIL_ADDROW' : pageObj.grid.button.addRow(); break; // 상세:추가버튼
  296. //case 'ITP_BTN_OPER01010_DETAIL_DELROW' : pageObj.grid.button.delRow(); break; // 상세:삭제버튼
  297. //case 'ITP_BTN_OPER01010_NEW_ADDROW' : pageObj.grid.button.addRow(); break; // 상세:추가버튼
  298. //case 'ITP_BTN_OPER01010_NEW_DELROW' : pageObj.grid.button.delRow(); break; // 상세:삭제버튼
  299. }
  300. });
  301. });
  302. }
  303. },
  304. switchScreen: function(mode) {
  305. pageObj.pageMode = mode;
  306. $('.itp_det_head').find('button[id^="ITP_BTN_OPER01010_"]').each(function(i) {
  307. $(this).hide();
  308. });
  309. $('#ITP_TAB_OPER01010').find('div[id$="_CONTAINER"]').each(function(i) {
  310. $(this).hide();
  311. });
  312. if(mode === 'LIST') { // 목록
  313. itp_fn_fire_window_resize();
  314. $('#ITP_AJAX_OPER01010_LIST_CONTAINER').show();
  315. if(fn_make_user_info.get('authTpCd') === '10') {
  316. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM').attr('readonly', false);
  317. } else {
  318. pageObj.ui.afflInfo.init();
  319. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId'));
  320. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM').val(fn_make_user_info.get('afflShopNm'));
  321. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM').attr('readonly', true);
  322. }
  323. fn_show_btn_auth_array(['#ITP_BTN_OPER01010_SRH', '#ITP_BTN_OPER01010_NEWREG']);
  324. } else if(mode == 'ADD') { // 등록
  325. $('#ITP_AJAX_OPER01010_DETAIL_CONTAINER').show();
  326. fn_show_btn_auth_array(['#ITP_BTN_OPER01010_CANCELLIST', '#ITP_BTN_OPER01010_SAVE']);
  327. $('#ITP_FORM_OPER01010_DETAIL').find('input, textarea, select, checkbox').each(function(i, elem) {
  328. $(this).attr('id') === 'ITP_FORM_OPER01010_DETAIL_VIEW_CD' ? $(this).val('C') : $(this).val('');
  329. if(elem.type === 'select') {
  330. $(this).val('').prop('selected', true);
  331. }
  332. });
  333. //console.log(fn_make_user_info.get('afflShopId]'));
  334. //$('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP_ID').val(fn_make_user_info.get('afflShopId]'));
  335. //$('#ITP_FORM_OPER01010_DETAIL_BRAND_ID').val(fn_make_user_info.get('brandId]'));
  336. if (fn_make_user_info.get('authTpCd') == "10" || fn_make_user_info.get('authTpCd') == "20") {
  337. $('#ITP_FORM_OPER01010_DETAIL_DELETE_AFFL_SHOP').attr("disabled", false);
  338. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP').attr("disabled", false);
  339. } else if (fn_make_user_info.get('authTpCd') == "30") {
  340. $('#ITP_FORM_OPER01010_DETAIL_DELETE_AFFL_SHOP').attr("disabled", true);
  341. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP').attr("disabled", true);
  342. $('#ITP_FORM_OPER01010_DETAIL_BRAND_ID').attr("disabled", false);
  343. } else {
  344. $('#ITP_FORM_OPER01010_DETAIL_DELETE_AFFL_SHOP').attr("disabled", true);
  345. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP').attr("disabled", true);
  346. $('#ITP_FORM_OPER01010_DETAIL_BRAND_ID').attr("disabled", true);
  347. }
  348. pageObj.ui.afflInfo.init();
  349. } else if(mode === 'MODIFY') { // 수정
  350. $('#ITP_AJAX_OPER01010_NEW_CONTAINER').show();
  351. fn_show_btn_auth_array(['#ITP_BTN_OPER01010_CANCELLIST', '#ITP_BTN_OPER01010_SAVE', '#ITP_BTN_OPER01010_RESET_PW']);
  352. // $('#ITP_FORM_OPER01010_DETAIL #ITP_FORM_OPER01010_DETAIL_AFFL_SHOP_NM').prop('readonly', true);
  353. } else if(mode === 'VIEW') { // 보기
  354. $('#ITP_AJAX_OPER01010_VIEW_CONTAINER').show();
  355. fn_show_btn_auth_array(['#ITP_BTN_OPER01010_MODIFY', '#ITP_BTN_OPER01010_CANCELLIST']);
  356. }
  357. }
  358. };
  359. /*목록화면 Object*/
  360. let listObj = {
  361. init: function () {
  362. // Grid
  363. this.grid.init();
  364. },
  365. itp_OPER01010_param: {},
  366. itp_OPER01010_search: false,
  367. button: {
  368. search: function () {
  369. listObj.itp_OPER01010_search = true;
  370. let param = $('#ITP_FORM_OPER01010_SEARCH').serializeObject();
  371. param.gridSize = $.jgrid.defaults.rowNum;
  372. param.gridPage = $.jgrid.defaults.page;
  373. $(OPER01010_GRID_ID).data('grid-param',param);
  374. $(OPER01010_GRID_ID).setGridParam({'postData': JSON.stringify(param)}).trigger('reloadGrid');
  375. },
  376. create: function () {
  377. pageObj.switchScreen('ADD');
  378. itp_fn_form_clear_validate(null, '#ITP_FORM_OPER01010_DETAIL');
  379. createObj.init();
  380. }
  381. },
  382. grid: {
  383. init: function() {
  384. // 데이터 없을때
  385. this.itp_fn_OPER01010_empty.push();
  386. itp_fn_jqgrid_resize(OPER01010_GRID_ID, OPER01010_GRID_LIST, 'lg');
  387. this.search();
  388. },
  389. colModel: gridColModel.list,
  390. search: function() {
  391. pageObj.switchScreen('LIST');
  392. this.unload();
  393. this.load();
  394. },
  395. load: function() {
  396. var _this = this;
  397. let param = $('#ITP_FORM_OPER01010_SEARCH').serializeObject();
  398. param.gridSize = $.jgrid.defaults.rowNum;
  399. var option = {
  400. gridId: OPER01010_GRID_ID,
  401. colModel: this.colModel,
  402. param: param,
  403. url: DOMAIN + API_DETAIL_GRID_LIST,
  404. pager: OPER01010_GRID_PAGER,
  405. autowidth: true,
  406. shrinkToFit :false,
  407. onCellSelect: function(rowId, cellIdx, cellValue) {
  408. var cm = $(this).jqGrid('getGridParam', 'colModel');
  409. var colNm = cm[cellIdx].name;
  410. if (colNm === 'userNm') {
  411. const selectVal = $(this).jqGrid('getCell', rowId, 'userId');
  412. const key = {userId: selectVal, viewCd: 'R'};
  413. var param = $.param(key);
  414. viewObj.init(param);
  415. }
  416. },
  417. loadComplete: function(data) {
  418. itp_fn_grid_load_complete(data, OPER01010_GRID_ID, true, 'number', 'OPER01010', listObj.itp_OPER01010_search, _this.itp_fn_OPER01010_empty, true, data.gridRecords, true);
  419. var ids = $(OPER01010_GRID_ID).getDataIDs();
  420. $.each(ids, function(idx, rowId) {
  421. $(OPER01010_GRID_ID).jqGrid('setCell', rowId, 'userNm', '', ITP_GRID_COL_STYLE.link);
  422. });
  423. const self=this;
  424. if(self.sortUse) return;
  425. self.sortUse=true;
  426. self['sort10']='asc';
  427. const th=$(OPER01010_GRID_LIST).find('.ui-jqgrid-labels .ui-th-div').eq(10);
  428. th.find('.s-ico').show();
  429. th.find('.ui-grid-ico-sort').hide();
  430. th.find('.glyphicon-triangle-bottom').show();//asc 는 bottom 으로 desc 는 top
  431. $(OPER01010_GRID_LIST).find('th').eq(10).css({cursor:'pointer',background:'#FFEBCD'});
  432. console.log("xxxxx th xxxx", th, self)
  433. //$(OPER01010_GRID_LIST).find('.ui-jqgrid-labels .ui-th-div').css('cursor','default');
  434. $(OPER01010_GRID_LIST).find('.ui-jqgrid-labels>th').on('click', function() {
  435. const idx=$(this).index();
  436. console.log("xxxx grid header click xxxxxxx index=="+idx, param );
  437. if(idx==10 || idx==8 ) {
  438. var field='',sort=self['sort'+idx];
  439. if(sort ) {
  440. sort=sort=='asc'?'desc':'asc';
  441. } else {
  442. // 등록일 내림차순, 제목 오름차순
  443. sort=idx==7? 'asc':idx==8? 'desc': 'asc';
  444. }
  445. const icon=sort=='asc'? '.glyphicon-triangle-bottom': '.glyphicon-triangle-top';
  446. self['sort'+idx]=sort;
  447. if(idx==10) {
  448. field='userNm';
  449. } else if(idx==8) {
  450. field='addDt';
  451. }
  452. param.page=1;
  453. param.sidx=field;
  454. param.sord=sort;
  455. $(OPER01010_GRID_ID).jqGrid('setGridParam',{
  456. postData:JSON.stringify(param)
  457. }).trigger('reloadGrid');
  458. $(this).find('.s-ico').show();
  459. $(this).find('.ui-grid-ico-sort').hide();
  460. $(this).find(icon).show();
  461. }
  462. });
  463. }
  464. };
  465. itp_fn_grid_make_remote(option);
  466. },
  467. itp_fn_OPER01010_empty: {
  468. push: function() {
  469. let param = $('#ITP_FORM_OPER01010_SEARCH').serializeObject();
  470. listObj.itp_OPER01010_param = param;
  471. },
  472. back: function() {
  473. $('#ITP_FORM_OPER01010_DEVI_TP_CD').val(listObj.itp_OPER01010_param.safflShopId);
  474. $('#ITP_FORM_OPER01010_ORDER_YN').val(listObj.itp_OPER01010_param.safflShopNm);
  475. $('#ITP_FORM_OPER01010_ADT_AUTH_CD').val(listObj.itp_OPER01010_param.sbrandId);
  476. $('#ITP_FORM_OPER01010_EMAIL_RCV_YN').val(listObj.itp_OPER01010_param.snticeTitl);
  477. $('#ITP_FORM_OPER01010_FROM_DT').val(listObj.itp_OPER01010_param.fromDt);
  478. $('#ITP_FORM_OPER01010_TO_DT').val(listObj.itp_OPER01010_param.toDt);
  479. }
  480. },
  481. reload : function() {
  482. $(OPER01010_GRID_EMPTY).off('click').on('click', function() {
  483. _this.itp_fn_OPER01010_empty.back();
  484. listObj.itp_OPER01010_param.gridSize = $.jgrid.defaults.rowNum;
  485. $(OPER01010_GRID_ID).setGridParam({'postData': JSON.stringify(listObj.itp_OPER01010_param)}).trigger('reloadGrid');
  486. });
  487. },
  488. clearData : function() {
  489. $(OPER01010_GRID_ID).jqGrid('clearGridData', true);
  490. $(OPER01010_GRID_LIST).find('.ui-jqgrid-bdiv').css('min-height', '100px');
  491. $(OPER01010_GRID_EMPTY).html(ITP_MSG_LOCALE.message.grid.noData);
  492. $(OPER01010_GRID_EMPTY).show();
  493. },
  494. unload : function() {
  495. $.jgrid.gridUnload(OPER01010_GRID_ID);
  496. }
  497. }
  498. };
  499. /*상세화면 Object*/
  500. let viewObj = {
  501. init: function (param) {
  502. this.load(param);
  503. },
  504. button: {
  505. },
  506. load: function(param) {
  507. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  508. },
  509. callback: function (result) {
  510. pageObj.switchScreen('VIEW');
  511. $('#ITP_FORM_OPER01010_VIEW #ITP_FORM_OPER01010_VIEW_USER_ID').val(result.userId);
  512. $('#ITP_FORM_OPER01010_VIEW .fnAfflShopNm').text(result.afflShopNm);
  513. $('#ITP_FORM_OPER01010_VIEW .fnBrandNm').text(result.brandNm);
  514. $('#ITP_FORM_OPER01010_VIEW .fnUserNm').text(result.userNm);
  515. $('#ITP_FORM_OPER01010_VIEW .fnAuthTpNm').text(result.authTpNm);
  516. $('#ITP_FORM_OPER01010_VIEW .fnUserStatNm').text(result.userStatNm);
  517. $('#ITP_FORM_OPER01010_VIEW .fnUserId').text(result.userId);
  518. $('#ITP_FORM_OPER01010_VIEW .fnEmail').text(result.email);
  519. $('#ITP_FORM_OPER01010_VIEW .fnTelNo').text(result.telNo);
  520. $('#ITP_FORM_OPER01010_VIEW .fnAddDt').text(result.addDt);
  521. $('#ITP_FORM_OPER01010_VIEW .fnLastLoginDt').text(result.lastLoginDt);
  522. $('#ITP_FORM_OPER01010_VIEW .fnStoreNm').text(result.storeNm);
  523. $('#ITP_FORM_OPER01010_VIEW .fnSpplyNm').text(result.spplyNm);
  524. // 권한정보 리스트 조회
  525. //pageObj.grid.init('VIEW');
  526. }
  527. };
  528. /*수정화면 Object*/
  529. let modifyObj = {
  530. init: function (param) {
  531. },
  532. button: {
  533. modify: function () {
  534. itp_fn_form_clear_validate(null, '#ITP_FORM_OPER01010_NEW');
  535. const userIdVal = $('#ITP_FORM_OPER01010_VIEW_USER_ID').val();
  536. const key = {userId: userIdVal, viewCd: 'R'};
  537. var param = $.param(key);
  538. modifyObj.load(param);
  539. }
  540. },
  541. load: function(param) {
  542. fn_ajax_call(API_DETAIL_INFO, param, this.callback, 'GET');
  543. },
  544. callback: function (result) {
  545. pageObj.switchScreen('MODIFY');
  546. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_VIEW_CD').val('U');
  547. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_AFFL_SHOP_ID').val(result.afflShopId);
  548. $('#ITP_FORM_OPER01010_NEW .fnAfflShopNm').text(result.afflShopNm);
  549. $('#ITP_FORM_OPER01010_NEW .fnBrandNm').text(result.brandNm);
  550. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_BRAND_ID').val(result.brandId);
  551. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_USER_NM').val(result.userNm);
  552. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_USER_STAT_CD').val(result.userStatCd);
  553. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_USER_ID').val(result.userId);
  554. $('#ITP_FORM_OPER01010_NEW .fnBrandKey').text(result.brandKey);
  555. $('#ITP_FORM_OPER01010_NEW .fnUserId').text(result.userId);
  556. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_USER_PW').val(result.userPw);
  557. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_TEL_NO').val(result.telNo);
  558. $('#ITP_FORM_OPER01010_NEW #ITP_FORM_OPER01010_NEW_EMAIL').val(result.email);
  559. $('#ITP_FORM_OPER01010_NEW .fnAddDt').text(result.userStatDt);
  560. $('#ITP_FORM_OPER01010_NEW .fnAuthTpNm').text(result.authTpNm);
  561. $('#ITP_FORM_OPER01010_NEW .fnStoreNm').text(result.storeNm);
  562. $('#ITP_FORM_OPER01010_NEW .fnSpplyNm').text(result.spplyNm);
  563. // $('#ITP_FORM_OPER01010_NEW .fnAddDt').text(result.addDt);
  564. // $('#ITP_FORM_OPER01010_NEW .fnLastLoginDt').text(result.lastLoginDt);
  565. //ITP_FORM_OPER01010_DETAIL_USER_ID
  566. // 리스트 조회
  567. //pageObj.grid.init('NEW');
  568. }
  569. };
  570. /*신규화면 Object*/
  571. let createObj = {
  572. init: function () {
  573. },
  574. button: {
  575. duplicate: function() {
  576. const formId = '#ITP_FORM_OPER01010_DETAIL';
  577. itp_fn_form_clear_validate(null, formId);
  578. var vali_userId = itp_fn_form_validate(formId, formId + '_USER_ID', ['empty'], undefined);
  579. if (vali_userId) {
  580. var dupFn = function(result) {
  581. if (result.code == 'N') {
  582. ITP_FORM_OPER01010_DETAIL_IS_DUPLICATE = false;
  583. } else {
  584. ITP_FORM_OPER01010_DETAIL_IS_DUPLICATE = true;
  585. }
  586. };
  587. const key = {'userId': $(formId + '_USER_ID').val()};
  588. const param = $.param(key);
  589. fn_ajax_call(API_CHECK_DUPLICATE, param, dupFn, 'GET');
  590. }
  591. },
  592. resetPass: function() {
  593. var resetPwFn = {
  594. callBack: function(args) {
  595. const key = {'userId': $('#ITP_FORM_OPER01010_NEW_USER_ID').val()};
  596. const param = $.param(key);
  597. fn_ajax_call(API_INTI_USERPW, param, undefined, 'GET');
  598. }
  599. };
  600. itp_fn_modal_confirm(ITP_MSG_LOCALE.message.ajax.askResetUserPw, resetPwFn, null);
  601. },
  602. save: function() {
  603. const formId = (pageObj.pageMode === 'MODIFY') ? '#ITP_FORM_OPER01010_NEW' : '#ITP_FORM_OPER01010_DETAIL';
  604. itp_fn_form_clear_validate(null, formId);
  605. if (itp_fn_form_event.isValid(formId)) {
  606. if($(formId + ' #ITP_FORM_OPER01010_DETAIL_USER_PW').val() !== $(formId + ' #ITP_FORM_OPER01010_DETAIL_USER_PW_CONFIRM').val()) {
  607. var element = '#ITP_FORM_OPER01010_DETAIL_USER_PW';
  608. $(element).closest('.itp_ip').addClass('has-error');
  609. var error_msg = $('<span class="help-block">' + ITP_MSG_LOCALE.message.form.wrongPwd + '</span>');
  610. error_msg.insertAfter($(element));
  611. return;
  612. }
  613. if (ITP_FORM_OPER01010_DETAIL_IS_DUPLICATE) {
  614. itp_fn_modal_duplicate(ITP_MSG_LOCALE.label.userId, formId + '_USER_ID');
  615. } else {
  616. let param = $(formId).serializeObject();
  617. if (fn_make_user_info.get('authTpCd') == "40") {
  618. param.brandId = fn_make_user_info.get('brandId');
  619. }
  620. var searhFn = function() {
  621. ITP_FORM_OPER01010_DETAIL_IS_WRITING = false;
  622. listObj.grid.search();
  623. };
  624. fn_ajax_call(API_DETAIL_SAVE, JSON.stringify(param), searhFn, 'POST');
  625. }
  626. } else {
  627. // console.log('유효성 실패');
  628. }
  629. },
  630. cancel: function() {
  631. listObj.grid.search();
  632. }
  633. }
  634. };
  635. /*브랜드그룹 Object*/
  636. let afflShopObj = {
  637. init: function () {
  638. this.action();
  639. },
  640. action: function () {
  641. var _this = this;
  642. // 브랜드그룹 조회 버튼 클릭
  643. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP').on('click', function() {
  644. _this.popup('L');
  645. });
  646. // 브랜드그룹 텍스트 삭제 버튼 클릭
  647. $('#ITP_FORM_OPER01010_DELETE_AFFL_SHOP').on('click', function() {
  648. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM').val('');
  649. $('select#ITP_FORM_OPER01010_SEARCH_BRAND_ID option').remove();
  650. });
  651. // 신규등록 브랜드그룹 조회 버튼 클릭
  652. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP').on('click', function() {
  653. _this.popup('C');
  654. });
  655. // 신규등록 브랜드그룹 텍스트 삭제 버튼 클릭
  656. $('#ITP_FORM_OPER01010_DETAIL_DELETE_AFFL_SHOP').on('click', function() {
  657. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP_NM').val('');
  658. $('select#ITP_FORM_OPER01010_DETAIL_BRAND_ID option').remove();
  659. });
  660. },
  661. popup: function (view) {
  662. // 팝업
  663. var popFn = (view === 'C') ? this.callback.create : this.callback.list;
  664. fn_call_popup('biz', 'BIZPOP_AFFL_SHOP', '#ITP_ASIDE', popFn, null, 'S');
  665. },
  666. callback: {
  667. list: function(rowDataPop) {
  668. // console.log(rowDataPop);
  669. if(rowDataPop.AFFL_SHOP) {
  670. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_ID').val(rowDataPop.AFFL_SHOP.afflShopId);
  671. $('#ITP_FORM_OPER01010_SEARCH_AFFL_SHOP_NM').val(rowDataPop.AFFL_SHOP.afflShopNm);
  672. }
  673. if(rowDataPop.AFFL_BRAND) {
  674. fn_make_select_brand(rowDataPop.AFFL_BRAND, 'ITP_FORM_OPER01010_SEARCH_BRAND_ID', true, '선택');
  675. }
  676. },
  677. create: function(rowDataPop) {
  678. if(rowDataPop.AFFL_SHOP) {
  679. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP_ID').val(rowDataPop.AFFL_SHOP.afflShopId);
  680. $('#ITP_FORM_OPER01010_DETAIL_AFFL_SHOP_NM').val(rowDataPop.AFFL_SHOP.afflShopNm);
  681. }
  682. if(rowDataPop.AFFL_BRAND) {
  683. fn_make_select_brand(rowDataPop.AFFL_BRAND, 'ITP_FORM_OPER01010_DETAIL_BRAND_ID', true, '선택');
  684. }
  685. }
  686. }
  687. };