需求省市区

This commit is contained in:
cxc
2022-11-22 17:31:02 +08:00
parent 7dc27a03ea
commit 28808f6024
18 changed files with 452 additions and 95 deletions

View File

@ -60,37 +60,46 @@
>
<div class="_l">
<el-image
style="width: 358px; height: 200px; vertical-align: middle"
style="width: 358px; height: 220px; vertical-align: middle"
:src="item.image"
fit="fill"
></el-image>
</div>
<div class="_r">
<div class="_r" style="position: relative">
<p class="text_hidden">{{ item.title }}</p>
<div class="_time">活动时间:{{ item.beginTime }}</div>
<div class="_time">收费金额:{{ item.amount }}</div>
<div class="_info" style="visibility: hidden">
<!-- <span class="fl"
<div class="_time">联系人:{{ item.contact }}</div>
<div class="_time">联系方式:{{ item.contactMobile }}</div>
<!-- <div class="_info"> -->
<!-- <span class="fl"
><span class="x_blue">{{ item.user }}</span> 人报名</span
> -->
<el-button class="fr x_btns" v-if="item.status == 1" disabled
<!-- <el-button class="fr x_btns" v-if="item.enrollFlag" disabled
>已报名</el-button
>
<el-button
v-else-if="item.status == 2"
class="fr x16 x_blue x_border_blue"
style="border-radius: 0"
> -->
<!-- v-else-if="item.status == 2" -->
<!-- <el-button
class="x16 x_blue x_border_blue"
v-else
style="
border-radius: 0;
position: absolute;
right: 10px;
bottom: 0;
"
@click="handleClickSignUp(item.id, $event)"
>报名</el-button
>
<el-button
> -->
<!-- <el-button
v-else
class="fr x16"
style="border-radius: 0"
type="info"
disabled
>已结束</el-button
>
</div>
> -->
<!-- </div> -->
</div>
</div>
</div>
@ -129,9 +138,23 @@
{{ selectedActivity.finishTime }}
</p>
<p class="_place">活动地点:{{ selectedActivity.address }}</p>
<p class="_user" style="display: none">
<el-button class="x_btns" disabled>已报名</el-button>
<span class="_num"><span class="x_blue">16</span> 人报名</span>
<p class="_place">联系人:{{ selectedActivity.contact }}</p>
<p class="_place">联系方式:{{ selectedActivity.contactMobile }}</p>
<p class="_user">
<el-button
v-if="selectedActivity.enrollFlag"
class="x_btns"
disabled
>已报名</el-button
>
<el-button
v-else
class="fr x16 x_blue x_border_blue"
style="border-radius: 0"
@click="handleClickSignUp(selectedActivity.id, $event)"
>报名</el-button
>
<!-- <span class="_num"><span class="x_blue">16</span> 人报名</span> -->
</p>
</div>
</div>
@ -146,6 +169,60 @@
</div>
</div>
<webFooter></webFooter>
<el-dialog title="活动报名" v-model="showSignUp">
<el-form
:model="signUpForm"
:rules="signUpRules"
ref="signUpFormRef"
labelWidth="100px"
>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input
placeholder="请输入姓名"
v-model="signUpForm.name"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号" prop="phone">
<el-input
placeholder="请输入手机号"
v-model="signUpForm.phone"
maxlength="11"
oninput="value=value.replace(/[\D]+/,``)"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="年龄" prop="age">
<el-input-number
placeholder="请输入年龄"
v-model="signUpForm.age"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="signUpForm.gender">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-row justify="end">
<el-button @click="showSignUp = false">取消</el-button>
<el-button @click="submitSignUp" type="primary">报名</el-button>
</el-row>
</template>
</el-dialog>
</div>
</template>
<script setup name="Activity">
@ -155,8 +232,19 @@ import request from "@/utils/request";
import webFooter from "@/components/webFooter/index.vue";
import { reactive, toRefs } from "vue";
import WebContact from "@/components/webContact";
import { activitysList } from "@/api/admin/enterprise";
// import { activitysList } from "@/api/admin/enterprise";
import webBreadcrumb from "@/components/webBreadcrumb/index.vue";
import {
signUpActivity,
activitysList,
activityDetail,
} from "@/api/website/activity";
import { ElMessage } from "element-plus";
import { getToken } from "@/utils/auth";
// import { omit } from "lodash";
// import FieldOptions from "@/views/components/FieldOptions";
// import CityOptions from "@/views/components/CityOptions";
// import webReleaseActive from "@/components/webReleaseActive/index.vue";
const dialogVisible = ref(false);
@ -165,6 +253,9 @@ const total = ref(1);
const state = reactive({
banner: "",
});
// const data = reactive({
// activityForm: {},
// });
const queryParams = reactive({});
let dataList = ref([]);
@ -186,14 +277,17 @@ function getList() {
}
const data = reactive({
selectedActivity: {},
activityForm: {},
});
const { selectedActivity } = toRefs(data);
function handleDetail(item) {
async function handleDetail(item) {
breadcrumbTitle.id = item.id;
breadcrumbTitle.title = "活动报名";
breadcrumbTitle.twoTitle = "活动报名详情";
selectedActivity.value = dataList.value.find((el) => el.id == item.id);
// selectedActivity.value = dataList.value.find((el) => el.id == item.id);
const resp = await activityDetail(item.id);
selectedActivity.value = resp.data;
isShow.value = !isShow.value;
}
@ -223,6 +317,76 @@ onMounted(() => {
loading.value = false;
});
});
const showSignUp = ref(false);
const signUpForm = reactive({});
const signUpFormRef = ref();
const signUpRules = reactive({
name: [
{
required: true,
message: "请输入姓名!",
trigger: "blur",
},
],
age: [
{
required: true,
message: "请输入年龄!",
trigger: "blur",
},
],
gender: [
{
required: true,
message: "请选择性别!",
trigger: "change",
},
],
phone: [
{
required: true,
message: "请输入手机号!",
trigger: "blur",
},
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
trigger: "blur",
},
],
});
const reset = () => {
for (const key in signUpForm) {
if (Object.hasOwnProperty.call(signUpForm, key)) {
// const item = signUpForm[key];
delete signUpForm[key];
}
}
if (signUpFormRef.value) {
signUpFormRef.value.resetFields();
}
};
const handleClickSignUp = (id, e) => {
e.stopPropagation();
console.log(id, e);
if (!getToken()) {
return ElMessage.error("您当前未登录");
}
reset();
signUpForm.activityId = id;
showSignUp.value = true;
};
const submitSignUp = async () => {
await signUpFormRef.value.validate();
await signUpActivity(signUpForm);
ElMessage.success("报名成功");
const resp = await activityDetail(selectedActivity.value.id);
selectedActivity.value = resp.data;
showSignUp.value = false;
};
</script>
<style lang="scss" scoped>
.activity {
@ -242,6 +406,7 @@ onMounted(() => {
.el-button {
position: absolute;
top: 171px;
height: 60px;
right: 46px;
background-color: #ffc600;
color: #fff;
@ -276,6 +441,7 @@ onMounted(() => {
flex: 1;
padding: 36px 20px 0 16px;
background-color: #fff;
height: 220px;
p {
margin-top: 0;
font-size: 16px;