feat: 优化工单和用户管理功能
- 工单模块改为列表形式,支持点击进入详情页回复 - 新增工单列表页面(TicketList.vue)和详情页面(TicketDetail.vue) - 工单详情页支持图片上传、快捷回复、定时刷新 - 消息按ID排序,时间显示优化(今天/昨天/星期/完整日期) - 定时刷新时不显示loading,且只在数据变化时更新UI - 用户列表直接使用API返回的cover字段作为头像,减少HTTP请求 - 修复用户余额页面balance_type参数undefined问题
This commit is contained in:
+16
-24
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user