瀏覽代碼

Merge remote-tracking branch 'origin/master' into front-dev

SyuanYu 2 年之前
父節點
當前提交
f67c9a863b

+ 33 - 0
frontend/src/components/TOS.vue

@@ -0,0 +1,33 @@
+<template>
+  <h3 class="text-h5 text-center font-weight-bold mb-5">
+      使用者的守法義務
+    </h3>
+    您承諾絕不為任何非法目的或以任何非法方式使用本服務,並承諾遵守中華民國相關法規及一切使用網際網路之國際慣例。您若係中華民國以外之使用者,並同意遵守所屬國家或地域之法令。您同意並保證不得利用本服務從事侵害他人權益或違法之行為,包括但不限於:
+    <ul class="mb-3">
+      <li>
+        上載、張貼、公布或傳送任何誹謗、侮辱、具威脅性、攻擊性、不雅、猥褻、不實、違反公共秩序或善良風俗或其他不法之文字、圖片或任何形式的檔案於本服務上
+      </li>
+      <li>
+        侵害他人名譽、隱私權、營業秘密、商標權、著作權、專利權、其他智慧財產權及其他權利
+      </li>
+      <li>違反依法律或契約所應負之保密義務</li>
+      <li>冒用他人名義使用本服務</li>
+    </ul>
+    <v-divider></v-divider>
+    <h3 class="text-h5 text-center font-weight-bold mt-7 mb-5">
+      免責聲明
+    </h3>
+    您明確了解並同意:ChoozMo
+    對本服務不提供任何明示或默示的擔保,包含但不限於權利完整、商業適售性、特定目的之適用性及未侵害他人權利。本服務乃依其「現狀」及「提供使用時」之基礎提供,您使用本服務時,須自行承擔相關風險。ChoozMo
+    不保證以下事項:
+    <ul>
+      <li>本服務將符合您的需求</li>
+      <li>本服務不受干擾、及時提供、安全可靠或無錯誤</li>
+      <li>由本服務之使用而取得之結果為正確或可靠</li>
+    </ul>
+
+    是否經由本服務之使用下載或取得任何資料應由您自行考量且自負風險,並拋棄因前開任何資料之下載而導致您電腦系統、網路存取、下載或播放設備之任何損壞或資料流失,對
+    ChoozMo 提出任何請求或採取法律行動,您應自負完全責任。
+</template>
+<script setup lang="ts">
+</script>

+ 16 - 0
frontend/src/router/index.ts

@@ -7,10 +7,12 @@ const router = createRouter({
   routes: [
     {
       path: "/",
+      name:'/',
       component: () => import(/* webpackChunkName: "start" */ '@/views/main/Start.vue'),
       children:[
         {
           path: 'login',
+          name: 'login',
           // route level code-splitting
           // this generates a separate chunk (about.[hash].js) for this route
           // which is lazy-loaded when the route is visited.
@@ -18,49 +20,60 @@ const router = createRouter({
         },
         {
           path: 'signup',
+          name: 'signup',
           component: () => import(/* webpackChunkName: "login" */ '@/views/Signup.vue'),
         },
         {
           path: 'recover-password',
+          name: 'recover-password',
           component: () => import(/* webpackChunkName: "recover-password" */ '@/views/PasswordRecovery.vue'),
         },
         {
           path: 'reset-password',
+          name: 'reset-password',
           component: () => import(/* webpackChunkName: "reset-password" */ '@/views/ResetPassword.vue'),
         },
         {
           path: 'main',
+          name: 'main',
           component: () => import(/* webpackChunkName: "main" */ '@/views/main/Main.vue'),
           children: [
             {
               path: 'dashboard',
+              name: 'dashboard',
               component: () => import(/* webpackChunkName: "main-dashboard" */ '@/views/main/Dashboard.vue'),
             },
             {
               path: 'make-video',
+              name: 'make-video',
               component: () => import ('@/views/main/Upload.vue'),
             },
             {
               path: 'progress',
+              name: 'progress',
               component: () => import ('@/views/main/Progress.vue'),
             },
             {
               path: 'profile',
+              name: 'profile',
               component: RouterComponent,
               redirect: "/main/profile/view",
               children: [
                 {
                   path: 'view',
+                  name: 'view',
                   component: () => import(
                     /* webpackChunkName: "main-profile" */ '@/views/main/profile/UserProfile.vue'),
                 },
                 {
                   path: 'edit',
+                  name: 'edit',
                   component: () => import(
                     /* webpackChunkName: "main-profile-edit" */ '@/views/main/profile/UserProfileEdit.vue'),
                 },
                 {
                   path: 'password',
+                  name: 'password',
                   component: () => import(
                     /* webpackChunkName: "main-profile-password" */ '@/views/main/profile/UserProfileEditPassword.vue'),
                 },
@@ -68,15 +81,18 @@ const router = createRouter({
             },
             {
               path: 'admin',
+              name: 'admin',
               component: () => import(/* webpackChunkName: "main-admin" */ '@/views/main/admin/Admin.vue'),
               redirect: '/main/admin/users/all',
               children: [
                 {
                   path: 'users',
+                  name: 'users',
                   redirect: '/main/admin/users/all',
                 },
                 {
                   path: 'users/all',
+                  name: 'all-users',
                   component: () => import(
                     /* webpackChunkName: "main-admin-users" */ '@/views/main/admin/AdminUsers.vue'),
                 },

+ 2 - 65
frontend/src/views/Signup.vue

@@ -6,7 +6,7 @@ import { useDisplay } from "vuetify";
 import { storeToRefs } from "pinia";
 import { useI18n } from "vue-i18n";
 import Navbar from "@/components/Navbar.vue";
-
+import  TOS  from "@/components/TOS.vue";
 const mainStore = useMainStore();
 const mainStoreRef = storeToRefs(mainStore);
 
@@ -154,35 +154,7 @@ async function submit() {
                     </v-btn>
                   </v-card-title>
                   <v-card-text>
-                    <h3 class="text-h5 text-center font-weight-bold mb-5">
-                      使用者的守法義務
-                    </h3>
-                    您承諾絕不為任何非法目的或以任何非法方式使用本服務,並承諾遵守中華民國相關法規及一切使用網際網路之國際慣例。您若係中華民國以外之使用者,並同意遵守所屬國家或地域之法令。您同意並保證不得利用本服務從事侵害他人權益或違法之行為,包括但不限於:
-                    <ul class="mb-3">
-                      <li>
-                        上載、張貼、公布或傳送任何誹謗、侮辱、具威脅性、攻擊性、不雅、猥褻、不實、違反公共秩序或善良風俗或其他不法之文字、圖片或任何形式的檔案於本服務上
-                      </li>
-                      <li>
-                        侵害他人名譽、隱私權、營業秘密、商標權、著作權、專利權、其他智慧財產權及其他權利
-                      </li>
-                      <li>違反依法律或契約所應負之保密義務</li>
-                      <li>冒用他人名義使用本服務</li>
-                    </ul>
-                    <v-divider></v-divider>
-                    <h3 class="text-h5 text-center font-weight-bold mt-7 mb-5">
-                      免責聲明
-                    </h3>
-                    您明確了解並同意:ChoozMo
-                    對本服務不提供任何明示或默示的擔保,包含但不限於權利完整、商業適售性、特定目的之適用性及未侵害他人權利。本服務乃依其「現狀」及「提供使用時」之基礎提供,您使用本服務時,須自行承擔相關風險。ChoozMo
-                    不保證以下事項:
-                    <ul>
-                      <li>本服務將符合您的需求</li>
-                      <li>本服務不受干擾、及時提供、安全可靠或無錯誤</li>
-                      <li>由本服務之使用而取得之結果為正確或可靠</li>
-                    </ul>
-
-                    是否經由本服務之使用下載或取得任何資料應由您自行考量且自負風險,並拋棄因前開任何資料之下載而導致您電腦系統、網路存取、下載或播放設備之任何損壞或資料流失,對
-                    ChoozMo 提出任何請求或採取法律行動,您應自負完全責任。
+                    <TOS/>
                   </v-card-text>
                 </v-card>
               </v-dialog>
@@ -192,41 +164,6 @@ async function submit() {
       </v-col>
     </v-row>
   </v-container>
-
-  <!-- <v-container fluid class="d-flex fill-height">
-    <v-row align="center" justify="center">
-      <v-col :cols="width">
-        <v-card class="elevation-12">
-          <v-toolbar dark color="primary">
-            <v-toolbar-title>{{ appName }}</v-toolbar-title>
-            <v-spacer></v-spacer>
-            <v-btn to="/login">LogIn</v-btn>
-          </v-toolbar>
-          <v-card-text>
-            <v-form @keyup.enter="submit">
-              <v-text-field
-                @keyup.enter="submit"
-                v-model="email"
-                prepend-icon="person"
-                name="email"
-                label="Email"
-                type="text"
-              ></v-text-field>
-              <v-text-field
-                @keyup.enter="submit"
-                v-model="password"
-                prepend-icon="key"
-                name="password"
-                label="Password"
-                id="password"
-                type="password"
-              ></v-text-field>
-            </v-form>
-          </v-card-text>
-        </v-card>
-      </v-col>
-    </v-row>
-  </v-container> -->
 </template>
 
 <style lang="scss">

+ 0 - 6
frontend/src/views/main/Progress.vue

@@ -40,12 +40,6 @@ onMounted(async () => {
       </v-toolbar-title>
     </v-toolbar>
     <v-data-table :headers="headers" :items="videos">
-      <!-- <template v-slot:item.is_active="{ item }">
-        <v-icon v-if="item.columns.is_active" icon="check" />
-      </template>
-      <template v-slot:item.is_superuser="{ item }">
-        <v-icon v-if="item.columns.is_superuser" icon="check" />
-      </template> -->
       <template v-slot:item.id="{ item }">
         <v-btn
           flat

+ 1 - 1
frontend/vite.config.ts

@@ -14,7 +14,7 @@ export default defineConfig({
   },
   server: {
     host: "0.0.0.0",
-    port: 8080,
+    port: 5173,
   },
   define: {
     __VUE_I18N_FULL_INSTALL__: true,