From ed7fc8a4e378ed8b8109055f9ef209b642837df6 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 19 八月 2025 10:15:01 +0800
Subject: [PATCH] 中强恒兴数据修改

---
 src/views/salesManagement/customerManagement/index.vue           |   24 
 src/views/collaborativeApproval/meetingBoard/index.vue           |    8 
 src/views/procurementManagement/qualityInspection/index.vue      |    2 
 src/views/tool/qrCodeDemo/index.vue                              |    4 
 src/views/collaborativeApproval/sealManagement/index.vue         |   12 
 src/views/salesManagement/salespersonManagement/index.vue        |   12 
 src/views/collaborativeApproval/notificationManagement/index.vue |    6 
 src/views/collaborativeApproval/warningSystem/index.vue          |    4 
 src/layout/components/Sidebar/index.vue                          |    1 
 src/views/salesManagement/orderManagement/index.vue              |   18 
 src/views/collaborativeApproval/planTemplate/index.vue           |  750 ++++++++++++++++++++++++++++
 src/views/collaborativeApproval/officeSupplies/index.vue         |  670 +++++++++++++++++++++++++
 src/views/collaborativeApproval/knowledgeBase/index.vue          |    4 
 src/views/collaborativeApproval/attendanceManagement/index.vue   |   16 
 14 files changed, 1,475 insertions(+), 56 deletions(-)

diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index 33b2e85..9044945 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -30,7 +30,6 @@
 const sideTheme = computed(() => settingsStore.sideTheme)
 const theme = computed(() => settingsStore.theme)
 const isCollapse = computed(() => !appStore.sidebar.opened)
-console.log(44444, settingsStore.isDark, sideTheme.value)
 
 // 鑾峰彇鑿滃崟鑳屾櫙鑹�
 const getMenuBackground = computed(() => {
diff --git a/src/views/collaborativeApproval/attendanceManagement/index.vue b/src/views/collaborativeApproval/attendanceManagement/index.vue
index 37b3d59..419b261 100644
--- a/src/views/collaborativeApproval/attendanceManagement/index.vue
+++ b/src/views/collaborativeApproval/attendanceManagement/index.vue
@@ -25,8 +25,8 @@
             </el-table-column>
             <el-table-column label="鎿嶄綔" fixed="right">
               <template #default="scope">
-                <el-button type="primary" size="small" @click="openDialog('holiday', 'edit', scope.row)">缂栬緫</el-button>
-                <el-button type="danger" size="small" @click="deleteItem('holiday', scope.row)">鍒犻櫎</el-button>
+                <el-button type="primary" link @click="openDialog('holiday', 'edit', scope.row)">缂栬緫</el-button>
+                <el-button type="danger" link @click="deleteItem('holiday', scope.row)">鍒犻櫎</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -52,8 +52,8 @@
             </el-table-column>
             <el-table-column label="鎿嶄綔" fixed="right">
               <template #default="scope">
-                <el-button type="primary" size="small" @click="openDialog('annual', 'edit', scope.row)">缂栬緫</el-button>
-                <el-button type="danger" size="small" @click="deleteItem('annual', scope.row)">鍒犻櫎</el-button>
+                <el-button type="primary" link @click="openDialog('annual', 'edit', scope.row)">缂栬緫</el-button>
+                <el-button type="danger" link @click="deleteItem('annual', scope.row)">鍒犻櫎</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -84,8 +84,8 @@
             </el-table-column>
             <el-table-column label="鎿嶄綔" fixed="right">
               <template #default="scope">
-                <el-button type="primary" size="small" @click="openDialog('overtime', 'edit', scope.row)">缂栬緫</el-button>
-                <el-button type="danger" size="small" @click="deleteItem('overtime', scope.row)">鍒犻櫎</el-button>
+                <el-button type="primary" link @click="openDialog('overtime', 'edit', scope.row)">缂栬緫</el-button>
+                <el-button type="danger" link @click="deleteItem('overtime', scope.row)">鍒犻櫎</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -118,8 +118,8 @@
             </el-table-column>
             <el-table-column label="鎿嶄綔" fixed="right">
               <template #default="scope">
-                <el-button type="primary" size="small" @click="openDialog('worktime', 'edit', scope.row)">缂栬緫</el-button>
-                <el-button type="danger" size="small" @click="deleteItem('worktime', scope.row)">鍒犻櫎</el-button>
+                <el-button type="primary" link @click="openDialog('worktime', 'edit', scope.row)">缂栬緫</el-button>
+                <el-button type="danger" link @click="deleteItem('worktime', scope.row)">鍒犻櫎</el-button>
               </template>
             </el-table-column>
           </el-table>
diff --git a/src/views/collaborativeApproval/knowledgeBase/index.vue b/src/views/collaborativeApproval/knowledgeBase/index.vue
index f944859..06fdeca 100644
--- a/src/views/collaborativeApproval/knowledgeBase/index.vue
+++ b/src/views/collaborativeApproval/knowledgeBase/index.vue
@@ -410,7 +410,7 @@
     problem: "澶ч鍚堝悓瀹℃壒娴佺▼澶嶆潅锛屽鎵规椂闂撮暱锛屽奖鍝嶄笟鍔¤繘灞�",
     solution: "寤虹珛缁胯壊閫氶亾锛屽绗﹀悎鏉′欢鐨勫悎鍚岄噰鐢ㄧ畝鍖栧鎵规祦绋嬶紝鐢遍儴闂ㄨ礋璐d汉鐩存帴瀹℃壒锛屽钩鍧囧鎵规椂闂翠粠3澶╃缉鐭嚦1澶�",
     keyPoints: "缁胯壊閫氶亾鏉′欢,绠�鍖栨祦绋�,瀹℃壒鏉冮檺,鏃堕棿鎺у埗",
-    creator: "寮犵粡鐞�",
+    creator: "闄堝織寮�",
     usageCount: 15,
     createTime: "2024-01-15 10:30:00"
   },
@@ -488,7 +488,7 @@
     problem: `鍦�${randomScenario}杩囩▼涓亣鍒扮殑闂鎻忚堪...`,
     solution: `閽堝${randomScenario}鐨勮В鍐虫柟妗堝拰鎿嶄綔姝ラ...`,
     keyPoints: "鍏抽敭瑕佺偣1,鍏抽敭瑕佺偣2,鍏抽敭瑕佺偣3,鍏抽敭瑕佺偣4",
-    creator: ["寮犵粡鐞�", "鏉庝富绠�", "鐜嬩笓鍛�", "鍒樻�荤洃"][Math.floor(Math.random() * 4)],
+          creator: ["闄堝織寮�", "鍒橀泤濠�", "鐜嬪缓鍥�", "璧典附鍗�"][Math.floor(Math.random() * 4)],
     usageCount: Math.floor(Math.random() * 20) + 1,
     createTime: now.toLocaleString()
   };
diff --git a/src/views/collaborativeApproval/meetingBoard/index.vue b/src/views/collaborativeApproval/meetingBoard/index.vue
index 63c74f9..1f46110 100644
--- a/src/views/collaborativeApproval/meetingBoard/index.vue
+++ b/src/views/collaborativeApproval/meetingBoard/index.vue
@@ -164,8 +164,8 @@
     startTime: '2024-01-15 09:00:00',
     endTime: '2024-01-15 10:30:00',
     location: '浼氳瀹',
-    host: '寮犵粡鐞�',
-    participants: ['寮犵粡鐞�', '鏉庡伐绋嬪笀', '鐜嬭璁″笀', '璧垫祴璇曞憳'],
+    host: '闄堝織寮�',
+    participants: ['闄堝織寮�', '鍒橀泤濠�', '鐜嬪缓鍥�', '璧典附鍗�'],
     agenda: [
       { time: '09:00-09:15', content: '涓婂懆宸ヤ綔鎬荤粨', status: 'completed' },
       { time: '09:15-09:45', content: '鏈懆寮�鍙戣鍒�', status: 'active' },
@@ -180,8 +180,8 @@
     startTime: '2024-01-15 14:00:00',
     endTime: '2024-01-15 15:00:00',
     location: '绾夸笂浼氳',
-    host: '闄堟�荤洃',
-    participants: ['闄堟�荤洃', '鍒樹骇鍝佺粡鐞�', '瀛欏鎴风粡鐞�', '瀹㈡埛浠h〃'],
+    host: '闄堝織寮�',
+    participants: ['闄堝織寮�', '鍒橀泤濠�', '瀛欐槑鍗�', '瀹㈡埛浠h〃'],
     agenda: [
       { time: '14:00-14:20', content: '闇�姹傝儗鏅粙缁�', status: 'pending' },
       { time: '14:20-14:40', content: '鍔熻兘闇�姹傚垎鏋�', status: 'pending' },
diff --git a/src/views/collaborativeApproval/notificationManagement/index.vue b/src/views/collaborativeApproval/notificationManagement/index.vue
index 288acf1..2db6780 100644
--- a/src/views/collaborativeApproval/notificationManagement/index.vue
+++ b/src/views/collaborativeApproval/notificationManagement/index.vue
@@ -664,9 +664,9 @@
     console.error('鑾峰彇鍛樺伐鍒楄〃澶辫触:', error);
     // 濡傛灉鎺ュ彛閮藉け璐ワ紝浣跨敤榛樿鏁版嵁
     employees.value = [
-      { label: "寮犱笁", value: "001", dept: "鎶�鏈儴", phone: "13800138001", email: "zhangsan@company.com", status: "0" },
-      { label: "鏉庡洓", value: "002", dept: "閿�鍞儴", phone: "13800138002", email: "lisi@company.com", status: "0" },
-      { label: "鐜嬩簲", value: "003", dept: "浜轰簨閮�", phone: "13800138003", email: "wangwu@company.com", status: "0" }
+      { label: "闄堝織寮�", value: "001", dept: "鎶�鏈儴", phone: "13800138001", email: "chenzhiqiang@company.com", status: "0" },
+      { label: "鍒橀泤濠�", value: "002", dept: "閿�鍞儴", phone: "13800138002", email: "liuyating@company.com", status: "0" },
+      { label: "鐜嬪缓鍥�", value: "003", dept: "浜轰簨閮�", phone: "13800138003", email: "wangjianguo@company.com", status: "0" }
     ];
   } finally {
     employeesLoading.value = false;
diff --git a/src/views/collaborativeApproval/officeSupplies/index.vue b/src/views/collaborativeApproval/officeSupplies/index.vue
new file mode 100644
index 0000000..58ccc76
--- /dev/null
+++ b/src/views/collaborativeApproval/officeSupplies/index.vue
@@ -0,0 +1,670 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+      <template #header>
+        <div class="card-header">
+          <span>鍔炲叕鐗╄祫鐢宠绠$悊</span>
+          <el-button type="primary" @click="showApplyDialog = true">
+            <el-icon><Plus /></el-icon>
+            鏂板缓鐢宠
+          </el-button>
+        </div>
+      </template>
+
+             <!-- 鎼滅储鍖哄煙 -->
+       <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
+         <el-form-item label="鐢宠缂栧彿" prop="applyNo">
+           <el-input
+             v-model="queryParams.applyNo"
+             placeholder="璇疯緭鍏ョ敵璇风紪鍙�"
+             clearable
+             style="width: 200px"
+             @keyup.enter="handleQuery"
+           />
+         </el-form-item>
+         <el-form-item label="鐢宠浜�" prop="applicant">
+           <el-input
+             v-model="queryParams.applicant"
+             placeholder="璇疯緭鍏ョ敵璇蜂汉"
+             clearable
+             style="width: 200px"
+             @keyup.enter="handleQuery"
+           />
+         </el-form-item>
+         <el-form-item label="鐢宠鐘舵��" prop="status">
+           <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 200px">
+             <el-option label="寰呭鎵�" value="pending" />
+             <el-option label="宸查�氳繃" value="approved" />
+             <el-option label="宸叉嫆缁�" value="rejected" />
+             <el-option label="宸插彂鏀�" value="issued" />
+           </el-select>
+         </el-form-item>
+         <el-form-item>
+           <el-button type="primary" @click="handleQuery">
+             <el-icon><Search /></el-icon>
+             鎼滅储
+           </el-button>
+           <el-button @click="resetQuery">
+             <el-icon><Refresh /></el-icon>
+             閲嶇疆
+           </el-button>
+         </el-form-item>
+         <el-form-item>
+            <el-button type="primary" @click="handleExport">
+            <el-icon><Download /></el-icon>
+            瀵煎嚭
+          </el-button>
+          <el-button type="success" @click="handleBatchApprove" :disabled="multipleSelection.length === 0">
+            <el-icon><Check /></el-icon>
+            鎵归噺瀹℃壒
+          </el-button>
+         </el-form-item>
+       </el-form>
+
+      <!-- 琛ㄦ牸鍖哄煙 -->
+      <el-table
+        v-loading="loading"
+        :data="suppliesList"
+        @selection-change="handleSelectionChange"
+        style="width: 100%"
+      >
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="鐢宠缂栧彿" align="center" prop="applyNo" width="180" />
+        <el-table-column label="鐢宠浜�" align="center" prop="applicant" width="120" />
+        <el-table-column label="閮ㄩ棬" align="center" prop="department" width="120" />
+        <el-table-column label="鐗╄祫绫诲瀷" align="center" prop="supplyType" width="120" />
+        <el-table-column label="鐢宠鏁伴噺" align="center" prop="quantity" width="100" />
+        <el-table-column label="鐢宠鍘熷洜" align="center" prop="reason" min-width="200" show-overflow-tooltip />
+        <el-table-column label="鐢宠鐘舵��" align="center" prop="status" width="100">
+          <template #default="scope">
+            <el-tag :type="getStatusType(scope.row.status)">
+              {{ getStatusText(scope.row.status) }}
+            </el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="鐢宠鏃堕棿" align="center" prop="applyTime" width="180" />
+        <el-table-column label="瀹℃壒浜�" align="center" prop="approver" width="120" />
+        <el-table-column label="瀹℃壒鏃堕棿" align="center" prop="approveTime" width="180" />
+        <el-table-column label="鍙戞斁鏃堕棿" align="center" prop="issueTime" width="180" />
+        <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="200">
+          <template #default="scope">
+            <el-button
+              v-if="scope.row.status === 'pending'"
+              type="primary"
+              link
+              @click="handleApprove(scope.row)"
+            >
+              瀹℃壒
+            </el-button>
+            <el-button
+              v-if="scope.row.status === 'approved'"
+              type="success"
+							link
+              @click="handleIssue(scope.row)"
+            >
+              鍙戞斁
+            </el-button>
+            <el-button
+              type="info"
+							link
+              @click="handleDetail(scope.row)"
+            >
+              璇︽儏
+            </el-button>
+            <el-button
+              v-if="scope.row.status === 'pending'"
+              type="danger"
+							link
+              @click="handleDelete(scope.row)"
+            >
+              鍒犻櫎
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <!-- 鍒嗛〉 -->
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-card>
+
+    <!-- 鐢宠瀵硅瘽妗� -->
+    <el-dialog
+      v-model="showApplyDialog"
+      title="鍔炲叕鐗╄祫鐢宠"
+      width="600px"
+      append-to-body
+    >
+      <el-form ref="applyFormRef" :model="applyForm" :rules="applyRules" label-width="100px">
+        <el-form-item label="鐗╄祫绫诲瀷" prop="supplyType">
+          <el-select v-model="applyForm.supplyType" placeholder="璇烽�夋嫨鐗╄祫绫诲瀷" style="width: 100%">
+            <el-option label="鍔炲叕鐢ㄥ搧" value="office" />
+            <el-option label="鐢靛瓙璁惧" value="electronic" />
+            <el-option label="娓呮磥鐢ㄥ搧" value="cleaning" />
+            <el-option label="鍏朵粬" value="other" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鍏蜂綋鐗╁搧" prop="itemName">
+          <el-input v-model="applyForm.itemName" placeholder="璇疯緭鍏ュ叿浣撶墿鍝佸悕绉�" />
+        </el-form-item>
+        <el-form-item label="鐢宠鏁伴噺" prop="quantity">
+          <el-input-number v-model="applyForm.quantity" :min="1" :max="999" style="width: 100%" />
+        </el-form-item>
+        <el-form-item label="鐢宠鍘熷洜" prop="reason">
+          <el-input
+            v-model="applyForm.reason"
+            type="textarea"
+            :rows="3"
+            placeholder="璇疯緭鍏ョ敵璇峰師鍥�"
+          />
+        </el-form-item>
+        <el-form-item label="绱ф�ョ▼搴�" prop="urgency">
+          <el-radio-group v-model="applyForm.urgency">
+            <el-radio label="normal">鏅��</el-radio>
+            <el-radio label="urgent">绱ф��</el-radio>
+            <el-radio label="very_urgent">闈炲父绱ф��</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="showApplyDialog = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="submitApply">纭� 瀹�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <!-- 瀹℃壒瀵硅瘽妗� -->
+    <el-dialog
+      v-model="showApproveDialog"
+      title="瀹℃壒鐢宠"
+      width="500px"
+      append-to-body
+    >
+      <el-form ref="approveFormRef" :model="approveForm" :rules="approveRules" label-width="100px">
+        <el-form-item label="瀹℃壒缁撴灉" prop="approveResult">
+          <el-radio-group v-model="approveForm.approveResult">
+            <el-radio label="approved">閫氳繃</el-radio>
+            <el-radio label="rejected">鎷掔粷</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="瀹℃壒鎰忚" prop="approveComment">
+          <el-input
+            v-model="approveForm.approveComment"
+            type="textarea"
+            :rows="3"
+            placeholder="璇疯緭鍏ュ鎵规剰瑙�"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="showApproveDialog = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="submitApprove">纭� 瀹�</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <!-- 璇︽儏瀵硅瘽妗� -->
+    <el-dialog
+      v-model="showDetailDialog"
+      title="鐢宠璇︽儏"
+      width="700px"
+      append-to-body
+    >
+      <el-descriptions :column="2" border>
+        <el-descriptions-item label="鐢宠缂栧彿">{{ currentDetail.applyNo }}</el-descriptions-item>
+        <el-descriptions-item label="鐢宠浜�">{{ currentDetail.applicant }}</el-descriptions-item>
+        <el-descriptions-item label="閮ㄩ棬">{{ currentDetail.department }}</el-descriptions-item>
+        <el-descriptions-item label="鐗╄祫绫诲瀷">{{ currentDetail.supplyType }}</el-descriptions-item>
+        <el-descriptions-item label="鍏蜂綋鐗╁搧">{{ currentDetail.itemName }}</el-descriptions-item>
+        <el-descriptions-item label="鐢宠鏁伴噺">{{ currentDetail.quantity }}</el-descriptions-item>
+        <el-descriptions-item label="鐢宠鍘熷洜" :span="2">{{ currentDetail.reason }}</el-descriptions-item>
+        <el-descriptions-item label="鐢宠鐘舵��">
+          <el-tag :type="getStatusType(currentDetail.status)">
+            {{ getStatusText(currentDetail.status) }}
+          </el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐢宠鏃堕棿">{{ currentDetail.applyTime }}</el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒浜�">{{ currentDetail.approver || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒鏃堕棿">{{ currentDetail.approveTime || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="瀹℃壒鎰忚" :span="2">{{ currentDetail.approveComment || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="鍙戞斁鏃堕棿">{{ currentDetail.issueTime || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="鍙戞斁浜�">{{ currentDetail.issuer || '-' }}</el-descriptions-item>
+      </el-descriptions>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive, onMounted } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { Plus, Search, Refresh, Download, Check } from '@element-plus/icons-vue'
+
+// 鍝嶅簲寮忔暟鎹�
+const loading = ref(false)
+const showSearch = ref(true)
+const showApplyDialog = ref(false)
+const showApproveDialog = ref(false)
+const showDetailDialog = ref(false)
+const multipleSelection = ref([])
+const total = ref(0)
+const suppliesList = ref([])
+const currentDetail = ref({})
+
+// 鏌ヨ鍙傛暟
+const queryParams = reactive({
+  pageNum: 1,
+  pageSize: 10,
+  applyNo: '',
+  applicant: '',
+  status: ''
+})
+
+// 鐢宠琛ㄥ崟
+const applyForm = reactive({
+  supplyType: '',
+  itemName: '',
+  quantity: 1,
+  reason: '',
+  urgency: 'normal'
+})
+
+// 瀹℃壒琛ㄥ崟
+const approveForm = reactive({
+  approveResult: 'approved',
+  approveComment: ''
+})
+
+// 琛ㄥ崟鏍¢獙瑙勫垯
+const applyRules = {
+  supplyType: [{ required: true, message: '璇烽�夋嫨鐗╄祫绫诲瀷', trigger: 'change' }],
+  itemName: [{ required: true, message: '璇疯緭鍏ュ叿浣撶墿鍝佸悕绉�', trigger: 'blur' }],
+  quantity: [{ required: true, message: '璇疯緭鍏ョ敵璇锋暟閲�', trigger: 'blur' }],
+  reason: [{ required: true, message: '璇疯緭鍏ョ敵璇峰師鍥�', trigger: 'blur' }]
+}
+
+const approveRules = {
+  approveResult: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }],
+  approveComment: [{ required: true, message: '璇疯緭鍏ュ鎵规剰瑙�', trigger: 'blur' }]
+}
+
+// 鍋囨暟鎹�
+const mockData = [
+  {
+    id: 1,
+    applyNo: 'WS20241201001',
+    applicant: '闄堝織寮�',
+    department: '鎶�鏈儴',
+    supplyType: '鍔炲叕鐢ㄥ搧',
+    itemName: 'A4鎵撳嵃绾�',
+    quantity: 10,
+    reason: '鏃ュ父鍔炲叕鎵撳嵃闇�瑕�',
+    status: 'pending',
+    applyTime: '2024-12-01 09:30:00',
+    approver: '',
+    approveTime: '',
+    approveComment: '',
+    issueTime: '',
+    issuer: ''
+  },
+  {
+    id: 2,
+    applyNo: 'WS20241201002',
+    applicant: '鍒橀泤濠�',
+    department: '浜轰簨閮�',
+    supplyType: '鐢靛瓙璁惧',
+    itemName: '鏃犵嚎榧犳爣',
+    quantity: 2,
+    reason: '鏂板憳宸ュ叆鑱岄厤澶�',
+    status: 'approved',
+    applyTime: '2024-12-01 10:15:00',
+    approver: '鐜嬪缓鍥�',
+    approveTime: '2024-12-01 14:20:00',
+    approveComment: '鍚屾剰鐢宠锛岃鍙婃椂鍙戞斁',
+    issueTime: '',
+    issuer: ''
+  },
+  {
+    id: 3,
+    applyNo: 'WS20241201003',
+    applicant: '鐜嬪缓鍥�',
+    department: '璐㈠姟閮�',
+    supplyType: '娓呮磥鐢ㄥ搧',
+    itemName: '娲楁墜娑�',
+    quantity: 5,
+    reason: '鍔炲叕瀹ゆ竻娲佺敤鍝佽ˉ鍏�',
+    status: 'issued',
+    applyTime: '2024-12-01 11:00:00',
+    approver: '鍒橀泤濠�',
+    approveTime: '2024-12-01 15:30:00',
+    approveComment: '鍚屾剰鐢宠',
+    issueTime: '2024-12-01 16:00:00',
+    issuer: '閽变紵鏄�'
+  },
+  {
+    id: 4,
+    applyNo: 'WS20241201004',
+    applicant: '璧典附鍗�',
+    department: '甯傚満閮�',
+    supplyType: '鍏朵粬',
+    itemName: '鏂囦欢澶�',
+    quantity: 20,
+    reason: '椤圭洰璧勬枡鏁寸悊闇�瑕�',
+    status: 'rejected',
+    applyTime: '2024-12-01 13:45:00',
+    approver: '闄堝織寮�',
+    approveTime: '2024-12-01 17:00:00',
+    approveComment: '鏁伴噺杩囧锛屽缓璁噺灏戝埌10涓�',
+    issueTime: '',
+    issuer: ''
+  },
+  {
+    id: 5,
+    applyNo: 'WS20241202001',
+    applicant: '閽变紵鏄�',
+    department: '杩愯惀閮�',
+    supplyType: '鍔炲叕鐢ㄥ搧',
+    itemName: '绛惧瓧绗�',
+    quantity: 50,
+    reason: '閮ㄩ棬鏃ュ父鍔炲叕鐢ㄥ搧琛ュ厖',
+    status: 'pending',
+    applyTime: '2024-12-02 08:30:00',
+    approver: '',
+    approveTime: '',
+    approveComment: '',
+    issueTime: '',
+    issuer: ''
+  },
+  {
+    id: 6,
+    applyNo: 'WS20241202002',
+    applicant: '瀛欐槑鍗�',
+    department: '鎶�鏈儴',
+    supplyType: '鐢靛瓙璁惧',
+    itemName: '閿洏',
+    quantity: 3,
+    reason: '鏂板憳宸ヨ澶囬厤澶�',
+    status: 'approved',
+    applyTime: '2024-12-02 14:20:00',
+    approver: '闄堝織寮�',
+    approveTime: '2024-12-02 16:00:00',
+    approveComment: '鍚屾剰鐢宠',
+    issueTime: '',
+    issuer: ''
+  },
+  {
+    id: 7,
+    applyNo: 'WS20241203001',
+    applicant: '鍛ㄧ編鐜�',
+    department: '浜轰簨閮�',
+    supplyType: '娓呮磥鐢ㄥ搧',
+    itemName: '绾稿肪',
+    quantity: 30,
+    reason: '鍔炲叕鍖哄煙娓呮磥鐢ㄥ搧琛ュ厖',
+    status: 'issued',
+    applyTime: '2024-12-03 09:15:00',
+    approver: '璧典附鍗�',
+    approveTime: '2024-12-03 10:30:00',
+    approveComment: '鍚屾剰鐢宠',
+    issueTime: '2024-12-03 11:00:00',
+    issuer: '瀛欐槑鍗�'
+  },
+  {
+    id: 8,
+    applyNo: 'WS20241203002',
+    applicant: '鍚村織寮�',
+    department: '璐㈠姟閮�',
+    supplyType: '鍏朵粬',
+    itemName: '璁$畻鍣�',
+    quantity: 2,
+    reason: '璐㈠姟鏍哥畻宸ヤ綔闇�瑕�',
+    status: 'rejected',
+    applyTime: '2024-12-03 15:45:00',
+    approver: '鐜嬪缓鍥�',
+    approveTime: '2024-12-03 17:20:00',
+    approveComment: '宸叉湁璁$畻鍣紝鏆備笉闇�瑕�',
+    issueTime: '',
+    issuer: ''
+  }
+]
+
+// 鑾峰彇鍒楄〃鏁版嵁
+const getList = () => {
+  loading.value = true
+  // 妯℃嫙寮傛璇锋眰
+  setTimeout(() => {
+    let filteredData = [...mockData]
+    
+    // 鏍规嵁鏌ヨ鏉′欢杩囨护
+    if (queryParams.applyNo) {
+      filteredData = filteredData.filter(item => 
+        item.applyNo.toLowerCase().includes(queryParams.applyNo.toLowerCase())
+      )
+    }
+    if (queryParams.applicant) {
+      filteredData = filteredData.filter(item => 
+        item.applicant.toLowerCase().includes(queryParams.applicant.toLowerCase())
+      )
+    }
+    if (queryParams.status) {
+      filteredData = filteredData.filter(item => 
+        item.status === queryParams.status
+      )
+    }
+    
+    // 鎸夌敵璇锋椂闂村�掑簭鎺掑垪
+    filteredData.sort((a, b) => new Date(b.applyTime) - new Date(a.applyTime))
+    
+    total.value = filteredData.length
+    suppliesList.value = filteredData.slice(
+      (queryParams.pageNum - 1) * queryParams.pageSize,
+      queryParams.pageNum * queryParams.pageSize
+    )
+    loading.value = false
+  }, 500)
+}
+
+// 鏌ヨ
+const handleQuery = () => {
+  queryParams.pageNum = 1
+  getList()
+}
+
+// 閲嶇疆鏌ヨ
+const resetQuery = () => {
+  queryParams.applyNo = ''
+  queryParams.applicant = ''
+  queryParams.status = ''
+  handleQuery()
+}
+
+// 澶氶��
+const handleSelectionChange = (selection) => {
+  multipleSelection.value = selection
+}
+
+// 鑾峰彇鐘舵�佺被鍨�
+const getStatusType = (status) => {
+  const statusMap = {
+    pending: 'warning',
+    approved: 'success',
+    rejected: 'danger',
+    issued: 'info'
+  }
+  return statusMap[status] || 'info'
+}
+
+// 鑾峰彇鐘舵�佹枃鏈�
+const getStatusText = (status) => {
+  const statusMap = {
+    pending: '寰呭鎵�',
+    approved: '宸查�氳繃',
+    rejected: '宸叉嫆缁�',
+    issued: '宸插彂鏀�'
+  }
+  return statusMap[status] || status
+}
+
+// 鎻愪氦鐢宠
+const submitApply = () => {
+  const newApply = {
+    id: mockData.length + 1,
+    applyNo: `WS${new Date().getTime()}`,
+    applicant: '褰撳墠鐢ㄦ埛',
+    department: '鎶�鏈儴',
+    supplyType: applyForm.supplyType,
+    itemName: applyForm.itemName,
+    quantity: applyForm.quantity,
+    reason: applyForm.reason,
+    status: 'pending',
+    applyTime: new Date().toLocaleString(),
+    approver: '',
+    approveTime: '',
+    approveComment: '',
+    issueTime: '',
+    issuer: ''
+  }
+  
+  mockData.unshift(newApply)
+  showApplyDialog.value = false
+  ElMessage.success('鐢宠鎻愪氦鎴愬姛')
+  getList()
+  
+  // 閲嶇疆琛ㄥ崟
+  Object.assign(applyForm, {
+    supplyType: '',
+    itemName: '',
+    quantity: 1,
+    reason: '',
+    urgency: 'normal'
+  })
+}
+
+// 瀹℃壒
+const handleApprove = (row) => {
+  currentDetail.value = row
+  showApproveDialog.value = true
+}
+
+// 鎻愪氦瀹℃壒
+const submitApprove = () => {
+  const index = mockData.findIndex(item => item.id === currentDetail.value.id)
+  if (index !== -1) {
+    mockData[index].status = approveForm.approveResult
+    mockData[index].approver = '褰撳墠瀹℃壒浜�'
+    mockData[index].approveTime = new Date().toLocaleString()
+    mockData[index].approveComment = approveForm.approveComment
+  }
+  
+  showApproveDialog.value = false
+  ElMessage.success('瀹℃壒瀹屾垚')
+  getList()
+  
+  // 閲嶇疆琛ㄥ崟
+  Object.assign(approveForm, {
+    approveResult: 'approved',
+    approveComment: ''
+  })
+}
+
+// 鍙戞斁
+const handleIssue = (row) => {
+  const index = mockData.findIndex(item => item.id === row.id)
+  if (index !== -1) {
+    mockData[index].status = 'issued'
+    mockData[index].issueTime = new Date().toLocaleString()
+    mockData[index].issuer = '褰撳墠鍙戞斁浜�'
+  }
+  
+  ElMessage.success('鍙戞斁瀹屾垚')
+  getList()
+}
+
+// 鏌ョ湅璇︽儏
+const handleDetail = (row) => {
+  currentDetail.value = row
+  showDetailDialog.value = true
+}
+
+// 鍒犻櫎
+const handleDelete = (row) => {
+  ElMessageBox.confirm('纭鍒犻櫎璇ョ敵璇峰悧锛�', '鎻愮ず', {
+    confirmButtonText: '纭畾',
+    cancelButtonText: '鍙栨秷',
+    type: 'warning'
+  }).then(() => {
+    const index = mockData.findIndex(item => item.id === row.id)
+    if (index !== -1) {
+      mockData.splice(index, 1)
+    }
+    ElMessage.success('鍒犻櫎鎴愬姛')
+    getList()
+  })
+}
+
+// 鎵归噺瀹℃壒
+const handleBatchApprove = () => {
+  if (multipleSelection.value.length === 0) {
+    ElMessage.warning('璇烽�夋嫨瑕佸鎵圭殑璁板綍')
+    return
+  }
+  
+  ElMessageBox.confirm(`纭鎵归噺瀹℃壒閫変腑鐨� ${multipleSelection.value.length} 鏉¤褰曞悧锛焋, '鎻愮ず', {
+    confirmButtonText: '纭畾',
+    cancelButtonText: '鍙栨秷',
+    type: 'warning'
+  }).then(() => {
+    multipleSelection.value.forEach(row => {
+      const index = mockData.findIndex(item => item.id === row.id)
+      if (index !== -1) {
+        mockData[index].status = 'approved'
+        mockData[index].approver = '褰撳墠瀹℃壒浜�'
+        mockData[index].approveTime = new Date().toLocaleString()
+        mockData[index].approveComment = '鎵归噺瀹℃壒閫氳繃'
+      }
+    })
+    ElMessage.success('鎵归噺瀹℃壒瀹屾垚')
+    getList()
+  })
+}
+
+// 瀵煎嚭
+const handleExport = () => {
+  ElMessage.success('瀵煎嚭鍔熻兘寮�鍙戜腑...')
+}
+
+// 椤甸潰鍔犺浇鏃惰幏鍙栨暟鎹�
+onMounted(() => {
+  getList()
+})
+</script>
+
+<style scoped>
+.app-container {
+  padding: 20px;
+}
+
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.mb8 {
+  margin-bottom: 8px;
+}
+
+.dialog-footer {
+  text-align: right;
+}
+
+:deep(.el-descriptions__label) {
+  width: 120px;
+}
+</style>
diff --git a/src/views/collaborativeApproval/planTemplate/index.vue b/src/views/collaborativeApproval/planTemplate/index.vue
new file mode 100644
index 0000000..bfb9cae
--- /dev/null
+++ b/src/views/collaborativeApproval/planTemplate/index.vue
@@ -0,0 +1,750 @@
+<template>
+  <div class="app-container">
+    <!-- 椤堕儴鎿嶄綔鏍� -->
+    <div class="header-actions">
+      <div class="left-actions">
+        <el-select v-model="currentLevel" placeholder="閫夋嫨璁″垝绾у埆" style="width: 150px" @change="handleLevelChange">
+          <el-option label="涓汉璁″垝" value="personal" />
+          <el-option label="灏忕粍璁″垝" value="group" />
+          <el-option label="閮ㄩ棬璁″垝" value="department" />
+          <el-option label="鍏徃璁″垝" value="company" />
+        </el-select>
+        <el-select v-model="currentPeriod" placeholder="閫夋嫨鏃堕棿鍛ㄦ湡" style="width: 120px; margin-left: 10px" @change="handlePeriodChange">
+          <el-option label="鍛ㄨ鍒�" value="week" />
+          <el-option label="鏈堣鍒�" value="month" />
+          <el-option label="骞磋鍒�" value="year" />
+        </el-select>
+        <el-date-picker
+          v-model="currentDate"
+          :type="datePickerType"
+          placeholder="閫夋嫨鏃ユ湡"
+          style="width: 180px; margin-left: 10px"
+          @change="handleDateChange"
+        />
+      </div>
+      <div class="right-actions">
+        <el-button type="primary" @click="handleAddPlan">鏂板璁″垝</el-button>
+        <el-button @click="handleExport">瀵煎嚭璁″垝</el-button>
+        <el-button @click="handleShare">鍏变韩璁″垝</el-button>
+      </div>
+    </div>
+
+    <!-- 璁″垝姒傝鍗$墖 -->
+    <div class="overview-cards">
+      <el-row :gutter="20">
+        <el-col :span="6">
+          <el-card class="overview-card">
+            <div class="card-content">
+              <div class="card-icon personal">
+                <el-icon><User /></el-icon>
+              </div>
+              <div class="card-info">
+                <div class="card-title">涓汉璁″垝</div>
+                <div class="card-number">{{ overviewData.personal.total }}</div>
+                <div class="card-progress">
+                  <el-progress :percentage="overviewData.personal.completion" :stroke-width="6" />
+                </div>
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+        <el-col :span="6">
+          <el-card class="overview-card">
+            <div class="card-content">
+              <div class="card-icon group">
+                <el-icon><UserFilled /></el-icon>
+              </div>
+              <div class="card-info">
+                <div class="card-title">灏忕粍璁″垝</div>
+                <div class="card-number">{{ overviewData.group.total }}</div>
+                <div class="card-progress">
+                  <el-progress :percentage="overviewData.group.completion" :stroke-width="6" />
+                </div>
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+        <el-col :span="6">
+          <el-card class="overview-card">
+            <div class="card-content">
+              <div class="card-icon department">
+                <el-icon><OfficeBuilding /></el-icon>
+              </div>
+              <div class="card-info">
+                <div class="card-title">閮ㄩ棬璁″垝</div>
+                <div class="card-number">{{ overviewData.department.total }}</div>
+                <div class="card-progress">
+                  <el-progress :percentage="overviewData.department.completion" :stroke-width="6" />
+                </div>
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+        <el-col :span="6">
+          <el-card class="overview-card">
+            <div class="card-content">
+              <div class="card-icon company">
+                <el-icon><House /></el-icon>
+              </div>
+              <div class="card-info">
+                <div class="card-title">鍏徃璁″垝</div>
+                <div class="card-number">{{ overviewData.company.total }}</div>
+                <div class="card-progress">
+                  <el-progress :percentage="overviewData.company.completion" :stroke-width="6" />
+                </div>
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+      </el-row>
+    </div>
+
+    <!-- 璁″垝鍒楄〃 -->
+    <div class="plan-content">
+      <el-card>
+        <template #header>
+          <div class="card-header">
+            <span>{{ getCurrentLevelText() }} - {{ getCurrentPeriodText() }}</span>
+            <div>
+              <el-button size="small" @click="handleRefresh">鍒锋柊</el-button>
+              <el-button size="small" @click="handleFilter">绛涢��</el-button>
+            </div>
+          </div>
+        </template>
+        
+        <div class="plan-list">
+          <div v-for="plan in planList" :key="plan.id" class="plan-item">
+            <div class="plan-header">
+              <div class="plan-title">
+                <el-tag :type="getPriorityType(plan.priority)" size="small">{{ getPriorityText(plan.priority) }}</el-tag>
+                <span class="title-text">{{ plan.title }}</span>
+              </div>
+              <div class="plan-actions">
+                <el-button size="small" @click="handleEditPlan(plan)">缂栬緫</el-button>
+                <el-button size="small" @click="handleViewDetail(plan)">璇︽儏</el-button>
+                <el-dropdown @command="handleMoreAction">
+                  <el-button size="small">
+                    鏇村<el-icon class="el-icon--right"><ArrowDown /></el-icon>
+                  </el-button>
+                  <template #dropdown>
+                    <el-dropdown-menu>
+                      <el-dropdown-item command="share">鍏变韩</el-dropdown-item>
+                      <el-dropdown-item command="copy">澶嶅埗</el-dropdown-item>
+                      <el-dropdown-item command="delete" divided>鍒犻櫎</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </template>
+                </el-dropdown>
+              </div>
+            </div>
+            
+            <div class="plan-content">
+              <div class="plan-description">{{ plan.description }}</div>
+              <div class="plan-meta">
+                <div class="meta-item">
+                  <el-icon><Calendar /></el-icon>
+                  <span>{{ plan.startDate }} - {{ plan.endDate }}</span>
+                </div>
+                <div class="meta-item">
+                  <el-icon><User /></el-icon>
+                  <span>{{ plan.assignee }}</span>
+                </div>
+                <div class="meta-item">
+                  <el-icon><Clock /></el-icon>
+                  <span>杩涘害: {{ plan.progress }}%</span>
+                </div>
+                <div class="meta-item">
+                  <el-icon><Flag /></el-icon>
+                  <span>{{ getStatusText(plan.status) }}</span>
+                </div>
+              </div>
+              
+              <div class="plan-progress">
+                <el-progress 
+                  :percentage="plan.progress" 
+                  :color="getProgressColor(plan.progress)"
+                  :stroke-width="8"
+                />
+              </div>
+              
+              <div class="plan-tags">
+                <el-tag v-for="tag in plan.tags" :key="tag" size="small" style="margin-right: 5px">
+                  {{ tag }}
+                </el-tag>
+              </div>
+            </div>
+          </div>
+        </div>
+      </el-card>
+    </div>
+
+    <!-- 鏂板/缂栬緫璁″垝瀵硅瘽妗� -->
+    <el-dialog
+      v-model="planDialogVisible"
+      :title="dialogTitle"
+      width="600px"
+      @close="handleDialogClose"
+    >
+      <el-form :model="planForm" :rules="planRules" ref="planFormRef" label-width="100px">
+        <el-form-item label="璁″垝鏍囬" prop="title">
+          <el-input v-model="planForm.title" placeholder="璇疯緭鍏ヨ鍒掓爣棰�" />
+        </el-form-item>
+        <el-form-item label="璁″垝鎻忚堪" prop="description">
+          <el-input
+            v-model="planForm.description"
+            type="textarea"
+            :rows="3"
+            placeholder="璇疯緭鍏ヨ鍒掓弿杩�"
+          />
+        </el-form-item>
+        <el-form-item label="璁″垝绾у埆" prop="level">
+          <el-select v-model="planForm.level" placeholder="閫夋嫨璁″垝绾у埆" style="width: 100%">
+            <el-option label="涓汉璁″垝" value="personal" />
+            <el-option label="灏忕粍璁″垝" value="group" />
+            <el-option label="閮ㄩ棬璁″垝" value="department" />
+            <el-option label="鍏徃璁″垝" value="company" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鏃堕棿鍛ㄦ湡" prop="period">
+          <el-select v-model="planForm.period" placeholder="閫夋嫨鏃堕棿鍛ㄦ湡" style="width: 100%">
+            <el-option label="鍛ㄨ鍒�" value="week" />
+            <el-option label="鏈堣鍒�" value="month" />
+            <el-option label="骞磋鍒�" value="year" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="寮�濮嬫椂闂�" prop="startDate">
+          <el-date-picker
+            v-model="planForm.startDate"
+            type="date"
+            placeholder="閫夋嫨寮�濮嬫椂闂�"
+            style="width: 100%"
+          />
+        </el-form-item>
+        <el-form-item label="缁撴潫鏃堕棿" prop="endDate">
+          <el-date-picker
+            v-model="planForm.endDate"
+            type="date"
+            placeholder="閫夋嫨缁撴潫鏃堕棿"
+            style="width: 100%"
+          />
+        </el-form-item>
+        <el-form-item label="璐熻矗浜�" prop="assignee">
+          <el-input v-model="planForm.assignee" placeholder="璇疯緭鍏ヨ礋璐d汉" />
+        </el-form-item>
+        <el-form-item label="浼樺厛绾�" prop="priority">
+          <el-select v-model="planForm.priority" placeholder="閫夋嫨浼樺厛绾�" style="width: 100%">
+            <el-option label="楂�" value="high" />
+            <el-option label="涓�" value="medium" />
+            <el-option label="浣�" value="low" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鏍囩">
+          <el-input v-model="planForm.tags" placeholder="璇疯緭鍏ユ爣绛撅紝鐢ㄩ�楀彿鍒嗛殧" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="planDialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary" @click="handleSavePlan">淇濆瓨</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive, computed, onMounted } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import {
+  User,
+  UserFilled,
+  OfficeBuilding,
+  House,
+  Calendar,
+  Clock,
+  Flag,
+  ArrowDown
+} from '@element-plus/icons-vue'
+
+// 鍝嶅簲寮忔暟鎹�
+const currentLevel = ref('personal')
+const currentPeriod = ref('week')
+const currentDate = ref(new Date())
+const planDialogVisible = ref(false)
+const dialogTitle = ref('鏂板璁″垝')
+const planFormRef = ref()
+
+// 琛ㄥ崟鏁版嵁
+const planForm = reactive({
+  title: '',
+  description: '',
+  level: 'personal',
+  period: 'week',
+  startDate: '',
+  endDate: '',
+  assignee: '',
+  priority: 'medium',
+  tags: ''
+})
+
+// 琛ㄥ崟楠岃瘉瑙勫垯
+const planRules = {
+  title: [{ required: true, message: '璇疯緭鍏ヨ鍒掓爣棰�', trigger: 'blur' }],
+  description: [{ required: true, message: '璇疯緭鍏ヨ鍒掓弿杩�', trigger: 'blur' }],
+  level: [{ required: true, message: '璇烽�夋嫨璁″垝绾у埆', trigger: 'change' }],
+  period: [{ required: true, message: '璇烽�夋嫨鏃堕棿鍛ㄦ湡', trigger: 'change' }],
+  startDate: [{ required: true, message: '璇烽�夋嫨寮�濮嬫椂闂�', trigger: 'change' }],
+  endDate: [{ required: true, message: '璇烽�夋嫨缁撴潫鏃堕棿', trigger: 'change' }],
+  assignee: [{ required: true, message: '璇疯緭鍏ヨ礋璐d汉', trigger: 'blur' }],
+  priority: [{ required: true, message: '璇烽�夋嫨浼樺厛绾�', trigger: 'change' }]
+}
+
+// 姒傝鏁版嵁
+const overviewData = reactive({
+  personal: { total: 12, completion: 75 },
+  group: { total: 8, completion: 60 },
+  department: { total: 15, completion: 45 },
+  company: { total: 6, completion: 30 }
+})
+
+// 璁″垝鍒楄〃鏁版嵁
+const planList = ref([
+  {
+    id: 1,
+    title: '浜у搧闇�姹傚垎鏋�',
+    description: '瀵规柊浜у搧杩涜璇︾粏鐨勯渶姹傚垎鏋愬拰甯傚満璋冪爺锛屽埗瀹氫骇鍝佽鍒掓柟妗�',
+    level: 'personal',
+    period: 'week',
+    startDate: '2024-01-15',
+    endDate: '2024-01-21',
+    assignee: '闄堝織寮�',
+    priority: 'high',
+    status: 'in_progress',
+    progress: 80,
+    tags: ['浜у搧', '鍒嗘瀽', '璋冪爺']
+  },
+  {
+    id: 2,
+    title: '鎶�鏈灦鏋勮璁�',
+    description: '璁捐绯荤粺鎶�鏈灦鏋勶紝鍖呮嫭鏁版嵁搴撹璁°�佹帴鍙h璁$瓑',
+    level: 'group',
+    period: 'month',
+    startDate: '2024-01-01',
+    endDate: '2024-01-31',
+    assignee: '鍒橀泤濠�',
+    priority: 'high',
+    status: 'completed',
+    progress: 100,
+    tags: ['鎶�鏈�', '鏋舵瀯', '璁捐']
+  },
+  {
+    id: 3,
+    title: '甯傚満鎺ㄥ箍璁″垝',
+    description: '鍒跺畾骞村害甯傚満鎺ㄥ箍绛栫暐鍜岃惀閿�璁″垝',
+    level: 'department',
+    period: 'year',
+    startDate: '2024-01-01',
+    endDate: '2024-12-31',
+    assignee: '鐜嬪缓鍥�',
+    priority: 'medium',
+    status: 'not_started',
+    progress: 0,
+    tags: ['甯傚満', '鎺ㄥ箍', '钀ラ攢']
+  },
+  {
+    id: 4,
+    title: '鍥㈤槦寤鸿娲诲姩',
+    description: '缁勭粐鍥㈤槦寤鸿娲诲姩锛屾彁鍗囧洟闃熷嚌鑱氬姏鍜屽崗浣滄晥鐜�',
+    level: 'company',
+    period: 'month',
+    startDate: '2024-01-15',
+    endDate: '2024-02-15',
+    assignee: '璧典附鍗�',
+    priority: 'low',
+    status: 'in_progress',
+    progress: 30,
+    tags: ['鍥㈤槦', '寤鸿', '娲诲姩']
+  }
+])
+
+// 璁$畻灞炴��
+const datePickerType = computed(() => {
+  switch (currentPeriod.value) {
+    case 'week':
+      return 'week'
+    case 'month':
+      return 'month'
+    case 'year':
+      return 'year'
+    default:
+      return 'date'
+  }
+})
+
+// 鏂规硶
+const handleLevelChange = (value) => {
+  console.log('璁″垝绾у埆鍙樻洿:', value)
+  // 杩欓噷鍙互鏍规嵁绾у埆绛涢�夋暟鎹�
+}
+
+const handlePeriodChange = (value) => {
+  console.log('鏃堕棿鍛ㄦ湡鍙樻洿:', value)
+  // 杩欓噷鍙互鏍规嵁鍛ㄦ湡绛涢�夋暟鎹�
+}
+
+const handleDateChange = (value) => {
+  console.log('鏃ユ湡鍙樻洿:', value)
+  // 杩欓噷鍙互鏍规嵁鏃ユ湡绛涢�夋暟鎹�
+}
+
+const handleAddPlan = () => {
+  dialogTitle.value = '鏂板璁″垝'
+  planDialogVisible.value = true
+  // 閲嶇疆琛ㄥ崟
+  Object.keys(planForm).forEach(key => {
+    planForm[key] = ''
+  })
+  planForm.level = 'personal'
+  planForm.period = 'week'
+  planForm.priority = 'medium'
+}
+
+const handleEditPlan = (plan) => {
+  dialogTitle.value = '缂栬緫璁″垝'
+  planDialogVisible.value = true
+  // 濉厖琛ㄥ崟鏁版嵁
+  Object.keys(planForm).forEach(key => {
+    if (key === 'tags') {
+      planForm[key] = plan[key].join(', ')
+    } else {
+      planForm[key] = plan[key]
+    }
+  })
+}
+
+const handleViewDetail = (plan) => {
+  ElMessage.info(`鏌ョ湅璁″垝璇︽儏: ${plan.title}`)
+}
+
+const handleMoreAction = (command) => {
+  switch (command) {
+    case 'share':
+      ElMessage.success('璁″垝宸插叡浜�')
+      break
+    case 'copy':
+      ElMessage.success('璁″垝宸插鍒�')
+      break
+    case 'delete':
+      ElMessageBox.confirm('纭畾瑕佸垹闄よ繖涓鍒掑悧锛�', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        ElMessage.success('璁″垝宸插垹闄�')
+      })
+      break
+  }
+}
+
+const handleSavePlan = async () => {
+  try {
+    await planFormRef.value.validate()
+    ElMessage.success('璁″垝淇濆瓨鎴愬姛')
+    planDialogVisible.value = false
+  } catch (error) {
+    console.log('琛ㄥ崟楠岃瘉澶辫触:', error)
+  }
+}
+
+const handleDialogClose = () => {
+  planFormRef.value?.resetFields()
+}
+
+const handleRefresh = () => {
+  ElMessage.success('鏁版嵁宸插埛鏂�')
+}
+
+const handleFilter = () => {
+  ElMessage.info('鎵撳紑绛涢�夐潰鏉�')
+}
+
+const handleExport = () => {
+  ElMessage.success('璁″垝宸插鍑�')
+}
+
+const handleShare = () => {
+  ElMessage.success('璁″垝宸插叡浜�')
+}
+
+const getCurrentLevelText = () => {
+  const levelMap = {
+    personal: '涓汉璁″垝',
+    group: '灏忕粍璁″垝',
+    department: '閮ㄩ棬璁″垝',
+    company: '鍏徃璁″垝'
+  }
+  return levelMap[currentLevel.value] || '涓汉璁″垝'
+}
+
+const getCurrentPeriodText = () => {
+  const periodMap = {
+    week: '鍛ㄨ鍒�',
+    month: '鏈堣鍒�',
+    year: '骞磋鍒�'
+  }
+  return periodMap[currentPeriod.value] || '鍛ㄨ鍒�'
+}
+
+const getPriorityType = (priority) => {
+  const typeMap = {
+    high: 'danger',
+    medium: 'warning',
+    low: 'info'
+  }
+  return typeMap[priority] || 'info'
+}
+
+const getPriorityText = (priority) => {
+  const textMap = {
+    high: '楂�',
+    medium: '涓�',
+    low: '浣�'
+  }
+  return textMap[priority] || '涓�'
+}
+
+const getStatusText = (status) => {
+  const statusMap = {
+    not_started: '鏈紑濮�',
+    in_progress: '杩涜涓�',
+    completed: '宸插畬鎴�',
+    paused: '宸叉殏鍋�'
+  }
+  return statusMap[status] || '鏈煡'
+}
+
+const getProgressColor = (progress) => {
+  if (progress >= 80) return '#67C23A'
+  if (progress >= 50) return '#E6A23C'
+  return '#F56C6C'
+}
+
+onMounted(() => {
+  console.log('澶氱骇璁″垝妯℃澘椤甸潰宸插姞杞�')
+})
+</script>
+
+<style scoped>
+.app-container {
+  padding: 20px;
+  background-color: #f5f5f5;
+  min-height: 100vh;
+}
+
+.header-actions {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20px;
+  background: white;
+  padding: 20px;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.left-actions {
+  display: flex;
+  align-items: center;
+}
+
+.right-actions {
+  display: flex;
+  gap: 10px;
+}
+
+.overview-cards {
+  margin-bottom: 20px;
+}
+
+.overview-card {
+  height: 120px;
+}
+
+.card-content {
+  display: flex;
+  align-items: center;
+  height: 100%;
+}
+
+.card-icon {
+  width: 60px;
+  height: 60px;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-right: 15px;
+  font-size: 24px;
+  color: white;
+}
+
+.card-icon.personal {
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+}
+
+.card-icon.group {
+  background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
+}
+
+.card-icon.department {
+  background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
+}
+
+.card-icon.company {
+  background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
+}
+
+.card-info {
+  flex: 1;
+}
+
+.card-title {
+  font-size: 14px;
+  color: #666;
+  margin-bottom: 5px;
+}
+
+.card-number {
+  font-size: 24px;
+  font-weight: bold;
+  color: #333;
+  margin-bottom: 10px;
+}
+
+.card-progress {
+  width: 100%;
+}
+
+.plan-content {
+  background: white;
+  border-radius: 8px;
+  overflow: hidden;
+}
+
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-weight: bold;
+  color: #333;
+}
+
+.header-actions {
+  display: flex;
+  gap: 10px;
+}
+
+.plan-list {
+  padding: 20px 0;
+}
+
+.plan-item {
+  border: 1px solid #e4e7ed;
+  border-radius: 8px;
+  margin-bottom: 15px;
+  padding: 20px;
+  transition: all 0.3s ease;
+}
+
+.plan-item:hover {
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+  transform: translateY(-2px);
+}
+
+.plan-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 15px;
+}
+
+.plan-title {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+
+.title-text {
+  font-size: 16px;
+  font-weight: bold;
+  color: #333;
+}
+
+.plan-actions {
+  display: flex;
+  gap: 10px;
+}
+
+.plan-content {
+  margin-bottom: 15px;
+}
+
+.plan-description {
+  color: #666;
+  margin-bottom: 15px;
+  line-height: 1.6;
+}
+
+.plan-meta {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 20px;
+  margin-bottom: 15px;
+}
+
+.meta-item {
+  display: flex;
+  align-items: center;
+  gap: 5px;
+  color: #666;
+  font-size: 14px;
+}
+
+.plan-progress {
+  margin-bottom: 15px;
+}
+
+.plan-tags {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 5px;
+}
+
+.dialog-footer {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .header-actions {
+    flex-direction: column;
+    gap: 15px;
+  }
+  
+  .left-actions {
+    flex-wrap: wrap;
+    gap: 10px;
+  }
+  
+  .plan-meta {
+    flex-direction: column;
+    gap: 10px;
+  }
+  
+  .plan-header {
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 10px;
+  }
+}
+</style>
diff --git a/src/views/collaborativeApproval/sealManagement/index.vue b/src/views/collaborativeApproval/sealManagement/index.vue
index 0aabd52..a906f5e 100644
--- a/src/views/collaborativeApproval/sealManagement/index.vue
+++ b/src/views/collaborativeApproval/sealManagement/index.vue
@@ -335,7 +335,7 @@
   {
     id: 'SEAL001',
     title: '鍚堝悓鐢ㄥ嵃鐢宠',
-    applicant: '寮犱笁',
+    applicant: '闄堝織寮�',
     department: '閿�鍞儴',
     sealType: '鍚堝悓涓撶敤绔�',
     applyTime: '2024-01-15 10:30:00',
@@ -345,7 +345,7 @@
   {
     id: 'SEAL002',
     title: '璐㈠姟鎶ュ憡鐢ㄥ嵃',
-    applicant: '鐜嬩簲',
+    applicant: '鐜嬪缓鍥�',
     department: '璐㈠姟閮�',
     sealType: '璐㈠姟涓撶敤绔�',
     applyTime: '2024-01-14 14:20:00',
@@ -355,7 +355,7 @@
   {
     id: 'SEAL003',
     title: '鍏徃绔犵▼鐢ㄥ嵃',
-    applicant: '瀛欎竷',
+    applicant: '瀛欐槑鍗�',
     department: '娉曞姟閮�',
     sealType: '鍏珷',
     applyTime: '2024-01-13 09:15:00',
@@ -407,9 +407,9 @@
 ])
 
 const readStatusList = ref([
-  { employee: '寮犱笁', department: '閿�鍞儴', readTime: '2024-01-11 10:30:00', confirmTime: '2024-01-11 10:35:00', status: 'confirmed' },
-  { employee: '鏉庡洓', department: '鎶�鏈儴', readTime: '2024-01-11 14:20:00', confirmTime: '', status: 'unconfirmed' },
-  { employee: '鐜嬩簲', department: '璐㈠姟閮�', readTime: '2024-01-12 09:15:00', confirmTime: '2024-01-12 09:20:00', status: 'confirmed' }
+  { employee: '闄堝織寮�', department: '閿�鍞儴', readTime: '2024-01-11 10:30:00', confirmTime: '2024-01-11 10:35:00', status: 'confirmed' },
+  { employee: '鍒橀泤濠�', department: '鎶�鏈儴', readTime: '2024-01-11 14:20:00', confirmTime: '', status: 'unconfirmed' },
+  { employee: '鐜嬪缓鍥�', department: '璐㈠姟閮�', readTime: '2024-01-12 09:15:00', confirmTime: '2024-01-12 09:20:00', status: 'confirmed' }
 ])
 
 // 鏂规硶
diff --git a/src/views/collaborativeApproval/warningSystem/index.vue b/src/views/collaborativeApproval/warningSystem/index.vue
index b04c583..f6c7f6e 100644
--- a/src/views/collaborativeApproval/warningSystem/index.vue
+++ b/src/views/collaborativeApproval/warningSystem/index.vue
@@ -96,7 +96,7 @@
           levelText: '绾㈣壊棰勮',
           status: 'pending',
           statusText: '寰呭鐞�',
-          responsible: '寮犵粡鐞�',
+          responsible: '闄堝織寮�',
           description: 'A椤圭洰棰勭畻鎵ц鐜囧凡杈�95%锛岄璁″皢瓒呭嚭棰勭畻鑼冨洿銆�',
           impact: '褰卞搷椤圭洰鏁翠綋璐㈠姟鎸囨爣锛屽彲鑳藉鑷撮」鐩簭鎹�',
           suggestions: '鏆傚仠闈炲繀瑕佹敮鍑猴紝浼樺寲璧勬簮閰嶇疆锛岀敵璇烽绠楄皟鏁�'
@@ -148,7 +148,7 @@
           levelText: '绾㈣壊棰勮',
           status: 'pending',
           statusText: '寰呭鐞�',
-          responsible: '闄堟�荤洃',
+          responsible: '闄堝織寮�',
           description: '浜у搧D鍦ㄥ鎴风幇鍦哄嚭鐜拌川閲忛棶棰樸��',
           impact: '褰卞搷瀹㈡埛婊℃剰搴︼紝鍙兘閫犳垚缁忔祹鎹熷け',
           suggestions: '绔嬪嵆鍙洖闂浜у搧锛屽垎鏋愬師鍥狅紝鍒跺畾鏀硅繘鎺柦'
diff --git a/src/views/procurementManagement/qualityInspection/index.vue b/src/views/procurementManagement/qualityInspection/index.vue
index 7225795..c562253 100644
--- a/src/views/procurementManagement/qualityInspection/index.vue
+++ b/src/views/procurementManagement/qualityInspection/index.vue
@@ -160,7 +160,7 @@
     qualifiedQuantity: 240,
     unqualifiedQuantity: 10,
     inspectionTime: '2024-12-01 16:30:00',
-    inspector: '寮犱笁',
+    inspector: '闄堝織寮�',
     remark: '璐ㄦ瀹屾垚'
   }
 ]
diff --git a/src/views/salesManagement/customerManagement/index.vue b/src/views/salesManagement/customerManagement/index.vue
index 131124b..f66b5f4 100644
--- a/src/views/salesManagement/customerManagement/index.vue
+++ b/src/views/salesManagement/customerManagement/index.vue
@@ -140,9 +140,9 @@
           <el-col :span="12">
             <el-form-item label="璐熻矗涓氬姟鍛�" prop="salesperson">
               <el-select v-model="form.salesperson" placeholder="璇烽�夋嫨涓氬姟鍛�" style="width: 100%">
-                <el-option label="寮犱笁" value="寮犱笁"></el-option>
-                <el-option label="鏉庡洓" value="鏉庡洓"></el-option>
-                <el-option label="鐜嬩簲" value="鐜嬩簲"></el-option>
+                <el-option label="闄堝織寮�" value="闄堝織寮�"></el-option>
+                <el-option label="鍒橀泤濠�" value="鍒橀泤濠�"></el-option>
+                <el-option label="鐜嬪缓鍥�" value="鐜嬪缓鍥�"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -176,9 +176,9 @@
         </el-form-item>
         <el-form-item label="閲嶆柊鍒嗛厤">
           <el-select v-model="newSalesperson" placeholder="璇烽�夋嫨鏂颁笟鍔″憳" style="width: 100%">
-            <el-option label="寮犱笁" value="寮犱笁"></el-option>
-            <el-option label="鏉庡洓" value="鏉庡洓"></el-option>
-            <el-option label="鐜嬩簲" value="鐜嬩簲"></el-option>
+            <el-option label="闄堝織寮�" value="闄堝織寮�"></el-option>
+            <el-option label="鍒橀泤濠�" value="鍒橀泤濠�"></el-option>
+            <el-option label="鐜嬪缓鍥�" value="鐜嬪缓鍥�"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="鍒嗛厤鍘熷洜">
@@ -213,34 +213,34 @@
   {
     id: 1,
     name: '涓婃捣绉戞妧鏈夐檺鍏徃',
-    contactPerson: '寮犵粡鐞�',
+    contactPerson: '闄堝織寮�',
     phone: '021-12345678',
     email: 'zhang@shanghai-tech.com',
     region: '鍗庝笢鍖�',
     level: 'VIP瀹㈡埛',
-    salesperson: '寮犱笁',
+    salesperson: '闄堝織寮�',
     status: '娲昏穬'
   },
   {
     id: 2,
     name: '娣卞湷鐢靛瓙鏈夐檺鍏徃',
-    contactPerson: '鏉庢��',
+    contactPerson: '鍒橀泤濠�',
     phone: '0755-87654321',
     email: 'li@shenzhen-elec.com',
     region: '鍗庡崡鍖�',
     level: '閲嶈瀹㈡埛',
-    salesperson: '鏉庡洓',
+    salesperson: '鍒橀泤濠�',
     status: '娲昏穬'
   },
   {
     id: 3,
     name: '鍖椾含璐告槗鍏徃',
-    contactPerson: '鐜嬬粡鐞�',
+    contactPerson: '鐜嬪缓鍥�',
     phone: '010-11223344',
     email: 'wang@beijing-trade.com',
     region: '鍗庡寳鍖�',
     level: '鏅�氬鎴�',
-    salesperson: '鐜嬩簲',
+    salesperson: '鐜嬪缓鍥�',
     status: '娼滃湪'
   }
 ])
diff --git a/src/views/salesManagement/orderManagement/index.vue b/src/views/salesManagement/orderManagement/index.vue
index 54148b9..aac840f 100644
--- a/src/views/salesManagement/orderManagement/index.vue
+++ b/src/views/salesManagement/orderManagement/index.vue
@@ -104,9 +104,9 @@
           <el-col :span="12">
             <el-form-item label="涓氬姟鍛�" prop="salesperson">
               <el-select v-model="form.salesperson" placeholder="璇烽�夋嫨涓氬姟鍛�" style="width: 100%">
-                <el-option label="寮犱笁" value="寮犱笁"></el-option>
-                <el-option label="鏉庡洓" value="鏉庡洓"></el-option>
-                <el-option label="鐜嬩簲" value="鐜嬩簲"></el-option>
+                <el-option label="闄堝織寮�" value="闄堝織寮�"></el-option>
+                <el-option label="鍒橀泤濠�" value="鍒橀泤濠�"></el-option>
+                <el-option label="鐜嬪缓鍥�" value="鐜嬪缓鍥�"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -209,9 +209,9 @@
         </el-form-item>
         <el-form-item label="杞崟缁�" prop="newSalesperson">
           <el-select v-model="newSalesperson" placeholder="璇烽�夋嫨鏂颁笟鍔″憳" style="width: 100%">
-            <el-option label="寮犱笁" value="寮犱笁"></el-option>
-            <el-option label="鏉庡洓" value="鏉庡洓"></el-option>
-            <el-option label="鐜嬩簲" value="鐜嬩簲"></el-option>
+            <el-option label="闄堝織寮�" value="闄堝織寮�"></el-option>
+            <el-option label="鍒橀泤濠�" value="鍒橀泤濠�"></el-option>
+            <el-option label="鐜嬪缓鍥�" value="鐜嬪缓鍥�"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="杞崟鍘熷洜" prop="transferReason">
@@ -247,7 +247,7 @@
     id: 1,
     orderNo: 'ORD202312001',
     customer: '涓婃捣绉戞妧鏈夐檺鍏徃',
-    salesperson: '寮犱笁',
+    salesperson: '闄堝織寮�',
     orderDate: '2023-12-01',
     amount: 50000.00,
     paymentMethod: '鍏ㄦ鍒颁粯',
@@ -258,7 +258,7 @@
     id: 2,
     orderNo: 'ORD202312002',
     customer: '娣卞湷鐢靛瓙鏈夐檺鍏徃',
-    salesperson: '鏉庡洓',
+    salesperson: '鍒橀泤濠�',
     orderDate: '2023-12-02',
     amount: 35000.00,
     paymentMethod: '鍒嗘湡浠樻',
@@ -269,7 +269,7 @@
     id: 3,
     orderNo: 'ORD202312003',
     customer: '鍖椾含璐告槗鍏徃',
-    salesperson: '鐜嬩簲',
+    salesperson: '鐜嬪缓鍥�',
     orderDate: '2023-12-03',
     amount: 28000.00,
     paymentMethod: '鏈堢粨',
diff --git a/src/views/salesManagement/salespersonManagement/index.vue b/src/views/salesManagement/salespersonManagement/index.vue
index 894d631..3169b79 100644
--- a/src/views/salesManagement/salespersonManagement/index.vue
+++ b/src/views/salesManagement/salespersonManagement/index.vue
@@ -199,9 +199,9 @@
 const salespersonList = ref([
   {
     id: 1,
-    name: '寮犱笁',
+    name: '闄堝織寮�',
     phone: '13800138001',
-    email: 'zhangsan@company.com',
+    email: 'chenzhiqiang@company.com',
     department: '閿�鍞儴',
     position: '閿�鍞粡鐞�',
     hireDate: '2023-01-15',
@@ -210,9 +210,9 @@
   },
   {
     id: 2,
-    name: '鏉庡洓',
+    name: '鍒橀泤濠�',
     phone: '13800138002',
-    email: 'lisi@company.com',
+    email: 'liuyating@company.com',
     department: '甯傚満閮�',
     position: '甯傚満涓撳憳',
     hireDate: '2023-03-20',
@@ -221,9 +221,9 @@
   },
   {
     id: 3,
-    name: '鐜嬩簲',
+    name: '鐜嬪缓鍥�',
     phone: '13800138003',
-    email: 'wangwu@company.com',
+    email: 'wangjianguo@company.com',
     department: '瀹㈡湇閮�',
     position: '瀹㈡湇涓荤',
     hireDate: '2022-11-10',
diff --git a/src/views/tool/qrCodeDemo/index.vue b/src/views/tool/qrCodeDemo/index.vue
index d62af71..380760a 100644
--- a/src/views/tool/qrCodeDemo/index.vue
+++ b/src/views/tool/qrCodeDemo/index.vue
@@ -56,7 +56,7 @@
             </template>
             <div class="demo-content">
               <p>鐢熸垚鍖呭惈鑱旂郴淇℃伅鐨勪簩缁寸爜</p>
-              <p class="demo-text">濮撳悕锛氬紶涓�<br>鐢佃瘽锛�13800138000</p>
+              <p class="demo-text">濮撳悕锛氶檲蹇楀己<br>鐢佃瘽锛�13800138000</p>
             </div>
           </el-card>
         </el-col>
@@ -216,7 +216,7 @@
         typeName = '缃戝潃浜岀淮鐮�'
         break
       case 'contact':
-        content = 'BEGIN:VCARD\nVERSION:3.0\nFN:寮犱笁\nTEL:13800138000\nEND:VCARD'
+        content = 'BEGIN:VCARD\nVERSION:3.0\nFN:闄堝織寮篭nTEL:13800138000\nEND:VCARD'
         typeName = '鑱旂郴鏂瑰紡浜岀淮鐮�'
         break
       case 'product':

--
Gitblit v1.9.3