拆分部分页面
parent
7f1933681a
commit
ce937a5f3f
|
@ -18,7 +18,7 @@
|
||||||
<view class="bgc"></view>
|
<view class="bgc"></view>
|
||||||
<!-- 搜索栏 -->
|
<!-- 搜索栏 -->
|
||||||
<view class="sousuoBox1 flex alignCenter justifyBetween">
|
<view class="sousuoBox1 flex alignCenter justifyBetween">
|
||||||
<view class="sousuoBox flex alignCenter justifyBetween" @click="toEarch">
|
<view class="sousuoBox flex alignCenter justifyBetween" @click="toESearch">
|
||||||
<view class="souBOx flex alignCenter">
|
<view class="souBOx flex alignCenter">
|
||||||
<image :src="tu22" class="img3"></image>
|
<image :src="tu22" class="img3"></image>
|
||||||
<span class="shuruText">电音节节日活动</span>
|
<span class="shuruText">电音节节日活动</span>
|
||||||
|
@ -40,45 +40,14 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 列表信息 -->
|
<!-- 列表信息 -->
|
||||||
<view class="scrollable-list">
|
|
||||||
<up-list @scrolltolower="scrolltolower" :showScrollbar="false" :pagingEnabled="true">
|
<ActiInfoList v-model="actiInfoList" @scrolltolower="scrolltolower"></ActiInfoList>
|
||||||
<up-list-item v-for="(item, index) in actiInfoList" :key="index">
|
|
||||||
<view class="listInfo" @click="toInfo(item)">
|
|
||||||
<span class="titile">
|
|
||||||
{{ item.title }}
|
|
||||||
</span>
|
|
||||||
<view class="startTime flex alignCenter">
|
|
||||||
<image :src="tu52" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
|
||||||
开始时间:{{ item.startTime }}</view>
|
|
||||||
<view class="endTime flex alignCenter">
|
|
||||||
<image :src="tu53" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
|
||||||
结束时间:{{ item.endTime }}</view>
|
|
||||||
<view class="addrs flex alignCenter">
|
|
||||||
<image :src="tu51" style="width: 20rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
|
||||||
活动地点:{{ item.addrs }}</view>
|
|
||||||
<view class="statsInfo">
|
|
||||||
<!-- 动态数据 -->
|
|
||||||
<!-- <view :class="getDictLabelByValue(item.state).cssClass" >
|
|
||||||
<span class="text">{{ getDictLabelByValue(item.state).dictLabel }}</span></view> -->
|
|
||||||
<!-- 静态数据 -->
|
|
||||||
<view class="state1" >
|
|
||||||
<span class="text">报名中</span></view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</up-list-item>
|
|
||||||
</up-list>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
<view>
|
<view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import ActiInfoList from '../common/activityList/index.vue'
|
||||||
import { onShow, onLoad } from '@dcloudio/uni-app'
|
import { onShow, onLoad } from '@dcloudio/uni-app'
|
||||||
|
|
||||||
|
|
||||||
import {getDicts} from "@/api/system/dict/data"
|
import {getDicts} from "@/api/system/dict/data"
|
||||||
import { ref, reactive, getCurrentInstance } from 'vue'
|
import { ref, reactive, getCurrentInstance } from 'vue'
|
||||||
import { useStore } from 'vuex';
|
import { useStore } from 'vuex';
|
||||||
|
@ -164,22 +133,19 @@ const getDictLabelByValue = (state) => {
|
||||||
const toInfo = (item) => {
|
const toInfo = (item) => {
|
||||||
proxy.$tab.navigateTo(`/pages/activity/info?id=${item.id}`);
|
proxy.$tab.navigateTo(`/pages/activity/info?id=${item.id}`);
|
||||||
}
|
}
|
||||||
|
function toESearch(){
|
||||||
|
console.log("toESearch");
|
||||||
|
proxy.$tab.navigateTo('/pages/search/activitySearch')
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.fixed-header {
|
.fixed-header {
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: -1; /* 足够高以确保它在上层 */
|
|
||||||
}
|
|
||||||
.scrollable-list {
|
|
||||||
margin-top:22vh; /* fixed-header 的高度 */
|
|
||||||
height:78vh ;/* 根据屏幕高度和fixed-header的高度计算 */
|
|
||||||
overflow: auto; /* 允许这个容器内部滚动 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.leftinfo{
|
.leftinfo{
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
|
@ -219,7 +185,7 @@ display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.bgc {
|
.bgc {
|
||||||
width: 750rpx;
|
width: 100%;
|
||||||
height: 500rpx;
|
height: 500rpx;
|
||||||
background: linear-gradient(180deg, rgb(201, 246, 245), rgb(248, 248, 226));
|
background: linear-gradient(180deg, rgb(201, 246, 245), rgb(248, 248, 226));
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -255,109 +221,10 @@ align-items: center;
|
||||||
height: 38rpx;
|
height: 38rpx;
|
||||||
}
|
}
|
||||||
.tabsinfo {
|
.tabsinfo {
|
||||||
width: 686rpx;
|
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
.listInfo {
|
|
||||||
position: relative;
|
|
||||||
width: 686rpx;
|
|
||||||
height: 328rpx;
|
|
||||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
|
||||||
background: #ffffff;
|
|
||||||
margin: 0 auto;
|
|
||||||
margin-top: 12rpx;
|
|
||||||
margin-bottom: 12rpx;
|
|
||||||
padding-top: 24rpx;
|
|
||||||
padding-left: 24rpx;
|
|
||||||
.titile {
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
height: 80rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
color: #000000 100%;
|
|
||||||
}
|
|
||||||
.startTime {
|
|
||||||
margin-top: 34rpx;
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
height: 24rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #000000 100%;
|
|
||||||
}
|
|
||||||
.endTime {
|
|
||||||
margin-top: 12rpx;
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
height: 24rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #000000 100%;
|
|
||||||
}
|
|
||||||
.addrs {
|
|
||||||
margin-top: 22rpx;
|
|
||||||
font-weight: 400;
|
|
||||||
height: 24rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #000000 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.statsInfo{
|
|
||||||
position: absolute;
|
|
||||||
right: 24rpx;
|
|
||||||
bottom: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.state0 {
|
|
||||||
width: 84rpx;
|
|
||||||
height: 28rpx;
|
|
||||||
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
|
||||||
background: #f1f1f1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-content: center;
|
|
||||||
|
|
||||||
.text {
|
|
||||||
font-weight: 400;
|
|
||||||
width: 60rpx;
|
|
||||||
height: 20rpx;
|
|
||||||
font-size: 20rpx;
|
|
||||||
text-align: center;
|
|
||||||
color: #7E7E7E;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.state1 {
|
|
||||||
width: 84rpx;
|
|
||||||
height: 28rpx;
|
|
||||||
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
|
||||||
background: #c0f0ec;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-content: center;
|
|
||||||
|
|
||||||
.text {
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 20rpx;
|
|
||||||
text-align: center;
|
|
||||||
color: #00CCBE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.state2 {
|
|
||||||
width: 84rpx;
|
|
||||||
height: 28rpx;
|
|
||||||
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
|
||||||
background: #fde2e2;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-content: center;
|
|
||||||
|
|
||||||
.text {
|
|
||||||
font-weight: 400;
|
|
||||||
width: 60rpx;
|
|
||||||
height: 20rpx;
|
|
||||||
font-size: 20rpx;
|
|
||||||
text-align: center;
|
|
||||||
color: #FFABAB;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
|
@ -31,7 +31,8 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="infox">
|
<view class="infox">
|
||||||
<view class="infoavatar"><up-avatar size="60rpx" :src="QNDomain + actiInfoList.launchAvatarsurl"></up-avatar></view>
|
<view class="infoavatar"><up-avatar size="60rpx" :src="QNDomain + actiInfoList.launchAvatarsurl"></up-avatar>
|
||||||
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<view class="launchName">{{ actiInfoList.launchName }}</view>
|
<view class="launchName">{{ actiInfoList.launchName }}</view>
|
||||||
<view class="launchAddres">{{ actiInfoList.launchAddres }}</view>
|
<view class="launchAddres">{{ actiInfoList.launchAddres }}</view>
|
||||||
|
@ -39,7 +40,15 @@
|
||||||
<view class="elroll">已报名:{{ actiInfoList.elroll }}人</view>
|
<view class="elroll">已报名:{{ actiInfoList.elroll }}人</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="infox2">
|
<view class="infox2">
|
||||||
|
<up-modal :show="open" :title="title" width="600rpx"
|
||||||
|
:content='content' confirmText="签到"
|
||||||
|
cancelText="取消"
|
||||||
|
confirmColor="#3477FC"
|
||||||
|
showCancelButton
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="confirm"
|
||||||
|
@cancel="cancel"
|
||||||
|
></up-modal>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
@ -54,7 +63,9 @@ const tu22 = iconConfig.tu22;
|
||||||
const tu51 = iconConfig.tu51;
|
const tu51 = iconConfig.tu51;
|
||||||
const tu52 = iconConfig.tu52;
|
const tu52 = iconConfig.tu52;
|
||||||
const tu53 = iconConfig.tu53;
|
const tu53 = iconConfig.tu53;
|
||||||
|
const open = ref(false)
|
||||||
|
const title = ref('确认签到');
|
||||||
|
const content = ref('请您确认活动签到,祝您玩的愉快!');
|
||||||
// 创建响应式数据 ref('#001f3f')
|
// 创建响应式数据 ref('#001f3f')
|
||||||
const bgColor = ref('');
|
const bgColor = ref('');
|
||||||
|
|
||||||
|
@ -82,6 +93,18 @@ onLoad((options) => {
|
||||||
const leftClick = () => {
|
const leftClick = () => {
|
||||||
proxy.$tab.navigateBack(1)
|
proxy.$tab.navigateBack(1)
|
||||||
}
|
}
|
||||||
|
const btnClick = () => {
|
||||||
|
open.value = !open.value
|
||||||
|
}
|
||||||
|
//模态框确认按钮
|
||||||
|
function confirm () {
|
||||||
|
open.value = !open.value
|
||||||
|
}
|
||||||
|
//模态框取消按钮
|
||||||
|
function cancel () {
|
||||||
|
open.value = !open.value
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
@ -176,7 +199,7 @@ const leftClick = () => {
|
||||||
border-top: 1px solid #ccc; /* 上边框 */
|
border-top: 1px solid #ccc; /* 上边框 */
|
||||||
|
|
||||||
background-color: white; /* 背景色设置为白色,防止透明背景导致内容重叠可见 */
|
background-color: white; /* 背景色设置为白色,防止透明背景导致内容重叠可见 */
|
||||||
z-index: 1000; /* 确保在最上层 */
|
z-index: 10;
|
||||||
}
|
}
|
||||||
.infox2{
|
.infox2{
|
||||||
position: fixed; /* 固定位置 */
|
position: fixed; /* 固定位置 */
|
||||||
|
@ -186,5 +209,6 @@ const leftClick = () => {
|
||||||
height: 68rpx;
|
height: 68rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #f6f6f6;
|
background-color: #f6f6f6;
|
||||||
|
z-index: 10002; /* 确保在最上层 */
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -0,0 +1,170 @@
|
||||||
|
<template>
|
||||||
|
<!-- 列表信息 -->
|
||||||
|
<view class="scrollable-list">
|
||||||
|
<up-list @scrolltolower="scrolltolower" :showScrollbar="false" :pagingEnabled="true">
|
||||||
|
<up-list-item v-for="(item, index) in modelValue" :key="index">
|
||||||
|
<view class="listInfo" @click="toInfo(item)">
|
||||||
|
<span class="titile">
|
||||||
|
{{ item.title }}
|
||||||
|
</span>
|
||||||
|
<view class="startTime flex alignCenter">
|
||||||
|
<image :src="tu52" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
开始时间:{{ item.startTime }}
|
||||||
|
</view>
|
||||||
|
<view class="endTime flex alignCenter">
|
||||||
|
<image :src="tu53" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
结束时间:{{ item.endTime }}
|
||||||
|
</view>
|
||||||
|
<view class="addrs flex alignCenter">
|
||||||
|
<image :src="tu51" style="width: 20rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
活动地点:{{ item.addrs }}
|
||||||
|
</view>
|
||||||
|
<view class="statsInfo">
|
||||||
|
<!-- 动态数据 -->
|
||||||
|
<!-- <view :class="getDictLabelByValue(item.state).cssClass" >
|
||||||
|
<span class="text">{{ getDictLabelByValue(item.state).dictLabel }}</span></view> -->
|
||||||
|
<!-- 静态数据 -->
|
||||||
|
<view class="state1">
|
||||||
|
<span class="text">报名中</span>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</up-list-item>
|
||||||
|
</up-list>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { onShow, onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { getDicts } from "@/api/system/dict/data"
|
||||||
|
import { ref, reactive, getCurrentInstance } from 'vue'
|
||||||
|
import { useStore } from 'vuex';
|
||||||
|
const emit = defineEmits(['scrolltolower']);
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: Array
|
||||||
|
});
|
||||||
|
|
||||||
|
const scrolltolower = () => {
|
||||||
|
emit('scrolltolower'); // 如果不需要传递数据,可以省略第二个参数
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.scrollable-list {
|
||||||
|
|
||||||
|
overflow: auto;
|
||||||
|
/* 允许这个容器内部滚动 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.listInfo {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
height: 328rpx;
|
||||||
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||||
|
background: #ffffff;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-top: 12rpx;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
padding-top: 24rpx;
|
||||||
|
padding-left: 24rpx;
|
||||||
|
|
||||||
|
.titile {
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
height: 80rpx;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.startTime {
|
||||||
|
margin-top: 34rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.endTime {
|
||||||
|
margin-top: 12rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.addrs {
|
||||||
|
margin-top: 22rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.statsInfo {
|
||||||
|
position: absolute;
|
||||||
|
right: 24rpx;
|
||||||
|
bottom: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.state0 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #f1f1f1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 20rpx;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #7E7E7E;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.state1 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #c0f0ec;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #00CCBE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.state2 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #fde2e2;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 20rpx;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #FFABAB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -8,8 +8,10 @@ const tu22 = ref(QNDomain + "home/icon/image/png/tu2-2_20240531163115818.png")
|
||||||
const tu51 = ref(QNDomain + "home/icon/image/png/tu5-1_20240601124004353.png")
|
const tu51 = ref(QNDomain + "home/icon/image/png/tu5-1_20240601124004353.png")
|
||||||
const tu52 = ref(QNDomain + "home/icon/image/png/tu5-2_20240601124010403.png")
|
const tu52 = ref(QNDomain + "home/icon/image/png/tu5-2_20240601124010403.png")
|
||||||
const tu53 = ref(QNDomain + "home/icon/image/png/tu5-3_20240601124016641.png")
|
const tu53 = ref(QNDomain + "home/icon/image/png/tu5-3_20240601124016641.png")
|
||||||
|
const tu23 = ref(QNDomain + "home/icon/image/png/tu2-3_20240602093303793.png")
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
tu21,tu22,
|
tu21,tu22,tu23,
|
||||||
tu51,tu52,tu53
|
tu51,tu52,tu53
|
||||||
}
|
}
|
Loading…
Reference in New Issue