logList.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <template>
  2. <div>
  3. <div class="inner--headers">
  4. <h2>{{ pageId }}</h2>
  5. <div class="bread--crumbs--wrap">
  6. <span>홈</span>
  7. <span>{{ pageId }}</span>
  8. <span v-if="pageIdSub">{{ pageIdSub }}</span>
  9. </div>
  10. </div>
  11. <searchModules />
  12. <div class="data--list--wrap">
  13. <div class="btn--actions--wrap">
  14. <div class="left--sections">
  15. <!-- <v-btn class="custom-btn mini btn-white">선택 삭제</v-btn> -->
  16. </div>
  17. <div class="right--sections">
  18. <!-- <v-btn class="custom-btn mini btn-reg" @click="addLocated"
  19. ><i class="ico"></i>신규 등록</v-btn
  20. > -->
  21. </div>
  22. </div>
  23. <div class="tbl-wrapper">
  24. <div class="tbl-wrap">
  25. <!-- ag grid -->
  26. <ag-grid-vue
  27. style="width: 100%; height: calc(10 * 2.94rem)"
  28. class="ag-theme-quartz"
  29. :gridOptions="gridOptions"
  30. :rowData="tblItems"
  31. :paginationPageSize="pageObj.pageSize"
  32. :suppressPaginationPanel="true"
  33. @grid-ready="onGridReady"
  34. @rowClicked="detailLocated"
  35. >
  36. </ag-grid-vue>
  37. <!-- 페이징 -->
  38. <div class="ag-grid-custom-pagenations" v-if="pageObj.totalCnt != 0">
  39. <pagination @chg_page="chgPage" :pageObj="pageObj"></pagination>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </template>
  46. <script setup>
  47. import pagination from "../components/common/pagination.vue";
  48. import { AgGridVue } from "ag-grid-vue3";
  49. import searchModules from "@/components/search/searchModules";
  50. /************************************************************************
  51. | 레이아웃
  52. ************************************************************************/
  53. definePageMeta({
  54. layout: "default",
  55. });
  56. /************************************************************************
  57. | PROPS
  58. ************************************************************************/
  59. const props = defineProps({
  60. propsData: {
  61. type: Object,
  62. default: () => {},
  63. },
  64. });
  65. /************************************************************************
  66. | 스토어
  67. ************************************************************************/
  68. const useDtStore = useDetailStore();
  69. /************************************************************************
  70. | 전역
  71. ************************************************************************/
  72. const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
  73. const router = useRouter();
  74. const pageId = ref("LOG");
  75. const pageIdSub = ref();
  76. let pageObj = ref({
  77. page: 1, // 현재 페이지
  78. pageMaxNumSize: 10, // 페이지 숫자 최대 표현 개수
  79. pageSize: 10, // 테이블 조회 데이터 개수
  80. totalCnt: 0, // 전체 페이지
  81. });
  82. const tblItems = ref([]); // stat 데이터
  83. /* eslint-disable */
  84. /* prettier-ignore */
  85. const remToPx = () => parseFloat(getComputedStyle(document.documentElement).fontSize);
  86. const rowHeightRem = 2.65; // 원하는 rem 값
  87. const rowHeightPx = rowHeightRem * remToPx();
  88. const gridApi = shallowRef();
  89. // gridOption
  90. const gridOptions = {
  91. columnDefs: [
  92. {
  93. headerName: "No",
  94. valueGetter: (params) => params.api.getDisplayedRowCount() - params.node.rowIndex,
  95. sortable: false,
  96. width: 70,
  97. },
  98. { headerName: "ID", field: "log_id", sortable: false },
  99. { headerName: "활동유형", field: "act_ctgy_nm", sortable: false },
  100. { headerName: "일시", field: "log_dtime", sortable: false },
  101. ],
  102. rowData: tblItems.value, // 테이블 데이터
  103. autoSizeStrategy: {
  104. type: "fitGridWidth", // width맞춤
  105. },
  106. suppressMovableColumns: true,
  107. headerHeight: rowHeightPx,
  108. rowHeight: rowHeightPx,
  109. pagination: true,
  110. suppressPaginationPanel: true, // 하단 default 페이징 컨트롤 숨김
  111. // rowSelection: {
  112. // checkboxes: true,
  113. // headerCheckbox: true,
  114. // enableClickSelection: false,
  115. // mode: "multiRow",
  116. // },
  117. };
  118. /************************************************************************
  119. | 함수(METHODS)
  120. ************************************************************************/
  121. const onGridReady = (__PARAMS) => {
  122. gridApi.value = __PARAMS.api;
  123. };
  124. const chgPage = (__PAGE) => {
  125. pageObj.value.page = __PAGE;
  126. gridApi.value.paginationGoToPage(__PAGE - 1);
  127. };
  128. // const addLocated = () => {
  129. // router.push({
  130. // path: "/view/media/newsAdd",
  131. // //query: { id: rowId },
  132. // });
  133. // useDtStore.boardInfo.pageType = "I";
  134. // };
  135. // const detailLocated = (__EVENT) => {
  136. // router.push({
  137. // path: "/view/media/newsAdd",
  138. // });
  139. // useDtStore.boardInfo.seq = __EVENT.data.seq;
  140. // useDtStore.boardInfo.pageType = "U";
  141. // };
  142. const logListGet = () => {
  143. let _req = {
  144. _size: 1000,
  145. _index: 0,
  146. //brd_lang: "",
  147. //brd_cd: "BR00",
  148. };
  149. useAxios()
  150. .post("/log/list", _req)
  151. .then((res) => {
  152. _req._size = res.data.list.length;
  153. tblItems.value = res.data.list;
  154. pageObj.value.totalCnt = tblItems.value.length;
  155. })
  156. .catch((error) => {});
  157. };
  158. /************************************************************************
  159. | WATCH
  160. ************************************************************************/
  161. watch(() => {});
  162. onMounted(() => {
  163. logListGet();
  164. });
  165. </script>