3 Commits
5.0.4 ... 5.0.5

Author SHA1 Message Date
zzc
254d2601bf fix: robot
All checks were successful
continuous-integration/drone/tag Build is passing
2026-07-05 18:51:19 +08:00
zzc
28fff91b57 fix: robot 2026-07-05 18:38:32 +08:00
zzc
8da9a7e8cc fix: robot 2026-07-05 18:34:48 +08:00
3 changed files with 106 additions and 47 deletions

View File

@@ -57,39 +57,53 @@ export const asyncRoutes = [
children: [ children: [
{ {
path: 'topic', path: 'topic',
name: 'RatingTopicIndex', component: EmptyLayout,
component: () => import('@/views/rating/topic/index'), alwaysShow: true,
meta: { title: '评分话题' }, redirect: 'noRedirect',
}, name: 'TopicIndex',
{ meta: {
path: 'topic-recommend', title: '评分话题',
name: 'RatingTopicRecommendIndex', icon: 'clover',
component: () => import('@/views/rating/topicRecommend/index'), permissions: ['admin'],
meta: { title: '话题推荐' }, },
}, children: [
{ {
path: 'topic-item', path: 'recommend',
name: 'RatingTopicItemIndex', name: 'RatingTopicRecommendIndex',
component: () => import('@/views/rating/topicItem/index'), component: () => import('@/views/rating/topicRecommend/index'),
meta: { title: '评分项' }, meta: { title: '话题推荐' },
}, },
{ {
path: 'topic-record', path: 'category',
name: 'RatingTopicRecordIndex', name: 'RatingTopicCategoryIndex',
component: () => import('@/views/rating/topicScoreRecord/index'), component: () => import('@/views/rating/topicCategory/index'),
meta: { title: '用户评分记录' }, meta: { title: '评分话题分类' },
}, },
{ {
path: 'topic-comment', path: 'list',
name: 'RatingTopicCommentIndex', name: 'RatingTopicIndex',
component: () => import('@/views/rating/topicCommentRecord/index'), component: () => import('@/views/rating/topic/index'),
meta: { title: '用户评论记录' }, meta: { title: '评分话题' },
}, },
{ {
path: 'topic-category', path: 'item',
name: 'RatingTopicCategoryIndex', name: 'RatingTopicItemIndex',
component: () => import('@/views/rating/topicCategory/index'), component: () => import('@/views/rating/topicItem/index'),
meta: { title: '评分话题分类' }, meta: { title: '评分' },
},
{
path: 'record',
name: 'RatingTopicRecordIndex',
component: () => import('@/views/rating/topicScoreRecord/index'),
meta: { title: '用户评分记录' },
},
{
path: 'comment',
name: 'RatingTopicCommentIndex',
component: () => import('@/views/rating/topicCommentRecord/index'),
meta: { title: '用户评论记录' },
},
],
}, },
{ {
path: 'pk', path: 'pk',

View File

@@ -127,13 +127,18 @@
style="width: 100%" style="width: 100%"
> >
<el-option v-for="item in commentUserList" :key="item.id" :label="item.nickname || item.id" :value="item.id"> <el-option v-for="item in commentUserList" :key="item.id" :label="item.nickname || item.id" :value="item.id">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center; justify-content: space-between">
<el-image <div style="display: flex; align-items: center; min-width: 0">
v-if="item.avatar" <el-image
:src="getThumbUrl(item.avatar)" v-if="item.avatar"
style="width: 24px; height: 24px; border-radius: 50%; margin-right: 10px" :src="getThumbUrl(item.avatar)"
/> style="width: 24px; height: 24px; border-radius: 50%; margin-right: 10px"
<span>{{ item.nickname || '未知用户' }}</span> />
<span>{{ item.nickname || '未知用户' }}</span>
</div>
<el-tag v-if="item.choose" size="mini" style="margin-left: 12px; flex-shrink: 0" type="info">
{{ getCommentUserChooseName(item.choose) }}
</el-tag>
</div> </div>
</el-option> </el-option>
</el-select> </el-select>
@@ -233,6 +238,7 @@
}, },
commentUserTotal: 0, commentUserTotal: 0,
fetchingCommentUsers: false, fetchingCommentUsers: false,
currentCommentPk: null,
} }
}, },
created() { created() {
@@ -342,8 +348,19 @@
handleVote(pkId, itemId, itemName) { handleVote(pkId, itemId, itemName) {
this.$refs['voteEdit'].showEdit(pkId, itemId, itemName) this.$refs['voteEdit'].showEdit(pkId, itemId, itemName)
}, },
getCommentUserChooseName(choose) {
if (!choose || !this.currentCommentPk) return '-'
if (choose === this.currentCommentPk.leftItemId) {
return this.currentCommentPk.leftItemName || '-'
}
if (choose === this.currentCommentPk.rightItemId) {
return this.currentCommentPk.rightItemName || '-'
}
return '-'
},
handleComment(row) { handleComment(row) {
this.commentDialogVisible = true this.commentDialogVisible = true
this.currentCommentPk = row
this.commentForm = { this.commentForm = {
pkId: row.id, pkId: row.id,
userId: '', userId: '',
@@ -360,6 +377,7 @@
this.$refs['commentForm'].resetFields() this.$refs['commentForm'].resetFields()
} }
this.commentDialogVisible = false this.commentDialogVisible = false
this.currentCommentPk = null
}, },
async fetchCommentUsers() { async fetchCommentUsers() {
if (this.fetchingCommentUsers || !this.commentUserQuery.pkId) return if (this.fetchingCommentUsers || !this.commentUserQuery.pkId) return

View File

@@ -11,13 +11,18 @@
style="width: 100%" style="width: 100%"
> >
<el-option v-for="item in robotList" :key="item.id" :label="item.nickname" :value="item.id"> <el-option v-for="item in robotList" :key="item.id" :label="item.nickname" :value="item.id">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center; justify-content: space-between">
<el-image <div style="display: flex; align-items: center; min-width: 0">
v-if="item.avatar" <el-image
:src="getThumbUrl(item.avatar)" v-if="item.avatar"
style="width: 24px; height: 24px; border-radius: 50%; margin-right: 10px" :src="getThumbUrl(item.avatar)"
/> style="width: 24px; height: 24px; border-radius: 50%; margin-right: 10px"
<span>{{ item.nickname }}</span> />
<span>{{ item.nickname }}</span>
</div>
<el-tag v-if="item.score" size="mini" style="margin-left: 12px; flex-shrink: 0" :type="getScoreTagType(item.score)">
{{ getScoreText(item.score) }}
</el-tag>
</div> </div>
</el-option> </el-option>
</el-select> </el-select>
@@ -84,6 +89,26 @@
}, },
methods: { methods: {
getThumbUrl, getThumbUrl,
getScoreText(score) {
const map = {
2: '拉',
4: 'npc',
6: '人上人',
8: '顶级',
10: '夯',
}
return map[score] || score
},
getScoreTagType(score) {
const map = {
2: 'info',
4: 'warning',
6: '',
8: 'success',
10: 'danger',
}
return map[score] || 'info'
},
async showEdit(row, topicId) { async showEdit(row, topicId) {
this.title = `${row.name} 写评论` this.title = `${row.name} 写评论`
this.form = this.$options.data().form this.form = this.$options.data().form
@@ -92,6 +117,8 @@
this.dialogFormVisible = true this.dialogFormVisible = true
this.robotQuery.pageNo = 1 this.robotQuery.pageNo = 1
this.robotQuery.onlyTopicId = topicId
this.robotQuery.onlyItemId = row.id
this.robotList = [] this.robotList = []
this.robotTotal = 0 this.robotTotal = 0
await this.fetchRobotList() await this.fetchRobotList()