From 5319d5b95497b5b546947ac340c14c71e5b54ca6 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期三, 10 十二月 2025 09:57:58 +0800
Subject: [PATCH] 测试完成

---
 src/views/system/group/index.vue | 1473 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 1,196 insertions(+), 277 deletions(-)

diff --git a/src/views/system/group/index.vue b/src/views/system/group/index.vue
index af86dae..2d39039 100644
--- a/src/views/system/group/index.vue
+++ b/src/views/system/group/index.vue
@@ -5,7 +5,14 @@
       <el-tab-pane label="鍥㈤槦绠$悊" name="team">
         <el-row :gutter="20">
           <el-col :span="24" :xs="24">
-            <el-form :model="teamQueryParams" ref="teamQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form
+              :model="teamQueryParams"
+              ref="teamQueryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="68px"
+            >
               <el-form-item label="鍥㈤槦鍚嶇О" prop="name">
                 <el-input
                   v-model="teamQueryParams.name"
@@ -16,7 +23,12 @@
                 />
               </el-form-item>
               <el-form-item label="鍥㈤槦鐘舵��" prop="status">
-                <el-select v-model="teamQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+                <el-select
+                  v-model="teamQueryParams.status"
+                  placeholder="璇烽�夋嫨鐘舵��"
+                  clearable
+                  style="width: 200px"
+                >
                   <el-option
                     v-for="item in teamStatusOptions"
                     :key="item.value"
@@ -26,8 +38,19 @@
                 </el-select>
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="medium" @click="handleTeamQuery">鎼滅储</el-button>
-                <el-button icon="el-icon-refresh" size="medium" @click="resetTeamQuery">閲嶇疆</el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleTeamQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetTeamQuery"
+                  >閲嶇疆</el-button
+                >
               </el-form-item>
             </el-form>
 
@@ -39,56 +62,104 @@
                   icon="el-icon-plus"
                   size="medium"
                   @click="handleTeamAdd"
-                >鏂板鍥㈤槦</el-button>
+                  >鏂板鍥㈤槦</el-button
+                >
               </el-col>
             </el-row>
 
-            <el-table v-loading="teamLoading" :data="filteredTeamList" @selection-change="handleTeamSelectionChange">
+            <el-table
+              v-loading="teamLoading"
+              :data="filteredTeamList"
+              @selection-change="handleTeamSelectionChange"
+            >
               <el-table-column type="selection" width="50" align="center" />
-              <el-table-column label="鍥㈤槦ID" align="center" prop="id" width="80" />
-              <el-table-column label="鍥㈤槦鍚嶇О" align="center" prop="name" :show-overflow-tooltip="true" />
-              <el-table-column label="鍥㈤槦缁勯暱" align="center" prop="leader" width="120" />
-              <el-table-column label="鍥㈤槦鎴愬憳" align="center" prop="memberCount" width="100">
-  <template slot-scope="scope">
-    <el-tag>{{ (scope.row.members || []).length }}浜�</el-tag>
-  </template>
-</el-table-column>
-              <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160">
+              <el-table-column
+                label="鍥㈤槦ID"
+                align="center"
+                prop="id"
+                width="80"
+              />
+              <el-table-column
+                label="鍥㈤槦鍚嶇О"
+                align="center"
+                prop="name"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="鍥㈤槦缁勯暱"
+                align="center"
+                prop="leader"
+                width="120"
+              />
+              <el-table-column
+                label="鍥㈤槦鎴愬憳"
+                align="center"
+                prop="memberCount"
+                width="100"
+              >
                 <template slot-scope="scope">
-                  <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+                  <el-tag>{{ (scope.row.members || []).length }}浜�</el-tag>
                 </template>
               </el-table-column>
-              <el-table-column label="鍥㈤槦鐘舵��" align="center" prop="status" width="100">
+              <el-table-column
+                label="鍒涘缓鏃堕棿"
+                align="center"
+                prop="createTime"
+                width="160"
+              >
                 <template slot-scope="scope">
-                  <dict-tag :options="teamStatusOptions" :value="scope.row.status"/>
+                  <span>{{
+                    parseTime(scope.row.createTime, "{y}-{m}-{d}")
+                  }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+              <el-table-column
+                label="鍥㈤槦鐘舵��"
+                align="center"
+                prop="status"
+                width="100"
+              >
+                <template slot-scope="scope">
+                  <dict-tag
+                    :options="teamStatusOptions"
+                    :value="scope.row.status"
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                class-name="small-padding fixed-width"
+                width="180"
+              >
                 <template slot-scope="scope">
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-view"
                     @click="handleTeamDetail(scope.row)"
-                  >璇︽儏</el-button>
+                    >璇︽儏</el-button
+                  >
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-edit"
                     @click="handleTeamUpdate(scope.row)"
-                  >缂栬緫</el-button>
+                    >缂栬緫</el-button
+                  >
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-delete"
                     @click="handleTeamDelete(scope.row)"
-                  >鍒犻櫎</el-button>
+                    >鍒犻櫎</el-button
+                  >
                 </template>
               </el-table-column>
             </el-table>
 
             <pagination
-              v-show="teamTotal>0"
+              v-show="teamTotal > 0"
               :total="teamTotal"
               :page.sync="teamQueryParams.pageNum"
               :limit.sync="teamQueryParams.pageSize"
@@ -102,7 +173,14 @@
       <el-tab-pane label="浜哄憳鍒嗙粍" name="member">
         <el-row :gutter="20">
           <el-col :span="24" :xs="24">
-            <el-form :model="memberQueryParams" ref="memberQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form
+              :model="memberQueryParams"
+              ref="memberQueryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="68px"
+            >
               <el-form-item label="鎴愬憳濮撳悕" prop="name">
                 <el-input
                   v-model="memberQueryParams.name"
@@ -113,7 +191,12 @@
                 />
               </el-form-item>
               <el-form-item label="鎵�灞炲洟闃�" prop="teamId">
-                <el-select v-model="memberQueryParams.teamId" placeholder="璇烽�夋嫨鍥㈤槦" clearable style="width: 200px">
+                <el-select
+                  v-model="memberQueryParams.teamId"
+                  placeholder="璇烽�夋嫨鍥㈤槦"
+                  clearable
+                  style="width: 200px"
+                >
                   <el-option
                     v-for="item in teamList"
                     :key="item.id"
@@ -123,7 +206,12 @@
                 </el-select>
               </el-form-item>
               <el-form-item label="鎴愬憳鐘舵��" prop="status">
-                <el-select v-model="memberQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+                <el-select
+                  v-model="memberQueryParams.status"
+                  placeholder="璇烽�夋嫨鐘舵��"
+                  clearable
+                  style="width: 200px"
+                >
                   <el-option
                     v-for="item in memberStatusOptions"
                     :key="item.value"
@@ -133,8 +221,19 @@
                 </el-select>
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="medium" @click="handleMemberQuery">鎼滅储</el-button>
-                <el-button icon="el-icon-refresh" size="medium" @click="resetMemberQuery">閲嶇疆</el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleMemberQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetMemberQuery"
+                  >閲嶇疆</el-button
+                >
               </el-form-item>
             </el-form>
 
@@ -146,7 +245,8 @@
                   icon="el-icon-plus"
                   size="medium"
                   @click="handleMemberAdd"
-                >鏂板鎴愬憳</el-button>
+                  >鏂板鎴愬憳</el-button
+                >
               </el-col>
               <el-col :span="1.5">
                 <el-button
@@ -156,50 +256,105 @@
                   size="medium"
                   :disabled="multiple"
                   @click="handleMemberDelete"
-                >鍒犻櫎</el-button>
+                  >鍒犻櫎</el-button
+                >
               </el-col>
             </el-row>
 
-            <el-table v-loading="memberLoading" :data="filteredMemberList" @selection-change="handleMemberSelectionChange">
+            <el-table
+              v-loading="memberLoading"
+              :data="filteredMemberList"
+              @selection-change="handleMemberSelectionChange"
+            >
               <el-table-column type="selection" width="50" align="center" />
-              <el-table-column label="鎴愬憳ID" align="center" prop="id" width="80" />
-              <el-table-column label="鎴愬憳濮撳悕" align="center" prop="name" :show-overflow-tooltip="true" />
-              <el-table-column label="鎵�灞炲洟闃�" align="center" prop="teamName" width="150" />
-              <el-table-column label="鑱屼綅" align="center" prop="position" width="120" />
-              <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="phone" width="150" />
-              <el-table-column label="閭" align="center" prop="email" width="200" />
-              <el-table-column label="褰撳墠宸ュ崟" align="center" prop="currentWorkOrder" width="120">
+              <el-table-column
+                label="鎴愬憳ID"
+                align="center"
+                prop="id"
+                width="80"
+              />
+              <el-table-column
+                label="鎴愬憳濮撳悕"
+                align="center"
+                prop="name"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="鎵�灞炲洟闃�"
+                align="center"
+                prop="teamName"
+                width="150"
+              />
+              <el-table-column
+                label="鑱屼綅"
+                align="center"
+                prop="position"
+                width="120"
+              />
+              <el-table-column
+                label="鑱旂郴鐢佃瘽"
+                align="center"
+                prop="phone"
+                width="150"
+              />
+              <el-table-column
+                label="閭"
+                align="center"
+                prop="email"
+                width="200"
+              />
+              <el-table-column
+                label="褰撳墠宸ュ崟"
+                align="center"
+                prop="currentWorkOrder"
+                width="120"
+              >
                 <template slot-scope="scope">
                   <el-tag :type="scope.row.currentWorkOrder ? '' : 'info'">
-                    {{ scope.row.currentWorkOrder || '绌洪棽' }}
+                    {{ scope.row.currentWorkOrder || "绌洪棽" }}
                   </el-tag>
                 </template>
               </el-table-column>
-              <el-table-column label="鎴愬憳鐘舵��" align="center" prop="status" width="100">
+              <el-table-column
+                label="鎴愬憳鐘舵��"
+                align="center"
+                prop="status"
+                width="100"
+              >
                 <template slot-scope="scope">
-                  <dict-tag :options="memberStatusOptions" :value="scope.row.status"/>
+                  <dict-tag
+                    :options="memberStatusOptions"
+                    :value="scope.row.status"
+                  />
                 </template>
               </el-table-column>
-              <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+              <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                class-name="small-padding fixed-width"
+                width="180"
+              >
                 <template slot-scope="scope">
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-edit"
                     @click="handleMemberUpdate(scope.row)"
-                  >缂栬緫</el-button>
+                    >缂栬緫</el-button
+                  >
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-delete"
                     @click="handleMemberDelete(scope.row)"
-                  >鍒犻櫎</el-button>
+                    >鍒犻櫎</el-button
+                  >
                 </template>
               </el-table-column>
             </el-table>
 
             <pagination
-              v-show="memberTotal>0"
+              v-show="memberTotal > 0"
               :total="memberTotal"
               :page.sync="memberQueryParams.pageNum"
               :limit.sync="memberQueryParams.pageSize"
@@ -213,7 +368,14 @@
       <el-tab-pane label="宸ュ崟鎸囨淳" name="workOrder">
         <el-row :gutter="20">
           <el-col :span="24" :xs="24">
-            <el-form :model="workOrderQueryParams" ref="workOrderQueryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form
+              :model="workOrderQueryParams"
+              ref="workOrderQueryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="68px"
+            >
               <el-form-item label="宸ュ崟缂栧彿" prop="id">
                 <el-input
                   v-model="workOrderQueryParams.id"
@@ -224,7 +386,12 @@
                 />
               </el-form-item>
               <el-form-item label="宸ュ崟鐘舵��" prop="status">
-                <el-select v-model="workOrderQueryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+                <el-select
+                  v-model="workOrderQueryParams.status"
+                  placeholder="璇烽�夋嫨鐘舵��"
+                  clearable
+                  style="width: 200px"
+                >
                   <el-option
                     v-for="item in workOrderStatusOptions"
                     :key="item.value"
@@ -234,7 +401,12 @@
                 </el-select>
               </el-form-item>
               <el-form-item label="澶勭悊浜�" prop="assignee">
-                <el-select v-model="workOrderQueryParams.assignee" placeholder="璇烽�夋嫨澶勭悊浜�" clearable style="width: 200px">
+                <el-select
+                  v-model="workOrderQueryParams.assignee"
+                  placeholder="璇烽�夋嫨澶勭悊浜�"
+                  clearable
+                  style="width: 200px"
+                >
                   <el-option
                     v-for="item in memberList"
                     :key="item.id"
@@ -244,8 +416,19 @@
                 </el-select>
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" icon="el-icon-search" size="medium" @click="handleWorkOrderQuery">鎼滅储</el-button>
-                <el-button icon="el-icon-refresh" size="medium" @click="resetWorkOrderQuery">閲嶇疆</el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleWorkOrderQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetWorkOrderQuery"
+                  >閲嶇疆</el-button
+                >
               </el-form-item>
             </el-form>
 
@@ -257,64 +440,133 @@
                   icon="el-icon-plus"
                   size="medium"
                   @click="handleWorkOrderAdd"
-                >鏂板缓宸ュ崟</el-button>
+                  >鏂板缓宸ュ崟</el-button
+                >
               </el-col>
             </el-row>
 
-            <el-table v-loading="workOrderLoading" :data="filteredWorkOrderList" @selection-change="handleWorkOrderSelectionChange">
+            <el-table
+              v-loading="workOrderLoading"
+              :data="filteredWorkOrderList"
+              @selection-change="handleWorkOrderSelectionChange"
+            >
               <el-table-column type="selection" width="50" align="center" />
-              <el-table-column label="宸ュ崟缂栧彿" align="center" prop="id" width="120" />
-              <el-table-column label="宸ュ崟鏍囬" align="center" prop="title" :show-overflow-tooltip="true" />
-              <el-table-column label="浼樺厛绾�" align="center" prop="priority" width="100">
+              <el-table-column
+                label="宸ュ崟缂栧彿"
+                align="center"
+                prop="id"
+                width="120"
+              />
+              <el-table-column
+                label="宸ュ崟鏍囬"
+                align="center"
+                prop="title"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="浼樺厛绾�"
+                align="center"
+                prop="priority"
+                width="100"
+              >
                 <template slot-scope="scope">
-                  <el-tag :type="scope.row.priority === '1' ? 'danger' : scope.row.priority === '2' ? 'warning' : ''">
-                    {{ scope.row.priority === '1' ? '楂�' : scope.row.priority === '2' ? '涓�' : '浣�' }}
+                  <el-tag
+                    :type="
+                      scope.row.priority === '1'
+                        ? 'danger'
+                        : scope.row.priority === '2'
+                        ? 'warning'
+                        : ''
+                    "
+                  >
+                    {{
+                      scope.row.priority === "1"
+                        ? "楂�"
+                        : scope.row.priority === "2"
+                        ? "涓�"
+                        : "浣�"
+                    }}
                   </el-tag>
                 </template>
               </el-table-column>
-              <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160">
+              <el-table-column
+                label="鍒涘缓鏃堕棿"
+                align="center"
+                prop="createTime"
+                width="160"
+              >
                 <template slot-scope="scope">
-                  <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+                  <span>{{
+                    parseTime(scope.row.createTime, "{y}-{m}-{d}")
+                  }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="鎴鏃堕棿" align="center" prop="deadline" width="160">
+              <el-table-column
+                label="鎴鏃堕棿"
+                align="center"
+                prop="deadline"
+                width="160"
+              >
                 <template slot-scope="scope">
-                  <span>{{ parseTime(scope.row.deadline, '{y}-{m}-{d}') }}</span>
+                  <span>{{
+                    parseTime(scope.row.deadline, "{y}-{m}-{d}")
+                  }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="澶勭悊浜�" align="center" prop="assigneeName" width="120" />
-              <el-table-column label="宸ュ崟鐘舵��" align="center" prop="status" width="120">
+              <el-table-column
+                label="澶勭悊浜�"
+                align="center"
+                prop="assigneeName"
+                width="120"
+              />
+              <el-table-column
+                label="宸ュ崟鐘舵��"
+                align="center"
+                prop="status"
+                width="120"
+              >
                 <template slot-scope="scope">
-                  <dict-tag :options="workOrderStatusOptions" :value="scope.row.status"/>
+                  <dict-tag
+                    :options="workOrderStatusOptions"
+                    :value="scope.row.status"
+                  />
                 </template>
               </el-table-column>
-              <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">
+              <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                class-name="small-padding fixed-width"
+                width="180"
+              >
                 <template slot-scope="scope">
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-edit"
                     @click="handleWorkOrderUpdate(scope.row)"
-                  >缂栬緫</el-button>
+                    >缂栬緫</el-button
+                  >
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-delete"
                     @click="handleWorkOrderDelete(scope.row)"
-                  >鍒犻櫎</el-button>
+                    >鍒犻櫎</el-button
+                  >
                   <el-button
                     size="mini"
                     type="text"
                     icon="el-icon-s-promotion"
                     @click="handleAssignWorkOrder(scope.row)"
                     v-if="scope.row.status === '0'"
-                  >鎸囨淳</el-button>
+                    >鎸囨淳</el-button
+                  >
                 </template>
               </el-table-column>
             </el-table>
 
             <pagination
-              v-show="workOrderTotal>0"
+              v-show="workOrderTotal > 0"
               :total="workOrderTotal"
               :page.sync="workOrderQueryParams.pageNum"
               :limit.sync="workOrderQueryParams.pageSize"
@@ -326,19 +578,37 @@
     </el-tabs>
 
     <!-- 鍥㈤槦璇︽儏瀵硅瘽妗� -->
-    <el-dialog :title="teamDialogTitle" :visible.sync="teamDialogVisible" width="70%" append-to-body>
+    <el-dialog
+      :title="teamDialogTitle"
+      :visible.sync="teamDialogVisible"
+      width="70%"
+      append-to-body
+    >
       <el-descriptions :column="2" border>
-        <el-descriptions-item label="鍥㈤槦ID">{{ currentTeam.id }}</el-descriptions-item>
-        <el-descriptions-item label="鍥㈤槦鍚嶇О">{{ currentTeam.name }}</el-descriptions-item>
-        <el-descriptions-item label="鍥㈤槦缁勯暱">{{ currentTeam.leader }}</el-descriptions-item>
-<el-descriptions-item label="鍥㈤槦鎴愬憳">{{ (currentTeam.members || []).length }}浜�</el-descriptions-item>        <el-descriptions-item label="鍒涘缓鏃堕棿">{{ parseTime(currentTeam.createTime, '{y}-{m}-{d} {h}:{i}') }}</el-descriptions-item>
+        <el-descriptions-item label="鍥㈤槦ID">{{
+          currentTeam.id
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍥㈤槦鍚嶇О">{{
+          currentTeam.name
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍥㈤槦缁勯暱">{{
+          currentTeam.leader
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍥㈤槦鎴愬憳"
+          >{{ (currentTeam.members || []).length }}浜�</el-descriptions-item
+        >
+        <el-descriptions-item label="鍒涘缓鏃堕棿">{{
+          parseTime(currentTeam.createTime, "{y}-{m}-{d} {h}:{i}")
+        }}</el-descriptions-item>
         <el-descriptions-item label="鍥㈤槦鐘舵��">
-          <dict-tag :options="teamStatusOptions" :value="currentTeam.status"/>
+          <dict-tag :options="teamStatusOptions" :value="currentTeam.status" />
         </el-descriptions-item>
-        <el-descriptions-item label="鍥㈤槦鎻忚堪" :span="2">{{ currentTeam.description || '鏃�' }}</el-descriptions-item>
+        <el-descriptions-item label="鍥㈤槦鎻忚堪" :span="2">{{
+          currentTeam.description || "鏃�"
+        }}</el-descriptions-item>
       </el-descriptions>
 
-      <div class="team-members" style="margin-top: 20px;">
+      <div class="team-members" style="margin-top: 20px">
         <div class="headline">
           <div class="basics">鍥㈤槦鎴愬憳</div>
         </div>
@@ -351,19 +621,22 @@
           <el-table-column prop="currentWorkOrder" label="褰撳墠宸ュ崟" width="150">
             <template slot-scope="scope">
               <el-tag :type="scope.row.currentWorkOrder ? '' : 'info'">
-                {{ scope.row.currentWorkOrder || '绌洪棽' }}
+                {{ scope.row.currentWorkOrder || "绌洪棽" }}
               </el-tag>
             </template>
           </el-table-column>
           <el-table-column prop="status" label="鎴愬憳鐘舵��" width="100">
             <template slot-scope="scope">
-              <dict-tag :options="memberStatusOptions" :value="scope.row.status"/>
+              <dict-tag
+                :options="memberStatusOptions"
+                :value="scope.row.status"
+              />
             </template>
           </el-table-column>
         </el-table>
       </div>
 
-      <div class="team-work-orders" style="margin-top: 20px;">
+      <div class="team-work-orders" style="margin-top: 20px">
         <div class="headline">
           <div class="basics">鍥㈤槦宸ュ崟</div>
         </div>
@@ -373,38 +646,90 @@
           <el-table-column prop="title" label="宸ュ崟鏍囬" />
           <el-table-column prop="priority" label="浼樺厛绾�" width="100">
             <template slot-scope="scope">
-              <el-tag :type="scope.row.priority === '1' ? 'danger' : scope.row.priority === '2' ? 'warning' : ''">
-                {{ scope.row.priority === '1' ? '楂�' : scope.row.priority === '2' ? '涓�' : '浣�' }}
+              <el-tag
+                :type="
+                  scope.row.priority === '1'
+                    ? 'danger'
+                    : scope.row.priority === '2'
+                    ? 'warning'
+                    : ''
+                "
+              >
+                {{
+                  scope.row.priority === "1"
+                    ? "楂�"
+                    : scope.row.priority === "2"
+                    ? "涓�"
+                    : "浣�"
+                }}
               </el-tag>
             </template>
           </el-table-column>
           <el-table-column prop="assigneeName" label="澶勭悊浜�" width="120" />
           <el-table-column prop="status" label="宸ュ崟鐘舵��" width="120">
             <template slot-scope="scope">
-              <dict-tag :options="workOrderStatusOptions" :value="scope.row.status"/>
+              <dict-tag
+                :options="workOrderStatusOptions"
+                :value="scope.row.status"
+              />
             </template>
           </el-table-column>
           <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160">
             <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+              <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="deadline" label="鎴鏃堕棿" width="160">
             <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.deadline, '{y}-{m}-{d}') }}</span>
+              <span>{{ parseTime(scope.row.deadline, "{y}-{m}-{d}") }}</span>
             </template>
           </el-table-column>
         </el-table>
       </div>
-
+      <!-- 鍦ㄥ洟闃熻鎯呭璇濇鐨勫洟闃熸垚鍛樿〃鏍煎悗娣诲姞浜岀淮鐮佸尯鍩� -->
+      <div class="team-qrcode" style="margin-top: 20px">
+        <div class="headline">
+          <div class="basics">鍥㈤槦浜岀淮鐮�</div>
+        </div>
+        <el-divider></el-divider>
+        <div class="qrcode-container">
+          <vue-qr
+            :text="teamQRContent"
+            :size="200"
+            :margin="10"
+            colorDark="#409EFF"
+            :logoScale="0.2"
+            :logoSrc="logoUrl"
+          ></vue-qr>
+          <div class="qrcode-actions">
+            <el-button size="mini" @click="downloadQRCode"
+              >涓嬭浇浜岀淮鐮�</el-button
+            >
+            <el-button size="mini" type="primary" @click="refreshQRCode"
+              >鍒锋柊</el-button
+            >
+          </div>
+          <p class="qrcode-tip">鎵弿浜岀淮鐮佹煡鐪嬪洟闃熶俊鎭紙鏈夋晥鏈�24灏忔椂锛�</p>
+        </div>
+      </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="teamDialogVisible = false">鍏� 闂�</el-button>
       </div>
     </el-dialog>
 
     <!-- 鏂板/缂栬緫鍥㈤槦瀵硅瘽妗� -->
-    <el-dialog :title="teamFormTitle" :visible.sync="teamFormVisible" width="50%" append-to-body>
-      <el-form ref="teamForm" :model="teamForm" :rules="teamRules" label-width="80px">
+    <el-dialog
+      :title="teamFormTitle"
+      :visible.sync="teamFormVisible"
+      width="50%"
+      append-to-body
+    >
+      <el-form
+        ref="teamForm"
+        :model="teamForm"
+        :rules="teamRules"
+        label-width="80px"
+      >
         <el-row>
           <el-col :span="24">
             <el-form-item label="鍥㈤槦鍚嶇О" prop="name">
@@ -430,7 +755,8 @@
                   v-for="dict in teamStatusOptions"
                   :key="dict.value"
                   :label="dict.value"
-                >{{dict.label}}</el-radio>
+                  >{{ dict.label }}</el-radio
+                >
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -442,14 +768,19 @@
                 :titles="['鍙�夋垚鍛�', '鍥㈤槦鎴愬憳']"
                 :props="{
                   key: 'id',
-                  label: 'name'
+                  label: 'name',
                 }"
               />
             </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="鍥㈤槦鎻忚堪" prop="description">
-              <el-input type="textarea" :rows="3" v-model="teamForm.description" placeholder="璇疯緭鍏ュ洟闃熸弿杩�" />
+              <el-input
+                type="textarea"
+                :rows="3"
+                v-model="teamForm.description"
+                placeholder="璇疯緭鍏ュ洟闃熸弿杩�"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -461,17 +792,33 @@
     </el-dialog>
 
     <!-- 鏂板/缂栬緫鎴愬憳瀵硅瘽妗� -->
-    <el-dialog :title="memberFormTitle" :visible.sync="memberFormVisible" width="50%" append-to-body>
-      <el-form ref="memberForm" :model="memberForm" :rules="memberRules" label-width="80px">
+    <el-dialog
+      :title="memberFormTitle"
+      :visible.sync="memberFormVisible"
+      width="50%"
+      append-to-body
+    >
+      <el-form
+        ref="memberForm"
+        :model="memberForm"
+        :rules="memberRules"
+        label-width="80px"
+      >
         <el-row>
           <el-col :span="12">
             <el-form-item label="鎴愬憳濮撳悕" prop="name">
-              <el-input v-model="memberForm.name" placeholder="璇疯緭鍏ユ垚鍛樺鍚�" />
+              <el-input
+                v-model="memberForm.name"
+                placeholder="璇疯緭鍏ユ垚鍛樺鍚�"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎵�灞炲洟闃�" prop="teamId">
-              <el-select v-model="memberForm.teamId" placeholder="璇烽�夋嫨鎵�灞炲洟闃�">
+              <el-select
+                v-model="memberForm.teamId"
+                placeholder="璇烽�夋嫨鎵�灞炲洟闃�"
+              >
                 <el-option
                   v-for="item in teamList"
                   :key="item.id"
@@ -483,12 +830,18 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="鑱屼綅" prop="position">
-              <el-input v-model="memberForm.position" placeholder="璇疯緭鍏ヨ亴浣�" />
+              <el-input
+                v-model="memberForm.position"
+                placeholder="璇疯緭鍏ヨ亴浣�"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
-              <el-input v-model="memberForm.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+              <el-input
+                v-model="memberForm.phone"
+                placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -503,7 +856,8 @@
                   v-for="dict in memberStatusOptions"
                   :key="dict.value"
                   :label="dict.value"
-                >{{dict.label}}</el-radio>
+                  >{{ dict.label }}</el-radio
+                >
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -516,17 +870,33 @@
     </el-dialog>
 
     <!-- 鏂板/缂栬緫宸ュ崟瀵硅瘽妗� -->
-    <el-dialog :title="workOrderFormTitle" :visible.sync="workOrderFormVisible" width="60%" append-to-body>
-      <el-form ref="workOrderForm" :model="workOrderForm" :rules="workOrderRules" label-width="80px">
+    <el-dialog
+      :title="workOrderFormTitle"
+      :visible.sync="workOrderFormVisible"
+      width="60%"
+      append-to-body
+    >
+      <el-form
+        ref="workOrderForm"
+        :model="workOrderForm"
+        :rules="workOrderRules"
+        label-width="80px"
+      >
         <el-row>
           <el-col :span="24">
             <el-form-item label="宸ュ崟鏍囬" prop="title">
-              <el-input v-model="workOrderForm.title" placeholder="璇疯緭鍏ュ伐鍗曟爣棰�" />
+              <el-input
+                v-model="workOrderForm.title"
+                placeholder="璇疯緭鍏ュ伐鍗曟爣棰�"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="浼樺厛绾�" prop="priority">
-              <el-select v-model="workOrderForm.priority" placeholder="璇烽�夋嫨浼樺厛绾�">
+              <el-select
+                v-model="workOrderForm.priority"
+                placeholder="璇烽�夋嫨浼樺厛绾�"
+              >
                 <el-option
                   v-for="item in priorityOptions"
                   :key="item.value"
@@ -549,7 +919,12 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="宸ュ崟鍐呭" prop="content">
-              <el-input type="textarea" :rows="4" v-model="workOrderForm.content" placeholder="璇疯緭鍏ュ伐鍗曞唴瀹�" />
+              <el-input
+                type="textarea"
+                :rows="4"
+                v-model="workOrderForm.content"
+                placeholder="璇疯緭鍏ュ伐鍗曞唴瀹�"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -559,13 +934,17 @@
                   v-for="dict in workOrderStatusOptions"
                   :key="dict.value"
                   :label="dict.value"
-                >{{dict.label}}</el-radio>
+                  >{{ dict.label }}</el-radio
+                >
               </el-radio-group>
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="workOrderForm.status === '1'">
             <el-form-item label="澶勭悊浜�" prop="assignee">
-              <el-select v-model="workOrderForm.assignee" placeholder="璇烽�夋嫨澶勭悊浜�">
+              <el-select
+                v-model="workOrderForm.assignee"
+                placeholder="璇烽�夋嫨澶勭悊浜�"
+              >
                 <el-option
                   v-for="item in memberList"
                   :key="item.id"
@@ -584,13 +963,22 @@
     </el-dialog>
 
     <!-- 鎸囨淳宸ュ崟瀵硅瘽妗� -->
-    <el-dialog title="鎸囨淳宸ュ崟" :visible.sync="assignDialogVisible" width="40%" append-to-body>
+    <el-dialog
+      title="鎸囨淳宸ュ崟"
+      :visible.sync="assignDialogVisible"
+      width="40%"
+      append-to-body
+    >
       <el-form :model="assignForm" label-width="80px">
         <el-form-item label="宸ュ崟鏍囬">
           <el-input v-model="assignForm.title" disabled />
         </el-form-item>
         <el-form-item label="澶勭悊浜�" prop="assignee">
-          <el-select v-model="assignForm.assignee" placeholder="璇烽�夋嫨澶勭悊浜�" style="width: 100%">
+          <el-select
+            v-model="assignForm.assignee"
+            placeholder="璇烽�夋嫨澶勭悊浜�"
+            style="width: 100%"
+          >
             <el-option
               v-for="item in availableMembers"
               :key="item.id"
@@ -600,7 +988,11 @@
           </el-select>
         </el-form-item>
         <el-form-item label="浼樺厛绾�" prop="priority">
-          <el-select v-model="assignForm.priority" placeholder="璇烽�夋嫨浼樺厛绾�" style="width: 100%">
+          <el-select
+            v-model="assignForm.priority"
+            placeholder="璇烽�夋嫨浼樺厛绾�"
+            style="width: 100%"
+          >
             <el-option
               v-for="item in priorityOptions"
               :key="item.value"
@@ -628,83 +1020,205 @@
 </template>
 
 <script>
-import { parseTime } from '@/utils/ruoyi'
+import { parseTime } from "@/utils/ruoyi";
+import VueQr from "vue-qr";
 
 export default {
   name: "TeamManagement",
-  dicts: ['sys_normal_disable', 'sys_user_sex'],
+  dicts: ["sys_normal_disable", "sys_user_sex"],
+  components: { VueQr },
   data() {
     return {
       // 褰撳墠婵�娲荤殑鏍囩椤�
-      activeTab: 'team',
+      activeTab: "team",
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
 
       // 鍥㈤槦绠$悊鐩稿叧鏁版嵁
       teamLoading: false,
-       multiple: false, // 杩欓噷娣诲姞
+      multiple: false, // 杩欓噷娣诲姞
+      // 鏇挎崲鍘熸湁鐨則eamList鏁版嵁
       teamList: [
         {
           id: 1,
-          name: "鍓嶇寮�鍙戝洟闃�",
-          leader: "寮犱笁",
+          name: "蹇冭绠″唴绉戝洟闃�",
+          leader: "鏉庢垚鐧�",
           members: [
-            { id: 1, name: "寮犱笁", position: "鍓嶇缁勯暱", phone: "13800138001", email: "zhangsan@example.com", currentWorkOrder: "WO20230001", status: "1" },
-            { id: 2, name: "鏉庡洓", position: "楂樼骇鍓嶇", phone: "13800138002", email: "lisi@example.com", currentWorkOrder: "", status: "1" },
-            { id: 3, name: "鐜嬩簲", position: "鍓嶇寮�鍙�", phone: "13800138003", email: "wangwu@example.com", currentWorkOrder: "WO20230002", status: "1" }
+            {
+              id: 1,
+              name: "鏉庢垚鐧�",
+              position: "涓讳换鍖诲笀",
+              phone: "13800138001",
+              email: "lichengbai@hospital.com",
+              currentWorkOrder: "MED20230001",
+              status: "1",
+            },
+            {
+              id: 2,
+              name: "鍒樼繆鎯�",
+              position: "鍓富浠诲尰甯�",
+              phone: "13800138002",
+              email: "liuyihui@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
+            {
+              id: 3,
+              name: "寮犲瓱娑�",
+              position: "涓绘不鍖诲笀",
+              phone: "13800138003",
+              email: "zhangmenghan@hospital.com",
+              currentWorkOrder: "MED20230002",
+              status: "1",
+            },
+            {
+              id: 9,
+              name: "鍚存�濈堪",
+              position: "浣忛櫌鍖诲笀",
+              phone: "13800138009",
+              email: "wusihan@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
           ],
-          createTime: "2023-01-15 09:30:00",
+          createTime: "2024-01-15 09:30:00",
           status: "1",
-          description: "璐熻矗鍏徃鎵�鏈夊墠绔」鐩殑寮�鍙戝拰缁存姢"
+          description: "璐熻矗蹇冭绠$柧鐥呯殑璇婃柇銆佹不鐤楀拰鎵嬫湳锛屾搮闀垮啝蹇冪梾浠嬪叆娌荤枟",
         },
         {
           id: 2,
-          name: "鍚庣寮�鍙戝洟闃�",
-          leader: "璧靛叚",
+          name: "鑲跨槫绉戞不鐤楀洟闃�",
+          leader: "闄堟斂鍊�",
           members: [
-            { id: 4, name: "璧靛叚", position: "鍚庣缁勯暱", phone: "13800138004", email: "zhaoliu@example.com", currentWorkOrder: "WO20230003", status: "1" },
-            { id: 5, name: "閽变竷", position: "楂樼骇鍚庣", phone: "13800138005", email: "qianqi@example.com", currentWorkOrder: "", status: "1" },
-            { id: 6, name: "瀛欏叓", position: "鍚庣寮�鍙�", phone: "13800138006", email: "sunba@example.com", currentWorkOrder: "", status: "1" }
+            {
+              id: 4,
+              name: "闄堟斂鍊�",
+              position: "鑲跨槫绉戜富浠�",
+              phone: "13800138004",
+              email: "chenzhengqian@hospital.com",
+              currentWorkOrder: "MED20230003",
+              status: "1",
+            },
+            {
+              id: 5,
+              name: "閭撹瘲娑�",
+              position: "鏀剧枟鍖诲笀",
+              phone: "13800138005",
+              email: "dengshihan@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
+            {
+              id: 6,
+              name: "榛勭洓鐜�",
+              position: "鍖栫枟鍖诲笀",
+              phone: "13800138006",
+              email: "huangshengmei@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
           ],
-          createTime: "2023-01-20 14:20:00",
+          createTime: "2024-02-10 14:20:00",
           status: "1",
-          description: "璐熻矗鍏徃鎵�鏈夊悗绔湇鍔$殑寮�鍙戝拰缁存姢"
+          description: "涓撴敞浜庤偪鐦ょ殑缁煎悎娌荤枟锛屽寘鎷寲鐤椼�佹斁鐤楀拰闈跺悜娌荤枟",
         },
         {
           id: 3,
-          name: "娴嬭瘯鍥㈤槦",
-          leader: "鍛ㄤ節",
+          name: "鍎跨璇婄枟鍥㈤槦",
+          leader: "鐜嬫仼榫�",
           members: [
-            { id: 7, name: "鍛ㄤ節", position: "娴嬭瘯缁忕悊", phone: "13800138007", email: "zhoujiu@example.com", currentWorkOrder: "WO20230004", status: "1" },
-            { id: 8, name: "鍚村崄", position: "娴嬭瘯宸ョ▼甯�", phone: "13800138008", email: "wushi@example.com", currentWorkOrder: "", status: "1" }
+            {
+              id: 7,
+              name: "鐜嬫仼榫�",
+              position: "鍎跨涓讳换",
+              phone: "13800138007",
+              email: "wagenlong@hospital.com",
+              currentWorkOrder: "MED20230004",
+              status: "1",
+            },
+            {
+              id: 8,
+              name: "鏈辨斂寤�",
+              position: "鍎跨鍖诲笀",
+              phone: "13800138008",
+              email: "zhuzhengting@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
+            {
+              id: 10,
+              name: "鏋椾僵鐜�",
+              position: "鍎跨鎶ゅ+闀�",
+              phone: "13800138010",
+              email: "linpeiling@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
           ],
-          createTime: "2023-02-10 10:15:00",
+          createTime: "2024-03-05 10:15:00",
           status: "1",
-          description: "璐熻矗鍏徃鎵�鏈夐」鐩殑娴嬭瘯宸ヤ綔"
-        }
+          description: "璐熻矗鍎跨甯歌鐥呫�佸鍙戠梾鐨勮瘖鐤楀拰棰勯槻淇濆仴宸ヤ綔",
+        },
+        {
+          id: 4,
+          name: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+          leader: "鍚翠繆浼�",
+          members: [
+            {
+              id: 11,
+              name: "鍚翠繆浼�",
+              position: "鎬ヨ瘖绉戜富浠�",
+              phone: "13800138011",
+              email: "wujunbo@hospital.com",
+              currentWorkOrder: "MED20230005",
+              status: "1",
+            },
+            {
+              id: 12,
+              name: "闃Θ瀛�",
+              position: "鎬ヨ瘖鍖诲笀",
+              phone: "13800138012",
+              email: "ruanxinxue@hospital.com",
+              currentWorkOrder: "MED20230006",
+              status: "1",
+            },
+            {
+              id: 13,
+              name: "缈佹儬鐝�",
+              position: "鎬ヨ瘖鎶ゅ+",
+              phone: "13800138013",
+              email: "wenghuizhu@hospital.com",
+              currentWorkOrder: "",
+              status: "1",
+            },
+          ],
+          createTime: "2024-03-20 16:45:00",
+          status: "1",
+          description: "24灏忔椂寰呭懡锛岃礋璐f�ュ嵄閲嶇棁鎮h�呯殑鎶㈡晳鍜屾不鐤�",
+        },
       ],
+      teamTotal: 4,
       teamQueryParams: {
         pageNum: 1,
         pageSize: 10,
         name: undefined,
-        status: undefined
+        status: undefined,
       },
-      teamTotal: 3,
       teamStatusOptions: [
         { value: "0", label: "绂佺敤" },
-        { value: "1", label: "鍚敤" }
+        { value: "1", label: "鍚敤" },
       ],
       teamDialogVisible: false,
       teamDialogTitle: "",
       currentTeam: {
-      id: undefined,
-      name: undefined,
-      leader: undefined,
-      members: [],  // 纭繚鏈夐粯璁ょ┖鏁扮粍
-      createTime: undefined,
-      status: undefined,
-      description: undefined
-    },
+        id: undefined,
+        name: undefined,
+        leader: undefined,
+        members: [], // 纭繚鏈夐粯璁ょ┖鏁扮粍
+        createTime: undefined,
+        status: undefined,
+        description: undefined,
+      },
       teamFormVisible: false,
       teamFormTitle: "",
       teamForm: {
@@ -713,43 +1227,213 @@
         leader: undefined,
         members: [],
         status: "1",
-        description: undefined
+        description: undefined,
       },
       teamRules: {
         name: [
-          { required: true, message: "鍥㈤槦鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "鍥㈤槦鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
         ],
         leader: [
-          { required: true, message: "鍥㈤槦缁勯暱涓嶈兘涓虹┖", trigger: "change" }
+          { required: true, message: "鍥㈤槦缁勯暱涓嶈兘涓虹┖", trigger: "change" },
         ],
         status: [
-          { required: true, message: "鍥㈤槦鐘舵�佷笉鑳戒负绌�", trigger: "change" }
-        ]
+          { required: true, message: "鍥㈤槦鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+        ],
       },
-
+      // 浜岀淮鐮佺浉鍏虫暟鎹�
+      teamQRContent: "127.0.0.1:8093/wt?p=0BE9L3C2u",
+      logoUrl: require("@/assets/logo/logoxh.png"), // 鍖婚櫌logo
+      currentQRCodeUrl: "",
       // 浜哄憳鍒嗙粍鐩稿叧鏁版嵁
       memberLoading: false,
+      // 鏇挎崲鍘熸湁鐨刴emberList鏁版嵁
       memberList: [
-        { id: 1, name: "寮犱笁", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "鍓嶇缁勯暱", phone: "13800138001", email: "zhangsan@example.com", currentWorkOrder: "WO20230001", status: "1" },
-        { id: 2, name: "鏉庡洓", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "楂樼骇鍓嶇", phone: "13800138002", email: "lisi@example.com", currentWorkOrder: "", status: "1" },
-        { id: 3, name: "鐜嬩簲", teamId: 1, teamName: "鍓嶇寮�鍙戝洟闃�", position: "鍓嶇寮�鍙�", phone: "13800138003", email: "wangwu@example.com", currentWorkOrder: "WO20230002", status: "1" },
-        { id: 4, name: "璧靛叚", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "鍚庣缁勯暱", phone: "13800138004", email: "zhaoliu@example.com", currentWorkOrder: "WO20230003", status: "1" },
-        { id: 5, name: "閽变竷", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "楂樼骇鍚庣", phone: "13800138005", email: "qianqi@example.com", currentWorkOrder: "", status: "1" },
-        { id: 6, name: "瀛欏叓", teamId: 2, teamName: "鍚庣寮�鍙戝洟闃�", position: "鍚庣寮�鍙�", phone: "13800138006", email: "sunba@example.com", currentWorkOrder: "", status: "1" },
-        { id: 7, name: "鍛ㄤ節", teamId: 3, teamName: "娴嬭瘯鍥㈤槦", position: "娴嬭瘯缁忕悊", phone: "13800138007", email: "zhoujiu@example.com", currentWorkOrder: "WO20230004", status: "1" },
-        { id: 8, name: "鍚村崄", teamId: 3, teamName: "娴嬭瘯鍥㈤槦", position: "娴嬭瘯宸ョ▼甯�", phone: "13800138008", email: "wushi@example.com", currentWorkOrder: "", status: "1" }
+        // 蹇冭绠″唴绉戝洟闃熸垚鍛�
+        {
+          id: 1,
+          name: "鏉庢垚鐧�",
+          teamId: 1,
+          teamName: "蹇冭绠″唴绉戝洟闃�",
+          position: "涓讳换鍖诲笀",
+          phone: "13800138001",
+          email: "lichengbai@hospital.com",
+          currentWorkOrder: "MED20230001",
+          status: "1",
+        },
+        {
+          id: 2,
+          name: "鍒樼繆鎯�",
+          teamId: 1,
+          teamName: "蹇冭绠″唴绉戝洟闃�",
+          position: "鍓富浠诲尰甯�",
+          phone: "13800138002",
+          email: "liuyihui@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+        {
+          id: 3,
+          name: "寮犲瓱娑�",
+          teamId: 1,
+          teamName: "蹇冭绠″唴绉戝洟闃�",
+          position: "涓绘不鍖诲笀",
+          phone: "13800138003",
+          email: "zhangmenghan@hospital.com",
+          currentWorkOrder: "MED20230002",
+          status: "1",
+        },
+        {
+          id: 9,
+          name: "鍚存�濈堪",
+          teamId: 1,
+          teamName: "蹇冭绠″唴绉戝洟闃�",
+          position: "浣忛櫌鍖诲笀",
+          phone: "13800138009",
+          email: "wusihan@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+
+        // 鑲跨槫绉戞不鐤楀洟闃熸垚鍛�
+        {
+          id: 4,
+          name: "闄堟斂鍊�",
+          teamId: 2,
+          teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+          position: "鑲跨槫绉戜富浠�",
+          phone: "13800138004",
+          email: "chenzhengqian@hospital.com",
+          currentWorkOrder: "MED20230003",
+          status: "1",
+        },
+        {
+          id: 5,
+          name: "閭撹瘲娑�",
+          teamId: 2,
+          teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+          position: "鏀剧枟鍖诲笀",
+          phone: "13800138005",
+          email: "dengshihan@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+        {
+          id: 6,
+          name: "榛勭洓鐜�",
+          teamId: 2,
+          teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+          position: "鍖栫枟鍖诲笀",
+          phone: "13800138006",
+          email: "huangshengmei@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+
+        // 鍎跨璇婄枟鍥㈤槦鎴愬憳
+        {
+          id: 7,
+          name: "鐜嬫仼榫�",
+          teamId: 3,
+          teamName: "鍎跨璇婄枟鍥㈤槦",
+          position: "鍎跨涓讳换",
+          phone: "13800138007",
+          email: "wagenlong@hospital.com",
+          currentWorkOrder: "MED20230004",
+          status: "1",
+        },
+        {
+          id: 8,
+          name: "鏈辨斂寤�",
+          teamId: 3,
+          teamName: "鍎跨璇婄枟鍥㈤槦",
+          position: "鍎跨鍖诲笀",
+          phone: "13800138008",
+          email: "zhuzhengting@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+        {
+          id: 10,
+          name: "鏋椾僵鐜�",
+          teamId: 3,
+          teamName: "鍎跨璇婄枟鍥㈤槦",
+          position: "鍎跨鎶ゅ+闀�",
+          phone: "13800138010",
+          email: "linpeiling@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+
+        // 鎬ヨ瘖鎶㈡晳鍥㈤槦鎴愬憳
+        {
+          id: 11,
+          name: "鍚翠繆浼�",
+          teamId: 4,
+          teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+          position: "鎬ヨ瘖绉戜富浠�",
+          phone: "13800138011",
+          email: "wujunbo@hospital.com",
+          currentWorkOrder: "MED20230005",
+          status: "1",
+        },
+        {
+          id: 12,
+          name: "闃Θ瀛�",
+          teamId: 4,
+          teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+          position: "鎬ヨ瘖鍖诲笀",
+          phone: "13800138012",
+          email: "ruanxinxue@hospital.com",
+          currentWorkOrder: "MED20230006",
+          status: "1",
+        },
+        {
+          id: 13,
+          name: "缈佹儬鐝�",
+          teamId: 4,
+          teamName: "鎬ヨ瘖鎶㈡晳鍥㈤槦",
+          position: "鎬ヨ瘖鎶ゅ+",
+          phone: "13800138013",
+          email: "wenghuizhu@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+
+        // 鍏朵粬鍖荤枟浜哄憳
+        {
+          id: 14,
+          name: "鏂瑰厗鐜�",
+          teamId: 1,
+          teamName: "蹇冭绠″唴绉戝洟闃�",
+          position: "蹇冪數鎶�甯�",
+          phone: "13800138014",
+          email: "fangzhaoyu@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
+        {
+          id: 15,
+          name: "涓佹眽鑷�",
+          teamId: 2,
+          teamName: "鑲跨槫绉戞不鐤楀洟闃�",
+          position: "鐥呯悊鍖诲笀",
+          phone: "13800138015",
+          email: "dinghanzhen@hospital.com",
+          currentWorkOrder: "",
+          status: "1",
+        },
       ],
+      memberTotal: 15,
       memberQueryParams: {
         pageNum: 1,
         pageSize: 10,
         name: undefined,
         teamId: undefined,
-        status: undefined
+        status: undefined,
       },
-      memberTotal: 8,
       memberStatusOptions: [
         { value: "0", label: "绂佺敤" },
-        { value: "1", label: "鍚敤" }
+        { value: "1", label: "鍚敤" },
       ],
       memberFormVisible: false,
       memberFormTitle: "",
@@ -760,57 +1444,135 @@
         position: undefined,
         phone: undefined,
         email: undefined,
-        status: "1"
+        status: "1",
       },
       memberRules: {
         name: [
-          { required: true, message: "鎴愬憳濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "鎴愬憳濮撳悕涓嶈兘涓虹┖", trigger: "blur" },
         ],
         teamId: [
-          { required: true, message: "鎵�灞炲洟闃熶笉鑳戒负绌�", trigger: "change" }
+          { required: true, message: "鎵�灞炲洟闃熶笉鑳戒负绌�", trigger: "change" },
         ],
         position: [
-          { required: true, message: "鑱屼綅涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "鑱屼綅涓嶈兘涓虹┖", trigger: "blur" },
         ],
         phone: [
-          { required: true, message: "鑱旂郴鐢佃瘽涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "鑱旂郴鐢佃瘽涓嶈兘涓虹┖", trigger: "blur" },
         ],
         email: [
           { required: true, message: "閭涓嶈兘涓虹┖", trigger: "blur" },
-          { type: 'email', message: '璇疯緭鍏ユ纭殑閭鍦板潃', trigger: ['blur', 'change'] }
+          {
+            type: "email",
+            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+            trigger: ["blur", "change"],
+          },
         ],
         status: [
-          { required: true, message: "鎴愬憳鐘舵�佷笉鑳戒负绌�", trigger: "change" }
-        ]
+          { required: true, message: "鎴愬憳鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+        ],
       },
 
       // 宸ュ崟鎸囨淳鐩稿叧鏁版嵁
       workOrderLoading: false,
+      // 鏇挎崲鍘熸湁鐨剋orkOrderList鏁版嵁
       workOrderList: [
-        { id: "WO20230001", title: "棣栭〉鏀圭増闇�姹傚紑鍙�", priority: "1", createTime: "2023-03-01 09:30:00", deadline: "2023-03-15 18:00:00", assignee: 1, assigneeName: "寮犱笁", status: "1", content: "瀹屾垚棣栭〉鏀圭増鐨勬墍鏈夊墠绔紑鍙戝伐浣�" },
-        { id: "WO20230002", title: "鐢ㄦ埛涓績鎺ュ彛寮�鍙�", priority: "2", createTime: "2023-03-05 14:20:00", deadline: "2023-03-20 18:00:00", assignee: 3, assigneeName: "鐜嬩簲", status: "1", content: "寮�鍙戠敤鎴蜂腑蹇冪浉鍏虫帴鍙�" },
-        { id: "WO20230003", title: "璁㈠崟绯荤粺鎬ц兘浼樺寲", priority: "1", createTime: "2023-03-10 10:15:00", deadline: "2023-03-25 18:00:00", assignee: 4, assigneeName: "璧靛叚", status: "1", content: "浼樺寲璁㈠崟绯荤粺鎬ц兘锛屾彁楂樺搷搴旈�熷害" },
-        { id: "WO20230004", title: "鏀粯鍔熻兘娴嬭瘯", priority: "3", createTime: "2023-03-15 16:45:00", deadline: "2023-03-30 18:00:00", assignee: 7, assigneeName: "鍛ㄤ節", status: "1", content: "瀹屾垚鏀粯鍔熻兘鐨勫叏闈㈡祴璇�" },
-        { id: "WO20230005", title: "鏁版嵁鎶ヨ〃寮�鍙�", priority: "2", createTime: "2023-03-20 11:10:00", deadline: "2023-04-05 18:00:00", assignee: undefined, assigneeName: undefined, status: "0", content: "寮�鍙戞暟鎹粺璁℃姤琛ㄥ姛鑳�" }
+        {
+          id: "MED20230001",
+          title: "鍐犲績鐥呮偅鑰匬CI鎵嬫湳瀹夋帓",
+          priority: "1",
+          createTime: "2024-11-01 09:30:00",
+          deadline: "2024-11-05 18:00:00",
+          assignee: 1,
+          assigneeName: "鏉庢垚鐧�",
+          status: "1",
+          content:
+            "涓哄啝蹇冪梾鎮h�呭畨鎺掔粡鐨啝鐘跺姩鑴変粙鍏ユ不鐤楁墜鏈紝闇�瑕佹湳鍓嶈瘎浼板拰鍑嗗",
+        },
+        {
+          id: "MED20230002",
+          title: "楂樿鍘嬫偅鑰呰嵂鐗╂不鐤楁柟妗堣皟鏁�",
+          priority: "2",
+          createTime: "2024-11-03 14:20:00",
+          deadline: "2024-11-08 18:00:00",
+          assignee: 3,
+          assigneeName: "寮犲瓱娑�",
+          status: "1",
+          content: "鏍规嵁鎮h�呰鍘嬬洃娴嬬粨鏋滐紝璋冩暣闄嶅帇鑽墿缁勫悎鍜屽墏閲�",
+        },
+        {
+          id: "MED20230003",
+          title: "鑲虹檶鎮h�呭寲鐤楀懆鏈熷畨鎺�",
+          priority: "1",
+          createTime: "2024-11-05 10:15:00",
+          deadline: "2024-11-10 18:00:00",
+          assignee: 4,
+          assigneeName: "闄堟斂鍊�",
+          status: "1",
+          content: "鍒跺畾鑲虹檶鎮h�呮柊涓�鏈熷寲鐤楁柟妗堬紝鍖呮嫭鑽墿閫夋嫨鍜屽墏閲忚绠�",
+        },
+        {
+          id: "MED20230004",
+          title: "鍎跨鑲虹値鎮h�呰瘖鐤楁柟妗�",
+          priority: "2",
+          createTime: "2024-11-08 16:45:00",
+          deadline: "2024-11-12 18:00:00",
+          assignee: 7,
+          assigneeName: "鐜嬫仼榫�",
+          status: "1",
+          content: "涓哄効绔ヨ偤鐐庢偅鑰呭埗瀹氫釜鎬у寲娌荤枟鏂规锛屽寘鎷姉鐢熺礌閫夋嫨鍜岄浘鍖栨不鐤�",
+        },
+        {
+          id: "MED20230005",
+          title: "鎬ヨ瘖鑳哥棝鎮h�呭揩閫熻瘎浼�",
+          priority: "1",
+          createTime: "2024-11-10 11:10:00",
+          deadline: "2024-11-10 23:00:00",
+          assignee: 11,
+          assigneeName: "鍚翠繆浼�",
+          status: "1",
+          content: "瀵规�ヨ瘖鑳哥棝鎮h�呰繘琛屽揩閫熻瘎浼帮紝鎺掗櫎鎬ユ�у績鑲屾姝诲彲鑳�",
+        },
+        {
+          id: "MED20230006",
+          title: "澶栦激鎮h�呮竻鍒涚紳鍚堝鐞�",
+          priority: "2",
+          createTime: "2024-11-12 13:25:00",
+          deadline: "2024-11-12 20:00:00",
+          assignee: 12,
+          assigneeName: "闃Θ瀛�",
+          status: "1",
+          content: "澶勭悊鎬ヨ瘖澶栦激鎮h�呯殑浼ゅ彛娓呭垱鍜岀紳鍚堝伐浣�",
+        },
+        {
+          id: "MED20230007",
+          title: "绯栧翱鐥呮偅鑰呰儼宀涚礌璋冩暣",
+          priority: "2",
+          createTime: "2024-11-15 08:45:00",
+          deadline: "2024-11-20 18:00:00",
+          assignee: undefined,
+          assigneeName: undefined,
+          status: "0",
+          content: "鏍规嵁鎮h�呰绯栫洃娴嬫暟鎹紝璋冩暣鑳板矝绱犵敤閲忓拰娉ㄥ皠鏂规",
+        },
       ],
+      workOrderTotal: 7,
       workOrderQueryParams: {
         pageNum: 1,
         pageSize: 10,
         id: undefined,
         status: undefined,
-        assignee: undefined
+        assignee: undefined,
       },
-      workOrderTotal: 5,
       workOrderStatusOptions: [
         { value: "0", label: "寰呮寚娲�" },
         { value: "1", label: "杩涜涓�" },
         { value: "2", label: "宸插畬鎴�" },
-        { value: "3", label: "宸插彇娑�" }
+        { value: "3", label: "宸插彇娑�" },
       ],
       priorityOptions: [
         { value: "1", label: "楂�" },
         { value: "2", label: "涓�" },
-        { value: "3", label: "浣�" }
+        { value: "3", label: "浣�" },
       ],
       workOrderFormVisible: false,
       workOrderFormTitle: "",
@@ -822,24 +1584,24 @@
         deadline: undefined,
         assignee: undefined,
         status: "0",
-        content: undefined
+        content: undefined,
       },
       workOrderRules: {
         title: [
-          { required: true, message: "宸ュ崟鏍囬涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "宸ュ崟鏍囬涓嶈兘涓虹┖", trigger: "blur" },
         ],
         priority: [
-          { required: true, message: "浼樺厛绾т笉鑳戒负绌�", trigger: "change" }
+          { required: true, message: "浼樺厛绾т笉鑳戒负绌�", trigger: "change" },
         ],
         deadline: [
-          { required: true, message: "鎴鏃堕棿涓嶈兘涓虹┖", trigger: "change" }
+          { required: true, message: "鎴鏃堕棿涓嶈兘涓虹┖", trigger: "change" },
         ],
         content: [
-          { required: true, message: "宸ュ崟鍐呭涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "宸ュ崟鍐呭涓嶈兘涓虹┖", trigger: "blur" },
         ],
         status: [
-          { required: true, message: "宸ュ崟鐘舵�佷笉鑳戒负绌�", trigger: "change" }
-        ]
+          { required: true, message: "宸ュ崟鐘舵�佷笉鑳戒负绌�", trigger: "change" },
+        ],
       },
 
       // 鎸囨淳宸ュ崟鐩稿叧鏁版嵁
@@ -849,30 +1611,44 @@
         title: undefined,
         assignee: undefined,
         priority: "2",
-        deadline: undefined
-      }
+        deadline: undefined,
+      },
     };
+  },
+  // 鍦╳atch涓坊鍔犵洃鎺�
+  watch: {
+    teamDialogVisible(newVal) {
+      if (newVal) {
+        // 瀵硅瘽妗嗘樉绀烘椂閲嶆柊鐢熸垚浜岀淮鐮�
+        this.$nextTick(() => {
+          setTimeout(() => {
+            this.generateTeamQRContent(this.currentTeam);
+          }, 100);
+        });
+      }
+    },
+
   },
   computed: {
     // 鍥㈤槦鎴愬憳閫夐」锛堢敤浜庣┛姊锛�
     memberOptions() {
-      return this.memberList.map(member => ({
+      return this.memberList.map((member) => ({
         key: member.id,
         label: member.name,
-        disabled: member.status === "0"
+        disabled: member.status === "0",
       }));
     },
     // 杩囨护鍚庣殑鍥㈤槦鍒楄〃
     filteredTeamList() {
       let list = [...this.teamList];
       if (this.teamQueryParams.name) {
-        list = list.filter(item =>
+        list = list.filter((item) =>
           item.name.includes(this.teamQueryParams.name)
         );
       }
       if (this.teamQueryParams.status) {
-        list = list.filter(item =>
-          item.status === this.teamQueryParams.status
+        list = list.filter(
+          (item) => item.status === this.teamQueryParams.status
         );
       }
       return list;
@@ -881,18 +1657,18 @@
     filteredMemberList() {
       let list = [...this.memberList];
       if (this.memberQueryParams.name) {
-        list = list.filter(item =>
+        list = list.filter((item) =>
           item.name.includes(this.memberQueryParams.name)
         );
       }
       if (this.memberQueryParams.teamId) {
-        list = list.filter(item =>
-          item.teamId === this.memberQueryParams.teamId
+        list = list.filter(
+          (item) => item.teamId === this.memberQueryParams.teamId
         );
       }
       if (this.memberQueryParams.status) {
-        list = list.filter(item =>
-          item.status === this.memberQueryParams.status
+        list = list.filter(
+          (item) => item.status === this.memberQueryParams.status
         );
       }
       return list;
@@ -901,18 +1677,18 @@
     filteredWorkOrderList() {
       let list = [...this.workOrderList];
       if (this.workOrderQueryParams.id) {
-        list = list.filter(item =>
+        list = list.filter((item) =>
           item.id.includes(this.workOrderQueryParams.id)
         );
       }
       if (this.workOrderQueryParams.status) {
-        list = list.filter(item =>
-          item.status === this.workOrderQueryParams.status
+        list = list.filter(
+          (item) => item.status === this.workOrderQueryParams.status
         );
       }
       if (this.workOrderQueryParams.assignee) {
-        list = list.filter(item =>
-          item.assignee === this.workOrderQueryParams.assignee
+        list = list.filter(
+          (item) => item.assignee === this.workOrderQueryParams.assignee
         );
       }
       return list;
@@ -920,17 +1696,17 @@
     // 鍥㈤槦宸ュ崟锛堢敤浜庡洟闃熻鎯咃級
     teamWorkOrders() {
       if (!this.currentTeam.id) return [];
-      const teamMemberIds = this.currentTeam.members.map(member => member.id);
-      return this.workOrderList.filter(order =>
+      const teamMemberIds = this.currentTeam.members.map((member) => member.id);
+      return this.workOrderList.filter((order) =>
         teamMemberIds.includes(order.assignee)
       );
     },
     // 鍙敤鎴愬憳锛堢敤浜庡伐鍗曟寚娲撅級
     availableMembers() {
-      return this.memberList.filter(member =>
-        member.status === "1" && !member.currentWorkOrder
+      return this.memberList.filter(
+        (member) => member.status === "1" && !member.currentWorkOrder
       );
-    }
+    },
   },
   methods: {
     // 瑙f瀽鏃堕棿
@@ -947,6 +1723,113 @@
     handleTeamQuery() {
       this.teamQueryParams.pageNum = 1;
     },
+    // 鏌ョ湅鍥㈤槦璇︽儏鏃剁敓鎴愪簩缁寸爜
+    handleTeamDetail(row) {
+      this.currentTeam = row;
+      this.teamDialogTitle = "鍥㈤槦璇︽儏 - " + row.name;
+      this.teamDialogVisible = true;
+
+      // 浣跨敤nextTick纭繚DOM娓叉煋瀹屾垚
+      this.$nextTick(() => {
+        // 鐢熸垚涓存椂浜岀淮鐮佸唴瀹�
+        this.generateTeamQRContent(row);
+      });
+    },
+
+    // 鐢熸垚鍥㈤槦浜岀淮鐮佸唴瀹�
+    generateTeamQRContent(team) {
+      const timestamp = new Date().getTime();
+      const expireTime = timestamp + 24 * 60 * 60 * 1000; // 24灏忔椂鏈夋晥鏈�
+
+      const qrData = {
+        teamId: team.id,
+        teamName: team.name,
+        leader: team.leader,
+        memberCount: team.members.length,
+        timestamp: timestamp,
+        expireTime: expireTime,
+        type: "team_info",
+      };
+
+      // 纭繚鍐呭鏄瓧绗︿覆鏍煎紡
+      this.teamQRContent = "127.0.0.1:8093/wt?p=0BE9L3C2u";
+      console.log("鐢熸垚鐨勪簩缁寸爜鍐呭:", this.teamQRContent);
+    },
+
+    // 浜岀淮鐮佺敓鎴愬洖璋�
+    onQRCodeGenerated(dataURL, id) {
+      if (dataURL) {
+        this.currentQRCodeUrl = dataURL;
+        console.log("浜岀淮鐮佺敓鎴愭垚鍔�");
+      } else {
+        console.error("浜岀淮鐮佺敓鎴愬け璐�");
+        // 澶囩敤鏂规锛氫娇鐢╭rcode.js鐢熸垚
+        this.generateQRCodeWithQRCodeJS();
+      }
+    },
+    // 澶囩敤鐢熸垚鏂规
+    generateQRCodeWithQRCodeJS() {
+      const QRCode = require("qrcode");
+      if (this.teamQRContent) {
+        QRCode.toDataURL(
+          this.teamQRContent,
+          {
+            width: 200,
+            height: 200,
+            margin: 2,
+            color: {
+              dark: "#409EFF",
+              light: "#FFFFFF",
+            },
+          },
+          (err, url) => {
+            if (err) {
+              console.error("澶囩敤浜岀淮鐮佺敓鎴愬け璐�:", err);
+              return;
+            }
+            this.currentQRCodeUrl = url;
+            console.log("澶囩敤浜岀淮鐮佺敓鎴愭垚鍔�");
+          }
+        );
+      }
+    },
+    // 涓嬭浇浜岀淮鐮�
+    downloadQRCode() {
+      if (!this.currentQRCodeUrl) {
+        this.$message.warning("璇峰厛鐢熸垚浜岀淮鐮�");
+        return;
+      }
+
+      const a = document.createElement("a");
+      const event = new MouseEvent("click");
+
+      a.download = `鍥㈤槦浜岀淮鐮乢${
+        this.currentTeam.name
+      }_${new Date().getTime()}.png`;
+      a.href = this.currentQRCodeUrl;
+      a.dispatchEvent(event);
+    },
+
+    // 鍒锋柊浜岀淮鐮�
+    refreshQRCode() {
+      this.generateTeamQRContent(this.currentTeam);
+      this.$message.success("浜岀淮鐮佸凡鍒锋柊");
+    },
+
+    // 鍦ㄥ伐鍗曡鎯呬腑涔熷彲浠ユ坊鍔犱簩缁寸爜鍔熻兘
+    handleWorkOrderDetail(row) {
+      // 鐢熸垚宸ュ崟浜岀淮鐮�
+      const qrData = {
+        workOrderId: row.id,
+        title: row.title,
+        priority: row.priority,
+        status: row.status,
+        timestamp: new Date().getTime(),
+        type: "work_order",
+      };
+
+      this.workOrderQRContent = JSON.stringify(qrData);
+    },
     // 閲嶇疆鍥㈤槦鎼滅储
     resetTeamQuery() {
       this.resetForm("teamQueryForm");
@@ -954,15 +1837,9 @@
     },
     // 鍥㈤槦澶氶��
     handleTeamSelectionChange(selection) {
-      this.ids = selection.map(item => item.id);
+      this.ids = selection.map((item) => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
-    },
-    // 鏌ョ湅鍥㈤槦璇︽儏
-    handleTeamDetail(row) {
-      this.currentTeam = row;
-      this.teamDialogTitle = "鍥㈤槦璇︽儏 - " + row.name;
-      this.teamDialogVisible = true;
     },
     // 鏂板鍥㈤槦
     handleTeamAdd() {
@@ -973,56 +1850,65 @@
     // 淇敼鍥㈤槦
     handleTeamUpdate(row) {
       this.resetTeamForm();
-      const team = this.teamList.find(item => item.id === row.id);
+      const team = this.teamList.find((item) => item.id === row.id);
       this.teamForm = Object.assign({}, team);
-      this.teamForm.members = team.members.map(member => member.id);
+      this.teamForm.members = team.members.map((member) => member.id);
       this.teamFormTitle = "淇敼鍥㈤槦";
       this.teamFormVisible = true;
     },
     // 鍒犻櫎鍥㈤槦
     handleTeamDelete(row) {
       const teamIds = row.id || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎鍥㈤槦鍚嶇О涓�"' + row.name + '"鐨勬暟鎹」锛�').then(() => {
-        // 妯℃嫙鍒犻櫎鍥㈤槦
-        this.teamList = this.teamList.filter(item => item.id !== teamIds);
-        this.teamTotal = this.teamList.length;
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍥㈤槦鍚嶇О涓�"' + row.name + '"鐨勬暟鎹」锛�')
+        .then(() => {
+          // 妯℃嫙鍒犻櫎鍥㈤槦
+          this.teamList = this.teamList.filter((item) => item.id !== teamIds);
+          this.teamTotal = this.teamList.length;
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
     },
     // 鎻愪氦鍥㈤槦琛ㄥ崟
     submitTeamForm() {
-      this.$refs["teamForm"].validate(valid => {
+      this.$refs["teamForm"].validate((valid) => {
         if (valid) {
           if (this.teamForm.id != null) {
             // 妯℃嫙淇敼鍥㈤槦
-            const index = this.teamList.findIndex(item => item.id === this.teamForm.id);
+            const index = this.teamList.findIndex(
+              (item) => item.id === this.teamForm.id
+            );
             if (index !== -1) {
-              const leader = this.memberList.find(member => member.id === this.teamForm.leader);
-              const members = this.memberList.filter(member =>
+              const leader = this.memberList.find(
+                (member) => member.id === this.teamForm.leader
+              );
+              const members = this.memberList.filter((member) =>
                 this.teamForm.members.includes(member.id)
               );
 
               this.teamList.splice(index, 1, {
                 ...this.teamForm,
-                leader: leader ? leader.name : '',
-                members: members
+                leader: leader ? leader.name : "",
+                members: members,
               });
             }
             this.$modal.msgSuccess("淇敼鎴愬姛");
           } else {
             // 妯℃嫙鏂板鍥㈤槦
-            const newId = Math.max(...this.teamList.map(item => item.id)) + 1;
-            const leader = this.memberList.find(member => member.id === this.teamForm.leader);
-            const members = this.memberList.filter(member =>
+            const newId = Math.max(...this.teamList.map((item) => item.id)) + 1;
+            const leader = this.memberList.find(
+              (member) => member.id === this.teamForm.leader
+            );
+            const members = this.memberList.filter((member) =>
               this.teamForm.members.includes(member.id)
             );
 
             this.teamList.unshift({
               ...this.teamForm,
               id: newId,
-              leader: leader ? leader.name : '',
+              leader: leader ? leader.name : "",
               members: members,
-              createTime: new Date().toLocaleString()
+              createTime: new Date().toLocaleString(),
             });
             this.teamTotal = this.teamList.length;
             this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1039,7 +1925,7 @@
         leader: undefined,
         members: [],
         status: "1",
-        description: undefined
+        description: undefined,
       };
       this.resetForm("teamForm");
     },
@@ -1068,7 +1954,7 @@
     },
     // 鎴愬憳澶氶��
     handleMemberSelectionChange(selection) {
-      this.ids = selection.map(item => item.id);
+      this.ids = selection.map((item) => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
@@ -1081,7 +1967,7 @@
     // 淇敼鎴愬憳
     handleMemberUpdate(row) {
       this.resetMemberForm();
-      const member = this.memberList.find(item => item.id === row.id);
+      const member = this.memberList.find((item) => item.id === row.id);
       this.memberForm = Object.assign({}, member);
       this.memberFormTitle = "淇敼鎴愬憳";
       this.memberFormVisible = true;
@@ -1089,37 +1975,49 @@
     // 鍒犻櫎鎴愬憳
     handleMemberDelete(row) {
       const memberIds = row.id || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎鎴愬憳濮撳悕涓�"' + row.name + '"鐨勬暟鎹」锛�').then(() => {
-        // 妯℃嫙鍒犻櫎鎴愬憳
-        this.memberList = this.memberList.filter(item => item.id !== memberIds);
-        this.memberTotal = this.memberList.length;
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鎴愬憳濮撳悕涓�"' + row.name + '"鐨勬暟鎹」锛�')
+        .then(() => {
+          // 妯℃嫙鍒犻櫎鎴愬憳
+          this.memberList = this.memberList.filter(
+            (item) => item.id !== memberIds
+          );
+          this.memberTotal = this.memberList.length;
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
     },
     // 鎻愪氦鎴愬憳琛ㄥ崟
     submitMemberForm() {
-      this.$refs["memberForm"].validate(valid => {
+      this.$refs["memberForm"].validate((valid) => {
         if (valid) {
           if (this.memberForm.id != null) {
             // 妯℃嫙淇敼鎴愬憳
-            const index = this.memberList.findIndex(item => item.id === this.memberForm.id);
+            const index = this.memberList.findIndex(
+              (item) => item.id === this.memberForm.id
+            );
             if (index !== -1) {
-              const team = this.teamList.find(item => item.id === this.memberForm.teamId);
+              const team = this.teamList.find(
+                (item) => item.id === this.memberForm.teamId
+              );
               this.memberList.splice(index, 1, {
                 ...this.memberForm,
-                teamName: team ? team.name : ''
+                teamName: team ? team.name : "",
               });
             }
             this.$modal.msgSuccess("淇敼鎴愬姛");
           } else {
             // 妯℃嫙鏂板鎴愬憳
-            const newId = Math.max(...this.memberList.map(item => item.id)) + 1;
-            const team = this.teamList.find(item => item.id === this.memberForm.teamId);
+            const newId =
+              Math.max(...this.memberList.map((item) => item.id)) + 1;
+            const team = this.teamList.find(
+              (item) => item.id === this.memberForm.teamId
+            );
             this.memberList.unshift({
               ...this.memberForm,
               id: newId,
-              teamName: team ? team.name : '',
-              currentWorkOrder: ''
+              teamName: team ? team.name : "",
+              currentWorkOrder: "",
             });
             this.memberTotal = this.memberList.length;
             this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1137,7 +2035,7 @@
         position: undefined,
         phone: undefined,
         email: undefined,
-        status: "1"
+        status: "1",
       };
       this.resetForm("memberForm");
     },
@@ -1166,7 +2064,7 @@
     },
     // 宸ュ崟澶氶��
     handleWorkOrderSelectionChange(selection) {
-      this.ids = selection.map(item => item.id);
+      this.ids = selection.map((item) => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
@@ -1179,7 +2077,7 @@
     // 淇敼宸ュ崟
     handleWorkOrderUpdate(row) {
       this.resetWorkOrderForm();
-      const workOrder = this.workOrderList.find(item => item.id === row.id);
+      const workOrder = this.workOrderList.find((item) => item.id === row.id);
       this.workOrderForm = Object.assign({}, workOrder);
       this.workOrderFormTitle = "缂栬緫宸ュ崟";
       this.workOrderFormVisible = true;
@@ -1187,12 +2085,17 @@
     // 鍒犻櫎宸ュ崟
     handleWorkOrderDelete(row) {
       const workOrderIds = row.id || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎宸ュ崟鏍囬涓�"' + row.title + '"鐨勬暟鎹」锛�').then(() => {
-        // 妯℃嫙鍒犻櫎宸ュ崟
-        this.workOrderList = this.workOrderList.filter(item => item.id !== workOrderIds);
-        this.workOrderTotal = this.workOrderList.length;
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎宸ュ崟鏍囬涓�"' + row.title + '"鐨勬暟鎹」锛�')
+        .then(() => {
+          // 妯℃嫙鍒犻櫎宸ュ崟
+          this.workOrderList = this.workOrderList.filter(
+            (item) => item.id !== workOrderIds
+          );
+          this.workOrderTotal = this.workOrderList.length;
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
     },
     // 鎸囨淳宸ュ崟
     handleAssignWorkOrder(row) {
@@ -1201,34 +2104,43 @@
         title: row.title,
         assignee: undefined,
         priority: row.priority,
-        deadline: row.deadline
+        deadline: row.deadline,
       };
       this.assignDialogVisible = true;
     },
     // 鎻愪氦宸ュ崟琛ㄥ崟
     submitWorkOrderForm() {
-      this.$refs["workOrderForm"].validate(valid => {
+      this.$refs["workOrderForm"].validate((valid) => {
         if (valid) {
           if (this.workOrderForm.id != null) {
             // 妯℃嫙淇敼宸ュ崟
-            const index = this.workOrderList.findIndex(item => item.id === this.workOrderForm.id);
+            const index = this.workOrderList.findIndex(
+              (item) => item.id === this.workOrderForm.id
+            );
             if (index !== -1) {
-              const assignee = this.memberList.find(member => member.id === this.workOrderForm.assignee);
+              const assignee = this.memberList.find(
+                (member) => member.id === this.workOrderForm.assignee
+              );
               this.workOrderList.splice(index, 1, {
                 ...this.workOrderForm,
-                assigneeName: assignee ? assignee.name : undefined
+                assigneeName: assignee ? assignee.name : undefined,
               });
             }
             this.$modal.msgSuccess("淇敼鎴愬姛");
           } else {
             // 妯℃嫙鏂板宸ュ崟
-            const newId = "WO" + new Date().getFullYear() + (Math.floor(Math.random() * 90000) + 10000);
-            const assignee = this.memberList.find(member => member.id === this.workOrderForm.assignee);
+            const newId =
+              "WO" +
+              new Date().getFullYear() +
+              (Math.floor(Math.random() * 90000) + 10000);
+            const assignee = this.memberList.find(
+              (member) => member.id === this.workOrderForm.assignee
+            );
             this.workOrderList.unshift({
               ...this.workOrderForm,
               id: newId,
               assigneeName: assignee ? assignee.name : undefined,
-              createTime: new Date().toLocaleString()
+              createTime: new Date().toLocaleString(),
             });
             this.workOrderTotal = this.workOrderList.length;
             this.$modal.msgSuccess("鏂板鎴愬姛");
@@ -1247,7 +2159,7 @@
         deadline: undefined,
         assignee: undefined,
         status: "0",
-        content: undefined
+        content: undefined,
       };
       this.resetForm("workOrderForm");
     },
@@ -1264,9 +2176,13 @@
       }
 
       // 妯℃嫙鎸囨淳宸ュ崟
-      const index = this.workOrderList.findIndex(item => item.id === this.assignForm.id);
+      const index = this.workOrderList.findIndex(
+        (item) => item.id === this.assignForm.id
+      );
       if (index !== -1) {
-        const assignee = this.memberList.find(member => member.id === this.assignForm.assignee);
+        const assignee = this.memberList.find(
+          (member) => member.id === this.assignForm.assignee
+        );
         if (assignee) {
           // 鏇存柊宸ュ崟鐘舵��
           this.workOrderList.splice(index, 1, {
@@ -1275,15 +2191,17 @@
             assigneeName: assignee.name,
             priority: this.assignForm.priority,
             deadline: this.assignForm.deadline,
-            status: "1"
+            status: "1",
           });
 
           // 鏇存柊鎴愬憳褰撳墠宸ュ崟
-          const memberIndex = this.memberList.findIndex(member => member.id === this.assignForm.assignee);
+          const memberIndex = this.memberList.findIndex(
+            (member) => member.id === this.assignForm.assignee
+          );
           if (memberIndex !== -1) {
             this.memberList.splice(memberIndex, 1, {
               ...this.memberList[memberIndex],
-              currentWorkOrder: this.assignForm.id
+              currentWorkOrder: this.assignForm.id,
             });
           }
 
@@ -1291,8 +2209,8 @@
           this.assignDialogVisible = false;
         }
       }
-    }
-  }
+    },
+  },
 };
 </script>
 
@@ -1319,7 +2237,7 @@
 }
 
 .avatar-uploader ::v-deep .el-upload:hover {
-  border-color: #409EFF;
+  border-color: #409eff;
 }
 
 .avatar-uploader-icon {
@@ -1337,7 +2255,8 @@
   display: block;
 }
 
-.team-members, .team-work-orders {
+.team-members,
+.team-work-orders {
   margin-top: 20px;
 }
 </style>

--
Gitblit v1.9.3