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