This commit is contained in:
dute7liang
2024-01-03 23:04:03 +08:00
parent 2bdc3a7fbe
commit 0223ca5ec7
11 changed files with 390 additions and 104 deletions

View File

@@ -17,6 +17,14 @@ export function getAnchor(id) {
})
}
export function getFullAnchor(id) {
return request({
url: '/cai/anchor/full',
method: 'get',
params: {userId:id}
})
}
// 新增女神列表
export function addAnchor(data) {
return request({

View File

@@ -17,24 +17,23 @@ export function getAnchorApply(id) {
})
}
// 新增播主申请管理
export function addAnchorApply(data) {
export function auditAnchorSuccess(data) {
return request({
url: '/cai/anchorApply',
url: '/cai/anchorApply/auditAnchorSuccess',
method: 'post',
data: data
})
}
// 修改播主申请管理
export function updateAnchorApply(data) {
export function auditAnchorFail(data) {
return request({
url: '/cai/anchorApply',
method: 'put',
url: '/cai/anchorApply/auditAnchorFail',
method: 'post',
data: data
})
}
// 删除播主申请管理
export function delAnchorApply(id) {
return request({

View File

@@ -104,16 +104,10 @@ export const onlineStatusList = [
{ value: 1, label: '在线',listClass: listClass.danger},
]
export const anchorApplyStatus = [
{ value: 1, label: '审核中',listClass: listClass.info},
{ value: 2, label: '审核不通过',listClass: listClass.danger},
{ value: 3, label: '审核通过',listClass: listClass.primary},
]
export const auditStatusList = [
{ value: 1, label: '审核中',listClass: listClass.info},
{ value: 2, label: '审核通过',listClass: listClass.danger},
{ value: 3, label: '审核通过',listClass: listClass.primary},
{ value: 2, label: '审核通过',listClass: listClass.primary},
{ value: 3, label: '审核通过',listClass: listClass.danger},
]
/**

View File

@@ -0,0 +1,198 @@
<template>
<el-dialog title="主播信息" :close-on-click-modal="false" :visible.sync="open" width="1200px" append-to-body>
<el-collapse v-model="activeName" >
<el-collapse-item title="基本信息" name="base">
<el-descriptions :contentStyle="CS" :label-style="LS " class="margin-top" :column="3" size="medium" border>
<el-descriptions-item label="id">
{{info.user.id}}
</el-descriptions-item>
<el-descriptions-item label="蜜瓜号">
{{info.user.usercode}}
</el-descriptions-item>
<el-descriptions-item label="手机号">
{{info.user.mobile}}
</el-descriptions-item>
<el-descriptions-item label="头像">
<image-avatar :src="info.user.avatar" />
</el-descriptions-item>
<el-descriptions-item label="性别">
<cai-dict-tag :options="genderList" :value="info.user.gender" />
</el-descriptions-item>
<el-descriptions-item label="年龄">
{{info.user.age}}
</el-descriptions-item>
<el-descriptions-item label="生日">
{{info.user.birthday}}
</el-descriptions-item>
<el-descriptions-item label="城市">
{{info.user.city}}
</el-descriptions-item>
<el-descriptions-item label="主播">
<cai-dict-tag :options="isAnchorList" :value="info.user.isAnchor" />
</el-descriptions-item>
<el-descriptions-item label="相册" :span="3" v-if="info.userAlbums">
<span v-for='val in info.userAlbums'>
<image-preview :src="val.url" height="45px" width="45px" /> &nbsp;&nbsp;
</span>
</el-descriptions-item>
<el-descriptions-item label="资料完成">
<cai-dict-tag :options="authList" :value="info.user.finishStatus" />
</el-descriptions-item>
<el-descriptions-item label="相册完成度">
<cai-dict-tag :options="authList" :value="info.user.photoStatus" />
</el-descriptions-item>
<el-descriptions-item label="自拍认证">
<cai-dict-tag :options="authList" :value="info.user.cameraStatus" />
</el-descriptions-item>
<el-descriptions-item label="是否同意协议">
<cai-dict-tag :options="authList" :value="info.user.agreeProtocol" />
</el-descriptions-item>
<el-descriptions-item label="视频状态">
<cai-dict-tag :options="videoStatusList" :value="info.user.videoStatus" />
</el-descriptions-item>
<el-descriptions-item label="状态">
<cai-dict-tag :options="userStatusList" :value="info.user.status" />
</el-descriptions-item>
<el-descriptions-item label="工会">
<cai-dict-tag :options="isAnchorList" :value="info.user.isUnion" />
</el-descriptions-item>
<el-descriptions-item label="最后登录IP">
{{info.userInfo.lastLoginIp}}
</el-descriptions-item>
<el-descriptions-item label="最后登录时间">
{{info.userInfo.lastLoginTime}}
</el-descriptions-item>
<el-descriptions-item label="最后登录位置">
{{info.userInfo.lastLocation}}
</el-descriptions-item>
<el-descriptions-item label="注册IP">
{{info.userInfo.regIp}}
</el-descriptions-item>
<el-descriptions-item label="注册时间">
{{info.userInfo.regTime}}
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="主播" name="anchor" v-if="info.anchor">
<el-descriptions :contentStyle="CS" :label-style="LS" class="margin-top" :column="3" size="medium" border>
<el-descriptions-item label="价格">
{{info.anchor.price}}
</el-descriptions-item>
<el-descriptions-item label="开启视频接听">
<cai-dict-tag :options="openVideoStatusList" :value="info.anchor.openVideoStatus" />
</el-descriptions-item>
<el-descriptions-item label="视频状态">
<cai-dict-tag :options="videoStatusList" :value="info.anchor.videoStatus" />
</el-descriptions-item>
<el-descriptions-item label="隐藏接单">
<cai-dict-tag :options="orderSwitchList" :value="info.anchor.orderSwitch" />
</el-descriptions-item>
<el-descriptions-item label="首页展示">
<cai-dict-tag :options="indexDisplayList" :value="info.anchor.indexDisplay" />
</el-descriptions-item>
<el-descriptions-item label="用户评分">
{{info.anchor.giveScore}}
</el-descriptions-item>
<el-descriptions-item label="服务总次数">
{{info.anchor.serviceCount}}
</el-descriptions-item>
<el-descriptions-item label="服务总时长">
{{info.anchor.serviceTime}}
</el-descriptions-item>
<el-descriptions-item label="视频分成比例">
{{info.anchor.videoRate}}
</el-descriptions-item>
<el-descriptions-item label="守护分成比例">
{{info.anchor.guardRate}}
</el-descriptions-item>
<el-descriptions-item label="礼物分成比列">
{{info.anchor.giftRate}}
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="在线状态" name="userOnline" v-if="info.userOnline">
<el-descriptions :contentStyle="CS" :label-style="LS" class="margin-top" :column="2" size="medium" border>
<el-descriptions-item label="在线状态">
<cai-dict-tag :options="onlineStatusList" :value="info.userOnline.status" />
</el-descriptions-item>
<el-descriptions-item label="最后在线时间">
{{info.userOnline.lastLiveTime}}
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
</el-collapse>
</el-dialog>
</template>
<script>
import {
authList,
genderList,
userStatusList,
isAnchorList,
videoStatusList,
onlineStatusList,
memberTypeList,
memberStatusList,
openVideoStatusList,
orderSwitchList,
indexDisplayList,
booleanList
} from '@/constant/statusMap'
import {getFullAnchor} from "@/api/cai/anchor";
export default {
name: "UserInfo",
data() {
return {
genderList,userStatusList,isAnchorList,authList,videoStatusList,onlineStatusList,memberTypeList,
memberStatusList,openVideoStatusList,orderSwitchList,indexDisplayList,booleanList,
activeName:['base','anchor','userOnline'],
CS: {
'text-align': 'center', //文本居中
'min-width': '250px', //最小宽度
'word-break': 'break-all' //过长时自动换行
},
LS: {
// 'color': '#000',
'text-align': 'center',
// 'font-weight': '600',
'height': '40px',
// 'background-color': 'rgba(255, 97, 2, 0.1)',
'min-width': '110px',
'word-break': 'keep-all'
},
open:false,
info:{},
userId: this.$route.query.id,
};
},
created() {
},
methods: {
init(userId){
this.open = true;
this.userId = userId;
getFullAnchor(this.userId).then(response => {
this.info = response.data;
});
},
}
};
</script>
<style lang="scss" scoped>
.el-row {
margin-bottom: -15px;
display: flex;
flex-wrap: wrap
}
/* .el-card {
min-width: 100%;
height: 80%; // 高度要设置百分比才可以
margin-right: 20px;
transition: all .5s;
}*/
</style>

View File

@@ -64,7 +64,11 @@
></el-switch>
</template>
</el-table-column>
<el-table-column label="视频状态" align="center" prop="videoStatus" />
<el-table-column label="视频状态" align="center" prop="videoStatus" >
<template v-slot="scope">
<cai-dict-tag :options="videoStatusList" :value="scope.row.videoStatus" />
</template>
</el-table-column>
<el-table-column label="首页展示" align="center" prop="indexDisplay" >
<template v-slot="scope">
<el-switch
@@ -96,8 +100,15 @@
<cai-dict-tag :options="userStatusList" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="140">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="180">
<template v-slot="scope">
<el-button
size="mini"
type="text"
icon="el-icon-info"
@click="handleAnchorInfo(scope.row)"
v-hasPermi="['cai:anchor:query']"
>详情</el-button>
<el-button
size="mini"
type="text"
@@ -126,25 +137,28 @@
<add-anchor-dialog v-if="addAnchorDialogVisible" ref="addAnchorDialog" @refreshDataList="getList" />
<update-anchor-dialog v-if="updateAnchorDialogVisible" ref="updateAnchorDialog" @refreshDataList="getList" />
<anchor-info-dialog v-if="anchorInfoDialogVisible" ref="anchorInfoDialog" />
</div>
</template>
<script>
import {delAnchor, listAnchor, updateAnchor} from '@/api/cai/anchor'
import { genderList, userStatusList } from '@/constant/statusMap'
import {genderList, 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";
export default {
name: "Anchor",
components:{
AddAnchorDialog,UpdateAnchorDialog
AddAnchorDialog,UpdateAnchorDialog,AnchorInfoDialog
},
data() {
return {
genderList,userStatusList,
genderList,userStatusList,videoStatusList,
addAnchorDialogVisible: false,
updateAnchorDialogVisible: false,
anchorInfoDialogVisible: false,
// 遮罩层
loading: true,
// 选中数组
@@ -210,6 +224,12 @@ export default {
this.$refs.updateAnchorDialog.init(row)
})
},
handleAnchorInfo(row){
this.anchorInfoDialogVisible = true
this.$nextTick(() => {
this.$refs.anchorInfoDialog.init(row.userId)
})
},
handleOpenVideoStatusChange(row){
let text = row.openVideoStatus === 0 ? '封禁' : '恢复'
this.$confirm('确认要' + text + '[' + row.nickname + ']开启视频吗?', '警告', {

View File

@@ -1,6 +1,33 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="蜜瓜号" prop="usercode">
<el-input
v-model="queryParams.usercode"
placeholder="请输入蜜瓜号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input
v-model="queryParams.mobile"
placeholder="请输入手机号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审核状态" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" placeholder="审核状态" clearable size="small">
<el-option
v-for="dict in auditStatusList"
: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>
@@ -12,67 +39,91 @@
</el-row>
<el-table v-loading="loading" :data="anchorApplyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="蜜瓜号" align="center" prop="usercode" />
<el-table-column label="昵称" align="center" prop="nickname" />
<el-table-column label="手机" align="center" prop="mobile" />
<el-table-column label="头像" align="center" prop="avatar" >
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="审核状态" align="center" prop="auditStatus">
<template v-slot="scope">
<cai-dict-tag :options="auditStatusList" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
<el-table-column label="蜜瓜号" align="center" prop="usercode"/>
<el-table-column label="昵称" align="center" prop="nickname"/>
<el-table-column label="手机" align="center" prop="mobile"/>
<el-table-column label="头像" align="center" prop="avatar">
<template v-slot="scope">
<image-avatar :src="scope.row.avatar"/>
</template>
</el-table-column>
<el-table-column label="性别" align="center" prop="gender">
<template v-slot="scope">
<cai-dict-tag :options="genderList" :value="scope.row.gender" />
<cai-dict-tag :options="genderList" :value="scope.row.gender"/>
</template>
</el-table-column>
<el-table-column label="审核状态" align="center" prop="status" >
<template v-slot="scope">
<cai-dict-tag :options="anchorApplyStatus" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="审核时间" align="center" prop="auditTime" width="180" />
<el-table-column label="审核备注" align="center" prop="auditRemark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="审核时间" align="center" prop="auditTime" width="180"/>
<!-- <el-table-column label="审核备注" align="center" prop="auditRemark"/>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220">
<template v-slot="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['cai:anchorApply:edit']"
>修改</el-button>
size="mini"
type="text"
icon="el-icon-info"
@click="handleAnchorInfo(scope.row)"
v-hasPermi="['cai:anchor:query']"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['cai:anchorApply:remove']"
>删除</el-button>
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAuditSuccess(scope.row)"
v-hasPermi="['cai:anchorApply:edit']"
>通过
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAuditFail(scope.row)"
v-hasPermi="['cai:anchorApply:edit']"
>不通过
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['cai:anchorApply:remove']"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<anchor-info-dialog v-if="anchorInfoDialogVisible" ref="anchorInfoDialog" />
</div>
</template>
<script>
import { addAnchorApply, listAnchorApply, updateAnchorApply } from '@/api/cai/anchorApply'
import { anchorApplyStatus, genderList } from '@/constant/statusMap'
import {auditAnchorFail, auditAnchorSuccess, delAnchorApply, listAnchorApply} from '@/api/cai/anchorApply'
import {auditStatusList, genderList} from '@/constant/statusMap'
import AnchorInfoDialog from "@/views/cai/anchor/anchor-info-dialog";
export default {
name: "AnchorApply",
components:{
AnchorInfoDialog
},
data() {
return {
anchorApplyStatus,genderList,
genderList, auditStatusList,
anchorInfoDialogVisible: false,
// 遮罩层
loading: true,
// 选中数组
@@ -91,12 +142,9 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
userId: undefined,
agreeProtocol: undefined,
status: undefined,
auditCount: undefined,
auditTime: undefined,
auditRemark: undefined
usercode: undefined,
mobile: undefined,
auditStatus: 1,
},
};
},
@@ -126,40 +174,59 @@ export default {
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
},
/** 修改按钮操作 */
handleUpdate(row) {
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateAnchorApply(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addAnchorApply(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
handleAuditSuccess(row) {
this.$modal.confirm('是否确认通过用户"' + row.nickname + '"主播审核?').then(() => {
this.loading = true;
return auditAnchorSuccess({
id: row.id,
});
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
}
},
handleAuditFail(row) {
this.$modal.confirm('是否不确认通过用户"' + row.nickname + '"主播审核?').then(() => {
this.loading = true;
return auditAnchorFail({
id: row.id,
});
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal.confirm('是否确认删除用户"' + row.nickname + '"的主播审核?').then(() => {
this.loading = true;
return delAnchorApply(row.id);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
handleAnchorInfo(row){
this.anchorInfoDialogVisible = true
this.$nextTick(() => {
this.$refs.anchorInfoDialog.init(row.userId)
})
},
}
};
</script>

View File

@@ -83,7 +83,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,3)"
@click="handleAudit(scope.row,2)"
v-hasPermi="['cai:dynamic:edit']"
>通过
</el-button>
@@ -92,7 +92,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,2)"
@click="handleAudit(scope.row,3)"
v-hasPermi="['cai:dynamic:edit']"
>不通过
</el-button>

View File

@@ -56,16 +56,16 @@
<el-descriptions-item label="工会">
<cai-dict-tag :options="isAnchorList" :value="info.user.isUnion" />
</el-descriptions-item>
<el-descriptions-item label="视频提成">
<el-descriptions-item label="好友视频提成">
{{info.userInfo.videoIncomeRate}}
</el-descriptions-item>
<el-descriptions-item label="守护提成">
<el-descriptions-item label="好友守护提成">
{{info.userInfo.guardIncomeRate}}
</el-descriptions-item>
<el-descriptions-item label="礼物提成">
<el-descriptions-item label="好友礼物提成">
{{info.userInfo.giftIncomeRate}}
</el-descriptions-item>
<el-descriptions-item label="充值提成">
<el-descriptions-item label="好友充值提成">
{{info.userInfo.payIncomeRate}}
</el-descriptions-item>
<el-descriptions-item label="最后登录IP">

View File

@@ -83,7 +83,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,3)"
@click="handleAudit(scope.row,2)"
v-hasPermi="['cai:userAlbum:edit']"
>通过
</el-button>
@@ -92,7 +92,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,2)"
@click="handleAudit(scope.row,3)"
v-hasPermi="['cai:userAlbum:edit']"
>不通过
</el-button>

View File

@@ -86,7 +86,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,3)"
@click="handleAudit(scope.row,2)"
v-hasPermi="['cai:userCameraAudit:edit']"
>通过
</el-button>
@@ -95,7 +95,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,2)"
@click="handleAudit(scope.row,3)"
v-hasPermi="['cai:userCameraAudit:edit']"
>不通过
</el-button>

View File

@@ -75,7 +75,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,3)"
@click="handleAudit(scope.row,2)"
v-hasPermi="['cai:userGreet:edit']"
>通过
</el-button>
@@ -84,7 +84,7 @@
type="text"
icon="el-icon-edit"
v-if="scope.row.auditStatus === 1"
@click="handleAudit(scope.row,2)"
@click="handleAudit(scope.row,3)"
v-hasPermi="['cai:userGreet:edit']"
>不通过
</el-button>