From 2f984560bb14fb157ad24bea0e2d96b9ccdc896b Mon Sep 17 00:00:00 2001
From: p-honggang.li <p-honggang.li@pcitc.com>
Date: 星期四, 14 八月 2025 19:22:42 +0800
Subject: [PATCH] 修改积分设置页面

---
 src/views/pointsManage/settings/index.vue |  340 ++++++++++++++++----------------------------------------
 1 files changed, 99 insertions(+), 241 deletions(-)

diff --git a/src/views/pointsManage/settings/index.vue b/src/views/pointsManage/settings/index.vue
index 4470b14..b73ed42 100644
--- a/src/views/pointsManage/settings/index.vue
+++ b/src/views/pointsManage/settings/index.vue
@@ -11,14 +11,14 @@
           </template>
           
           <!-- 璧勬簮璐$尞 -->
-          <div class="rule-category">
-            <h4>璧勬簮璐$尞</h4>
+          <div class="rule-category" v-for="rule in rules.getPointsRuleList">
+            <h4>{{ rule.category}}</h4>
             <div class="rule-subcategory">
-              <h5>鎻愭姤鏍囨潌</h5>
+              <!-- <h5>鎻愭姤鏍囨潌</h5> -->
               <div class="rule-items">
         
-              <div class="rule-item">
-                <span class="rule-desc">姣忔彁鎶�1涓爣鏉�,骞跺鎵瑰畬鎴�,鑾�</span>
+              <div class="rule-item" v-for="pointRuleDetial in rule.pointsRules">
+                <span class="rule-desc">{{ pointRuleDetial.ruleName }} : {{ pointRuleDetial.ruleDescription}} </span>
                 <el-input 
                   v-model="rules.benchmarkSubmission" 
                   size="small"
@@ -26,10 +26,18 @@
                   placeholder="璇疯緭鍏�"
                 />
                 <span class="unit">绉垎</span>
+                <span class="unit" v-if="pointRuleDetial.isLimit === 1">,姣忔棩绉垎涓婇檺</span>
+                <el-input 
+                  v-model="rules.productSubscribedDailyLimit" 
+                  size="small"
+                  style="width: 80px;"
+                  placeholder="璇疯緭鍏�"
+                   v-if="pointRuleDetial.isLimit === 1"
+                />
               </div>
               </div>
             </div>
-            <div class="rule-subcategory">
+            <!-- <div class="rule-subcategory">
               <h5>鎻愭姤鐭ヨ瘑</h5>
               <div class="rule-items">
                 <div class="rule-item">
@@ -58,12 +66,12 @@
                 <span class="unit">绉垎</span>
               </div>
             </div>
-            </div>
+            </div> -->
            
           </div>
 
           <!-- 璧勬簮浜ゆ槗 -->
-          <div class="rule-category">
+          <!-- <div class="rule-category">
             <h4>璧勬簮浜ゆ槗</h4>
             <div class="rule-subcategory">
               <h5>浜у搧鎺ュ叆</h5>
@@ -95,191 +103,8 @@
               </div>
             </div>
             </div>
-          </div>
+          </div> -->
 
-          <!-- 璧勬簮浼犳挱 -->
-          <div class="rule-category">
-            <h4>璧勬簮浼犳挱</h4>
-            <div class="rule-subcategory">
-              <h5>鏁板瓧璧勬簮</h5>
-              <div class="rule-items">
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚闃�,鑾�</span>
-                <el-input 
-                  v-model="rules.productSubscribed" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                <el-input 
-                  v-model="rules.productSubscribedDailyLimit" 
-                  size="small"
-                  style="width: 80px;"
-                  placeholder="璇疯緭鍏�"
-                />
-              </div>
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚瘯鐢�,鑾�</span>
-                <el-input 
-                  v-model="rules.productTrialed" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                <el-input 
-                  v-model="rules.productTrialedDailyLimit" 
-                  size="small"
-                  style="width: 80px;"
-                  placeholder="璇疯緭鍏�"
-                />
-              </div>
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚偣璧�,鑾�</span>
-                <el-input 
-                  v-model="rules.resourceLiked" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                <el-input 
-                  v-model="rules.resourceLikedDailyLimit" 
-                  size="small"
-                  style="width: 80px;"
-                  placeholder="璇疯緭鍏�"
-                />
-              </div>
-              <!-- 鍚庣鏃犳瑙勫垯锛岀Щ闄ゆ椤癸紙濡傚悗绔悗缁敮鎸佸啀寮�鍚級 -->
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚瘯鐢�,鑾�</span>
-                <el-input 
-                  v-model="rules.productTrialed" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                <el-input 
-                  v-model="rules.productTrialedDailyLimit" 
-                  size="small"
-                  style="width: 80px;"
-                  placeholder="璇疯緭鍏�"
-                />
-              </div>
-              </div>
-            </div>
-            
-          </div>
-
-          <!-- 鐢ㄦ埛鍙備笌 -->
-          <div class="rule-category">
-            <h4>鐢ㄦ埛鍙備笌</h4>
-            <div class="rule-subcategory">
-              <h5>浜ゆ祦浜掑姩</h5>
-              <div class="rule-items">
-                <div class="rule-item">
-                  <span class="rule-desc">姣忔棩棣栨鐧诲綍,鑾�</span>
-                  <el-input 
-                    v-model="rules.dailyFirstLogin" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鍙戝竷鎻愰棶,鑾�</span>
-                  <el-input 
-                    v-model="rules.postQuestion" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                  <el-input 
-                    v-model="rules.postQuestionDailyLimit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鍙戝竷璇勮,鑾�</span>
-                  <el-input 
-                    v-model="rules.postComment" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                  <el-input 
-                    v-model="rules.postCommentDailyLimit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">璇勮琚偣璧�,鑾�</span>
-                  <el-input 
-                    v-model="rules.commentLiked" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎,姣忔棩绉垎涓婇檺</span>
-                  <el-input 
-                    v-model="rules.commentLikedDailyLimit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                </div>
-              </div>
-            </div>
-          </div>
-
-          <!-- 鍏朵粬 -->
-          <div class="rule-category">
-            <h4>鍏朵粬</h4>
-            <div class="rule-subcategory">
-              <h5>鑽h獕濂栧姳</h5>
-              <div class="rule-items">
-                <div class="rule-item">
-                  <span class="rule-desc">鎻愭姤浜у搧姣忔湀浜ゆ槗閲廡OP1,鑾�</span>
-                  <el-input 
-                    v-model="rules.monthlyTop1" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鎻愭姤浜у搧姣忔湀浜ゆ槗閲廡OP2,鑾�</span>
-                  <el-input 
-                    v-model="rules.monthlyTop2" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鎻愭姤浜у搧姣忔湀浜ゆ槗閲廡OP3,鑾�</span>
-                  <el-input 
-                    v-model="rules.monthlyTop3" 
-                    size="small"
-                    style="width: 60px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-              </div>
-            </div>
-          </div>
         </el-card>
       </div>
 
@@ -531,62 +356,91 @@
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { ArrowLeft } from '@element-plus/icons-vue'
 import pointsApi from '../../../api/pointsApi'
+import qs from 'qs'
 
 // 鑾峰彇璺敱瀹炰緥
 const route = useRoute()
 // 鑾峰彇璺敱鍙傛暟涓殑瑙勫垯id
 const ruleId = route.query.ruleId as string
 
+interface PointRule {
+  category: string,
+  pointsRules: PointRuleDetial[]
+}
+interface PointRuleDetial {
+  category: string,
+  id: number,
+  ruleDescription: string,
+  ruleName: string,
+  createdAt: string,
+  ruleType: number,
+  pointsWinner: number,
+  isLimit: number
+}
+
 // 绉垎瑙勫垯閰嶇疆
-const rules = ref({
-  // 绉垎鑾峰彇瑙勫垯
-  benchmarkSubmission: 100,
-  knowledgeSubmission: 100,
-  productSubmission: 200,
-  productAccess: 1000,
-  resourceTransaction: 50,
-  resourceFavorited: 1,
-  resourceFavoritedDailyLimit: 100,
-  resourceLiked: 1,
-  resourceLikedDailyLimit: 100,
-  resourceViewThreshold: 100,
-  resourceViewed: 1,
-  resourceVideoPlayed: 5,
-  resourceDocumentViewed: 2,
-  productSubscribed: 10,
-  productSubscribedDailyLimit: 500,
-  productTrialed: 5,
-  productTrialedDailyLimit: 200,
-  dailyFirstLogin: 1,
-  postQuestion: 1,
-  postQuestionDailyLimit: 50,
-  postComment: 1,
-  postCommentDailyLimit: 100,
-  commentLiked: 1,
-  commentLikedDailyLimit: 50,
-  // 鍏朵粬婕旂ず瀛楁锛堝悗绔湭淇濆瓨杩欎簺椤规椂浼氬拷鐣ワ級
-  monthlyTop1: 1000,
-  monthlyTop2: 500,
-  monthlyTop3: 300,
+interface PointsRules {
+  getPointsRuleList: PointRule[],
+  consumePointsRuleList: PointRule[],
+  benchmarkSubmission: number,
+  productSubscribedDailyLimit: number,
+  productAccess: number,
+  resourceTransaction: number,
+  productSubscribed: number,
+  productTrialed: number,
+  productTrialedDailyLimit: number,
+  resourceLiked: number,
+  resourceLikedDailyLimit: number,
+  dailyFirstLogin: number,
+  postQuestion: number,
+  postQuestionDailyLimit: number,
+  postComment: number,
+  postCommentDailyLimit: number,
+  commentLiked: number,
+  commentLikedDailyLimit: number,
+  monthlyTop1: number,
+  monthlyTop2: number,
+  monthlyTop3: number,
+  productUnfavorited: number,
+  productUnliked: number,
+  benchmarkPersonalToUnit: number,
+  benchmarkUnitToPersonal: number,
+  knowledgePersonalToUnit: number,
+  knowledgeUnitToPersonal: number,
+  productPersonalToUnit: number,
+  productUnitToPersonal: number
+}
 
-  // 绉垎娑堣�楄鍒�
-  resourceUnfavorited: 1,
-  resourceUnliked: 1,
-  productUnsubscribed: 10,
-  productUntrialed: 5,
-  deleteQuestion: 1,
-  deleteComment: 1,
-  commentUnliked: 1,
-  productUnfavorited: 2,
-  productUnliked: 1,
-
-  // 绉垎杞崲瑙勫垯
-  benchmarkPersonalToUnit: 100,
-  benchmarkUnitToPersonal: 100,
-  knowledgePersonalToUnit: 100,
-  knowledgeUnitToPersonal: 100,
-  productPersonalToUnit: 100,
-  productUnitToPersonal: 100,
+const rules = ref<PointsRules>({
+  consumePointsRuleList: [],
+  getPointsRuleList: [],
+  benchmarkSubmission: 0,
+  productSubscribedDailyLimit: 0,
+  productAccess: 0,
+  resourceTransaction: 0,
+  productSubscribed: 0,
+  productTrialed: 0,
+  productTrialedDailyLimit: 0,
+  resourceLiked: 0,
+  resourceLikedDailyLimit: 0,
+  dailyFirstLogin: 0,
+  postQuestion: 0,
+  postQuestionDailyLimit: 0,
+  postComment: 0,
+  postCommentDailyLimit: 0,
+  commentLiked: 0,
+  commentLikedDailyLimit: 0,
+  monthlyTop1: 0,
+  monthlyTop2: 0,
+  monthlyTop3: 0,
+  productUnfavorited: 0,
+  productUnliked: 0,
+  benchmarkPersonalToUnit: 0,
+  benchmarkUnitToPersonal: 0,
+  knowledgePersonalToUnit: 0,
+  knowledgeUnitToPersonal: 0,
+  productPersonalToUnit: 0,
+  productUnitToPersonal: 0
 })
 
 // 鑾峰彇绉垎瑙勫垯閰嶇疆
@@ -594,10 +448,14 @@
   try {
     if (ruleId) {
       // 濡傛灉鏈塺uleId鍙傛暟锛屽垯鑾峰彇鐗瑰畾瑙勫垯
-      const res = await pointsApi.getPointsRuleById(ruleId)
+     const formData = new URLSearchParams();
+     formData.append('ruleId', ruleId);
+
+      const res = await pointsApi.getPointsRuleById(formData)
       if (res.code === 200 && res.data) {
         // 灏嗗悗绔暟鎹槧灏勫埌鍓嶇瑙勫垯瀵硅薄
         Object.assign(rules.value, res.data)
+        console.log(rules.value)
       }
     } else {
       // 濡傛灉娌℃湁ruleId鍙傛暟锛屽垯鑾峰彇鎵�鏈夎鍒�

--
Gitblit v1.8.0