浏览代码

积分规则

lifanagju_citu 10 月之前
父节点
当前提交
22e80f02bc

+ 8 - 1
src/locales/en.js

@@ -248,7 +248,7 @@ export default {
     pointsMall: 'Points Mall',
     redemptionOfPoints: 'Redemption of points',
     handpickMall: 'handpick Mall',
-    integralRule: 'Integral rule',
+    integralRules: 'Integral rule',
     whole: 'Whole',
     In: 'In',
     freezing: 'Freezing',
@@ -256,6 +256,13 @@ export default {
     exchange: 'Exchange of points',
     exchangeRecords: 'Exchange records',
   },
+  rulesOfPoints: {
+    whatIsPoints: 'What is integral?',
+    howToEarnPoints: 'How to earn points?',
+    pointsViolation: 'Points violation',
+    transferOfPoints: 'Transfer of points',
+    expiredOfPoints: 'Expired of points',
+  },
   vipPackage: {
     purchasePackage: 'Purchase Package',
     buyNow: 'BUY NOW',

+ 8 - 1
src/locales/zh-CN.js

@@ -248,7 +248,7 @@ export default {
     pointsMall: '积分商城',
     redemptionOfPoints: '积分兑换',
     handpickMall: '臻选商城',
-    integralRule: '积分规则',
+    integralRules: '积分规则',
     whole: '全部',
     In: '收入',
     freezing: '冻结',
@@ -256,6 +256,13 @@ export default {
     exchange: '积分兑换',
     exchangeRecords: '积分兑换记录',
   },
+  rulesOfPoints: {
+    whatIsPoints: '什么是积分?',
+    howToEarnPoints: '如何获得积分?',
+    pointsViolation: '积分违规处理',
+    transferOfPoints: '积分转让',
+    expiredOfPoints: '积分过期',
+  },
   vipPackage: {
     purchasePackage: '购买套餐',
     buyNow: '立即购买',

+ 17 - 0
src/router/modules/personal.js

@@ -170,5 +170,22 @@ const personal = [
       }
     ]
   },
+  {
+    path: '/personalIntegralRules',
+    component: Layout,
+    name: 'personalIntegralRules',
+    meta: {
+      title: '任务中心'
+    },
+    children: [
+      {
+        path: '/personalIntegralRules',
+        component: () => import('@/views/personal/integralRules/index'),
+        meta: {
+          title: '积分规则'
+        },
+      }
+    ]
+  },
 ]
 export default personal

+ 6 - 1
src/views/personal/components/integralShow.vue

@@ -3,7 +3,7 @@
   <div class="statisticsBox">
     <div class="mt-2">
       <span style="font-size: 20px; color: #333; line-height: 28px; font-weight: bold;" class="ml-10">{{ props.title }}</span>
-      <span style="font-size: 14px; color: #777; line-height: 24px; cursor: pointer;" class="ml-2">{{ $t('points.integralRule') }}</span>
+      <span style="font-size: 14px; color: #777; line-height: 24px; cursor: pointer;" class="ml-2" @click="integralRulesClick">{{ $t('points.integralRules') }}</span>
     </div>
     <div class="d-flex justify-space-between align-end my-1">
       <span style="font-size: 42px; color: #10897bba; line-height: 50px;" class="ml-10 cursor-pointer" @click="router.push({ path: '/pointsManagement', query: { tab: 2 } })">{{ integral }}</span>
@@ -41,6 +41,11 @@ const props = defineProps({
   },
 })
 const integral = '135'
+
+// 积分规则
+const integralRulesClick = () => {
+  window.open('/personalIntegralRules')
+}
 </script>
 <style lang="scss" scoped>
 .statisticsBox {

+ 11 - 0
src/views/personal/integralRules/components/expiredOfPoints.vue

@@ -0,0 +1,11 @@
+<!-- 积分过期 -->
+<template>
+  <div>
+  </div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-integralRules-expiredOfPoints'})
+</script>
+<style lang="scss" scoped>
+</style>

+ 16 - 0
src/views/personal/integralRules/components/howToEarnPoints.vue

@@ -0,0 +1,16 @@
+<!-- 如何获得积分 -->
+<template>
+  <div v-for="(item, index) in list" :key="'whatIsPoints' + index">
+    {{ item }}
+  </div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-integralRules-howToEarnPoints'})
+const list = [
+  '所有门墩儿注册用户在门墩儿活动(回答问题、采纳答案、分享内容等)过程中均有机会获得积分,积分是一种荣誉的体现。',
+  '所获积分可以通过访问积分商城用来购买道具甚至兑换实物礼品。积分商城将在每月上旬(每月10日以前)进行产品库存更新,请随时关注关于积分的新消息吧。',
+]
+</script>
+<style lang="scss" scoped>
+</style>

+ 11 - 0
src/views/personal/integralRules/components/pointsViolation.vue

@@ -0,0 +1,11 @@
+<!-- 积分违规处理 -->
+<template>
+  <div>
+  </div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-integralRules-pointsViolation'})
+</script>
+<style lang="scss" scoped>
+</style>

+ 11 - 0
src/views/personal/integralRules/components/transferOfPoints.vue

@@ -0,0 +1,11 @@
+<!-- 积分转让 -->
+<template>
+  <div>
+  </div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-integralRules-transferOfPoints'})
+</script>
+<style lang="scss" scoped>
+</style>

+ 16 - 0
src/views/personal/integralRules/components/whatIsPoints.vue

@@ -0,0 +1,16 @@
+<!-- 什么是积分 -->
+<template>
+  <div v-for="(item, index) in list" :key="'whatIsPoints' + index">
+    {{ item }}
+  </div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-integralRules-whatIsPoints'})
+const list = [
+  '所有门墩儿注册用户在门墩儿活动(回答问题、采纳答案、分享内容等)过程中均有机会获得积分,积分是一种荣誉的体现。',
+  '所获积分可以通过访问积分商城用来购买道具甚至兑换实物礼品。积分商城将在每月上旬(每月10日以前)进行产品库存更新,请随时关注关于积分的新消息吧。',
+]
+</script>
+<style lang="scss" scoped>
+</style>

+ 90 - 0
src/views/personal/integralRules/index.vue

@@ -0,0 +1,90 @@
+<!-- 积分规则 -->
+<template>
+  <div class="default-width d-flex pa-3" style="height: 700px;">
+    <v-card class="left">
+      <h3>{{ $t('points.integralRules') }}</h3>
+      
+      <v-list density="compact" mandatory v-model:selected="selected">
+        <v-list-item
+          v-for="(val, index) in items"
+          :key="val.key"
+          :value="val.key"
+          color="primary"
+        >
+          <!-- <v-list-item-title class="list-item" @click="tab = index">{{ val.title }}</v-list-item-title> -->
+          <v-list-item-title
+            class="list-item"
+            @click="tab = index; htmlContent = val.htmlContent"
+          >
+            <!-- @click="handleClick(val, index)" -->
+            {{ $t('rulesOfPoints.' + val.key) }}
+          </v-list-item-title>
+        </v-list-item>
+      </v-list>
+    </v-card>
+
+    <v-card class="right ml-3" style="padding: 30px 60px">
+      <div style="font-size: 18px; font-weight: bold;">{{ $t('rulesOfPoints.' + items[tab].key) }}</div>
+      <div class="pt-5 pb-8" style="border-bottom: 1px solid #e2e2e2;">
+        <div v-if="htmlContent" class="requirement" v-html="htmlContent"></div>
+      </div>
+      <div class="mt-3">所列问题中未包含您的问题?<span class="defaultLink">点击提交工单</span>,获得在线支持。</div>
+    </v-card>
+  </div>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+defineOptions({name: 'personal-integralRules-index'})
+
+const items = [
+  { key: 'whatIsPoints', htmlContent: '<p>所有门墩儿注册用户在门墩儿活动(回答问题、采纳答案、分享内容等)过程中均有机会获得积分,积分是一种荣誉的体现。</p><p>&nbsp;</p><p>所获积分可以通过访问积分商城用来购买道具甚至兑换实物礼品。积分商城将在每月上旬(每月10日以前)进行产品库存更新,请随时关注关于积分的新消息吧。</p>' },
+  { key: 'howToEarnPoints', htmlContent: '' },
+  { key: 'pointsViolation', htmlContent: '<p><strong>积分的违规处理</strong></p><p>如果会员利用系统漏洞作弊等违规方式获得积分,经查证后,门墩儿有权自由裁定,追缴相关积分,甚至查封会员帐号,并保留追究相应法律责任的权利。</p><p>&nbsp;</p><p><strong>修改及终止:</strong>门墩儿有权根据需要取消细则或增删、修订细则的权利(包括但不限于用户资格、积分计算及兑换标准),本积分管理规则。</p><p>&nbsp;</p>' },
+  { key: 'transferOfPoints', htmlContent: '<h3>基本转让条件</h3><ul><li>积分持有人必须是注册并验证的账户所有者。</li><li>转让的积分必须是账户内有效且未过期的积分。</li><li>转让双方必须同意转让条款和条件,并遵循所有适用的法律和规定。</li></ul><h3>转让限额</h3><ul><li>设定每日、每周或每月的积分转让限额,以防止滥用。</li><li>根据账户类型或会员级别,设定不同的转让限额。</li><li>允许特殊情况下(如促销活动、奖励计划等)的临时调整。</li></ul><h3>转让费用</h3><ul><li>根据转让的积分数量或金额,收取一定比例的转让费用。</li><li>费用可以用于维护积分系统、提供客户服务或作为其他奖励计划的资金来源。</li><li>提前公开并明确告知所有费用结构。</li></ul><h3>转让流程</h3><ul><li>明确积分转让的申请、审核和确认流程。</li><li>要求双方提供必要的身份验证和转让信息。</li><li>使用安全的电子交易系统或平台来完成积分转让。</li><li>转让完成后,向双方发送确认通知,并更新账户余额。</li></ul><h3>违规处理</h3><ul><li>明确规定违反转让规则的行为及其后果,如冻结账户、撤销转让、扣除积分等。</li><li>设立投诉和申诉机制,以便对任何争议或问题进行调查和解决。</li><li>定期审查并更新规则,以应对新的威胁和漏洞。</li></ul>' },
+  { key: 'expiredOfPoints', htmlContent: '' },
+]
+const tab = ref(0)
+const selected = ref([items[0].key])
+const htmlContent = ref([items[0].htmlContent])
+</script>
+
+<style lang="scss" scoped>
+.left {
+  width: 220px;
+}
+.right {
+  flex: 1;
+}
+:deep(.v-list-item) {
+  padding: 0 !important;
+}
+.list-item {
+  height: 50px;
+  width: 100%;
+  line-height: 50px;
+  font-weight: 500;
+  // color: #666;
+  font-size: 16px;
+  cursor: pointer;
+  margin: 0;
+  padding-left: 40px;
+  text-align: left;
+  transition: all .3s;
+}
+h3 {
+  font-size: 20px;
+  padding: 18px 0 8px 40px;
+  text-align: left;
+  font-weight: 600;
+}
+.requirement {
+  white-space: pre-wrap;
+  word-break: break-all;
+  line-height: 28px;
+  color: #333;
+  font-size: 15px;
+  text-align: justify;
+  letter-spacing: 0;
+}
+</style>

+ 2 - 2
src/views/personal/taskCenter/components/daily.vue

@@ -12,9 +12,9 @@
         <v-btn
           class="half-button"
           :disabled="item.状态"
-          color="primary"
+          :color="item.状态 ? '' : 'primary'"
         >
-          {{ item.状态 ? '已领取' : '待完成' }}
+          {{ item.状态 ? '已完成' : '未完成' }}
         </v-btn>
       </div>
     </div>

+ 2 - 2
src/views/personal/taskCenter/components/suggest.vue

@@ -12,9 +12,9 @@
         <v-btn
           class="half-button"
           :disabled="item.状态"
-          color="primary"
+          :color="item.状态 ? '' : 'primary'"
         >
-          {{ item.状态 ? '已领取' : '待完成' }}
+          {{ item.状态 ? '已完成' : '未完成' }}
         </v-btn>
       </div>
     </div>