hookehuyr

fix(分数显示): 修复分数显示逻辑,支持0分显示并处理空值情况

修改多个组件中分数显示的条件判断,避免0分被隐藏
在首页视图添加总分显示的空值处理逻辑
更新分数映射处理逻辑,保留0分并清除不存在的分数映射
<!--
* @Date: 2022-08-30 11:34:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-11-24 17:53:08
* @LastEditTime: 2025-11-25 16:14:32
* @FilePath: /data-table/src/components/CheckboxField/index.vue
* @Description: 多项选择控件
-->
......@@ -14,7 +14,11 @@
<span v-if="item.component_props.max" style="color: gray">
(最多可选数:&nbsp;{{ item.component_props.max }})
</span>
<span v-if="item.component_props.x_score" style="margin-left: 0.5rem; color: red;">( {{ item.component_props.x_score }} 分 )</span>
<!-- TAG:显示分数时保留0分,仅在有值(非空字符串/非空/非undefined)时展示 -->
<span
v-if="item.component_props.x_score !== undefined && item.component_props.x_score !== null && item.component_props.x_score !== ''"
style="margin-left: 0.5rem; color: red;"
>( {{ item.component_props.x_score }} 分 )</span>
</div>
<div v-if="item.component_props.note" class="note" v-html="item.component_props.note" />
<van-field v-if="!item.component_props.readonly" :rules="item.rules" :border="false">
......
......@@ -11,7 +11,11 @@
<span v-if="item.component_props.disabled_show"><van-icon name="https://cdn.ipadbiz.cn/custom_form/icon/closed-eye1.png" /></span>
<span v-if="item.component_props.required" style="color: red">&nbsp;*</span>
<span :class="[ReadonlyShow ? 'readonly-show' : '']">{{ item.component_props.label }}</span>
<span v-if="item.component_props.x_score" style="margin-left: 0.5rem; color: red;">( {{ item.component_props.x_score }} 分 )</span>
<!-- TAG:显示分数时保留0分,仅在有值(非空字符串/非空/非undefined)时展示 -->
<span
v-if="item.component_props.x_score !== undefined && item.component_props.x_score !== null && item.component_props.x_score !== ''"
style="margin-left: 0.5rem; color: red;"
>( {{ item.component_props.x_score }} 分 )</span>
</div>
<van-field :name="item.name" :rules="item.rules" style="padding: 0;">
<template #input>
......
<!--
* @Date: 2022-08-30 11:34:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-11-24 17:54:22
* @LastEditTime: 2025-11-25 16:16:39
* @FilePath: /data-table/src/components/RadioField/index.vue
* @Description: 单项选择控件
-->
......@@ -11,7 +11,11 @@
<span v-if="item.component_props.disabled_show"><van-icon name="https://cdn.ipadbiz.cn/custom_form/icon/closed-eye1.png" /></span>
<span v-if="item.component_props.required" style="color: red">&nbsp;*</span>
<span :class="[ReadonlyShow ? 'readonly-show' : '']">{{ item.component_props.label }}</span>
<span v-if="item.component_props.x_score" style="margin-left: 0.5rem; color: red;">( {{ item.component_props.x_score }} 分 )</span>
<!-- TAG:显示分数时保留0分,仅在有值(非空字符串/非空/非undefined)时展示 -->
<span
v-if="item.component_props.x_score !== undefined && item.component_props.x_score !== null && item.component_props.x_score !== ''"
style="margin-left: 0.5rem; color: red;"
>( {{ item.component_props.x_score }} 分 )</span>
</div>
<div v-if="item.component_props.note" class="note" v-html="item.component_props.note" />
<van-field v-if="!item.component_props.readonly" :rules="item.rules">
......
<!--
* @Date: 2022-07-18 10:22:22
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-11-24 17:52:07
* @LastEditTime: 2025-11-25 16:20:30
* @FilePath: /data-table/src/views/index.vue
* @Description: 首页
-->
......@@ -20,7 +20,11 @@
<div v-if="PHeader.type === 'text'" class="PHeader-Text" v-html="PHeader.banner" />
</template>
<div v-if="PHeader.label" class="table-title" v-html="PHeader.label" />
<div v-if="PHeader.x_total_score" style="font-weight: bold; color: red; text-align: center; font-size: 0.9rem;">总分: {{ PHeader.x_total_score }}</div>
<!-- TAG:总分支持0分显示,避免因真假值判断被隐藏 -->
<div
v-if="PHeader.x_total_score !== undefined && PHeader.x_total_score !== null && PHeader.x_total_score !== ''"
style="font-weight: bold; color: red; text-align: center; font-size: 0.9rem;"
>总分: {{ PHeader.x_total_score }}</div>
<div v-if="PHeader.flow_node_name" style="text-align: center;">({{ PHeader.flow_node_name }})</div>
<div v-if="PHeader.description" class="table-desc" v-html="PHeader.description" />
<van-config-provider :theme-vars="themeVars">
......@@ -520,9 +524,15 @@ onMounted(async () => {
}
// 处理分页表单结果数据
if (object.x_score_map) {
// TAG:分数映射存在时才处理分页成绩(保留0分)
const score_map = object.x_score_map;
item.component_props.x_score = score_map[item.key] || '';
PHeader.value.x_total_score = score_map.x_total_score || '';
// 这里使用空值合并运算符,避免0分被当作假值
item.component_props.x_score = (score_map[item.key] ?? '');
PHeader.value.x_total_score = (score_map.x_total_score ?? '');
} else {
// TAG:分数映射不存在时清空分页成绩,避免残留展示
item.component_props.x_score = undefined;
PHeader.value.x_total_score = undefined;
}
}
});
......