From c92b723d893bddd1cf9093e660806b226dc00921 Mon Sep 17 00:00:00 2001
From: seatonwan9
Date: 星期五, 15 八月 2025 19:01:56 +0800
Subject: [PATCH] 提交源码

---
 src/views/pointsManage/settings/index.vue |  531 ++++++++++++++++++++++++----------------------------------
 1 files changed, 222 insertions(+), 309 deletions(-)

diff --git a/src/views/pointsManage/settings/index.vue b/src/views/pointsManage/settings/index.vue
index b73ed42..c2aa98b 100644
--- a/src/views/pointsManage/settings/index.vue
+++ b/src/views/pointsManage/settings/index.vue
@@ -9,26 +9,26 @@
               <span class="section-title">绉垎鑾峰彇瑙勫垯</span>
             </div>
           </template>
-          
+
           <!-- 璧勬簮璐$尞 -->
           <div class="rule-category" v-for="rule in rules.getPointsRuleList">
             <h4>{{ rule.category}}</h4>
             <div class="rule-subcategory">
               <!-- <h5>鎻愭姤鏍囨潌</h5> -->
               <div class="rule-items">
-        
+
               <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" 
+                <el-input
+                  v-model="pointRuleDetial.pointsValue"
                   size="small"
                   style="width: 80px;"
                   placeholder="璇疯緭鍏�"
                 />
                 <span class="unit">绉垎</span>
                 <span class="unit" v-if="pointRuleDetial.isLimit === 1">,姣忔棩绉垎涓婇檺</span>
-                <el-input 
-                  v-model="rules.productSubscribedDailyLimit" 
+                <el-input
+                  v-model="pointRuleDetial.dailyLimit"
                   size="small"
                   style="width: 80px;"
                   placeholder="璇疯緭鍏�"
@@ -42,8 +42,8 @@
               <div class="rule-items">
                 <div class="rule-item">
                 <span class="rule-desc">姣忔彁鎶�1涓煡璇�,骞跺鎵瑰畬鎴�,鑾�</span>
-                <el-input 
-                  v-model="rules.knowledgeSubmission" 
+                <el-input
+                  v-model="rules.knowledgeSubmission"
                   size="small"
                   style="width: 80px;"
                   placeholder="璇疯緭鍏�"
@@ -57,8 +57,8 @@
               <div class="rule-items">
               <div class="rule-item">
                 <span class="rule-desc">姣忔彁鎶�1涓骇鍝�,骞跺鎵瑰畬鎴�,鑾�</span>
-                <el-input 
-                  v-model="rules.productSubmission" 
+                <el-input
+                  v-model="rules.productSubmission"
                   size="small"
                   style="width: 80px;"
                   placeholder="璇疯緭鍏�"
@@ -67,7 +67,7 @@
               </div>
             </div>
             </div> -->
-           
+
           </div>
 
           <!-- 璧勬簮浜ゆ槗 -->
@@ -78,8 +78,8 @@
               <div class="rule-items">
                 <div class="rule-item">
                 <span class="rule-desc">姣忔帴鍏�1涓骇鍝侊紝鑾�</span>
-                <el-input 
-                  v-model="rules.productAccess" 
+                <el-input
+                  v-model="rules.productAccess"
                   size="small"
                   style="width: 60px;"
                   placeholder="璇疯緭鍏�"
@@ -93,8 +93,8 @@
               <div class="rule-items">
               <div class="rule-item">
                 <span class="rule-desc">姣忎氦鏄�1涓祫婧�,鑾�</span>
-                <el-input 
-                  v-model="rules.resourceTransaction" 
+                <el-input
+                  v-model="rules.resourceTransaction"
                   size="small"
                   style="width: 60px;"
                   placeholder="璇疯緭鍏�"
@@ -117,228 +117,166 @@
               <span class="section-title">绉垎娑堣�楄鍒�</span>
             </div>
           </template>
-          
+
           <!-- 璧勬簮浼犳挱 -->
-          <div class="rule-category">
-            <h4>璧勬簮浼犳挱</h4>
+          <div class="rule-category" v-for="consumeRule in rules.consumePointsRuleList">
+            <h4>{{ consumeRule.category }}</h4>
             <div class="rule-subcategory">
-              <h5>鏁板瓧璧勬簮</h5>
+<!--              <h5>鏁板瓧璧勬簮</h5>-->
             <div class="rule-items">
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚彇娑堟敹钘�,鎵i櫎</span>
-                <el-input 
-                  v-model="rules.productUnfavorited" 
+              <div class="rule-item" v-for="pointRuleDetials in consumeRule.pointsRules">
+                <span class="rule-desc">{{ pointRuleDetials.ruleName }} : {{ pointRuleDetials.ruleDescription}}</span>
+                <el-input
+                  v-model="pointRuleDetials.pointsValue"
                   size="small"
                   style="width: 60px;"
                   placeholder="璇疯緭鍏�"
                 />
                 <span class="unit">绉垎</span>
-              </div>
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚彇娑堢偣璧�,鎵i櫎</span>
-                <el-input 
-                  v-model="rules.productUnliked" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎</span>
-              </div>
-            </div>
-            </div>
-            <div class="rule-subcategory">
-              <h5>浜у搧璁㈤槄</h5>
-            <div class="rule-items">
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚彇娑堣闃咃紝鎵i櫎</span>
-                <el-input 
-                  v-model="rules.productUnfavorited" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎</span>
-              </div>
-              <div class="rule-item">
-                <span class="rule-desc">鎻愭姤浜у搧琚彇娑堣瘯鐢紝鎵i櫎</span>
-                <el-input 
-                  v-model="rules.productUnliked" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎</span>
-              </div>
-            </div>
-            </div>
-            <div class="rule-subcategory">
-              <h5>浜ゆ祦绀惧尯</h5>
-            <div class="rule-items">
-              <div class="rule-item">
-                <span class="rule-desc">鍒犻櫎鎻愰棶锛屾墸闄�</span>
-                <el-input 
-                  v-model="rules.productUnfavorited" 
-                  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.productUnliked" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎</span>
-              </div>
-              <div class="rule-item">
-                <span class="rule-desc">璇勮琚彇娑堢偣璧烇紝鎵i櫎</span>
-                <el-input 
-                  v-model="rules.productUnliked" 
-                  size="small"
-                  style="width: 60px;"
-                  placeholder="璇疯緭鍏�"
-                />
-                <span class="unit">绉垎</span>
+                <span class="unit" v-if="pointRuleDetials.isLimit === 1">,姣忔棩绉垎涓婇檺</span>
+                  <el-input
+                          v-model="pointRuleDetials.dailyLimit"
+                          size="small"
+                          style="width: 80px;"
+                          placeholder="璇疯緭鍏�"
+                          v-if="pointRuleDetials.isLimit === 1"
+                  />
               </div>
             </div>
             </div>
           </div>
-       
+
         </el-card>
 
         <!-- 绉垎杞崲瑙勫垯 -->
-        <el-card class="rule-section" shadow="never">
-          <template #header>
-            <div class="card-header">
-              <span class="section-title">绉垎杞崲瑙勫垯</span>
-            </div>
-          </template>
-          
-          <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.benchmarkPersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栨爣鏉嗗崟浣�</span>
-                  <el-input 
-                    v-model="rules.benchmarkUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鏁板瓧鍖栨爣鏉嗗崟浣�</span>
-                  <el-input 
-                    v-model="rules.benchmarkUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栨爣鏉嗕釜浜�</span>
-                  <el-input 
-                    v-model="rules.benchmarkPersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-              </div>
-            </div>
-            <div class="rule-subcategory">
-              <h5>鏁板瓧鍖栫煡璇嗙Н鍒嗚浆鎹�</h5>
-              <div class="rule-items">
-                <div class="rule-item">
-                  <span class="rule-desc">鏁板瓧鍖栫煡璇嗕釜浜�</span>
-                  <el-input 
-                    v-model="rules.knowledgePersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栫煡璇嗗崟浣�</span>
-                  <el-input 
-                    v-model="rules.knowledgeUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鏁板瓧鍖栫煡璇嗗崟浣�</span>
-                  <el-input 
-                    v-model="rules.knowledgeUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栫煡璇嗕釜浜�</span>
-                  <el-input 
-                    v-model="rules.knowledgePersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-              </div>
-            </div>
-            <div class="rule-subcategory">
-              <h5>鏁板瓧鍖栦骇鍝佺Н鍒嗚浆鎹�</h5>
-              <div class="rule-items">
-                <div class="rule-item">
-                  <span class="rule-desc">鏁板瓧鍖栦骇鍝佷釜浜�</span>
-                  <el-input 
-                    v-model="rules.productPersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栦骇鍝佸崟浣�</span>
-                  <el-input 
-                    v-model="rules.productUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-                <div class="rule-item">
-                  <span class="rule-desc">鏁板瓧鍖栦骇鍝佸崟浣�</span>
-                  <el-input 
-                    v-model="rules.productUnitToPersonal" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栦骇鍝佷釜浜�</span>
-                  <el-input 
-                    v-model="rules.productPersonalToUnit" 
-                    size="small"
-                    style="width: 80px;"
-                    placeholder="璇疯緭鍏�"
-                  />
-                  <span class="unit">绉垎</span>
-                </div>
-              </div>
-            </div>
-          </div>
-        </el-card>
+<!--        <el-card class="rule-section" shadow="never">-->
+<!--          <template #header>-->
+<!--            <div class="card-header">-->
+<!--              <span class="section-title">绉垎杞崲瑙勫垯</span>-->
+<!--            </div>-->
+<!--          </template>-->
+
+<!--          <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.benchmarkPersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栨爣鏉嗗崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.benchmarkUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--                <div class="rule-item">-->
+<!--                  <span class="rule-desc">鏁板瓧鍖栨爣鏉嗗崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.benchmarkUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栨爣鏉嗕釜浜�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.benchmarkPersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--            <div class="rule-subcategory">-->
+<!--              <h5>鏁板瓧鍖栫煡璇嗙Н鍒嗚浆鎹�</h5>-->
+<!--              <div class="rule-items">-->
+<!--                <div class="rule-item">-->
+<!--                  <span class="rule-desc">鏁板瓧鍖栫煡璇嗕釜浜�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.knowledgePersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栫煡璇嗗崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.knowledgeUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--                <div class="rule-item">-->
+<!--                  <span class="rule-desc">鏁板瓧鍖栫煡璇嗗崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.knowledgeUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栫煡璇嗕釜浜�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.knowledgePersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--            <div class="rule-subcategory">-->
+<!--              <h5>鏁板瓧鍖栦骇鍝佺Н鍒嗚浆鎹�</h5>-->
+<!--              <div class="rule-items">-->
+<!--                <div class="rule-item">-->
+<!--                  <span class="rule-desc">鏁板瓧鍖栦骇鍝佷釜浜�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.productPersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栦骇鍝佸崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.productUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--                <div class="rule-item">-->
+<!--                  <span class="rule-desc">鏁板瓧鍖栦骇鍝佸崟浣�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.productUnitToPersonal"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎鍏戞崲鏁板瓧鍖栦骇鍝佷釜浜�</span>-->
+<!--                  <el-input-->
+<!--                    v-model="rules.productPersonalToUnit"-->
+<!--                    size="small"-->
+<!--                    style="width: 80px;"-->
+<!--                    placeholder="璇疯緭鍏�"-->
+<!--                  />-->
+<!--                  <span class="unit">绉垎</span>-->
+<!--                </div>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--          </div>-->
+<!--        </el-card>-->
       </div>
     </div>
 
@@ -351,17 +289,27 @@
 </template>
 
 <script setup lang="ts">
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, watch } from 'vue'
 import { useRoute } from 'vue-router'
 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
+// 瀹氫箟props
+interface Props {
+  ruleId?: string
+}
+
+const props = withDefaults(defineProps<Props>(), {
+  ruleId: ''
+})
+
+// 瀹氫箟emits
+const emit = defineEmits<{
+  goBack: []
+  saveSuccess: []
+}>()
 
 interface PointRule {
   category: string,
@@ -375,81 +323,29 @@
   createdAt: string,
   ruleType: number,
   pointsWinner: number,
-  isLimit: number
+  isLimit: number,
+  pointsValue: number,
+  dailyLimit: number
 }
 
 // 绉垎瑙勫垯閰嶇疆
 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
+  consumePointsRuleList: PointRule[]
 }
 
 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
+  getPointsRuleList: []
 })
 
 // 鑾峰彇绉垎瑙勫垯閰嶇疆
 const getPointsRules = async () => {
   try {
-    if (ruleId) {
+    if (props.ruleId) {
       // 濡傛灉鏈塺uleId鍙傛暟锛屽垯鑾峰彇鐗瑰畾瑙勫垯
-     const formData = new URLSearchParams();
-     formData.append('ruleId', ruleId);
+      const formData = new URLSearchParams();
+      formData.append('ruleId', props.ruleId);
 
       const res = await pointsApi.getPointsRuleById(formData)
       if (res.code === 200 && res.data) {
@@ -457,13 +353,8 @@
         Object.assign(rules.value, res.data)
         console.log(rules.value)
       }
-    } else {
-      // 濡傛灉娌℃湁ruleId鍙傛暟锛屽垯鑾峰彇鎵�鏈夎鍒�
-      const res = await pointsApi.getPointsRules()
-      if (res.code === 200 && res.data) {
-        // 灏嗗悗绔暟鎹槧灏勫埌鍓嶇瑙勫垯瀵硅薄
-        Object.assign(rules.value, res.data)
-      }
+    }else{
+      ElMessage.error('瀵瑰簲瑙勫垯璁剧疆涓嶅瓨鍦�')
     }
   } catch (error) {
     console.error('鑾峰彇绉垎瑙勫垯澶辫触:', error)
@@ -478,10 +369,16 @@
       cancelButtonText: '鍙栨秷',
       type: 'warning',
     })
-    
-    const res = await pointsApi.savePointsRules(rules.value)
+    let pointRuleDetials: PointRuleDetial[] = []
+    rules.value.getPointsRuleList.forEach(k => {
+        pointRuleDetials.push(...k.pointsRules)
+    })
+    rules.value.consumePointsRuleList.forEach(k =>  pointRuleDetials.push(...k.pointsRules))
+    const res = await pointsApi.savePointsRules(pointRuleDetials)
     if (res.code === 200) {
       ElMessage.success('淇濆瓨鎴愬姛')
+      // 鍙戝嚭淇濆瓨鎴愬姛浜嬩欢
+      emit('saveSuccess')
     } else {
       ElMessage.error(res.msg || '淇濆瓨澶辫触')
     }
@@ -501,7 +398,7 @@
       cancelButtonText: '鍙栨秷',
       type: 'warning',
     })
-    
+
     await getPointsRules()
     ElMessage.success('閲嶇疆鎴愬姛')
   } catch (error) {
@@ -514,11 +411,27 @@
 
 // 杩斿洖涓婁竴椤�
 const goBack = () => {
-  history.back()
+  // 濡傛灉鏄粠缁勪欢璋冪敤锛屽彂鍑篻oBack浜嬩欢
+  if (props.ruleId) {
+    emit('goBack')
+  } else {
+    // 鍚﹀垯浣跨敤鍘熸湁鐨勮繑鍥為�昏緫
+    history.back()
+  }
 }
 
+// 鐩戝惉ruleId鍙樺寲
+watch(() => props.ruleId, (newRuleId) => {
+  if (newRuleId) {
+    getPointsRules()
+  }
+}, { immediate: true })
+
 onMounted(() => {
-  getPointsRules()
+  // 鍙湁鍦ㄦ病鏈塸rops.ruleId鏃舵墠鎵ц鍘熸湁鐨勯�昏緫
+  if (!props.ruleId) {
+    getPointsRules()
+  }
 })
 </script>
 
@@ -548,7 +461,7 @@
         cursor: pointer;
         color: #409eff;
         font-size: 18px;
-        
+
         &:hover {
           color: #66b1ff;
         }
@@ -573,7 +486,7 @@
     max-width: 1665px;
     margin: 0 auto;
     margin-bottom: 40px;
-    
+
     @media (max-width: 768px) {
       flex-direction: column;
       gap: 16px;
@@ -585,7 +498,7 @@
     justify-content: center;
     gap: 20px;
     padding: 20px 0;
-    
+
     .el-button {
       min-width: 120px;
       height: 40px;
@@ -596,7 +509,7 @@
   .left-column {
     flex: 1;
     max-width: 50%;
-    
+
     @media (max-width: 768px) {
       max-width: 100%;
     }
@@ -608,7 +521,7 @@
     display: flex;
     flex-direction: column;
     gap: 20px;
-    
+
     @media (max-width: 768px) {
       max-width: 100%;
       gap: 16px;
@@ -618,13 +531,13 @@
   .rule-section {
     border-radius: 8px;
     border: 1px solid #e4e7ed;
-    
+
     .card-header {
       // background-color: #fafafa;
       // background-color: rgba(221, 230, 244, 1);
-      
+
       // border-bottom: 1px solid #e4e7ed;
-      
+
       .section-title {
         font-size: 16px;
         font-weight: 600;
@@ -697,11 +610,11 @@
       :deep(.el-input) {
         .el-input__wrapper {
           box-shadow: 0 0 0 1px #dcdfe6 inset;
-          
+
           &:hover {
             box-shadow: 0 0 0 1px #c0c4cc inset;
           }
-          
+
           &.is-focus {
             box-shadow: 0 0 0 1px #409eff inset;
           }

--
Gitblit v1.8.0