From 3e2914339a54efb904e822eaa3dd65e67111eeb2 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 25 六月 2024 15:23:56 +0800
Subject: [PATCH] 会议编辑删除

---
 src/views/train/data-list/index.vue |  107 ++++++++++++---------
 src/views/train/index.vue           |  144 +++++++++++++++++++++++++---
 src/views/meet/index.vue            |    8 +
 3 files changed, 195 insertions(+), 64 deletions(-)

diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue
index feea68f..da6cafb 100644
--- a/src/views/meet/index.vue
+++ b/src/views/meet/index.vue
@@ -8,13 +8,17 @@
   mounted() {
     const width = window.innerWidth;
     const height = window.innerHeight;
-    const domain = 'ycl.easyblog.vip:8443';
+    const domain = this.$route.query.domain;
+    const roomName = this.$route.query.roomName;
+    const userInfoStr = this.$route.query.userInfoStr;
+    const userInfo = userInfoStr ? JSON.parse(userInfoStr) : null;
     const options = {
-      roomName: 'test',
+      roomName: roomName,
       width: width,
       height: height,
       parentNode: this.$refs.meet,
       lang: 'zh_CN',
+      userInfo: userInfo,
       configOverwrite: {
         prejoinConfig: {
           enabled: false
diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue
index a3e3a16..db2b93a 100644
--- a/src/views/train/data-list/index.vue
+++ b/src/views/train/data-list/index.vue
@@ -2,16 +2,16 @@
   <div class="list-container w-full h-full">
     <div class="list-content w-full overflow-x-hidden">
       <el-row :gutter="20">
-        <el-col :span="6" v-for="item in dataList" class="margin-col">
+        <el-col :span="6" v-for="item in tableData" class="margin-col">
           <el-card shadow="hover" class="list-card cursor-pointer" :body-style="{ padding: 0 }">
             <div class="img-container w-full">
               <img src="@/assets/list-card-bg.jpg" class="width-img">
             </div>
             <div class="item-info p-3">
-              <div class="info-title">{{ item.title }}</div>
-              <div class="info-teacher">
+              <div class="info-title">{{ item.meetName }}</div>
+              <div class="info-teacherName">
                 <div class="info-label">涓昏:</div>
-                <div class="info-text">{{ item.teacher }}</div>
+                <div class="info-text">{{ item.teacherName }}</div>
               </div>
               <div class="info-time">
                 <div class="info-label">寮�濮嬫椂闂�:</div>
@@ -22,7 +22,9 @@
                 <div class="info-text">{{ item.endTime }}</div>
               </div>
               <div class="button-container">
-                <el-button @click="start">寮�濮嬩笂璇�</el-button>
+                <el-button @click="start(item)">寮�濮嬩笂璇�</el-button>
+                <el-button @click="handleUpdate(item)">缂栬緫</el-button>
+                <el-button @click="remove(item)">鍒犻櫎</el-button>
               </div>
             </div>
           </el-card>
@@ -33,52 +35,63 @@
 </template>
 
 <script>
+
 export default {
-  data() {
-    return {
-      dataList: [
-        {
-          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'
-        }
-      ]
-    };
+  props: {
+    tableData: [
+      {
+        id: 1,
+        meetName: '鑻辫',
+        startTime: '2024-6-13 8:00',
+        endTime: '2024-6-13 8:00',
+        teacherName: '鍏宠�佸笀'
+      },
+      {
+        id: 2,
+        meetName: '璇枃',
+        startTime: '2024-6-13 8:00',
+        endTime: '2024-6-13 8:00',
+        teacherName: '娴嬭瘯娴嬭瘯'
+      },
+      {
+        id: 3,
+        meetName: '鏁板',
+        startTime: '2024-6-13 8:00',
+        endTime: '2024-6-13 8:00',
+        teacherName: '娴嬭瘯娴嬭瘯'
+      },
+      {
+        id: 4,
+        meetName: '鏈哄満鑸┖',
+        startTime: '2024-6-13 8:00',
+        endTime: '2024-6-13 8:00',
+        teacherName: '娴嬭瘯娴嬭瘯'
+      },
+      {
+        id: 5,
+        startTime: '2024-6-13 8:00',
+        endTime: '2024-6-13 8:00',
+        teacherName: '娴嬭瘯娴嬭瘯',
+      }
+    ]
   },
   methods: {
-    start () {
+    handleUpdate (item) {
+      this.$emit('handleUpdate',item)
+    },
+    remove (item) {
+      this.$emit('remove',item)
+    },
+    start (item) {
       let routeUrl = this.$router.resolve({
         path: "/meet",
+        query: {
+          domain: 'ycl.easyblog.vip:8443/' + item.id,
+          roomName: item.meetName,
+          userInfoStr:  JSON.stringify({
+            displayName: item.teacherName
+          })
+        }
       })
       window.open(routeUrl.href, '_blank')
       // window.open('https://ycl.easyblog.vip:8443/test');
@@ -118,7 +131,7 @@
   font-weight: bold;
 }
 
-.info-teacher {
+.info-teacherName {
   display: flex;
   font-size: 14px;
 }
diff --git a/src/views/train/index.vue b/src/views/train/index.vue
index efdd762..6e982e3 100644
--- a/src/views/train/index.vue
+++ b/src/views/train/index.vue
@@ -16,8 +16,8 @@
                   </el-tabs>
                 </div>
                 <div class="header-search">
-                  <el-input v-model="searchText" placeholder="璇疯緭鍏ヨ绋嬪悕绉�"/>
-                  <el-button type="primary" class="ml-4">鎼滅储</el-button>
+                  <el-input v-model="queryParam.meetName" @input="getList" clearable @clear="getList" placeholder="璇疯緭鍏ヨ绋嬪悕绉�"/>
+                  <el-button type="primary" class="ml-4" @click="getList" >鎼滅储</el-button>
                 </div>
                 <div>
                   <el-button type="primary" @click="handleAdd()">娣诲姞</el-button>
@@ -26,30 +26,37 @@
 
               <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 :tableData="tableData" @handleUpdate="handleUpdate" @remove = "remove"></DataList>
                   <div id="meet" ref="meet"></div>
                 </div>
               </div>
 
-              <div class="card-footer flex justify-center mb-7 shrink-0">
-                <el-pagination background layout="prev, pager, next" :total="1000"/>
-              </div>
+              <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+                          @pagination="getList"/>
             </div>
           </el-card>
 
-          <!-- 娣诲姞棰樼洰瀵硅瘽妗� -->
+          <!-- 娣诲姞浼氳瀵硅瘽妗� -->
           <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
             <el-form label-width="80px" ref="form" :model="form" :rules="rules" >
-              <el-form-item label="鎴块棿鍚�" prop="meetName" >
+              <el-form-item label="鎴块棿鍚嶏細" prop="meetName" >
                 <el-input v-model="form.meetName" placeholder="璇疯緭鍏ユ埧闂村悕" style="width: 300px"></el-input>
               </el-form-item>
-              <el-form-item label="鐝骇" prop="classesId" >
-                <el-select v-model="form.classesId" placeholder="璇烽�夋嫨鐝骇" />
+              <el-form-item label="鐝骇锛�" >
+                <el-select
+                  v-model="form.classesId"
+                  placeholder="鐝骇"
+                  clearable
+                >
+                  <el-option v-for="item in classesIds" :key="item.id" :label="item.className" :value="item.id"/>
+                </el-select>
               </el-form-item>
               <el-form-item label="涓婅鏃堕棿" prop="time" >
                   <el-date-picker
                     v-model="form.time"
                     type="datetimerange"
+                    format="yyyy-MM-dd HH:mm:ss"
+                    value-format="yyyy-MM-dd HH:mm:ss"
                     range-separator="鑷�"
                     start-placeholder="寮�濮嬫棩鏈�"
                     end-placeholder="缁撴潫鏃ユ湡">
@@ -57,7 +64,7 @@
               </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
-              <el-button type="primary" @click="cancel">纭� 瀹�</el-button>
+              <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
               <el-button @click="cancel">鍙� 娑�</el-button>
             </div>
           </el-dialog>
@@ -70,25 +77,130 @@
 
 <script>
 import DataList from './data-list/index.vue'
+import Pagination from '@/components/Pagination'
+import { getMeets,addMeet,editMeet,deleteMeetById } from '@/api/meet'
+import { myClasses } from '@/api/classes'
+
 
 export default {
-  components: { DataList },
+  components: { DataList,Pagination},
   data () {
     return {
+      queryParam: {
+        status: null,
+        meetName: null,
+        pageIndex: 1,
+        pageSize: 10
+      },
+      total: 0,
       open: false,
+      listLoading: true,
       title: '',
       form: {},
+      tableData: [],
+      classesIds: [],
       activeName: '1',
       searchText: '',
+      rules: {
+        meetName: [
+          { required: true, message: '璇疯緭鍏ユ埧闂村悕绉�', trigger: 'blur' }
+        ],
+        classesId: [
+          { required: true, message: '璇烽�夋嫨鐝骇', trigger: 'change' }
+        ],
+        time: [
+          { required: true, message: '璇烽�夋嫨鏃堕棿', trigger: 'change' }
+        ]
+      },
     }
   },
-  created () {},
+  created () {
+    this.getList()
+    this.getClasses()
+  },
   methods: {
     handleClick () {
-
     },
-    cancel() {
+    remove (item) {
+      deleteMeetById(item.id).then(re => {
+        if (re.data.code === 1) {
+          this.open = false
+          this.getList()
+          this.$message.success(re.data.message)
+        } else {
+          this.$message.error(re.data.message)
+        }
+      })
+    },
+    handleUpdate (item) {
+      this.form = {
+        ...item,
+        time: [item.startTime, item.endTime]
+      }
+      this.open = true
+    },
+    // 鑾峰彇鎴块棿
+    getList () {
+      this.listLoading = true
+      getMeets(this.queryParam).then(re => {
+        const data = re.data
+        this.tableData = data.data
+        this.total = data.total
+        this.queryParam.pageIndex = data.pageNum
+        this.listLoading = false
+      })
+    },
+    cancel () {
       this.open = false
+      this.resetForm()
+    },
+    resetForm () {
+      this.form = {
+        id: null,
+        meetName: null,
+        classesId: null,
+        status: null,
+        startTime: null,
+        endTime: null,
+        time: []
+      }
+    },
+    submitForm () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.form.startTime = this.form.time[0]
+          this.form.endTime = this.form.time[1]
+          if (this.form.id) {
+            editMeet(this.form).then(re => {
+              if (re.data.code === 1) {
+                this.open = false
+                this.getList()
+                this.$message.success(re.data.message)
+              } else {
+                this.$message.error(re.data.message)
+              }
+            })
+          } else {
+            addMeet(this.form).then(re => {
+              if (re.data.code === 1) {
+                this.open = false
+                this.getList()
+                this.$message.success(re.data.message)
+              } else {
+                this.$message.error(re.data.message)
+              }
+            })
+          }
+        } else {
+          return false
+        }
+      })
+    },
+    // 鑾峰彇鎴戠殑鐝骇
+    getClasses () {
+      myClasses().then(re => {
+        this.classesIds = re.data.data
+      })
     },
     handleAdd () {
       this.open = true
@@ -108,9 +220,11 @@
   display: flex;
   flex-direction: column;
   align-items: center;
+
   .list-container {
     flex: 1;
     position: relative;
+    width: 100%;
   }
 }
 .card-header {

--
Gitblit v1.8.0