@@ -32,6 +32,7 @@ import { | |||
DatePicker, | |||
Form, | |||
CheckboxGroup, | |||
RadioGroup, Radio | |||
} from 'vant'; | |||
import share from '@/utils/share.js' | |||
@@ -87,6 +88,8 @@ export function createApp() { | |||
app.use(DatePicker); | |||
app.use(Form); | |||
app.use(CheckboxGroup); | |||
app.use(Radio); | |||
app.use(RadioGroup); | |||
// app.mixin(zpMixins); | |||
return { | |||
app | |||
@@ -69,7 +69,7 @@ | |||
this.merchantPageApi(false); | |||
}, | |||
methods: { | |||
setMorKm(distance){ | |||
setMorKm(distance) { | |||
return utils.setMorKm(distance) | |||
}, | |||
// 生活对应栏目的分页查询 | |||
@@ -197,49 +197,6 @@ | |||
.search { | |||
padding: 30rpx 30rpx 54rpx 30rpx; | |||
.search-input { | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
background: #f9f9f9; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
text-align: center; | |||
position: relative; | |||
box-sizing: content-box; | |||
.input { | |||
width: 100%; | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
text-decoration: 20rpx; | |||
padding: 0 64rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
} | |||
.placeholder-style { | |||
text-align: center; | |||
color: #c1c1c1; | |||
} | |||
} | |||
.search-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
position: absolute; | |||
right: -1px; | |||
top: 0; | |||
z-index: 1; | |||
.imgage { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.life-tabs { | |||
margin-top: 40rpx; | |||
@@ -295,4 +252,47 @@ | |||
} | |||
} | |||
} | |||
.search-input { | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
background: #f9f9f9; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
text-align: center; | |||
position: relative; | |||
box-sizing: content-box; | |||
.input { | |||
width: 100%; | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
text-decoration: 20rpx; | |||
padding: 0 64rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
} | |||
.placeholder-style { | |||
text-align: center; | |||
color: #c1c1c1; | |||
} | |||
} | |||
.search-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
position: absolute; | |||
right: -1px; | |||
top: 0; | |||
z-index: 1; | |||
.imgage { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,214 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" left-text="活动风采" left-arrow /> | |||
<view class="search"> | |||
<view class="flex flex-between search-input"> | |||
<input class="input" :value="searchValue" type="text" confirm-type="search" | |||
placeholder-class="placeholder-style" placeholder="请输入搜索商户名称" @input="onSearch" @confirm="onChange" /> | |||
<view class="search-icon flex flex-center" @click="onSearch"> | |||
<image class="imgage" src="/static/images/search.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="activity"> | |||
<block v-for="(item,index) in 7" :key="index"> | |||
<view class="activity-item" @click="headerDetail(item)"> | |||
<image class="activity-image" src="/src/images/share-icon.png" mode=""></image> | |||
<view class="activity-type" v-if="index < 5" :class="`activity-type${index}`">NO.{{index+1}}</view> | |||
<view class="activity-title">惠苑路社区西南角家乐福超市对面xxxxx</view> | |||
<view class="activity-time">2023-11-23 周四</view> | |||
<view class="activity-rigth"> | |||
<text>发布者的名字</text> | |||
<image src="/src/static/logo.png" mode=""></image> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
<van-empty | |||
image="https://jiexiu.xuqidata.com:8083/jiexiujumin/e1bb4242ccc209c332b84a3fde862cc156b31634152d5df503642438bfdded50.png" | |||
:image-size="['78%','100%']" description="没有找到您要查询的信息" /> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
searchValue: '' | |||
} | |||
}, | |||
methods: { | |||
onSearch(e) { | |||
if (e.detail.value !== '') { | |||
return; | |||
} | |||
this.searchValue = e.detail.value | |||
this.merchantPageApi(); | |||
}, | |||
onChange(e) { | |||
this.searchValue = e.detail.value | |||
this.merchantPageApi(); | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
page { | |||
background-color: #F9F9F9; | |||
} | |||
.search { | |||
padding: 0rpx 30rpx 40rpx 30rpx; | |||
background-color: #ffffff; | |||
} | |||
.search-input { | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
background: #f9f9f9; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
text-align: center; | |||
position: relative; | |||
box-sizing: content-box; | |||
padding: 0 30rpx; | |||
.input { | |||
width: 100%; | |||
height: 64rpx; | |||
line-height: 64rpx; | |||
text-decoration: 20rpx; | |||
padding: 0 64rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
} | |||
.placeholder-style { | |||
text-align: center; | |||
color: #c1c1c1; | |||
} | |||
} | |||
.search-icon { | |||
width: 64rpx; | |||
height: 64rpx; | |||
background: #ffffff; | |||
border-radius: 35rpx; | |||
border: 1px solid #e1e1e1; | |||
position: absolute; | |||
right: -1px; | |||
top: 0; | |||
z-index: 1; | |||
.imgage { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.activity { | |||
padding: 23rpx 20rpx; | |||
display: grid; | |||
grid-template-columns: repeat(2, 1fr); | |||
grid-gap: 16rpx; | |||
.activity-item { | |||
position: relative; | |||
background: #fff; | |||
border-radius: 8rpx; | |||
overflow: hidden; | |||
.activity-image { | |||
width: 100%; | |||
height: 180rpx; | |||
} | |||
.activity-title { | |||
margin-top: 16rpx; | |||
font-size: 30rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
} | |||
.activity-title { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.activity-time { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
margin-top: 8rpx; | |||
color: #999999; | |||
} | |||
.activity-rigth { | |||
text-align: right; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #FF7F34; | |||
display: flex; | |||
justify-content: flex-end; | |||
align-items: center; | |||
padding: 28rpx 28rpx 30rpx 0rpx; | |||
image { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-left: 16rpx; | |||
border-radius: 1932312312px; | |||
} | |||
} | |||
} | |||
} | |||
.activity-type { | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
border-radius: 0px 8rpx 1000rpx 0; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #fff; | |||
width: 100rpx; | |||
padding: 12rpx 30rpx 12rpx 12rpx; | |||
text-align: center; | |||
} | |||
.activity-type0 { | |||
background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||
} | |||
.activity-type1 { | |||
background: linear-gradient(270deg, #F3623B 0%, #F88C44 100%); | |||
} | |||
.activity-type2 { | |||
background: linear-gradient(291deg, #fea422 0%, #f9ca10 100%); | |||
} | |||
.activity-type3 { | |||
background: linear-gradient(291deg, #4a507b 0%, #6882b1 100%); | |||
} | |||
.activity-type4 { | |||
background: linear-gradient(291deg, #4a507b 0%, #6882b1 100%); | |||
} | |||
.van-empty__description { | |||
font-size: 28rpx !important; | |||
font-weight: 400; | |||
color: #BFBFBF; | |||
} | |||
.van-empty__image { | |||
width: 75%; | |||
height: 100%; | |||
} | |||
</style> |
@@ -0,0 +1,329 @@ | |||
<template> | |||
<view class=""> | |||
<custom-nav-bar position="fixed" color="black" left-text="党员注册" left-arrow /> | |||
<view class="form-list"> | |||
<view class="form-body"> | |||
<view class="flex flex-v-center flex-between"> | |||
<view class="label"> | |||
<text>所属党委</text> | |||
<text class="red">*</text> | |||
</view> | |||
<view class="label-value flex flex-v-center"> | |||
<picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||
<!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||
</picker> | |||
<image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="form-body"> | |||
<view class="flex flex-v-center flex-between"> | |||
<view class="label"> | |||
<text>常住地社区</text> | |||
<text class="red">*</text> | |||
</view> | |||
<view class="label-value flex flex-v-center"> | |||
<picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||
<!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||
</picker> | |||
<image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>常住小区</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="flex"> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>楼栋(街)</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>单元(巷)</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>房号</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class pd-left" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>姓名</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>性别</text> | |||
<text class="red">*</text> | |||
</view> | |||
<van-radio-group v-model="checked" shape="dot" direction="horizontal"> | |||
<van-radio name="1" icon-size="32rpx" checked-color="#FE3B53">男</van-radio> | |||
<van-radio name="2" icon-size="32rpx" checked-color="#FE3B53">女</van-radio> | |||
</van-radio-group> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
form: {}, | |||
columns: [], | |||
fileList: [], | |||
checked: '1', | |||
} | |||
}, | |||
methods: { | |||
bindPickerChange() { | |||
}, | |||
headleInput() { | |||
}, | |||
async afterRead(event) { | |||
const { | |||
file | |||
} = event; | |||
const res = await getApp().globalData.upload({ | |||
file | |||
}); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: '上传图片失败', | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
// this.fileList.push({url:res.data}) | |||
this.appealEnclosure.push(res.data); | |||
}, | |||
beforeDelete(file, dateil) { | |||
this.appealEnclosure.splice(dateil.index, 1); | |||
this.fileList.splice(dateil.index, 1) | |||
}, | |||
submit() { | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
.form-list { | |||
width: 100%; | |||
} | |||
.form-body { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
padding: 40rpx 40rpx 38rpx; | |||
position: relative; | |||
&::before { | |||
content: ''; | |||
position: absolute; | |||
left: 50%; | |||
bottom: 0; | |||
transform: translateX(-50%); | |||
width: 678rpx; | |||
height: 1px; | |||
background-color: #EFEFEF; | |||
} | |||
.label { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
.label-value { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
line-height: 32rpx; | |||
.ic-xia { | |||
margin-left: 27rpx; | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.picker { | |||
margin-top: 24rpx; | |||
} | |||
.picker-text { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.picker-line { | |||
flex: 1; | |||
} | |||
.textarea-class { | |||
margin-top: 26rpx; | |||
width: 100%; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
.form-msg { | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
line-height: 26rpx; | |||
margin-top: 28rpx; | |||
} | |||
.location { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
.location-info { | |||
margin-top: 26rpx; | |||
input { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
} | |||
} | |||
.form-col { | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
text-align: right; | |||
.textarea-class { | |||
margin-top: 0; | |||
} | |||
.card-placeholder { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
} | |||
} | |||
.form-location { | |||
padding: 20rpx 35rpx; | |||
border-radius: 16rpx; | |||
} | |||
.form-treaty { | |||
padding: 83rpx 40rpx 32rpx; | |||
.ic-check { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
.checbox-text { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
line-height: 28rpx; | |||
.jump-to { | |||
color: var(--item-dominant-color); | |||
} | |||
} | |||
} | |||
.form-button { | |||
padding: 25rpx 36rpx; | |||
} | |||
.form-button-body { | |||
height: 80rpx; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #ffffff; | |||
line-height: 80rpx; | |||
text-align: center; | |||
background: #c1c1c1; | |||
border-radius: 8rpx; | |||
} | |||
.form-button-body-select { | |||
background: var(--item-dominant-color); | |||
} | |||
.form-image { | |||
margin: 20rpx 0rpx 20rpx 0; | |||
display: flex; | |||
align-items: center; | |||
flex-wrap: wrap; | |||
} | |||
.form-image>view { | |||
width: 31.3%; | |||
position: relative; | |||
margin-right: 13.5rpx; | |||
} | |||
.form-image>view>image:nth-child(1) { | |||
width: 100%; | |||
height: 200rpx; | |||
border-radius: 10rpx; | |||
} | |||
.form-image>view>image:nth-child(2) { | |||
position: absolute; | |||
top: -0rpx; | |||
right: 0rpx; | |||
width: 40rpx; | |||
height: 40rpx; | |||
} | |||
.camera { | |||
width: 160rpx; | |||
height: 160rpx; | |||
} | |||
.pd-left { | |||
text-align: left; | |||
padding-left: 35px; | |||
} | |||
.img-icon { | |||
height: 20px; | |||
} | |||
</style> |
@@ -0,0 +1,231 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" left-text="志愿服务详情" left-arrow /> | |||
<view class="detail"> | |||
<view class="detail-bg"> | |||
<view>标题标题标题标题标题标题标题标</view> | |||
<view class="type">申领中</view> | |||
<view class="detail-heade"> | |||
<image class="image" src="../../../../static/logo.png" mode=""></image> | |||
<text class="nickname">张无忌</text> | |||
<view class="msg">党员志愿服务</view> | |||
</view> | |||
</view> | |||
<view class="conent">惠苑路社区西南角,家乐福超市对面xxxx</view> | |||
<view class="detail-grid"> | |||
<block v-for="(item,index) in 9" :key="index"> | |||
<image src="/src/static/logo.png" mode=""></image> | |||
</block> | |||
</view> | |||
<view class="validity">申领有效期:<text class="time">2023-11-02~2023-12-0</text></view> | |||
<view class="flex-between"> | |||
<text class="title-name">志愿服务</text> | |||
<text class="num"><text class="action">90</text>/90</text> | |||
</view> | |||
<view class="user"> | |||
<block v-for="item in 10" :key="item"> | |||
<view class="user-item"> | |||
<image class="user-image" src="/src/static/logo.png"></image> | |||
<text class="nickname">张文远</text> | |||
</view> | |||
</block> | |||
</view> | |||
<view class="but">申领</view> | |||
</view> | |||
<view style="height: 50rpx;"></view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
} | |||
}, | |||
methods: { | |||
} | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
.detail { | |||
padding: 0 15rpx; | |||
.detail-bg { | |||
position: relative; | |||
background: linear-gradient(182deg, #FEF6E9 0%, #FFFFFF 100%, #FFFFFF 100%); | |||
border-radius: 16px 16px 0px 0px; | |||
padding: 26rpx 25rpx 13rpx 25rpx; | |||
.detail-heade { | |||
margin-top: 24rpx; | |||
display: flex; | |||
align-items: center; | |||
.image { | |||
width: 40rpx; | |||
height: 40rpx; | |||
border-radius: 4313210px; | |||
} | |||
.nickname { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
margin-left: 16rpx; | |||
} | |||
.msg { | |||
margin-left: 78rpx; | |||
display: inline-block; | |||
font-size: 20rpx; | |||
font-weight: 400; | |||
color: #FFFFFF; | |||
padding: 4rpx 15rpx; | |||
background: linear-gradient(270deg, #F38A36 0%, #FF9D4F 100%); | |||
border-radius: 4rpx; | |||
} | |||
} | |||
} | |||
.conent { | |||
margin-top: 36rpx; | |||
font-size: 30rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
padding: 0rpx 25rpx 0rpx 25rpx; | |||
} | |||
.detail-grid { | |||
margin-top: 29rpx; | |||
display: grid; | |||
grid-template-columns: repeat(3, 1fr); | |||
align-items: center; | |||
grid-gap: 10rpx; | |||
padding: 0rpx 25rpx 0rpx 25rpx; | |||
image { | |||
width: 100%; | |||
height: 200rpx; | |||
} | |||
} | |||
.validity { | |||
margin-top: 41rpx; | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
padding: 0rpx 25rpx 0rpx 25rpx; | |||
.time { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
} | |||
} | |||
.type { | |||
position: absolute; | |||
top: 0; | |||
right: 0; | |||
background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||
border-radius: 0px 8rpx 0px 1000rpx; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #fff; | |||
padding: 12rpx 22rpx 12rpx 36rpx; | |||
} | |||
.title-name { | |||
display: inline-block; | |||
position: relative; | |||
font-size: 36rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
z-index: 3; | |||
&::after { | |||
content: ''; | |||
position: absolute; | |||
left: 0px; | |||
bottom: 5px; | |||
width: 140rpx; | |||
// width: 115%; | |||
z-index: -1; | |||
height: 10rpx; | |||
background: #FFCED6; | |||
border-radius: 2rpx; | |||
} | |||
.num { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
} | |||
.action { | |||
color: #FE3B53; | |||
margin-right: 7rpx; | |||
} | |||
.flex-between { | |||
display: flex; | |||
align-items: center; | |||
padding: 30rpx 30rpx 0 30rpx; | |||
} | |||
.user { | |||
margin-top: 48rpx; | |||
display: grid; | |||
align-items: center; | |||
grid-template-columns: repeat(4, 1fr); | |||
grid-gap: 12rpx; | |||
.user-item { | |||
background: linear-gradient(90deg, #FFD9DA 0%, #FF8C8F 100%); | |||
border-radius: 232132318px; | |||
padding: 12rpx 16rpx; | |||
display: flex; | |||
align-items: center; | |||
.user-image { | |||
width: 32rpx; | |||
height: 32rpx; | |||
border-radius: 1932131rpx; | |||
border: 1px solid #FFFFFF; | |||
} | |||
.nickname { | |||
display: inline-block; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #FFFFFF; | |||
margin-left: 16rpx; | |||
} | |||
} | |||
} | |||
.but { | |||
background: #FE3B53; | |||
border-radius: 8rpx; | |||
padding: 24rpx 0; | |||
text-align: center; | |||
margin-top: 72rpx; | |||
font-size: 32rpx; | |||
font-family: PingFangSC, PingFang SC; | |||
font-weight: 500; | |||
color: #FFFFFF; | |||
} | |||
</style> |
@@ -0,0 +1,281 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar left-text="党员服务" left-arrow /> | |||
<image class="second-header" | |||
src="https://jiexiu.xuqidata.com:8083/jiexiujumin/5ff449a20cf95f6f207d2b3bc07816da05117b68cd810f7db27a6b8de34a61d9.png"> | |||
</image> | |||
<view class="party-grid"> | |||
<block v-for="(item,index) in 4" :key="index"> | |||
<view style="width: 100%;height: 100%;;"> | |||
<image class="icon" src="/src/static/logo.png" mode=""></image> | |||
<view class="title">党员注册</view> | |||
</view> | |||
</block> | |||
</view> | |||
<view class="title-name">志愿服务</view> | |||
<view class="swiper"> | |||
<swiper style="height: 225px;" circular indicator-active-color="#C0CFDE" indicator-color="#fff" | |||
:indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval" :duration="duration"> | |||
<swiper-item v-for="(item,index) in 4" :key="index"> | |||
<view> | |||
<view class="swiper-piso"> | |||
<image class="swiper-icon" src="/src/images/share-icon.png" mode=""></image> | |||
<view class="type">服务中</view> | |||
</view> | |||
<view class="swiper-item"> | |||
<view> | |||
<view class="item-title">创造更好营商环境申报</view> | |||
<view class="msg">北京经开区政务服务中心联合融媒体中心策划</view> | |||
</view> | |||
<view class="but">申领</view> | |||
</view> | |||
</view> | |||
</swiper-item> | |||
</swiper> | |||
</view> | |||
<view class="title-name">活动风采</view> | |||
<!-- 活动风采 --> | |||
<view class="activity"> | |||
<block v-for="(item,index) in 5" :key="index"> | |||
<view class="activity-item" @click="headerDetail(item)"> | |||
<image class="activity-image" src="/src/images/share-icon.png" mode=""></image> | |||
<view class="activity-type" v-if="index < 4" :class="`activity-type${index}`">NO.{{index+1}}</view> | |||
<view class="activity-title">惠苑路社区西南角家乐福超市对面xxxxx</view> | |||
<view class="activity-time">2023-11-23 周四</view> | |||
<view class="activity-rigth"> | |||
<text>发布者的名字</text> | |||
<image src="/src/static/logo.png" mode=""></image> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
background: ['color1', 'color2', 'color3'], | |||
indicatorDots: true, | |||
autoplay: false, | |||
interval: 5000, | |||
duration: 500 | |||
} | |||
}, | |||
methods: { | |||
headerDetail(item) { | |||
uni.navigateTo({ | |||
url: './detail?id=' + item.id | |||
}) | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
.second-header { | |||
width: 100%; | |||
height: 330rpx; | |||
} | |||
.party-grid { | |||
display: grid; | |||
grid-template-columns: repeat(4, 1fr); | |||
text-align: center; | |||
align-items: center; | |||
grid-gap: 24rpx; | |||
height: 100%; | |||
padding: 56rpx 38rpx 0 38rpx; | |||
margin-bottom: 60rpx; | |||
.icon { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
.title { | |||
margin-top: 16rpx; | |||
font-size: 26rpx; | |||
font-family: PingFangSC, PingFang SC; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
} | |||
.title-name { | |||
display: inline-block; | |||
position: relative; | |||
font-size: 36rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
padding: 30rpx 30rpx 0 30rpx; | |||
z-index: 3; | |||
&::after { | |||
content: ''; | |||
position: absolute; | |||
left: 15px; | |||
bottom: 5px; | |||
width: 140rpx; | |||
// width: 115%; | |||
z-index: -1; | |||
height: 10rpx; | |||
background: #FFCED6; | |||
border-radius: 2rpx; | |||
} | |||
} | |||
.swiper { | |||
margin-top: 24rpx; | |||
padding: 0 24rpx; | |||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, #EEF7FF 100%); | |||
.swiper-piso { | |||
position: relative; | |||
.swiper-icon { | |||
width: 100%; | |||
height: 240rpx; | |||
border-radius: 6rpx; | |||
} | |||
} | |||
.swiper-item { | |||
margin-top: 38rpx; | |||
display: grid; | |||
align-items: center; | |||
grid-template-columns: 80% 20%; | |||
.item-title { | |||
font-size: 30rpx; | |||
font-weight: 500; | |||
color: #194EB5; | |||
} | |||
.msg { | |||
margin-top: 13rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: rgba(34, 34, 34, 0.9); | |||
} | |||
.but { | |||
padding: 20rpx 20rpx; | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
background-color: #257eeb; | |||
text-align: center; | |||
color: #fff; | |||
border-radius: 32312rpx; | |||
} | |||
} | |||
} | |||
.activity { | |||
padding: 23rpx 20rpx; | |||
display: grid; | |||
grid-template-columns: repeat(2, 1fr); | |||
grid-gap: 16rpx; | |||
.activity-item { | |||
position: relative; | |||
background: #F9F9F9; | |||
border-radius: 8rpx; | |||
.activity-image { | |||
width: 100%; | |||
height: 180rpx; | |||
} | |||
.activity-title { | |||
margin-top: 16rpx; | |||
font-size: 30rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
} | |||
.activity-title { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.activity-time { | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
margin-top: 8rpx; | |||
color: #999999; | |||
} | |||
.activity-rigth { | |||
text-align: right; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #FF7F34; | |||
display: flex; | |||
justify-content: flex-end; | |||
align-items: center; | |||
padding: 28rpx 28rpx 30rpx 0rpx; | |||
image { | |||
width: 32rpx; | |||
height: 32rpx; | |||
margin-left: 16rpx; | |||
border-radius: 1932312312px; | |||
} | |||
} | |||
} | |||
} | |||
/deep/.uni-swiper-dots-horizontal { | |||
background: rgba(116, 148, 182, 0.1); | |||
border-radius: 15px; | |||
border: 1px solid #FFFFFF; | |||
padding: 8rpx 26rpx; | |||
} | |||
.type { | |||
position: absolute; | |||
top: 0; | |||
right: 0; | |||
background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||
border-radius: 0px 8rpx 0px 1000rpx; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #fff; | |||
padding: 12rpx 22rpx 12rpx 36rpx; | |||
} | |||
.activity-type { | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
border-radius: 0px 8rpx 1000rpx 0; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #fff; | |||
padding: 12rpx 22rpx 12rpx 36rpx; | |||
} | |||
.activity-type0 { | |||
background: linear-gradient(291deg, #0A992D 0%, #11D03E 100%); | |||
} | |||
.activity-type1 { | |||
background: linear-gradient(270deg, #F3623B 0%, #F88C44 100%); | |||
} | |||
.activity-type2 { | |||
background: linear-gradient(291deg, #fea422 0%, #f9ca10 100%); | |||
} | |||
.activity-type3 { | |||
background: linear-gradient(291deg, #4a507b 0%, #6882b1 100%); | |||
} | |||
</style> |
@@ -0,0 +1,336 @@ | |||
<template> | |||
<view> | |||
<custom-nav-bar position="fixed" color="black" left-text="志愿服务发布" left-arrow /> | |||
<view class="form-list"> | |||
<view class="form-body"> | |||
<view class="flex flex-v-center flex-between"> | |||
<view class="label"> | |||
<text>点单类型</text> | |||
<text class="red">*</text> | |||
</view> | |||
<view class="label-value flex flex-v-center"> | |||
<picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||
<!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||
</picker> | |||
<image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>标题</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
</view> | |||
<view class="form-body"> | |||
<view class="label"> | |||
<text>内容</text> | |||
<text class="red">*</text> | |||
</view> | |||
<textarea class="textarea-class" maxlength="500" @input="headleInput" data-name="content" placeholder="请输入内容" | |||
auto-height :value="form.content"></textarea> | |||
<view class="form-image"> | |||
<van-uploader :after-read="afterRead" :before-delete="beforeDelete" v-model="fileList" :deletable="true" | |||
max-count="9"> | |||
<image class="camera" src="/static/images/icon9.png"></image> | |||
</van-uploader> | |||
</view> | |||
<view class="form-msg">附件不超过9个,每个大小不超过1M</view> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>所需人数</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>发布者</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body form-col"> | |||
<view class="label"> | |||
<text>申领有效期</text> | |||
<text class="red">*</text> | |||
</view> | |||
<input class="flex1 textarea-class" @input="headleInput" :value="form.name" type="text" data-name="name" | |||
placeholder="请输入" /> | |||
</view> | |||
<view class="form-body"> | |||
<view class="flex flex-v-center flex-between"> | |||
<view class="label"> | |||
<text>申领有效期</text> | |||
<text class="red">*</text> | |||
</view> | |||
<view class="label-value flex flex-v-center"> | |||
<picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||
<!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||
</picker> | |||
<image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="form-body"> | |||
<view class="flex flex-v-center flex-between"> | |||
<view class="label"> | |||
<text>服务状态</text> | |||
<text class="red">*</text> | |||
</view> | |||
<view class="label-value flex flex-v-center"> | |||
<picker @change="bindPickerChange" range-key="label" :value="form.type" :range="columns"> | |||
<!-- <view style="color: #000000">{{ columns[form.type].label }}</view> --> | |||
</picker> | |||
<image class="ic-xia" src="/static/packages/people/images/ic-xia.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="form-button"> | |||
<van-button v-if="checked" @click="submit" block color="#FE3B53">发布信息</van-button> | |||
<van-button v-else disabled block color="#C1C1C1">发布信息</van-button> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
form: {}, | |||
checked: false, | |||
columns: [], | |||
fileList: [] | |||
} | |||
}, | |||
methods: { | |||
bindPickerChange() { | |||
}, | |||
headleInput() { | |||
}, | |||
async afterRead(event) { | |||
const { | |||
file | |||
} = event; | |||
const res = await getApp().globalData.upload({ | |||
file | |||
}); | |||
if (res.code !== 0) { | |||
uni.showToast({ | |||
title: '上传图片失败', | |||
icon: 'none' | |||
}); | |||
return false; | |||
} | |||
// this.fileList.push({url:res.data}) | |||
this.appealEnclosure.push(res.data); | |||
}, | |||
beforeDelete(file, dateil) { | |||
this.appealEnclosure.splice(dateil.index, 1); | |||
this.fileList.splice(dateil.index, 1) | |||
}, | |||
submit() { | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less" scoped> | |||
.form-list { | |||
width: 100%; | |||
} | |||
.form-body { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
padding: 40rpx 40rpx 38rpx; | |||
position: relative; | |||
&::before { | |||
content: ''; | |||
position: absolute; | |||
left: 50%; | |||
bottom: 0; | |||
transform: translateX(-50%); | |||
width: 678rpx; | |||
height: 1px; | |||
background-color: #EFEFEF; | |||
} | |||
.label { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
} | |||
.label-value { | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
color: #000000; | |||
line-height: 32rpx; | |||
.ic-xia { | |||
margin-left: 27rpx; | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
} | |||
.picker { | |||
margin-top: 24rpx; | |||
} | |||
.picker-text { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
} | |||
.picker-line { | |||
flex: 1; | |||
} | |||
.textarea-class { | |||
margin-top: 26rpx; | |||
width: 100%; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
.form-msg { | |||
font-size: 26rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
line-height: 26rpx; | |||
margin-top: 28rpx; | |||
} | |||
.location { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
.location-info { | |||
margin-top: 26rpx; | |||
input { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
} | |||
} | |||
.form-col { | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
text-align: right; | |||
.textarea-class { | |||
margin-top: 0; | |||
} | |||
.card-placeholder { | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
} | |||
} | |||
.form-location { | |||
padding: 20rpx 35rpx; | |||
border-radius: 16rpx; | |||
} | |||
.form-treaty { | |||
padding: 83rpx 40rpx 32rpx; | |||
.ic-check { | |||
width: 32rpx; | |||
height: 32rpx; | |||
} | |||
.checbox-text { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #000000; | |||
line-height: 28rpx; | |||
.jump-to { | |||
color: var(--item-dominant-color); | |||
} | |||
} | |||
} | |||
.form-button { | |||
padding: 25rpx 36rpx; | |||
} | |||
.form-button-body { | |||
height: 80rpx; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
color: #ffffff; | |||
line-height: 80rpx; | |||
text-align: center; | |||
background: #c1c1c1; | |||
border-radius: 8rpx; | |||
} | |||
.form-button-body-select { | |||
background: var(--item-dominant-color); | |||
} | |||
.form-image { | |||
margin: 20rpx 0rpx 20rpx 0; | |||
display: flex; | |||
align-items: center; | |||
flex-wrap: wrap; | |||
} | |||
.form-image>view { | |||
width: 31.3%; | |||
position: relative; | |||
margin-right: 13.5rpx; | |||
} | |||
.form-image>view>image:nth-child(1) { | |||
width: 100%; | |||
height: 200rpx; | |||
border-radius: 10rpx; | |||
} | |||
.form-image>view>image:nth-child(2) { | |||
position: absolute; | |||
top: -0rpx; | |||
right: 0rpx; | |||
width: 40rpx; | |||
height: 40rpx; | |||
} | |||
.camera { | |||
width: 160rpx; | |||
height: 160rpx; | |||
} | |||
</style> |
@@ -231,6 +231,31 @@ | |||
"path": "pages/ai-im/ai-im", | |||
"name": "people", | |||
"style": {} | |||
}, | |||
{ | |||
"path": "pages/party-newspaper/index", | |||
"name": "people", | |||
"style": {} | |||
}, | |||
{ | |||
"path": "pages/party-newspaper/detail", | |||
"name": "people", | |||
"style": {} | |||
}, | |||
{ | |||
"path": "pages/party-newspaper/create", | |||
"name": "people", | |||
"style": {} | |||
}, | |||
{ | |||
"path": "pages/activity-mien/index", | |||
"name": "people", | |||
"style": {} | |||
}, | |||
{ | |||
"path": "pages/volunteering/index", | |||
"name": "people", | |||
"style": {} | |||
} | |||
] | |||
}, | |||