From 5ae97428bee75124a0f12dac12df35efeb6f5204 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期一, 13 十月 2025 16:39:44 +0800
Subject: [PATCH] 优化

---
 components/mold.vue |  140 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 100 insertions(+), 40 deletions(-)

diff --git a/components/mold.vue b/components/mold.vue
index 4bc7868..b322b5b 100644
--- a/components/mold.vue
+++ b/components/mold.vue
@@ -69,7 +69,7 @@
 						<th>浣跨敤娆℃暟</th>
 						<th>浣跨敤涓婇檺</th>
 						<th>瀵垮懡姣�%</th>
-						<th>瀵垮懡棰勮鍊�</th>
+						<th>瀵垮懡姣旈璀﹀��</th>
 						<th>棰勮鐘舵��</th>
 					</tr>
 				</thead>
@@ -236,6 +236,8 @@
 				});
 				if (res.status === 0) {
 					this.$showMessage('涓婂垁鎻愪氦鎴愬姛');
+					// 鎴愬姛鍚庡埛鏂板垪琛�
+					await this.fetchFormData();
 				} else {
 					this.$showMessage(res.message || '涓婂垁鎻愪氦澶辫触');
 				}
@@ -276,6 +278,8 @@
 				});
 				if (res.status === 0) {
 					this.$showMessage('涓嬪垁鎻愪氦鎴愬姛');
+					// 鎴愬姛鍚庡埛鏂板垪琛�
+					await this.fetchFormData();
 				} else {
 					this.$showMessage(res.message || '涓嬪垁鎻愪氦澶辫触');
 				}
@@ -286,6 +290,7 @@
 				this.toolModel = '';
 			},
 			async fetchFormData() {
+				// 閲嶅啓锛氬寮哄吋瀹规�с�佺粺涓�瀛楁鏄犲皠銆佹牸寮忓寲鏃堕棿鍜岀櫨鍒嗘瘮锛岃绠楅璀︾姸鎬�
 				if (!this.workOrderNo || !this.machineNo) {
 					console.warn('宸ュ崟鍙锋垨鏈哄彴鍙蜂负绌猴紝璺宠繃鑾峰彇琛ㄥ崟鏁版嵁');
 					return;
@@ -297,7 +302,7 @@
 				};
 
 				try {
-					console.log('璇锋眰鍙傛暟:', payload); // 娣诲姞璋冭瘯鏃ュ織
+					console.log('璇锋眰鍙傛暟:', payload);
 
 					const res = await this.$post({
 						url: '/MesCutterLedger/GetFormData',
@@ -305,50 +310,105 @@
 						headers: { 'Content-Type': 'application/json' }
 					});
 
-					if (res.status === 0) {
-						console.log('鑾峰彇鏁版嵁鎴愬姛:', res.data);
-
-						// 鍏煎澶氱杩斿洖缁撴瀯锛屽彇鍒版暟缁�
-						const list = Array.isArray(res.data) ? res.data
-							: (res.data && res.data.tbBillList) ? res.data.tbBillList
-								: (res.data && res.data.data) ? res.data.data
-									: [];
-
-						const getField = (obj, ...keys) => {
-							for (const k of keys) if (obj?.[k] !== undefined && obj?.[k] !== null) return obj[k];
-							return null;
-						};
-
-						// 鏄犲皠鍒版ā鏉夸娇鐢ㄧ殑瀛楁
-						this.toolRecords = (list || []).map(t => ({
-							id: getField(t, 'id', 'ID') || `${getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || ''}-${getField(t, 'uP_TIME') || ''}`,
-							no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no'),
-							name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name'),
-							upTime: getField(t, 'uP_TIME', 'UP_TIME', 'uPTime') || '',
-							upCount: getField(t, 'uP_COUNT', 'UP_COUNT') ?? '',
-							downTime: getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime') || '',
-							downCount: getField(t, 'dowN_COUNT', 'DOWN_COUNT') ?? '',
-							useCount: getField(t, 'usE_COUNT', 'USE_COUNT') ?? '',
-							useLimit: getField(t, 'usE_LIMIT', 'USE_LIMIT') ?? '',
-							lifePercent: getField(t, 'lifE_PERCENT', 'LIFE_PERCENT') ?? '',
-							lifeWarn: getField(t, 'lifE_WARN', 'LIFE_WARN') ?? '',
-							warnStatus: getField(t, 'status', 'STATUS') || ''
-						}));
-
-						// 濡傛灉鍚庣杩斿洖浜� totalCount锛屽彲浠ユ洿鏂� total锛堢敤浜庡垎椤垫樉绀猴級
-						const totalFromRes = Number(res.totalCount);
-						if (Number.isFinite(totalFromRes) && totalFromRes > 0) {
-							this.total = totalFromRes;
-						} else {
-							this.total = Number(res.data?.total ?? res.data?.totalCount ?? this.toolRecords.length) || 0;
-						}
-					} else {
+					if (res.status !== 0) {
 						this.$showMessage(res.message || '鑾峰彇琛ㄥ崟鏁版嵁澶辫触');
+						return;
+					}
+
+					// 鍏煎澶氱杩斿洖缁撴瀯锛屽彇鍒版暟缁�
+					const list = Array.isArray(res.data) ? res.data
+						: (res.data && res.data.tbBillList) ? res.data.tbBillList
+							: (res.data && res.data.data) ? res.data.data
+								: [];
+
+					const getField = (obj, ...keys) => {
+						for (const k of keys) if (obj?.[k] !== undefined && obj?.[k] !== null) return obj[k];
+						return null;
+					};
+
+					const parseNumber = v => {
+						if (v === null || v === undefined || v === '') return null;
+						const s = String(v).replace(/[,锛�%]/g, '').trim();
+						const n = parseFloat(s);
+						return Number.isFinite(n) ? n : null;
+					};
+
+					const formatPercent = n => (n === null || n === undefined || isNaN(n)) ? '' : `${Number(n).toFixed(2)}%`;
+
+					const mapped = (list || []).map(t => {
+						const upTimeRaw = getField(t, 'uP_TIME', 'UP_TIME', 'uPTime', 'UPTIME', 'UpTime');
+						const downTimeRaw = getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime', 'DOWNTIME');
+						const lifePercentRaw = getField(t, 'lifE_PERCENT', 'LIFE_PERCENT', 'lifePercent', 'LIFEPERCENT');
+						const lifeWarnRaw = getField(t, 'lifE_WARN', 'LIFE_WARN', 'lifeWarn', 'LIFEWARN');
+
+						const lifePercentNum = parseNumber(lifePercentRaw);
+						const lifeWarnNum = parseNumber(lifeWarnRaw);
+
+						// 棰勮瑙勫垯锛氬綋瀵垮懡姣� >= 棰勮鍊兼椂鏍囪 璀﹀憡锛堟牴鎹浘鐗囩ず渚嬶細90.01% vs 90% 涓� 璀﹀憡锛�
+						let warnStatus = getField(t, 'status', 'STATUS') || '';
+						if (lifeWarnNum !== null && lifePercentNum !== null) {
+							warnStatus = (lifePercentNum >= lifeWarnNum) ? '璀﹀憡' : '姝e父';
+						} else {
+							// 濡傛灉鍚庣鐩存帴鎻愪緵鐘舵�佸瓧娈碉紝鍒欎繚鐣欙紝鍚﹀垯榛樿绌�
+							warnStatus = warnStatus || '';
+						}
+
+						return {
+							id: getField(t, 'id', 'ID') || `${getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || ''}-${upTimeRaw || ''}`,
+							no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no') || '',
+							name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name') || '',
+							upTime: this.formatDateTime(upTimeRaw),
+							upCount: getField(t, 'uP_COUNT', 'UP_COUNT', 'upCount') ?? '',
+							downTime: this.formatDateTime(downTimeRaw),
+							downCount: getField(t, 'dowN_COUNT', 'DOWN_COUNT', 'downCount') ?? '',
+							useCount: getField(t, 'usE_COUNT', 'USE_COUNT', 'useCount') ?? '',
+							useLimit: getField(t, 'usE_LIMIT', 'USE_LIMIT', 'useLimit') ?? '',
+							lifePercent: formatPercent(lifePercentNum),
+							lifeWarn: lifeWarnNum !== null ? `${Number(lifeWarnNum).toFixed(0)}%` : (lifeWarnRaw ? String(lifeWarnRaw) : ''),
+							warnStatus
+						};
+					});
+
+					this.toolRecords = mapped;
+
+					// 鏇存柊 total锛氫紭鍏堜娇鐢ㄥ悗绔� totalCount锛屽惁鍒欎娇鐢ㄨ繑鍥炴暟缁勯暱搴�
+					const totalFromRes = Number(res.totalCount);
+					if (Number.isFinite(totalFromRes) && totalFromRes > 0) {
+						this.total = totalFromRes;
+					} else {
+						this.total = Number(res.data?.total ?? res.data?.totalCount ?? this.toolRecords.length) || 0;
 					}
 				} catch (error) {
 					console.error('鑾峰彇琛ㄥ崟鏁版嵁閿欒:', error);
 					this.$showMessage('鑾峰彇鏁版嵁澶辫触锛岃妫�鏌ョ綉缁滆繛鎺�');
 				}
+			},
+			formatDateTime(dateTimeStr) {
+				if (!dateTimeStr) return '';
+				// 鏀寔澶氱鍚庣鏃堕棿鏍煎紡锛欼SO / 鏃堕棿鎴� / 鑷畾涔夊瓧绗︿覆
+				// 浼樺厛灏濊瘯瑙f瀽涓� Date锛屽け璐ュ垯杩斿洖鍘熷瀛楃涓茬殑鍙鐗囨
+				try {
+					// 濡傛灉鏄椂闂存埑锛堢鎴栨绉掞級
+					const s = String(dateTimeStr).trim();
+					if (/^\d{10}$/.test(s)) {
+						const d = new Date(Number(s) * 1000);
+						return `${d.getMonth() + 1}-${d.getDate()} ${d.getHours()}:${String(d.getMinutes()).padStart(2, '0')}`;
+					}
+					if (/^\d{13}$/.test(s)) {
+						const d = new Date(Number(s));
+						return `${d.getMonth() + 1}-${d.getDate()} ${d.getHours()}:${String(d.getMinutes()).padStart(2, '0')}`;
+					}
+					const date = new Date(dateTimeStr);
+					if (!isNaN(date.getTime())) {
+						return `${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${String(date.getMinutes()).padStart(2, '0')}`;
+					}
+					// 鍥為��锛氭埅鍙栧埌鏃ユ湡鍜屾椂闂撮儴鍒嗭紙甯歌鏍煎紡锛�
+					const match = String(dateTimeStr).match(/(\d{1,4}[-\/]\d{1,2}[-\/]\d{1,2}).*?(\d{1,2}:\d{2})/);
+					if (match) return `${match[1].replace(/-/g, '/').replace(/^\d{4}\//, (m) => m)} ${match[2]}`;
+					return String(dateTimeStr);
+				} catch {
+					return String(dateTimeStr);
+				}
 			}
 			//// 娣诲姞杈呭姪鏂规硶
 			//formatDateTime(dateTimeStr) {

--
Gitblit v1.9.3