新增拼团活动设置

This commit is contained in:
gyq
2025-12-16 14:34:27 +08:00
parent de1fe16ccc
commit a7763ef903
5 changed files with 594 additions and 89 deletions

67
src/api/market/ware.js Normal file
View File

@@ -0,0 +1,67 @@
import request from "@/utils/request";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/ware";
/**
* 拼团商品-新增
* @param {*} data
* @returns
*/
export function addGbWare(data) {
return request({
url: `${baseURL}/addGbWare`,
method: "post",
data,
});
}
/**
* 拼团商品-修改
* @param {*} data
* @returns
*/
export function updateGbWareById(data) {
return request({
url: `${baseURL}/updateGbWareById`,
method: "post",
data,
});
}
/**
* 拼团商品-列表
* @param {*} data
* @returns
*/
export function getGbWarePage(params) {
return request({
url: `${baseURL}/getGbWarePage`,
method: "get",
params,
});
}
/**
* 拼团商品-修改状态
* @param {*} data
* @returns
*/
export function editOnlineStatus(data) {
return request({
url: `${baseURL}/editOnlineStatus`,
method: "post",
data,
});
}
/**
* 拼团商品-删除
* @param {*} data
* @returns
*/
export function deleteGbWare(id) {
return request({
url: `${baseURL}/deleteGbWare/${id}`,
method: "DELETE"
});
}

View File

@@ -1,69 +1,76 @@
<!-- 添加团购商品 -->
<template>
<div>
<el-dialog :title="form.id ? '编辑商品' : '添加商品'" width="800px" v-model="visible" @submit.prevent>
<el-form ref="formRef" :model="form" :rules="rules" label-position="right" label-width="120">
<el-form-item label="可用门店">
<el-radio-group v-model="form.useShopType">
<el-radio label="仅本店" value="only"></el-radio>
<el-radio label="全部门店" value="all"></el-radio>
<el-radio label="指定门店可用" value="custom"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.useShopType == 'custom'" prop="useShops">
<selectBranchs all v-model="form.useShops" />
</el-form-item>
<el-form-item label="商品名称" prop="wareName">
<div class="column">
<el-input v-model="form.wareName" placeholder="请输入商品名称" :maxlength="30" style="width: 300px;"></el-input>
<div>
<el-button link type="primary">导入已有商品信息</el-button>
<el-dialog :title="form.id ? '编辑商品' : '添加商品'" width="800px" v-model="visible" @submit.prevent @closed="resetHandle">
<div class="form_warap">
<el-form ref="formRef" :model="form" :rules="rules" label-position="right" label-width="120">
<el-form-item label="可用门店">
<el-radio-group v-model="form.useShopType" @change="useShopTypeChange">
<el-radio label="仅本店" value="only"></el-radio>
<el-radio label="全部门店" value="all"></el-radio>
<el-radio label="指定门店可用" value="custom"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.useShopType == 'custom'" prop="useShops">
<selectBranchs all v-model="form.useShops" />
</el-form-item>
<el-form-item label="商品名称" prop="wareName">
<div class="column">
<el-input v-model="form.wareName" placeholder="请输入商品名称" :maxlength="30" style="width: 300px;"></el-input>
<div>
<el-button link type="primary">导入已有商品信息</el-button>
</div>
</div>
</div>
</el-form-item>
<el-form-item label="商品描述">
<el-input type="textarea" :rows="5" placeholder="请输入商品描述" :maxlength="50" show-password
v-model="form.wareDetail" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="商品图片" prop="wareImgs">
<MultiImageUpload v-model="wareImgs" @uploadAllSuccess="wareImgsMultiOnSuccess" />
</el-form-item>
<el-form-item label="原价" prop="originalPrice">
<el-input v-model="form.originalPrice" placeholder="请输入商品原价" :maxlength="8"
@input="e => form.originalPrice = filterNumberInput(e)"></el-input>
</el-form-item>
<el-form-item label="拼团价" prop="groupPrice">
<el-input v-model="form.groupPrice" placeholder="请输入拼团价" :maxlength="8"
@input="e => form.groupPrice = filterNumberInput(e)"></el-input>
</el-form-item>
<el-form-item label="成团人数" prop="groupPeopleNum">
<el-input v-model="form.groupPeopleNum" placeholder="当参与人数达到成团人数才能完成拼团" :maxlength="8"
@input="e => form.groupPeopleNum = filterNumberInput(e, 1)"></el-input>
</el-form-item>
<el-form-item label="成团期限" prop="groupTimeoutHour">
<el-input v-model="form.groupTimeoutHour" placeholder="最小不低于1小时最大不超过72小时" :maxlength="8"
@input="e => form.groupTimeoutHour = filterNumberInput(e, 1)"></el-input>
</el-form-item>
<el-form-item label="限购数量" prop="limitBuyNum">
<div class="center">
<el-switch v-model="limitBuyNumSwitch" @change="limitBuyNumSwitchChange"></el-switch>
<div class="ipt" v-if="limitBuyNumSwitch">
<el-input :maxlength="8" v-model="form.limitBuyNum" placeholder="每人最多购买次数"
@input="e => form.limitBuyNum = filterNumberInput(e, 1)"></el-input>
</el-form-item>
<el-form-item label="商品描述">
<el-input type="textarea" :rows="5" placeholder="请输入商品描述" :maxlength="50" show-password
v-model="form.wareDetail" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="商品图片" prop="wareImgs">
<MultiImageUpload v-model="wareImgs" @uploadAllSuccess="wareImgsMultiOnSuccess" />
</el-form-item>
<el-form-item label="原价" prop="originalPrice">
<el-input v-model="form.originalPrice" placeholder="请输入商品原价" :maxlength="8"
@input="e => form.originalPrice = filterNumberInput(e)" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="拼团价" prop="groupPrice">
<el-input v-model="form.groupPrice" placeholder="请输入拼团价" :maxlength="8"
@input="e => form.groupPrice = filterNumberInput(e)" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="成团人数" prop="groupPeopleNum">
<el-input v-model="form.groupPeopleNum" placeholder="当参与人数达到成团人数才能完成拼团" :maxlength="8"
@input="e => form.groupPeopleNum = filterNumberInput(e, 1)" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="成团期限" prop="groupTimeoutHour">
<el-input v-model="form.groupTimeoutHour" placeholder="最小不低于1小时最大不超过72小时" :maxlength="8"
@input="e => form.groupTimeoutHour = filterNumberInput(e, 1)" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="限购数量" prop="limitBuyNum">
<div class="center">
<el-switch v-model="limitBuyNumSwitch" @change="limitBuyNumSwitchChange"></el-switch>
<div class="ipt" v-if="limitBuyNumSwitch">
<el-input :maxlength="8" v-model="form.limitBuyNum" placeholder="每人最多购买次数"
@input="e => form.limitBuyNum = filterNumberInput(e, 1)" style="width: 250px;"></el-input>
</div>
</div>
</div>
</el-form-item>
<el-form-item label="上架状态">
<el-switch v-model="form.onlineStatus" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="商品详情">
<MultiImageUpload v-model="wareCommentImgs" @upload-all-success="wareCommentImgsMultiOnSuccess" />
</el-form-item>
</el-form>
</el-form-item>
<el-form-item label="上架状态">
<el-switch v-model="form.onlineStatus" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="商品详情">
<MultiImageUpload v-model="wareCommentImgs" @upload-all-success="wareCommentImgsMultiOnSuccess" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" :loading="loading" @click="submitHandle"> </el-button>
<div class="dialog_footer">
<div class="btn">
<el-button size="large" @click="visible = false" style="width: 100%;"> </el-button>
</div>
<div class="btn">
<el-button size="large" type="primary" :loading="loading" @click="submitHandle" style="width: 100%;">
</el-button>
</div>
</div>
</template>
</el-dialog>
@@ -73,14 +80,16 @@
<script setup>
import { ref } from 'vue'
import { filterNumberInput } from '@/utils'
import { addGbWare, updateGbWareById } from '@/api/market/ware'
const visible = ref(true)
const visible = ref(false)
const limitBuyNumSwitch = ref(false) // 如果limitBuyNum = -10086 就是false不限购true为限购
const loading = ref(false)
const wareImgs = ref([])
const wareCommentImgs = ref([])
const formRef = ref(null)
const form = ref({
const formObj = {
id: '',
useShopType: 'only', // only-仅本店 all全部 /custom 指定
useShops: '', // 可用门店指定门店时存储门店ID逗号分隔
wareName: '', // 商品名称
@@ -93,7 +102,8 @@ const form = ref({
limitBuyNum: '', // 限购数量(每人最多购买次数) -10086
onlineStatus: 1, // 上架状态0下架 1上架
wareCommentImgs: '', // 商品详情图片(多个用逗号分隔)
})
}
const form = ref({ ...formObj })
const rules = ref({
useShops: [
@@ -203,26 +213,64 @@ function wareCommentImgsMultiOnSuccess(res) {
form.value.wareCommentImgs = wareCommentImgs.value.join(',')
}
function useShopTypeChange(e) {
form.value.useShops = ''
}
// 提交保存
const emits = defineEmits(['success'])
function submitHandle() {
console.log('form.value===', form.value);
return
formRef.value.vaildate(async vaild => {
formRef.value.validate(async vaild => {
try {
if (vaild) {
const data = { ...form.value }
if (form.value.useShopType == 'custom') {
data.useShops = form.value.useShops.join(',')
}
loading.value = true
if (form.value.id) {
await updateGbWareById(data)
} else {
await addGbWare(data)
}
ElNotification({
title: '注意',
message: '保存成功',
type: 'success'
})
emits('success')
visible.value = false
}
} catch (error) {
console.log(error);
}
setTimeout(() => {
loading.value = false
}, 500);
})
}
function show() {
function resetHandle() {
form.value = { ...formObj }
}
function show(obj) {
visible.value = true
if (obj && obj.id) {
console.log(obj);
form.value = { ...obj }
if (form.value.wareImgs != '') {
wareImgs.value = form.value.wareImgs.split(',')
}
if (form.value.wareCommentImgs != '') {
wareCommentImgs.value = form.value.wareCommentImgs.split(',')
}
if (form.value.limitBuyNum != -10086) {
limitBuyNumSwitch.value = true
} else {
limitBuyNumSwitch.value = false
}
}
}
defineExpose({
@@ -231,6 +279,11 @@ defineExpose({
</script>
<style scoped lang="scss">
.form_warap {
height: 60vh;
overflow-y: auto;
}
.column {
display: flex;
flex-direction: column;
@@ -241,4 +294,13 @@ defineExpose({
align-items: center;
gap: 10px;
}
.dialog_footer {
display: flex;
gap: 14px;
.btn {
flex: 1;
}
}
</style>

View File

@@ -0,0 +1,256 @@
<!-- 拼团订单 -->
<template>
<div>
<div class="row">
<el-form :model="queryForm" inline>
<el-form-item label="订单状态">
<el-select v-model="queryForm.status" style="width: 150px;">
<el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="下单时间">
<el-date-picker style="width: 300px" v-model="confirmOrderTimes" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
@change="confirmOrderTimesChange"></el-date-picker>
</el-form-item>
<el-form-item label="核销时间">
<el-date-picker style="width: 300px" v-model="checkoutOrderTimes" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
@change="checkoutOrderTimesChange"></el-date-picker>
</el-form-item>
<el-form-item>
<el-input :maxlength="11" v-model="queryForm.phone" placeholder="请输入手机号"
@input="e => queryForm.phone = filterNumberInput(e, 1)"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.orderNo" placeholder="请输入订单号"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.groupNo" placeholder="请输入关联团单号"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" :loading="tableData.loading" @click="searchHandle">搜索</el-button>
<el-button icon="Refresh" :loading="tableData.loading" @click="refreshHandle">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="row">
<div class="info_wrap">
<div class="item">
<div class="icon">
<img class="img" src="@/assets/fenxiao/3.png">
</div>
<div class="info">
<div>总订单数</div>
<div>{{ multiplyAndFormat(infoObj.successAmount || 0) }}</div>
</div>
</div>
<div class="item">
<div class="icon">
<img class="img" src="@/assets/fenxiao/4.png">
</div>
<div class="info">
<div>已支付金额</div>
<div>{{ multiplyAndFormat(infoObj.pendingAmount || 0) }}</div>
</div>
</div>
<div class="item">
<div class="icon">
<img class="img" src="@/assets/fenxiao/5.png">
</div>
<div class="info">
<div>已退款金额</div>
<div>{{ multiplyAndFormat(infoObj.balanceAmount || 0) }}</div>
</div>
</div>
</div>
</div>
<div class="row mt14">
<el-table :data="tableData.list" stripe border v-loading="tableData.loading">
<el-table-column label="订单号" prop="orderNo"></el-table-column>
<el-table-column label="商品" prop="orderNo"></el-table-column>
<el-table-column label="购买用户" prop="orderNo"></el-table-column>
<el-table-column label="支付金额(元)" prop="orderNo"></el-table-column>
<el-table-column label="支付时间" prop="orderNo"></el-table-column>
<el-table-column label="下单门店" prop="orderNo"></el-table-column>
<el-table-column label="状态" prop="orderNo"></el-table-column>
<el-table-column label="团单号" prop="orderNo"></el-table-column>
<el-table-column label="成团时间" prop="orderNo"></el-table-column>
<el-table-column label="核销码" prop="orderNo"></el-table-column>
<el-table-column label="核销时间" prop="orderNo"></el-table-column>
<el-table-column label="操作" width="150">
<template v-slot="scope">
<el-button link type="primary">核销</el-button>
<el-button link type="danger">退款</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="row mt14">
<el-pagination v-model:current-page="tableData.page" v-model:page-size="tableData.size"
:page-sizes="[10, 20, 50, 100, 500]" background layout="total, sizes, prev, pager, next, jumper"
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</div>
</template>
<script setup>
import dayjs from 'dayjs'
import { ref, reactive } from 'vue'
import { filterNumberInput, multiplyAndFormat } from '@/utils'
const statusList = ref([
{
label: '待成团',
value: 1,
type: 'info'
},
{
label: '待核销',
value: 2,
type: 'primary'
},
{
label: '已核销',
value: 3,
type: 'success'
},
{
label: '退款中',
value: 4,
type: 'warning'
},
{
label: '已退款',
value: 5,
type: 'info'
}
])
const confirmOrderTimes = ref([])
const checkoutOrderTimes = ref([])
const queryForm = reactive({
status: '',
orderStartTime: '',
orderEndTime: '',
checkoutStartTime: '',
checkoutEndTime: '',
phone: '',
orderNo: '',
groupNo: ''
})
// 搜索
function searchHandle() {
tableData.page = 1
getTableData()
}
// 重置搜索
function refreshHandle() {
confirmOrderTimes.value = []
checkoutOrderTimes.value = []
queryForm.status = ''
queryForm.orderStartTime = ''
queryForm.orderEndTime = ''
queryForm.checkoutStartTime = ''
queryForm.checkoutEndTime = ''
queryForm.phone = ''
queryForm.orderNo = ''
queryForm.groupNo = ''
searchHandle()
}
// 下单时间范围
function confirmOrderTimesChange(value) {
if (value && value.length === 2) {
queryForm.orderStartTime = dayjs(value[0]).format('YYYY-MM-DD 00:00:00');
queryForm.orderEndTime = dayjs(value[1]).format('YYYY-MM-DD 23:59:59');
} else {
queryForm.orderStartTime = '';
queryForm.orderEndTime = '';
}
}
// 核销时间范围
function checkoutOrderTimesChange(value) {
if (value && value.length === 2) {
queryForm.checkoutStartTime = dayjs(value[0]).format('YYYY-MM-DD 00:00:00');
queryForm.checkoutEndTime = dayjs(value[1]).format('YYYY-MM-DD 23:59:59');
} else {
queryForm.checkoutStartTime = '';
queryForm.checkoutEndTime = '';
}
}
const infoObj = reactive({})
const tableData = reactive({
page: 1,
size: 10,
total: 0,
list: [],
loading: false
})
// 分页大小发生变化
function handleSizeChange(e) {
tableData.size = e;
getTableData();
}
// 分页发生变化
function handleCurrentChange(e) {
tableData.page = e;
getTableData();
}
async function getTableData() {
try {
} catch (error) {
console.log(error);
}
}
onMounted(() => {
getTableData()
})
</script>
<style scoped lang="scss">
.row {
&.mt14 {
margin-top: 14px;
}
}
.info_wrap {
display: flex;
gap: 48px;
.item {
display: flex;
align-items: center;
border: 1px solid #D9D9D9;
border-radius: 8px;
padding: 0 10px;
.icon {
width: 44px;
height: 44px;
.img {
width: 100%;
height: 100%;
}
}
.info {
flex: 1;
padding: 10px;
}
}
}
</style>

View File

@@ -7,7 +7,7 @@
<el-button type="primary" icon="Plus" @click="addGroupGoodsRef.show()">添加</el-button>
</el-form-item>
<el-form-item label="上架状态">
<el-select v-model="queryForm.status" style="width: 100px;">
<el-select v-model="queryForm.onlineStatus" style="width: 100px;">
<el-option :label="item.label" :value="item.value" v-for="item in statusList" :key="item.value"></el-option>
</el-select>
</el-form-item>
@@ -17,7 +17,7 @@
@change="selectTimeChange"></el-date-picker>
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="queryForm.name" placeholder="请输入商品名称"></el-input>
<el-input v-model="queryForm.wareName" placeholder="请输入商品名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" :loading="tableData.loading" @click="searchHandle">搜索</el-button>
@@ -27,29 +27,60 @@
</div>
<div class="row mt14">
<el-table :data="tableData.list" stripe border v-loading="tableData.loading">
<el-table-column label="商品图片"></el-table-column>
<el-table-column label="商品名称"></el-table-column>
<el-table-column label="原价(元)"></el-table-column>
<el-table-column label="拼团价(元)"></el-table-column>
<el-table-column label="成团期限(小时)"></el-table-column>
<el-table-column label="成团人数"></el-table-column>
<el-table-column label="上架状态"></el-table-column>
<el-table-column label="创建时间"></el-table-column>
<el-table-column label="操作">
<el-table-column label="商品图片">
<template v-slot="scope">
<el-button link type="primary">编辑</el-button>
<el-button link type="danger">删除</el-button>
<div class="wareImgs">
<el-image :src="scope.row.wareImgs.split(',')[0]" style="width: 100%;height: 100%;" fit="cover"
:preview-src-list="scope.row.wareImgs.split(',')" :initial-index="0" preview-teleported></el-image>
<div class="num" v-if="scope.row.wareImgs.split(',').length > 1">
+{{ scope.row.wareImgs.split(',').length }}
</div>
</div>
</template>
</el-table-column>
<el-table-column label="商品名称" prop="wareName"></el-table-column>
<el-table-column label="原价(元)" prop="originalPrice"></el-table-column>
<el-table-column label="拼团价(元)" prop="groupPrice"></el-table-column>
<el-table-column label="成团期限(小时)" prop="groupTimeoutHour"></el-table-column>
<el-table-column label="成团人数" prop="groupPeopleNum"></el-table-column>
<el-table-column label="上架状态" prop="onlineStatus">
<template v-slot="scope">
<el-switch v-model="scope.row.onlineStatus" :active-value="1" :inactive-value="0"
@change="editOnlineStatusAjax($event, scope.row)"></el-switch>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime"></el-table-column>
<el-table-column label="操作" width="150">
<template v-slot="scope">
<template v-if="scope.row.onlineStatus">
<el-button link type="primary" disabled>下架后编辑/删除</el-button>
</template>
<template v-else>
<el-button link type="primary" @click="addGroupGoodsRef.show(scope.row)">编辑</el-button>
<el-popconfirm title="确认要删除吗?" @confirm="delHandle(scope.row)">
<template #reference>
<el-button type="danger" link>删除</el-button>
</template>
</el-popconfirm>
</template>
</template>
</el-table-column>
</el-table>
</div>
<addGroupGoods ref="addGroupGoodsRef" />
<div class="row mt14">
<el-pagination v-model:current-page="tableData.page" v-model:page-size="tableData.size"
:page-sizes="[10, 20, 50, 100, 500]" background layout="total, sizes, prev, pager, next, jumper"
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
<addGroupGoods ref="addGroupGoodsRef" @success="searchHandle" />
</div>
</template>
<script setup>
import dayjs from 'dayjs';
import { ref, reactive } from 'vue'
import addGroupGoods from './addGroupGoods.vue';
import { getGbWarePage, editOnlineStatus, deleteGbWare } from '@/api/market/ware'
const addGroupGoodsRef = ref(null)
@@ -79,23 +110,26 @@ const selectTimeChange = (value) => {
};
const queryForm = reactive({
status: '',
onlineStatus: '',
startTime: '',
endTime: '',
name: ''
wareName: ''
})
// 搜索
function searchHandle() {
tableData.page = 1
getGbWarePageAjax()
}
// 重置搜索
function refreshHandle() {
queryForm.status = ''
times.value = []
queryForm.onlineStatus = ''
queryForm.startTime = ''
queryForm.endTime = ''
queryForm.name = ''
queryForm.wareName = ''
searchHandle()
}
const tableData = reactive({
@@ -105,6 +139,61 @@ const tableData = reactive({
list: [],
loading: false
})
// 分页大小发生变化
function handleSizeChange(e) {
tableData.size = e;
getGbWarePageAjax();
}
// 分页发生变化
function handleCurrentChange(e) {
tableData.page = e;
getGbWarePageAjax();
}
// 拼团商品-列表
async function getGbWarePageAjax() {
try {
tableData.loading = true
const res = await getGbWarePage({
page: tableData.page,
size: tableData.size,
...queryForm
})
tableData.list = res.records
tableData.total = res.totalRow
} catch (error) {
console.log(error);
}
setTimeout(() => {
tableData.loading = false
}, 500);
}
// 修改状态
async function editOnlineStatusAjax(e, row) {
try {
await editOnlineStatus(row)
getGbWarePageAjax()
} catch (error) {
console.log(error);
}
}
// 删除
async function delHandle(row) {
try {
await deleteGbWare(row.id)
getGbWarePageAjax()
} catch (error) {
console.log(error);
}
}
onMounted(() => {
getGbWarePageAjax()
})
</script>
<style scoped lang="scss">
@@ -113,4 +202,35 @@ const tableData = reactive({
margin-top: 14px;
}
}
.wareImgs {
position: relative;
--size: 80px;
width: var(--size);
height: var(--size);
border: 1px solid #ececec;
border-radius: 4px;
overflow: hidden;
&:hover {
cursor: pointer;
}
.num {
padding: 0 4px;
height: 16px;
font-size: 10px;
position: absolute;
top: 0;
right: 0;
z-index: 10;
border-radius: 0 0 0 4px;
background-color: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(10px);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
}
</style>

View File

@@ -7,7 +7,8 @@
<tabHeader v-model="tabActiveIndex" :list="tabList" />
</div>
<div class="row mt14">
<groupPage ref="groupPageRef" name="groupPage" key="groupPage" />
<groupPage name="groupPage" key="groupPage" v-if="tabActiveIndex == 0" />
<groupOrder name="groupOrder" key="groupOrder" v-if="tabActiveIndex == 1" />
</div>
</div>
</div>
@@ -16,8 +17,7 @@
<script setup>
import { ref } from 'vue'
import groupPage from './components/groupPage.vue'
const groupPageRef = ref(null)
import groupOrder from './components/groupOrder.vue'
const tabActiveIndex = ref(0)
const tabList = ref([