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) {
return request({

View File

@@ -17,6 +17,17 @@
@keyup.enter.native="handleQuery"
/>
</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-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>
@@ -117,6 +128,11 @@
<el-table-column label="礼物分成" align="center" prop="giftRate" />-->
<el-table-column label="服务总次数" align="center" prop="serviceCount" />
<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" >
<template v-slot="scope">
<cai-dict-tag :options="userStatusList" :value="scope.row.status" />
@@ -167,7 +183,7 @@
<script>
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 UpdateAnchorDialog from "@/views/cai/anchor/update-anchor-dialog";
import AnchorInfoDialog from "@/views/cai/anchor/anchor-info-dialog";
@@ -182,7 +198,7 @@ export default {
},
data() {
return {
genderList,userStatusList,videoStatusList,
genderList,userStatusList,videoStatusList,onlineStatusList,
systemName: process.env.VUE_APP_SYSTEM_HOME,
addAnchorDialogVisible: false,
updateAnchorDialogVisible: false,
@@ -208,7 +224,8 @@ export default {
pageNum: 1,
pageSize: 10,
usercode: undefined,
mobile: undefined
mobile: undefined,
onlineStatus: undefined
},
};
},

View File

@@ -52,6 +52,17 @@
@keyup.enter.native="handleQuery"
/>
</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-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>
@@ -120,6 +131,11 @@
<cai-dict-tag :options="userStatusList" :value="scope.row.status" />
</template>
</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" >
<template v-slot="scope">
<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.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']" 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: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>
@@ -184,11 +201,18 @@ import {
getFullUser, getUser,
listUser, lockIm, noSpeckIm,
resetUserMobile,
resetUserPassword, unLockIm,
resetUserPassword, unLockIm, userLogout,
userResetAvatar,
userResetNickname, userUnBindInvite
} 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 UserInfoDialog from "@/views/cai/user/user-info-dialog";
import UserForbidDialog from "@/views/cai/user/user-forbid-dialog";
@@ -202,7 +226,7 @@ export default {
},
data() {
return {
genderList,authList,userStatusList,isAnchorList,videoStatusList,
genderList,authList,userStatusList,isAnchorList,videoStatusList,onlineStatusList,
systemName: process.env.VUE_APP_SYSTEM_HOME,
userForbidVisible: false,
bindInviteDialogVisible: false,
@@ -229,7 +253,8 @@ export default {
mobile: undefined,
gender: undefined,
city: undefined,
lastLoginIp: undefined
lastLoginIp: undefined,
onlineStatus: undefined
},
userAddUpdateDialogVisible: false,
userInfoDialogVisible: false
@@ -466,6 +491,26 @@ export default {
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) {
switch (command) {
case "handleDelete":
@@ -504,6 +549,9 @@ export default {
case "handleEnSpeckIm":
this.handleEnSpeckIm(row);
break;
case "handleLogoutUser":
this.handleLogoutUser(row);
break;
default:
break;
}