index.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <div :class="{'default-width': !type}">
  3. <div class="pa-3 mb-2 white-bgc">
  4. <integralShow :showMall="true" :taskCenter="!type" :isEnterprise="type === 0 ? false : true"></integralShow>
  5. </div>
  6. <div class="mt-3 white-bgc pa-3 pt-3">
  7. <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa" @update:model-value="handleChangeTab">
  8. <v-tab :value="0">{{ $t('points.pointsDetails') }}</v-tab>
  9. <!-- <v-tab :value="1">{{ $t('points.balanceDetails') }}</v-tab> -->
  10. </v-tabs>
  11. <CtTable
  12. class="mt-3"
  13. :items="dataList"
  14. :headers="headers[tab]"
  15. :loading="false"
  16. :elevation="0"
  17. :isTools="false"
  18. :showPage="true"
  19. :total="total"
  20. :page-info="query"
  21. itemKey="id"
  22. @pageHandleChange="handleChangePage"
  23. >
  24. </CtTable>
  25. </div>
  26. </div>
  27. </template>
  28. <script setup>
  29. defineOptions({name: 'personal-pointsManagement-index'})
  30. import { ref } from 'vue'
  31. import { timesTampChange } from '@/utils/date'
  32. import { getUserRewardPointPage } from '@/api/integral'
  33. import { getEnterpriseAccountRecordPage } from '@/api/recruit/enterprise/member/points'
  34. import integralShow from '@/views/integral/pointsManagement/components/integralShow.vue'
  35. const props = defineProps({
  36. type: {
  37. type: Number,
  38. default: 0 // 0个人 1企业
  39. }
  40. })
  41. const tab = ref(0)
  42. const total = ref(0)
  43. const query = ref({
  44. pageNo: 1,
  45. pageSize: 10,
  46. type: 0 // 0积分 1余额
  47. })
  48. const dataList = ref([])
  49. const integralHeaders = [
  50. { title: '标题', key: 'title', sortable: false },
  51. { title: '描述', key: 'description', sortable: false },
  52. { title: '获得积分点', key: 'point', sortable: false },
  53. { title: '剩余点数', key: 'totalPoint', sortable: false },
  54. { title: '发生时间', key: 'createTime', value: item => timesTampChange(item.createTime), sortable: false },
  55. ]
  56. const balanceHeaders = [
  57. { title: '标题', key: 'title', sortable: false },
  58. { title: '描述', key: 'description', sortable: false },
  59. { title: '金额', key: 'balance', sortable: false},
  60. { title: '账户余额', key: 'totalBalance', sortable: false },
  61. { title: '发生时间', key: 'createTime', value: item => timesTampChange(item.createTime), sortable: false },
  62. ]
  63. // const orderHeaders = [
  64. // { title: '充值时间', key: 'createTime', value: item => timesTampChange(item.createTime), sortable: false },
  65. // { title: '充值金额', key: 'price', sortable: false },
  66. // { title: '支付方式', key: 'type', sortable: false },
  67. // { title: '充值状态', key: 'status', sortable: false }
  68. // ]
  69. const headers = ref([integralHeaders, balanceHeaders])
  70. // 积分、签到明细
  71. const getData = async () => {
  72. const res = props.type ? await getEnterpriseAccountRecordPage(query.value) : await getUserRewardPointPage(query.value)
  73. dataList.value = res.list
  74. total.value = res.total
  75. }
  76. getData()
  77. const handleChangePage = (e) => {
  78. query.value.pageNo = e
  79. getData()
  80. }
  81. // 切换
  82. const handleChangeTab = () => {
  83. query.value.pageNo = 1
  84. query.value.type = tab.value
  85. getData()
  86. }
  87. </script>
  88. <style lang="scss" scoped>
  89. </style>