diff --git a/vuetify-project/audit.html b/vuetify-project/audit_games.html
similarity index 84%
rename from vuetify-project/audit.html
rename to vuetify-project/audit_games.html
index 8ca1b2bb3d412d4be8ca421807062c00d07e5bbe..5af21c85b7fe17312a594d47ad46a6a7214a8909 100644
--- a/vuetify-project/audit.html
+++ b/vuetify-project/audit_games.html
@@ -15,7 +15,7 @@
 
 <body>
   <div id="app"></div>
-  <script type="module" src="src/components/audit.js"></script>
+  <script type="module" src="src/audit_games.js"></script>
 </body>
 
 </html>
diff --git a/vuetify-project/game_detail.html b/vuetify-project/lauched_games.html
similarity index 82%
rename from vuetify-project/game_detail.html
rename to vuetify-project/lauched_games.html
index 5ffbd8fd687e8c8d48d4ecf84694e1f8f1755748..3455183f2d4362fb7d0f90e39498ab7032fa0084 100644
--- a/vuetify-project/game_detail.html
+++ b/vuetify-project/lauched_games.html
@@ -15,7 +15,7 @@
 
 <body>
   <div id="app"></div>
-  <script type="module" src="src/components/game_detail.js"></script>
+  <script type="module" src="src/lauched_games.js"></script>
 </body>
 
 </html>
diff --git a/vuetify-project/package-lock.json b/vuetify-project/package-lock.json
index acdf6aa641012759503797b190b3a06d050177fe..cbca27f9a02e1dc4e4bf42ee322a6a33ccb38638 100644
--- a/vuetify-project/package-lock.json
+++ b/vuetify-project/package-lock.json
@@ -10,6 +10,7 @@
       "dependencies": {
         "@mdi/font": "7.0.96",
         "axios": "^1.6.8",
+        "dayjs": "^1.11.10",
         "roboto-fontface": "*",
         "vue": "^3.3.0",
         "vuetify": "^3.5.9"
@@ -882,6 +883,11 @@
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
       "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
     },
+    "node_modules/dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
     "node_modules/debug": {
       "version": "4.3.4",
       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
diff --git a/vuetify-project/package.json b/vuetify-project/package.json
index 082147c6cfc37556ed0d4c21cf481c57123d38ed..f5af6160a51d8d34e97a352a4ba7f125303a1bfa 100644
--- a/vuetify-project/package.json
+++ b/vuetify-project/package.json
@@ -9,6 +9,7 @@
   "dependencies": {
     "@mdi/font": "7.0.96",
     "axios": "^1.6.8",
+    "dayjs": "^1.11.10",
     "roboto-fontface": "*",
     "vue": "^3.3.0",
     "vuetify": "^3.5.9"
diff --git a/vuetify-project/src/components/audit.js b/vuetify-project/src/audit_games.js
similarity index 88%
rename from vuetify-project/src/components/audit.js
rename to vuetify-project/src/audit_games.js
index 8b9cd9952620b886e0bfe9a26defb11b8906ee2b..4e35c38c132fdef0e84880525ff124d0e211f7e4 100644
--- a/vuetify-project/src/components/audit.js
+++ b/vuetify-project/src/audit_games.js
@@ -8,7 +8,7 @@
 import { registerPlugins } from '@/plugins'
 
 // Components
-import App from './audit.vue'
+import App from './audit_games.vue'
 
 // Composables
 import { createApp } from 'vue'
diff --git a/vuetify-project/src/audit_games.vue b/vuetify-project/src/audit_games.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a3ca2739fd9c7a1fcf4562fc064d8f0b769acda1
--- /dev/null
+++ b/vuetify-project/src/audit_games.vue
@@ -0,0 +1,132 @@
+<template>
+  <v-app>
+    <!-- {{ filteredMatches }} -->
+    <v-container>
+      <v-data-table :headers="headers" :items="filteredMatches" item-key="id" :search="search.value" :items-per-page="10">
+        <template v-slot:top>
+          <v-toolbar flat>
+            <v-toolbar-title>比赛</v-toolbar-title>
+            <v-divider class="mx-4" inset vertical></v-divider>
+            <v-spacer></v-spacer>
+            <v-text-field v-model="search" append-icon="mdi-magnify" label="搜索" single-line hide-details></v-text-field>
+          </v-toolbar>
+        </template>
+        <template v-slot:item.date="{ item }">
+          {{ item.date }}
+        </template>
+        <template v-slot:item.team="{ item }">
+          {{ item.homeTeam }} VS {{ item.awayTeam }}
+        </template>
+        <template v-slot:item.score="{ item }">
+          {{ item.homeScore }} - {{ item.awayScore }}
+        </template>
+        <template v-slot:item.actions="{ item }">
+          <v-icon small @click="approveMatch(item)" style="padding-right: 20px;">mdi-check</v-icon>
+          <v-icon small @click="rejectMatch(item)" style="padding-left: 20px;">mdi-close</v-icon>
+        </template>
+      </v-data-table>
+    </v-container>
+
+  </v-app>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+import { reactive } from 'vue';
+import { computed } from 'vue';
+import axios from 'axios';
+
+const matches = ref(new Array());
+refresh();
+function refresh(){
+  axios.get('/api/lauchedGames',)
+    .then(function(response){
+        const data = response.data;
+        for(var i = 0; i < data.Games.length; i++){
+            var match = {
+                id:data.Games[i].id,
+                date:data.Games[i].game_date,
+                homeTeam:data.Games[i].player1_real_name,
+                awayTeam:data.Games[i].player2_real_name,
+                homeScore:data.Games[i].score1,
+                awayScore:data.Games[i].score2,
+                verify:true,
+            }
+            matches.value[i] = match;
+        }
+    })
+    .catch(function (error) {
+    console.log(error);
+  })
+}
+
+function refresh1(){
+  axios.get('/api/lauchedGames',)
+    .then(function(response){
+        const data = response.data;
+        const matches = ref(new Array());
+        for(var i = 0; i < data.Games.length; i++){
+            var match = {
+                id:data.Games[i].id,
+                date:data.Games[i].game_date,
+                homeTeam:data.Games[i].player1_real_name,
+                awayTeam:data.Games[i].player2_real_name,
+                homeScore:data.Games[i].score1,
+                awayScore:data.Games[i].score2,
+                verify:true,
+            }
+            matches.value[i] = match;
+        }
+    })
+    .catch(function (error) {
+    console.log(error);
+  })
+}
+
+const search = ref('');
+const headers = reactive([
+  { title: '日期', key: 'date', sortable: false },
+  { title: '比赛', key: 'team', sortable: false },
+  { title: '比分', key: 'score', sortable: false },
+  { title: '审核', key: 'actions', sortable: false }
+]);
+// const matches = ref(new Array());
+
+const filteredMatches = computed(() => {
+  // return matches.value
+  return matches.value.filter(match =>
+    match.homeTeam.includes(search.value) ||
+    match.awayTeam.includes(search.value) ||
+    match.homeScore === parseInt(search.value) ||
+    match.awayScore === parseInt(search.value)
+  );
+})
+
+function approveMatch(match) {
+  match.verify = true;
+  axios.post('/api/confirmGame',{
+    game_id:match.id,
+    confirm:match.verify
+  })
+    .then(function(){
+      refresh1();
+    })
+    .catch(function (error) {
+    console.log(error);
+  })
+}
+
+function rejectMatch(match){
+  match.verify = false;
+  axios.post('/api/confirmGame',{
+    game_id:match.id,
+    confirm:match.verify
+  })
+    .then(function(){
+      refresh1();
+    })
+    .catch(function (error) {
+    console.log(error);
+  })
+}
+</script>
\ No newline at end of file
diff --git a/vuetify-project/src/components/audit.vue b/vuetify-project/src/components/audit.vue
deleted file mode 100644
index 1774518dbaca6da5ff321431f0a17c000486298f..0000000000000000000000000000000000000000
--- a/vuetify-project/src/components/audit.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-<template>
-  <v-app>
-    <!-- {{ filteredMatches }} -->
-    <v-container>
-      <v-data-table :headers="headers" :items="filteredMatches" item-key="id" :search="search.value" :items-per-page="10">
-        <template v-slot:top>
-          <v-toolbar flat>
-            <v-toolbar-title>比赛</v-toolbar-title>
-            <v-divider class="mx-4" inset vertical></v-divider>
-            <v-spacer></v-spacer>
-            <v-text-field v-model="search" append-icon="mdi-magnify" label="搜索" single-line hide-details></v-text-field>
-          </v-toolbar>
-        </template>
-        <template v-slot:item.team="{ item }">
-          {{ item.homeTeam }} VS {{ item.awayTeam }}
-        </template>
-        <template v-slot:item.score="{ item }">
-          {{ item.homeScore }} - {{ item.awayScore }}
-        </template>
-        <template v-slot:item.actions="{ item }">
-          <v-icon small @click="approveMatch(item)" style="padding-right: 20px;">mdi-check</v-icon>
-          <v-icon small @click="rejectMatch(item)" style="padding-left: 20px;">mdi-close</v-icon>
-        </template>
-      </v-data-table>
-    </v-container>
-
-  </v-app>
-</template>
-
-<script setup>
-import { ref } from 'vue';
-import { reactive } from 'vue';
-import { computed } from 'vue';
-
-const search = ref('');
-const headers = reactive([
-  { title: '比赛', key: 'team' },
-  { title: '比分', key: 'score' },
-  { title: '审核', key: 'actions', sortable: false }
-]);
-const matches = ref([
-  { id: 1, homeTeam: '张三', awayTeam: '零', homeScore: 2, awayScore: 1, status: 'pending' },
-  { id: 2, homeTeam: '李四', awayTeam: '一', homeScore: 0, awayScore: 3, status: 'pending' },
-  { id: 3, homeTeam: '王五', awayTeam: '二', homeScore: 2, awayScore: 2, status: 'pending' },
-]);
-
-const filteredMatches = computed(() => {
-  // return matches.value
-  return matches.value.filter(match =>
-    match.homeTeam.includes(search.value) ||
-    match.awayTeam.includes(search.value) ||
-    match.homeScore === parseInt(search.value) ||
-    match.awayScore === parseInt(search.value)
-  );
-})
-
-function approveMatch(match) {
-  // Perform approval logic
-  match.status = 'approved';
-}
-function rejectMatch(match) {
-  // Perform rejection logic
-  match.status = 'rejected';
-}
-
-</script>
\ No newline at end of file
diff --git a/vuetify-project/src/components/gamemanage.vue b/vuetify-project/src/components/gamemanage.vue
index 9d9a4bb903cab534c409aecbf04b7db98005db28..8e322d4ad8efe0b09f8e82530b0419126b56b43f 100644
--- a/vuetify-project/src/components/gamemanage.vue
+++ b/vuetify-project/src/components/gamemanage.vue
@@ -10,46 +10,45 @@
       <v-form v-model="isValid">
         <v-row no-gutters>
           <v-col align-self="center">
-            <v-autocomplete variant="underlined" v-model="player1" label="姓名" :rules="[rules.player1]"
-              :items="['California', 'Colorado', 'Florida', 'Georgia', 'Texas', 'Wyoming']"></v-autocomplete>
+            <v-autocomplete variant="underlined" v-model="player1" label="姓名"
+              :rules="[rules.player_not_none, rules.player1]" :items="arr"></v-autocomplete>
           </v-col>
           <v-col cols="2" align-self="center">
             <div class="text-h6" style="text-align: center;">VS</div>
           </v-col>
           <v-col align-self="center">
-            <v-autocomplete variant="underlined" v-model="player2" label="姓名" :rules="[rules.player2]"
-              :items="['California', 'Colorado', 'Florida', 'Georgia', 'Texas', 'Wyoming']"></v-autocomplete>
+            <v-autocomplete variant="underlined" v-model="player2" label="姓名"
+              :rules="[rules.player_not_none, rules.player2]" :items="arr"></v-autocomplete>
           </v-col>
         </v-row>
         <v-row no-gutters>
           <v-col align-self="center">
-            <v-select variant="underlined" v-model="score1" label="得分" :rules="[rules.score1]"
+            <v-select variant="underlined" v-model="score1" label="得分" :rules="[rules.score_not_none, rules.score1]"
               :items="['0', '1', '2', '3', '4', '5']"></v-select>
           </v-col>
           <v-col cols="2" align-self="center">
             <div class="text-h6" style="text-align: center;">:</div>
           </v-col>
           <v-col align-self="center">
-            <v-select variant="underlined" v-model="score2" label="得分" :rules="[rules.score2]"
+            <v-select variant="underlined" v-model="score2" label="得分" :rules="[rules.score_not_none, rules.score2]"
               :items="['0', '1', '2', '3', '4', '5']"></v-select>
           </v-col>
         </v-row>
         <v-dialog>
           <template v-slot:activator="{ props: activatorProps }">
-            <v-btn block v-bind="activatorProps" class="text-none mb-4" color="indigo" size="large"
-              variant="outlined">
+            <v-btn block v-bind="activatorProps" class="text-none mb-4" color="indigo" size="large" variant="outlined">
               <template v-slot:default>
-                {{ selectedDate.getFullYear() }}-{{ selectedDate.getMonth() + 1 }}-{{ selectedDate.getDate() }}
-
+                选择比赛日期:{{ selectedDate.toLocaleDateString() }}
               </template>
             </v-btn>
           </template>
 
           <template v-slot:default="{ isActive }">
             <v-card>
-                <v-locale-provider locale="zhHans">
-                  <v-date-picker v-model="selectedDate" header="日期" title="选择比赛日期" color="indigo" width="100%"></v-date-picker>
-                </v-locale-provider>
+              <v-locale-provider locale="zhHans">
+                <v-date-picker v-model="selectedDate" header="日期" title="选择比赛日期" color="indigo"
+                  width="100%"></v-date-picker>
+              </v-locale-provider>
               <v-card-actions>
                 <v-spacer></v-spacer>
                 <v-btn variant="flat" text="确定" color="indigo" @click="isActive.value = false"></v-btn>
@@ -66,11 +65,24 @@
 
   </v-card>
 
+  <v-dialog v-model="dialog" width="auto">
+    <v-card width="300px">
+      <v-card-title>
+        {{ cardtitle }}
+      </v-card-title>
+      <v-card-text>
+        {{ cardtext }}
+      </v-card-text>
+      <template v-slot:actions>
+        <v-btn class="ms-auto" variant="flat" color="indigo" text="确认" @click="dialog = false"></v-btn>
+      </template>
+    </v-card>
+  </v-dialog>
 
   <div>
-    <v-card class="mx-auto my-2" href="../../game_detail.html" width="95%" rel="noopener" target="_blank" title="已提交比赛"
+    <v-card class="mx-auto my-2" href="/lauched_games.html" width="95%" rel="noopener" target="_blank" title="已提交比赛"
       append-icon="mdi-chevron-right"></v-card>
-    <v-card class="mx-auto my-2" href="../../audit.html" width="95%" rel="noopener" target="_blank" title="待审核比赛"
+    <v-card class="mx-auto my-2" href="/audit_games.html" width="95%" rel="noopener" target="_blank" title="待审核比赛"
       append-icon="mdi-chevron-right"></v-card>
   </div>
 
@@ -88,37 +100,66 @@ const score1 = ref(null);
 const score2 = ref(null);
 const loading = ref(false);
 const selectedDate = ref(new Date());
+const arr = ref(new Array());
+const id = ref(null);
+var s1;
+var s2;
+var p1_id;
+var p2_id;
+
+
 
 const rules = reactive({
   email: v => !!(v || '').match(/@/) || 'Please enter a valid email',
   length: len => v => (v || '').length >= len || `Invalid character length, required ${len}`,
-  player1: v => !!v || '姓名不能为空',
-  player2: v => !!v || '姓名不能为空',
-  // password: v => !!(v || '').match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/) ||
-  //   'Password must contain an upper case letter, a numeric character, and a special character',
+
+  player_not_none: v => !!v || '姓名不能为空',
+  player1: v => v != player2.value || '姓名不能相同',
+  player2: v => v != player1.value || '姓名不能相同',
+
   required: v => !!v || 'This field is required',
-  score1: v => !!v || '得分不能为空',
-  score2: v => !!v || '得分不能为空',
+  score_not_none: v => !!v || '得分不能为空',
+  score1: v => v != score2.value || '得分不能相同',
+  score2: v => v != score1.value || '得分不能相同',
 });
 
-function submit() {
-  loading.value = true;
-  axios.get('/api/players', {
-    usrname: usrname.value,
-    psword: password.value
+axios.get('/api/players')
+  .then(function (response) {
+    const data = response.data;
+    for (var i = 0; i < data.Players.length; i++) {
+      arr.value[i] = data.Players[i].player_id.toString() + '-' + data.Players[i].player_real_name;
+    }
+  })
+  .catch(function (error) {
+    console.log(error);
   })
-    .then(function (response) {
 
-    })
-    .catch(function (error) {
-      console.log(error);
-    });
-  axios.post('/api/register', {
-    usrname: usrname.value,
-    psword: password.value
+function submit() {
+  loading.value = true;
+  p1_id = parseInt(player1.value);
+  p2_id = parseInt(player2.value);
+  s1 = parseInt(score1.value);
+  s2 = parseInt(score2.value);
+  if (s1 < s2) {
+    id.value = p1_id;
+  }
+  else {
+    id.value = p2_id;
+  }
+  axios.post('/api/launchGame', {
+    player1_id: p1_id,
+    score1: s1,
+    player2_id: p2_id,
+    score2: s2,
+    confirmer_id: id.value,
+    game_date: selectedDate.value.toLocaleDateString(),
   })
     .then(function (response) {
-
+      const data = response.data;
+      console.log(data)
+      if (data.status == 'SUCCESS') {
+        info('提交成功!', "");
+      }
     })
     .catch(function (error) {
       console.log(error);
@@ -127,6 +168,15 @@ function submit() {
 }
 
 
+const cardtitle = ref(null);
+const cardtext = ref(null);
+const dialog = ref(false);
+function info(title, text) {
+  cardtitle.value = title;
+  cardtext.value = text;
+  dialog.value = true;
+}
+
 </script>
 
 <style>
diff --git a/vuetify-project/src/components/login_comp.vue b/vuetify-project/src/components/login_comp.vue
index 2f070315bf6c3aa0de0c13232d6fd7272a349fd8..669e9e56247c644f8edb88d00a5b953c5bd108c5 100644
--- a/vuetify-project/src/components/login_comp.vue
+++ b/vuetify-project/src/components/login_comp.vue
@@ -12,16 +12,33 @@
     </v-btn>
 
   </v-card-actions>
-  <v-dialog v-model="realname1">
-    <v-card>
-      <v-card-text>如要加入俱乐部,请输入真实姓名:
-        <v-text-field v-model="realname" variant="filled" :rules="[rules.realname]" color="indigo"
-          label="姓名"></v-text-field>
-        <v-btn :disabled="!isValid" :loading="loading" block class="text-none mb-4" color="indigo" size="x-large"
-          variant="flat" @click="submit">
-          提交
-        </v-btn>
+  <v-form v-model="isValid">
+    <v-dialog v-model="realname1">
+      <v-card>
+        <v-card-text>如要加入俱乐部,请输入真实姓名:
+          <v-text-field v-model="realname" variant="filled" :rules="[rules.realname]" color="indigo"
+            label="姓名"></v-text-field>
+          <v-btn :disabled="!isValid" :loading="loading" block class="text-none mb-4" color="indigo" size="x-large"
+            variant="flat" @click="submit">
+            提交
+          </v-btn>
+        </v-card-text>
+      </v-card>
+    </v-dialog>
+  </v-form>
+
+
+  <v-dialog v-model="dialog" width="auto">
+    <v-card width="300px">
+      <v-card-title>
+        {{ cardtitle }}
+      </v-card-title>
+      <v-card-text>
+        {{ cardtext }}
       </v-card-text>
+      <template v-slot:actions>
+        <v-btn class="ms-auto" variant="flat" color="indigo" text="确认" @click="dialog = false"></v-btn>
+      </template>
     </v-card>
   </v-dialog>
 
@@ -88,7 +105,7 @@ function submit() {
     name: realname.value,
   })
     .then(function () {
-      alert('提交完成,请联系管理员审核');
+      info('提交成功!', "请联系管理员审核!");
     })
     .catch(function (error) {
       console.log(error);
@@ -96,4 +113,13 @@ function submit() {
   loading.value = false;
 }
 
+const cardtitle = ref(null);
+const cardtext = ref(null);
+const dialog = ref(false);
+function info(title, text) {
+  cardtitle.value = title;
+  cardtext.value = text;
+  dialog.value = true;
+}
+
 </script>
\ No newline at end of file
diff --git a/vuetify-project/src/components/register_comp.vue b/vuetify-project/src/components/register_comp.vue
index 00f017523aca3f925cacdd73f36104d43a97a166..03b60a3046213dfd7a925a3747119608e7016cb3 100644
--- a/vuetify-project/src/components/register_comp.vue
+++ b/vuetify-project/src/components/register_comp.vue
@@ -12,6 +12,19 @@
       注册
     </v-btn>
   </v-card-actions>
+  <v-dialog v-model="dialog" width="auto">
+    <v-card width="300px">
+      <v-card-title>
+        {{ cardtitle }}
+      </v-card-title>
+      <v-card-text>
+        {{ cardtext }}
+      </v-card-text>
+      <template v-slot:actions>
+        <v-btn class="ms-auto" variant="flat" color="indigo" text="确认" @click="dialog = false"></v-btn>
+      </template>
+    </v-card>
+  </v-dialog>
 </template>
 <script setup>
 import { ref } from 'vue';
@@ -45,11 +58,11 @@ function register(){
   .then(function (response) {
     const data = response.data;
     if(data.status == 'SUCCESS'){
-      alert('注册成功!');
+      info('注册成功!', "");
     }
     else if(data.status == 'FAILED')
     {
-      alert('用户名已存在!');
+      info('用户名已存在!', "");
     }
   })
   .catch(function (error) {
@@ -58,4 +71,13 @@ function register(){
   loading.value =false;
 }
 
+const cardtitle = ref(null);
+const cardtext = ref(null);
+const dialog = ref(false);
+function info(title,text) {
+  cardtitle.value = title;
+  cardtext.value = text;
+  dialog.value=true;
+}
+
 </script>
\ No newline at end of file
diff --git a/vuetify-project/src/components/game_detail.js b/vuetify-project/src/lauched_games.js
similarity index 87%
rename from vuetify-project/src/components/game_detail.js
rename to vuetify-project/src/lauched_games.js
index e155e5aa4d93d9cf2477d8b69e546db628852a8e..35e418aa4b6b28905db40beeca6bd32a75f2ca1f 100644
--- a/vuetify-project/src/components/game_detail.js
+++ b/vuetify-project/src/lauched_games.js
@@ -8,7 +8,7 @@
 import { registerPlugins } from '@/plugins'
 
 // Components
-import App from './game_detail.vue'
+import App from './lauched_games.vue'
 
 // Composables
 import { createApp } from 'vue'
diff --git a/vuetify-project/src/components/game_detail.vue b/vuetify-project/src/lauched_games.vue
similarity index 54%
rename from vuetify-project/src/components/game_detail.vue
rename to vuetify-project/src/lauched_games.vue
index 72bf95d029bbe2cc68e37a769f243db5b30d0828..44149d93c98bc5c095c81d45a8e9062a5597a481 100644
--- a/vuetify-project/src/components/game_detail.vue
+++ b/vuetify-project/src/lauched_games.vue
@@ -11,6 +11,9 @@
                         hide-details></v-text-field>
                 </v-toolbar>
             </template>
+            <template v-slot:item.date="{ item }">
+                {{ item.date }}
+            </template>
             <template v-slot:item.name="{ item }">
                 {{ item.username }} VS {{ item.opponentname }}
             </template>
@@ -18,9 +21,9 @@
                 {{ item.userScore }} - {{ item.opponentScore }}
             </template>
             <template v-slot:item.verified="{ item }">
-                <v-icon v-if="item.verified === 1" color="blue">mdi-help-circle</v-icon>
-                <v-icon v-else-if="item.verified === 2" color="red">mdi-check-circle</v-icon>
-                <v-icon v-else-if="item.verified === 3" color="green">mdi-close-circle</v-icon>
+                <v-icon v-if="item.verified === 'WAITING'" color="blue">mdi-help-circle</v-icon>
+                <v-icon v-else-if="item.verified === 'PASSED'" color="green">mdi-check-circle</v-icon>
+                <v-icon v-else-if="item.verified === 'REJECT'" color="red">mdi-close-circle</v-icon>
                 <!-- <v-icon :color="item.verified != 1 ? (item.verified == 2 ? 'green' : 'red') : 'red'">{{ item.verified ?
             'mdi-check-circle' :
                     'mdi-close-circle' }}</v-icon> -->
@@ -33,19 +36,20 @@
 import { ref } from 'vue';
 import { reactive } from 'vue';
 import { computed } from 'vue';
+import axios from 'axios';
 
 const search = ref('');
 
 const headers = reactive([
-    { title: '比赛', key: 'name', sortable: true },
-    { title: '比分', key: 'score', sortable: true },
+    { title: '日期', key: 'date', sortable: false },
+    { title: '比赛', key: 'name', sortable: false },
+    { title: '比分', key: 'score', sortable: false },
     { title: '审核状态', key: 'verified' },
 ]);
-const matches = ref([
-    { id: 1, username: '张三', opponentname: '零', userScore: 3, opponentScore: 2, verified: 1 },
-    { id: 2, username: '李四', opponentname: '一', userScore: 1, opponentScore: 1, verified: 2 },
-    { id: 3, username: '王五', opponentname: '二', userScore: 2, opponentScore: 4, verified: 3 },
-]);
+const matches = ref(new Array());
+// matches = [
+//     { id: 1, username: '张三', opponentname: '零', userScore: 3, opponentScore: 2, verified: "PASSED" },
+// ];
 
 const filteredMatches = computed(() => {
     // return matches.value
@@ -57,4 +61,24 @@ const filteredMatches = computed(() => {
     );
 })
 
+axios.get('/api/myLauchedGames',)
+    .then(function(response){
+        const data = response.data;
+        for(var i = 0; i < data.Games.length; i++){
+            // matches.value[i].id = i+1;
+            var match = {
+                id:data.Games[i].id,
+                date:data.Games[i].game_date,
+                username:data.Games[i].player1_real_name,
+                opponentname:data.Games[i].player2_real_name,
+                userScore:data.Games[i].score1,
+                opponentScore:data.Games[i].score2,
+                verified:data.Games[i].status,
+            }
+            matches.value[i] = match;
+        }
+    })
+    .catch(function (error) {
+    console.log(error);
+  })
 </script>
\ No newline at end of file
diff --git a/vuetify-project/vite.config.mjs b/vuetify-project/vite.config.mjs
index c928d5181804ac983cee98f865f59ba84f4fcfa9..bdb636adc04654165fa571408b2b3d8da4860f57 100644
--- a/vuetify-project/vite.config.mjs
+++ b/vuetify-project/vite.config.mjs
@@ -55,6 +55,8 @@ export default defineConfig({
         home: resolve(__dirname, 'home.html'),
         space: resolve(__dirname, 'space.html'),
         main: resolve(__dirname, 'main.html'),
+        lauched_games: resolve(__dirname, 'lauched_games.html'),
+        audit_games: resolve(__dirname, 'audit_games.html'),
       }
     },
   },