fix: add robot score
All checks were successful
continuous-integration/drone/tag Build is passing

This commit is contained in:
zzc
2026-07-04 20:29:49 +08:00
parent f2389e73aa
commit c60ea798fd
2 changed files with 34 additions and 4 deletions

View File

@@ -26,7 +26,7 @@ export function getParticipantList(data) {
/** /**
* pk 投票 * pk 投票
* @param { pkId: string, itemId: string, userId: string } data * @param { pkId: string, itemId: string, userId?: string, count?: number } data
*/ */
export function vote(data) { export function vote(data) {
return request({ return request({

View File

@@ -4,7 +4,14 @@
<el-form-item label="支持项"> <el-form-item label="支持项">
<span style="font-weight: bold; color: #409eff">{{ targetName }}</span> <span style="font-weight: bold; color: #409eff">{{ targetName }}</span>
</el-form-item> </el-form-item>
<el-form-item label="投票用户" prop="userId"> <el-form-item label="支持方式" prop="voteMode">
<el-radio-group v-model="form.voteMode">
<el-radio label="user">投票用户</el-radio>
<el-radio label="count">支持个数</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.voteMode === 'user'" label="投票用户" prop="userId">
<el-select v-model="form.userId" v-loadmore="loadMoreRobots" filterable placeholder="请选择投票的机器人" style="width: 100%"> <el-select v-model="form.userId" v-loadmore="loadMoreRobots" filterable placeholder="请选择投票的机器人" style="width: 100%">
<el-option v-for="item in robotList" :key="item.id" :label="item.nickname || item.id" :value="item.id"> <el-option v-for="item in robotList" :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">
@@ -18,6 +25,10 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="form.voteMode === 'count'" label="支持个数" prop="count">
<el-input-number v-model="form.count" controls-position="right" :max="100000" :min="1" :step="1" style="width: 100%" />
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -60,10 +71,12 @@
form: { form: {
pkId: '', pkId: '',
itemId: '', itemId: '',
voteMode: 'user',
userId: '', userId: '',
count: 1,
}, },
rules: { rules: {
userId: [{ required: true, trigger: 'change', message: '请选择投票的机器人' }], voteMode: [{ required: true, trigger: 'change', message: '请选择支持方式' }],
}, },
// 机器人下拉列表状态 // 机器人下拉列表状态
@@ -117,9 +130,26 @@
save() { save() {
this.$refs['form'].validate(async (valid) => { this.$refs['form'].validate(async (valid) => {
if (valid) { if (valid) {
if (this.form.voteMode === 'user' && !this.form.userId) {
this.$baseMessage('请选择投票的机器人', 'error')
return false
}
if (this.form.voteMode === 'count' && (!this.form.count || this.form.count < 1)) {
this.$baseMessage('请输入正确的支持个数', 'error')
return false
}
this.saving = true this.saving = true
try { try {
const { msg } = await vote(this.form) const params = {
pkId: this.form.pkId,
itemId: this.form.itemId,
}
if (this.form.voteMode === 'user') {
params.userId = this.form.userId
} else {
params.count = this.form.count
}
const { msg } = await vote(params)
this.$baseMessage(msg || '投票成功', 'success') this.$baseMessage(msg || '投票成功', 'success')
this.close() this.close()
this.$emit('fetch-data') this.$emit('fetch-data')