Bläddra i källkod

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 11 månader sedan
förälder
incheckning
3ef0ae6f3b

+ 14 - 0
src/api/integral.js

@@ -12,4 +12,18 @@ export const rewardEventTrackClick = async (url) => {
   return await request.post({
     url: `/admin-api/menduner/reward/event-track/click?url=${url}`
   })
+}
+
+// 获取用户积分数
+export const getUserRewardPoint = async () => {
+  return await request.get({
+    url: '/app-api/menduner/reward/user-point/get'
+  })
+}
+
+// 获取用户积分明细
+export const getUserRewardPointPage = async (pageNo, pageSize) => {
+  return await request.get({
+    url: `/app-api/menduner/reward/point/record/page?pageNo=${pageNo}&pageSize=${pageSize}`
+  })
 }

+ 16 - 4
src/views/personal/components/integralShow.vue

@@ -6,7 +6,7 @@
       <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>
+      <span style="font-size: 42px; color: #10897bba; line-height: 50px;" class="ml-10 cursor-pointer" @click="handleClickMall(true)">{{ integral }}</span>
       <span style="font-size: 16px; color: #787d82; line-height: 24px;" class="mr-8">
         <!-- 积分商城 -->
         <template v-if="props.showMall">
@@ -24,8 +24,11 @@
 </template>
 
 <script setup>
-import { useRouter } from 'vue-router'; const router = useRouter()
 defineOptions({name: 'myRegistration-integralShow'})
+import { ref } from 'vue'
+import { useRouter } from 'vue-router'; const router = useRouter()
+import { getUserRewardPoint } from '@/api/integral'
+
 const props = defineProps({
   title: {
     type: String,
@@ -40,7 +43,15 @@ const props = defineProps({
     default: false
   },
 })
-const integral = '135'
+const integral = ref(0)
+
+// 积分数
+const getIntegral = async () => {
+  const data = await getUserRewardPoint()
+  if (!data) return
+  integral.value = data
+}
+getIntegral()
 
 // 积分规则
 const integralRulesClick = () => {
@@ -48,7 +59,8 @@ const integralRulesClick = () => {
 }
 
 // 跳转臻选商城
-const handleClickMall = () => {
+const handleClickMall = (has) => {
+  if (has) return window.open('/pointsManagement?tab=2')
   window.open('/pointsManagement')
 }
 </script>

+ 6 - 9
src/views/personal/pointsManagement/components/integralTable.vue

@@ -1,11 +1,9 @@
 <template>
   <v-data-table
     class="mt-3"
-    v-model="selected"
     :items="items"
     :headers="headers"
     hover
-    height="60vh"
     item-value="id"
   >
     <template #bottom></template>
@@ -14,20 +12,19 @@
 
 <script setup>
 defineOptions({ name: 'myRegistration-integralTable'})
-import { ref } from 'vue'
+import { timesTampChange } from '@/utils/date'
+
 defineProps({
   tab: String,
   items: Array
 })
 
-
-const selected = ref([])
 const headers = [
-  { title: '积分类型', key: '积分类型' },
-  { title: '变更时间', key: '时间' },
-  { title: '积分', key: '积分' },
+  { title: '积分数', key: 'point' },
+  { title: '总积分数', key: 'totalPoint' },
+  { title: '来源', key: 'description' },
+  { title: '获得时间', key: 'createTime', value: item =>  timesTampChange(item.createTime) },
 ]
-
 </script>
 
 <style scoped lang="scss">

+ 28 - 11
src/views/personal/pointsManagement/pointsDetails.vue

@@ -3,34 +3,51 @@
   <div class="mt-3">
     <v-tabs v-model="tab" style="border-radius: 5px;" align-tabs="start" color="primary" bg-color="#f7f8fa" @update:model-value="handleChangeTab">
       <v-tab :value="1"> {{ $t('points.whole') }}</v-tab>
-      <v-tab :value="2"> {{ $t('points.In') }}</v-tab>
+      <!-- <v-tab :value="2"> {{ $t('points.In') }}</v-tab>
       <v-tab :value="3"> {{ $t('points.freezing') }}</v-tab>
-      <v-tab :value="4"> {{ $t('points.pay') }}</v-tab>
+      <v-tab :value="4"> {{ $t('points.pay') }}</v-tab> -->
     </v-tabs>
     <TablePage  :items="dataList"></TablePage>
+    <CtPagination
+      v-if="total > 0"
+      :total="total"
+      :page="pageNo"
+      :limit="pageSize"
+      @handleChange="handleChangePage"
+    ></CtPagination>
   </div>
 </template>
 
 <script setup>
-import TablePage from './components/integralTable.vue'
-import { ref } from 'vue'
 defineOptions({name: 'personal-pointsManagement-pointsDetails'})
+import { ref } from 'vue'
+import TablePage from './components/integralTable.vue'
+import { getUserRewardPointPage } from '@/api/integral'
+
 const tab = ref(0)
 
 // 数据
+const total = ref(0)
+const pageNo = ref(1)
+const pageSize = ref(10)
 const dataList = ref([])
-const getData = () => {
-  dataList.value = [
-    { 积分类型: '积分签到', 时间: '2024-06-20 20:00', 积分: '5' },
-    { 积分类型: '积分到期', 时间: '2024-06-20 00:00', 积分: '-100' },
-    { 积分类型: '浏览积分', 时间: '2024-06-21 09:05', 积分: '15' },
-    { 积分类型: '浏览职业分析报告', 时间: '2024-06-22 10:27', 积分: '-20' },
-  ]
+
+// 积分明细
+const getData = async () => {
+  const res = await getUserRewardPointPage(pageNo.value, pageSize.value)
+  dataList.value = res.list
+  total.value = res.total
 }
 getData()
 
+const handleChangePage = (e) => {
+  pageNo.value = e
+  getData()
+}
+
 // 切换
 const handleChangeTab = () => {
+  pageNo.value = 1
   // tab
   // getData()
 }