From bc278f02a34cdce5be02e42b26fe9e1bc6a0d6e6 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 18 九月 2025 13:39:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/collaborativeApproval/meetingBoard/index.vue |  228 +++++++++-----------------------------------------------
 1 files changed, 38 insertions(+), 190 deletions(-)

diff --git a/src/views/collaborativeApproval/meetingBoard/index.vue b/src/views/collaborativeApproval/meetingBoard/index.vue
index 1f46110..dfbb922 100644
--- a/src/views/collaborativeApproval/meetingBoard/index.vue
+++ b/src/views/collaborativeApproval/meetingBoard/index.vue
@@ -16,7 +16,7 @@
       </el-card>
       <el-card class="stat-card">
         <div class="stat-content">
-          <div class="stat-number">{{ stats.ongoing }}</div>
+          <div class="stat-number">{{ stats.underWay }}</div>
           <div class="stat-label">杩涜涓�</div>
         </div>
       </el-card>
@@ -28,7 +28,7 @@
       </el-card>
       <el-card class="stat-card">
         <div class="stat-content">
-          <div class="stat-number">{{ stats.upcoming }}</div>
+          <div class="stat-number">{{ stats.toStart }}</div>
           <div class="stat-label">鍗冲皢寮�濮�</div>
         </div>
       </el-card>
@@ -45,11 +45,11 @@
             </el-tag>
           </div>
           <div class="meeting-time">
-            <el-icon><Clock /></el-icon>
-            {{ formatTime(meeting.startTime) }} - {{ formatTime(meeting.endTime) }}
+             {{dayjs(meeting.startTime).format("YYYY-MM-DD")}}<el-icon><Clock /></el-icon>
+           {{ formatTime(meeting.startTime) }} - {{ formatTime(meeting.endTime) }}
           </div>
         </div>
-        
+
         <div class="meeting-info">
           <div class="info-item">
             <el-icon><Location /></el-icon>
@@ -66,79 +66,18 @@
         </div>
 
         <div class="meeting-agenda">
-          <h4>璁▼瀹夋帓</h4>
+          <h4>浼氳绾</h4>
           <div class="agenda-list">
-            <div 
-              v-for="(agenda, index) in meeting.agenda" 
-              :key="index"
-              class="agenda-item"
-              :class="{ 'active': agenda.status === 'active', 'completed': agenda.status === 'completed' }"
-            >
-              <span class="agenda-time">{{ agenda.time }}</span>
-              <span class="agenda-content">{{ agenda.content }}</span>
-              <el-tag 
-                :type="getAgendaStatusType(agenda.status)" 
-                size="small"
-              >
-                {{ getAgendaStatusText(agenda.status) }}
-              </el-tag>
+            <div class="editor-container">
+              <div
+                  v-html="meeting.content"
+              />
             </div>
           </div>
         </div>
-
-<!--        <div class="meeting-actions">-->
-<!--          <el-button type="primary" size="small" @click="joinMeeting(meeting)">-->
-<!--            鍔犲叆浼氳-->
-<!--          </el-button>-->
-<!--          <el-button type="info" size="small" @click="viewDetails(meeting)">-->
-<!--            鏌ョ湅璇︽儏-->
-<!--          </el-button>-->
-<!--          <el-button type="warning" size="small" @click="editMeeting(meeting)">-->
-<!--            缂栬緫-->
-<!--          </el-button>-->
-<!--        </div>-->
       </el-card>
     </div>
 
-    <!-- 鍒涘缓浼氳瀵硅瘽妗� -->
-    <el-dialog v-model="dialogVisible" title="鍒涘缓浼氳" width="600px">
-      <el-form :model="meetingForm" label-width="100px">
-        <el-form-item label="浼氳鏍囬">
-          <el-input v-model="meetingForm.title" placeholder="璇疯緭鍏ヤ細璁爣棰�" />
-        </el-form-item>
-        <el-form-item label="浼氳鏃堕棿">
-          <el-date-picker
-            v-model="meetingForm.timeRange"
-            type="datetimerange"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            format="YYYY-MM-DD HH:mm"
-            value-format="YYYY-MM-DD HH:mm:ss"
-          />
-        </el-form-item>
-        <el-form-item label="浼氳鍦扮偣">
-          <el-input v-model="meetingForm.location" placeholder="璇疯緭鍏ヤ細璁湴鐐�" />
-        </el-form-item>
-        <el-form-item label="涓绘寔浜�">
-          <el-input v-model="meetingForm.host" placeholder="璇疯緭鍏ヤ富鎸佷汉濮撳悕" />
-        </el-form-item>
-        <el-form-item label="浼氳鎻忚堪">
-          <el-input
-            v-model="meetingForm.description"
-            type="textarea"
-            :rows="3"
-            placeholder="璇疯緭鍏ヤ細璁弿杩�"
-          />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
-          <el-button type="primary" @click="submitMeeting">纭畾</el-button>
-        </span>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
@@ -146,63 +85,21 @@
 import { ref, reactive, onMounted } from 'vue'
 import { ElMessage } from 'element-plus'
 import { Clock, Location, User, UserFilled } from '@element-plus/icons-vue'
+import Editor from "@/components/Editor/index.vue";
+import {getMeetSummaryItems,getMeetSummary} from '@/api/collaborativeApproval/meeting.js'
+import dayjs from "dayjs";
 
 // 缁熻鏁版嵁
-const stats = reactive({
-  total: 12,
-  ongoing: 3,
-  completed: 7,
-  upcoming: 2
+const stats = ref({
+  total: 0,
+  underWay: 0,
+  completed: 0,
+  toStart: 0
 })
 
 // 浼氳鏁版嵁
 const meetings = ref([
-  {
-    id: 1,
-    title: '浜у搧寮�鍙戝懆浼�',
-    status: 'ongoing',
-    startTime: '2024-01-15 09:00:00',
-    endTime: '2024-01-15 10:30:00',
-    location: '浼氳瀹',
-    host: '闄堝織寮�',
-    participants: ['闄堝織寮�', '鍒橀泤濠�', '鐜嬪缓鍥�', '璧典附鍗�'],
-    agenda: [
-      { time: '09:00-09:15', content: '涓婂懆宸ヤ綔鎬荤粨', status: 'completed' },
-      { time: '09:15-09:45', content: '鏈懆寮�鍙戣鍒�', status: 'active' },
-      { time: '09:45-10:00', content: '鎶�鏈毦鐐硅璁�', status: 'pending' },
-      { time: '10:00-10:30', content: '闂鍙嶉涓庤В鍐�', status: 'pending' }
-    ]
-  },
-  {
-    id: 2,
-    title: '瀹㈡埛闇�姹傝瘎瀹′細',
-    status: 'upcoming',
-    startTime: '2024-01-15 14:00:00',
-    endTime: '2024-01-15 15:00:00',
-    location: '绾夸笂浼氳',
-    host: '闄堝織寮�',
-    participants: ['闄堝織寮�', '鍒橀泤濠�', '瀛欐槑鍗�', '瀹㈡埛浠h〃'],
-    agenda: [
-      { time: '14:00-14:20', content: '闇�姹傝儗鏅粙缁�', status: 'pending' },
-      { time: '14:20-14:40', content: '鍔熻兘闇�姹傚垎鏋�', status: 'pending' },
-      { time: '14:40-15:00', content: '鎶�鏈彲琛屾�ц瘎浼�', status: 'pending' }
-    ]
-  },
-  {
-    id: 3,
-    title: '鍥㈤槦寤鸿娲诲姩',
-    status: 'completed',
-    startTime: '2024-01-14 16:00:00',
-    endTime: '2024-01-14 18:00:00',
-    location: '鍏徃澶у巺',
-    host: '浜轰簨閮�',
-    participants: ['鍏ㄤ綋鍛樺伐'],
-    agenda: [
-      { time: '16:00-16:30', content: '鍥㈤槦娓告垙', status: 'completed' },
-      { time: '16:30-17:00', content: '缁忛獙鍒嗕韩', status: 'completed' },
-      { time: '17:00-18:00', content: '鑷敱浜ゆ祦', status: 'completed' }
-    ]
-  }
+
 ])
 
 // 瀵硅瘽妗嗙浉鍏�
@@ -218,9 +115,9 @@
 // 鑾峰彇鐘舵�佺被鍨�
 const getStatusType = (status) => {
   const statusMap = {
-    'ongoing': 'success',
-    'upcoming': 'warning',
-    'completed': 'info'
+    '2': 'success',
+    '1': 'warning',
+    '0': 'info'
   }
   return statusMap[status] || 'info'
 }
@@ -228,9 +125,9 @@
 // 鑾峰彇鐘舵�佹枃鏈�
 const getStatusText = (status) => {
   const statusMap = {
-    'ongoing': '杩涜涓�',
-    'upcoming': '鍗冲皢寮�濮�',
-    'completed': '宸插畬鎴�'
+    '2': '杩涜涓�',
+    '1': '鍗冲皢寮�濮�',
+    '0': '宸插畬鎴�'
   }
   return statusMap[status] || '鏈煡'
 }
@@ -261,65 +158,16 @@
   return date.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' })
 }
 
-// 鍒涘缓浼氳
-const createMeeting = () => {
-  dialogVisible.value = true
-  // 閲嶇疆琛ㄥ崟
-  Object.assign(meetingForm, {
-    title: '',
-    timeRange: [],
-    location: '',
-    host: '',
-    description: ''
+
+onMounted( async () => {
+  let [resp1,resp2] = await Promise.all([getMeetSummary(),getMeetSummaryItems()])
+  stats.value = resp1.data
+  meetings.value = resp2.data.map(item => {
+    return {
+      ...item,
+      participants: JSON.parse(item.participants)
+    }
   })
-}
-
-// 鎻愪氦浼氳
-const submitMeeting = () => {
-  if (!meetingForm.title || !meetingForm.timeRange.length || !meetingForm.location || !meetingForm.host) {
-    ElMessage.warning('璇峰~鍐欏畬鏁寸殑浼氳淇℃伅')
-    return
-  }
-  
-  // 鍒涘缓鏂颁細璁�
-  const newMeeting = {
-    id: Date.now(),
-    title: meetingForm.title,
-    status: 'upcoming',
-    startTime: meetingForm.timeRange[0],
-    endTime: meetingForm.timeRange[1],
-    location: meetingForm.location,
-    host: meetingForm.host,
-    participants: [meetingForm.host],
-    agenda: [
-      { time: '寰呭畾', content: '璁▼寰呭畾', status: 'pending' }
-    ]
-  }
-  
-  meetings.value.unshift(newMeeting)
-  stats.total++
-  stats.upcoming++
-  
-  ElMessage.success('浼氳鍒涘缓鎴愬姛')
-  dialogVisible.value = false
-}
-
-// 鍔犲叆浼氳
-const joinMeeting = (meeting) => {
-  ElMessage.success(`宸插姞鍏ヤ細璁細${meeting.title}`)
-}
-
-// 鏌ョ湅璇︽儏
-const viewDetails = (meeting) => {
-  ElMessage.info(`鏌ョ湅浼氳璇︽儏锛�${meeting.title}`)
-}
-
-// 缂栬緫浼氳
-const editMeeting = (meeting) => {
-  ElMessage.info(`缂栬緫浼氳锛�${meeting.title}`)
-}
-
-onMounted(() => {
   console.log('浼氳鐪嬫澘椤甸潰鍔犺浇瀹屾垚')
 })
 </script>
@@ -480,19 +328,19 @@
   .stats-cards {
     grid-template-columns: repeat(2, 1fr);
   }
-  
+
   .meeting-header {
     flex-direction: column;
     gap: 10px;
   }
-  
+
   .meeting-info {
     flex-direction: column;
     gap: 10px;
   }
-  
+
   .meeting-actions {
     flex-direction: column;
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3