This commit is contained in:
77
2024-04-21 23:16:00 +08:00
parent b481e2a329
commit c67f4159bd
3 changed files with 80 additions and 7 deletions

View File

@@ -120,6 +120,14 @@ export function userUnBindInvite(userId) {
}) })
} }
export function userLogout(userId) {
return request({
url: '/cai/user/logout',
method: 'post',
data:{id:userId}
})
}
// 绑定用户邀请人 // 绑定用户邀请人
export function userBindInvite(userId,inviteUsercode) { export function userBindInvite(userId,inviteUsercode) {
return request({ return request({

View File

@@ -17,6 +17,17 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="IM在线" prop="onlineStatus">
<el-select v-model="queryParams.onlineStatus" clearable size="small">
<el-option
v-for="dict in onlineStatusList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -117,6 +128,11 @@
<el-table-column label="礼物分成" align="center" prop="giftRate" />--> <el-table-column label="礼物分成" align="center" prop="giftRate" />-->
<el-table-column label="服务总次数" align="center" prop="serviceCount" /> <el-table-column label="服务总次数" align="center" prop="serviceCount" />
<el-table-column label="服务总时长" align="center" prop="serviceTime" /> <el-table-column label="服务总时长" align="center" prop="serviceTime" />
<el-table-column label="IM在线状态" align="center" prop="onlineStatus" >
<template v-slot="scope">
<cai-dict-tag :options="onlineStatusList" :value="scope.row.onlineStatus" />
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" > <el-table-column label="状态" align="center" prop="status" >
<template v-slot="scope"> <template v-slot="scope">
<cai-dict-tag :options="userStatusList" :value="scope.row.status" /> <cai-dict-tag :options="userStatusList" :value="scope.row.status" />
@@ -167,7 +183,7 @@
<script> <script>
import {delAnchor, listAnchor, updateAnchor} from '@/api/cai/anchor' import {delAnchor, listAnchor, updateAnchor} from '@/api/cai/anchor'
import {genderList, userStatusList, videoStatusList} from '@/constant/statusMap' import {genderList, onlineStatusList, userStatusList, videoStatusList} from '@/constant/statusMap'
import AddAnchorDialog from "@/views/cai/anchor/add-anchor-dialog"; import AddAnchorDialog from "@/views/cai/anchor/add-anchor-dialog";
import UpdateAnchorDialog from "@/views/cai/anchor/update-anchor-dialog"; import UpdateAnchorDialog from "@/views/cai/anchor/update-anchor-dialog";
import AnchorInfoDialog from "@/views/cai/anchor/anchor-info-dialog"; import AnchorInfoDialog from "@/views/cai/anchor/anchor-info-dialog";
@@ -182,7 +198,7 @@ export default {
}, },
data() { data() {
return { return {
genderList,userStatusList,videoStatusList, genderList,userStatusList,videoStatusList,onlineStatusList,
systemName: process.env.VUE_APP_SYSTEM_HOME, systemName: process.env.VUE_APP_SYSTEM_HOME,
addAnchorDialogVisible: false, addAnchorDialogVisible: false,
updateAnchorDialogVisible: false, updateAnchorDialogVisible: false,
@@ -208,7 +224,8 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
usercode: undefined, usercode: undefined,
mobile: undefined mobile: undefined,
onlineStatus: undefined
}, },
}; };
}, },

View File

@@ -52,6 +52,17 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="IM在线" prop="onlineStatus">
<el-select v-model="queryParams.onlineStatus" clearable size="small">
<el-option
v-for="dict in onlineStatusList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@keyup.enter.native="handleQuery"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -120,6 +131,11 @@
<cai-dict-tag :options="userStatusList" :value="scope.row.status" /> <cai-dict-tag :options="userStatusList" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="IM在线状态" align="center" prop="onlineStatus" >
<template v-slot="scope">
<cai-dict-tag :options="onlineStatusList" :value="scope.row.onlineStatus" />
</template>
</el-table-column>
<el-table-column label="IM状态" align="center" prop="im" > <el-table-column label="IM状态" align="center" prop="im" >
<template v-slot="scope"> <template v-slot="scope">
<el-tag v-if="scope.row.enableIm && scope.row.imSpeck" :disable-transitions="true" type="primary">正常</el-tag> <el-tag v-if="scope.row.enableIm && scope.row.imSpeck" :disable-transitions="true" type="primary">正常</el-tag>
@@ -149,6 +165,7 @@
<el-dropdown-item v-hasPermi="['cai:user:im']" v-if="!scope.row.enableIm" command="handleUnlockIm" icon="el-icon-unlock"><span style="color: blue">解封IM</span></el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:im']" v-if="!scope.row.enableIm" command="handleUnlockIm" icon="el-icon-unlock"><span style="color: blue">解封IM</span></el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:im']" v-if="scope.row.imSpeck" command="handleNoSpeckIm" icon="el-icon-lock"><span style="color: red">禁言</span></el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:im']" v-if="scope.row.imSpeck" command="handleNoSpeckIm" icon="el-icon-lock"><span style="color: red">禁言</span></el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:im']" v-if="!scope.row.imSpeck" command="handleEnSpeckIm" icon="el-icon-unlock"><span style="color: blue">解封禁言</span></el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:im']" v-if="!scope.row.imSpeck" command="handleEnSpeckIm" icon="el-icon-unlock"><span style="color: blue">解封禁言</span></el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:im']" command="handleLogoutUser" icon="el-icon-close"><span style="color: red">强制APP下线</span></el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:restPwd']" command="handleResetPwd" icon="el-icon-key">重置密码</el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:restPwd']" command="handleResetPwd" icon="el-icon-key">重置密码</el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:updateMobile']" command="handleResetMobile" icon="el-icon-phone">修改手机</el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:updateMobile']" command="handleResetMobile" icon="el-icon-phone">修改手机</el-dropdown-item>
<el-dropdown-item v-hasPermi="['cai:user:lock']" command="handleUserForbid" icon="el-icon-lock">封禁</el-dropdown-item> <el-dropdown-item v-hasPermi="['cai:user:lock']" command="handleUserForbid" icon="el-icon-lock">封禁</el-dropdown-item>
@@ -184,11 +201,18 @@ import {
getFullUser, getUser, getFullUser, getUser,
listUser, lockIm, noSpeckIm, listUser, lockIm, noSpeckIm,
resetUserMobile, resetUserMobile,
resetUserPassword, unLockIm, resetUserPassword, unLockIm, userLogout,
userResetAvatar, userResetAvatar,
userResetNickname, userUnBindInvite userResetNickname, userUnBindInvite
} from '@/api/cai/user' } from '@/api/cai/user'
import {authList, genderList, isAnchorList, userStatusList, videoStatusList} from '@/constant/statusMap' import {
authList,
genderList,
isAnchorList,
onlineStatusList,
userStatusList,
videoStatusList
} from '@/constant/statusMap'
import UserAddUpdateDialog from '@/views/cai/user/user-add-update-dialog.vue' import UserAddUpdateDialog from '@/views/cai/user/user-add-update-dialog.vue'
import UserInfoDialog from "@/views/cai/user/user-info-dialog"; import UserInfoDialog from "@/views/cai/user/user-info-dialog";
import UserForbidDialog from "@/views/cai/user/user-forbid-dialog"; import UserForbidDialog from "@/views/cai/user/user-forbid-dialog";
@@ -202,7 +226,7 @@ export default {
}, },
data() { data() {
return { return {
genderList,authList,userStatusList,isAnchorList,videoStatusList, genderList,authList,userStatusList,isAnchorList,videoStatusList,onlineStatusList,
systemName: process.env.VUE_APP_SYSTEM_HOME, systemName: process.env.VUE_APP_SYSTEM_HOME,
userForbidVisible: false, userForbidVisible: false,
bindInviteDialogVisible: false, bindInviteDialogVisible: false,
@@ -229,7 +253,8 @@ export default {
mobile: undefined, mobile: undefined,
gender: undefined, gender: undefined,
city: undefined, city: undefined,
lastLoginIp: undefined lastLoginIp: undefined,
onlineStatus: undefined
}, },
userAddUpdateDialogVisible: false, userAddUpdateDialogVisible: false,
userInfoDialogVisible: false userInfoDialogVisible: false
@@ -466,6 +491,26 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
handleLogoutUser(row){
let html = `<p>确认踢用户:<span style="color: cadetblue">` + row.nickname + `</span> 的下线?</p>`
+ `<p>提醒:<span style="color: red">强制踢用户下线,如果正在用户通话中,可能会有通话中断</span></p>`
this.$confirm(html, '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
dangerouslyUseHTMLString: true,
type: 'warning'
}).then(() => {
this.loading = true
return userLogout(row.id)
}).then(() => {
this.$modal.msgSuccess("解除成功");
this.loading = false
this.getList()
}).catch(() => {
}).finally(()=>{
this.loading = false
})
},
handleCommand(command, row) { handleCommand(command, row) {
switch (command) { switch (command) {
case "handleDelete": case "handleDelete":
@@ -504,6 +549,9 @@ export default {
case "handleEnSpeckIm": case "handleEnSpeckIm":
this.handleEnSpeckIm(row); this.handleEnSpeckIm(row);
break; break;
case "handleLogoutUser":
this.handleLogoutUser(row);
break;
default: default:
break; break;
} }