123
This commit is contained in:
@@ -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({
|
||||||
|
|||||||
@@ -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
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user