feat: 交易圈统计学院列表对接

This commit is contained in:
kaizheng(郑凯) 2025-02-23 13:59:14 +08:00
parent 21b0f99b8c
commit ddee1e906b
5 changed files with 185 additions and 24 deletions

View File

@ -146,7 +146,6 @@ export function setNotice(data) {
// 后台查询交易圈统计
export function getCircleStatistics(data) {
debugger;
return request({
url: "/admin/group/collect/query",
method: "post",
@ -156,10 +155,18 @@ export function getCircleStatistics(data) {
// 后台查询交易圈当日统计
export function getCurrentDayCircleData(data) {
debugger;
return request({
url: "/admin/group/collect/queryToday",
method: "post",
data
});
}
// 后台查询学院列表
export function getListCustomer(data) {
return request({
url: "/admin/group/college/listCustomer",
method: "post",
data
});
}

View File

@ -10,20 +10,41 @@
>
<el-form-item label="">
<el-input
v-model="formInline.user"
placeholder="请输入uid或者昵称"
v-model="formInline.userId"
placeholder="请输入id"
clearable
/>
</el-form-item>
<el-form-item label="">
<el-select v-model="formInline.region" placeholder="选择在期状态">
<el-option label="区域一" value="shanghai" />
<el-option label="区域二" value="beijing" />
<el-input
v-model="formInline.nickName"
placeholder="请输入昵称"
clearable
/>
</el-form-item>
<el-form-item label="">
<el-select
v-model="formInline.isOnline"
placeholder="选择在线状态"
clearable
>
<el-option label="在线" value="1" />
<el-option label="不在线" value="2" />
</el-select>
</el-form-item>
<el-form-item label="">
<el-select v-model="formInline.region" placeholder="选择禁言状态">
<el-option label="区域一" value="shanghai" />
<el-option label="区域二" value="beijing" />
<el-select
v-model="formInline.commentBlackStatus"
placeholder="选择禁言状态"
clearable
>
<el-option
v-for="(value, key) in commentBlackStatusOption"
:key="key"
:label="value"
:value="key"
/>
<!-- <el-option label="未禁言" value="2" /> -->
</el-select>
</el-form-item>
<el-form-item>
@ -34,38 +55,157 @@
<el-table-column prop="date" label="头像" width="180">
<template slot-scope="scope">
<img
src=""
:src="scope.row.headPicUrl"
style="max-width: 50x;max-height: 50px;"
alt=""
srcset=""
>
/>
</template>
</el-table-column>
<el-table-column prop="userId" label="uid" width="180" />
<el-table-column prop="joinTime" label="加入时间" />
<el-table-column prop="expireTime" label="到期时间" />
<el-table-column prop="" label="状态">
<template slot-scope="scope">
{{ customerStatusOption[scope.row.customerStatus] }}
</template>
</el-table-column>
<el-table-column prop="address" label="禁言状态">
<template slot-scope="scope">
{{ commentBlackStatusOption[scope.row.commentBlackStatus] }}
</template>
</el-table-column>
<el-table-column prop="name" label="uid" width="180" />
<el-table-column prop="address" label="加入时间" />
<el-table-column prop="address" label="到期时间" />
<el-table-column prop="address" label="状态" />
<el-table-column prop="address" label="禁言状态" />
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="scope">
<el-button type="text" size="small">私聊</el-button>
<el-button type="text" size="small">禁言</el-button>
<el-button type="text" size="small"> 私聊</el-button>
<el-button type="text" size="small">{{
scope.row.commentBlackStatus === 2 ? "禁言" : "取消禁言"
}}</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination-wrap">
<!-- 分页器 -->
<el-pagination
style="margin-top: 50px;"
:current-page="formInline.current"
:page-sizes="[10, 20, 30, 40]"
:page-size="formInline.size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="sizeChange"
@current-change="pageChange"
/>
</div>
<forbidSpeak
ref="forbidSpeakRef"
:product-type="41"
:product-id="groupId"
:scope="2"
@callback="forbidSpeakCallback"
/>
</div>
</template>
<script>
import { removeCommentBlack } from "@/api/videoLive";
import { getListCustomer } from "@/api/circle";
import forbidSpeak from "../../detail/components/forbidSpeak.vue";
export default {
components: { forbidSpeak },
data() {
return {
formInline: {},
tableData: [{}]
commentBlackStatusOption: {
1: "禁言中",
2: "未禁言"
},
customerStatusOption: {
1: "在期",
2: "已到期",
3: "即将到期",
4: "新学员"
},
groupId: this.$route.query.id,
formInline: {
userId: "",
nickName: "",
isOnline: "",
commentBlackStatus: "",
size: 10,
current: 1
},
tableData: [],
total: 0,
clickItem: {}
};
},
methods: {
onSubmit() {}
onSubmit() {
this.formInline.current = 1;
this.getListCustomer();
},
//
sizeChange(e) {
this.formInline.current = 1;
this.size = e;
this.getListCustomer();
},
pageChange(e) {
this.formInline.current = e;
this.getListCustomer();
},
async getListCustomer() {
const ret = await getListCustomer(this.formInline);
if (ret && ret.code === 0) {
this.tableData = ret.data.list;
this.total = ret.data.total;
}
},
prohibition(item) {
if (item.commentBlackStatus === 1) {
this.$confirm(`您确定取消禁言?`, {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
removeCommentBlack({
userPhone: item.userId,
productId: this.groupId,
productType: 41
}).then(res => {
if (res.code === 0) {
this.$message({
message: "取消禁言成功",
showClose: false,
type: "success"
});
this.msgUserIdsObj[item.userId].forEach(item => {
item.isForbidden = 2;
});
this.modifyStateCallback({
userId: item.userId,
isForbidden: 2,
modifyType: 2
});
}
});
})
.catch(() => {});
} else {
this.clickItem = item;
const forbidSpeakRef = this.$refs.forbidSpeakRef;
forbidSpeakRef.dialogFormVisible = true;
forbidSpeakRef.formProhibition.userName = item.nickName;
forbidSpeakRef.formProhibition.phone = item.userId;
forbidSpeakRef.formProhibition.content = "";
}
},
forbidSpeakCallback(userId) {
this.clickItem[userId].forEach(item => {
item.commentBlackStatus = 1;
});
}
}
};
</script>
@ -80,4 +220,8 @@ export default {
.table-area {
padding: 20px;
}
.pagination-wrap {
display: flex;
justify-content: flex-end;
}
</style>

View File

@ -25,12 +25,13 @@ import { addCommentBlack } from "@/api/videoLive";
export default {
props: {
productId: {
type: Number
type: Number | String
},
productType: {
type: Number
},
scope: {
// 1 2 3
type: Number
}
},

View File

@ -5,7 +5,7 @@
<el-button size="mini" type="primary" @click="closePrivateChat"
>返回群聊</el-button
>
<h5>{{ userInfo.userName }}</h5>
<h5>{{ userInfo.privateUserName }}{{ userInfo.privateUserId }}</h5>
</div>
<div>私聊中</div>
</div>
@ -63,6 +63,9 @@ export default {
align-items: center;
h5 {
margin: 0 0 0 10px;
font-size: 14px;
color: #999;
font-weight: normal;
}
}
p {

View File

@ -126,6 +126,7 @@
</div>
<newsList
v-for="(item, index) in msgTabs"
:key="index"
v-show="msgType === item.id"
:ref="`newsListRef${item.id}`"
:group-id="detail.id"
@ -278,6 +279,11 @@ export default {
...mapGetters(["user"])
},
async created() {
if (this.$route.query.chatType === "2") {
this.chatType = Number(this.$route.query.chatType);
this.privateUserInfo.privateUserId = this.$route.query.privateUserId;
this.privateUserInfo.privateUserName = this.$route.query.privateUserName;
}
await this.getCircleDetail();
this.getCircleList();
},