From a02473e11943579fa3ef4c2392624609d1475c0e Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期二, 25 六月 2024 15:23:07 +0800
Subject: [PATCH] feat:对接登录、会议接口

---
 src/api/modules/meet.js             |    6 ++
 src/api/modules/user.js             |    1 
 src/views/login/index.vue           |    6 -
 src/background.js                   |   12 ++-
 src/views/exam-list/index.vue       |    6 +-
 src/views/meet/index.vue            |   14 +++-
 dist-electron/background.js         |   11 ++-
 src/api/index.js                    |    2 
 src/views/train/data-list/index.vue |   50 +++-------------
 src/views/train/index.vue           |   18 +++++
 package.json                        |    2 
 vite.config.js                      |    8 ++
 src/api/modules/exam.js             |    4 +
 13 files changed, 79 insertions(+), 61 deletions(-)

diff --git a/dist-electron/background.js b/dist-electron/background.js
index a903300..fcbd4bf 100644
--- a/dist-electron/background.js
+++ b/dist-electron/background.js
@@ -27,7 +27,8 @@
     if (BrowserWindow.getAllWindows().length === 0)
       createWindow();
   });
-  ipcMain.on("open-new-window", () => {
+  ipcMain.on("open-new-window", (event, meet) => {
+    const { meetName, id } = JSON.parse(meet);
     const childWin = new BrowserWindow({
       width,
       height,
@@ -39,10 +40,14 @@
     });
     childWin.maximize();
     if (process.env.VITE_DEV_SERVER_URL) {
-      childWin.loadURL(process.env.VITE_DEV_SERVER_URL + "#/meet");
+      childWin.loadURL(process.env.VITE_DEV_SERVER_URL + `#/meet?meetName=${meetName}&id=${id}`);
     } else {
       childWin.loadFile(join(__dirname, "../dist/index.html"), {
-        hash: "/meet"
+        hash: "/meet",
+        query: {
+          meetName,
+          id
+        }
       });
     }
   });
diff --git a/package.json b/package.json
index 74e62e3..2af6aae 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.0",
   "main": "./src/background.js",
   "scripts": {
-    "dev": "vite",
+    "dev": "chcp 65001 && vite",
     "build": "vite build",
     "preview": "vite preview",
     "electron:dev": "vite && electron"
diff --git a/src/api/index.js b/src/api/index.js
index 4e76d1a..6f72f12 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -65,7 +65,7 @@
 // response鎷︽埅鍣�
 service.interceptors.response.use(
   (response) => {
-    if (response.status === 200 && response.data.code === 200) return Promise.resolve(response.data);
+    if (response.status === 200 && response.data.code === 1) return Promise.resolve(response.data);
     else return Promise.reject(response.data);
   },
   (error) => {
diff --git a/src/api/modules/exam.js b/src/api/modules/exam.js
index 2d4d7e4..1df7671 100644
--- a/src/api/modules/exam.js
+++ b/src/api/modules/exam.js
@@ -7,4 +7,8 @@
 
 export const getExamInfo = () => {
   return service.get('/api/v1/getExamInfo');
+}
+
+export const getExamListV2 = (postData = {examName: ''}) => {
+  return service.post('/api/student/exam/page',postData);
 }
\ No newline at end of file
diff --git a/src/api/modules/meet.js b/src/api/modules/meet.js
new file mode 100644
index 0000000..0db1540
--- /dev/null
+++ b/src/api/modules/meet.js
@@ -0,0 +1,6 @@
+import service from "@/api";
+
+
+export const getMeetList = (getData = {meetName: '', status: ''}) => {
+  return service.get('/api/student/meet/page', {params: getData});
+};
\ No newline at end of file
diff --git a/src/api/modules/user.js b/src/api/modules/user.js
index 4d8fcb3..decce4b 100644
--- a/src/api/modules/user.js
+++ b/src/api/modules/user.js
@@ -2,5 +2,6 @@
 
 
 export const login = (postData = {}) => {
+  console.log(postData);
   return service.post('/api/user/login', postData);
 }
diff --git a/src/background.js b/src/background.js
index 1cc5e7a..823bb8d 100644
--- a/src/background.js
+++ b/src/background.js
@@ -1,4 +1,3 @@
-// src-electron/main.js
 const { app, BrowserWindow, screen, globalShortcut, ipcMain } = require('electron');
 const { join } = require('path');
 
@@ -38,7 +37,8 @@
     });
 
     // 鐩戝惉鎵撳紑鏂扮獥鍙�
-    ipcMain.on('open-new-window', () => {
+    ipcMain.on('open-new-window', (event, meet) => {
+        const { meetName, id } = JSON.parse(meet);
         const childWin = new BrowserWindow({
             width: width,
             height: height,
@@ -51,10 +51,14 @@
         childWin.maximize();
         // development妯″紡
         if (process.env.VITE_DEV_SERVER_URL) {
-            childWin.loadURL(process.env.VITE_DEV_SERVER_URL + '#/meet');
+            childWin.loadURL(process.env.VITE_DEV_SERVER_URL + '#/meet?' + `meetName=${meetName}&id=${id}`);
         } else {
             childWin.loadFile(join(__dirname, '../dist/index.html'), {
-                hash: '/meet'
+                hash: '/meet',
+                query: {
+                    meetName,
+                    id
+                }
             });
         }
     });
diff --git a/src/views/exam-list/index.vue b/src/views/exam-list/index.vue
index 289ae0f..b7a0e42 100644
--- a/src/views/exam-list/index.vue
+++ b/src/views/exam-list/index.vue
@@ -48,7 +48,7 @@
 
 import { Search } from '@element-plus/icons-vue';
 
-import { getExamList } from '@/api/modules/exam.js';
+import { getExamList,getExamListV2 } from '@/api/modules/exam.js';
 
 
 const activeName = ref('1');
@@ -60,8 +60,8 @@
 
 const getData = () => {
   loading.value = true;
-  getExamList().then(res => {
-    dataList.value = res.data;
+  getExamListV2().then(res => {
+    // dataList.value = res.data;
     loading.value = false;
   }).catch(err => {
     loading.value = false;
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index c11c07c..9b4d3a0 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -107,12 +107,10 @@
 const handleLogin = () => {
   loginFormRef.value.validate((valid) => {
     if (valid) {
-      router.push('/index');
-      return;
       loading.value = true;
-      login({}).then(res => {
-        console.log(res);
+      login(loginForm).then(res => {
         loading.value = false;
+        router.push('/index');
       }).catch(err => {
         console.log(err);
         loading.value = false;
diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue
index cc2941d..bb0bb57 100644
--- a/src/views/meet/index.vue
+++ b/src/views/meet/index.vue
@@ -1,19 +1,25 @@
 <template>
   <div class="meet-container w-screen h-screen">
+    <div>{{ JSON.stringify(route) }}</div>
     <div id="meet" ref="meet"></div>
   </div>
 </template>
 
 <script setup>
 import { ref, onMounted } from 'vue';
+import {useRoute} from 'vue-router';
+const route = useRoute();
 const meet = ref(null);
+
+const {meetName, id} = route.query;
+
 let jitsiApi = null;
 onMounted(() => {
   const width = window.innerWidth;
   const height = window.innerHeight;
-  const domain = 'ycl.easyblog.vip:8443';
+  const domain = 'ycl.easyblog.vip:8443/' + id;
   const options = {
-    roomName: 'test',
+    roomName: meetName,
     width: width,
     height: height,
     parentNode: meet.value,
@@ -26,7 +32,9 @@
         enabled: true
       }
     },
-    toolbarButtons: ['whiteboard']
+    userInfo: {
+      displayName: '娴嬭瘯娴嬭瘯'
+    }
   };
   jitsiApi = new JitsiMeetExternalAPI(domain, options);
   jitsiInit();
diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue
index 5adeca2..4c75fa9 100644
--- a/src/views/train/data-list/index.vue
+++ b/src/views/train/data-list/index.vue
@@ -3,17 +3,17 @@
     <el-scrollbar>
       <div class="list-content w-full overflow-x-hidden">
         <el-row :gutter="20">
-          <el-col :span="6" v-for="item in dataList" class="mb-5">
+          <el-col :span="6" v-for="item in props.dataList" class="mb-5">
             <el-card shadow="hover" class="list-card cursor-pointer" :body-style="{ padding: 0 }"
               @click="itemClick(item)">
               <div class="img-container w-full">
                 <img src="@/assets/image/list-card-bg.jpg" class="w-full">
               </div>
               <div class="item-info p-3">
-                <div class="info-title font-bold">{{ item.title }}</div>
+                <div class="info-title font-bold">{{ item.meetName }}</div>
                 <div class="info-teacher flex text-sm text-gray-500">
                   <div class="info-label">涓昏:</div>
-                  <div class="info-text">{{ item.teacher }}</div>
+                  <div class="info-text">{{ item.teacherName }}</div>
                 </div>
                 <div class="info-time flex text-sm text-gray-500">
                   <div class="info-label">寮�濮嬫椂闂�:</div>
@@ -38,49 +38,17 @@
 import { Timer } from '@element-plus/icons-vue';
 import { useRouter } from 'vue-router';
 const router = useRouter();
-
-const dataList = ref([
-  {
-    title: '娴嬭瘯1',
-    startTime: '2024-6-13 8:00',
-    endTime: '2024-6-13 8:00',
-    teacher: '娴嬭瘯娴嬭瘯',
-    roomName: 'test'
-  },
-  {
-    title: '娴嬭瘯1',
-    startTime: '2024-6-13 8:00',
-    endTime: '2024-6-13 8:00',
-    teacher: '娴嬭瘯娴嬭瘯',
-    roomName: 'test'
-  },
-  {
-    title: '娴嬭瘯1',
-    startTime: '2024-6-13 8:00',
-    endTime: '2024-6-13 8:00',
-    teacher: '娴嬭瘯娴嬭瘯',
-    roomName: 'test'
-  },
-  {
-    title: '娴嬭瘯1',
-    startTime: '2024-6-13 8:00',
-    endTime: '2024-6-13 8:00',
-    teacher: '娴嬭瘯娴嬭瘯',
-    roomName: 'test'
-  },
-  {
-    title: '娴嬭瘯1',
-    startTime: '2024-6-13 8:00',
-    endTime: '2024-6-13 8:00',
-    teacher: '娴嬭瘯娴嬭瘯',
-    roomName: 'test'
+const props = defineProps({
+  dataList: {
+    type: Array,
+    default: () => []
   }
-]);
+});
 
 
 const itemClick = (item) => {
   if (window.electron) {
-    window.electron.openNewWindow();
+    window.electron.openNewWindow(JSON.stringify(item));
   }
 }
 
diff --git a/src/views/train/index.vue b/src/views/train/index.vue
index 0a34f0f..b4465cb 100644
--- a/src/views/train/index.vue
+++ b/src/views/train/index.vue
@@ -24,7 +24,7 @@
 
               <div class="card-main flex-1 my-5 relative">
                 <div class="main-content absolute top-0 bottom-0 left-0 right-0">
-                  <DataList></DataList>
+                  <DataList :dataList="dataList"></DataList>
                 </div>
               </div>
 
@@ -44,8 +44,24 @@
 import NormalHeader from '@/components/NormalHeader/index.vue';
 import DataList from './data-list/index.vue';
 import { Search } from '@element-plus/icons-vue';
+import {getMeetList} from '@/api/modules/meet.js';
 const activeName = ref('1');
 const searchText = ref('');
+const dataList = ref([]);
+
+const loading = ref(false);
+
+const getData = () => {
+  loading.value = true;
+  getMeetList().then(res => {
+    dataList.value = res.data;
+    loading.value = false;
+  }).catch(err => {
+    loading.value = false;
+  });
+};
+
+getData();
 
 const handleClick = (tab, event) => {
 };
diff --git a/vite.config.js b/vite.config.js
index 1386e32..84001a6 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -32,7 +32,15 @@
     server: {
         // 绔彛
         port: 3000,
+        proxy: {
+            '/api': {
+                // target: 'http://192.168.3.88:8000',
+                target: 'http://192.168.3.64:8000',
+                changeOrigin: true,
+            }
+        }
     },
+    
     resolve: {
         alias: {
             '@': resolve(__dirname, './src')

--
Gitblit v1.8.0