diff --git a/package-lock.json b/package-lock.json
index 5b210b03d8b571be4a6fb1439e459faa6da85468..0607ceb5ba6dd73e90ef38b932146c76f8a2fa18 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
         "axios": "^0.25.0",
         "bootstrap": "^5.1.3",
         "core-js": "^3.6.5",
+        "jquery": "^3.6.0",
         "vue": "^3.0.0",
         "vue-router": "^4.0.12"
       },
@@ -8500,6 +8501,11 @@
       "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
       "dev": true
     },
+    "node_modules/jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+    },
     "node_modules/js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
@@ -21955,6 +21961,11 @@
       "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
       "dev": true
     },
+    "jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+    },
     "js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
diff --git a/package.json b/package.json
index 19533c04b4d95b9df0dc545b57ba20e7b1b97701..e0e5151d372051ae0fa0ffed26276e4e02a87deb 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
     "axios": "^0.25.0",
     "bootstrap": "^5.1.3",
     "core-js": "^3.6.5",
+    "jquery": "^3.6.0",
     "vue": "^3.0.0",
     "vue-router": "^4.0.12"
   },
diff --git a/src/components/Modal.vue b/src/components/Modal.vue
new file mode 100644
index 0000000000000000000000000000000000000000..70703491708437cadcfbb932456ba1963750f0ce
--- /dev/null
+++ b/src/components/Modal.vue
@@ -0,0 +1,34 @@
+<script>
+import DepartemenInsert from "../views/DepartemenInsert.vue"
+
+export default{
+	components: {
+		DepartemenInsert,
+	},
+	props:{},
+	emits: ["add-dept"],
+	setup (props, context) {
+
+		//Push emit data to DepartemenIndex as parent
+		var emitAddDept = (data) => {
+			context.emit("add-dept", data);
+		};
+
+		return {emitAddDept};
+	},
+};
+
+
+</script>
+
+<template>
+  <div class="modal">
+      <div class="modal-content">
+					<h1>Type</h1>
+					<div v-if="type === 'AddDept'">
+						<DepartemenInsert @add-dept="emitAddDept"/>
+					</div>
+					<button @click="$emit('close-modal')">Cancel</button>
+			</div>
+	</div>
+</template>
\ No newline at end of file
diff --git a/src/components/modal1.vue b/src/components/modal1.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1c19bde0faa8c4a6780f49bc52b08957a7396a62
--- /dev/null
+++ b/src/components/modal1.vue
@@ -0,0 +1,25 @@
+<template>
+<!-- Modal -->
+    <div class="modal fade" id="modalAddDept" tabindex="-1" role="dialog" aria-labelledby="modalAddDept_" aria-hidden="true">
+        <div class="modal-dialog modal-dialog-centered" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group">
+                        <input type="text" placeholder="Nama Departemen">
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+                    <button type="button" class="btn btn-primary">Save changes</button>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>		
+        
\ No newline at end of file
diff --git a/src/views/DepartemenIndex-2.vue b/src/views/DepartemenIndex-2.vue
new file mode 100644
index 0000000000000000000000000000000000000000..2879619c9671124966c1273047479245811bb36e
--- /dev/null
+++ b/src/views/DepartemenIndex-2.vue
@@ -0,0 +1,198 @@
+<template>
+  <div class="container-fluid">
+    <div class="row flex-nowrap">
+      <Sidebar current_page="Departemen"></Sidebar>
+      <div class="col ps-md-2 pt-2">
+        <Header></Header>
+        <div class="row p-3">
+          <div class="row p-2">
+            <div class="col">
+              <h1 class="text-blue">Daftar Departemen</h1>
+            </div>
+            <div class="col">
+              <button
+                class="btn float-end"
+                @click="handleOpen('type-addDept')"
+              >
+                Tambah Departemen
+              </button>
+            </div>
+          </div>
+          <div class="row p-2">
+            <div class="search float-end col-3">
+              <div class="row">
+                <div class="col-10">
+                  <input
+                    class="search-input p-1"
+                    v-model="filter"
+                    type="text"
+                    placeholder="Pencarian"
+                  />
+                </div>
+                <div class="col">
+                  <i
+                    class="icon ion-ios-search text-blue float-end px-1"
+                    style="font-size: 23px"
+                  ></i>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="row p-2">
+          <Table
+            :data="dept"
+            :columns="columns"
+            :filter="filter"
+            @delete-entry="deleteDept"
+            @edit-entry="editDept"
+            @detail-entry="detailDept"
+          ></Table>
+        </div>
+      </div>
+    </div>
+    <div v-if="modalOpen">
+      <Modal 
+        @close-modal="handleClose()"
+        @add-dept="handleSubmit"
+        :type="modalName"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import {ref} from "vue";
+import Table from "../components/table";
+import Header from "../components/header";
+import Sidebar from "../components/sidebar";
+import Modal from "../components/modal"
+
+export default {
+  name: "DepartemenIndex",
+  components: {
+    Table,
+    Header,
+    Sidebar,
+    Modal,
+  },
+  setup() {
+    //init
+    const modalOpen = ref(false);
+    const modalName = ref("");
+
+    const handleOpen = (type) => {
+      switch (type) {
+        case "type-addDept":
+          modalName = "AddDept";
+          break;
+        // case "type-editDept":
+        //   modalName = "EditDept";
+        //   break;
+      }
+      modalOpen = true;
+    }
+
+    const handleClose = () => {
+      modalOpen = false;
+      modalName = "";
+    };
+
+    const handleSubmit = (data) => {
+      //tambah data 
+      console.log(data);
+    };
+
+    return { modalOpen, modalName, handleOpen, handleClose, handleSubmit};
+
+  },
+  data() {
+    return {
+      dept: [],
+      temp_dept: [
+        {
+          id: 1,
+          nama: "Keuangan",
+        },
+        {
+          id: 2,
+          nama: "Marketing",
+        },
+        {
+          id: 3,
+          nama: "Operasional",
+        },
+      ],
+      columns: {
+        No: "id",
+        Nama: "nama",
+      },
+      filter: "",
+    };
+  },
+  methods: {
+    getDept() {
+      // di sini ambil data admin dari database
+      this.dept = this.temp_dept;
+    },
+    detailDept(id) {
+      console.log(id);
+    },
+    deleteDept(id) {
+      console.log(id);
+    },
+    editDept(id) {
+      console.log(id);
+    },
+    updateDept(event){
+      console.log(event);
+    }
+  },
+  mounted() {
+    this.getDept();
+  },
+};
+</script>
+
+<style scoped>
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+
+.btn {
+  background-color: #6992b4;
+  color: #f1f7fc;
+  border-radius: 15px;
+  padding: 7px;
+}
+
+.icon {
+  padding-left: 2px;
+}
+
+.search {
+  border: 1px solid;
+  border-color: #6992b4;
+  border-radius: 5px;
+}
+.search-input {
+  border: none;
+  border-color: transparent;
+  width: 100%;
+}
+.search-input:focus {
+  outline: none;
+}
+.modal {
+  width: 600px;
+  max-width: 100%;
+  position: absolute;
+  float: left;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+  margin: auto;
+}
+</style>
diff --git a/src/views/DepartemenIndex.vue b/src/views/DepartemenIndex.vue
index badfde9d63d6d9b4c9fb3e8ecaa8685fba196b51..e9f56cda5bee957a87a1c232e978dad0be4fa269 100644
--- a/src/views/DepartemenIndex.vue
+++ b/src/views/DepartemenIndex.vue
@@ -90,7 +90,7 @@
           </form>
         </div>
         <div class="modal-footer p-2">
-          <button type="button" class="btn btn-primary mx-auto">Tambah</button>
+          <button type="button" class="btn btn-primary mx-auto" @click="updateDept">Tambah</button>
         </div>
       </div>
     </div>
@@ -147,6 +147,9 @@ export default {
     editDept(id) {
       console.log(id);
     },
+    updateDept(event){
+      console.log(event);
+    }
   },
   mounted() {
     this.getDept();
diff --git a/src/views/DepartemenInsert.vue b/src/views/DepartemenInsert.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ac2e3b39c8e9576fd64cd403dd2be8590e0aea4d
--- /dev/null
+++ b/src/views/DepartemenInsert.vue
@@ -0,0 +1,30 @@
+<script>
+import {ref} from "vue";
+
+export default{
+	emits:["add-dept"],
+	setup(_, context) {
+		// Bind form data
+		const namadept = ref(null);
+
+		//push emit data to modal as parent
+		const addDept = () => {
+			const data = {
+				namadept,
+			};
+			context.emit("add-dept", data);
+			//Reset form data
+			namadept = null;
+		},
+
+		return { namadept, addDept }
+	}
+};
+
+</script>
+
+<template>
+	<label for="add-departemen">Nama Departemen</label>
+	<input id="add-departemen" type="text" v-model="namadept" />
+	<button @click="addDept()">Tambah</button>
+</template>
\ No newline at end of file