Commit 543b7af7 authored by spc's avatar spc

fixed

parent 742d7083
No preview for this file type
......@@ -16,8 +16,8 @@ const {
// request.js
// 通常可以吧 baseUrl 单独放在一个 js 文件了
// export const baseUrl = "http://172.16.230.108:7777/pmall";
export const baseUrl = "https://momclub-uat.feihe.com/pmall";//测试环境
// export const baseUrl = "https://momclub-test.feihe.com/pmall";
// export const baseUrl = "https://momclub-uat.feihe.com/pmall";//测试环境
export const baseUrl = "https://momclub-test.feihe.com/pmall";
// export const baseUrl = "https://momclub.feihe.com/pmall";//生产环境
// export const baseUrl = "https://docs.dui88.com/mock/1956/api";//mock
// export const baseUrl = "https://feihe.m.duibatest.com.cn/pmall"
......
......@@ -31,13 +31,16 @@
</view>
<!-- 底部渐变蒙层 -->
<view v-if="activityList.length >= 3" class="scroll-fade-mask">
<image class="mask-image" :src="`${$baseUrl}homepage/Q3Res/actSelectMask.png`" mode="aspectFit">
<image class="mask-image"
:src="`https://course.feihe.com/momclub-picture/homepage/Q3Res/actSelectMask.png`"
mode="aspectFit">
</image>
</view>
<!-- 底部统一按钮 -->
<view class="bottom-btn-wrapper">
<view class="activity-btn" @tap="handleBottomButtonClick">
<image class="activity-btn-image" :src="`${$baseUrl}homepage/Q3Res/actSelectLookBtn.png`"
<image class="activity-btn-image"
:src="`https://course.feihe.com/momclub-picture/homepage/Q3Res/actSelectLookBtn.png`"
mode="aspectFit"></image>
</view>
</view>
......@@ -46,17 +49,17 @@
<!-- 关闭按钮 -->
<view class="close-btn" @tap="handleClose">
<image class="close-icon" :src="`${$baseUrl}homepage/Q3Res/commonCloseBtn.png`" mode="aspectFit"></image>
<image class="close-icon"
:src="`https://course.feihe.com/momclub-picture/homepage/Q3Res/commonCloseBtn.png`" mode="aspectFit">
</image>
</view>
</view>
</template>
<script setup>
import { computed, ref, getCurrentInstance } from 'vue'
import { computed, ref } from 'vue'
import { fetchUserClickActivity } from '../api/home'
const { proxy } = getCurrentInstance()
const $baseUrl = proxy.$baseUrl
const props = defineProps({
visible: {
......@@ -95,7 +98,7 @@ const handleViewActivity = async (activity, index) => {
}
// 底部按钮点击
const handleBottomButtonClick = () => {
const handleBottomButtonClick = async () => {
// 调用接口,传所有 activityIds
const activityIds = props.activityList
.filter(activity => activity.id)
......
......@@ -6,8 +6,8 @@ import md from "./md";
const SENSORS_URL = "https://sensors.feihe.com/sa?project=XMH_Content";
// const BASE_URL = 'https://duiba.oss-cn-hangzhou.aliyuncs.com/fh/';
// const BASE_URL = 'https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/';
const BASE_URL = "https://course.feihe.com/momclub-picture/";
const BASE_URL = 'https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/';
// const BASE_URL = "https://course.feihe.com/momclub-picture/";
md.init(SENSORS_URL);
......
......@@ -382,13 +382,6 @@
"navigationBarBackgroundColor": "#ffffff"
}
},
{
"path": "momclub/signUpList",
"style": {
"navigationBarTitleText": "报名记录",
"navigationBarBackgroundColor": "#ffffff"
}
},
{
"path": "momclub/error",
"style": {
......
......@@ -173,12 +173,6 @@ const detailClick = (item) => {
url: `/subPackages/momclub/index?activityId=${item.activityId}`
})
}
//查看已报名活动
const recordClick = () => {
uni.navigateTo({
url: `/subPackages/momclub/signUpList`
})
}
const getInfo = async (type) => {
try {
const api = type ? signupListApi : activityListApi
......
......@@ -154,7 +154,7 @@
</view>
</view>
</view>
<view :class="(item.subFormList && item.subFormList.length > 0) ? 'line-dash' : ''"></view>
<view :class="((!isView && item.subFormList && item.subFormList.length > 0) || (isView && hasFilledOutList(item?.subFormList))) ? 'line-dash' : ''"></view>
<view v-if="item.subFormList && item.subFormList.length > 0" class="sub-box">
<view v-if="!isView"
:class="item.subFormList.length === 1 ? 'sub-warp-one' : item.subFormList.length === 2 ? 'sub-warp-two' : 'sub-warp-three'">
......@@ -165,9 +165,11 @@
</view>
</view>
</view>
<view class="white-bg"></view>
<view v-if="item.subFormList && item.subFormList.length > 0" v-for="(subItm, subIndex) in item.subFormList"
:key="subIndex">
<view v-if="(!isView && subItm.isShow) || (isView && subItm.hasFilledOut) ">
<view v-if="(!isView && subItm.isShow) || (isView && subItm.hasFilledOut)" class='line-dash'></view>
<form-tree v-bind="{ item: subItm, index, visible, areaVisible, formData, isView }"
@addSubForm="() => emit('addSubForm', subIndex)"
@delSubForm="() => emit('delSubForm', subIndex)"
......@@ -182,7 +184,6 @@
@onImageDel="({ fieldIndex, idx }) => emit('onImageDel', { subIndex, fieldIndex, idx })"
@openAddressPicker="({ fieldIndex }) => emit('openAddressPicker', { subIndex, fieldIndex })"
@openDatePicker="({ fieldIndex }) => emit('openDatePicker', { subIndex, fieldIndex })" />
<view v-if="subIndex < item.subFormList.map(i=>i.isShow).length - 1" class='line-dash'></view>
</view>
</view>
</view>
......@@ -220,6 +221,9 @@ const props = defineProps({
})
const { visible, areaVisible, item, index, formData, isView } = toRefs(props)
const emit = defineEmits(['textInput', 'mobileInput', 'updateMobile', 'cardInput', 'onUpload', 'onPreviewImage', 'onImageDel', 'openAddressPicker', 'openDatePicker', 'addSubForm', 'delSubForm', 'onRadioChange', 'onCheckChange'])
const hasFilledOutList = (list)=>{
return list && list.some(itm=>itm.hasFilledOut)
}
</script>
<style lang="less" scoped>
......@@ -517,6 +521,13 @@ const emit = defineEmits(['textInput', 'mobileInput', 'updateMobile', 'cardInput
.gray {
opacity: 0.2;
}
.white-bg{
position: relative;
width: 100%;
height: 2rpx;
background-color: #fff;
top: 41rpx;
}
}
}
</style>
\ No newline at end of file
......@@ -172,6 +172,8 @@ import NoticeDialog from './component/noticeDialog.vue'
import ResultDialog from './component/resultDialog.vue'
import RegisterDialog from './component/registerDialog.vue'
import md from "../../md.js";
import { useUserStore } from "@/stores/user";
const userStore = useUserStore();
//存储活动信息等
const activityInfo = ref({
......@@ -373,7 +375,7 @@ const init = () => {
errorTip()
}
}
onLoad((options) => {
onLoad(async(options) => {
md.sensorSignTake({
bmhdPage: "true",
page_name: activityInfo.value?.activityTitle || '',
......@@ -387,6 +389,16 @@ onLoad((options) => {
menus: ['shareAppMessage'] // 微信小程序支持分享到朋友圈
});
query.value = options
if(options.share == 'true'){
await userStore.loadUserInfo()
if (userStore.userInfo?.memberId !== "not_login") {
//非会员 未登录,跳转到登录注册页面
uni.navigateTo({
url: `/pages/activity/register`
})
return
}
}
init()
})
......@@ -402,7 +414,7 @@ onShow(()=> {
onShareAppMessage(() => {
return {
title: activityInfo.value.shareTitle || '星妈会活动',
path: `/subPackages/momclub/index?activityId=${query.value.activityId}`, // 分享页面路径
path: `/subPackages/momclub/index?activityId=${query.value.activityId}&share=true`, // 分享页面路径
imageUrl: activityInfo.value.sharePic, // 分享图片
success: (res) => {
console.log('分享成功', res);
......
......@@ -40,7 +40,7 @@
<image v-else :src="$baseUrl + 'sign-up/circle.png'" mode="aspectFit" />
<view class="read-text">
本人知晓并同意<text @click="openNoticeDialog"
class="agree-text">《星妈会活动协议》</text>以及“报名须知”的全部条款内容,并保证报名信息填写的真实性
class="agree-text">《星妈会活动协议》</text>以及“活动须知”的全部条款内容,并保证报名信息填写的真实性
</view>
</view>
<button v-if="!query.isView" form-type="submit" class="form-btn">
......
<template>
<view class="activity-list-warp">
<!-- <view class="warp-bg"></view> -->
<view class="search">
<view class="search-text">
您共报名了{{ activityList.length }}场活动
</view>
<view @click="searchClick" class="search-btn">
{{ status === '' ? '查看已入选' : '查看所有' }}
</view>
</view>
<view class="activity-list-box">
<view v-for="(item, index) in activityList" :key="index" @click="detailClick(item)"
class="activity-list-card">
<view class="item-pic">
<image :src="item.pic" />
</view>
<view class="item-content">
<view class="content-left">
<view v-if="(formatActivityTime(item.activityStartTime, item.activityEndTime).split(',')[0])" class="left-one">
<view class="time-top">
{{ formatActivityTime(item.activityStartTime, item.activityEndTime).split(',')[0] }}
</view>
<view class="time-bot">
{{ formatActivityTime(item.activityStartTime, item.activityEndTime).split(',')[1] }}
</view>
</view>
<view v-else class="left-two">
{{ formatActivityTime(item.activityStartTime, item.activityEndTime).split(',')[1] }}<br />
{{ formatActivityTime(item.activityStartTime, item.activityEndTime).split(',')[2] }}
</view>
</view>
<view class="content-main">
<view class="title">
{{ item.activityTitle }}
</view>
<view class="area">
<image :src="$baseUrl + 'sign-up/mark.png'" />
<view class="text">
{{ item.addressList[0].cityName }}
</view>
<view class="name">
{{ item.activityTypeName }}
</view>
</view>
</view>
<view class="content-right">
<view
:class="(item.prized === 0 || Date.now() > new Date(item.signupEndTime).getTime()) ? 'btn gray' : 'btn'">
{{ formatStatus(item) }}
</view>
</view>
</view>
</view>
</view>
<view v-if="loadMore" class="no-page">
{{ loadMore }}
</view>
</view>
</template>
<script setup>
import { ref, nextTick } from 'vue'
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
import { signupListApi } from '@/api/momclub/index.js';
const currentPage = ref(1)
const pageSize = ref(10)
const loadMore = ref('')
const loadMoreFlag = ref(true) //是否加载
const activityList = ref()
const formatActivityTime = (startTime, endTime) => {
const start = new Date(startTime);
const end = new Date(endTime);
const getParts = (date) => [date.getMonth() + 1, date.getDate(), date.getHours().toString().padStart(2, '0'), date.getMinutes().toString().padStart(2, '0')];
const [sMonth, sDate, sHours, sMinutes] = getParts(start);
const [eMonth, eDate, eHours, eMinutes] = getParts(end);
console.log(sMonth, eMonth, sDate, eDate, '23123dawsaws')
if (sMonth === eMonth && sDate === eDate) {
//不跨日
return `${sMonth}/${sDate},${sHours}:${sMinutes}-${eHours}:${eMinutes}`;
} else if (sMonth === eMonth) {
//跨日
return `${sMonth}月,${sDate}日-${eDate}日`;
} else {
//跨月
return `,${sMonth}${sDate}日~,${eMonth}${eDate}日`;
}
}
const formatStatus = (item) => {
const { prized, signupState, signupStartTime, signupEndTime } = item
if (signupState === 1) {
//用户已报名
if (prized === -1) {
//未公布
return "已报名"
} else if (prized === 1) {
//已入选
return "已入选"
} else {
//未入选
return "未入选"
}
} else {
//用户未报名
if (Date.now() < new Date(signupStartTime).getTime()) {
//报名未开始
return "待开启"
} else if (Date.now() > new Date(signupEndTime).getTime()) {
//报名已结束
return "已结束"
} else {
//报名进行中
return "报名中"
}
}
}
// const formatAddress = (addressList) => {
// let addressStr = addressList.map(itm => itm.cityName).join(' | ')
// console.log(addressStr.length, addressStr, '02323')
// if (addressStr.length > 9) {
// let str = addressStr.slice(0, 9)
// return `${str}...`
// } else {
// return addressStr
// }
// }
//查看活动
const detailClick = (item) => {
if (item.prized === 0 || Date.now() > new Date(item.signupEndTime).getTime()) return
uni.navigateTo({
url: `/subPackages/momclub/index?activityId=${item.activityId}`
})
}
const status = ref('')
//搜索
const searchClick = () => {
console.log('点击')
if (status.value === 1) {
status.value = ''
} else {
status.value = 1
}
getInfo()
}
const getInfo = async () => {
try {
console.log(status.value, '传参')
const res = await signupListApi({ status: status.value, currentPage: currentPage.value, pageSize: pageSize.value })
if (res.success) {
activityList.value = currentPage.value === 1 ? res.data.records : [...activityList.value, ...res.data.records]
if (activityList.value.length == 0) {
loadMore.value = '暂无报名活动'
}else{
loadMore.value = ''
}
if (res.data.records.length == 0) {
loadMoreFlag.value = false
}
}
} catch (err) {
console.log(err, 'err')
}
}
onReachBottom(() => {
if (!loadMoreFlag.value) return
nextTick(() => {
currentPage.value = currentPage.value + 1
getInfo()
})
})
onLoad(() => {
loadMoreFlag.value = true
getInfo()
})
</script>
<style lang="less" scoped>
.activity-list-warp {
background-color: #F7F7F7;
position: relative;
color: #1C1C1C;
min-height: 100vh;
.warp-bg {
// background: linear-gradient(180deg, #ECC990 0%, rgba(211, 164, 88, 0) 100%);
height: 240rpx;
width: 100%;
position: absolute;
}
.search {
padding: 0rpx 20rpx;
height: 92rpx;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #FFFFFF;
.search-text {
line-height: 92rpx;
font-size: 26rpx;
}
.search-btn {
font-size: 24rpx;
border-radius: 44rpx;
height: 40rpx;
line-height: 40rpx;
border: 1px solid #B27C1E;
color: #B27C1E;
padding: 0rpx 15rpx;
}
}
.activity-list-box {
padding: 40rpx 20rpx;
.activity-list-card {
background-color: #FFFFFF;
margin-bottom: 40rpx;
height: 400rpx;
position: relative;
border-radius: 16rpx;
.item-pic {
width: 100%;
height: 354rpx;
image {
width: 100%;
height: 100%;
border-radius: 16rpx 16rpx 0rpx 0rpx;
}
}
.item-content {
width: 100%;
height: 120rpx;
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx 40rpx;
box-sizing: border-box;
position: absolute;
bottom: 0;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.5) -33.33%, rgba(255, 255, 255, 0.787882) 11.04%, #FFFFFF 42.29%);
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.04);
border-radius: 16rpx;
.content-left {
width: 140rpx;
height: 100%;
.left-one{
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
.time-top {
font-size: 28rpx;
font-weight: 600;
}
.time-bot {
font-size: 20rpx;
color: #A8A8A8;
line-height: 28rpx;
}
}
.left-two{
font-size: 24rpx;
line-height: 36rpx;
}
}
.content-main {
width: calc(100% - 380rpx);
display: flex;
flex-direction: column;
align-items: flex-start;
margin: 0rpx 20rpx;
height: 100%;
justify-content: space-between;
.title {
font-size: 26rpx;
font-weight: 500;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.area {
display: flex;
justify-content: center;
align-items: center;
image {
width: 20rpx;
height: 20rpx;
}
.text {
font-size: 20rpx;
margin: 0rpx 20rpx 0rpx 2rpx;
}
.name {
padding: 0rpx 12rpx;
border-radius: 4rpx;
background: rgba(211, 163, 88, 0.2);
font-size: 18rpx;
line-height: 26rpx;
color: #B27C1E;
}
}
}
.content-right {
width: 180rpx;
.btn {
width: 180rpx;
height: 60rpx;
border-radius: 44rpx;
text-align: center;
color: #FFFFFF;
line-height: 60rpx;
background: linear-gradient(180deg, #ECC990 0%, #D3A358 100%);
font-size: 26rpx;
font-weight: 400;
}
.gray {
opacity: 0.5;
}
}
}
}
}
.no-page{
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment