WealthSubScores.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <view class="wealth-sub-scores">
  3. <view class="section-title">
  4. <text class="title">{{ isParent ? '财富维度构成' : '富能量构成' }}</text>
  5. </view>
  6. <!-- 家长三子维度 -->
  7. <view class="sub-grid" v-if="isParent">
  8. <view class="sub-item">
  9. <view class="sub-label">金钱收入</view>
  10. <view class="sub-value" :class="getScoreClass(income)">{{ income }}</view>
  11. <view class="sub-weight">权重 50%</view>
  12. </view>
  13. <view class="sub-item">
  14. <view class="sub-label">社会成就</view>
  15. <view class="sub-value" :class="getScoreClass(achievement)">{{ achievement }}</view>
  16. <view class="sub-weight">权重 30%</view>
  17. </view>
  18. <view class="sub-item">
  19. <view class="sub-label">资源网络</view>
  20. <view class="sub-value" :class="getScoreClass(network)">{{ network }}</view>
  21. <view class="sub-weight">权重 20%</view>
  22. </view>
  23. </view>
  24. <!-- 孩子三子维度 -->
  25. <view class="sub-grid" v-else>
  26. <view class="sub-item">
  27. <view class="sub-label">学业成绩</view>
  28. <view class="sub-value" :class="getScoreClass(education)">{{ education }}</view>
  29. <view class="sub-weight">权重 30%</view>
  30. </view>
  31. <view class="sub-item">
  32. <view class="sub-label">社交筹码</view>
  33. <view class="sub-value" :class="getScoreClass(social)">{{ social }}</view>
  34. <view class="sub-weight">权重 20%</view>
  35. </view>
  36. <view class="sub-item">
  37. <view class="sub-label">规则博弈</view>
  38. <view class="sub-value" :class="getScoreClass(points)">{{ points }}</view>
  39. <view class="sub-weight">权重 50%</view>
  40. </view>
  41. </view>
  42. </view>
  43. </template>
  44. <script>
  45. export default {
  46. name: 'WealthSubScores',
  47. props: {
  48. role: {
  49. type: String,
  50. default: 'parent'
  51. },
  52. income: {
  53. type: Number,
  54. default: 0
  55. },
  56. achievement: {
  57. type: Number,
  58. default: 0
  59. },
  60. network: {
  61. type: Number,
  62. default: 0
  63. },
  64. education: {
  65. type: Number,
  66. default: 0
  67. },
  68. social: {
  69. type: Number,
  70. default: 0
  71. },
  72. points: {
  73. type: Number,
  74. default: 0
  75. }
  76. },
  77. computed: {
  78. isParent() {
  79. return this.role === 'parent'
  80. }
  81. },
  82. methods: {
  83. getScoreClass(score) {
  84. if (score >= 80) return 'score-excellent'
  85. if (score >= 60) return 'score-good'
  86. if (score >= 40) return 'score-average'
  87. return 'score-poor'
  88. }
  89. }
  90. }
  91. </script>
  92. <style scoped>
  93. .wealth-sub-scores {
  94. margin: 20rpx;
  95. padding: 24rpx;
  96. background: #fff;
  97. border-radius: 12rpx;
  98. box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
  99. }
  100. .section-title {
  101. margin-bottom: 20rpx;
  102. }
  103. .section-title .title {
  104. font-size: 30rpx;
  105. font-weight: bold;
  106. color: #333;
  107. }
  108. .sub-grid {
  109. display: flex;
  110. flex-direction: row;
  111. justify-content: space-between;
  112. }
  113. .sub-item {
  114. flex: 1;
  115. text-align: center;
  116. padding: 20rpx;
  117. background: #f9f9f9;
  118. border-radius: 8rpx;
  119. margin: 0 8rpx;
  120. }
  121. .sub-item:first-child {
  122. margin-left: 0;
  123. }
  124. .sub-item:last-child {
  125. margin-right: 0;
  126. }
  127. .sub-label {
  128. font-size: 24rpx;
  129. color: #666;
  130. margin-bottom: 12rpx;
  131. }
  132. .sub-value {
  133. font-size: 40rpx;
  134. font-weight: bold;
  135. margin-bottom: 8rpx;
  136. }
  137. .score-excellent {
  138. color: #52c41a;
  139. }
  140. .score-good {
  141. color: #1890ff;
  142. }
  143. .score-average {
  144. color: #faad14;
  145. }
  146. .score-poor {
  147. color: #ff4d4f;
  148. }
  149. .sub-weight {
  150. font-size: 20rpx;
  151. color: #999;
  152. }
  153. </style>