活动搜索条件

This commit is contained in:
helen 2024-12-20 15:52:06 +08:00
parent e639694427
commit 8481bc676e
3 changed files with 90 additions and 28 deletions

View File

@ -75,3 +75,16 @@ export const activityprocess = (query?: ActivityQuery): AxiosPromise<ActivityVO[
params: query params: query
}); });
}; };
/**
*
* @param query
* @returns {*}
*/
export const activityAnsweringlist = (query?: ActivityQuery): AxiosPromise<ActivityVO[]> => {
return request({
url: '/manage/activityAnswering/list',
method: 'get',
params: query
});
};

View File

@ -4,14 +4,14 @@
<div v-show="showSearch" id="search_div" class="mb-[10px]"> <div v-show="showSearch" id="search_div" class="mb-[10px]">
<el-card shadow="hover"> <el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="70px"> <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="70px">
<el-form-item label="行程路线" prop=""> <el-form-item label="活动名称" prop="">
<el-input class="inputWidth" placeholder="请输入行程路线" clearable @keyup.enter="handleQuery" /> <el-input class="inputWidth" placeholder="请输入行程路线" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="线路地点" prop=""> <el-form-item label="挑选玩友" prop="">
<el-input class="inputWidth" placeholder="请输入线路地点" clearable @keyup.enter="handleQuery" /> <el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择是否挑选玩友" clearable>
</el-form-item> <el-option label="是" :value="1" />
<el-form-item label="线路类型" prop=""> <el-option label="否" :value="0" />
<el-input class="inputWidth" placeholder="请输入线路类型" clearable @keyup.enter="handleQuery" /> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="发布状态" prop=""> <el-form-item label="发布状态" prop="">
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable> <el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable>
@ -40,15 +40,22 @@
<el-table-column label="活动名称" align="center" fixed prop="activityName" width="180px" /> <el-table-column label="活动名称" align="center" fixed prop="activityName" width="180px" />
<el-table-column label="活动描述" align="center" fixed prop="activityDescription" width="180px" show-overflow-tooltip /> <el-table-column label="活动描述" align="center" fixed prop="activityDescription" width="180px" show-overflow-tooltip />
<el-table-column label="活动图片" align="center" prop="" /> <el-table-column label="活动图片" align="center" prop="" />
<el-table-column label="排序" align="center" prop="sortNum" />
<el-table-column label="活动人数" align="center" prop="activityUserCount" /> <el-table-column label="活动人数" align="center" prop="activityUserCount" />
<el-table-column label="报名人数" align="center" prop="registrationCount" /> <el-table-column label="报名人数" align="center" prop="registrationCount" />
<el-table-column label="挑选玩友" align="center" prop="isSelected" /> <el-table-column label="挑选玩友" align="center" prop="isSelected">
<template #default="scope">
<div>{{ scope.row.isSelected == 1 ? '是' : '否' }}</div>
</template>
</el-table-column>
<el-table-column label="活动时间" align="center" prop="activityTime" width="180px" /> <el-table-column label="活动时间" align="center" prop="activityTime" width="180px" />
<el-table-column label="报名截止时间" align="center" prop="registrationDeadline" width="180px" /> <el-table-column label="报名截止时间" align="center" prop="registrationDeadline" width="180px" />
<el-table-column label="发布者地址" align="center" prop="publisherAddress" width="120px" /> <el-table-column label="发布者地址" align="center" prop="publisherAddress" width="120px" />
<el-table-column label="活动地点" align="center" prop="activityLocation" width="180px" /> <el-table-column label="活动地点" align="center" prop="activityLocation" width="180px" />
<el-table-column label="收费方式" align="center" prop="paymentMethod" /> <el-table-column label="收费方式" align="center" prop="paymentMethod" width="100px">
<template #default="scope">
<div>{{ scope.row.paymentMethod == 1 ? '发起人收款' : '免费' }}</div>
</template>
</el-table-column>
<el-table-column label="活动流程" align="center" prop="" width="100px"> <el-table-column label="活动流程" align="center" prop="" width="100px">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)">查看详情</el-button> <el-button link type="primary" @click="handleUpdate(scope.row)">查看详情</el-button>
@ -144,6 +151,7 @@
<el-radio :value="1">挑选</el-radio> <el-radio :value="1">挑选</el-radio>
<el-radio :value="0">不挑选</el-radio> <el-radio :value="0">不挑选</el-radio>
</el-radio-group> </el-radio-group>
<span style="margin-left: 30px; font-size: 12px; color: #707070">勾选后发起人需要逐个审核报名者确认是否通过报名</span>
</el-form-item> </el-form-item>
<el-form-item label="活动流程"> <el-form-item label="活动流程">
<el-button type="primary" @click="addlisttiam">添加流程</el-button> <el-button type="primary" @click="addlisttiam">添加流程</el-button>
@ -174,14 +182,30 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 问答弹窗--> <!-- 问答弹窗-->
<el-dialog v-model="wendadialog.visible" title="问答" width="50%" append-to-body> </el-dialog> <el-dialog v-model="wendadialog.visible" title="问答" width="40%" append-to-body>
<div v-for="item in Answeringlist" style="line-height: 30px; padding: 0 20px">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 600; font-size: 14px">Q:{{ item.declaration }}</div>
<div style="font-size: 12px">{{ item.quserName }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ item.createTime }}</div>
</div>
<div style="font-size: 12px">A:{{ item.answer }}</div>
</div>
<pagination
v-show="Answeringtotal > 0"
id="table_page"
v-model:page="queryAnswerings.pageNum"
v-model:limit="queryAnswerings.pageSize"
:total="Answeringtotal"
@pagination="wendalist"
/>
</el-dialog>
<!-- 报名人数弹窗--> <!-- 报名人数弹窗-->
<el-dialog v-model="numdialog.visible" title="报名人数" width="50%" append-to-body> </el-dialog> <el-dialog v-model="numdialog.visible" title="报名人数" width="50%" append-to-body> </el-dialog>
</div> </div>
</template> </template>
<script setup name="Activity" lang="ts"> <script setup name="Activity" lang="ts">
import { listActivity, getActivity, delActivity, addActivity, updateActivity, activityprocess } from '@/api/manage/activity'; import { listActivity, getActivity, delActivity, addActivity, updateActivity, activityprocess, activityAnsweringlist } from '@/api/manage/activity';
import { ActivityVO, ActivityQuery, ActivityForm } from '@/api/manage/activity/types'; import { ActivityVO, ActivityQuery, ActivityForm } from '@/api/manage/activity/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -194,8 +218,10 @@ const ids = ref<Array<string | number>>([]);
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 listdatatime = ref([{ activityTime: '', planContent: '' }]); const Answeringtotal = ref(0);
const listdatatime = ref([{ activityTime: '', planContent: '' }]);
const Answeringlist = ref([]);
const queryFormRef = ref<ElFormInstance>(); const queryFormRef = ref<ElFormInstance>();
const activityFormRef = ref<ElFormInstance>(); const activityFormRef = ref<ElFormInstance>();
@ -224,6 +250,11 @@ const initFormData: ActivityForm = {
paymentMethod: undefined, paymentMethod: undefined,
status: undefined status: undefined
}; };
const queryAnswerings = {
pageNum: 1,
pageSize: 10,
activityId: undefined
};
const data = reactive<PageData<ActivityForm, ActivityQuery>>({ const data = reactive<PageData<ActivityForm, ActivityQuery>>({
form: { ...initFormData }, form: { ...initFormData },
queryParams: { queryParams: {
@ -372,7 +403,12 @@ const dellistdata = (index) => {
listdatatime.value.splice(index, 1); listdatatime.value.splice(index, 1);
}; };
// //
const wendalist = (row) => { const wendalist = async (row) => {
queryAnswerings.activityId = row.id;
const res = await activityAnsweringlist(queryAnswerings);
console.log(res);
Answeringlist.value = res.rows;
Answeringtotal.value = res.total;
wendadialog.visible = true; wendadialog.visible = true;
}; };
onMounted(() => { onMounted(() => {

View File

@ -168,22 +168,28 @@
<el-input v-model="routeDetailsList.description" placeholder="请输入描述" style="width: 500px" autosize type="textarea" /> <el-input v-model="routeDetailsList.description" placeholder="请输入描述" style="width: 500px" autosize type="textarea" />
</el-form-item> </el-form-item>
<el-form-item label="添加地点"> <el-form-item label="添加地点">
<el-select v-model="routeDetailsList.articleId" placeholder="请选择标记地点" size="large" style="width: 500px"> <el-button type="primary">添加景点</el-button>
<el-option v-for="item in sys_user_contentOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="建议游玩时长">
<el-input v-model="routeDetailsList.routeHours" placeholder="请输入建议游玩时长" style="width: 500px" />
</el-form-item>
<el-form-item label="推荐语">
<el-input v-model="routeDetailsList.recommend" placeholder="请输入推荐语" style="width: 500px" />
</el-form-item>
<el-form-item label="地点描述">
<el-input v-model="routeDetailsList.addressDes" placeholder="请输入地点描述" style="width: 500px" autosize type="textarea" />
</el-form-item>
<el-form-item label="避坑指南">
<el-input v-model="routeDetailsList.guide" placeholder="请输入避坑指南" style="width: 500px" autosize type="textarea" />
</el-form-item> </el-form-item>
<div class="articlelist">
<el-form-item label="添加地点">
<el-select v-model="routeDetailsList.articleId" placeholder="请选择标记地点" size="large" style="width: 500px">
<el-option v-for="item in sys_user_contentOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="建议游玩时长">
<el-input v-model="routeDetailsList.routeHours" placeholder="请输入建议游玩时长" style="width: 500px" />
</el-form-item>
<el-form-item label="推荐语">
<el-input v-model="routeDetailsList.recommend" placeholder="请输入推荐语" style="width: 500px" />
</el-form-item>
<el-form-item label="地点描述">
<el-input v-model="routeDetailsList.addressDes" placeholder="请输入地点描述" style="width: 500px" autosize type="textarea" />
</el-form-item>
<el-form-item label="避坑指南">
<el-input v-model="routeDetailsList.guide" placeholder="请输入避坑指南" style="width: 500px" autosize type="textarea" />
</el-form-item>
</div>
<el-form-item label="添加住宿攻略"> <el-form-item label="添加住宿攻略">
<el-select v-model="hotelallvalue" placeholder="请选择住宿攻略" size="large" style="width: 500px" multiple> <el-select v-model="hotelallvalue" placeholder="请选择住宿攻略" size="large" style="width: 500px" multiple>
<el-option v-for="item in sys_user_hotelall" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in sys_user_hotelall" :key="item.id" :label="item.name" :value="item.id" />
@ -712,4 +718,11 @@ const addressdata = (ids: string | null) => {
} }
} }
} }
.articlelist {
width: 90%;
margin: 20px auto;
padding: 20px;
border-radius: 20px;
background-color:#f2f2f2 ;
}
</style> </style>