From 3a0f25f9d38c08e1b78afedb2f67b7bb73f8c84f Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 01 七月 2026 17:15:45 +0800
Subject: [PATCH] 会议审批列表查不出,会议申请参会人列表查不出问题修改

---
 src/pages/managementMeetings/meetApplication/index.vue |  113 +++++++++++++++++++++++++++++++------
 src/pages/managementMeetings/meetExamine/index.vue     |   53 ++++++++++++-----
 2 files changed, 132 insertions(+), 34 deletions(-)

diff --git a/src/pages/managementMeetings/meetApplication/index.vue b/src/pages/managementMeetings/meetApplication/index.vue
index 22bf041..752753e 100644
--- a/src/pages/managementMeetings/meetApplication/index.vue
+++ b/src/pages/managementMeetings/meetApplication/index.vue
@@ -139,21 +139,30 @@
                      @close="showRoomPicker = false" />
     <u-popup :show="showEquipmentSheet"
              mode="bottom"
-             @close="showEquipmentSheet = false"
-             height="200px">
-      <view class="popup-content">
-        <view class="popup-body">
+             @close="showEquipmentSheet = false">
+      <view class="participant-sheet">
+        <view class="sheet-handle" />
+        <view class="sheet-header">
+          <text class="sheet-title">閫夋嫨鍙備細浜哄憳</text>
+          <text class="sheet-action"
+                @click="showEquipmentSheet = false">瀹屾垚</text>
+        </view>
+        <view class="sheet-body">
           <u-checkbox-group v-model="meetingForm.participants"
                             @change="handleParticipantChange"
                             icon-placement="right"
-                            placement="row">
-            <view style="width:100%;padding:10px;margin-top:20px;">
-              <u-checkbox v-for="option in employees"
-                          :key="option.id"
-                          :name="option.id"
-                          :label="`${option.staffName} (${option.postName})`"
-                          class="checkbox-item"></u-checkbox>
-            </view>
+                            placement="column">
+            <scroll-view scroll-y
+                         class="sheet-scroll"
+                         :show-scrollbar="false">
+              <view v-for="option in employees"
+                    :key="option.id"
+                    class="sheet-item">
+                <u-checkbox :name="option.id"
+                            :label="`${option.staffName}${option.postName ? ` (${option.postName})` : ''}`"
+                            class="checkbox-item" />
+              </view>
+            </scroll-view>
           </u-checkbox-group>
         </view>
       </view>
@@ -195,7 +204,7 @@
     endTime: "",
     participants: [],
     description: "",
-    participantsNames: [],
+    participantsNames: "",
     applicationType: "department",
   });
   // 鐢宠绫诲瀷閫夐」
@@ -257,7 +266,7 @@
     meetingForm.startTime = "";
     meetingForm.endTime = "";
     meetingForm.participants = [];
-    meetingForm.participantsNames = [];
+    meetingForm.participantsNames = "";
     meetingForm.description = "";
     meetingForm.applicationType = "department";
   };
@@ -267,7 +276,8 @@
     meetingForm.participants = val;
     meetingForm.participantsNames = employees.value
       .filter(employee => val.includes(employee.id))
-      .map(employee => employee.staffName);
+      .map(employee => employee.staffName)
+      .join("銆�");
   };
   // 鎻愪氦琛ㄥ崟
   const handleSubmit = async () => {
@@ -414,8 +424,9 @@
     getMeetingRooms();
     staffOnJobListPage().then(res => {
       console.log(res.data.records, "res.data.records");
-      employees.value = res.data.records.sort((a, b) =>
-        a.postName.localeCompare(b.postName)
+      const records = res?.data?.records || [];
+      employees.value = records.sort((a, b) =>
+        String(a?.postName || "").localeCompare(String(b?.postName || ""))
       );
       console.log(employees.value, "employees.value");
     });
@@ -496,4 +507,70 @@
   .application-type-item.active .application-type-desc {
     color: #0078a3;
   }
-</style>
\ No newline at end of file
+
+  .participant-sheet {
+    display: flex;
+    flex-direction: column;
+    max-height: 60vh;
+    background: #fff;
+    padding-bottom: env(safe-area-inset-bottom);
+    overflow: hidden;
+  }
+
+  .sheet-handle {
+    width: 44px;
+    height: 4px;
+    border-radius: 999px;
+    background: #e5e6eb;
+    margin: 10px auto 6px;
+  }
+
+  .sheet-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 10px 14px;
+    border-bottom: 1px solid #f2f3f5;
+  }
+
+  .sheet-title {
+    font-size: 16px;
+    font-weight: 600;
+    color: #1d2129;
+  }
+
+  .sheet-action {
+    font-size: 14px;
+    color: #0078a3;
+    padding: 6px 8px;
+  }
+
+  .sheet-body {
+    flex: 1;
+    min-height: 0;
+  }
+
+  .sheet-scroll {
+    max-height: 48vh;
+    padding: 12px 12px 16px;
+    box-sizing: border-box;
+  }
+
+  .sheet-item {
+    background: #f7f8fa;
+    border: 1px solid #eef0f2;
+    border-radius: 12px;
+    padding: 12px 12px;
+    margin-bottom: 10px;
+  }
+
+  :deep(.sheet-item .u-checkbox) {
+    width: 100%;
+  }
+
+  :deep(.sheet-item .u-checkbox__label) {
+    color: #1d2129;
+    font-size: 14px;
+    line-height: 20px;
+  }
+</style>
diff --git a/src/pages/managementMeetings/meetExamine/index.vue b/src/pages/managementMeetings/meetExamine/index.vue
index 0b39095..1f74eab 100644
--- a/src/pages/managementMeetings/meetExamine/index.vue
+++ b/src/pages/managementMeetings/meetExamine/index.vue
@@ -159,25 +159,46 @@
       ...searchForm.value,
     })
       .then(res => {
-        console.log(res.data.records, "res.data.records");
-        ledgerList.value = res.data.records.map(it => {
-          console.log(it, "it1");
-          let room = roomEnum.value.find(room => it.roomId === room.id);
-          it.location = `${room.name}(${room.location})`;
-          let staffs = JSON.parse(it.participants);
-          it.staffCount = staffs.size;
+        const records = res?.data?.records || [];
+        console.log(records, "res.data.records");
+
+        const parseStaffIds = value => {
+          if (!value) return [];
+          if (Array.isArray(value)) return value;
+          if (typeof value === "string") {
+            try {
+              const parsed = JSON.parse(value);
+              return Array.isArray(parsed) ? parsed : [];
+            } catch (e) {
+              return [];
+            }
+          }
+          return [];
+        };
+
+        ledgerList.value = records.map(raw => {
+          const it = { ...raw };
+
+          const room = roomEnum.value.find(
+            r => String(r?.id) === String(it.roomId)
+          );
+          it.location = room ? `${room.name}(${room.location})` : "";
+
+          const staffIds = parseStaffIds(it.participants);
+          it.staffCount = staffIds.length;
+
           it.meetingTime = `${it.meetingDate} ${dayjs(it.startTime).format(
             "HH:mm:ss"
           )} ~ ${dayjs(it.endTime).format("HH:mm:ss")}`;
+
           it.participants = staffList.value
-            .filter(staff => staffs.some(id => id == staff.id))
-            .map(staff => {
-              return {
-                id: staff.id,
-                name: `${staff.staffName}(${staff.postName})`,
-              };
-            });
-          console.log(it, "it2");
+            .filter(staff => staffIds.some(id => String(id) === String(staff.id)))
+            .map(staff => ({
+              id: staff.id,
+              name: `${staff.staffName}${
+                staff.postName ? `(${staff.postName})` : ""
+              }`,
+            }));
 
           return it;
         });
@@ -349,4 +370,4 @@
     line-height: 28px;
     padding: 0 12px;
   }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3