Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-03-07 18:21:05 +07:00
parent 1af948aa35
commit a8fab3e765
4 changed files with 1317 additions and 1094 deletions

View File

@@ -42,3 +42,10 @@ export function delImLiveActivity(id) {
method: 'delete' method: 'delete'
}) })
} }
export function endImLiveActivity(id) {
return request({
url: '/service/imLiveActivity/end/' + id,
method: 'post'
})
}

View File

@@ -107,7 +107,7 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="用户ID" align="center" prop="userId" /> --> <el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="用户昵称" align="center" prop="nickName" /> <el-table-column label="用户昵称" align="center" prop="nickName" />
<el-table-column <el-table-column
label="上级邀请码" label="上级邀请码"

View File

@@ -1,6 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-form <el-form
:model="queryParams" :model="queryParams"
ref="queryRef" ref="queryRef"
@@ -73,13 +75,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
@@ -134,7 +140,9 @@
</el-row> </el-row>
</div> </div>
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="imLiveActivityList" :data="imLiveActivityList"
@@ -148,12 +156,12 @@
<template #default="{ row }"> <template #default="{ row }">
{{ {{
row.activityType == 1 row.activityType == 1
? '签到' ? "签到"
: row.activityType == 2 : row.activityType == 2
? '抽奖' ? "抽奖"
: row.activityType == 3 : row.activityType == 3
? '答题' ? "答题"
: '红包' : "红包"
}} }}
</template> </template>
</el-table-column> </el-table-column>
@@ -164,23 +172,37 @@
<template #default="{ row }"> <template #default="{ row }">
{{ {{
row.status == 1 row.status == 1
? '进行中' ? "进行中"
: row.status == 2 : row.status == 2
? '已结束' ? "已结束"
: row.status == 3 : row.status == 3
? '已取消' ? "已取消"
: '未开始' : "未开始"
}} }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动开始时间" align="center" prop="startTime" width="180"> <el-table-column
label="活动开始时间"
align="center"
prop="startTime"
width="180"
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{
parseTime(scope.row.startTime, "{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动结束时间" align="center" prop="endTime" width="180"> <el-table-column
label="活动结束时间"
align="center"
prop="endTime"
width="180"
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{
parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="活动持续时长" align="center" prop="duration" /> --> <!-- <el-table-column label="活动持续时长" align="center" prop="duration" /> -->
@@ -188,30 +210,45 @@
<el-table-column label="创建人类型" align="center" prop="creatorType"> <el-table-column label="创建人类型" align="center" prop="creatorType">
<template #default="{ row }"> <template #default="{ row }">
{{ {{
row.creatorType == 1 ? '主播' : row.creatorType == 2 ? '管理员' : '系统' row.creatorType == 1
? "主播"
: row.creatorType == 2
? "管理员"
: "系统"
}} }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="是否可重复参与" align="center" prop="isRepeat"> <el-table-column label="是否可重复参与" align="center" prop="isRepeat">
<template #default="scope"> <template #default="scope">
<dict-tag :options="sys_general_yes_no" :value="scope.row.isRepeat" /> <dict-tag
:options="sys_general_yes_no"
:value="scope.row.isRepeat"
/>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="重复间隔" align="center" prop="repeatInterval" /> --> <!-- <el-table-column label="重复间隔" align="center" prop="repeatInterval" /> -->
<el-table-column label="最大参与人数" align="center" prop="maxParticipants" /> <el-table-column
<el-table-column label="当前参与人数" align="center" prop="participantCount" /> label="最大参与人数"
align="center"
prop="maxParticipants"
/>
<el-table-column
label="当前参与人数"
align="center"
prop="participantCount"
/>
<el-table-column label="奖励类型" align="center" prop="rewardType"> <el-table-column label="奖励类型" align="center" prop="rewardType">
<template #default="{ row }"> <template #default="{ row }">
{{ {{
row.rewardType == 1 row.rewardType == 1
? '积分' ? "积分"
: row.rewardType == 2 : row.rewardType == 2
? '虚拟币' ? "虚拟币"
: row.rewardType == 3 : row.rewardType == 3
? '实物' ? "实物"
: row.rewardType == 4 : row.rewardType == 4
? '勋章' ? "勋章"
: '特权' : "特权"
}} }}
</template> </template>
</el-table-column> </el-table-column>
@@ -235,6 +272,16 @@
> >
查看 查看
</el-button> </el-button>
<el-button
link
type="warning"
icon="Edit"
v-if="scope.row.status === 1"
@click="handleEndActivity(scope.row)"
v-hasPermi="['service:imLiveActivity:edit']"
>
结束活动
</el-button>
<el-button <el-button
link link
type="primary" type="primary"
@@ -276,13 +323,25 @@
label-position="top" label-position="top"
> >
<el-form-item label="活动ID" prop="activityId"> <el-form-item label="活动ID" prop="activityId">
<el-input v-model="form.activityId" disabled placeholder="请输入活动ID" /> <el-input
v-model="form.activityId"
disabled
placeholder="请输入活动ID"
/>
</el-form-item> </el-form-item>
<el-form-item label="直播间ID" prop="roomId"> <el-form-item label="直播间ID" prop="roomId">
<el-input v-model="form.roomId" disabled placeholder="请输入直播间ID" /> <el-input
v-model="form.roomId"
disabled
placeholder="请输入直播间ID"
/>
</el-form-item> </el-form-item>
<el-form-item label="活动标题" prop="title"> <el-form-item label="活动标题" prop="title">
<el-input v-model="form.title" disabled placeholder="请输入活动标题" /> <el-input
v-model="form.title"
disabled
placeholder="请输入活动标题"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="活动描述" prop="description"> <!-- <el-form-item label="活动描述" prop="description">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.description" type="textarea" placeholder="请输入内容" />
@@ -314,10 +373,18 @@
<el-input v-model="form.duration" placeholder="请输入活动持续时长" /> <el-input v-model="form.duration" placeholder="请输入活动持续时长" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="创建人用户id" prop="userId"> <el-form-item label="创建人用户id" prop="userId">
<el-input v-model="form.userId" disabled placeholder="请输入创建人账号" /> <el-input
v-model="form.userId"
disabled
placeholder="请输入创建人账号"
/>
</el-form-item> </el-form-item>
<el-form-item label="创建人类型" prop="creatorType"> <el-form-item label="创建人类型" prop="creatorType">
<el-select v-model="form.creatorType" disabled placeholder="创建人类型"> <el-select
v-model="form.creatorType"
disabled
placeholder="创建人类型"
>
<el-option label="主播" :value="1"></el-option> <el-option label="主播" :value="1"></el-option>
<el-option label="管理员" :value="2"></el-option> <el-option label="管理员" :value="2"></el-option>
<el-option label="系统" :value="3"></el-option> <el-option label="系统" :value="3"></el-option>
@@ -350,7 +417,11 @@
<el-input v-model="form.participantCount" placeholder="请输入当前参与人数" /> <el-input v-model="form.participantCount" placeholder="请输入当前参与人数" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="奖励积分" prop="rewardValue"> <el-form-item label="奖励积分" prop="rewardValue">
<el-input v-model="form.rewardValue" disabled placeholder="请输入内容" /> <el-input
v-model="form.rewardValue"
disabled
placeholder="请输入内容"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="奖励类型" prop="rewardType"> <!-- <el-form-item label="奖励类型" prop="rewardType">
<el-select v-model="form.rewardType" placeholder="创建人类型"> <el-select v-model="form.rewardType" placeholder="创建人类型">
@@ -384,11 +455,12 @@ import {
delImLiveActivity, delImLiveActivity,
addImLiveActivity, addImLiveActivity,
updateImLiveActivity, updateImLiveActivity,
} from '@/api/service/imLiveActivity'; endImLiveActivity,
import ImLiveActivityRecordModal from '@/components/ImLive/ImLiveActivityRecordModal.vue'; } from "@/api/service/imLiveActivity";
import ImLiveActivityRecordModal from "@/components/ImLive/ImLiveActivityRecordModal.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_general_yes_no } = proxy.useDict('sys_general_yes_no'); const { sys_general_yes_no } = proxy.useDict("sys_general_yes_no");
const imLiveActivityList = ref([]); const imLiveActivityList = ref([]);
const open = ref(false); const open = ref(false);
@@ -398,7 +470,7 @@ const ids = ref([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
const title = ref(''); const title = ref("");
const recordModalRef = ref(); const recordModalRef = ref();
const currentActivityId = ref(null); // 当前活动ID可以从接口获取 const currentActivityId = ref(null); // 当前活动ID可以从接口获取
@@ -429,31 +501,40 @@ const data = reactive({
version: null, version: null,
}, },
rules: { rules: {
roomId: [{ required: true, message: '直播间ID不能为空', trigger: 'blur' }], roomId: [{ required: true, message: "直播间ID不能为空", trigger: "blur" }],
activityType: [ activityType: [
{ {
required: true, required: true,
message: '活动类型1-签到 2-抽奖 3-答题 4-红包 5-任务 6-投票 7-连麦PK不能为空', message:
trigger: 'change', "活动类型1-签到 2-抽奖 3-答题 4-红包 5-任务 6-投票 7-连麦PK不能为空",
trigger: "change",
}, },
], ],
title: [{ required: true, message: '活动标题不能为空', trigger: 'blur' }], title: [{ required: true, message: "活动标题不能为空", trigger: "blur" }],
status: [ status: [
{ {
required: true, required: true,
message: '状态0-未开始 1-进行中 2-已结束 3-已取消不能为空', message: "状态0-未开始 1-进行中 2-已结束 3-已取消不能为空",
trigger: 'change', trigger: "change",
}, },
], ],
startTime: [{ required: true, message: '活动开始时间不能为空', trigger: 'blur' }], startTime: [
endTime: [{ required: true, message: '活动结束时间不能为空', trigger: 'blur' }], { required: true, message: "活动开始时间不能为空", trigger: "blur" },
userId: [{ required: true, message: '创建人账号不能为空', trigger: 'blur' }], ],
rewardValue: [{ required: true, message: '奖励积分不能为空', trigger: 'blur' }], endTime: [
{ required: true, message: "活动结束时间不能为空", trigger: "blur" },
],
userId: [
{ required: true, message: "创建人账号不能为空", trigger: "blur" },
],
rewardValue: [
{ required: true, message: "奖励积分不能为空", trigger: "blur" },
],
creatorType: [ creatorType: [
{ {
required: true, required: true,
message: '创建人类型1-主播 2-管理员 3-系统不能为空', message: "创建人类型1-主播 2-管理员 3-系统不能为空",
trigger: 'change', trigger: "change",
}, },
], ],
}, },
@@ -464,7 +545,7 @@ const { queryParams, form, rules } = toRefs(data);
/** 查询直播间活动列表 */ /** 查询直播间活动列表 */
function getList() { function getList() {
loading.value = true; loading.value = true;
listImLiveActivity(queryParams.value).then(response => { listImLiveActivity(queryParams.value).then((response) => {
imLiveActivityList.value = response.rows; imLiveActivityList.value = response.rows;
total.value = response.total; total.value = response.total;
loading.value = false; loading.value = false;
@@ -504,7 +585,7 @@ function reset() {
createTime: null, createTime: null,
updateTime: null, updateTime: null,
}; };
proxy.resetForm('imLiveActivityRef'); proxy.resetForm("imLiveActivityRef");
} }
// 显示记录弹窗 // 显示记录弹窗
@@ -524,13 +605,13 @@ function handleQuery() {
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
proxy.resetForm('queryRef'); proxy.resetForm("queryRef");
handleQuery(); handleQuery();
} }
// 多选框选中数据 // 多选框选中数据
function handleSelectionChange(selection) { function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id); ids.value = selection.map((item) => item.id);
single.value = selection.length != 1; single.value = selection.length != 1;
multiple.value = !selection.length; multiple.value = !selection.length;
} }
@@ -539,34 +620,50 @@ function handleSelectionChange(selection) {
function handleAdd() { function handleAdd() {
reset(); reset();
open.value = true; open.value = true;
title.value = '添加直播间活动'; title.value = "添加直播间活动";
} }
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
reset(); reset();
const _id = row.id || ids.value; const _id = row.id || ids.value;
getImLiveActivity(_id).then(response => { getImLiveActivity(_id).then((response) => {
form.value = response.data; form.value = response.data;
open.value = true; open.value = true;
title.value = '修改直播间活动'; title.value = "修改直播间活动";
}); });
} }
function handleEndActivity(row) {
console.log(row);
const _id = row.activityId || ids.value;
proxy.$modal
.confirm('是否确认结束直播间活动编号为"' + _id + '"的数据项?')
.then(function () {
return endImLiveActivity(_id);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("活动已结束");
})
.catch(() => {});
}
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
proxy.$refs['imLiveActivityRef'].validate(valid => { proxy.$refs["imLiveActivityRef"].validate((valid) => {
if (valid) { if (valid) {
form.isRepeat = 0; form.isRepeat = 0;
if (form.value.id != null) { if (form.value.id != null) {
updateImLiveActivity(form.value).then(response => { updateImLiveActivity(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功'); proxy.$modal.msgSuccess("修改成功");
open.value = false; open.value = false;
getList(); getList();
}); });
} else { } else {
addImLiveActivity(form.value).then(response => { addImLiveActivity(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功'); proxy.$modal.msgSuccess("新增成功");
open.value = false; open.value = false;
getList(); getList();
}); });
@@ -585,7 +682,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess('删除成功'); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .catch(() => {});
} }
@@ -593,11 +690,11 @@ function handleDelete(row) {
/** 导出按钮操作 */ /** 导出按钮操作 */
function handleExport() { function handleExport() {
proxy.download( proxy.download(
'service/imLiveActivity/export', "service/imLiveActivity/export",
{ {
...queryParams.value, ...queryParams.value,
}, },
`imLiveActivity_${new Date().getTime()}.xlsx` `imLiveActivity_${new Date().getTime()}.xlsx`,
); );
} }

View File

@@ -1,6 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-form <el-form
:model="queryParams" :model="queryParams"
ref="queryRef" ref="queryRef"
@@ -67,13 +69,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@@ -128,7 +134,9 @@
</el-row> </el-row>
</div> </div>
<div class="background-color-fff padding-20 border-radius-8px margin-bottom-20"> <div
class="background-color-fff padding-20 border-radius-8px margin-bottom-20"
>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="imLiveRoomList" :data="imLiveRoomList"
@@ -177,18 +185,22 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建者用户ID" align="center" prop="userId" /> <el-table-column label="创建者用户ID" align="center" prop="userId" />
<el-table-column label="直播间创建者账号" align="center" prop="ownerAccount" /> <el-table-column
label="直播间创建者账号"
align="center"
prop="ownerAccount"
/>
<el-table-column label="主播账号" align="center" prop="anchorAccount" /> <el-table-column label="主播账号" align="center" prop="anchorAccount" />
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template #default="{ row }"> <template #default="{ row }">
{{ {{
row.status == 0 row.status == 0
? '准备中' ? "准备中"
: row.status == 1 : row.status == 1
? '直播中' ? "直播中"
: row.status == 2 : row.status == 2
? '已结束' ? "已结束"
: '已封禁' : "已封禁"
}} }}
</template> </template>
</el-table-column> </el-table-column>
@@ -198,18 +210,40 @@
prop="liveType" prop="liveType"
/> --> /> -->
<!-- <el-table-column label="最大观众数" align="center" prop="maxViewers" /> --> <!-- <el-table-column label="最大观众数" align="center" prop="maxViewers" /> -->
<el-table-column label="当前观众数" align="center" prop="currentViewers" /> <el-table-column
<el-table-column label="虚拟观众数" align="center" prop="virtualViewers" /> label="当前观众数"
align="center"
prop="currentViewers"
/>
<el-table-column
label="虚拟观众数"
align="center"
prop="virtualViewers"
/>
<el-table-column label="点赞数" align="center" prop="likeCount" /> <el-table-column label="点赞数" align="center" prop="likeCount" />
<el-table-column label="礼物数" align="center" prop="giftCount" /> <el-table-column label="礼物数" align="center" prop="giftCount" />
<el-table-column label="开始时间" align="center" prop="startTime" width="180"> <el-table-column
label="开始时间"
align="center"
prop="startTime"
width="180"
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{
parseTime(scope.row.startTime, "{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结束时间" align="center" prop="endTime" width="180"> <el-table-column
label="结束时间"
align="center"
prop="endTime"
width="180"
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{
parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}:{s}")
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="直播时长(秒)" align="center" prop="duration" /> --> <!-- <el-table-column label="直播时长(秒)" align="center" prop="duration" /> -->
@@ -315,10 +349,18 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="直播间封面URL" prop="coverUrl"> <el-form-item label="直播间封面URL" prop="coverUrl">
<el-input v-model="form.coverUrl" type="textarea" placeholder="请输入内容" /> <el-input
v-model="form.coverUrl"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item> </el-form-item>
<el-form-item label="OBS推流地址" prop="liveUrl"> <el-form-item label="OBS推流地址" prop="liveUrl">
<el-input v-model="form.liveUrl" type="textarea" placeholder="请输入内容" /> <el-input
v-model="form.liveUrl"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="播放地址" prop="playUrl"> <!-- <el-form-item label="播放地址" prop="playUrl">
<el-input v-model="form.playUrl" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.playUrl" type="textarea" placeholder="请输入内容" />
@@ -330,7 +372,10 @@
<el-input v-model="form.userId" placeholder="请输入创建者用户ID" /> <el-input v-model="form.userId" placeholder="请输入创建者用户ID" />
</el-form-item> </el-form-item>
<el-form-item label="直播间创建者账号" prop="ownerAccount"> <el-form-item label="直播间创建者账号" prop="ownerAccount">
<el-input v-model="form.ownerAccount" placeholder="请输入直播间创建者账号" /> <el-input
v-model="form.ownerAccount"
placeholder="请输入直播间创建者账号"
/>
</el-form-item> </el-form-item>
<el-form-item label="主播账号" prop="anchorAccount"> <el-form-item label="主播账号" prop="anchorAccount">
<el-input v-model="form.anchorAccount" placeholder="请输入主播账号" /> <el-input v-model="form.anchorAccount" placeholder="请输入主播账号" />
@@ -339,7 +384,10 @@
<el-input v-model="form.maxViewers" placeholder="请输入最大观众数" /> <el-input v-model="form.maxViewers" placeholder="请输入最大观众数" />
</el-form-item> </el-form-item>
<el-form-item label="当前观众数" prop="currentViewers"> <el-form-item label="当前观众数" prop="currentViewers">
<el-input v-model="form.currentViewers" placeholder="请输入当前观众数" /> <el-input
v-model="form.currentViewers"
placeholder="请输入当前观众数"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="虚拟观众数" prop="virtualViewers"> <!-- <el-form-item label="虚拟观众数" prop="virtualViewers">
<el-input v-model="form.virtualViewers" placeholder="请输入虚拟观众数" /> <el-input v-model="form.virtualViewers" placeholder="请输入虚拟观众数" />
@@ -402,7 +450,12 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 添加或修改虚拟观众配置对话框 --> <!-- 添加或修改虚拟观众配置对话框 -->
<el-dialog title="虚拟观众配置" v-model="openVirtual" width="500px" append-to-body> <el-dialog
title="虚拟观众配置"
v-model="openVirtual"
width="500px"
append-to-body
>
<el-form <el-form
ref="imLiveVirtualConfigRef" ref="imLiveVirtualConfigRef"
:model="formVirtual" :model="formVirtual"
@@ -411,13 +464,23 @@
label-position="top" label-position="top"
> >
<el-form-item label="直播间ID" prop="roomId"> <el-form-item label="直播间ID" prop="roomId">
<el-input v-model="formVirtual.roomId" disabled placeholder="请输入直播间ID" /> <el-input
v-model="formVirtual.roomId"
disabled
placeholder="请输入直播间ID"
/>
</el-form-item> </el-form-item>
<el-form-item label="虚拟观众数量" prop="virtualCount"> <el-form-item label="虚拟观众数量" prop="virtualCount">
<el-input v-model="formVirtual.virtualCount" placeholder="请输入虚拟观众数量" /> <el-input
v-model="formVirtual.virtualCount"
placeholder="请输入虚拟观众数量"
/>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isActive"> <el-form-item label="是否启用" prop="isActive">
<el-select v-model="formVirtual.isActive" placeholder="请选择是否启用"> <el-select
v-model="formVirtual.isActive"
placeholder="请选择是否启用"
>
<el-option <el-option
v-for="dict in sys_general_yes_no" v-for="dict in sys_general_yes_no"
:key="dict.value" :key="dict.value"
@@ -445,17 +508,17 @@ import {
addImLiveRoom, addImLiveRoom,
updateImLiveRoom, updateImLiveRoom,
removeImLiveRoom, removeImLiveRoom,
} from '@/api/service/imLiveRoom'; } from "@/api/service/imLiveRoom";
import { import {
listImLiveVirtualConfig, listImLiveVirtualConfig,
getImLiveVirtualConfig, getImLiveVirtualConfig,
delImLiveVirtualConfig, delImLiveVirtualConfig,
addImLiveVirtualConfig, addImLiveVirtualConfig,
updateImLiveVirtualConfig, updateImLiveVirtualConfig,
} from '@/api/service/imLiveVirtualConfig'; } from "@/api/service/imLiveVirtualConfig";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_general_yes_no } = proxy.useDict('sys_general_yes_no'); const { sys_general_yes_no } = proxy.useDict("sys_general_yes_no");
const imLiveRoomList = ref([]); const imLiveRoomList = ref([]);
const open = ref(false); const open = ref(false);
@@ -466,7 +529,7 @@ const ids = ref([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
const title = ref(''); const title = ref("");
const data = reactive({ const data = reactive({
form: {}, form: {},
@@ -502,53 +565,109 @@ const data = reactive({
version: null, version: null,
}, },
rules: { rules: {
roomId: [{ required: true, message: '直播间ID不能为空', trigger: 'blur' }], roomId: [{ required: true, message: "直播间ID不能为空", trigger: "blur" }],
groupId: [{ required: true, message: '关联群组ID不能为空', trigger: 'blur' }], groupId: [
roomName: [{ required: true, message: '直播间名称不能为空', trigger: 'blur' }], { required: true, message: "关联群组ID不能为空", trigger: "blur" },
userId: [{ required: true, message: '创建者用户ID不能为空', trigger: 'blur' }], ],
ownerAccount: [{ required: true, message: '直播间创建者账号不能为空', trigger: 'blur' }], roomName: [
anchorAccount: [{ required: true, message: '主播账号不能为空', trigger: 'blur' }], { required: true, message: "直播间名称不能为空", trigger: "blur" },
],
userId: [
{ required: true, message: "创建者用户ID不能为空", trigger: "blur" },
],
ownerAccount: [
{ required: true, message: "直播间创建者账号不能为空", trigger: "blur" },
],
anchorAccount: [
{ required: true, message: "主播账号不能为空", trigger: "blur" },
],
status: [ status: [
{ {
required: true, required: true,
message: '状态0-准备中 1-直播中 2-已结束 3-已封禁不能为空', message: "状态0-准备中 1-直播中 2-已结束 3-已封禁不能为空",
trigger: 'change', trigger: "change",
}, },
], ],
liveType: [ liveType: [
{ {
required: true, required: true,
message: '直播类型1-普通直播 2-语音直播 3-屏幕分享不能为空', message: "直播类型1-普通直播 2-语音直播 3-屏幕分享不能为空",
trigger: 'change', trigger: "change",
}, },
], ],
maxViewers: [{ required: true, message: '最大观众数不能为空', trigger: 'blur' }], maxViewers: [
currentViewers: [{ required: true, message: '当前观众数不能为空', trigger: 'blur' }], { required: true, message: "最大观众数不能为空", trigger: "blur" },
virtualViewers: [{ required: true, message: '虚拟观众数不能为空', trigger: 'blur' }], ],
likeCount: [{ required: true, message: '点赞数不能为空', trigger: 'blur' }], currentViewers: [
giftCount: [{ required: true, message: '礼物数不能为空', trigger: 'blur' }], { required: true, message: "当前观众数不能为空", trigger: "blur" },
duration: [{ required: true, message: '直播时长(秒)不能为空', trigger: 'blur' }], ],
isRecorded: [{ required: true, message: '是否录制0-否 1-是不能为空', trigger: 'blur' }], virtualViewers: [
isPrivate: [ { required: true, message: "虚拟观众数不能为空", trigger: "blur" },
{ required: true, message: '是否私密0-公开 1-私密不能为空', trigger: 'blur' }, ],
likeCount: [{ required: true, message: "点赞数不能为空", trigger: "blur" }],
giftCount: [{ required: true, message: "礼物数不能为空", trigger: "blur" }],
duration: [
{ required: true, message: "直播时长(秒)不能为空", trigger: "blur" },
],
isRecorded: [
{
required: true,
message: "是否录制0-否 1-是不能为空",
trigger: "blur",
},
],
isPrivate: [
{
required: true,
message: "是否私密0-公开 1-私密不能为空",
trigger: "blur",
},
],
version: [{ required: true, message: "版本号不能为空", trigger: "blur" }],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" },
],
updateTime: [
{ required: true, message: "更新时间不能为空", trigger: "blur" },
], ],
version: [{ required: true, message: '版本号不能为空', trigger: 'blur' }],
createTime: [{ required: true, message: '创建时间不能为空', trigger: 'blur' }],
updateTime: [{ required: true, message: '更新时间不能为空', trigger: 'blur' }],
}, },
formVirtual: {}, formVirtual: {},
Virtualrules: { Virtualrules: {
roomId: [{ required: true, message: '直播间ID不能为空', trigger: 'blur' }], roomId: [{ required: true, message: "直播间ID不能为空", trigger: "blur" }],
virtualCount: [{ required: true, message: '虚拟观众数量不能为空', trigger: 'blur' }], virtualCount: [
enterInterval: [{ required: true, message: '进入间隔(秒)不能为空', trigger: 'blur' }], { required: true, message: "虚拟观众数量不能为空", trigger: "blur" },
leaveInterval: [{ required: true, message: '离开间隔(秒)不能为空', trigger: 'blur' }], ],
minWatchTime: [{ required: true, message: '最小观看时间(秒)不能为空', trigger: 'blur' }], enterInterval: [
maxWatchTime: [{ required: true, message: '最大观看时间(秒)不能为空', trigger: 'blur' }], { required: true, message: "进入间隔(秒)不能为空", trigger: "blur" },
likeProbability: [{ required: true, message: '点赞概率不能为空', trigger: 'blur' }], ],
giftProbability: [{ required: true, message: '送礼概率不能为空', trigger: 'blur' }], leaveInterval: [
isActive: [{ required: true, message: '是否启用0-否 1-是不能为空', trigger: 'blur' }], { required: true, message: "离开间隔(秒)不能为空", trigger: "blur" },
createTime: [{ required: true, message: '创建时间不能为空', trigger: 'blur' }], ],
updateTime: [{ required: true, message: '更新时间不能为空', trigger: 'blur' }], minWatchTime: [
{ required: true, message: "最小观看时间(秒)不能为空", trigger: "blur" },
],
maxWatchTime: [
{ required: true, message: "最大观看时间(秒)不能为空", trigger: "blur" },
],
likeProbability: [
{ required: true, message: "点赞概率不能为空", trigger: "blur" },
],
giftProbability: [
{ required: true, message: "送礼概率不能为空", trigger: "blur" },
],
isActive: [
{
required: true,
message: "是否启用0-否 1-是不能为空",
trigger: "blur",
},
],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" },
],
updateTime: [
{ required: true, message: "更新时间不能为空", trigger: "blur" },
],
}, },
}); });
@@ -557,7 +676,7 @@ const { queryParams, form, rules, formVirtual, Virtualrules } = toRefs(data);
/** 查询直播间列表 */ /** 查询直播间列表 */
function getList() { function getList() {
loading.value = true; loading.value = true;
listImLiveRoom(queryParams.value).then(response => { listImLiveRoom(queryParams.value).then((response) => {
imLiveRoomList.value = response.rows; imLiveRoomList.value = response.rows;
total.value = response.total; total.value = response.total;
loading.value = false; loading.value = false;
@@ -565,7 +684,7 @@ function getList() {
} }
function copySuccess() { function copySuccess() {
proxy.$modal.msgSuccess('复制成功'); proxy.$modal.msgSuccess("复制成功");
} }
// 取消按钮 // 取消按钮
@@ -605,21 +724,21 @@ function resetVirtual() {
createTime: null, createTime: null,
updateTime: null, updateTime: null,
}; };
proxy.resetForm('imLiveVirtualConfigRef'); proxy.resetForm("imLiveVirtualConfigRef");
} }
/** 提交按钮 */ /** 提交按钮 */
function submitFormVirtual() { function submitFormVirtual() {
proxy.$refs['imLiveVirtualConfigRef'].validate(valid => { proxy.$refs["imLiveVirtualConfigRef"].validate((valid) => {
if (valid) { if (valid) {
if (formVirtual.value.id != null) { if (formVirtual.value.id != null) {
updateImLiveVirtualConfig(formVirtual.value).then(response => { updateImLiveVirtualConfig(formVirtual.value).then((response) => {
proxy.$modal.msgSuccess('修改成功'); proxy.$modal.msgSuccess("修改成功");
openVirtual.value = false; openVirtual.value = false;
}); });
} else { } else {
addImLiveVirtualConfig(formVirtual.value).then(response => { addImLiveVirtualConfig(formVirtual.value).then((response) => {
proxy.$modal.msgSuccess('新增成功'); proxy.$modal.msgSuccess("新增成功");
openVirtual.value = false; openVirtual.value = false;
}); });
} }
@@ -661,7 +780,7 @@ function reset() {
createTime: null, createTime: null,
updateTime: null, updateTime: null,
}; };
proxy.resetForm('imLiveRoomRef'); proxy.resetForm("imLiveRoomRef");
} }
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@@ -672,13 +791,13 @@ function handleQuery() {
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
proxy.resetForm('queryRef'); proxy.resetForm("queryRef");
handleQuery(); handleQuery();
} }
// 多选框选中数据 // 多选框选中数据
function handleSelectionChange(selection) { function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id); ids.value = selection.map((item) => item.id);
single.value = selection.length != 1; single.value = selection.length != 1;
multiple.value = !selection.length; multiple.value = !selection.length;
} }
@@ -687,25 +806,25 @@ function handleSelectionChange(selection) {
function handleAdd() { function handleAdd() {
reset(); reset();
open.value = true; open.value = true;
title.value = '添加直播间'; title.value = "添加直播间";
} }
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
reset(); reset();
const _id = row.id || ids.value; const _id = row.id || ids.value;
getImLiveRoom(_id).then(response => { getImLiveRoom(_id).then((response) => {
form.value = response.data; form.value = response.data;
open.value = true; open.value = true;
title.value = '修改直播间'; title.value = "修改直播间";
}); });
} }
function handleUpdateShow(row, num) { function handleUpdateShow(row, num) {
// console.log(row); // console.log(row);
row.isPrivate = num; row.isPrivate = num;
updateImLiveRoom(row).then(response => { updateImLiveRoom(row).then((response) => {
proxy.$modal.msgSuccess('修改成功'); proxy.$modal.msgSuccess("修改成功");
open.value = false; open.value = false;
getList(); getList();
}); });
@@ -713,17 +832,17 @@ function handleUpdateShow(row, num) {
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
proxy.$refs['imLiveRoomRef'].validate(valid => { proxy.$refs["imLiveRoomRef"].validate((valid) => {
if (valid) { if (valid) {
if (form.value.id != null) { if (form.value.id != null) {
updateImLiveRoom(form.value).then(response => { updateImLiveRoom(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功'); proxy.$modal.msgSuccess("修改成功");
open.value = false; open.value = false;
getList(); getList();
}); });
} else { } else {
addImLiveRoom(form.value).then(response => { addImLiveRoom(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功'); proxy.$modal.msgSuccess("新增成功");
open.value = false; open.value = false;
getList(); getList();
}); });
@@ -742,7 +861,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess('删除成功'); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .catch(() => {});
} }
@@ -750,11 +869,11 @@ function handleDelete(row) {
/** 导出按钮操作 */ /** 导出按钮操作 */
function handleExport() { function handleExport() {
proxy.download( proxy.download(
'service/imLiveRoom/export', "service/imLiveRoom/export",
{ {
...queryParams.value, ...queryParams.value,
}, },
`imLiveRoom_${new Date().getTime()}.xlsx` `imLiveRoom_${new Date().getTime()}.xlsx`,
); );
} }