feate:添加拼单类型接口
Build and Deploy Vue3 / build (push) Successful in 1m6s
Build and Deploy Vue3 / deploy (push) Successful in 10m44s

This commit is contained in:
2025-12-31 13:07:05 +08:00
parent 4cc684eca6
commit f6dcec75d7
10 changed files with 755 additions and 672 deletions
+69 -26
View File
@@ -2,7 +2,7 @@
<div class="group-buy-container">
<el-card class="header-card">
<div class="header-actions">
<el-button type="primary" icon="Plus" @click="showCreateDialog = true">
<el-button type="primary" icon="Plus" @click="openCreateDialog">
创建随机队伍
</el-button>
<el-button type="success" icon="Download" @click="handleExport" :loading="exportLoading">
@@ -18,13 +18,13 @@
<el-table :data="groupList" v-loading="loading" stripe border>
<el-table-column prop="id" label="队伍ID" />
<el-table-column prop="name" label="队伍名称" min-width="150" />
<el-table-column label="队伍类型" width="120">
<!-- <el-table-column label="队伍类型" width="120">
<template #default="{ row }">
<el-tag :type="row.type === 0 ? 'primary' : 'success'">
{{ row.type === 0 ? '5人队' : '10人队' }}
</el-tag>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="currentMembers" label="当前人数" width="100" align="center" />
<el-table-column prop="maxMembers" label="需要人数" width="100" align="center" />
<el-table-column label="状态" width="120">
@@ -77,11 +77,15 @@
<el-form-item label="队伍名称" prop="name">
<el-input v-model="createForm.name" placeholder="请输入队伍名称" />
</el-form-item>
<el-form-item label="队伍类型" prop="groupBuyType">
<el-radio-group v-model="createForm.groupBuyType">
<el-radio :label="0">5人队</el-radio>
<el-radio :label="1">10人队</el-radio>
</el-radio-group>
<el-form-item label="标签" prop="tag">
<el-select v-model="createForm.tag" placeholder="请选择标签" style="width: 100%" @change="handleTagChange">
<el-option v-for="tag in tagList" :key="tag" :label="tag" :value="tag" />
</el-select>
</el-form-item>
<el-form-item label="拼团类型" prop="groupBuyTypeId">
<el-select v-model="createForm.groupBuyTypeId" placeholder="请先选择标签" :disabled="!createForm.tag" style="width: 100%">
<el-option v-for="item in typeList" :key="item.id" :label="`${item.name} (${item.maxPerson}人)`" :value="item.id" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
@@ -116,8 +120,8 @@
<el-tag v-if="row.teamLeader" type="warning" size="small">队长</el-tag>
</template>
</el-table-column>
<el-table-column prop="idcUid" label="IDC UID" width="120" />
<el-table-column prop="idcPhone" label="IDC手机号" width="130" />
<!-- <el-table-column prop="idcUid" label="IDC UID" width="120" />
<el-table-column prop="idcPhone" label="IDC手机号" width="130" /> -->
</el-table>
</el-dialog>
</div>
@@ -134,6 +138,7 @@ import {
exportIdcInfo,
setOrder
} from '@/api/admin/activity'
import { getGroupBuyTypeList,getGroupBuyTypeTags } from '@/api/groupBuy'
// 数据状态
const loading = ref(false)
@@ -150,18 +155,67 @@ const currentMembers = ref([])
const createFormRef = ref(null)
const createForm = reactive({
name: '',
groupBuyType: 0
tag: '',
groupBuyTypeId: ''
})
const typeList = ref([])
const tagList = ref([])
const createRules = {
name: [
{ required: true, message: '请输入队伍名称', trigger: 'blur' }
],
groupBuyType: [
{ required: true, message: '请选择队伍类型', trigger: 'change' }
tag: [
{ required: true, message: '请选择标签', trigger: 'change' }
],
groupBuyTypeId: [
{ required: true, message: '请选择拼团类型', trigger: 'change' }
]
}
// 获取标签列表
const fetchTags = async () => {
try {
const res = await getGroupBuyTypeTags()
if (res.code === 200) {
tagList.value = res.data || []
}
} catch (error) {
console.error('获取标签失败:', error)
}
}
// 根据 tag 获取拼团类型列表
const fetchTypeListByTag = async (tag) => {
try {
const res = await getGroupBuyTypeList({ page: 1, count: 100, tag })
if (res.code === 200) {
typeList.value = res.data?.data || []
}
} catch (error) {
console.error('获取拼团类型失败:', error)
}
}
// tag 变化时获取对应的拼团类型
const handleTagChange = (tag) => {
createForm.groupBuyTypeId = ''
typeList.value = []
if (tag) {
fetchTypeListByTag(tag)
}
}
// 打开创建对话框
const openCreateDialog = () => {
createForm.name = ''
createForm.tag = ''
createForm.groupBuyTypeId = ''
typeList.value = []
fetchTags()
showCreateDialog.value = true
}
// 获取队伍列表
const fetchGroupList = async () => {
loading.value = true
@@ -239,25 +293,14 @@ const handleCreate = async () => {
if (valid) {
createLoading.value = true
try {
const res = await addRandomGroup(createForm.name, createForm.groupBuyType)
const res = await addRandomGroup({ name: createForm.name, group_buy_type_id: String(createForm.groupBuyTypeId) })
console.log('创建队伍响应:', res)
if (res.data.code === 200) {
// API 返回的数据结构:
// {
// group_buy_id: "17670733070-5",
// name: "发士大夫",
// maxPerson: 5,
// createTime: "2025-12-30T13:41:47.216888773+08:00",
// users: [{...}]
// }
ElMessage.success(`创建成功!队伍ID: ${res.data.group_buy_id}`)
showCreateDialog.value = false
createForm.name = ''
createForm.groupBuyType = 0
// 刷新列表
createForm.groupBuyTypeId = ''
fetchGroupList()
} else {
ElMessage.error(res.message || '创建失败')