Files
files/pages/index/voluteer.vue
2026-04-15 10:56:46 +08:00

236 lines
4.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="begin">
<view class="title">
公益活动
</view>
<uni-segmented-control styleType="text" activeColor="red" :current="current" :values="value"
@clickItem="togglecurrent"></uni-segmented-control>
<view class="content">
<view v-show="current === 0">
<view class="voluteer_card" v-for="ever in morevalue">
<image :src="`http://124.93.196.45:10091/Neusoft/times-model${ever[0]}`"></image>
<view class="voluteer_card_bottom">
<p>{{ever[1]}}</p>
<p>活动时间
{{ever[2]}}~ {{ever[3]}}
</p>
<p>发起方{{ever[4]}}</p>
<p>简介{{ever[5]}}</p>
</view>
<view>
<view>
<image src="../../static/baoming_icon.png"></image>
<text>已报名{{ever[6]}}</text>
</view>
<view @click="goto(ever[7])">去报名</view>
</view>
</view>
<view class="voluteer_bottom">
<view class="nav_bottom" v-for="(path_image,index) in endbottom" @click="gowhere(index)">
<image :src="path_image[0]"></image>
<p>{{path_image[1]}}</p>
</view>
</view>
</view>
<view v-show="current === 1">
</view>
</view>
</view>
</template>
<script>
export default {
data() {
const imagepath = Array.from({
length: 4
}).map((_, x) => `../../static/a${x+1}.png`)
const textarray = ["首页", "公益", "心得", "我的"]
const endbottom = imagepath.map((value, index) => [value, textarray[index]])
return {
current: 0,
value: ["全部活动", "已报名"],
morevalue: null,
endbottom
}
},
methods: {
togglecurrent(e) {
if (this.current != e.currentIndex) {
this.current = e.currentIndex
}
},
async requests(updown, path) {
let response
if (updown == "up") {
response = await fetch(`http://124.93.196.45:10091/Neusoft/times-model${path}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"password": "0CYdq6Hn",
"username": "6dOMIgIU"
})
})
} else if (updown == "down") {
response = await fetch(`http://124.93.196.45:10091/Neusoft/times-model${path}`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": (await this.requests("up", "/app/login")).token
},
})
}
const data = await response.json()
console.log(data)
return data
},
goto(id) {
uni.navigateTo({
url: `/pages/index/voluteer_son?id=${id}`
})
},
gowhere(index) {
switch (index) {
case 0:
uni.navigateTo({
url: '/pages/index/index'
});
break;
case 2:
uni.navigateTo({
url: '/pages/index/student'
});
break;
}
}
},
async mounted() {
// await this.requests("down","/activity/app-o/detail?id=1")
this.morevalue = (await this.requests("down", "/activity/app-o/list")).rows.map(x => [x.picPath, x.title, x
.startDate, x.endDate, x.sponsor, x.content, x.signUpNum, x.id
])
console.log(this.morevalue);
}
}
</script>
<style>
* {
padding: 0;
margin: 0;
}
.begin {
background-color: rgb(221, 221, 221);
height: 100vh;
display: flex;
flex-direction: column;
}
.title {
font-size: 1.3rem;
font-weight: bold;
text-align: center;
}
.content {
height: 110vh;
overflow: scroll;
}
.voluteer_card {
height: 42vh;
background-color: #fff;
margin: 2%;
border-radius: 10px;
display: flex;
flex-direction: column;
justify-content: space-evenly;
}
.voluteer_card image {
width: 100%;
height: 24vh;
border-radius: 10px;
}
.voluteer_card_bottom {
padding: 0% 4% 2% 4%;
}
.voluteer_card_bottom p:nth-child(1) {
font-size: 1.1rem;
}
.voluteer_card_bottom p:not(:nth-child(1)) {
font-size: 0.8rem;
padding: 1% 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.voluteer_card_bottom p:last-child {
padding-bottom: 2%;
border-bottom: 1px solid rgb(220, 220, 220);
}
.voluteer_card_bottom+view {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0% 4% 2% 4%;
}
.voluteer_card_bottom+view>view:first-child {
display: flex;
justify-content: space-evenly;
align-items: center;
}
.voluteer_card_bottom+view>view:first-child image {
width: 20px;
height: 20px;
}
.voluteer_card_bottom+view>view:nth-child(2) {
text-align: center;
line-height: 30px;
width: 100px;
height: 30px;
background-color: red;
color: white;
border-radius: 15px;
}
.voluteer_bottom {
display: flex;
justify-content: space-around;
background-color: white;
position: fixed;
bottom: 0;
left: 0;
width: 100vw;
height: 65px;
}
.nav_bottom {
display: flex;
flex-direction: column;
align-items: center;
}
.nav_bottom image {
width: 40px;
height: 40px;
}
.nav_bottom:nth-child(2) p {
color: #C2050F;
}
</style>