فهرست منبع

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

lifanagju_citu 10 ماه پیش
والد
کامیت
2097fa1046

+ 9 - 0
src/api/recruit/enterprise/member/points/index.js

@@ -0,0 +1,9 @@
+import request from '@/config/axios'
+
+// 账户变动记录
+export const getEnterpriseAccountRecordPage = async (params) => {
+  return await request.get({
+    url: '/app-admin-api/menduner/system/enterprise/account/record/page',
+    params
+  })
+}

+ 3 - 3
src/router/modules/components/recruit/enterprise.js

@@ -277,15 +277,15 @@ const enterprise = [
         path: '/recruit/enterprise/memberCenter/myAccount',
         meta: {
           title: '我的会员',
-          enName: 'My Account '
+          enName: 'My Members'
         },
         component: () => import('@/views/recruit/enterprise/memberCenter/myAccount/index.vue')
       },
       {
         path: '/recruit/enterprise/memberCenter/myPoints',
         meta: {
-          title: '我的积分',
-          enName: 'My Points '
+          title: '我的账户',
+          enName: 'Account '
         },
         component: () => import('@/views/recruit/enterprise/memberCenter/myPoints/index.vue')
       }

+ 33 - 13
src/views/integral/components/integralShow.vue

@@ -1,19 +1,22 @@
 <!--  -->
 <template>
-  <div class="statisticsBox">
-    <div class="mt-2">
-      <span style="font-size: 20px; color: var(--color-333); line-height: 28px; font-weight: bold;" class="ml-10">{{ props.title }}</span>
-      <span style="font-size: 14px; color: var(--color-666); line-height: 24px; cursor: pointer;" class="ml-2" @click="integralRulesClick">{{ $t('points.integralRules') }}</span>
+  <div class="statisticsBox d-flex">
+    <div class="d-flex mt-2" style="flex: 1;">
+      <div v-for="(val, i) in list" :key="i" :style="{'margin-left': val.showRules ? '0' : '200px'}">
+        <div>
+          <span class="ml-10 item-title">{{ val.title }}</span>
+          <span v-if="val.showRules" class="ml-2 rules cursor-pointer" @click="integralRulesClick">{{ $t('points.integralRules') }}</span>
+        </div>
+        <div>
+          <span class="ml-10 item-value" @click="integralDetails">{{ accountData[val.value] || 0 }}</span>
+        </div>
+      </div>
     </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="integralDetails">{{ accountData?.point || 0 }}</span>
+    <div class="d-flex align-end">
       <span style="font-size: 16px; color: #787d82; line-height: 24px;" class="mr-8">
-        <!-- 积分商城 -->
         <template v-if="props.showMall">
-          <!-- <span>积分土豪的都喜欢来这里,</span> -->
           <span class="mall-text" @click="handleClickMall">{{ $t('points.handpickMall') }}</span>
         </template>
-        <!-- 任务中心 -->
         <template v-if="props.taskCenter">
           <span class="septal-line"></span>
           <span class="mall-text" @click="router.push({ path: '/recruit/personal/TaskCenter' })">赚取积分</span>
@@ -49,6 +52,11 @@ const props = defineProps({
   }
 })
 
+const list = ref([
+  { title: props.title, value: 'point', showRules: true }
+])
+if (props.isEnterprise) list.value.push({ title: '您当前账户余额', value: 'balance', showRules: false })
+
 const userStore = useUserStore()
 const key = props.isEnterprise ? 'enterpriseUserAccount' : 'userAccount'
 let accountData = ref(JSON.parse(localStorage.getItem(key)) || {})
@@ -66,10 +74,6 @@ const integralRulesClick = () => {
 const handleClickMall = () => {
   window.open('/mall')
 }
-// 积分详情
-const integralDetails = () => {
-  window.open(props.isEnterprise ? '/enterprise/memberCenter/myPoints' : '/integral/pointsManagement')
-}
 </script>
 
 <style lang="scss" scoped>
@@ -87,4 +91,20 @@ const integralDetails = () => {
     color: var(--v-primary-base);
   }
 }
+.item-title {
+  font-size: 20px; 
+  color: var(--color-333); 
+  line-height: 28px; 
+  font-weight: bold;
+}
+.item-value {
+  font-size: 42px; 
+  color: #10897bba;
+  line-height: 50px;
+}
+.rules {
+  font-size: 14px; 
+  color: var(--color-666); 
+  line-height: 24px; 
+}
 </style>

+ 0 - 39
src/views/recruit/enterprise/memberCenter/myPoints/components/integralTable.vue

@@ -1,39 +0,0 @@
-<template>
-  <v-data-table
-    class="mt-3"
-    :items="items"
-    :headers="headers"
-    hover
-    item-value="id"
-  >
-    <template #bottom></template>
-  </v-data-table>
-</template>
-
-<script setup>
-defineOptions({ name: 'myRegistration-integralTable'})
-import { timesTampChange } from '@/utils/date'
-
-defineProps({
-  tab: String,
-  items: Array
-})
-
-const headers = [
-  { title: '来源', key: 'description' },
-  { title: '积分数', key: 'point' },
-  { title: '总积分数', key: 'totalPoint' },
-  { title: '获得时间', key: 'createTime', value: item =>  timesTampChange(item.createTime), sortable: false },
-]
-
-</script>
-
-<style scoped lang="scss">
-:deep(.v-table > .v-table__wrapper > table > thead) {
-  background-color: #f7f8fa !important;
-}
-:deep(.v-selection-control__input) {
-  // color: var(--v-primary-base) !important;
-  color: #767778;
-}
-</style>

+ 46 - 0
src/views/recruit/enterprise/memberCenter/myPoints/components/table.vue

@@ -0,0 +1,46 @@
+<template>
+  <v-data-table
+    class="mt-3"
+    :items="items"
+    :headers="tab === 0 ? integralHeaders : balanceHeaders"
+    hover
+    item-value="id"
+  >
+    <template #bottom></template>
+  </v-data-table>
+</template>
+
+<script setup>
+defineOptions({ name: 'myRegistration-integralTable'})
+import { timesTampChange } from '@/utils/date'
+
+defineProps({
+  tab: Number,
+  items: Array
+})
+
+const integralHeaders = [
+  { title: '标题', key: 'title', sortable: false },
+  { title: '描述', key: 'description', sortable: false },
+  { title: '积分点', key: 'point', sortable: false },
+  { title: '剩余点数', key: 'totalPoint', sortable: false },
+  { title: '发生时间', key: 'createTime', value: item =>  timesTampChange(item.createTime), sortable: false },
+]
+const balanceHeaders = [
+  { title: '标题', key: 'title', sortable: false },
+  { title: '描述', key: 'description', sortable: false },
+  { title: '金额', key: 'balance', sortable: false},
+  { title: '账户余额', key: 'totalBalance', sortable: false },
+  { title: '发生时间', key: 'createTime', value: item =>  timesTampChange(item.createTime), sortable: false },
+]
+</script>
+
+<style scoped lang="scss">
+:deep(.v-table > .v-table__wrapper > table > thead) {
+  background-color: #f7f8fa !important;
+}
+:deep(.v-selection-control__input) {
+  // color: var(--v-primary-base) !important;
+  color: #767778;
+}
+</style>

+ 12 - 11
src/views/recruit/enterprise/memberCenter/myPoints/pointsDetails.vue

@@ -2,12 +2,12 @@
 <template>
   <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="3"> {{ $t('points.freezing') }}</v-tab>
-      <v-tab :value="4"> {{ $t('points.pay') }}</v-tab> -->
+      <v-tab :value="0">积分</v-tab>
+      <v-tab :value="1">余额</v-tab>
     </v-tabs>
-    <TablePage  :items="dataList"></TablePage>
+
+    <TablePage :tab="tab" :items="dataList"></TablePage>
+
     <CtPagination
       v-if="total > 0"
       :total="total"
@@ -21,8 +21,9 @@
 <script setup>
 defineOptions({name: 'personal-pointsManagement-pointsDetails'})
 import { ref } from 'vue'
-import { getUserRewardPointPage } from '@/api/integral'
-import TablePage from './components/integralTable.vue'
+import { getEnterpriseAccountRecordPage } from '@/api/recruit/enterprise/member/points'
+import TablePage from './components/table.vue'
+
 const tab = ref(0)
 
 // 数据
@@ -34,9 +35,9 @@ const query = ref({
 })
 const dataList = ref([])
 
-// 积分明细
+// 明细
 const getData = async () => {
-  const res = await getUserRewardPointPage(query.value)
+  const res = await getEnterpriseAccountRecordPage(query.value)
   dataList.value = res.list
   total.value = res.total
 }
@@ -49,9 +50,9 @@ const handleChangePage = (e) => {
 
 // 切换
 const handleChangeTab = () => {
+  query.value.type = tab.value
   query.value.pageNo = 1
-  // tab
-  // getData()
+  getData()
 }
 </script>
 <style lang="scss" scoped>

+ 1 - 1
src/views/recruit/personal/position/components/details.vue

@@ -185,7 +185,7 @@ getCollectionStatus()
 // 分享有礼
 const shareDialog = ref(false)
 const shareUrl = ref('')
-const userInfo = JSON.parse(localStorage.getItem('userInfo') || {})
+const userInfo = localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo')) : {}
 const handleShare = async () => {
   // 分享链接携带参数: 用户id、职位id
   if (!id || !userInfo.id) return