123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <template>
- <layout-page>
- <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="height: calc(100vh - 102rpx);">
- <view v-if="total" class="totalShow MiSans-Medium">恭喜你,已经成功邀请{{ total }}个新用户啦!</view>
- <view v-if="items.length" class="listBox">
- <!-- <m-list :items="items"></m-list> -->
- <uni-table ref="table" :loading="loading" border stripe emptyText="暂无更多数据" style="width: 100%;">
- <uni-tr>
- <uni-th width="100" align="center" class="MiSans-Normal">用户名</uni-th>
- <uni-th align="center" class="MiSans-Normal">性别</uni-th>
- <uni-th align="center" class="MiSans-Normal">邀请时间</uni-th>
- </uni-tr>
- <uni-tr v-for="(item, index) in items" :key="index">
- <uni-td align="center" class="MiSans-Normal">{{ item.person?.name || item.user.phone }}</uni-td>
- <uni-td align="center" class="MiSans-Normal">{{ item.person?.sexName }}</uni-td>
- <uni-td align="center" class="MiSans-Normal">{{ item.user.createTime }}</uni-td>
- </uni-tr>
- </uni-table>
- <uni-load-more :status="more" />
- </view>
- <view v-else class="nodata-img-parent">
- <image
- src="https://minio.citupro.com/dev/static/nodata.png"
- mode="widthFix"
- style="width: 100vw"
- ></image>
- </view>
- </scroll-view>
- </layout-page>
- </template>
- <script setup>
- import { ref, watch } from 'vue'
- import layoutPage from '@/layout'
- import { dealDictObjData } from '@/utils/position'
- import { timesTampChange } from '@/utils/date'
- // import MList from './list'
- // import { getDict } from '@/hooks/useDictionaries.js'
- import { getInviteRecord } from '@/api/position.js'
- // import { onLoad } from '@dcloudio/uni-app'
- import { userStore } from '@/store/user'
- const useUserStore = userStore()
- watch(() => useUserStore.refreshToken, (newVal, oldVal) => {
- if (useUserStore.refreshToken) {
- // 监听登录状态
- console.log('重新登录了')
- }
- })
- // 获取参数
- const pageInfo = ref({
- pageNo: 1,
- pageSize: 100
- })
- const total = ref(0)
- const items = ref([])
- const loading = ref(false)
- const more = ref('more')
- async function init () {
- try {
- loading.value = true
- const res = await getInviteRecord({
- ...pageInfo.value,
- })
- const data = res?.data?.list || []
- if (!data.length) {
- pageInfo.value.pageNo--
- return
- }
- const dealData = data.map(e => {
- e.person = dealDictObjData({}, e.person)
- if (e.user?.createTime) e.user.createTime = timesTampChange(e.user.createTime)
- return e
- })
- items.value.push(...dealData)
- total.value = items.value.length
- more.value = items.value.length === total.value ? 'noMore' : 'more'
- } catch (error) {
- pageInfo.value.pageNo--
- } finally {
- loading.value = false
- }
- }
- init()
- function loadingMore () {
- if (total.value === items.value.length) {
- return
- }
- if (loading.value) {
- return
- }
- more.value = 'loading'
- pageInfo.value.pageNo++
- init()
- }
- </script>
- <style scoped lang="scss">
- .listBox {
- padding: 30rpx;
- }
- .totalShow {
- margin: 30rpx 0 0 30rpx;
- color: #666;
- }
- </style>
|