From b425da0611b39f20fc868645c59e17f72b70d148 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 06 十月 2026 02:38:32 +0800
Subject: [PATCH] feat(holiday): 调整弹窗按日期显示国省道调整前值
---
HANDOFF.md | 8 ++
traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentServiceTest.java | 85 +++++++++++++++++++++
traffic-audit-server/src/main/java/com/trafficaudit/holiday/entity/HolidayVehicleAdjustment.java | 3
traffic-audit-web/src/views/HolidayStat.vue | 61 ++++++++++++++-
traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayVehicleAdjustmentController.java | 12 +++
traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentService.java | 61 ++++++++++++++-
6 files changed, 222 insertions(+), 8 deletions(-)
diff --git a/HANDOFF.md b/HANDOFF.md
index c0d5351..cd15b68 100644
--- a/HANDOFF.md
+++ b/HANDOFF.md
@@ -6,6 +6,14 @@
## 鏈�鏂帮紙2026-10-06锛�
+### 10-06锛氬線骞村浗鐪侀亾璋冩暣鍒楄〃琛ュ厖璋冩暣鍓嶅��
+
+- **鏀瑰姩**锛氳皟鏁村垪琛ㄦ帴鍙e湪鍚屼竴骞翠唤銆佸悓涓�鏃ユ湡銆佹櫘閫氬浗鐪侀亾鍙e緞涓嬶紝浠� `holiday_vehicle_flow` 琛ヨ繑鍥� `originalValue`锛涙病鏈夊師濮嬭褰曟椂淇濇寔绌猴紝椤甸潰涓嶆樉绀哄崰浣嶇銆傝〃鏍兼柊澧炩�滆皟鏁村墠鍥界渷閬撹溅娴侀噺锛堜竾杈嗘锛夆�濓紝鍘熲�滆皟鏁村悗鍥界渷閬撹溅娴佲�濇敼涓衡�滆皟鏁村悗鍥界渷閬撹溅娴侀噺鈥濄��
+- **寮圭獥**锛氭柊澧�/缂栬緫寮圭獥鍚屾澧炲姞鍙鈥滆皟鏁村墠鍥界渷閬撹溅娴侀噺锛堜竾杈嗘锛夆�濓紱缂栬緫宸叉湁璁板綍鏃跺睍绀� `originalValue`锛屾棤鍘熷�兼垨鏂伴�夋嫨鏃ユ湡鏃朵笉鏄剧ず鍐呭銆傚垏鎹㈠勾浠芥垨鏃ユ湡浼氭竻绌烘棫鍘熷�硷紝閬垮厤閿欐棩灞曠ず銆�
+- **闅忔棩鏈熷埛鏂�**锛氭柊澧炴帴鍙� `GET /api/holiday/adjustments/source-value`锛屾寜鎵�閫夊勾浠藉拰鏃ユ湡瀹炴椂璇诲彇鏅�氬浗鐪侀亾鍘熷�硷紱鏂板/缂栬緫寮圭獥閫夋棩鏈熷悗鑷姩鍒锋柊锛屾湭鏌ュ埌婧愭暟鎹椂鏄剧ず涓虹┖銆傚墠绔敤璇锋眰搴忓彿涓㈠純杩熷埌鐨勬棫璇锋眰锛岄伩鍏嶅揩閫熸崲鏃ユ湡鏃朵覆鍊笺��
+- **杈圭晫**锛歚originalValue` 鍙槸鍒楄〃灞曠ず瀛楁锛屾爣璁颁负 `@TableField(exist = false)`锛屼笉鍐欏簱銆佷笉鍙備笌璋冩暣銆佺幆姣斿垎姣嶃�佺疮璁℃垨璧板娍鍥捐绠椼��
+- **楠岃瘉**锛歚mvn -o test` 11 涓祴璇曞叏閮ㄩ�氳繃锛沗npm run build` 閫氳繃锛涙湰鍦伴噸鍚悗鍙鏍稿 2025-10-03/04/05 鍘熷�煎垎鍒负 `362.0035/337.9501/334.2040`锛屾棤婧愭暟鎹殑 2025-10-09 杩斿洖绌恒�傛祴璇曟姤鍛婏細`docs/鍔熻兘娴嬭瘯鎶ュ憡/鍔熻兘娴嬭瘯鎶ュ憡_寰�骞村浗鐪侀亾璋冩暣鍘熷�煎睍绀篲2026-10-06.md`锛堟湰鍦扮暀瀛橈紝涓嶅叆搴擄級銆�
+
### 10-06锛氭柟妗� D 宸插疄鐜帮紙寰�骞村浗鐪侀亾璋冩暣琛� + 鐜瘮鍩烘湡鍙綔鐢ㄤ簬鍓嶄竴鏃ュ垎姣嶏級
- **鏈�缁堝彛寰�**锛歚HolidayStatService.loadVehicleByDate` 鍏堢敤 `holiday_vehicle_adjustment` 瑕嗙洊瀵瑰簲鍘嗗彶骞翠唤鐨勨�滃綋鏃ュ�尖�濓紝渚涜蛋鍔垮浘銆佸悓姣斻�佺疮璁″拰蹇姤浣跨敤锛涢殢鍚庢瀯閫犫�滃墠涓�鏃ョ幆姣斿垎姣嶁�濓紝鑻ュ墠涓�鏃ユ櫘閫氬浗鐪侀亾 C 鍒楁湁鍊硷紝鍒欑敤 C 鏇挎崲璇ユ棩鍓嶄竴鏃ュ浗鐪侀亾鍊硷紝骞舵嵁姝ら噸绠楅潪钀ヤ笟鎬т汉鍛樻祦鍔ㄩ噺銆佸叕璺汉鍛樻祦鍔ㄩ噺鍜屾�昏銆傛墍鏈夌幆姣旇鍙户鎵胯繖浠藉垎姣嶃��
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayVehicleAdjustmentController.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayVehicleAdjustmentController.java
index cedc9f2..932b9a3 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayVehicleAdjustmentController.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/controller/HolidayVehicleAdjustmentController.java
@@ -13,6 +13,8 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@@ -30,6 +32,16 @@
return Result.ok(adjustmentService.list(year));
}
+ @GetMapping("/source-value")
+ public Result<BigDecimal> sourceValue(@RequestParam("year") Integer year,
+ @RequestParam("flowDate") String flowDate) {
+ try {
+ return Result.ok(adjustmentService.findOriginalValue(year, LocalDate.parse(flowDate)));
+ } catch (Exception e) {
+ return Result.error(400, e.getMessage());
+ }
+ }
+
@PostMapping("/save")
public Result<HolidayVehicleAdjustment> save(@RequestHeader(value = "Authorization", required = false) String auth,
@RequestBody Map<String, Object> params) {
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/entity/HolidayVehicleAdjustment.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/entity/HolidayVehicleAdjustment.java
index 8b9e561..ffbcfd3 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/entity/HolidayVehicleAdjustment.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/entity/HolidayVehicleAdjustment.java
@@ -1,6 +1,7 @@
package com.trafficaudit.holiday.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -17,6 +18,8 @@
private Integer year;
private LocalDate flowDate;
private BigDecimal adjustedValue;
+ @TableField(exist = false)
+ private BigDecimal originalValue;
private String reason;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentService.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentService.java
index d04d192..7823197 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentService.java
@@ -1,8 +1,11 @@
package com.trafficaudit.holiday.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.trafficaudit.holiday.HolidayConstants;
import com.trafficaudit.holiday.HolidayNumberUtils;
import com.trafficaudit.holiday.entity.HolidayVehicleAdjustment;
+import com.trafficaudit.holiday.entity.HolidayVehicleFlow;
+import com.trafficaudit.holiday.mapper.HolidayVehicleFlowMapper;
import com.trafficaudit.holiday.mapper.HolidayVehicleAdjustmentMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -11,8 +14,11 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
@Service
public class HolidayVehicleAdjustmentService {
@@ -21,12 +27,55 @@
@Resource
private HolidayVehicleAdjustmentMapper adjustmentMapper;
+ @Resource
+ private HolidayVehicleFlowMapper vehicleFlowMapper;
public List<HolidayVehicleAdjustment> list(Integer year) {
- return adjustmentMapper.selectList(new LambdaQueryWrapper<HolidayVehicleAdjustment>()
- .eq(year != null, HolidayVehicleAdjustment::getYear, year)
- .orderByDesc(HolidayVehicleAdjustment::getYear)
- .orderByAsc(HolidayVehicleAdjustment::getFlowDate));
+ List<HolidayVehicleAdjustment> rows = adjustmentMapper.selectList(
+ new LambdaQueryWrapper<HolidayVehicleAdjustment>()
+ .eq(year != null, HolidayVehicleAdjustment::getYear, year)
+ .orderByDesc(HolidayVehicleAdjustment::getYear)
+ .orderByAsc(HolidayVehicleAdjustment::getFlowDate));
+ if (rows.isEmpty()) return rows;
+
+ Set<Integer> years = new HashSet<>();
+ for (HolidayVehicleAdjustment row : rows) {
+ if (row.getYear() != null) years.add(row.getYear());
+ }
+ if (years.isEmpty()) return rows;
+
+ List<HolidayVehicleFlow> sourceRows = vehicleFlowMapper.selectList(
+ new LambdaQueryWrapper<HolidayVehicleFlow>()
+ .eq(HolidayVehicleFlow::getRoadCategory, HolidayConstants.ROAD_NATIONAL_PROVINCIAL)
+ .eq(HolidayVehicleFlow::getVehicleType, HolidayConstants.VEHICLE_MEDIUM_SMALL_PASSENGER)
+ .in(HolidayVehicleFlow::getYear, years));
+ Map<String, BigDecimal> originalValues = new HashMap<>();
+ for (HolidayVehicleFlow sourceRow : sourceRows) {
+ if (sourceRow.getYear() == null || sourceRow.getFlowDate() == null || sourceRow.getVehicleCount() == null) {
+ continue;
+ }
+ originalValues.put(sourceKey(sourceRow.getYear(), sourceRow.getFlowDate()), sourceRow.getVehicleCount());
+ }
+ for (HolidayVehicleAdjustment row : rows) {
+ if (row.getYear() != null && row.getFlowDate() != null) {
+ row.setOriginalValue(originalValues.get(sourceKey(row.getYear(), row.getFlowDate())));
+ }
+ }
+ return rows;
+ }
+
+ public BigDecimal findOriginalValue(Integer year, LocalDate flowDate) {
+ if (year == null || flowDate == null || flowDate.getYear() != year) {
+ throw new IllegalArgumentException("骞翠唤鍜屾棩鏈熶笉姝g‘");
+ }
+ HolidayVehicleFlow sourceRow = vehicleFlowMapper.selectOne(
+ new LambdaQueryWrapper<HolidayVehicleFlow>()
+ .eq(HolidayVehicleFlow::getYear, year)
+ .eq(HolidayVehicleFlow::getFlowDate, flowDate)
+ .eq(HolidayVehicleFlow::getRoadCategory, HolidayConstants.ROAD_NATIONAL_PROVINCIAL)
+ .eq(HolidayVehicleFlow::getVehicleType, HolidayConstants.VEHICLE_MEDIUM_SMALL_PASSENGER)
+ .last("limit 1"));
+ return sourceRow == null ? null : sourceRow.getVehicleCount();
}
@Transactional
@@ -98,6 +147,10 @@
adjustmentMapper.deleteById(id);
}
+ private String sourceKey(Integer year, LocalDate flowDate) {
+ return year + "|" + flowDate;
+ }
+
private Long longValue(Object value) {
if (value == null || value.toString().trim().isEmpty()) return null;
return Long.valueOf(value.toString().trim());
diff --git a/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentServiceTest.java b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentServiceTest.java
new file mode 100644
index 0000000..4239b6d
--- /dev/null
+++ b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayVehicleAdjustmentServiceTest.java
@@ -0,0 +1,85 @@
+package com.trafficaudit.holiday.service;
+
+import com.trafficaudit.holiday.HolidayConstants;
+import com.trafficaudit.holiday.entity.HolidayVehicleAdjustment;
+import com.trafficaudit.holiday.entity.HolidayVehicleFlow;
+import com.trafficaudit.holiday.mapper.HolidayVehicleAdjustmentMapper;
+import com.trafficaudit.holiday.mapper.HolidayVehicleFlowMapper;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+class HolidayVehicleAdjustmentServiceTest {
+
+ @Test
+ void listAddsOriginalNationalProvincialValueAndLeavesMissingSourceBlank() throws Exception {
+ HolidayVehicleAdjustment adjusted = adjustment("2025-10-04", "337.5009");
+ HolidayVehicleAdjustment missingSource = adjustment("2025-10-05", "330.0000");
+
+ HolidayVehicleAdjustmentMapper adjustmentMapper = mock(HolidayVehicleAdjustmentMapper.class);
+ HolidayVehicleFlowMapper vehicleFlowMapper = mock(HolidayVehicleFlowMapper.class);
+ when(adjustmentMapper.selectList(any())).thenReturn(Arrays.asList(adjusted, missingSource));
+ when(vehicleFlowMapper.selectList(any())).thenReturn(Collections.singletonList(
+ vehicleFlow("2025-10-04", HolidayConstants.ROAD_NATIONAL_PROVINCIAL, "350.0000")));
+
+ HolidayVehicleAdjustmentService service = new HolidayVehicleAdjustmentService();
+ inject(service, "adjustmentMapper", adjustmentMapper);
+ inject(service, "vehicleFlowMapper", vehicleFlowMapper);
+
+ List<HolidayVehicleAdjustment> rows = service.list(2025);
+
+ assertEquals(0, new BigDecimal("350.0000").compareTo(rows.get(0).getOriginalValue()));
+ assertNull(rows.get(1).getOriginalValue());
+ }
+
+ @Test
+ void findOriginalValueReturnsMatchedValueAndNullWhenMissing() throws Exception {
+ HolidayVehicleFlowMapper vehicleFlowMapper = mock(HolidayVehicleFlowMapper.class);
+ when(vehicleFlowMapper.selectOne(any()))
+ .thenReturn(vehicleFlow("2025-10-04", HolidayConstants.ROAD_NATIONAL_PROVINCIAL, "337.9501"))
+ .thenReturn(null);
+
+ HolidayVehicleAdjustmentService service = new HolidayVehicleAdjustmentService();
+ inject(service, "vehicleFlowMapper", vehicleFlowMapper);
+
+ assertEquals(0, new BigDecimal("337.9501")
+ .compareTo(service.findOriginalValue(2025, LocalDate.of(2025, 10, 4))));
+ assertNull(service.findOriginalValue(2025, LocalDate.of(2025, 10, 5)));
+ assertThrows(IllegalArgumentException.class,
+ () -> service.findOriginalValue(2025, LocalDate.of(2024, 10, 4)));
+ }
+ private static HolidayVehicleAdjustment adjustment(String date, String adjustedValue) {
+ HolidayVehicleAdjustment row = new HolidayVehicleAdjustment();
+ row.setYear(LocalDate.parse(date).getYear());
+ row.setFlowDate(LocalDate.parse(date));
+ row.setAdjustedValue(new BigDecimal(adjustedValue));
+ return row;
+ }
+
+ private static HolidayVehicleFlow vehicleFlow(String date, String roadCategory, String value) {
+ HolidayVehicleFlow row = new HolidayVehicleFlow();
+ row.setYear(LocalDate.parse(date).getYear());
+ row.setFlowDate(LocalDate.parse(date));
+ row.setRoadCategory(roadCategory);
+ row.setVehicleCount(new BigDecimal(value));
+ return row;
+ }
+
+ private static void inject(Object target, String fieldName, Object value) throws Exception {
+ Field field = target.getClass().getDeclaredField(fieldName);
+ field.setAccessible(true);
+ field.set(target, value);
+ }
+}
diff --git a/traffic-audit-web/src/views/HolidayStat.vue b/traffic-audit-web/src/views/HolidayStat.vue
index cf226a1..6875128 100644
--- a/traffic-audit-web/src/views/HolidayStat.vue
+++ b/traffic-audit-web/src/views/HolidayStat.vue
@@ -100,7 +100,10 @@
<el-table :data="adjustments" border stripe size="small" style="margin-top:12px" v-loading="adjustmentLoading">
<el-table-column prop="year" label="骞翠唤" width="90" align="center"></el-table-column>
<el-table-column prop="flowDate" label="鏃ユ湡" width="130" align="center"></el-table-column>
- <el-table-column label="璋冩暣鍚庡浗鐪侀亾杞︽祦锛堜竾杈嗘锛�" width="230" align="right">
+ <el-table-column label="璋冩暣鍓嶅浗鐪侀亾杞︽祦閲忥紙涓囪締娆★級" width="240" align="right">
+ <template slot-scope="s">{{ formatOriginalAdjustmentValue(s.row.originalValue) }}</template>
+ </el-table-column>
+ <el-table-column label="璋冩暣鍚庡浗鐪侀亾杞︽祦閲忥紙涓囪締娆★級" width="240" align="right">
<template slot-scope="s">{{ formatAdjustmentValue(s.row.adjustedValue) }}</template>
</el-table-column>
<el-table-column prop="reason" label="璋冩暣鍘熷洜" min-width="280" show-overflow-tooltip></el-table-column>
@@ -113,15 +116,20 @@
</el-table-column>
</el-table>
<el-dialog :title="adjustmentForm.id ? '缂栬緫璋冩暣' : '鏂板璋冩暣'" :visible.sync="adjustmentDialogVisible" width="560px" v-dialog-drag>
- <el-form label-width="160px">
+ <el-form label-width="220px">
<el-form-item label="骞翠唤">
- <el-select v-model="adjustmentForm.year" style="width:100%" @change="adjustmentForm.flowDate = ''">
+ <el-select v-model="adjustmentForm.year" style="width:100%" @change="onAdjustmentYearChange">
<el-option v-for="item in availableAdjustmentYears" :key="item" :label="item + '骞�'" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鏃ユ湡">
<el-date-picker v-model="adjustmentForm.flowDate" type="date" value-format="yyyy-MM-dd"
- style="width:100%" :picker-options="adjustmentDatePickerOptions" placeholder="閫夋嫨鏃ユ湡"></el-date-picker>
+ style="width:100%" :picker-options="adjustmentDatePickerOptions" placeholder="閫夋嫨鏃ユ湡"
+ @change="onAdjustmentDateChange"></el-date-picker>
+ </el-form-item>
+ <el-form-item label="璋冩暣鍓嶅浗鐪侀亾杞︽祦閲忥紙涓囪締娆★級">
+ <el-input :value="formatOriginalAdjustmentValue(adjustmentForm.originalValue)" readonly
+ :placeholder="adjustmentOriginalLoading ? '鏌ヨ涓�...' : ''"></el-input>
</el-form-item>
<el-form-item label="璋冩暣鍚庤溅娴侀噺锛堜竾杈嗘锛�">
<el-input-number v-model="adjustmentForm.adjustedValue" :min="0" :precision="4" :step="0.0001" controls-position="right" style="width:100%"></el-input-number>
@@ -249,10 +257,13 @@
adjustmentLoading: false,
adjustmentDialogVisible: false,
adjustmentSaving: false,
+ adjustmentOriginalLoading: false,
+ adjustmentOriginalRequestId: 0,
adjustmentForm: {
id: null,
year: new Date().getFullYear() - 1,
flowDate: '',
+ originalValue: null,
adjustedValue: null,
reason: ''
}
@@ -319,11 +330,49 @@
id: source.id || null,
year: source.year || this.adjustmentYear,
flowDate: source.flowDate || '',
+ originalValue: source.originalValue === undefined || source.originalValue === null
+ ? null : Number(source.originalValue),
adjustedValue: source.adjustedValue === undefined || source.adjustedValue === null
? null : Number(source.adjustedValue),
reason: source.reason || ''
}
this.adjustmentDialogVisible = true
+ this.loadAdjustmentOriginalValue()
+ },
+ onAdjustmentYearChange() {
+ this.adjustmentOriginalRequestId += 1
+ this.adjustmentOriginalLoading = false
+ this.adjustmentForm.flowDate = ''
+ this.adjustmentForm.originalValue = null
+ },
+ onAdjustmentDateChange() {
+ this.loadAdjustmentOriginalValue()
+ },
+ loadAdjustmentOriginalValue() {
+ const year = this.adjustmentForm.year
+ const flowDate = this.adjustmentForm.flowDate
+ const requestId = ++this.adjustmentOriginalRequestId
+ this.adjustmentForm.originalValue = null
+ if (!year || !flowDate) {
+ this.adjustmentOriginalLoading = false
+ return
+ }
+ this.adjustmentOriginalLoading = true
+ api.get('/holiday/adjustments/source-value', { params: { year: year, flowDate: flowDate } })
+ .then(res => {
+ if (requestId !== this.adjustmentOriginalRequestId) return
+ if (res.code !== 200) throw new Error(res.message || '璋冩暣鍓嶅�煎姞杞藉け璐�')
+ this.adjustmentForm.originalValue = res.data === null || res.data === undefined || res.data === ''
+ ? null : Number(res.data)
+ })
+ .catch(err => {
+ if (requestId !== this.adjustmentOriginalRequestId) return
+ this.adjustmentForm.originalValue = null
+ this.showError(err, '璋冩暣鍓嶅�煎姞杞藉け璐�')
+ })
+ .finally(() => {
+ if (requestId === this.adjustmentOriginalRequestId) this.adjustmentOriginalLoading = false
+ })
},
saveAdjustment() {
const form = this.adjustmentForm
@@ -582,6 +631,10 @@
if (!Number.isFinite(number)) return value
return number.toFixed(4)
},
+ formatOriginalAdjustmentValue(value) {
+ if (value === null || value === undefined || value === '') return ''
+ return this.formatAdjustmentValue(value)
+ },
formatDateTime(value) {
if (!value) return '鈥�'
return String(value).replace('T', ' ').slice(0, 19)
--
Gitblit v1.9.1