From 1be6a8fc84764d7e816737b365f9e1c8869db9a7 Mon Sep 17 00:00:00 2001
From: zhang_nuo <zhang_12370@163.com>
Date: 星期二, 11 八月 2026 11:55:13 +0800
Subject: [PATCH] 提交意博凯信删除各个模块表格的时分秒

---
 src/views/equipmentManagement/upkeep/index.vue                                               | 1283 +++++++++++++++-----------------
 src/views/personnelManagement/socialSecuritySet/index.vue                                    |    2 
 src/views/equipmentManagement/spareParts/index.vue                                           |  930 ++++++++++-------------
 src/views/collaborativeApproval/rulesRegulationsManagement/index.vue                         |    2 
 src/views/basicData/parameterMaintenance/index.vue                                           |    3 
 src/components/PIMTable/PIMTable.vue                                                         |    5 
 src/views/inventoryManagement/stockManagement/Qualified.vue                                  |    8 
 src/views/financialManagement/receivable/salesReturn.vue                                     |    2 
 src/views/collaborativeApproval/sealManagement/index.vue                                     |    2 
 src/views/inventoryManagement/dispatchLog/Record.vue                                         |    6 
 src/views/officeProcessAutomation/ApproveManage/approve-template/approveTemplateConstants.js |   39 
 src/views/productionManagement/productionReporting/index.vue                                 |    1 
 src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue                           |   12 
 src/views/inventoryManagement/stockManagement/Record.vue                                     |    6 
 src/views/inventoryManagement/stockManagement/Unqualified.vue                                |    8 
 src/views/collaborativeApproval/knowledgeBase/index.vue                                      |    1 
 src/views/financialManagement/payable/purchaseReturn.vue                                     |    2 
 src/views/inventoryManagement/receiptManagement/Record.vue                                   |    8 
 src/views/safeProduction/dangerInvestigation/index.vue                                       |    6 
 19 files changed, 1,079 insertions(+), 1,247 deletions(-)

diff --git a/src/components/PIMTable/PIMTable.vue b/src/components/PIMTable/PIMTable.vue
index 74615af..0045336 100644
--- a/src/components/PIMTable/PIMTable.vue
+++ b/src/components/PIMTable/PIMTable.vue
@@ -112,6 +112,10 @@
             {{ formatters(scope.row[item.prop], item.formatData) }}
           </el-tag>
         </div>
+        <!-- 鏃堕棿绫诲瀷 -->
+        <div v-else-if="item.dataType === 'date'">
+          {{ scope.row[item.prop] ? dayjs(scope.row[item.prop]).format('YYYY-MM-DD') : '' }}
+        </div>
         <!-- 鎸夐挳 -->
         <div v-else-if="item.dataType == 'action'"
              @click.stop>
@@ -204,6 +208,7 @@
   import pagination from "./Pagination.vue";
   import { computed, ref, inject, getCurrentInstance } from "vue";
   import { ElMessage } from "element-plus";
+  import dayjs from "dayjs";
 
   // 鑾峰彇鍏ㄥ眬鐨� uploadHeader
   const { proxy } = getCurrentInstance();
diff --git a/src/views/basicData/parameterMaintenance/index.vue b/src/views/basicData/parameterMaintenance/index.vue
index 38ddd4f..01b604d 100644
--- a/src/views/basicData/parameterMaintenance/index.vue
+++ b/src/views/basicData/parameterMaintenance/index.vue
@@ -302,6 +302,7 @@
     {
       label: "鍒涘缓鏃堕棿",
       prop: "createTime",
+      dataType:"date"
     },
     {
       label: "鎿嶄綔",
@@ -374,7 +375,7 @@
   const formCreateTimeDate = computed({
     get: () => (formData.createTime ? String(formData.createTime).split(" ")[0] : ""),
     set: (value) => {
-      formData.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
+        formData.createTime = value ? dayjs(value).format("YYYY-MM-DD") : "";
     },
   });
   // const productTypes = ref([]);
diff --git a/src/views/collaborativeApproval/knowledgeBase/index.vue b/src/views/collaborativeApproval/knowledgeBase/index.vue
index f50d06b..05a1d1c 100644
--- a/src/views/collaborativeApproval/knowledgeBase/index.vue
+++ b/src/views/collaborativeApproval/knowledgeBase/index.vue
@@ -555,6 +555,7 @@
     label: "鍒涘缓鏃堕棿",
     prop: "createTime",
     width: 180,
+    dataType:"date"
   },
   {
     dataType: "action",
diff --git a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
index f7ba9d9..128b7ed 100644
--- a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
+++ b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
@@ -309,7 +309,7 @@
     },
     { label: "鐗堟湰", prop: "version", width: 120 },
     { label: "鍙戝竷浜�", prop: "createUserName", width: 120 },
-    { label: "鍙戝竷鏃堕棿", prop: "createTime", width: 180 },
+    { label: "鍙戝竷鏃堕棿", prop: "createTime", width: 180,dataType: "date" },
     {
       label: "鐘舵��",
       prop: "status",
diff --git a/src/views/collaborativeApproval/sealManagement/index.vue b/src/views/collaborativeApproval/sealManagement/index.vue
index a06f6d5..7be9ef9 100644
--- a/src/views/collaborativeApproval/sealManagement/index.vue
+++ b/src/views/collaborativeApproval/sealManagement/index.vue
@@ -252,7 +252,7 @@
     formatData: (v) => getSealTypeText(v),
     formatType: () => 'info'
   },
-  { label: '鐢宠鏃堕棿', prop: 'createTime', width: 180 },
+  { label: '鐢宠鏃堕棿', prop: 'createTime', width: 180,dataType: "date" },
   {
     label: '鐘舵��',
     prop: 'status',
diff --git a/src/views/equipmentManagement/spareParts/index.vue b/src/views/equipmentManagement/spareParts/index.vue
index c25736f..8f8c674 100644
--- a/src/views/equipmentManagement/spareParts/index.vue
+++ b/src/views/equipmentManagement/spareParts/index.vue
@@ -1,26 +1,26 @@
 <template>
-	<div class="spare-part-category">
-		<el-tabs v-model="activeTab" @tab-change="handleTabChange">
-			<el-tab-pane label="澶囦欢鍒楄〃" name="list">
-				<div class="search_form">
-					<el-form :inline="true" :model="queryParams" class="search-form">
-						<el-form-item label="澶囦欢鍚嶇О">
-							<el-input
-								v-model="queryParams.name"
-								placeholder="璇疯緭鍏ュ浠跺悕绉�"
-								clearable
-								style="width: 240px"
-							/>
-						</el-form-item>
-						<el-form-item>
-							<el-button type="primary" @click="handleQuery">鏌ヨ</el-button>
-							<el-button @click="resetQuery">閲嶇疆</el-button>
-						</el-form-item>
-					</el-form>
-					<div>
-						<el-button type="primary" @click="addCategory">鏂板</el-button>
-					</div>
-				</div>
+  <div class="spare-part-category">
+    <el-tabs v-model="activeTab" @tab-change="handleTabChange">
+      <el-tab-pane label="澶囦欢鍒楄〃" name="list">
+        <div class="search_form">
+          <el-form :inline="true" :model="queryParams" class="search-form">
+            <el-form-item label="澶囦欢鍚嶇О">
+              <el-input
+                v-model="queryParams.name"
+                placeholder="璇疯緭鍏ュ浠跺悕绉�"
+                clearable
+                style="width: 240px"
+              />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="handleQuery">鏌ヨ</el-button>
+              <el-button @click="resetQuery">閲嶇疆</el-button>
+            </el-form-item>
+          </el-form>
+          <div>
+            <el-button type="primary" @click="addCategory">鏂板</el-button>
+          </div>
+        </div>
 				<div class="table_list">
 					<PIMTable
 						rowKey="id"
@@ -36,87 +36,83 @@
 						</template>
 					</PIMTable>
 				</div>
-				
-				<el-dialog title="鍒嗙被绠$悊" v-model="dialogVisible" width="60%">
-					<el-form :model="form" :rules="rules" ref="formRef" label-width="100px">
-						<el-form-item label="璁惧" prop="deviceLedgerIds">
-							<el-select
-								v-model="form.deviceLedgerIds"
-								placeholder="璇烽�夋嫨璁惧"
-								filterable
-								default-first-option
-								:reserve-keyword="false"
-								multiple
-								style="width: 100%"
-							>
-								<el-option
-									v-for="(item, index) in deviceOptions"
-									:key="index"
-									:label="item.deviceName"
-									:value="item.id"
-								></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="澶囦欢鍚嶇О" prop="name">
-							<el-input v-model="form.name"></el-input>
-						</el-form-item>
-						<el-form-item label="澶囦欢缂栧彿" prop="sparePartsNo">
-							<el-input v-model="form.sparePartsNo"></el-input>
-						</el-form-item>
-						<el-form-item label="鏁伴噺" prop="quantity">
-							<el-input type="number" v-model="form.quantity"></el-input>
-						</el-form-item>
-						<el-form-item label="鐘舵��" prop="status">
-							<el-select v-model="form.status" placeholder="璇烽�夋嫨鐘舵��">
-								<el-option label="姝e父" value="姝e父"></el-option>
-								<el-option label="绂佺敤" value="绂佺敤"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="鎻忚堪" prop="description">
-							<el-input v-model="form.description"></el-input>
-						</el-form-item>
-						<el-form-item label="浠锋牸" prop="price">
-							<el-input-number
-								v-model="form.price"
-								placeholder="璇疯緭鍏ヤ环鏍�"
-								:min="0"
-								:step="0.01"
-								:precision="2"
-								style="width: 100%"
-							></el-input-number>
-						</el-form-item>
-					</el-form>
-					<template #footer>
+
+        <el-dialog title="鍒嗙被绠$悊" v-model="dialogVisible" width="60%">
+          <el-form :model="form" :rules="rules" ref="formRef" label-width="100px">
+            <el-form-item label="璁惧" prop="deviceLedgerIds">
+              <el-select
+                v-model="form.deviceLedgerIds"
+                placeholder="璇烽�夋嫨璁惧"
+                filterable
+                default-first-option
+                :reserve-keyword="false"
+                multiple
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(item, index) in deviceOptions"
+                  :key="index"
+                  :label="item.deviceName"
+                  :value="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="澶囦欢鍚嶇О" prop="name">
+              <el-input v-model="form.name"></el-input>
+            </el-form-item>
+            <el-form-item label="澶囦欢缂栧彿" prop="sparePartsNo">
+              <el-input v-model="form.sparePartsNo"></el-input>
+            </el-form-item>
+            <el-form-item label="鏁伴噺" prop="quantity">
+              <el-input type="number" v-model="form.quantity"></el-input>
+            </el-form-item>
+            <el-form-item label="鐘舵��" prop="status">
+              <el-select v-model="form.status" placeholder="璇烽�夋嫨鐘舵��">
+                <el-option label="姝e父" value="姝e父"></el-option>
+                <el-option label="绂佺敤" value="绂佺敤"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鎻忚堪" prop="description">
+              <el-input v-model="form.description"></el-input>
+            </el-form-item>
+            <el-form-item label="浠锋牸" prop="price">
+              <el-input-number
+                v-model="form.price"
+                placeholder="璇疯緭鍏ヤ环鏍�"
+                :min="0"
+                :step="0.01"
+                :precision="2"
+                style="width: 100%"
+              ></el-input-number>
+            </el-form-item>
+          </el-form>
+          <template #footer>
             <span class="dialog-footer">
               <el-button type="primary" @click="submitForm" :loading="formLoading">纭畾</el-button>
               <el-button @click="dialogVisible = false" :disabled="formLoading">鍙栨秷</el-button>
             </span>
-					</template>
-				</el-dialog>
-			</el-tab-pane>
-			
-			<el-tab-pane label="澶囦欢棰嗙敤璁板綍" name="usage">
-				<div class="search_form">
-					<el-form :inline="true" :model="usageQuery" class="search-form">
-						<el-form-item label="澶囦欢鍚嶇О">
-							<el-input v-model="usageQuery.sparePartsName" placeholder="璇疯緭鍏ュ浠跺悕绉�" clearable style="width: 240px" />
-						</el-form-item>
-						<el-form-item label="鏉ユ簮">
-							<el-select v-model="usageQuery.sourceType" placeholder="璇烽�夋嫨" clearable style="width: 200px">
-								<el-option label="缁翠慨" :value="0" />
-								<el-option label="淇濆吇" :value="1" />
-								<el-option label="鐩存帴鍑哄簱" :value="2" />
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<el-button type="primary" @click="handleUsageQuery">鏌ヨ</el-button>
-							<el-button @click="resetUsageQuery">閲嶇疆</el-button>
-						</el-form-item>
-					</el-form>
-					<div>
-						<el-button type="primary" @click="openRequisitionDialog">鐩存帴鍑哄簱</el-button>
-					</div>
-				</div>
+          </template>
+        </el-dialog>
+      </el-tab-pane>
+
+      <el-tab-pane label="澶囦欢棰嗙敤璁板綍" name="usage">
+        <div class="search_form">
+          <el-form :inline="true" :model="usageQuery" class="search-form">
+            <el-form-item label="澶囦欢鍚嶇О">
+              <el-input v-model="usageQuery.sparePartsName" placeholder="璇疯緭鍏ュ浠跺悕绉�" clearable style="width: 240px" />
+            </el-form-item>
+            <el-form-item label="鏉ユ簮">
+              <el-select v-model="usageQuery.sourceType" placeholder="璇烽�夋嫨" clearable style="width: 200px">
+                <el-option label="缁翠慨" :value="0" />
+                <el-option label="淇濆吇" :value="1" />
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="handleUsageQuery">鏌ヨ</el-button>
+              <el-button @click="resetUsageQuery">閲嶇疆</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
 				<div class="table_list">
 					<PIMTable
 						rowKey="rowKey"
@@ -128,63 +124,9 @@
 						@pagination="handleUsagePageChange"
 					/>
 				</div>
-			</el-tab-pane>
-		</el-tabs>
-		
-		<!-- 鐩存帴鍑哄簱寮圭獥 -->
-		<el-dialog title="鐩存帴鍑哄簱" v-model="requisitionDialogVisible" width="500px">
-			<el-form :model="requisitionForm" :rules="requisitionRules" ref="requisitionFormRef" label-width="100px">
-				<el-form-item label="璁惧閫夋嫨" prop="deviceLedgerId">
-					<el-select
-						v-model="requisitionForm.deviceLedgerId"
-						placeholder="璇烽�夋嫨璁惧"
-						filterable
-						clearable
-						style="width: 100%"
-					>
-						<el-option
-							v-for="item in requisitionDeviceOptions"
-							:key="item.id"
-							:label="item.deviceName"
-							:value="item.id"
-						/>
-					</el-select>
-				</el-form-item>
-				<el-form-item label="澶囦欢閫夋嫨" prop="sparePartsId">
-					<el-select
-						v-model="requisitionForm.sparePartsId"
-						placeholder="璇烽�夋嫨澶囦欢"
-						filterable
-						clearable
-						style="width: 100%"
-						@change="onRequisitionSparePartChange"
-					>
-						<el-option
-							v-for="item in requisitionSparePartsOptions"
-							:key="item.id"
-							:label="`${item.name}锛堝簱瀛�: ${item.quantity}锛塦"
-							:value="item.id"
-						/>
-					</el-select>
-				</el-form-item>
-				<el-form-item label="棰嗙敤鏁伴噺" prop="quantity">
-					<el-input-number
-						v-model="requisitionForm.quantity"
-						:min="1"
-						:max="selectedSparePartMaxQty"
-						style="width: 100%"
-					/>
-				</el-form-item>
-				<el-form-item label="澶囨敞" prop="remark">
-					<el-input v-model="requisitionForm.remark" placeholder="璇疯緭鍏ュ娉�" />
-				</el-form-item>
-			</el-form>
-			<template #footer>
-				<el-button type="primary" @click="submitRequisition" :loading="requisitionLoading">纭畾</el-button>
-				<el-button @click="requisitionDialogVisible = false">鍙栨秷</el-button>
-			</template>
-		</el-dialog>
-	</div>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
 </template>
 
 <script setup>
@@ -193,7 +135,7 @@
 import { getSparePartsList, addSparePart, editSparePart, delSparePart } from "@/api/equipmentManagement/spareParts";
 import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
 import PIMTable from "@/components/PIMTable/PIMTable.vue";
-import { getSparePartsUsagePage, outboundSpareParts } from "@/api/equipmentManagement/sparePartsUsage";
+import { getSparePartsUsagePage } from "@/api/equipmentManagement/sparePartsUsage";
 
 // 鍔犺浇鐘舵��
 const loading = ref(false);
@@ -215,456 +157,376 @@
 const formRef = ref(null);
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
-	name: ''
+  name: ''
 });
 // 鍒嗛〉鍙傛暟
 const pagination = reactive({
-	current: 1,
-	size: 10,
-	total: 0
+  current: 1,
+  size: 10,
+  total: 0
 });
 
 // 澶囦欢棰嗙敤璁板綍
 const usageLoading = ref(false);
 const usageQuery = reactive({
-	sparePartsName: "",
-	sourceType: "",
+  sparePartsName: "",
+  sourceType: "",
 });
 const usagePagination = reactive({
-	current: 1,
-	size: 10,
-	total: 0,
+  current: 1,
+  size: 10,
+  total: 0,
 });
 const usageTableData = ref([]);
 const usageColumns = ref([
-	{ label: "鏉ユ簮", prop: "sourceText" },
-	{ label: "鍗曟嵁/璁板綍ID", prop: "sourceId" },
-	{ label: "璁惧鍚嶇О", prop: "deviceName" },
-	{ label: "澶囦欢鍚嶇О", prop: "sparePartsName" },
-	{ label: "棰嗙敤鏁伴噺", prop: "quantity" },
-	{ label: "鎿嶄綔浜�", prop: "operator" },
-	{ label: "鏃堕棿", prop: "createTime" },
+  { label: "鏉ユ簮", prop: "sourceText" },
+  { label: "鍗曟嵁/璁板綍ID", prop: "sourceId" },
+  { label: "璁惧鍚嶇О", prop: "deviceName" },
+  { label: "澶囦欢鍚嶇О", prop: "sparePartsName" },
+  { label: "棰嗙敤鏁伴噺", prop: "quantity" },
+  { label: "鎿嶄綔浜�", prop: "operator" },
+  { label: "鏃堕棿", prop: "createTime",dataType: "date"},
 ]);
 
 const handleTabChange = async (name) => {
-	if (name === "usage") {
-		usagePagination.current = 1;
-		await fetchUsageData();
-	}
+  if (name === "usage") {
+    usagePagination.current = 1;
+    await fetchUsageData();
+  }
 };
 const columns = ref([
-	{
-		label: "璁惧鍚嶇О",
-		prop: "deviceNameStr",
-	},
-	{
-		label: "澶囦欢鍚嶇О",
-		prop: "name",
-	},
-	{
-		label: "澶囦欢缂栧彿",
-		prop: "sparePartsNo",
-	},
-	{
-		label: "鐘舵��",
-		prop: "status",
-		slot: "status",
-		dataType: "slot",
-	},
-	{
-		label: "浠锋牸",
-		prop: "price",
-	},
-	{
-		label: "鏁伴噺",
-		prop: "quantity",
-	},
-	{
-		label: "鎻忚堪",
-		prop: "description",
-	},
-	{
-		label: "鎿嶄綔",
-		prop: "operation",
-		width: 150,
-		fixed: 'right',
-		align: "center",
-		dataType: "action",
-		operation: [
-			{
-				name: "缂栬緫",
-				clickFun: (row) => {
-					editCategory(row)
-				},
-			},
-			{
-				name: "鍒犻櫎",
-				clickFun: (row) => {
-					deleteCategory(row.id)
-				},
-			},
-		],
-	},
+  {
+    label: "璁惧鍚嶇О",
+    prop: "deviceNameStr",
+  },
+  {
+    label: "澶囦欢鍚嶇О",
+    prop: "name",
+  },
+  {
+    label: "澶囦欢缂栧彿",
+    prop: "sparePartsNo",
+  },
+  {
+    label: "鐘舵��",
+    prop: "status",
+    slot: "status",
+    dataType: "slot",
+  },
+  {
+    label: "浠锋牸",
+    prop: "price",
+  },
+  {
+    label: "鏁伴噺",
+    prop: "quantity",
+  },
+  {
+    label: "鎻忚堪",
+    prop: "description",
+  },
+  {
+    label: "鎿嶄綔",
+    prop: "operation",
+    width: 150,
+    fixed: 'right',
+    align: "center",
+    dataType: "action",
+    operation: [
+      {
+        name: "缂栬緫",
+        clickFun: (row) => {
+          editCategory(row)
+        },
+      },
+      {
+        name: "鍒犻櫎",
+        clickFun: (row) => {
+          deleteCategory(row.id)
+        },
+      },
+    ],
+  },
 ]);
 // 琛ㄥ崟鏁版嵁
 const form = reactive({
-	id:'',
-	name: '',
-	sparePartsNo: '',
-	status: '',
-	description: '',
-	deviceLedgerIds: [],
-	price: null
+  id:'',
+  name: '',
+  sparePartsNo: '',
+  status: '',
+  description: '',
+  deviceLedgerIds: [],
+  price: null
 });
 
 // 琛ㄥ崟楠岃瘉瑙勫垯
 const rules = reactive({
-	name: [
-		{ required: true, message: '璇疯緭鍏ュ浠跺悕绉�', trigger: 'blur' }
-	],
-	sparePartsNo: [
-		{ required: true, message: '璇疯緭鍏ュ浠剁紪鍙�', trigger: 'blur' }
-	],
-	quantity:[
-		{ required: true, message: '璇疯緭鍏ユ暟閲�', trigger: 'blur' }
-	],
-	status: [
-		{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'change' }
-	],
-	deviceLedgerIds: [
-		{
-			required: true,
-			message: '璇烽�夋嫨璁惧',
-			trigger: 'change',
-			validator: (rule, value, callback) => {
-				if (operationType.value === 'add' && (!value || value.length === 0)) {
-					callback(new Error('璇烽�夋嫨璁惧'));
-				} else {
-					callback();
-				}
-			}
-		}
-	]
+  name: [
+    { required: true, message: '璇疯緭鍏ュ浠跺悕绉�', trigger: 'blur' }
+  ],
+  sparePartsNo: [
+    { required: true, message: '璇疯緭鍏ュ浠剁紪鍙�', trigger: 'blur' }
+  ],
+  quantity:[
+    { required: true, message: '璇疯緭鍏ユ暟閲�', trigger: 'blur' }
+  ],
+  status: [
+    { required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'change' }
+  ],
+  deviceLedgerIds: [
+    { 
+      required: true, 
+      message: '璇烽�夋嫨璁惧', 
+      trigger: 'change',
+      validator: (rule, value, callback) => {
+        if (operationType.value === 'add' && (!value || value.length === 0)) {
+          callback(new Error('璇烽�夋嫨璁惧'));
+        } else {
+          callback();
+        }
+      }
+    }
+  ]
 });
 // 鑾峰彇缂╄繘閲�
 const getIndentation = (row) => {
-	// 杩欓噷绠�鍗曡繑鍥� 20锛屽彲鏍规嵁瀹為檯闇�姹傚疄鐜板眰绾х缉杩涢�昏緫
-	return 20;
+  // 杩欓噷绠�鍗曡繑鍥� 20锛屽彲鏍规嵁瀹為檯闇�姹傚疄鐜板眰绾х缉杩涢�昏緫
+  return 20; 
 };
 // 瀹氫箟 buildTree 鍑芥暟
 const buildTree = (flatData) => {
-	const map = {};
-	const result = [];
-	if(flatData){
-		return result;
-	}
-	flatData.forEach(item => {
-		map[item.id] = { ...item, children: [] };
-	});
-	flatData.forEach(item => {
-		if (item.parentId === null || !map[item.parentId]) {
-			result.push(map[item.id]);
-		} else {
-			map[item.parentId].children.push(map[item.id]);
-		}
-	});
-	return result;
+  const map = {};
+  const result = [];
+  if(flatData){
+    return result;
+  }
+  flatData.forEach(item => {
+    map[item.id] = { ...item, children: [] };
+  });
+  flatData.forEach(item => {
+    if (item.parentId === null || !map[item.parentId]) {
+      result.push(map[item.id]);
+    } else {
+      map[item.parentId].children.push(map[item.id]);
+    }
+  });
+  return result;
 };
 // 鑾峰彇鍒楄〃鏁版嵁
 const fetchListData = async () => {
-	loading.value = true;
-	try {
-		const params = {
-			current: pagination.current,
-			size: pagination.size
-		};
-		if (queryParams.name) {
-			params.name = queryParams.name;
-		}
-		const res = await getSparePartsList(params);
-		if (res.code === 200) {
-			renderTableData.value = res.data.records || [];
-			categories.value = res.data.records || [];
-			pagination.total = res.data.total || 0;
-		}
-	} catch (error) {
+  loading.value = true;
+  try {
+    const params = {
+      current: pagination.current,
+      size: pagination.size
+    };
+    if (queryParams.name) {
+      params.name = queryParams.name;
+    }
+    const res = await getSparePartsList(params);
+    if (res.code === 200) {
+      renderTableData.value = res.data.records || [];
+      categories.value = res.data.records || [];
+      pagination.total = res.data.total || 0;
+    }
+  } catch (error) {
 		loading.value = false;
-	} finally {
-		loading.value = false;
-	}
+  } finally {
+    loading.value = false;
+  }
 }
 
 const fetchUsageData = async () => {
-	usageLoading.value = true;
-	try {
-		const res = await getSparePartsUsagePage({
-			current: usagePagination.current,
-			size: usagePagination.size,
-			sparePartsName: usageQuery.sparePartsName || undefined,
-			sourceType: usageQuery.sourceType || undefined,
-		});
-		if (res?.code === 200) {
-			const records = res?.data?.records || [];
-			usagePagination.total = res?.data?.total || 0;
-			usageTableData.value = records.map((r, idx) => ({
-				rowKey: r.id ?? `${usagePagination.current}-${idx}`,
-				...r,
-				sourceText: r.sourceText === "" ? "-" : r.sourceText,
-			}));
-		} else {
-			usagePagination.total = 0;
-			usageTableData.value = [];
-		}
-	} finally {
-		usageLoading.value = false;
-	}
+  usageLoading.value = true;
+  try {
+    const res = await getSparePartsUsagePage({
+      current: usagePagination.current,
+      size: usagePagination.size,
+      sparePartsName: usageQuery.sparePartsName || undefined,
+      sourceType: usageQuery.sourceType || undefined,
+    });
+    if (res?.code === 200) {
+      const records = res?.data?.records || [];
+      usagePagination.total = res?.data?.total || 0;
+      usageTableData.value = records.map((r, idx) => ({
+        rowKey: r.id ?? `${usagePagination.current}-${idx}`,
+        ...r,
+        sourceText: r.sourceText === "" ? "-" : r.sourceText,
+      }));
+    } else {
+      usagePagination.total = 0;
+      usageTableData.value = [];
+    }
+  } finally {
+    usageLoading.value = false;
+  }
 };
 
 const handleUsageQuery = () => {
-	usagePagination.current = 1;
-	fetchUsageData();
+  usagePagination.current = 1;
+  fetchUsageData();
 };
 const resetUsageQuery = () => {
-	usageQuery.sparePartsName = "";
-	usageQuery.sourceType = "";
-	usagePagination.current = 1;
-	fetchUsageData();
+  usageQuery.sparePartsName = "";
+  usageQuery.sourceType = "";
+  usagePagination.current = 1;
+  fetchUsageData();
 };
 const handleUsagePageChange = (obj) => {
-	usagePagination.current = obj.page;
-	usagePagination.size = obj.limit;
-	fetchUsageData();
+  usagePagination.current = obj.page;
+  usagePagination.size = obj.limit;
+  fetchUsageData();
 };
 
 // 鏌ヨ
 const handleQuery = () => {
-	pagination.current = 1;
-	fetchListData();
+  pagination.current = 1;
+  fetchListData();
 }
 
 // 閲嶇疆鏌ヨ
 const resetQuery = () => {
-	queryParams.name = '';
-	pagination.current = 1;
-	fetchListData();
+  queryParams.name = '';
+  pagination.current = 1;
+  pagination.size = 10;
+  fetchListData();
 }
 
-// 鍒嗛〉鍙樺寲
+// 鍒嗛〉澶у皬鏀瑰彉
 const handleSizeChange = ({ page, limit }) => {
-	pagination.current = page;
-	pagination.size = limit;
-	fetchListData();
+  pagination.current = page;
+  pagination.size = limit;
+  fetchListData();
+}
+
+// 褰撳墠椤垫敼鍙�
+const handleCurrentChange = (current) => {
+  pagination.current = current;
+  fetchListData();
 }
 
 // 鍔犺浇璁惧鍒楄〃锛堝湪鎵撳紑寮规鏃惰皟鐢級
 const loadDeviceName = async () => {
-	try {
-		const { data } = await getDeviceLedger();
-		deviceOptions.value = data || [];
-	} catch (error) {
-		ElMessage.error('鑾峰彇璁惧鍒楄〃澶辫触');
-	}
+  try {
+    const { data } = await getDeviceLedger();
+    deviceOptions.value = data || [];
+  } catch (error) {
+    ElMessage.error('鑾峰彇璁惧鍒楄〃澶辫触');
+  }
 };
 
 // 鏂板鍒嗙被
 const addCategory = async () => {
-	await loadDeviceName();
-	form.id = '';
-	form.name = '';
-	form.sparePartsNo = '';
-	form.status = '';
-	form.description = '';
-	form.deviceLedgerIds = [];
-	form.quantity = undefined;
-	form.price = null;
-	operationType.value = 'add'
-	dialogVisible.value = true;
+  await loadDeviceName();
+  form.id = '';
+  form.name = '';
+  form.sparePartsNo = '';
+  form.status = '';
+  form.description = '';
+  form.deviceLedgerIds = [];
+  form.quantity = undefined;
+  form.price = null;
+  operationType.value = 'add'
+  dialogVisible.value = true;
 };
 
 // 缂栬緫鍒嗙被
 const editCategory = async (row) => {
-	await loadDeviceName();
-	Object.assign(form, row);
-	// 濡傛灉鍚庣杩斿洖鐨勬槸 deviceIds 瀛楃涓诧紝闇�瑕佽浆鎹负鏁扮粍
-	if (row.deviceIds && typeof row.deviceIds === 'string') {
-		// 纭繚ID绫诲瀷涓庤澶囬�夐」涓殑ID绫诲瀷涓�鑷�
-		const deviceIdsArray = row.deviceIds.split(',').map(id => id.trim()).filter(id => id);
-		// 濡傛灉璁惧閫夐」涓殑ID鏄暟瀛楃被鍨嬶紝鍒欒浆鎹负鏁板瓧
-		if (deviceOptions.value.length > 0 && typeof deviceOptions.value[0].id === 'number') {
-			form.deviceLedgerIds = deviceIdsArray.map(id => Number(id)).filter(id => !isNaN(id));
-		} else {
-			form.deviceLedgerIds = deviceIdsArray;
-		}
-	} else if (row.deviceIds && Array.isArray(row.deviceIds)) {
-		form.deviceLedgerIds = row.deviceIds;
-	} else {
-		form.deviceLedgerIds = [];
-	}
-	operationType.value = 'edit'
-	dialogVisible.value = true;
+  await loadDeviceName();
+  Object.assign(form, row);
+  // 濡傛灉鍚庣杩斿洖鐨勬槸 deviceIds 瀛楃涓诧紝闇�瑕佽浆鎹负鏁扮粍
+  if (row.deviceIds && typeof row.deviceIds === 'string') {
+    // 纭繚ID绫诲瀷涓庤澶囬�夐」涓殑ID绫诲瀷涓�鑷�
+    const deviceIdsArray = row.deviceIds.split(',').map(id => id.trim()).filter(id => id);
+    // 濡傛灉璁惧閫夐」涓殑ID鏄暟瀛楃被鍨嬶紝鍒欒浆鎹负鏁板瓧
+    if (deviceOptions.value.length > 0 && typeof deviceOptions.value[0].id === 'number') {
+      form.deviceLedgerIds = deviceIdsArray.map(id => Number(id)).filter(id => !isNaN(id));
+    } else {
+      form.deviceLedgerIds = deviceIdsArray;
+    }
+  } else if (row.deviceIds && Array.isArray(row.deviceIds)) {
+    form.deviceLedgerIds = row.deviceIds;
+  } else {
+    form.deviceLedgerIds = [];
+  }
+  operationType.value = 'edit'
+  dialogVisible.value = true;
 };
 
 // 鍒犻櫎鍒嗙被
 const deleteCategory = async (id) => {
-	try {
-		await ElMessageBox.confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ュ垎绫伙紝鏄惁缁х画?', '鎻愮ず', {
-			confirmButtonText: '纭畾',
-			cancelButtonText: '鍙栨秷',
-			type: 'warning'
-		});
-		loading.value = true;
-		const res = await delSparePart(id);
-		if (res.code === 200) {
-			ElMessage.success('鍒犻櫎鎴愬姛');
-			fetchListData();
-		} else {
-			ElMessage.error(res.message || '鍒犻櫎澶辫触');
-		}
-	} catch (error) {
-		if (error !== 'cancel') {
-			ElMessage.error('鍒犻櫎澶辫触');
-		}
-	} finally {
-		loading.value = false;
-	}
+  try {
+    await ElMessageBox.confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ュ垎绫伙紝鏄惁缁х画?', '鎻愮ず', {
+      confirmButtonText: '纭畾',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning'
+    });
+    loading.value = true;
+    const res = await delSparePart(id);
+    if (res.code === 200) {
+      ElMessage.success('鍒犻櫎鎴愬姛');
+      fetchListData();
+    } else {
+      ElMessage.error(res.message || '鍒犻櫎澶辫触');
+    }
+  } catch (error) {
+    if (error !== 'cancel') {
+      ElMessage.error('鍒犻櫎澶辫触');
+    }
+  } finally {
+    loading.value = false;
+  }
 };
 
 // 鎻愪氦琛ㄥ崟
 const submitForm = async () => {
-	if (!formRef.value) return;
-	try {
-		await formRef.value.validate();
-		formLoading.value = true;
-		
-		// 鏋勫缓鎻愪氦鏁版嵁
-		const submitData = {
-			...form,
-			deviceIds: form.deviceLedgerIds && form.deviceLedgerIds.length > 0
-				? form.deviceLedgerIds.join(',')
-				: ''
-		};
-		
-		// 鍒犻櫎涓嶉渶瑕佺殑瀛楁
-		delete submitData.deviceLedgerIds;
-		
-		if (operationType.value === 'edit') {
-			let res = await editSparePart(submitData);
-			if (res.code === 200) {
-				ElMessage.success('缂栬緫鎴愬姛');
-				dialogVisible.value = false;
-				fetchListData();
-			}
-		} else {
-			let res = await addSparePart(submitData);
-			if (res.code === 200) {
-				ElMessage.success('鏂板鎴愬姛');
-				dialogVisible.value = false;
-				fetchListData();
-			}
-		}
-	} catch (error) {
-		ElMessage.error('璇峰~鍐欏畬鏁磋〃鍗曚俊鎭�');
-	} finally {
-		formLoading.value = false;
-	}
-};
-
-// 鐩存帴鍑哄簱
-const requisitionDialogVisible = ref(false);
-const requisitionLoading = ref(false);
-const requisitionFormRef = ref(null);
-const requisitionDeviceOptions = ref([]);
-const requisitionSparePartsOptions = ref([]);
-const selectedSparePartMaxQty = ref(1);
-const requisitionForm = reactive({
-	deviceLedgerId: null,
-	sparePartsId: null,
-	quantity: 1,
-	remark: '',
-});
-const requisitionRules = {
-	sparePartsId: [{ required: true, message: '璇烽�夋嫨澶囦欢', trigger: 'change' }],
-	quantity: [{ required: true, message: '璇疯緭鍏ラ鐢ㄦ暟閲�', trigger: 'blur' }],
-};
-
-const loadRequisitionOptions = async () => {
-	try {
-		const [deviceRes, spareRes] = await Promise.all([
-			getDeviceLedger(),
-			getSparePartsList({ current: 1, size: 9999 }),
-		]);
-		requisitionDeviceOptions.value = deviceRes.data || [];
-		requisitionSparePartsOptions.value = spareRes.data?.records || [];
-	} catch (e) {
-		ElMessage.error('鍔犺浇閫夐」澶辫触');
-	}
-};
-
-const openRequisitionDialog = async () => {
-	requisitionForm.deviceLedgerId = null;
-	requisitionForm.sparePartsId = null;
-	requisitionForm.quantity = 1;
-	requisitionForm.remark = '';
-	selectedSparePartMaxQty.value = 1;
-	await loadRequisitionOptions();
-	requisitionDialogVisible.value = true;
-};
-
-const onRequisitionSparePartChange = (val) => {
-	const selected = requisitionSparePartsOptions.value.find(item => item.id === val);
-	selectedSparePartMaxQty.value = selected ? selected.quantity : 1;
-	if (requisitionForm.quantity > selectedSparePartMaxQty.value) {
-		requisitionForm.quantity = selectedSparePartMaxQty.value;
-	}
-};
-
-const submitRequisition = async () => {
-	if (!requisitionFormRef.value) return;
-	try {
-		await requisitionFormRef.value.validate();
-	} catch {
-		return;
-	}
-	if (requisitionForm.quantity <= 0) {
-		ElMessage.warning('棰嗙敤鏁伴噺蹇呴』澶т簬0');
-		return;
-	}
-	const selected = requisitionSparePartsOptions.value.find(item => item.id === requisitionForm.sparePartsId);
-	if (selected && requisitionForm.quantity > selected.quantity) {
-		ElMessage.warning(`搴撳瓨涓嶈冻锛屽綋鍓嶅簱瀛樹负 ${selected.quantity}`);
-		return;
-	}
-	requisitionLoading.value = true;
-	try {
-		const res = await outboundSpareParts({
-			deviceLedgerId: requisitionForm.deviceLedgerId || undefined,
-			sparePartsId: requisitionForm.sparePartsId,
-			quantity: requisitionForm.quantity,
-			remark: requisitionForm.remark || undefined,
-		});
-		if (res.code === 200) {
-			ElMessage.success('棰嗙敤鎴愬姛');
-			requisitionDialogVisible.value = false;
-			fetchUsageData();
-		} else {
-			ElMessage.error(res.msg || '棰嗙敤澶辫触');
-		}
-	} catch {
-		ElMessage.error('棰嗙敤澶辫触');
-	} finally {
-		requisitionLoading.value = false;
-	}
+  if (!formRef.value) return;
+  try {
+    await formRef.value.validate();
+    formLoading.value = true;
+    
+    // 鏋勫缓鎻愪氦鏁版嵁
+    const submitData = {
+      ...form,
+      deviceIds: form.deviceLedgerIds && form.deviceLedgerIds.length > 0 
+        ? form.deviceLedgerIds.join(',') 
+        : ''
+    };
+    
+    // 鍒犻櫎涓嶉渶瑕佺殑瀛楁
+    delete submitData.deviceLedgerIds;
+    
+    if (operationType.value === 'edit') {
+      let res = await editSparePart(submitData);
+      if (res.code === 200) {
+        ElMessage.success('缂栬緫鎴愬姛');
+        dialogVisible.value = false;
+        fetchListData();
+      }
+    } else {
+      let res = await addSparePart(submitData);
+      if (res.code === 200) {
+        ElMessage.success('鏂板鎴愬姛');
+        dialogVisible.value = false;
+        fetchListData();
+      }
+    }
+  } catch (error) {
+    ElMessage.error('璇峰~鍐欏畬鏁磋〃鍗曚俊鎭�');
+  } finally {
+    formLoading.value = false;
+  }
 };
 
 // 缁勪欢鎸傝浇鏃惰幏鍙栧垪琛ㄦ暟鎹�
 onMounted(() => {
-	fetchListData();
+  fetchListData();
 });
 </script>
 
 <style scoped>
 .spare-part-category {
-	padding: 20px;
+  padding: 20px;
 }
 .search_form {
 	display: flex;
@@ -672,38 +534,38 @@
 	justify-content: space-between;
 }
 .table_list {
-	margin-top: unset;
+  margin-top: unset;
 }
 
 .pagination-container {
-	margin-top: 20px;
-	display: flex;
-	justify-content: flex-end;
+  margin-top: 20px;
+  display: flex;
+  justify-content: flex-end;
 }
 
 .el-table__header-wrapper th {
-	background-color: #f5f7fa;
-	font-weight: 600;
+  background-color: #f5f7fa;
+  font-weight: 600;
 }
 
 .el-table__row:hover > td {
-	background-color: #fafafa;
+  background-color: #fafafa;
 }
 
 /* 鎸夐挳缁勬牱寮� */
 .actions > div {
-	display: flex;
-	gap: 10px;
+  display: flex;
+  gap: 10px;
 }
 
 /* 纭繚琛ㄦ牸涓殑鎿嶄綔鎸夐挳涓嶄細琚埅鏂� */
 .el-table-column--fixed-right .el-button {
-	margin: 0 2px;
+  margin: 0 2px;
 }
 
 /* 鏍戝舰鑺傜偣鍐呭鏍峰紡 */
 .nested-tree .el-tree-node__expand-icon {
-	font-size: 12px;
-	margin-right: 4px;
+  font-size: 12px;
+  margin-right: 4px;
 }
 </style>
\ No newline at end of file
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 9b92281..d2d9355 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -1,726 +1,653 @@
 <template>
-	<div class="app-container">
-		<el-tabs v-model="activeTab"
-		         @tab-change="handleTabChange">
-			<!-- 淇濆吇浠诲姟tab -->
-			<el-tab-pane label="淇濆吇浠诲姟"
-			             name="scheduled">
-				<div class="search_form">
-					<el-form :model="scheduledFilters"
-					         :inline="true">
-						<el-form-item label="浠诲姟鍚嶇О">
-							<el-input v-model="scheduledFilters.taskName"
-							          style="width: 240px"
-							          placeholder="璇疯緭鍏ヤ换鍔″悕绉�"
-							          clearable
-							          :prefix-icon="Search"
-							          @change="getScheduledTableData" />
-						</el-form-item>
-						<el-form-item label="浠诲姟鐘舵��">
-							<el-select v-model="scheduledFilters.status"
-							           placeholder="璇烽�夋嫨浠诲姟鐘舵��"
-							           clearable
-							           style="width: 200px">
-								<el-option label="鍚敤"
-								           value="1" />
-								<el-option label="鍋滅敤"
-								           value="0" />
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<el-button type="primary"
-							           @click="getScheduledTableData">鎼滅储</el-button>
-							<el-button @click="resetScheduledFilters">閲嶇疆</el-button>
-						</el-form-item>
-					</el-form>
-				</div>
-				<div class="table_list">
-					<div class="actions">
-						<el-text class="mx-1"
-						         size="large">淇濆吇浠诲姟</el-text>
-						<div>
-							<el-button type="primary"
-							           icon="Plus"
-							           @click="addScheduledTask">
-								鏂板浠诲姟
-							</el-button>
-							<el-button type="danger"
-							           icon="Delete"
-							           :disabled="scheduledMultipleList.length <= 0"
-							           @click="delScheduledTaskByIds(scheduledMultipleList.map((item) => item.id))">
-								鎵归噺鍒犻櫎
-							</el-button>
-						</div>
-					</div>
-					<PIMTable rowKey="id"
-					          isSelection
-					          :column="scheduledColumns"
-					          :tableData="scheduledDataList"
-					          :page="{
+  <div class="app-container">
+    <el-tabs v-model="activeTab"
+             @tab-change="handleTabChange">
+      <!-- 淇濆吇浠诲姟tab -->
+      <el-tab-pane label="淇濆吇浠诲姟"
+                   name="scheduled">
+        <div class="search_form">
+          <el-form :model="scheduledFilters"
+                   :inline="true">
+            <el-form-item label="浠诲姟鍚嶇О">
+              <el-input v-model="scheduledFilters.taskName"
+                        style="width: 240px"
+                        placeholder="璇疯緭鍏ヤ换鍔″悕绉�"
+                        clearable
+                        :prefix-icon="Search"
+                        @change="getScheduledTableData" />
+            </el-form-item>
+            <el-form-item label="浠诲姟鐘舵��">
+              <el-select v-model="scheduledFilters.status"
+                         placeholder="璇烽�夋嫨浠诲姟鐘舵��"
+                         clearable
+                         style="width: 200px">
+                <el-option label="鍚敤"
+                           value="1" />
+                <el-option label="鍋滅敤"
+                           value="0" />
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary"
+                         @click="getScheduledTableData">鎼滅储</el-button>
+              <el-button @click="resetScheduledFilters">閲嶇疆</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div class="table_list">
+          <div class="actions">
+            <el-text class="mx-1"
+                     size="large">淇濆吇浠诲姟</el-text>
+            <div>
+              <el-button type="primary"
+                         icon="Plus"
+                         @click="addScheduledTask">
+                鏂板浠诲姟
+              </el-button>
+              <el-button type="danger"
+                         icon="Delete"
+                         :disabled="scheduledMultipleList.length <= 0"
+                         @click="delScheduledTaskByIds(scheduledMultipleList.map((item) => item.id))">
+                鎵归噺鍒犻櫎
+              </el-button>
+            </div>
+          </div>
+          <PIMTable rowKey="id"
+                    isSelection
+                    :column="scheduledColumns"
+                    :tableData="scheduledDataList"
+                    :page="{
               current: scheduledPagination.currentPage,
               size: scheduledPagination.pageSize,
               total: scheduledPagination.total,
             }"
-					          @selection-change="handleScheduledSelectionChange"
-					          @pagination="changeScheduledPage">
-						<template #statusRef="{ row }">
-							<el-tag v-if="row.status === 1"
-							        type="success">鍚敤</el-tag>
-							<el-tag v-if="row.status === 0"
-							        type="danger">鍋滅敤</el-tag>
-						</template>
-						<template #operation="{ row }">
-							<el-button type="primary"
-							           link
-							           @click="editScheduledTask(row)">
-								缂栬緫
-							</el-button>
-							<el-button type="danger"
-							           link
-							           @click="delScheduledTaskByIds(row.id)">
-								鍒犻櫎
-							</el-button>
-						</template>
-					</PIMTable>
-				</div>
-			</el-tab-pane>
-			<!-- 淇濆吇璁板綍tab锛堝師璁惧淇濆吇椤甸潰锛� -->
-			<el-tab-pane label="淇濆吇璁板綍"
-			             name="record">
-				<div class="search_form">
-					<el-form :model="filters"
-					         :inline="true">
-						<el-form-item label="璁惧鍚嶇О">
-							<el-input v-model="filters.deviceName"
-							          style="width: 240px"
-							          placeholder="璇疯緭鍏ヨ澶囧悕绉�"
-							          clearable
-							          :prefix-icon="Search"
-							          @change="getTableData" />
-						</el-form-item>
-						<el-form-item label="璁″垝淇濆吇鏃ユ湡">
-							<el-date-picker v-model="filters.maintenancePlanTime"
-							                type="date"
-							                placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡"
-							                size="default"
-							                @change="(date) => handleDateChange(date,2)" />
-						</el-form-item>
-						<el-form-item label="瀹為檯淇濆吇鏃ユ湡">
-							<el-date-picker v-model="filters.maintenanceActuallyTime"
-							                type="date"
-							                placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡"
-							                size="default"
-							                @change="(date) => handleDateChange(date,1)" />
-						</el-form-item>
-						<el-form-item label="瀹為檯淇濆吇浜�">
-							<el-input v-model="filters.maintenanceActuallyName"
-							          style="width: 240px"
-							          placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉"
-							          clearable
-							          :prefix-icon="Search"
-							          @change="getTableData" />
-						</el-form-item>
-						<el-form-item>
-							<el-button type="primary"
-							           @click="getTableData">鎼滅储</el-button>
-							<el-button @click="resetFilters">閲嶇疆</el-button>
-						</el-form-item>
-					</el-form>
-				</div>
-				<div class="table_list">
-					<div class="actions">
-						<el-text class="mx-1"
-						         size="large">淇濆吇璁板綍</el-text>
-						<div>
-							<el-button type="success"
-							           icon="Van"
-							           @click="addPlan">
-								鏂板璁″垝
-							</el-button>
-							<el-button @click="handleOut">
-								瀵煎嚭
-							</el-button>
-							<el-button type="danger"
-							           icon="Delete"
-							           :disabled="multipleList.length <= 0"
-							           @click="delRepairByIds(multipleList.map((item) => item.id))">
-								鎵归噺鍒犻櫎
-							</el-button>
-						</div>
-					</div>
-					<el-table
-						:data="groupedDataList"
-						border
-						v-loading="tableLoading"
-						@selection-change="handleSelectionChange"
-						:expand-row-keys="expandedRowKeys"
-						:row-key="(row) => row.date"
-						@expand-change="onExpandChange"
-					>
-						<el-table-column type="selection" width="55" />
-						<el-table-column type="expand">
-							<template #default="props">
-								<el-table :data="props.row.children" border row-key="id">
-									<el-table-column label="璁惧鍚嶇О" prop="deviceName" align="center" />
-									<el-table-column label="瑙勬牸鍨嬪彿" prop="deviceModel" align="center" />
-									<el-table-column label="褰曞叆浜�" prop="createUserName" align="center" />
-									<el-table-column label="淇濆吇椤圭洰" prop="machineryCategory" align="center">
-										<template #default="{ row }">
-											{{ row.machineryCategory || '--' }}
-										</template>
-									</el-table-column>
-									<el-table-column label="瀹為檯淇濆吇浜�" prop="maintenanceActuallyName" align="center" />
-									<el-table-column label="瀹為檯淇濆吇鏃ユ湡" align="center">
-										<template #default="{ row }">
-											{{ row.maintenanceActuallyTime ? dayjs(row.maintenanceActuallyTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}
-										</template>
-									</el-table-column>
-									<el-table-column label="淇濆吇缁撴灉" align="center">
-										<template #default="{ row }">
-											{{ row.maintenanceResult || '-' }}
-										</template>
-									</el-table-column>
-									<el-table-column label="鐘舵��" align="center">
-										<template #default="{ row }">
-											<el-tag v-if="row.status === 2" type="danger">澶辫触</el-tag>
-											<el-tag v-if="row.status === 1" type="success">瀹岀粨</el-tag>
-											<el-tag v-if="row.status === 0" type="warning">寰呬繚鍏�</el-tag>
-										</template>
-									</el-table-column>
-									<el-table-column label="鎿嶄綔" align="center" width="300">
-										<template #default="{ row }">
-											<el-button type="primary" link :disabled="row.status === 1" @click="editPlan(row.id)">缂栬緫</el-button>
-											<el-button type="success" link :disabled="row.status !== 0" @click="handleSingleComplete(row.id)">淇濆吇瀹屾垚</el-button>
-											<el-button type="success" link :disabled="row.status === 1" @click="addMaintain(row)">淇濆吇</el-button>
-											<el-button type="danger" link :disabled="row.status === 1" @click="delRepairByIds(row.id)">鍒犻櫎</el-button>
-											<el-button type="primary" link @click="openFileDialog(row)">闄勪欢</el-button>
-										</template>
-									</el-table-column>
-								</el-table>
-							</template>
-						</el-table-column>
-						<el-table-column label="璁″垝淇濆吇鏃ユ湡" prop="date" align="center" />
-						<el-table-column label="淇濆吇璁板綍鏁�" prop="count" align="center" />
-						<el-table-column label="寰呬繚鍏绘暟" align="center" width="120">
-							<template #default="{ row }">
-								{{ row.children.filter(c => c.status === 0).length }}
-							</template>
-						</el-table-column>
-						<el-table-column label="鎿嶄綔" align="center" width="200">
-							<template #default="{ row }">
-								<el-button
-									type="primary"
-									size="small"
-									:disabled="!row.children.some(c => c.status === 0)"
-									@click="handleBatchComplete(row.date)"
-								>
-									涓�閿繚鍏诲畬鎴�
-								</el-button>
-							</template>
-						</el-table-column>
-					</el-table>
-					<Pagination
-						v-show="pagination.total > 0"
-						:total="pagination.total"
-						layout="total, sizes, prev, pager, next, jumper"
-						:page="pagination.currentPage"
-						:limit="pagination.pageSize"
-						@pagination="changePage"
-					/>
-				</div>
-			</el-tab-pane>
-		</el-tabs>
-		<PlanModal ref="planModalRef"
-		           @ok="getTableData" />
-		<MaintenanceModal ref="maintainModalRef"
-		                  @ok="getTableData" />
-		<FormDia ref="formDiaRef"
-		         @closeDia="getScheduledTableData" />
-		<FileList v-if="fileDialogVisible"
-		          v-model:visible="fileDialogVisible"
-		          :record-type="'device_maintenance'"
-		          :record-id="currentMaintenanceTaskId" />
-	
-	</div>
+                    @selection-change="handleScheduledSelectionChange"
+                    @pagination="changeScheduledPage">
+            <template #statusRef="{ row }">
+              <el-tag v-if="row.status === 1"
+                      type="success">鍚敤</el-tag>
+              <el-tag v-if="row.status === 0"
+                      type="danger">鍋滅敤</el-tag>
+            </template>
+            <template #operation="{ row }">
+              <el-button type="primary"
+                         link
+                         @click="editScheduledTask(row)">
+                缂栬緫
+              </el-button>
+              <el-button type="danger"
+                         link
+                         @click="delScheduledTaskByIds(row.id)">
+                鍒犻櫎
+              </el-button>
+            </template>
+          </PIMTable>
+        </div>
+      </el-tab-pane>
+      <!-- 淇濆吇璁板綍tab锛堝師璁惧淇濆吇椤甸潰锛� -->
+      <el-tab-pane label="淇濆吇璁板綍"
+                   name="record">
+        <div class="search_form">
+          <el-form :model="filters"
+                   :inline="true">
+            <el-form-item label="璁惧鍚嶇О">
+              <el-input v-model="filters.deviceName"
+                        style="width: 240px"
+                        placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+                        clearable
+                        :prefix-icon="Search"
+                        @change="getTableData" />
+            </el-form-item>
+            <el-form-item label="璁″垝淇濆吇鏃ユ湡">
+              <el-date-picker v-model="filters.maintenancePlanTime"
+                              type="date"
+                              placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡"
+                              size="default"
+                              @change="(date) => handleDateChange(date,2)" />
+            </el-form-item>
+            <el-form-item label="瀹為檯淇濆吇鏃ユ湡">
+              <el-date-picker v-model="filters.maintenanceActuallyTime"
+                              type="date"
+                              placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡"
+                              size="default"
+                              @change="(date) => handleDateChange(date,1)" />
+            </el-form-item>
+            <el-form-item label="瀹為檯淇濆吇浜�">
+              <el-input v-model="filters.maintenanceActuallyName"
+                        style="width: 240px"
+                        placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉"
+                        clearable
+                        :prefix-icon="Search"
+                        @change="getTableData" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary"
+                         @click="getTableData">鎼滅储</el-button>
+              <el-button @click="resetFilters">閲嶇疆</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div class="table_list">
+          <div class="actions">
+            <el-text class="mx-1"
+                     size="large">淇濆吇璁板綍</el-text>
+            <div>
+              <el-button type="success"
+                         icon="Van"
+                         @click="addPlan">
+                鏂板璁″垝
+              </el-button>
+              <el-button @click="handleOut">
+                瀵煎嚭
+              </el-button>
+              <el-button type="danger"
+                         icon="Delete"
+                         :disabled="multipleList.length <= 0 || hasFinishedStatus"
+                         @click="delRepairByIds(multipleList.map((item) => item.id))">
+                鎵归噺鍒犻櫎
+              </el-button>
+            </div>
+          </div>
+          <PIMTable rowKey="id"
+                    isSelection
+                    :column="columns"
+                    :tableData="dataList"
+                    :page="{
+          current: pagination.currentPage,
+          size: pagination.pageSize,
+          total: pagination.total,
+        }"
+                    @selection-change="handleSelectionChange"
+                    @pagination="changePage">
+            <template #maintenanceResultRef="{ row }">
+              <div>{{ row.maintenanceResult || '-' }}</div>
+            </template>
+            <template #statusRef="{ row }">
+              <el-tag v-if="row.status === 2"
+                      type="danger">澶辫触</el-tag>
+              <el-tag v-if="row.status === 1"
+                      type="success">瀹岀粨</el-tag>
+              <el-tag v-if="row.status === 0"
+                      type="warning">寰呬繚鍏�</el-tag>
+            </template>
+            <template #operation="{ row }">
+              <!-- 杩欎釜鍔熻兘璺熸柊澧炰繚鍏诲姛鑳戒竴妯′竴鏍凤紝鏈夊暐鎰忎箟锛� -->
+              <!-- <el-button
+              type="primary"
+              text
+              @click="addMaintain(row)"
+          >
+            鏂板淇濆吇
+          </el-button> -->
+              <el-button type="primary"
+                         link
+                         :disabled="row.status === 1"
+                         @click="editPlan(row.id)">
+                缂栬緫
+              </el-button>
+              <el-button type="success"
+                         link
+                         :disabled="row.status === 1"
+                         @click="addMaintain(row)">
+                淇濆吇
+              </el-button>
+              <el-button type="danger"
+                         link
+                         :disabled="row.status === 1"
+                         @click="delRepairByIds(row.id)">
+                鍒犻櫎
+              </el-button>
+              <el-button type="primary"
+                         link
+                         @click="openFileDialog(row)">
+                闄勪欢
+              </el-button>
+            </template>
+          </PIMTable>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+    <PlanModal ref="planModalRef"
+               @ok="getTableData" />
+    <MaintenanceModal ref="maintainModalRef"
+                      @ok="getTableData" />
+    <FormDia ref="formDiaRef"
+             @closeDia="getScheduledTableData" />
+    <FileList v-if="fileDialogVisible"
+              v-model:visible="fileDialogVisible"
+              :record-type="'device_maintenance'"
+              :record-id="currentMaintenanceTaskId" />
+  </div>
 </template>
 
 <script setup>
-import {
-	ref,
-	onMounted,
-	reactive,
-	getCurrentInstance,
-	nextTick,
-	computed,
-	defineAsyncComponent,
-} from "vue";
-import { Search } from "@element-plus/icons-vue";
-import { ElMessage, ElMessageBox } from "element-plus";
-import PlanModal from "./Form/PlanModal.vue";
-import MaintenanceModal from "./Form/MaintenanceModal.vue";
-import FormDia from "./Form/formDia.vue";
-import {
-	getUpkeepPage,
-	delUpkeep,
-	deviceMaintenanceTaskList,
-	deviceMaintenanceTaskDel,
-	batchCompleteMaintenance,
-	completeMaintenance,
-} from "@/api/equipmentManagement/upkeep";
-import dayjs from "dayjs";
-import Pagination from "@/components/PIMTable/Pagination.vue";
+  import {
+    ref,
+    onMounted,
+    reactive,
+    getCurrentInstance,
+    nextTick,
+    computed,
+    defineAsyncComponent,
+  } from "vue";
+  import { Search } from "@element-plus/icons-vue";
+  import { ElMessage, ElMessageBox } from "element-plus";
+  import PlanModal from "./Form/PlanModal.vue";
+  import MaintenanceModal from "./Form/MaintenanceModal.vue";
+  import FormDia from "./Form/formDia.vue";
+  import {
+    getUpkeepPage,
+    delUpkeep,
+    deviceMaintenanceTaskList,
+    deviceMaintenanceTaskDel,
+  } from "@/api/equipmentManagement/upkeep";
+  import dayjs from "dayjs";
 
-const { proxy } = getCurrentInstance();
-const FileList = defineAsyncComponent(() =>
-	import("@/components/Dialog/FileList.vue")
-);
+  const { proxy } = getCurrentInstance();
+  const FileList = defineAsyncComponent(() =>
+    import("@/components/Dialog/FileList.vue")
+  );
 
-// Tab鐩稿叧
-const activeTab = ref("scheduled");
+  // Tab鐩稿叧
+  const activeTab = ref("scheduled");
 
-// 璁″垝寮圭獥鎺у埗鍣�
-const planModalRef = ref();
-// 淇濆吇寮圭獥鎺у埗鍣�
-const maintainModalRef = ref();
-// 瀹氭椂浠诲姟寮圭獥鎺у埗鍣�
-const formDiaRef = ref();
-// 闄勪欢寮圭獥
-const fileListDialogRef = ref(null);
-const fileDialogVisible = ref(false);
-const currentMaintenanceTaskId = ref(null);
+  // 璁″垝寮圭獥鎺у埗鍣�
+  const planModalRef = ref();
+  // 淇濆吇寮圭獥鎺у埗鍣�
+  const maintainModalRef = ref();
+  // 瀹氭椂浠诲姟寮圭獥鎺у埗鍣�
+  const formDiaRef = ref();
+  // 闄勪欢寮圭獥
+  const fileListDialogRef = ref(null);
+  const fileDialogVisible = ref(false);
+  const currentMaintenanceTaskId = ref(null);
 
-// 淇濆吇璁板綍tab锛堝師璁惧淇濆吇椤甸潰锛夌浉鍏冲彉閲�
-const filters = reactive({
-	deviceName: "",
-	maintenancePlanTime: "",
-	maintenanceActuallyTime: "",
-	maintenanceActuallyName: "",
-});
+  // 淇濆吇璁板綍tab锛堝師璁惧淇濆吇椤甸潰锛夌浉鍏冲彉閲�
+  const filters = reactive({
+    deviceName: "",
+    maintenancePlanTime: "",
+    maintenanceActuallyTime: "",
+    maintenanceActuallyName: "",
+  });
 
-const dataList = ref([]);
-const pagination = ref({
-	currentPage: 1,
-	pageSize: 100,
-	total: 0,
-});
-const multipleList = ref([]);
-const tableLoading = ref(false);
-const expandedRowKeys = ref([]);
+  const dataList = ref([]);
+  const pagination = ref({
+    currentPage: 1,
+    pageSize: 10,
+    total: 0,
+  });
+  const multipleList = ref([]);
 
-const groupByDate = (list) => {
-	const map = {};
-	list.forEach(item => {
-		const date = item.dateStr || (item.maintenancePlanTime ? dayjs(item.maintenancePlanTime).format('YYYY-MM-DD') : (item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD') : '鏈煡鏃ユ湡'));
-		if (!map[date]) map[date] = [];
-		map[date].push(item);
-	});
-	return Object.entries(map).map(([date, children]) => ({ date, children, count: children.length }));
-};
+  // 淇濆吇浠诲姟tab鐩稿叧鍙橀噺
+  const scheduledFilters = reactive({
+    taskName: "",
+    status: "",
+  });
 
-const groupedDataList = computed(() => groupByDate(dataList.value));
+  const scheduledDataList = ref([]);
+  const scheduledPagination = reactive({
+    currentPage: 1,
+    pageSize: 10,
+    total: 0,
+  });
+  const scheduledMultipleList = ref([]);
 
-// 鍗曟潯淇濆吇瀹屾垚
-const handleSingleComplete = async (id) => {
-	try {
-		await ElMessageBox.confirm('纭灏嗚淇濆吇璁板綍鏍囪涓哄畬鎴愶紵', '鎻愮ず', { type: 'warning' });
-		const res = await completeMaintenance(id);
-		if (res.code === 200) {
-			ElMessage.success('淇濆吇瀹屾垚');
-			getTableData();
-		} else {
-			ElMessage.error(res.msg || '鎿嶄綔澶辫触');
-		}
-	} catch { /* 鍙栨秷 */ }
-};
+  // 淇濆吇浠诲姟琛ㄦ牸鍒楅厤缃�
+  const scheduledColumns = ref([
+    { prop: "taskName", label: "璁惧鍚嶇О" },
+    {
+      label: "瑙勬牸鍨嬪彿",
+      prop: "deviceModel",
+    },
+    {
+      label: "淇濆吇椤圭洰",
+      prop: "machineryCategory",
+      minWidth: 120,
+      formatData: cell => cell || "--",
+    },
+    {
+      prop: "frequencyType",
+      label: "棰戞",
+      minWidth: 150,
+      // PIMTable 浣跨敤鐨勬槸 formatData锛岃�屼笉鏄� Element-Plus 鐨� formatter
+      formatData: cell =>
+        ({
+          DAILY: "姣忔棩",
+          WEEKLY: "姣忓懆",
+          MONTHLY: "姣忔湀",
+          QUARTERLY: "瀛e害",
+        }[cell] || ""),
+    },
+    {
+      prop: "frequencyDetail",
+      label: "寮�濮嬫棩鏈熶笌鏃堕棿",
+      minWidth: 150,
+      // 鍚屾牱鏀圭敤 formatData锛孭IMTable 鍐呴儴浼氭妸鍗曞厓鏍煎�间紶杩涙潵
+      formatData: cell => {
+        if (typeof cell !== "string") return "";
+        let val = cell;
+        const replacements = {
+          MON: "鍛ㄤ竴",
+          TUE: "鍛ㄤ簩",
+          WED: "鍛ㄤ笁",
+          THU: "鍛ㄥ洓",
+          FRI: "鍛ㄤ簲",
+          SAT: "鍛ㄥ叚",
+          SUN: "鍛ㄦ棩",
+        };
+        // 浣跨敤姝e垯涓�娆℃�ф浛鎹㈡墍鏈夊尮閰嶉」
+        return val.replace(
+          /MON|TUE|WED|THU|FRI|SAT|SUN/g,
+          match => replacements[match]
+        );
+      },
+    },
+    { prop: "maintenancePerson", label: "淇濆吇浜�", minWidth: 100 },
+    { prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
+    {
+      prop: "registrationDate",
+      label: "鐧昏鏃ユ湡",
+      minWidth: 100,
+      formatData: cell =>
+          // cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
+      cell ? dayjs(cell).format("YYYY-MM-DD") : "-",
+    },
+    {
+      fixed: "right",
+      label: "鎿嶄綔",
+      dataType: "slot",
+      slot: "operation",
+      align: "center",
+      width: "200px",
+    },
+  ]);
 
-// 涓�閿繚鍏诲畬鎴�
-const handleBatchComplete = async (dateStr) => {
-	try {
-		await ElMessageBox.confirm(`纭灏� ${dateStr} 鐨勬墍鏈夊緟淇濆吇璁板綍鏍囪涓哄畬鎴愶紵`, '鎻愮ず', { type: 'warning' });
-		const res = await batchCompleteMaintenance(dateStr);
-		if (res.code === 200) {
-			ElMessage.success(res.msg || '鎵归噺淇濆吇瀹屾垚鎴愬姛');
-			getTableData();
-		} else {
-			ElMessage.error(res.msg || '鎵归噺淇濆吇瀹屾垚澶辫触');
-		}
-	} catch { /* 鍙栨秷 */ }
-};
+  // 淇濆吇璁板綍琛ㄦ牸鍒楅厤缃紙鍘熻澶囦繚鍏昏〃鏍煎垪锛�
+  const columns = ref([
+    {
+      label: "璁惧鍚嶇О",
+      align: "center",
+      prop: "deviceName",
+    },
+    {
+      label: "瑙勬牸鍨嬪彿",
+      align: "center",
+      prop: "deviceModel",
+    },
+    {
+      label: "璁″垝淇濆吇鏃ユ湡",
+      align: "center",
+      prop: "maintenancePlanTime",
+      formatData: cell => {
+        return cell == null ? "-" : dayjs(cell).format("YYYY-MM-DD");
+      },
+    },
+    {
+      label: "褰曞叆浜�",
+      align: "center",
+      prop: "createUserName",
+    },
+    {
+      label: "淇濆吇椤圭洰",
+      align: "center",
+      prop: "machineryCategory",
+      formatData: cell => cell || "--",
+    },
+    // {
+    //   label: "褰曞叆鏃ユ湡",
+    //   align: "center",
+    //   prop: "createTime",
+    //   formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"),
+    //   width: 200,
+    // },
+    {
+      label: "瀹為檯淇濆吇浜�",
+      align: "center",
+      prop: "maintenanceActuallyName",
+    },
+    {
+      label: "瀹為檯淇濆吇鏃ユ湡",
+      align: "center",
+      prop: "maintenanceActuallyTime",
+      formatData: cell =>
+        cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
+    },
+    {
+      label: "淇濆吇缁撴灉",
+      align: "center",
+      prop: "maintenanceResult",
+      dataType: "slot",
+      slot: "maintenanceResultRef",
+    },
+    {
+      label: "鐘舵��",
+      align: "center",
+      prop: "status",
+      dataType: "slot",
+      slot: "statusRef",
+    },
+    {
+      fixed: "right",
+      label: "鎿嶄綔",
+      dataType: "slot",
+      slot: "operation",
+      align: "center",
+      width: "350px",
+    },
+  ]);
 
-const onExpandChange = (row, expandedRows) => {
-	expandedRowKeys.value = expandedRows.map(r => r.date);
-};
+  // Tab鍒囨崲澶勭悊
+  const handleTabChange = tabName => {
+    if (tabName === "record") {
+      getTableData();
+    } else if (tabName === "scheduled") {
+      getScheduledTableData();
+    }
+  };
 
-// 淇濆吇浠诲姟tab鐩稿叧鍙橀噺
-const scheduledFilters = reactive({
-	taskName: "",
-	status: "",
-});
+  // 淇濆吇浠诲姟鐩稿叧鏂规硶
+  const getScheduledTableData = async () => {
+    try {
+      const params = {
+        current: scheduledPagination.currentPage,
+        size: scheduledPagination.pageSize,
+        taskName: scheduledFilters.taskName || undefined,
+        status: scheduledFilters.status || undefined,
+      };
+      const { code, data } = await deviceMaintenanceTaskList(params);
+      if (code === 200) {
+        scheduledDataList.value = data?.records || [];
+        scheduledPagination.total = data?.total || 0;
+      }
+    } catch (error) {
+      ElMessage.error("鑾峰彇瀹氭椂浠诲姟鍒楄〃澶辫触");
+    }
+  };
 
-const scheduledDataList = ref([]);
-const scheduledPagination = reactive({
-	currentPage: 1,
-	pageSize: 10,
-	total: 0,
-});
-const scheduledMultipleList = ref([]);
+  const resetScheduledFilters = () => {
+    scheduledFilters.taskName = "";
+    scheduledFilters.status = "";
+    getScheduledTableData();
+  };
 
-// 淇濆吇浠诲姟琛ㄦ牸鍒楅厤缃�
-const scheduledColumns = ref([
-	{ prop: "taskName", label: "璁惧鍚嶇О" },
-	{
-		label: "瑙勬牸鍨嬪彿",
-		prop: "deviceModel",
-	},
-	{
-		label: "淇濆吇椤圭洰",
-		prop: "machineryCategory",
-		minWidth: 120,
-		formatData: cell => cell || "--",
-	},
-	{
-		prop: "frequencyType",
-		label: "棰戞",
-		minWidth: 150,
-		// PIMTable 浣跨敤鐨勬槸 formatData锛岃�屼笉鏄� Element-Plus 鐨� formatter
-		formatData: cell =>
-			({
-				DAILY: "姣忔棩",
-				WEEKLY: "姣忓懆",
-				MONTHLY: "姣忔湀",
-				QUARTERLY: "瀛e害",
-			}[cell] || ""),
-	},
-	{
-		prop: "frequencyDetail",
-		label: "寮�濮嬫棩鏈熶笌鏃堕棿",
-		minWidth: 150,
-		// 鍚屾牱鏀圭敤 formatData锛孭IMTable 鍐呴儴浼氭妸鍗曞厓鏍煎�间紶杩涙潵
-		formatData: cell => {
-			if (typeof cell !== "string") return "";
-			let val = cell;
-			const replacements = {
-				MON: "鍛ㄤ竴",
-				TUE: "鍛ㄤ簩",
-				WED: "鍛ㄤ笁",
-				THU: "鍛ㄥ洓",
-				FRI: "鍛ㄤ簲",
-				SAT: "鍛ㄥ叚",
-				SUN: "鍛ㄦ棩",
-			};
-			// 浣跨敤姝e垯涓�娆℃�ф浛鎹㈡墍鏈夊尮閰嶉」
-			return val.replace(
-				/MON|TUE|WED|THU|FRI|SAT|SUN/g,
-				match => replacements[match]
-			);
-		},
-	},
-	{ prop: "maintenancePerson", label: "淇濆吇浜�", minWidth: 100 },
-	{ prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
-	{
-		prop: "registrationDate",
-		label: "鐧昏鏃ユ湡",
-		minWidth: 100,
-		formatData: cell =>
-			cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
-	},
-	{
-		fixed: "right",
-		label: "鎿嶄綔",
-		dataType: "slot",
-		slot: "operation",
-		align: "center",
-		width: "200px",
-	},
-]);
+  const handleScheduledSelectionChange = selection => {
+    scheduledMultipleList.value = selection;
+  };
 
-// 淇濆吇璁板綍琛ㄦ牸鍒楅厤缃紙鍘熻澶囦繚鍏昏〃鏍煎垪锛�
-const columns = ref([
-	{
-		label: "璁惧鍚嶇О",
-		align: "center",
-		prop: "deviceName",
-	},
-	{
-		label: "瑙勬牸鍨嬪彿",
-		align: "center",
-		prop: "deviceModel",
-	},
-	{
-		label: "璁″垝淇濆吇鏃ユ湡",
-		align: "center",
-		prop: "maintenancePlanTime",
-		formatData: cell => {
-			return cell == null ? "-" : dayjs(cell).format("YYYY-MM-DD");
-		},
-	},
-	{
-		label: "褰曞叆浜�",
-		align: "center",
-		prop: "createUserName",
-	},
-	{
-		label: "淇濆吇椤圭洰",
-		align: "center",
-		prop: "machineryCategory",
-		formatData: cell => cell || "--",
-	},
-	// {
-	//   label: "褰曞叆鏃ユ湡",
-	//   align: "center",
-	//   prop: "createTime",
-	//   formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"),
-	//   width: 200,
-	// },
-	{
-		label: "瀹為檯淇濆吇浜�",
-		align: "center",
-		prop: "maintenanceActuallyName",
-	},
-	{
-		label: "瀹為檯淇濆吇鏃ユ湡",
-		align: "center",
-		prop: "maintenanceActuallyTime",
-		formatData: cell =>
-			cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
-	},
-	{
-		label: "淇濆吇缁撴灉",
-		align: "center",
-		prop: "maintenanceResult",
-		dataType: "slot",
-		slot: "maintenanceResultRef",
-	},
-	{
-		label: "鐘舵��",
-		align: "center",
-		prop: "status",
-		dataType: "slot",
-		slot: "statusRef",
-	},
-	{
-		fixed: "right",
-		label: "鎿嶄綔",
-		dataType: "slot",
-		slot: "operation",
-		align: "center",
-		width: "350px",
-	},
-]);
+  const changeScheduledPage = page => {
+    scheduledPagination.currentPage = page.page;
+    scheduledPagination.pageSize = page.limit;
+    getScheduledTableData();
+  };
 
-// Tab鍒囨崲澶勭悊
-const handleTabChange = tabName => {
-	if (tabName === "record") {
-		getTableData();
-	} else if (tabName === "scheduled") {
-		getScheduledTableData();
-	}
-};
+  const addScheduledTask = () => {
+    nextTick(() => {
+      formDiaRef.value?.openDialog("add");
+    });
+  };
 
-// 淇濆吇浠诲姟鐩稿叧鏂规硶
-const getScheduledTableData = async () => {
-	try {
-		const params = {
-			current: scheduledPagination.currentPage,
-			size: scheduledPagination.pageSize,
-			taskName: scheduledFilters.taskName || undefined,
-			status: scheduledFilters.status || undefined,
-		};
-		const { code, data } = await deviceMaintenanceTaskList(params);
-		if (code === 200) {
-			scheduledDataList.value = data?.records || [];
-			scheduledPagination.total = data?.total || 0;
-		}
-	} catch (error) {
-		ElMessage.error("鑾峰彇瀹氭椂浠诲姟鍒楄〃澶辫触");
-	}
-};
+  const editScheduledTask = row => {
+    if (row) {
+      nextTick(() => {
+        formDiaRef.value?.openDialog("edit", row);
+      });
+    }
+  };
 
-const resetScheduledFilters = () => {
-	scheduledFilters.taskName = "";
-	scheduledFilters.status = "";
-	getScheduledTableData();
-};
+  const delScheduledTaskByIds = async ids => {
+    try {
+      await ElMessageBox.confirm("纭畾鍒犻櫎閫変腑鐨勫畾鏃朵换鍔″悧锛�", "鎻愮ず", {
+        type: "warning",
+      });
+      const payload = Array.isArray(ids) ? ids : [ids];
+      await deviceMaintenanceTaskDel(payload);
+      ElMessage.success("鍒犻櫎瀹氭椂浠诲姟鎴愬姛");
+      getScheduledTableData();
+    } catch (error) {
+      // 鐢ㄦ埛鍙栨秷鍒犻櫎
+    }
+  };
 
-const handleScheduledSelectionChange = selection => {
-	scheduledMultipleList.value = selection;
-};
+  const handleScheduledOut = () => {
+    ElMessage.info("瀵煎嚭瀹氭椂浠诲姟鍔熻兘寰呭疄鐜�");
+  };
 
-const changeScheduledPage = page => {
-	scheduledPagination.currentPage = page.page;
-	scheduledPagination.pageSize = page.limit;
-	getScheduledTableData();
-};
+  // 淇濆吇璁板綍鐩稿叧鏂规硶锛堝師璁惧淇濆吇椤甸潰鏂规硶锛�
+  const getTableData = async () => {
+    try {
+      const params = {
+        current: pagination.value.currentPage,
+        size: pagination.value.pageSize,
+        deviceName: filters.deviceName || undefined,
+        maintenancePlanTime: filters.maintenancePlanTime
+          ? dayjs(filters.maintenancePlanTime).format("YYYY-MM-DD")
+          : undefined,
+        maintenanceActuallyTime: filters.maintenanceActuallyTime
+          ? dayjs(filters.maintenanceActuallyTime).format("YYYY-MM-DD")
+          : undefined,
+        maintenanceActuallyName: filters.maintenanceActuallyName || undefined,
+      };
 
-const addScheduledTask = () => {
-	nextTick(() => {
-		formDiaRef.value?.openDialog("add");
-	});
-};
+      const { code, data } = await getUpkeepPage(params);
+      if (code === 200) {
+        dataList.value = data.records;
+        pagination.value.total = data.total;
+      }
+    } catch (error) {
+      console.log(error);
+    }
+  };
 
-const editScheduledTask = row => {
-	if (row) {
-		nextTick(() => {
-			formDiaRef.value?.openDialog("edit", row);
-		});
-	}
-};
+  const resetFilters = () => {
+    filters.deviceName = "";
+    filters.maintenancePlanTime = "";
+    filters.maintenanceActuallyTime = "";
+    filters.maintenanceActuallyName = "";
+    getTableData();
+  };
 
-const delScheduledTaskByIds = async ids => {
-	try {
-		await ElMessageBox.confirm("纭畾鍒犻櫎閫変腑鐨勫畾鏃朵换鍔″悧锛�", "鎻愮ず", {
-			type: "warning",
-		});
-		const payload = Array.isArray(ids) ? ids : [ids];
-		await deviceMaintenanceTaskDel(payload);
-		ElMessage.success("鍒犻櫎瀹氭椂浠诲姟鎴愬姛");
-		getScheduledTableData();
-	} catch (error) {
-		// 鐢ㄦ埛鍙栨秷鍒犻櫎
-	}
-};
+  const handleSelectionChange = selection => {
+    multipleList.value = selection;
+  };
 
-const handleScheduledOut = () => {
-	ElMessage.info("瀵煎嚭瀹氭椂浠诲姟鍔熻兘寰呭疄鐜�");
-};
+  // 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+  const hasFinishedStatus = computed(() => {
+    return multipleList.value.some(item => item.status === 1);
+  });
 
-// 淇濆吇璁板綍鐩稿叧鏂规硶锛堝師璁惧淇濆吇椤甸潰鏂规硶锛�
-const getTableData = async () => {
-	tableLoading.value = true;
-	try {
-		const params = {
-			current: pagination.value.currentPage,
-			size: pagination.value.pageSize,
-			deviceName: filters.deviceName || undefined,
-			maintenancePlanTime: filters.maintenancePlanTime
-				? dayjs(filters.maintenancePlanTime).format("YYYY-MM-DD")
-				: undefined,
-			maintenanceActuallyTime: filters.maintenanceActuallyTime
-				? dayjs(filters.maintenanceActuallyTime).format("YYYY-MM-DD")
-				: undefined,
-			maintenanceActuallyName: filters.maintenanceActuallyName || undefined,
-		};
-		
-		const { code, data } = await getUpkeepPage(params);
-		if (code === 200) {
-			dataList.value = data.records;
-			pagination.value.total = data.total;
-		}
-	} catch (error) {
-		console.log(error);
-	} finally {
-		tableLoading.value = false;
-	}
-};
+  const changePage = page => {
+    pagination.value.currentPage = page.page;
+    pagination.value.pageSize = page.limit;
+    getTableData();
+  };
 
-const resetFilters = () => {
-	filters.deviceName = "";
-	filters.maintenancePlanTime = "";
-	filters.maintenanceActuallyTime = "";
-	filters.maintenanceActuallyName = "";
-	getTableData();
-};
+  const addMaintain = row => {
+    maintainModalRef.value.open(row.id, row);
+  };
 
-const handleSelectionChange = selection => {
-	// 浠庨�変腑鐨勫垎缁勮涓敹闆嗘墍鏈夊瓙璁板綍ID
-	const ids = [];
-	selection.forEach(group => {
-		if (group.children) {
-			group.children.forEach(child => ids.push(child.id));
-		}
-	});
-	multipleList.value = ids;
-};
+  const addPlan = () => {
+    planModalRef.value.openModal();
+  };
 
-const changePage = page => {
-	pagination.value.currentPage = page.page;
-	pagination.value.pageSize = page.limit;
-	getTableData();
-};
+  const editPlan = id => {
+    planModalRef.value.openEdit(id);
+  };
 
-const addMaintain = row => {
-	maintainModalRef.value.open(row.id, row);
-};
+  const delRepairByIds = async ids => {
+    // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
+    const hasFinished = multipleList.value.some(item => item.status === 1);
+    if (hasFinished) {
+      ElMessage.warning("涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�");
+      return;
+    }
 
-const addPlan = () => {
-	planModalRef.value.openModal();
-};
+    try {
+      await ElMessageBox.confirm("纭鍒犻櫎淇濆吇鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      });
 
-const editPlan = id => {
-	planModalRef.value.openEdit(id);
-};
+      const { code } = await delUpkeep(ids);
+      if (code === 200) {
+        ElMessage.success("鍒犻櫎鎴愬姛");
+        getTableData();
+      }
+    } catch (error) {
+      // 鐢ㄦ埛鍙栨秷鍒犻櫎
+    }
+  };
 
-const delRepairByIds = async ids => {
-	const idList = Array.isArray(ids) ? ids : [ids];
-	if (idList.length === 0) return;
-	
-	try {
-		await ElMessageBox.confirm("纭鍒犻櫎淇濆吇鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
-			confirmButtonText: "纭畾",
-			cancelButtonText: "鍙栨秷",
-			type: "warning",
-		});
-		
-		const { code } = await delUpkeep(idList);
-		if (code === 200) {
-			ElMessage.success("鍒犻櫎鎴愬姛");
-			getTableData();
-		}
-	} catch (error) {
-		// 鐢ㄦ埛鍙栨秷鍒犻櫎
-	}
-};
+  const handleOut = () => {
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    })
+      .then(() => {
+        proxy.download("/device/maintenance/export", {}, "璁惧淇濆吇.xlsx");
+      })
+      .catch(() => {
+        ElMessage.info("宸插彇娑�");
+      });
+  };
 
-const handleOut = () => {
-	ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-		confirmButtonText: "纭",
-		cancelButtonText: "鍙栨秷",
-		type: "warning",
-	})
-		.then(() => {
-			proxy.download("/device/maintenance/export", {}, "璁惧淇濆吇.xlsx");
-		})
-		.catch(() => {
-			ElMessage.info("宸插彇娑�");
-		});
-};
+  const handleDateChange = (date, type) => {
+    if (type === 1) {
+      filters.maintenanceActuallyTime = date
+        ? dayjs(date).format("YYYY-MM-DD")
+        : "";
+    } else {
+      filters.maintenancePlanTime = date ? dayjs(date).format("YYYY-MM-DD") : "";
+    }
+    getTableData();
+  };
 
-const handleDateChange = (date, type) => {
-	if (type === 1) {
-		filters.maintenanceActuallyTime = date
-			? dayjs(date).format("YYYY-MM-DD")
-			: "";
-	} else {
-		filters.maintenancePlanTime = date ? dayjs(date).format("YYYY-MM-DD") : "";
-	}
-	getTableData();
-};
+  // 鎵撳紑闄勪欢寮圭獥
+  const openFileDialog = async row => {
+    currentMaintenanceTaskId.value = row.id;
+    fileDialogVisible.value = true;
+  };
 
-// 鎵撳紑闄勪欢寮圭獥
-const openFileDialog = async row => {
-	currentMaintenanceTaskId.value = row.id;
-	fileDialogVisible.value = true;
-};
-
-onMounted(() => {
-	// 鏍规嵁榛樿婵�娲荤殑 Tab 璋冪敤瀵瑰簲鐨勬煡璇㈡帴鍙�
-	if (activeTab.value === "scheduled") {
-		getScheduledTableData();
-	} else {
-		getTableData();
-	}
-});
+  onMounted(() => {
+    // 鏍规嵁榛樿婵�娲荤殑 Tab 璋冪敤瀵瑰簲鐨勬煡璇㈡帴鍙�
+    if (activeTab.value === "scheduled") {
+      getScheduledTableData();
+    } else {
+      getTableData();
+    }
+  });
 </script>
 
 <style lang="scss" scoped>
-.table_list {
-	margin-top: unset;
-}
-.actions {
-	display: flex;
-	justify-content: space-between;
-	margin-bottom: 10px;
-}
+  .table_list {
+    margin-top: unset;
+  }
+  .actions {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
 </style>
 
 
diff --git a/src/views/financialManagement/payable/purchaseReturn.vue b/src/views/financialManagement/payable/purchaseReturn.vue
index 4171df2..8d42a2e 100644
--- a/src/views/financialManagement/payable/purchaseReturn.vue
+++ b/src/views/financialManagement/payable/purchaseReturn.vue
@@ -85,7 +85,7 @@
   { label: "閫�璐у崟鍙�", prop: "returnNo", minWidth: "150" },
   { label: "渚涘簲鍟�", prop: "supplierName", minWidth: "180" },
   { label: "鍏宠仈鍏ュ簱鍗曞彿", prop: "inboundBatches", minWidth: "150" },
-  { label: "閫�璐ф棩鏈�", prop: "preparedAt", minWidth: "170" },
+  { label: "閫�璐ф棩鏈�", prop: "preparedAt", minWidth: "170",dataType: "date"},
   {
     label: "閫�娆炬�婚",
     prop: "totalAmount",
diff --git a/src/views/financialManagement/receivable/salesReturn.vue b/src/views/financialManagement/receivable/salesReturn.vue
index afe363c..d6af451 100644
--- a/src/views/financialManagement/receivable/salesReturn.vue
+++ b/src/views/financialManagement/receivable/salesReturn.vue
@@ -77,7 +77,7 @@
   { label: "閫�璐у崟鍙�", prop: "returnNo", minWidth: "150" },
   { label: "瀹㈡埛鍚嶇О", prop: "customerName", minWidth: "180" },
   { label: "鍏宠仈鍙戣揣鍗曞彿", prop: "shippingNo", minWidth: "150" },
-  { label: "閫�璐ф棩鏈�", prop: "makeTime", minWidth: "170" },
+  { label: "閫�璐ф棩鏈�", prop: "makeTime", minWidth: "170",dataType: "date" },
   {
     label: "閫�娆炬�婚",
     prop: "refundAmount",
diff --git a/src/views/inventoryManagement/dispatchLog/Record.vue b/src/views/inventoryManagement/dispatchLog/Record.vue
index 5a056d6..fe05536 100644
--- a/src/views/inventoryManagement/dispatchLog/Record.vue
+++ b/src/views/inventoryManagement/dispatchLog/Record.vue
@@ -108,7 +108,11 @@
                          show-overflow-tooltip />
         <el-table-column label="鍑哄簱鏃ユ湡"
                          prop="createTime"
-                         show-overflow-tooltip />
+                         show-overflow-tooltip >
+          <template #default="scope">
+            {{ scope.row.createTime ? scope.row.createTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column label="浜у搧澶х被"
                          prop="productName"
                          show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/receiptManagement/Record.vue b/src/views/inventoryManagement/receiptManagement/Record.vue
index 0a01def..07a3029 100644
--- a/src/views/inventoryManagement/receiptManagement/Record.vue
+++ b/src/views/inventoryManagement/receiptManagement/Record.vue
@@ -107,9 +107,11 @@
                          prop="inboundBatches"
                          width="200"
                          show-overflow-tooltip />
-        <el-table-column label="鍏ュ簱鏃堕棿"
-                         prop="createTime"
-                         show-overflow-tooltip />
+        <el-table-column label="鍏ュ簱鏃堕棿" show-overflow-tooltip>
+          <template #default="scope">
+            {{ scope.row.createTime ? scope.row.createTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column label="浜у搧澶х被"
                          prop="productName"
                          show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue b/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
index a835ef4..7d66307 100644
--- a/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
+++ b/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
@@ -50,11 +50,13 @@
             show-overflow-tooltip
           />
           <el-table-column label="澶囨敞" prop="remark" show-overflow-tooltip />
-          <el-table-column
-            label="鏈�杩戞洿鏂版椂闂�"
-            prop="updateTime"
-            show-overflow-tooltip
-          />
+          <el-table-column label="鏈�杩戞洿鏂版椂闂�"
+                           prop="updateTime"
+                           show-overflow-tooltip >
+            <template #default="scope">
+              {{ scope.row.updateTime ? scope.row.updateTime.split(' ')[0] : '-' }}
+            </template>
+          </el-table-column>
           <el-table-column fixed="right" label="鎿嶄綔" min-width="180" align="center">
             <template #default="scope">
               <el-button
diff --git a/src/views/inventoryManagement/stockManagement/Qualified.vue b/src/views/inventoryManagement/stockManagement/Qualified.vue
index 4286772..a1f96f4 100644
--- a/src/views/inventoryManagement/stockManagement/Qualified.vue
+++ b/src/views/inventoryManagement/stockManagement/Qualified.vue
@@ -31,7 +31,13 @@
         <el-table-column label="鍐荤粨鏁伴噺" prop="lockedQuantity" show-overflow-tooltip />
         <el-table-column label="搴撳瓨棰勮鏁伴噺" prop="warnNum"  show-overflow-tooltip />
         <el-table-column label="澶囨敞" prop="remark"  show-overflow-tooltip />
-        <el-table-column label="鏈�杩戞洿鏂版椂闂�" prop="updateTime" show-overflow-tooltip />
+        <el-table-column label="鏈�杩戞洿鏂版椂闂�"
+                         prop="updateTime"
+                         show-overflow-tooltip >
+          <template #default="scope">
+            {{ scope.row.updateTime ? scope.row.updateTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column fixed="right" label="鎿嶄綔" min-width="90" align="center">
           <template #default="scope">
             <el-button link type="primary" @click="showSubtractModal(scope.row)" :disabled="scope.row.unLockedQuantity === 0">棰嗙敤</el-button>
diff --git a/src/views/inventoryManagement/stockManagement/Record.vue b/src/views/inventoryManagement/stockManagement/Record.vue
index 934ae06..b45dd00 100644
--- a/src/views/inventoryManagement/stockManagement/Record.vue
+++ b/src/views/inventoryManagement/stockManagement/Record.vue
@@ -107,7 +107,11 @@
                          show-overflow-tooltip />
         <el-table-column label="鏈�杩戞洿鏂版椂闂�"
                          prop="updateTime"
-                         show-overflow-tooltip />
+                         show-overflow-tooltip >
+          <template #default="scope">
+            {{ scope.row.updateTime ? scope.row.updateTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column fixed="right"
                          label="鎿嶄綔"
                          min-width="80"
diff --git a/src/views/inventoryManagement/stockManagement/Unqualified.vue b/src/views/inventoryManagement/stockManagement/Unqualified.vue
index 55662be..6c36f26 100644
--- a/src/views/inventoryManagement/stockManagement/Unqualified.vue
+++ b/src/views/inventoryManagement/stockManagement/Unqualified.vue
@@ -26,7 +26,13 @@
         <el-table-column label="搴撳瓨鏁伴噺" prop="qualitity" show-overflow-tooltip />
         <el-table-column label="鍐荤粨鏁伴噺" prop="lockedQuantity" show-overflow-tooltip />
         <el-table-column label="澶囨敞" prop="remark"  show-overflow-tooltip />
-        <el-table-column label="鏈�杩戞洿鏂版椂闂�" prop="updateTime" show-overflow-tooltip />
+        <el-table-column label="鏈�杩戞洿鏂版椂闂�"
+                         prop="updateTime"
+                         show-overflow-tooltip >
+          <template #default="scope">
+            {{ scope.row.updateTime ? scope.row.updateTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column fixed="right" label="鎿嶄綔" min-width="90" align="center">
           <template #default="scope">
             <el-button link type="primary" @click="showSubtractModal(scope.row)" :disabled="scope.row.unLockedQuantity === 0">棰嗙敤</el-button>
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-template/approveTemplateConstants.js b/src/views/officeProcessAutomation/ApproveManage/approve-template/approveTemplateConstants.js
index 727f896..e92dc97 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-template/approveTemplateConstants.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-template/approveTemplateConstants.js
@@ -155,24 +155,31 @@
   return { createdTime, updatedTime, createTime: createdTime, updateTime: updatedTime };
 }
 
-function normalizeTimeValue(val) {
-  if (val == null || val === "") return "";
-  if (Array.isArray(val) && val.length >= 3) {
-    const [y, m, d, h = 0, min = 0, s = 0] = val;
-    return dayjs(new Date(y, m - 1, d, h, min, s)).format("YYYY-MM-DD HH:mm:ss");
-  }
-  if (typeof val === "number") {
-    const d = val > 1e12 ? dayjs(val) : dayjs.unix(val);
-    return d.isValid() ? d.format("YYYY-MM-DD HH:mm:ss") : "";
-  }
-  const s = String(val).trim();
-  if (!s) return "";
-  const parsed = dayjs(s.includes("T") ? s : s.replace(/-/g, "/"));
-  return parsed.isValid() ? parsed.format("YYYY-MM-DD HH:mm:ss") : s;
+
+/**
+ * @param {any} val 鏃堕棿鍊�
+ * @param {boolean} [onlyDate=true] true:鍙勾鏈堟棩锛宖alse:骞存湀鏃ユ椂鍒嗙
+ */
+function normalizeTimeValue(val, onlyDate = true) {
+    if (val == null || val === "") return "";
+    const fmt = onlyDate ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss";
+
+    if (Array.isArray(val) && val.length >= 3) {
+        const [y, m, d, h = 0, min = 0, s = 0] = val;
+        return dayjs(new Date(y, m - 1, d, h, min, s)).format(fmt);
+    }
+    if (typeof val === "number") {
+        const d = val > 1e12 ? dayjs(val) : dayjs.unix(val);
+        return d.isValid() ? d.format(fmt) : "";
+    }
+    const s = String(val).trim();
+    if (!s) return "";
+    const parsed = dayjs(s.includes("T") ? s : s.replace(/-/g, "/"));
+    return parsed.isValid() ? parsed.format(fmt) : s;
 }
 
-export function formatDisplayTime(val) {
-  const t = normalizeTimeValue(val);
+export function formatDisplayTime(val,onlyDate) {
+  const t = normalizeTimeValue(val,onlyDate);
   return t || "鈥�";
 }
 
diff --git a/src/views/personnelManagement/socialSecuritySet/index.vue b/src/views/personnelManagement/socialSecuritySet/index.vue
index 1f3f104..8329b9c 100644
--- a/src/views/personnelManagement/socialSecuritySet/index.vue
+++ b/src/views/personnelManagement/socialSecuritySet/index.vue
@@ -65,7 +65,7 @@
   { label: "淇濋櫓绫诲瀷", prop: "insuranceTypes", width: 120 },
   { label: "浣跨敤鑼冨洿", prop: "deptNames", width: 120 },
   { label: "澶囨敞", prop: "remark", minWidth: 120 },
-  { label: "鍒涘缓鏃堕棿", prop: "createTime", width: 160 },
+  { label: "鍒涘缓鏃堕棿", prop: "createTime", width: 160,dataType: "date" },
   { label: "鍒涘缓浜�", prop: "createUserName", width: 100 },
   {
     dataType: "action",
diff --git a/src/views/productionManagement/productionReporting/index.vue b/src/views/productionManagement/productionReporting/index.vue
index fa4e163..28edda2 100644
--- a/src/views/productionManagement/productionReporting/index.vue
+++ b/src/views/productionManagement/productionReporting/index.vue
@@ -236,6 +236,7 @@
       label: "鍒涘缓鏃堕棿",
       prop: "createTime",
       width: 120,
+      dataType: "date"
     },
     {
       dataType: "action",
diff --git a/src/views/safeProduction/dangerInvestigation/index.vue b/src/views/safeProduction/dangerInvestigation/index.vue
index a278058..4caac4e 100644
--- a/src/views/safeProduction/dangerInvestigation/index.vue
+++ b/src/views/safeProduction/dangerInvestigation/index.vue
@@ -69,7 +69,11 @@
                          show-overflow-tooltip />
         <el-table-column label="涓婃姤鏃堕棿"
                          prop="createTime"
-                         show-overflow-tooltip />
+                         show-overflow-tooltip >
+          <template #default="scope">
+            {{ scope.row.createTime ? scope.row.createTime.split(' ')[0] : '-' }}
+          </template>
+        </el-table-column>
         <el-table-column label="鏁存敼瀹屾垚鏈熼檺"
                          prop="rectifyTime"
                          width="120"

--
Gitblit v1.9.3