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