backup: kefu state before examiner-add feature on ExaminerManage
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -305,6 +305,8 @@
|
||||
:disabled="!hasMemberPermission"
|
||||
>添加会员</el-button>
|
||||
</div>
|
||||
<div v-if="!hasMemberPermission" class="member-hint warn">需要 001ff 或超级管理权限</div>
|
||||
<div v-else class="member-hint">添加/移除会员请在弹窗点「确认」,与顶部「保存」无关</div>
|
||||
</template>
|
||||
<div class="member-list">
|
||||
<div v-for="member in memberList" :key="member.id" class="member-item">
|
||||
@@ -335,6 +337,14 @@
|
||||
<span class="copyable" @click="copyText(playerInfo.yaoqingren)">
|
||||
{{ playerInfo.yaoqingren || '--' }} <el-icon><CopyDocument /></el-icon>
|
||||
</span>
|
||||
<el-button
|
||||
v-if="canChangeInviter"
|
||||
type="primary"
|
||||
link
|
||||
size="small"
|
||||
style="margin-left: 8px"
|
||||
@click="openInviterDialog"
|
||||
>更换邀请人</el-button>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="介绍">
|
||||
<el-tooltip v-if="playerInfo.jieshao" :content="playerInfo.jieshao" placement="top">
|
||||
@@ -348,6 +358,23 @@
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<!-- 更换邀请人弹窗 -->
|
||||
<el-dialog v-model="inviterDialogVisible" title="更换打手邀请人" width="420px">
|
||||
<el-form label-width="100px">
|
||||
<el-form-item label="当前邀请人">
|
||||
<span>{{ playerInfo.yaoqingren || '无' }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="新邀请人ID" required>
|
||||
<el-input v-model="newInviterId" placeholder="请输入管事用户ID(7位)" maxlength="7" />
|
||||
<div class="form-tip">新邀请人必须是已存在的管事用户</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="inviterDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitChangeInviter" :loading="inviterChanging">确认更换</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 添加会员弹窗 -->
|
||||
<el-dialog v-model="memberDialogVisible" title="添加会员" width="400px">
|
||||
<el-form :model="memberForm" label-width="80px">
|
||||
@@ -404,8 +431,63 @@ const memberAdding = ref(false)
|
||||
const userPermissions = ref([])
|
||||
|
||||
const isGoldTitle = computed(() => playerInfo.value.chenghao === '金牌选手')
|
||||
const hasMemberPermission = computed(() => userPermissions.value.includes('001ff') || userPermissions.value.includes('001gg'))
|
||||
const hasMemberPermission = computed(() =>
|
||||
userPermissions.value.includes('000001') ||
|
||||
userPermissions.value.includes('001ff') ||
|
||||
userPermissions.value.includes('001gg')
|
||||
)
|
||||
const hasChenghaoPermission = computed(() => userPermissions.value.includes('001hh'))
|
||||
const canChangeInviter = computed(() => userPermissions.value.includes('001ee') || userPermissions.value.includes('000001'))
|
||||
|
||||
const inviterDialogVisible = ref(false)
|
||||
const newInviterId = ref('')
|
||||
const inviterChanging = ref(false)
|
||||
|
||||
const openInviterDialog = () => {
|
||||
newInviterId.value = ''
|
||||
inviterDialogVisible.value = true
|
||||
}
|
||||
|
||||
const submitChangeInviter = async () => {
|
||||
const newId = newInviterId.value.trim()
|
||||
if (!newId) {
|
||||
ElMessage.warning('请输入新邀请人ID')
|
||||
return
|
||||
}
|
||||
if (newId === playerId.value) {
|
||||
ElMessage.warning('不能将自己设为邀请人')
|
||||
return
|
||||
}
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`确认将打手 ${playerId.value} 的邀请人更换为 ${newId}?新上级必须是管事。`,
|
||||
'确认更换',
|
||||
{ type: 'warning' }
|
||||
)
|
||||
} catch { return }
|
||||
|
||||
inviterChanging.value = true
|
||||
try {
|
||||
const res = await request.post('/houtai/htghyqr', {
|
||||
username: username.value,
|
||||
yonghuid: playerId.value,
|
||||
target_type: 'dashou',
|
||||
new_yaoqingren: newId
|
||||
})
|
||||
if (res.code === 0) {
|
||||
ElMessage.success('邀请人更换成功')
|
||||
inviterDialogVisible.value = false
|
||||
await fetchDetail()
|
||||
} else {
|
||||
ElMessage.error(res.msg || '更换失败')
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
ElMessage.error('更换失败')
|
||||
} finally {
|
||||
inviterChanging.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 辅助函数
|
||||
const getFullImageUrl = (url) => {
|
||||
@@ -448,7 +530,10 @@ const fetchDetail = async () => {
|
||||
})
|
||||
if (res.code === 0) {
|
||||
const data = res.data
|
||||
playerInfo.value = data.user_info || {}
|
||||
playerInfo.value = {
|
||||
...(data.user_info || {}),
|
||||
create_time: data.user_info?.create_time || data.user_info?.CreateTime || '',
|
||||
}
|
||||
originalInfo.value = JSON.parse(JSON.stringify(playerInfo.value))
|
||||
memberList.value = data.member_list || []
|
||||
allMembers.value = data.all_members || []
|
||||
@@ -569,6 +654,13 @@ const handleChenghaoChange = async () => {
|
||||
|
||||
// 添加会员
|
||||
const openMemberDialog = () => {
|
||||
if (!hasMemberPermission.value) {
|
||||
ElMessage.warning('无添加会员权限(需要 001ff 或超级管理)')
|
||||
return
|
||||
}
|
||||
if (allMembers.value.length === 0) {
|
||||
ElMessage.warning('会员类型列表为空,请刷新页面后重试')
|
||||
}
|
||||
memberForm.huiyuan_id = ''
|
||||
memberForm.days = 30
|
||||
memberDialogVisible.value = true
|
||||
@@ -655,6 +747,14 @@ onMounted(() => {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
}
|
||||
.member-hint {
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.member-hint.warn {
|
||||
color: #e6a23c;
|
||||
}
|
||||
/* 其余样式保持不变(从原代码复制) */
|
||||
|
||||
|
||||
@@ -810,4 +910,9 @@ onMounted(() => {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
.form-tip {
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
margin-top: 4px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user