From 80ca024e9ae633df0dc9f4e8f533f33b526afb3d Mon Sep 17 00:00:00 2001 From: p-honggang.li <p-honggang.li@pcitc.com> Date: 星期一, 08 九月 2025 16:24:38 +0800 Subject: [PATCH] 修复文件上传获取不到用户信息的BUG --- src/views/pointsManage/personal/index.vue | 139 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 96 insertions(+), 43 deletions(-) diff --git a/src/views/pointsManage/personal/index.vue b/src/views/pointsManage/personal/index.vue index 9c16a88..caf6695 100644 --- a/src/views/pointsManage/personal/index.vue +++ b/src/views/pointsManage/personal/index.vue @@ -58,24 +58,25 @@ <span class="filter-label">鏁版嵁绫荤洰:</span> <el-select v-model="queryParams.dataCategory" placeholder="鍏ㄩ儴" clearable> <el-option label="鍏ㄩ儴" value="" /> - <el-option label="璧勬簮璐$尞" value="resource_contribution" /> - <el-option label="璧勬簮浜ゆ槗" value="resource_transaction" /> - <el-option label="璧勬簮浼犳挱" value="resource_dissemination" /> - <el-option label="鐢ㄦ埛鍙備笌" value="user_participation" /> - <el-option label="绉垎杞崲" value="points_conversion" /> - <el-option label="鍏朵粬" value="other" /> + <el-option + v-for="category in categoryList" + :key="category" + :label="getCategoryLabel(category)" + :value="category" + /> </el-select> </div> <div class="filter-item"> <span class="filter-label">鏃堕棿:</span> <el-date-picker v-model="dateRange" - type="daterange" + type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" + format="YYYY-MM-DD HH:mm:ss" + date-format="YYYY-MM-DD" + time-format="HH:mm:ss" @change="handleDateChange" /> </div> @@ -83,9 +84,8 @@ <span class="filter-label">鏁版嵁绫诲瀷:</span> <el-select v-model="queryParams.dataType" placeholder="鍏ㄩ儴" clearable> <el-option label="鍏ㄩ儴" value="" /> - <el-option label="鑾峰彇" value="earned" /> - <el-option label="娑堣��" value="consumed" /> - <el-option label="杞崲" value="converted" /> + <el-option label="鑾峰彇" value="0" /> + <el-option label="娑堣��" value="1" /> </el-select> </div> </div> @@ -103,16 +103,16 @@ <!-- 娴佹按琛ㄦ牸 --> <div class="table-section"> - <el-table :data="flowList" stripe style="width: 100%"> - <el-table-column prop="id" label="搴忓彿" width="80" align="center" /> + <el-table :data="flowList" stripe style="width: 100%" :height="440"> + <el-table-column type="index" label="搴忓彿" width="80" align="center" /> <el-table-column prop="dataCategory" label="鏁版嵁绫荤洰" width="120"> <template #default="{ row }"> <span>{{ getCategoryLabel(row.dataCategory) }}</span> </template> </el-table-column> - <el-table-column prop="name" label="鍚嶇О" min-width="300" show-overflow-tooltip /> - <el-table-column prop="flowTime" label="鏃堕棿" width="180" align="center" /> - <el-table-column prop="points" label="绉垎" width="100" align="center"> + <el-table-column prop="name" label="鍚嶇О" show-overflow-tooltip /> + <el-table-column prop="flowTime" label="鏃堕棿" align="center" /> + <el-table-column prop="points" label="绉垎" align="center"> <template #default="{ row }"> <span :class="row.points > 0 ? 'points-earned' : 'points-consumed'"> {{ row.points > 0 ? '+' : '' }}{{ row.points }} @@ -144,34 +144,38 @@ <script setup lang="ts"> import { ref, reactive, onMounted, computed } from 'vue' -import { ElMessage } from 'element-plus' -import { - ArrowLeft, - Refresh, - Setting, - Close, - Money, - Plus, - Minus, - Search +import { dayjs, ElMessage } from 'element-plus' +import { + ArrowLeft, + Refresh, + Setting, + Close, + Money, + Plus, + Minus, + Search } from '@element-plus/icons-vue' import pointsApi from '@/api/pointsApi' import type { PointsStats, PointsFlow, PointsQueryParams } from '@/types/points' +import { useUserInfo } from '@/stores/modules/userInfo' +import { queryUserDetail } from '@/api/userInfo' + +// 鑾峰彇鐢ㄦ埛淇℃伅 store +const userStore = useUserInfo() // 绉垎缁熻 const stats = ref<PointsStats>({ - balance: 20000, - totalEarned: 10000, - totalConsumed: 200, + balance: 0, + totalEarned: 0, + totalConsumed: 0, totalConverted: 0, }) // 鏌ヨ鍙傛暟 const queryParams = reactive<PointsQueryParams>({ + userId: '', dataCategory: '', dataType: '', - startTime: '', - endTime: '', pageNum: 1, pageSize: 10, }) @@ -184,6 +188,9 @@ // 鎬绘暟 const total = ref(0) + +// 鏁版嵁绫荤洰鍒楄〃 +const categoryList = ref<string[]>([]) // 鏍煎紡鍖栨暟瀛� const formatNumber = (num: number) => { @@ -206,7 +213,14 @@ // 鑾峰彇绉垎缁熻 const getPointsStats = async () => { try { - const res = await pointsApi.getPersonalPointsStats() + const userId = userStore.getUserId || userStore.getUserInfo?.userId + if (!userId) { + console.error('鏃犳硶鑾峰彇鐢ㄦ埛ID') + return + } + // 鏇存柊鏌ヨ鍙傛暟涓殑 userId + queryParams.userId = userId.toString() + const res = await pointsApi.getPersonalPointsStats(userId) if (res.code === 200 && res.data) { stats.value = res.data } @@ -215,9 +229,28 @@ } } +// 鑾峰彇鏁版嵁绫荤洰鍒楄〃 +const getCategoryList = async () => { + try { + const res = await pointsApi.getPointsFlowCategories() + if (res.code === 200 && res.data) { + categoryList.value = res.data + } + } catch (error) { + console.error('鑾峰彇鏁版嵁绫荤洰澶辫触:', error) + } +} + // 鑾峰彇绉垎娴佹按 const getPointsFlow = async () => { try { + const userId = userStore.getUserId || userStore.getUserInfo?.userId + if (!userId) { + console.error('鏃犳硶鑾峰彇鐢ㄦ埛ID') + return + } + // 鏇存柊鏌ヨ鍙傛暟涓殑 userId + queryParams.userId = userId.toString() const res = await pointsApi.getPersonalPointsFlow(queryParams) if (res.code === 200) { flowList.value = res.data.list || [] @@ -238,8 +271,8 @@ const resetQuery = () => { queryParams.dataCategory = '' queryParams.dataType = '' - queryParams.startTime = '' - queryParams.endTime = '' + queryParams.flowStartTime = '' + queryParams.flowEndTime = '' dateRange.value = null queryParams.pageNum = 1 queryData() @@ -248,11 +281,11 @@ // 澶勭悊鏃ユ湡鍙樺寲 const handleDateChange = (dates: [string, string] | null) => { if (dates) { - queryParams.startTime = dates[0] - queryParams.endTime = dates[1] + queryParams.flowStartTime = dayjs(dates[0]).format('YYYY-MM-DD HH:mm:ss'); + queryParams.flowEndTime = dayjs(dates[1]).format('YYYY-MM-DD HH:mm:ss'); } else { - queryParams.startTime = '' - queryParams.endTime = '' + queryParams.flowStartTime = '' + queryParams.flowEndTime = '' } } @@ -285,9 +318,29 @@ ElMessage.info('鍏抽棴鍏ㄩ儴鍔熻兘') } -onMounted(() => { +onMounted(async () => { + // 椤甸潰鎸傝浇鏃讹紝妫�鏌� userStore 鏄惁宸叉湁鐢ㄦ埛淇℃伅 + let userId = userStore.getUserId || userStore.getUserInfo?.userId + if (!userId) { + try { + const res: any = await queryUserDetail() + if (res?.code === 200 && res.data) { + userStore.updateUserDetail(res.data) + userId = res.data.userId || res.data.id + } else { + ElMessage.error(res?.msg || '鏃犳硶鑾峰彇鐢ㄦ埛淇℃伅锛岃鍏堢櫥褰�') + return + } + } catch (e) { + console.error('鑾峰彇鐢ㄦ埛璇︽儏澶辫触:', e) + ElMessage.error('鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛岃绋嶅悗閲嶈瘯') + return + } + } + getPointsStats() getPointsFlow() + getCategoryList() }) </script> @@ -316,7 +369,7 @@ cursor: pointer; color: #409eff; font-size: 18px; - + &:hover { color: #66b1ff; } @@ -338,7 +391,7 @@ cursor: pointer; color: #909399; font-size: 16px; - + &:hover { color: #409eff; } @@ -532,7 +585,7 @@ :deep(.el-select), :deep(.el-date-picker) { width: 100%; - + @media (min-width: 768px) { width: auto; min-width: 120px; -- Gitblit v1.8.0