From fb4bca123e1559cb2856d592736d945ccb2b9df4 Mon Sep 17 00:00:00 2001
From: zhang_nuo <zhang_12370@163.com>
Date: 星期三, 02 九月 2026 18:02:22 +0800
Subject: [PATCH] feat[date]: 新增 parseDate 工具函数并统一日期展示格式

---
 src/views/equipmentManagement/upkeep/index.vue                  |    2 
 src/views/equipmentManagement/spareParts/index.vue              |    2 
 src/utils/ruoyi.js                                              |   41 ++++++++++++++++++++
 src/views/productionManagement/productionTraceability/index.vue |   14 +++---
 src/views/equipmentManagement/inspectionManagement/index.vue    |    2 
 src/views/inventoryManagement/stockReport/index.vue             |   15 +++++++
 6 files changed, 65 insertions(+), 11 deletions(-)

diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js
index 0d72c1a..21d3e65 100644
--- a/src/utils/ruoyi.js
+++ b/src/utils/ruoyi.js
@@ -4,6 +4,47 @@
  */
 
 // 鏃ユ湡鏍煎紡鍖�
+export function parseDate(time, pattern) {
+    if (arguments.length === 0 || !time) {
+        return null
+    }
+    const format = pattern || '{y}-{m}-{d}'
+    let date
+    if (typeof time === 'object') {
+        date = time
+    } else {
+        if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+            time = parseInt(time)
+        } else if (typeof time === 'string') {
+            time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '')
+        }
+        if ((typeof time === 'number') && (time.toString().length === 10)) {
+            time = time * 1000
+        }
+        date = new Date(time)
+    }
+    const formatObj = {
+        y: date.getFullYear(),
+        m: date.getMonth() + 1,
+        d: date.getDate(),
+        h: date.getHours(),
+        i: date.getMinutes(),
+        s: date.getSeconds(),
+        a: date.getDay()
+    }
+    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+        let value = formatObj[key]
+        // Note: getDay() returns 0 on Sunday
+        if (key === 'a') { return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value] }
+        if (result.length > 0 && value < 10) {
+            value = '0' + value
+        }
+        return value || 0
+    })
+    return time_str
+}
+
+// 鏃ユ湡鏍煎紡鍖�
 export function parseTime(time, pattern) {
   if (arguments.length === 0 || !time) {
     return null
diff --git a/src/views/equipmentManagement/inspectionManagement/index.vue b/src/views/equipmentManagement/inspectionManagement/index.vue
index da8ac99..e254d0d 100644
--- a/src/views/equipmentManagement/inspectionManagement/index.vue
+++ b/src/views/equipmentManagement/inspectionManagement/index.vue
@@ -224,7 +224,7 @@
     { prop: "registrant", label: "鐧昏浜�", minWidth: 120 },
     {
       prop: "createTime", label: "鐧昏鏃ユ湡", minWidth: 180,
-      formatData: cell => { if (!cell) return "-"; try { return dayjs(cell).format("YYYY-MM-DD HH:mm:ss"); } catch { return cell; } },
+      formatData: cell => { if (!cell) return "-"; try { return dayjs(cell).format("YYYY-MM-DD"); } catch { return cell; } },
     },
     { prop: "abnormalDescription", label: "寮傚父鎻忚堪", minWidth: 150 },
   ]);
diff --git a/src/views/equipmentManagement/spareParts/index.vue b/src/views/equipmentManagement/spareParts/index.vue
index abc13ae..a59f537 100644
--- a/src/views/equipmentManagement/spareParts/index.vue
+++ b/src/views/equipmentManagement/spareParts/index.vue
@@ -243,7 +243,7 @@
   { label: "澶囦欢鍚嶇О", prop: "sparePartsName" },
   { label: "棰嗙敤鏁伴噺", prop: "quantity" },
   { label: "鎿嶄綔浜�", prop: "operator" },
-  { label: "鏃堕棿", prop: "createTime" },
+  { label: "鏃堕棿", prop: "createTime",dataType:"date" },
 ]);
 
 const handleTabChange = async (name) => {
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 166ad24..61fe1a6 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -422,7 +422,7 @@
       label: "鐧昏鏃ユ湡",
       minWidth: 100,
       formatData: cell =>
-        cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-",
+        cell ? dayjs(cell).format("YYYY-MM-DD") : "-",
     },
     {
       fixed: "right",
diff --git a/src/views/inventoryManagement/stockReport/index.vue b/src/views/inventoryManagement/stockReport/index.vue
index 26bc8a0..615e943 100644
--- a/src/views/inventoryManagement/stockReport/index.vue
+++ b/src/views/inventoryManagement/stockReport/index.vue
@@ -152,7 +152,11 @@
                            prop="createTime"
                            width="200"
                            show-overflow-tooltip
-                           v-if="searchForm.reportType !== 'inout'" />
+                           v-if="searchForm.reportType !== 'inout'" >
+            <template #default="scope">
+              {{ getDate(scope.row.createTime) }}
+            </template>
+          </el-table-column>
           <el-table-column label="鍏ュ簱鎵规"
                            prop="inboundBatches"
                            width="180"
@@ -216,6 +220,7 @@
   import { ref, reactive, onMounted, nextTick, getCurrentInstance } from "vue";
   import { ElMessage } from "element-plus";
   import * as echarts from "echarts";
+  import dayjs from "dayjs";
   import pagination from "@/components/PIMTable/Pagination.vue";
   import {
     getStockInventoryInAndOutReportList,
@@ -261,6 +266,14 @@
     );
   };
 
+  const getDate = val =>{
+    console.log(val)
+    if(!val){
+      return "--"
+    }
+    return dayjs(val).isValid() ? dayjs(val).format('YYYY鈥慚M鈥慏D') : '--'
+  }
+
   // 鑾峰彇鏉ユ簮绫诲瀷閫夐」
   const fetchStockRecordTypeOptions = () => {
     findAllQualifiedStockInRecordTypeOptions().then(res => {
diff --git a/src/views/productionManagement/productionTraceability/index.vue b/src/views/productionManagement/productionTraceability/index.vue
index 15508ff..c3ef0a5 100644
--- a/src/views/productionManagement/productionTraceability/index.vue
+++ b/src/views/productionManagement/productionTraceability/index.vue
@@ -44,7 +44,7 @@
             </el-tag>
           </el-descriptions-item>
           <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ rowData.productionOrderDto?.customerName || '-' }}</el-descriptions-item>
-          <el-descriptions-item label="寮�濮嬫棩鏈�">{{ parseTime(rowData.productionOrderDto?.startTime) || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="寮�濮嬫棩鏈�">{{ parseDate(rowData.productionOrderDto?.startTime) || '-' }}</el-descriptions-item>
           <el-descriptions-item label="瀹屾垚杩涘害">
             <el-progress :percentage="rowData.productionOrderDto?.completionStatus>=100?100:rowData.productionOrderDto?.completionStatus"
                          :color="customColors(rowData.productionOrderDto?.completionStatus)"
@@ -132,8 +132,8 @@
             <el-descriptions-item label="鐢熶骇宸ュ崟鍙�">{{ detailData.workOrder.workOrderNo || '-' }}</el-descriptions-item>
             <el-descriptions-item label="璁″垝鏁伴噺">{{ detailData.workOrder.planQuantity || 0 }}</el-descriptions-item>
             <el-descriptions-item label="瀹屾垚鏁伴噺">{{ detailData.workOrder.completeQuantity || 0 }}</el-descriptions-item>
-            <el-descriptions-item label="瀹為檯寮�濮嬫椂闂�">{{ parseTime(detailData.workOrder.actualStartTime) || '-' }}</el-descriptions-item>
-            <el-descriptions-item label="瀹為檯缁撴潫鏃堕棿">{{ parseTime(detailData.workOrder.actualEndTime) || '-' }}</el-descriptions-item>
+            <el-descriptions-item label="瀹為檯寮�濮嬫椂闂�">{{ parseDate(detailData.workOrder.actualStartTime) || '-' }}</el-descriptions-item>
+            <el-descriptions-item label="瀹為檯缁撴潫鏃堕棿">{{ parseDate(detailData.workOrder.actualEndTime) || '-' }}</el-descriptions-item>
             <!-- <el-descriptions-item label="瀹屾垚杩涘害">
               <el-progress :percentage="detailData.workOrder.completionStatus >= 100 ? 100 : (detailData.workOrder.completionStatus || 0)"
                            :color="customColors(detailData.workOrder.completionStatus)"
@@ -157,7 +157,7 @@
             <el-table-column label="鍒涘缓鏃堕棿"
                              align="center">
               <template #default="{ row }">
-                {{ parseTime(row.createTime) }}
+                {{ parseDate(row.createTime) }}
               </template>
             </el-table-column>
             <el-table-column label="宸ユ椂锛坔锛�"
@@ -230,10 +230,10 @@
              :key="record.id"
              class="quality-record-block">
           <div class="detail-section">
-            <h3 class="section-title">妫�娴嬭褰� {{ index + 1 }} - {{ parseTime(record.createTime) }}</h3>
+            <h3 class="section-title">妫�娴嬭褰� {{ index + 1 }} - {{ parseDate(record.createTime) }}</h3>
             <el-descriptions :column="3"
                              border>
-              <el-descriptions-item label="妫�娴嬫棩鏈�">{{ parseTime(record.createTime) || '-' }}</el-descriptions-item>
+              <el-descriptions-item label="妫�娴嬫棩鏈�">{{ parseDate(record.createTime) || '-' }}</el-descriptions-item>
               <el-descriptions-item label="鎶ュ伐鍗曞彿">{{ record.reportNo || '-' }}</el-descriptions-item>
               <el-descriptions-item label="妫�楠屽憳">{{ record.userName || '-' }}</el-descriptions-item>
               <el-descriptions-item label="浜у搧鍚嶇О">{{ record.productName || '-' }}</el-descriptions-item>
@@ -287,7 +287,7 @@
   import { ref, reactive, onMounted, computed } from "vue";
   import { useRoute, useRouter } from "vue-router";
   import { ElMessage } from "element-plus";
-  import { parseTime } from "@/utils/ruoyi";
+  import { parseDate } from "@/utils/ruoyi";
   import InputModal from "@/views/productionManagement/productionReporting/Input.vue";
   import {
     getOrderDetail,

--
Gitblit v1.9.3