fix: 右侧记录栏添加已购商品
This commit is contained in:
@@ -244,4 +244,13 @@ export const updateProductGroupTag = (data) => {
|
||||
/**删除商品分组标签 */
|
||||
export const deleteProductGroupTag = (params) => {
|
||||
return http2.delete('/api/v1/admin/good/group_tag/delete', {params: params})
|
||||
}
|
||||
|
||||
|
||||
/**---------------------------------- */
|
||||
/**已购商品管理 */
|
||||
|
||||
/**获取用户已购商品列表 */
|
||||
export const getUserGoodsList = (params) => {
|
||||
return http2.get('/api/v1/admin/good/user_goods/list', {params: params})
|
||||
}
|
||||
@@ -18,10 +18,6 @@ export const addUserConsumption = (data) => {
|
||||
})
|
||||
}
|
||||
|
||||
/**查询用户余额 */
|
||||
export const getUserBalance = (data) => {
|
||||
return http2.get('/api/v1/admin/user/balance/select?user_id='+data.user_id)
|
||||
}
|
||||
|
||||
/**获取用户余额记录 */
|
||||
export const getUserBalanceRecord = (data) => {
|
||||
|
||||
@@ -205,7 +205,7 @@ import { ref, reactive, onMounted, computed, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Refresh } from '@element-plus/icons-vue'
|
||||
import { getUserBalance, getUserBalanceRecord, editUserBalance, addUserConsumption, getUserBalanceCount, getUserList, refundBalance } from '@/api/admin/user'
|
||||
import { getUserBalanceRecord, editUserBalance, addUserConsumption, getUserBalanceCount, getUserList, refundBalance } from '@/api/admin/user'
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<el-descriptions :column="1" border size="small">
|
||||
<el-descriptions-item label="手机号">{{ userInfo.Phone || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱">{{ userInfo.Email || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ userInfo.Sex || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ formatSex(userInfo.Sex) || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">{{ userInfo.Age || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="最后更新">{{ formatDate(userInfo.UpdatedAt) }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
@@ -244,6 +244,38 @@
|
||||
</div>
|
||||
<el-empty v-else description="暂无工单记录" :image-size="100" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="已购商品" name="5">
|
||||
<el-table :data="userGoodsList" v-loading="goodsListLoading" stripe style="width: 100%" table-layout="auto">
|
||||
<el-table-column prop="id" label="ID" width="70" />
|
||||
<el-table-column label="商品名称" min-width="120" show-overflow-tooltip>
|
||||
<template #default="{row}">{{ row.good?.name || '-' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标签" min-width="90">
|
||||
<template #default="{row}">
|
||||
<el-tag v-if="row.tag" size="small">{{ row.tag }}</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="到期时间" min-width="140">
|
||||
<template #default="{row}">{{ formatDate(row.expireTime) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="购买时间" min-width="140">
|
||||
<template #default="{row}">{{ formatDate(row.CreatedAt) }}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination-wrapper" v-if="goodsListTotal > 0">
|
||||
<el-pagination
|
||||
v-model:current-page="goodsListPage"
|
||||
v-model:page-size="goodsListPageSize"
|
||||
:total="goodsListTotal"
|
||||
:page-sizes="[10, 20, 50]"
|
||||
layout="total, prev, pager, next"
|
||||
@size-change="handleGoodsListSizeChange"
|
||||
@current-change="handleGoodsListPageChange"
|
||||
/>
|
||||
</div>
|
||||
<el-empty v-else description="暂无已购商品" :image-size="100" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
</div>
|
||||
@@ -498,6 +530,7 @@ import {
|
||||
import { getAdminGroupList } from '@/api/admin/group'
|
||||
import { getOrderList } from '@/api/admin/order'
|
||||
import { getTickerList } from '@/api/ticket'
|
||||
import { getUserGoodsList } from '@/api/admin/product'
|
||||
|
||||
const Edit = EditIcon
|
||||
const route = useRoute()
|
||||
@@ -542,6 +575,13 @@ const ticketListTotal = ref(0)
|
||||
const ticketListPage = ref(1)
|
||||
const ticketListPageSize = ref(10)
|
||||
|
||||
// 已购商品列表相关
|
||||
const userGoodsList = ref([])
|
||||
const goodsListLoading = ref(false)
|
||||
const goodsListTotal = ref(0)
|
||||
const goodsListPage = ref(1)
|
||||
const goodsListPageSize = ref(10)
|
||||
|
||||
// 用户余额相关
|
||||
const userBalance = ref({
|
||||
balance: 0,
|
||||
@@ -664,9 +704,21 @@ const handleTabClick = (tab) => {
|
||||
fetchUserOrderList()
|
||||
} else if (tab.props.name === '4') {
|
||||
fetchUserTicketList()
|
||||
} else if (tab.props.name === '5') {
|
||||
fetchUserGoodsList()
|
||||
}
|
||||
};
|
||||
|
||||
// 格式化性别
|
||||
const formatSex = (sex) => {
|
||||
if (sex === true) {
|
||||
return '男'
|
||||
} else if (sex === false) {
|
||||
return '女'
|
||||
} else {
|
||||
return '-'
|
||||
}
|
||||
}
|
||||
// 获取用户信息
|
||||
const fetchUserInfo = async () => {
|
||||
const userId = route.query.user_id
|
||||
@@ -1019,6 +1071,38 @@ const handleTicketListPageChange = (page) => {
|
||||
fetchUserTicketList()
|
||||
}
|
||||
|
||||
// 获取用户已购商品列表
|
||||
const fetchUserGoodsList = async () => {
|
||||
if (!route.query.user_id) return
|
||||
goodsListLoading.value = true
|
||||
try {
|
||||
const res = await getUserGoodsList({
|
||||
user_id: route.query.user_id,
|
||||
page: goodsListPage.value,
|
||||
count: goodsListPageSize.value
|
||||
})
|
||||
if (res.data.code === 200) {
|
||||
userGoodsList.value = res.data.data.data || res.data.data.list || []
|
||||
goodsListTotal.value = res.data.data.all_count || res.data.data.total || 0
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('获取已购商品列表失败')
|
||||
} finally {
|
||||
goodsListLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const handleGoodsListSizeChange = (size) => {
|
||||
goodsListPageSize.value = size
|
||||
goodsListPage.value = 1
|
||||
fetchUserGoodsList()
|
||||
}
|
||||
|
||||
const handleGoodsListPageChange = (page) => {
|
||||
goodsListPage.value = page
|
||||
fetchUserGoodsList()
|
||||
}
|
||||
|
||||
// 获取用户余额信息
|
||||
const fetchUserBalance = async () => {
|
||||
if (!route.query.user_id) return
|
||||
@@ -1337,6 +1421,7 @@ const loadUserData = async () => {
|
||||
await fetchOperationHistory();
|
||||
await fetchUserOrderList();
|
||||
await fetchUserTicketList();
|
||||
await fetchUserGoodsList();
|
||||
}
|
||||
|
||||
// 初始化
|
||||
@@ -1537,6 +1622,11 @@ onActivated(() => {
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.right-column {
|
||||
overflow: hidden;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.tabs-card {
|
||||
border-radius: 12px;
|
||||
border: none;
|
||||
|
||||
+25905
-1
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user