Преглед изворни кода

fix: 修复分账记录页面退款类型显示和筛选问题

- ExtDLabel: 修复 setupLabel 字典查找失败时只 return 未赋值 state.text 导致标签不显示的 bug,增加 mittBus 监听字典加载完成后重新渲染
- ExtDSelect: setupDicts 增加 || [] 兜底,防止字典未加载时下拉为 undefined
- SplitRecordServiceImpl: type 查询参数显式转换为 Integer,避免 String 值传入 MyBatis-Plus .eq() 导致 SQL 类型不匹配
- SplitRecord/SplitRecordVo: 修正 JavaDoc 注释中过时的类型编号

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline пре 3 дана
родитељ
комит
e342c612c1

+ 1 - 0
admin-web/src/App.vue

@@ -107,6 +107,7 @@ const   refreshEnv = async ()=>{
   $body("/dataDict/list", {pageSize:1024}).then((list: any) => {
     var dictGroup = u.groupByKey(list,"code");
     Session.set("dicts", dictGroup);
+    mittBus.emit("dictsLoaded");
   })
 
   $get("/admin-user/profile").then(async (obj: any) => {

+ 21 - 12
admin-web/src/components/form/ExtDLabel.vue

@@ -95,8 +95,9 @@
   <span class="status-label" :style="state.style">{{ state.text }}</span>
 </template>
 <script setup lang="ts" name="ExtDLabel">
-import {onMounted, reactive,watch} from 'vue';
+import {onMounted, onBeforeUnmount, reactive,watch} from 'vue';
 import {Session} from "/@/utils/storage";
+import mittBus from '/@/utils/mitt';
 import u from "/@/utils/u";
 
 // const emit = defineEmits(['update:value']);
@@ -137,6 +138,11 @@ watch(()=>props.modelValue,(oldVal,newVal)=>{
 
 onMounted(() => {
   setupLabel()
+  mittBus.on("dictsLoaded", setupLabel);
+});
+
+onBeforeUnmount(() => {
+  mittBus.off("dictsLoaded", setupLabel);
 });
 
 const setupLabel = ()=>{
@@ -146,28 +152,31 @@ const setupLabel = ()=>{
       let {label, color} = data;
       state.text = label;
       state.style = setupColorStyle(color);
+    } else {
+      state.text = props.modelValue != null ? String(props.modelValue) : '-';
+      state.style = setupColorStyle('#909399');
     }
   } else {
     let dicts = [];
     const sessionDicts = Session.get("dicts");
     if (!u.isEmptyOrNull(sessionDicts)) {
-      dicts =sessionDicts[`${props.type}`]
-      if(u.isEmptyOrNull(dicts)){
-        return "-";
-      }
-    }else{
-      dicts =state.dicts[`${props.type}`]
-      if(u.isEmptyOrNull(dicts)){
-        return "-";
-      }
+      dicts = sessionDicts[`${props.type}`]
+    } else {
+      dicts = state.dicts[`${props.type}`]
+    }
+    if (u.isEmptyOrNull(dicts)) {
+      state.text = props.modelValue != null ? String(props.modelValue) : '-';
+      state.style = setupColorStyle('#909399');
+      return;
     }
     let dict = (<Dicts>dicts).find(k => k.value == props.modelValue);
 
     if (dict) {
       state.text = dict.name||dict.label;
       state.style = setupColorStyle(dict.color || state.colorList[dict.value%8||dict.value.length%8]);
-    }else{
-      return "-"
+    } else {
+      state.text = props.modelValue != null ? String(props.modelValue) : '-';
+      state.style = setupColorStyle('#909399');
     }
   }
 }

+ 2 - 3
admin-web/src/components/form/ExtDSelect.vue

@@ -116,13 +116,12 @@ const setupDicts = () => {
   } else {
     let dicts = Session.get("dicts");
     if (!u.isEmptyOrNull(dicts)) {
-      dictList = dicts[props.type];
+      dictList = dicts[props.type] || [];
     } else {
-      dictList = state.dictList[props.type]
+      dictList = state.dictList[props.type] || []
     }
   }
   state.dicts = dictList;
-  //console.table(dictList)
 }
 
 

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/SplitRecord.java

@@ -56,7 +56,7 @@ public class SplitRecord extends BaseEntity {
     private Integer amount;
 
     /**
-     * 交易类型(1-充值 2-消费 3-解冻 4-退款)
+     * 交易类型(0-平台服务费 1-充值 2-消费 3-解冻 4-跨店支出 5-退款 6-跨店收入)
      */
     private Integer type;
 

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/vo/SplitRecordVo.java

@@ -47,7 +47,7 @@ public class SplitRecordVo extends BaseEntity {
     private Integer amount;
 
     /**
-     * 交易类型(1-充值 2-消费 3-解冻 4-退款)
+     * 交易类型(0-平台服务费 1-充值 2-消费 3-解冻 4-跨店支出 5-退款 6-跨店收入)
      */
     private Integer type;
 

+ 2 - 1
car-wash-service/src/main/java/com/kym/service/impl/SplitRecordServiceImpl.java

@@ -49,7 +49,8 @@ public class SplitRecordServiceImpl extends MyBaseServiceImpl<SplitRecordMapper,
         
         var queryWrapper = lambdaQuery()
                 .like(CommUtil.isNotEmptyAndNull(params.getTradeNo()), SplitRecord::getTradeNo, params.getTradeNo())
-                .eq(CommUtil.isNotEmptyAndNull(params.getType()), SplitRecord::getType, params.getType());
+                .eq(CommUtil.isNotEmptyAndNull(params.getType()), SplitRecord::getType,
+                    CommUtil.isNotEmptyAndNull(params.getType()) ? Integer.valueOf(params.getType()) : null);
                 
         if (CommUtil.isNotEmptyAndNull(params.getStationId())) {
             queryWrapper.and(wrapper -> wrapper.eq(SplitRecord::getFromStationId, params.getStationId())