diff --git a/src/views/index/components/sidebarUserInfo.vue b/src/views/index/components/sidebarUserInfo.vue
index 7039a29..f423e2a 100644
--- a/src/views/index/components/sidebarUserInfo.vue
+++ b/src/views/index/components/sidebarUserInfo.vue
@@ -53,17 +53,14 @@
+
奖衔冲刺
- 已完成 {{ sprintProgress.actualAchievedText }} / 目标
- {{ sprintProgress.targetText }}
+ 已完成 {{ awards.sumRealPv }} / 目标
+ {{ sprintProgress.target }}
@@ -207,59 +201,42 @@ export default {
},
...mapGetters(["userInfo"]),
sprintProgress() {
- const awardsData = this.awards || {}; // Handle case where awards might be null/undefined initially
- const targetPvStr = awardsData.targetPv;
- const sumRealPvStr = awardsData.sumRealPv; // User comment: 这是"小区仅需"的量,即差距
-
- if (
- typeof targetPvStr === "undefined" ||
- typeof sumRealPvStr === "undefined"
- ) {
- return {
- percentageString: "0%",
- actualAchievedText: "0.00",
- targetText: "0.00",
- gapText: "0.00",
- };
- }
+ const targetPvStr = this.awards?.targetPv;
+ const sumRealPvStr = this.awards?.sumRealPv; // 这是"小区仅需"的量,即差距
const targetPv = parseFloat(targetPvStr);
- const gapPv = parseFloat(sumRealPvStr); // sumRealPv is the gap
+ const sumRealPv = parseFloat(sumRealPvStr);
- let actualAchievedPv = 0;
+ let achievedPv = 0;
let percentage = 0;
- const numericTargetPv = Math.max(0, isNaN(targetPv) ? 0 : targetPv);
+ const numericTargetPv =
+ Math.floor((isNaN(targetPv) ? 0 : targetPv) * 100) / 100;
- if (numericTargetPv > 0) {
- actualAchievedPv =
- numericTargetPv - (isNaN(gapPv) ? numericTargetPv : gapPv);
- actualAchievedPv = Math.max(0, actualAchievedPv);
- actualAchievedPv = Math.min(actualAchievedPv, numericTargetPv);
- percentage = (actualAchievedPv / numericTargetPv) * 100;
- } else if (numericTargetPv === 0) {
- if (!isNaN(gapPv) && gapPv <= 0) {
- actualAchievedPv = 0;
- percentage = 100;
- } else {
- actualAchievedPv = 0;
- percentage = 0;
- }
+ if (!isNaN(targetPv) && targetPv > 0) {
+ // sumRealPv 是差距,所以已完成的是 targetPv - sumRealPv
+ achievedPv = targetPv - (isNaN(sumRealPv) ? 0 : sumRealPv);
+
+ achievedPv = Math.max(0, Math.min(achievedPv, targetPv));
+
+ percentage = (sumRealPvStr / targetPv) * 100;
+ } else if (
+ !isNaN(targetPv) &&
+ targetPv === 0 &&
+ !isNaN(sumRealPv) &&
+ sumRealPv <= 0
+ ) {
+ // 如果目标是0,且差距也是0或负数(表示已满足或超越0目标),则认为是100%
+ achievedPv = 0;
+ percentage = 100;
}
- const clampedPercentage = Math.min(
- 100,
- Math.max(0, isNaN(percentage) ? 0 : percentage)
- );
+ const clampedPercentage = Math.min(100, Math.max(0, percentage));
return {
percentageString: `${Math.floor(clampedPercentage)}%`,
- actualAchievedText: (Math.floor(actualAchievedPv * 100) / 100).toFixed(
- 2
- ),
- targetText: numericTargetPv.toFixed(2),
- gapText: (Math.floor((isNaN(gapPv) ? 0 : gapPv) * 100) / 100).toFixed(
- 2
- ),
+ achieved: (Math.floor(achievedPv * 100) / 100).toFixed(2),
+ target: numericTargetPv.toFixed(2),
+ rawPercentage: clampedPercentage,
};
},
},