feat: 优化工单和用户管理功能
Build and Deploy Vue3 / build (push) Successful in 1m12s
Build and Deploy Vue3 / deploy (push) Successful in 5m2s

- 工单模块改为列表形式,支持点击进入详情页回复
- 新增工单列表页面(TicketList.vue)和详情页面(TicketDetail.vue)
- 工单详情页支持图片上传、快捷回复、定时刷新
- 消息按ID排序,时间显示优化(今天/昨天/星期/完整日期)
- 定时刷新时不显示loading,且只在数据变化时更新UI
- 用户列表直接使用API返回的cover字段作为头像,减少HTTP请求
- 修复用户余额页面balance_type参数undefined问题
This commit is contained in:
2025-12-16 11:29:52 +08:00
parent ab2df50c0d
commit 54f78e15fe
3 changed files with 189 additions and 45 deletions
+16 -24
View File
@@ -513,12 +513,24 @@ const fetchUserList = async () => {
const res = await getUserList(queryParams)
console.log("获取用户列表:", res)
if (res.data.code === 200) {
userList.value = res.data.data.data || []
// 映射 API 返回的字段到组件使用的字段格式
userList.value = (res.data.data.data || []).map(user => ({
UserId: user.user_id,
UserName: user.user_name,
Phone: user.phone,
Email: user.email,
Sex: user.sex,
Age: user.age,
IsAdmin: user.is_admin,
CoverID: user.cover_id,
avatarUrl: user.cover || '', // 直接使用 cover 字段作为头像 URL
UserGroup: user.user_group,
RealName: user.real_name,
IsDeleted: user.is_deleted,
CreatedAt: user.created_at
}))
console.log("用户列表:", userList.value)
total.value = res.data.data.all_count || 0
// 为每个用户加载头像URL
await loadAvatarsForUsers()
}
} catch (error) {
ElMessage.error('获取用户列表失败')
@@ -527,26 +539,6 @@ const fetchUserList = async () => {
}
}
// 为用户列表加载头像URL
const loadAvatarsForUsers = async () => {
const promises = userList.value.map(async (user) => {
if (user.CoverID) {
try {
const res = await getFileDetail({ file_id: user.CoverID })
if (res.data.code === 200) {
user.avatarUrl = res.data.data.url
}
} catch (error) {
console.error('加载头像失败:', error)
user.avatarUrl = ''
}
} else {
user.avatarUrl = ''
}
})
await Promise.all(promises)
}
// 查询用户列表
const handleQuery = () => {
queryParams.page = 1