하석형 하석형 05-16
250516 하석형 부서 사용자 다중 등록 기능
@5ee298db87a190f94c9165c2eb7e815f3bdee913
client/views/pages/adm/departmentManagement/DepartmentManagement.vue
--- client/views/pages/adm/departmentManagement/DepartmentManagement.vue
+++ client/views/pages/adm/departmentManagement/DepartmentManagement.vue
@@ -172,15 +172,38 @@
       <button class="btn-close" @click="modalClose"></button>
     </template>
     <div class="tbl-wrap">
-      <ListTable
+      <!-- <ListTable
         :className="'data cursor'"
         :colgroup="mbrColgroup"
         :thead="mbrThead"
         :tbody="mbrTbody"
-        @listClick="selectMbr"
+        @listClick="addMbr"
       >
+      </ListTable> -->
+      <ListTable
+        :className="'data'"
+        :colgroup="mbrColgroup"
+        :thead="mbrThead"
+        :tbody="mbrTbody"
+      >
+        <template v-slot:checkbox="{ row, idx }">
+          <div class="form-check">
+            <input
+            type="checkbox"
+            :id="'checkAdd_' + idx"
+            class="checkbox md"
+            :checked="selectedAddMbr.includes(row.loginId)"
+            @change="() => checkboxAddChange(row, idx)"
+          />
+          <label :for="'checkAdd_' + idx"></label>
+          </div>
+        </template>
       </ListTable>
     </div>
+    <template v-slot:footer>
+      <button class="btn sm tertiary" @click="modalClose">취소</button>
+      <button class="btn sm main" @click="addMbr">추가</button>
+    </template>
   </Modal>
 </template>
 
@@ -220,8 +243,8 @@
       colgroup: ["5%", "15%", "20%", "20%", "20%"], // 부서관련 등록된 사용자 테이블 생성
       thead: ["선택", "아이디", "이름", "연락처", "이메일"], // 부서관련 등록된 사용자 테이블 생성
       tbody: [],
-      mbrColgroup: ["20%", "20%", "20%", "20%"], // 부서관련 등록할 사용자 테이블 생성
-      mbrThead: ["아이디", "이름", "연락처", "이메일"], // 부서관련 등록할 사용자 테이블 생성
+      mbrColgroup: ["20%", "20%", "20%", "20%", "20%"], // 부서관련 등록할 사용자 테이블 생성
+      mbrThead: ["선택", "아이디", "이름", "연락처", "이메일"], // 부서관련 등록할 사용자 테이블 생성
       mbrTbody: [],
       iconPath: 'ico_team',
       userListModal: false,
@@ -230,6 +253,7 @@
       deptMbr: [], // 부서에 등록된 사용자 목록
       mbrList: [], // 부서에 등록되지 않은 사용자 목록 [ 부서 사용자 등록을 위한 사용자 목록 ]
       selectedMbr: [], // 부서에 등록된 사용자 중 지정된 사용자 [삭제용도]
+      selectedAddMbr: [], // 부서에 등록할 사용자 [등록용도]
       selectedDeptId: null, // 선택된 부서
       selectedAuthrt: "", // 부서 권한
       newDept: {}, // 신규 부서 등록
@@ -493,18 +517,36 @@
         }
       }
     },
+    // 추가할 사용자 정보 체크
+    checkboxAddChange(row, idx) {
+      const selectIdx = this.selectedAddMbr.indexOf(row.loginId);
+      if (selectIdx === -1) {
+        this.selectedAddMbr.push(row.loginId);
+      } else {
+        this.selectedAddMbr.splice(selectIdx, 1);
+      }
+    },
     // 사용자 부서 등록
-    async selectMbr(idx) {
-      if (!confirm("해당 사용자를 등록하시겠습니까?")) return false;
-      try {
-        const params = {
+    async addMbr(idx) {
+      if (this.selectedAddMbr.length <= 0) {
+        alert("등록할 사용자를 추가하세요.");
+        return;
+      }
+      // if (!confirm("해당 사용자를 등록하시겠습니까?")) return false;
+      
+      // 회원 아이디 추출
+      const addMbr = this.mbrList
+        .filter((mbr) => this.selectedAddMbr.includes(mbr.lgnId))
+        .map((mbr) => ({
+          ...mbr,
           deptId: this.selectedDeptId,
-          mbrId: this.mbrList[idx].mbrId,
-        };
-        const res = await deptMbrSaveProc(params);
+      }));
+      try {
+        const res = await deptMbrSaveProc(addMbr);
         alert(res.data.message);
         if (res.status == 200) {
           this.fnFindByMbr();
+          this.modalClose();
         }
       } catch (error) {
         const errorData = error.response.data;
Add a comment
List