1、报名成功的按钮边框,以及订单详情里的二维码边框展示不全

2.个人中心-我的发布,列表里的按钮位置修改
3.banner上的标题,文字内容无法正常展示
4.订单详情页里的展示内容,间距问题要改
This commit is contained in:
王创世 2025-06-03 18:13:16 +08:00
parent 388e11e43a
commit 730079ce49
7 changed files with 2422 additions and 2403 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
.DS_Store
node_modules
unpackage
dist/
npm-debug.log*
yarn-debug.log*
@ -9,10 +10,10 @@ yarn-error.log*
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
.history
*.suo
*.ntvs*
*.njsproj

View File

@ -1,42 +1,12 @@
<template>
<view class="swiper_s">
<swiper class="swiper_s" :autoplay="autoplaySwiper" indicator-active-color="#0DAE11" indicator-color="#ffffff" :indicator-dots="false" :current="swiperCurrent" @change="swiperChange">
<swiper class="swiper_s" :autoplay="false" indicator-active-color="#0DAE11" indicator-color="#ffffff" :indicator-dots="false" :current="swiperCurrent" @change="swiperChange">
<swiper-item v-for="(item,index) in list" :key="index">
<span class="fnon_tit"><span class="text">{{ item.title?item.title:'' }}</span></span>
<view class="fnon_tit">
<view class="text">{{ item.title?item.title:'' }}</view>
</view>
<!-- @click="click(item.url)" 跳转活动链接 -->
<image class="swiper-image" v-if="isImageUrl(item.image)" :src="item.image" mode="scaleToFill" lazy-load />
<div style="height: 100%;width: 100%;position: relative;" v-else>
<!-- #ifdef APP -->
<MyVideo :item="item" :isPlay="!isShow && videoId == item.id" @onEnded="endVideo(item.id)" />
<view v-if="isShow"
style="z-index:99;position: absolute;width:100%;height:100%;top:0;left:0;display:flex; justify-content:center; align-items:center;">
<image @click.stop="plays(item.id,index)" src="@/static/bofang.png"
style="width: 40px;height: 40px;"></image>
</view>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<video class="swiper-video" :id="`Video${item.id}`" :src="item.image" :autoplay="true"
:controls="true" :show-center-play-btn="false" :enable-progress-gesture="false"
@ended="endVideo(item.id)" @loadedmetadata="loadVideo(item.id)" />
<cover-view v-if="isShow"
style="z-index:99;position: absolute;width:100%;height:100%;top:0;left:0;display:flex; justify-content:center; align-items:center;">
<cover-image @click.stop="plays(item.id,index)" src="@/static/bofang.png"
style="width: 40px;height: 40px;"></cover-image>
</cover-view>
<!-- #endif -->
<!-- #ifdef H5 -->
<video class="swiper-video" :id="`Video${item.id}`" :src="item.image" :autoplay="true" :controls="false"
:show-center-play-btn="false" :enable-progress-gesture="false" @ended="endVideo(item.id)" />
<view v-if="isShow"
style="z-index:99;position: absolute;width:100%;height:100%;top:0;left:0;display:flex; justify-content:center; align-items:center;">
<image @click.stop="plays(item.id,index)" src="@/static/bofang.png"
style="width: 40px;height: 40px;"></image>
</view>
<!-- #endif -->
</div>
<image class="swiper-image" v-if="isImageUrl(item.image)" :src="item.image" mode="scaleToFill" />
</swiper-item>
</swiper>
@ -70,7 +40,7 @@
data() {
return {
swiperCurrent: 0, //
autoplaySwiper: true,
autoplaySwiper: false,
isShow: true,
videoIndex: null,
videoId: null,
@ -79,43 +49,7 @@
}
},
created() {
// #ifdef MP-WEIXIN
const regex = /^(http|https):\/\//;
this.list.forEach(v => {
const bool = regex.test(v.url);
if (!bool) {
const fs = uni.getFileSystemManager();
const res = new Promise((resolve, reject) => {
fs.readFile({
filePath: v.url, // static
encoding: 'base64',
success: (res) => {
v.url = res.data
//
const fileName = `temp_video_${Date.now()}.mp4`;
//
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}`;
// Base64
fs.writeFile({
filePath: tempFilePath, //
data: v.url, // Base64URI
encoding: 'base64', // base64
success: () => {
v.url = tempFilePath
},
fail: (err) => {
console.error('写入文件失败:', err);
}
});
},
fail: (err) => {
console.error('读取视频文件失败:', err);
}
});
});
}
})
// #endif
},
methods: {
swiperChange(e) {
@ -213,7 +147,7 @@
bottom: 30rpx;
.text {
position: relative; /* 确保文字在模糊背景之上 */
z-index: 10; /* 确保文字位于最上层 */
z-index: 110; /* 确保文字位于最上层,高于伪元素 */
}
}
.fnon_tit::after {
@ -223,6 +157,7 @@
backdrop-filter: blur(4px); /* 调整模糊程度 */
pointer-events: none; /* 确保模糊效果不会干扰点击事件 */
border-radius: 36rpx;
z-index: 10; /* 确保伪元素在背景和文字之间 */
}
.dots {
position: absolute;

View File

@ -3,70 +3,39 @@
<view class="con-center flex flex-column justify-center align-items">
<view class="tabs align-items">
<span
class="s-header flex flex-column"
v-for="(item, index) in headers"
:key="index"
:class="{ selected: headerSelected(item.status) }"
@click="selectheader(item.status)"
>
<span class="s-header flex flex-column" v-for="(item, index) in headers" :key="index"
:class="{ selected: headerSelected(item.status) }" @click="selectheader(item.status)">
{{ item.text }}
<span
class="lines"
:class="{ selected: headerSelected(item.status) }"
></span>
<span class="lines" :class="{ selected: headerSelected(item.status) }"></span>
</span>
</view>
<view class="flex align-items justify-start shenhe" v-if="status == 0">
<span :class="['span_s', { active: !auth_status }]" @click="toShlist(0)">待审核</span>
<span :class="['span_s', { active: auth_status }]" style="margin-left: 20rpx;" @click="toShlist(2)">未通过</span>
<span :class="['span_s', { active: auth_status }]" style="margin-left: 20rpx;"
@click="toShlist(2)">未通过</span>
</view>
<view class="hot flex flex-column">
<view class="content flex align-items flex-column">
<view
class="flex flex-column w-100 bbb"
style="position: relative;"
v-for="(item, index) in hotList"
:key="index"
>
<image
v-if="item.auth_status == 0"
src="/static/my/daishenhe.png"
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"
></image>
<image
v-if="item.auth_status == 2"
src="/static/my/wtg.png"
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"
></image>
<view class="flex flex-column w-100 bbb" style="position: relative;"
v-for="(item, index) in hotList" :key="index">
<image v-if="item.auth_status == 0" src="/static/my/daishenhe.png"
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"></image>
<image v-if="item.auth_status == 2" src="/static/my/wtg.png"
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"></image>
<view class="flex" style="margin-top: 24rpx">
<view
class="right flex flex-column"
style="align-items: self-start"
>
<view class="right flex flex-column" style="align-items: self-start">
<span class="title white-space">{{ item.title }}</span>
<span class="first-image flex align-items" style="margin-top: 20rpx; width: 100%">
<image :src="item.user.avatar" style="width: 36rpx; height: 36rpx"></image>
<span
class="first-image flex align-items"
style="margin-top: 20rpx; width: 100%"
>
<image
:src="item.user.avatar"
style="width: 36rpx; height: 36rpx"
></image>
<span
style="color: #9c9c9c; margin-left: 10rpx; width: 35%"
>{{ item.user.nickname }}</span
>
style="color: #9c9c9c; margin-left: 10rpx; width: 35%">{{ item.user.nickname }}</span>
<view class="white-space" style="width: 60%">
<span
style="color: #0ca013; margin-left: 20rpx"
v-for="items_t in item.classes_cate"
>#{{ items_t }}</span
>
<span style="color: #0ca013; margin-left: 20rpx"
v-for="items_t in item.classes_cate">#{{ items_t }}</span>
</view>
</span>
@ -75,30 +44,26 @@
<span class="time_tex" v-if="item.status == 2">{{
"报名中"
}}</span>
<span style="margin: 0 8rpx"
>{{ dateWeeks(item.sign_start_time) }} </span
>|<span
<span style="margin: 0 8rpx">{{ dateWeeks(item.sign_start_time) }} </span>|<span
class="white-space"
style="margin-left: 8rpx; width: 260rpx"
>{{ item.address_detail }}</span
>
style="margin-left: 8rpx; width: 260rpx">{{ item.address_detail }}</span>
</view>
</view>
<view class="flex align-items" style="margin-top: 20rpx">
<image
class="imgs_con"
v-for="(items_img, index) in item.images.slice(0, 3)"
:key="index"
:src="items_img"
></image>
<image class="imgs_con" v-for="(items_img, index) in item.images.slice(0, 3)"
:key="index" :src="items_img"></image>
</view>
</view>
</view>
<view class="bottom flex align-items" v-if="item.auth_status != 0" style="justify-content: space-around;">
<!-- <view class="flex align-items" v-if="item.status == 2">
<span class="flex align-items" style="width: 150rpx">
<view class="bottom flex align-items" v-if="item.auth_status != 0"
style="justify-content: space-between;padding: 0rpx 20rpx;">
<view v-if="item.status==1">
<image src="/static/index/dian.png"
style="width: 60rpx;height: 60rpx;vertical-align: middle;"></image>
<text style="margin-left: 20rpx;vertical-align: middle;font-size: 26rpx;">未开始</text>
</view>
<view v-if="item.status==2" style="display: flex;align-items: center;">
<u-avatar-group
:urls="item.join_info.users"
keyName="avatar"
@ -107,31 +72,29 @@
gap="0.4"
></u-avatar-group>
<image
v-if="item.join_info.users.length > 0"
src="/static/index/dian.png"
style="
width: 60rpx;
height: 60rpx;
margin-left: -20rpx;
z-index: 1;
"
></image>
</span>
<view class="number flex align-items">
{{ Number(item.join_info.people_number) + "人已上车" }}
<view style="margin-left: 20rpx;vertical-align: middle;font-size: 26rpx;">{{ Number(item.join_info.people_number) + "人已上车" }}</view>
</view>
</view> -->
<!-- <view class="flex align-items">
<span class="flex align-items" style="width: 150rpx">
123/456
</span>
</view> -->
<span v-if="item.status == 4 || item.status == 3 || item.status == 2" class="part1 flex justify-center align-items" @click="toHexiao"> 核销 </span>
<span class="part flex justify-center align-items" v-if="item.auth_status != 2" @click="detail(item.id)"> 详情 </span>
<view style="font-size: 26rpx; width: 40%;">
<text>核销</text>
<text style="color: orangered;">{{item.verification_num}}</text>
<text>/{{item.stock}}</text>
</view>
<view v-if="item.status == 3 || item.status == 4"
class="part1 flex justify-center align-items" @click="toHexiao"> 核销 </view>
<view class="part flex justify-center align-items" v-if="item.auth_status != 2"
@click="detail(item.id)"> 详情 </view>
</view>
</view>
<view class="flex flex-column flex-start align-items" v-if="hotList.length == 0" style="margin-top: 300rpx;">
<view class="flex flex-column flex-start align-items" v-if="hotList.length == 0"
style="margin-top: 300rpx;">
<image src="/static/message/activen.png" mode="" style="width: 200rpx;height: 200rpx;">
</image>
<view style="margin-top: 50rpx;font-size: 36rpx;color: #323232;">暂无发布活动</view>
@ -173,7 +136,9 @@
</template>
<script>
import { dateWeek } from "../../utils/dateFormat";
import {
dateWeek
} from "../../utils/dateFormat";
export default {
data() {
return {
@ -186,8 +151,7 @@ export default {
padding: "0",
borderRadius: "20rpx",
},
sortList: [
{
sortList: [{
text: "按照价格排序",
value: ["acs", "desc"],
},
@ -198,8 +162,7 @@ export default {
],
size: 13,
sortStyle: ["#ff557f", "#3f3f3f"],
headers: [
{
headers: [{
status: "0",
text: "活动审核",
},
@ -395,8 +358,7 @@ export default {
toMake(id, orderId, classes_lib_id, type) {
uni.navigateTo({
// url: "/packageA/center/applyDetail?id=" + id + "&orderId=" + orderId + "&type=" + 2
url:
"/packageA/center/orderDetail?id=" +
url: "/packageA/center/orderDetail?id=" +
id +
"&orderId=" +
orderId +
@ -422,8 +384,7 @@ export default {
type = 0;
}
uni.navigateTo({
url:
"/packageA/center/orderDetail?id=" +
url: "/packageA/center/orderDetail?id=" +
id +
"&orderId=" +
orderId +
@ -438,8 +399,7 @@ export default {
//
toPay(id, orderId, classes_lib_id, order_no, type) {
uni.navigateTo({
url:
"/packageA/center/orderDetail?id=" +
url: "/packageA/center/orderDetail?id=" +
id +
"&orderId=" +
orderId +
@ -548,6 +508,7 @@ export default {
// margin-top: 25rpx;
// overflow: hidden;
background: #f7f7f7;
.tabs {
width: 750rpx;
background: #ffffff;
@ -582,21 +543,25 @@ export default {
color: #323232;
line-height: 28rpx;
}
.lines {
position: absolute;
bottom: 0;
width: 44rpx;
}
.lines.selected {
border-bottom: #323232 solid 8rpx;
}
}
.shenhe {
width: 100%;
margin-left: 30rpx;
margin-top: 30rpx;
position: fixed;
top: 80rpx;
.span_s {
width: 134rpx;
height: 60rpx;
@ -608,6 +573,7 @@ export default {
font-size: 26rpx;
}
.span_s.active {
color: #3D3D3D;
}
@ -938,12 +904,14 @@ export default {
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
}
.hot {
margin-top: 80rpx;
margin-bottom: 70rpx;
min-height: 100vh;
.hot-top {
// padding-bottom: 12rpx;
// border-bottom: 2rpx solid red;
.left {
@ -972,14 +940,12 @@ export default {
}
}
}
.content {
// height: 462rpx;
// overflow-x: auto;
/* 允许横向滚动 */
// white-space: nowrap;
width: 690rpx;
.bbb {
background: #ffffff;
margin-top: 30rpx;
@ -998,6 +964,7 @@ export default {
font-size: 30rpx;
color: #323232;
}
.first-image {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -1011,6 +978,7 @@ export default {
color: #222222;
}
}
.row {
margin: 10rpx 0 26rpx 0;
@ -1063,6 +1031,7 @@ export default {
font-size: 26rpx;
color: #323232;
line-height: 30rpx;
.time_tex {
width: 116rpx;
height: 42rpx;
@ -1075,13 +1044,16 @@ export default {
text-align: center;
}
}
.imgs_con {
width: 202rpx;
height: 202rpx;
margin-right: 20rpx;
&:first-child {
border-radius: 18rpx 0 0 18rpx;
}
&:nth-child(3) {
border-radius: 0 18rpx 18rpx 0;
}
@ -1089,10 +1061,7 @@ export default {
}
.bottom {
margin: 32rpx 0 32rpx 24rpx;
width: 666rpx;
margin:20rpx 10rpx 30rpx 10rpx;
.number {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
@ -1128,6 +1097,7 @@ export default {
margin-right: 24rpx;
}
}
.part {
width: 168rpx;
height: 70rpx;
@ -1139,6 +1109,7 @@ export default {
font-size: 42rpx;
color: #bbfc5b;
}
.part1 {
width: 168rpx;
height: 70rpx;
@ -1150,6 +1121,7 @@ export default {
font-size: 42rpx;
color: #323232;
}
.tofb {
margin-top: 50rpx;
width: 280rpx;

View File

@ -9,12 +9,12 @@
<image class="head_img" v-if="detail.images.length > 0" :src="detail.images[0]" mode="" ></image>
<view style="margin-left: 20rpx;">
<view class="flex align-items">
<span class="first-name">{{detail.title}}</span>
<text class="first-name">{{detail.title}}</text>
</view>
<view class="first-image flex align-items" style="margin-top: 25rpx;">
<image :src="detailAny.user.avatar" mode="" style="width: 36rpx;height: 36rpx;border-radius: 80rpx ;"></image>
<span style="color:#9C9C9C;">{{ detailAny.user.nickname }}</span>
<span style="color:#9C9C9C;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</span>
<text style="color:#9C9C9C;">{{ detailAny.user.nickname }}</text>
<text style="color:#9C9C9C;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</text>
</view>
<view class="flex align-items" style="margin-top: 20rpx;">
{{detailAny.totalprice}}
@ -22,22 +22,22 @@
</view>
</view>
<span class="line"></span>
<span class="first-image flex align-items" style="margin-top: 20rpx;">
<text class="line"></text>
<view class="first-image flex align-items">
<image src="../../static/center/Alarm.png" mode="" class="icon-size"></image>
<span>{{formattedTime.formattedTime}}</span>
</span>
<span class="line"></span>
<text>{{formattedTime.formattedTime}}</text>
</view>
<text class="line"></text>
<span class="first-image flex align-items space-between"
<view class="first-image flex align-items space-between"
style="width: 100%;"
@click.stop="toMap(detail.latitude, detail.longitude, detail.address_detail)">
<view class="flex">
<image src="/static/center/address.png" mode="" class="icon-size"></image>
<span>{{detail.address_detail}}</span>
<text>{{detail.address_detail}}</text>
</view>
<image src="/static/detail/daohang.png" class="icon-size" style="width: 48rpx; height: 48rpx;"></image>
</span>
</view>
</view>
@ -45,9 +45,9 @@
</view>
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third-top flex align-items">
<span>核销二维码
<view>核销二维码
<image class="icons" src="/static/detail/xiangqing.png"></image>
</span>
</view>
</view>
<view class="third-center">
<qrcode-swiper :images="qrimages" @onSwiperChanges="onSwiperChanges"> </qrcode-swiper>
@ -57,7 +57,7 @@
</l-painter-view>
</l-painter> -->
<view class="bottom">
<span>左右滑动二维码核销{{qrindex}}/{{detailAny.num}}</span>
<text>左右滑动二维码核销{{qrindex}}/{{detailAny.num}}</text>
</view>
</view>
@ -66,28 +66,28 @@
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third-center">
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单状态</span>
<span v-if="detailAny.status == 2 || detailAny.status == 3 || detailAny.status == 4">待核销</span>
<text>订单状态</text>
<text style="color: #323232;" v-if="detailAny.status == 2 || detailAny.status == 3 || detailAny.status == 4">待核销</text>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单编号</span>
<span>{{detailAny.order_no}}</span>
<view class="flex w-100 space-between hui align-items" style="margin-top: 40rpx;" >
<text>订单编号</text>
<text style="color: #323232;">{{detailAny.order_no}}</text>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>创建时间</span>
<span>{{ formattime(detailAny.createtime)}}</span>
<view class="flex w-100 space-between hui align-items" style="margin-top: 40rpx;" >
<text>创建时间</text>
<text style="color: #323232;">{{ formattime(detailAny.createtime)}}</text>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款金额</span>
<span style="color: #FF4810;">{{detailAny.totalprice}}</span>
<view class="flex w-100 space-between hui align-items" style="margin-top: 40rpx;" >
<text>付款金额</text>
<text style="color: #FF4810;font-weight: 600;">{{detailAny.totalprice}}</text>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款方式</span>
<span>{{detailAny.pay_type == 'wechat' ? '微信支付' : '余额'}}</span>
<view class="flex w-100 space-between hui align-items" style="margin-top: 40rpx;" >
<text>付款方式</text>
<text style="color: #323232;">{{detailAny.pay_type == 'wechat' ? '微信支付' : '余额'}}</text>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款时间</span>
<span>{{ formattime(detailAny.createtime)}}</span>
<view class="flex w-100 space-between hui align-items" style="margin-top: 40rpx;" >
<text>付款时间</text>
<text style="color: #323232;">{{ formattime(detailAny.createtime)}}</text>
</view>
</view>
</view>
@ -96,7 +96,7 @@
<view class="footer flex align-items flex-column" style="justify-content: space-between;" >
<view class="footer-right flex justify-center align-items" >
<span @click="service(detailAny.id)"> 申请售后 </span>
<text @click="service(detailAny.id)"> 申请售后 </text>
</view>
</view>
@ -106,40 +106,40 @@
@open="buyOpen" :safeAreaInsetBottom="false" :closeable="true">
<view class="popupBox flex justify-start align-items flex-column">
<view class="pop-header flex align-items flex-column flex-start">
<span class="name white-space">{{detail.title}}</span>
<span class="price">
<span v-if="detail.feel == 0">{{detail.price}}</span>
<span v-if="detail.feel == 1">公益</span>
</span>
<view class="name white-space">{{detail.title}}</view>
<view class="price">
<text v-if="detail.feel == 0">{{detail.price}}</text>
<text v-if="detail.feel == 1">公益</text>
</view>
<!-- <image src="../../static/center/buy.png" mode="" style="width: 168rpx; height: 48rpx;">
</image> -->
</view>
<view class="popup flex-column">
<span class="first-image flex align-items" style="margin: 16rpx 0;">
<view class="first-image flex align-items" style="margin: 16rpx 0;">
<image src="../../static/center/Alarm.png" mode="" class="icon-size"></image>
<span>{{formattedTime.formattedTime}} (共计{{formattedTimeList.length}})</span>
</span>
<span class="first-image flex align-items">
<text>{{formattedTime.formattedTime}} (共计{{formattedTimeList.length}})</text>
</view>
<view class="first-image flex align-items">
<image src="../../static/center/address.png" mode="" class="icon-size"></image>
<span>{{detail.address_detail}}</span>
</span>
<text>{{detail.address_detail}}</text>
</view>
<!-- <image :src="detail.headimage" mode="" style="width: 200rpx; height: 140rpx;"></image>
<view class="popur-right flex flex-column">
<span class="name white-space">{{detail.title}}</span>
<span class="address">地址:{{detail.address_detail}}</span>
<span class="date">开始时间:{{detail.start_time_text}}</span>
<span class="time">结束时间:{{detail.end_time_text}}</span>
<span class="line-row"></span>
<span class="price">
<text class="name white-space">{{detail.title}}</text>
<text class="address">地址:{{detail.address_detail}}</text>
<text class="date">开始时间:{{detail.start_time_text}}</text>
<text class="time">结束时间:{{detail.end_time_text}}</text>
<text class="line-row"></text>
<text class="price">
课程价格:
<span v-if="detail.feel == 0">{{detail.price}}</span>
<span v-if="detail.feel == 1">免费</span>
</span>
<text v-if="detail.feel == 0">{{detail.price}}</text>
<text v-if="detail.feel == 1">免费</text>
</text>
</view> -->
</view>
<view class="popup-footer flex " @click="buy()">
<span v-if="type == 1 && detail.feel == 0"> </span>
<span v-if="type == 1 && detail.feel == 1"> </span>
<text v-if="type == 1 && detail.feel == 0"> </text>
<text v-if="type == 1 && detail.feel == 1"> </text>
<!-- <image src="../../static/center/price.png" mode="" style="width: 642rpx;height: 80rpx;"></image> -->
<u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon>
</view>
@ -149,18 +149,18 @@
<!-- 分享海报 -->
<u-overlay :show="overlay" class="pos">
<view class="btnList">
<span class="save" @click.stop="save()"> </span>
<!-- <span class="sharePoster" @click.stop="sharePoster()">
<text class="save" @click.stop="save()"> </text>
<!-- <text class="sharePoster" @click.stop="sharePoster()">
</span> -->
</text> -->
<button open-type="share" class="no-border-button" plain="true">
<span> </span>
<text> </text>
</button>
</view>
<!-- <view class="Poster" style="z-index: 9999;height: 1230rpx;">
<span class="posterClose" @click.stop="overlay = false">
<text class="posterClose" @click.stop="overlay = false">
<image src="../../static/center/close.png" mode="" style="width: 64rpx;height: 64rpx;"></image>
</span>
</text>
<image :src="path" mode="widthFix" style="width: 690rpx;height: 1230rpx;"></image>
<l-painter isCanvasToTempFilePath ref="painter" @success="path = $event" hidden
@ -842,7 +842,6 @@
<style lang="scss" scoped>
.detail_all{
background-color: #f7f7f7;
height: 100vh;
}
.w-100 {
width: 100%;
@ -937,7 +936,7 @@
font-size: 24rpx;
color: #7A7A7A;
span {
text {
// height: 80rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
@ -970,7 +969,7 @@
}
view {
span {
text {
width: 24rpx;
height: 24rpx;
background: rgba(255, 255, 255, 0.4);
@ -996,7 +995,7 @@
position: relative;
z-index: 10;
span{
view{
position: relative;
.icons{
width: 37rpx;
@ -1015,7 +1014,7 @@
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
color: #9C9C9C;
}
.bottom{
width: 100%;
@ -1038,7 +1037,7 @@
width: 630rpx;
height: 1rpx;
background: #F0F0F0;
margin: 19rpx 0;
margin: 30rpx 0;
}
.icon-size {
@ -1059,7 +1058,7 @@
background: #323232;
border-radius: 148rpx;
margin-bottom: 30rpx;
span {
text {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
@ -1071,7 +1070,7 @@
height: 90rpx;
background: #E4E4E4;
border-radius: 148rpx;
span {
text {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
@ -1092,7 +1091,7 @@
background-position: left bottom;
height: 265rpx;
span {
text {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 20rpx;
@ -1118,7 +1117,7 @@
color: #FF4810;
margin-top: 16rpx;
span {
text {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 36rpx;
@ -1140,7 +1139,7 @@
left: 48rpx;
bottom: 48rpx;
span {
text {
width: 594rpx;
height: 100rpx;
background: #222222;
@ -1159,9 +1158,9 @@
.line {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
border-radius: 0rpx 0rpx 0rpx 0rpx;
background: #F0F0F0;
//box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
//border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.times {
@ -1282,7 +1281,7 @@
font-size: 32rpx;
color: #4B4B4B;
span {
text {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
@ -1377,7 +1376,7 @@
display: flex;
justify-content: space-evenly;
span {
text {
width: 250rpx;
height: 80rpx;
background: #FFFFFF;
@ -1422,7 +1421,7 @@
height: 80rpx;
line-height: inherit;
span {
text {
width: 250rpx;
height: 80rpx;
background: #FFFFFF;

View File

@ -141,7 +141,7 @@
width: 280rpx;
height: 70rpx;
border-radius: 198rpx 198rpx 198rpx 198rpx;
border: 1rpx solid #323232;
border: 1px solid #323232;
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400;
font-size: 32rpx;

View File

@ -1,14 +1,11 @@
<template>
<view class="carousel-container">
<!-- 轮播主体 -->
<swiper
class="swiper-box"
:current="currentIndex"
@change="onSwiperChange"
circular
>
<swiper class="swiper-box" :current="currentIndex" @change="onSwiperChange" circular>
<swiper-item v-for="(item, index) in images" :key="index" class="swiper-item">
<image :src="item" class="swiper-image" mode="" />
<view style="border: 1px solid #9C9C9C;width: 280rpx;height: 280rpx;margin: 0 auto;border-radius: 8rpx;">
<image :src="item" class="swiper-image" mode="aspectFill" />
</view>
</swiper-item>
</swiper>
@ -36,7 +33,10 @@
<script>
export default {
props: {
images: { type: Array, default: () => [] } //
images: {
type: Array,
default: () => []
} //
},
data() {
return {
@ -65,23 +65,27 @@
<style lang="scss" scoped>
.carousel-container {
position: relative;
height: 400rpx;
height: 350rpx;
}
.swiper-box {
width: 100%;
height: 100%;
}
.swiper-item {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 3rpx;
}
.swiper-image {
width: 280rpx;
height: 280rpx;
width: 100%;
height: 100%;
border-radius: 8rpx;
border: 1rpx solid #9C9C9C;
/* 内边距为边框宽度 */
box-sizing: border-box;
/* 内边距和边框计入总尺寸 */
}
.nav-buttons {

View File

@ -1,32 +1,19 @@
<template>
<view
class="recharge flex align-items justify-start flex-column"
:style="{
<view class="recharge flex align-items justify-start flex-column" :style="{
zIndex: '-1',
backgroundPosition: 'top',
backgroundRepeat: 'no-repeat',
}"
>
}">
<view class="box">
<!-- logo -->
<view>
<image
src="/static/index/logo1.png"
mode=""
class="logo_css"
></image>
<image src="/static/index/logo1.png" mode="" class="logo_css"></image>
</view>
<!-- 搜索 -->
<view class="serch_top">
<view class="serch_top1">
<u-search
class="u-search"
v-model="keywords"
placeholder="搜索您要找的内容"
:showAction="false"
search-icon="/static/index/search.png"
@change="search()"
>
<u-search class="u-search" v-model="keywords" placeholder="搜索您要找的内容" :showAction="false"
search-icon="/static/index/search.png" @change="search()">
</u-search>
<span class="searchBtn" @click.stop="search()">搜索</span>
</view>
@ -35,30 +22,37 @@
<!-- <scroll-view scroll-y="true" class="flex align-items" style="height: 1250rpx;box-sizing: border-box;"> -->
<view class="swiper-box">
<MySwiper :list="swiperList"></MySwiper>
<!-- <MySwiper :list="swiperList"></MySwiper> -->
<view class="swiper_s">
<swiper class="swiper_s" :autoplay="true" indicator-active-color="#0DAE11"
indicator-color="#ffffff" :indicator-dots="false" :current="swiperCurrent"
@change="swiperChange">
<swiper-item v-for="(item, index) in swiperList" :key="index" @click="openSwiper(item)">
<view style="position: relative;width: 100%;height: 100%">
<view class="fnon_tit"></view>
<view class="text">{{ item.title ? item.title : '' }}</view>
<!-- @click="click(item.url)" 跳转活动链接 -->
<image class="swiper-image" :src="item.image" mode="scaleToFill" />
</view>
</swiper-item>
</swiper>
<!-- 自定义指示器 -->
<view class="dots">
<text v-for="(dot, idx) in swiperList.length" :key="idx"
:class="['dot', { active: swiperCurrent === idx }]" />
</view>
</view>
</view>
<!-- 标签 -->
<view class="tab_all">
<view class="tabs">
<view
v-for="(tab, index) in list"
:key="index"
:class="['tab-item', { active: current === index }]"
@click="handleClick(index,tab.id)"
>
<image
v-if="index != 0 && index != 1 && tab.image"
:src="tab.image"
mode=""
class="imgs_bq"
></image>
<image
v-if="index === 1"
src="/static/index/schoolye.png"
mode=""
class="imgs_bq"
></image>
<view v-for="(tab, index) in list" :key="index" :class="['tab-item', { active: current === index }]"
@click="handleClick(index, tab.id)">
<image v-if="index != 0 && index != 1 && tab.image" :src="tab.image" mode="" class="imgs_bq">
</image>
<image v-if="index === 1" src="/static/index/schoolye.png" mode="" class="imgs_bq"></image>
<span>{{ tab.name }}</span>
</view>
</view>
@ -69,30 +63,27 @@
<!-- 热门活动 -->
<view class="hot flex flex-column">
<view class="content flex align-items flex-column">
<view
class="flex flex-column w-100 bbb"
v-for="(item, index) in hotList"
:key="index"
@click="detail(item.id)"
>
<view class="flex flex-column w-100 bbb" v-for="(item, index) in hotList" :key="index"
@click="detail(item.id)">
<view
class="flex"
style="margin-top: 30rpx"
>
<view
class="right flex flex-column"
style="align-items: self-start"
>
<view class="flex" style="margin-top: 30rpx">
<view class="right flex flex-column" style="align-items: self-start">
<span class="title white-space">{{ item.title }}</span>
<view class="first-image flex align-items" style="margin-top: 20rpx;width: 100%;">
<image v-if="cate_ids != 1" :src="item.user.avatar" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
<image v-else :src="item.headimage" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
<span v-if="cate_ids != 1" style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span>
<span v-else class="white-space" style="color: #9C9C9C;margin-left: 10rpx;width: 220rpx;">{{ item.teacher.name }}</span>
<image v-if="cate_ids != 1" :src="item.user.avatar"
style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
<image v-else :src="item.headimage"
style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
<span v-if="cate_ids != 1"
style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span>
<span v-else class="white-space"
style="color: #9C9C9C;margin-left: 10rpx;width: 220rpx;">{{
item.teacher.name }}</span>
<view class="white-space" style="width: 60%;">
<span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in item.classes_cate">#{{ items_t }}</span>
<span style="color:#0CA013;margin-left: 20rpx;"
v-for="items_t in item.classes_cate">#{{ items_t
}}</span>
</view>
</view>
@ -100,14 +91,18 @@
<view class="time flex align-items white-space">
<span class="time_tex" v-if="item.status == 2">{{ '报名中' }}</span>
<!-- <span class="time_tex time_texs" v-if="item.status == 4">{{ '进行中' }}</span> -->
<span style="margin:0 20rpx;">{{ dateWeeks(item.start_time) }}</span><span style="width: 1rpx;height: 22rpx;background: #323232;"></span>
<span class="white-space" style="margin-left: 20rpx;width: 260rpx;">{{ item.address_detail }}</span>
<span style="margin:0 20rpx;">{{ dateWeeks(item.start_time) }}</span><span
style="width: 1rpx;height: 22rpx;background: #323232;"></span>
<span class="white-space"
style="margin-left: 20rpx;width: 260rpx;">{{ item.address_detail }}</span>
</view>
</view>
<view class="flex align-items justify-center" style="margin-top: 20rpx;margin-bottom: 32rpx;" >
<view class="imgs_con_div" v-for="(items_img,index) in item.images.slice(0,3)" :key="index">
<view class="flex align-items justify-center"
style="margin-top: 20rpx;margin-bottom: 32rpx;">
<view class="imgs_con_div" v-for="(items_img, index) in item.images.slice(0, 3)"
:key="index">
<image class="imgs_con" mode="widthFix" :src="items_img"></image>
</view>
</view>
@ -117,18 +112,11 @@
<view class="bottom flex align-items" v-if="cate_ids != 1">
<view class="flex align-items toptext">
<span class="flex align-items">
<u-avatar-group
:urls="item.join_info.users"
keyName="avatar"
size="30"
maxCount="5"
gap="0.4"
></u-avatar-group>
<image
src="/static/index/dian.png"
<u-avatar-group :urls="item.join_info.users" keyName="avatar" size="30" maxCount="5"
gap="0.4"></u-avatar-group>
<image src="/static/index/dian.png"
:class="item.join_info.users.length > 0 ? '' : 'smalld'"
style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;"
></image>
style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;"></image>
</span>
<view class="number flex align-items">
{{ Number(item.join_info.people_number) + "人已上车" }}
@ -149,10 +137,12 @@
</view>
<!-- </scroll-view> -->
<!-- 全部标签 -->
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1040rpx'}"
@close="closebq">
<u-popup :show="showPopbq" mode="bottom" round="20"
:customStyle="{ 'width': '750rpx', 'height': '1040rpx' }" @close="closebq">
<view class="popup_bq">
<image @click="closebq" src="@/static/center/close.png" mode="" style="width: 44rpx;height: 44rpx;position: absolute;right: 30rpx;top: -160rpx;z-index: 55;" ></image>
<image @click="closebq" src="@/static/center/close.png" mode=""
style="width: 44rpx;height: 44rpx;position: absolute;right: 30rpx;top: -160rpx;z-index: 55;">
</image>
<img src="https://naweigetetest2.hschool.com.cn/dyqc/biaoqian.png" alt="" />
<view class="flex flex-column w-100 bqlist">
<scroll-view scroll-y="true" class="flex align-items allbqs">
@ -167,7 +157,8 @@
></image> -->
{{ item_bq.name }}
</span>
<u-icon v-if="index != 0 && index != 1" name="close" color="#babdc7" @click="removebq(index)"></u-icon>
<u-icon v-if="index != 0 && index != 1" name="close" color="#babdc7"
@click="removebq(index)"></u-icon>
</view>
</view>
@ -215,6 +206,7 @@ export default {
},
data() {
return {
swiperCurrent: 0, //
showPopbq: false, //
bqList: [], //
cate_ids: '', //id
@ -234,8 +226,7 @@ export default {
currentItemType: "",
tjShow: true,
videoAutoplay: false,
list: [
{
list: [{
name: "全部",
id: 0
},
@ -250,7 +241,11 @@ export default {
};
},
onLoad() {
this.getinit();
this.resetLists();
this.getHotList();
this.getBqList();
this.getitembq();
// uni.hideTabBar();
},
@ -258,11 +253,7 @@ export default {
this.videoContext = uni.createVideoContext("myVideo"); //video
},
onShow() {
this.getinit();
this.resetLists();
this.getHotList();
this.getBqList();
this.getitembq();
},
beforeDestroy() {
this.autoplay = false;
@ -273,6 +264,22 @@ export default {
// }
},
methods: {
openSwiper(item){
console.log(item);
if(item.url=='xxx'){
uni.showToast({
title: '入会申请表单',
icon: 'none',
});
}else{
uni.navigateTo({
url:item.url
})
}
},
swiperChange(e) {
this.swiperCurrent = e.detail.current;
},
//
toshool() {
uni.$u.http
@ -571,7 +578,8 @@ export default {
})
.then((res) => {
if (res.code == 1) {
if (res.data.token == null && res.data.time == null && res.data.encryption_data == '') {
if (res.data.token == null && res.data.time == null && res.data.encryption_data ==
'') {
uni.showToast({
title: '请登录',
icon: 'none',
@ -721,11 +729,9 @@ export default {
}
.tab-item.active {
background: linear-gradient(
360deg,
background: linear-gradient(360deg,
rgba(196, 249, 119, 0) 0%,
#bbfc5b 100%
);
#bbfc5b 100%);
font-size: 34rpx;
color: #323232;
}
@ -777,6 +783,7 @@ export default {
.box {
width: 690rpx;
margin-top: 30rpx;
.logo_css {
width: 430rpx;
height: 80rpx;
@ -784,6 +791,7 @@ export default {
margin-top: 65rpx;
// #endif
}
.serch_top {
display: flex;
@ -792,6 +800,7 @@ export default {
margin-bottom: 30rpx;
position: relative;
width: 530rpx;
.searchBtn {
position: absolute;
width: 133rpx;
@ -809,6 +818,7 @@ export default {
right: 0;
}
}
.imgstop_ye {
margin-left: 30rpx;
width: 174rpx;
@ -850,6 +860,7 @@ export default {
font-size: 30rpx;
color: #323232;
}
.first-image {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -863,6 +874,7 @@ export default {
color: #222222;
}
}
.row {
margin: 10rpx 0 26rpx 0;
@ -929,23 +941,28 @@ export default {
align-items: center;
line-height: 30rpx;
}
.time_texs {
background: #FF4810;
color: #ffffff;
}
}
.imgs_con_div {
margin-right: 12rpx;
width: 202rpx;
height: 202rpx;
overflow: hidden;
&:first-child {
border-radius: 18rpx 0 0 18rpx;
}
&:nth-child(3) {
border-radius: 0 18rpx 18rpx 0;
}
.imgs_con {
width: 100%;
height: 100%;
@ -958,12 +975,15 @@ export default {
.bottom {
margin: 0 0 32rpx 24rpx;
width: 655rpx;
.toptext {
width: 480rpx;
.smalld {
margin-left: 0 !important;
}
}
.number {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
@ -1103,6 +1123,7 @@ export default {
font-size: 42rpx;
color: #BBFC5B;
}
.part1 {
width: 162rpx;
height: 70rpx;
@ -1119,12 +1140,14 @@ export default {
height: 580rpx;
position: relative;
}
.popup_bq {
display: flex;
flex-direction: column;
align-items: center;
height: 1040rpx;
position: relative;
img {
position: absolute;
width: 750rpx;
@ -1132,15 +1155,18 @@ export default {
top: -164rpx;
z-index: 0;
}
.bqlist {
margin-top: 70rpx;
z-index: 1;
margin-left: 80rpx;
.allmybqs {
flex-wrap: wrap;
width: 720rpx;
margin-top: 20rpx;
}
.allbqs {
display: flex;
overflow-y: scroll;
@ -1149,6 +1175,7 @@ export default {
width: 692rpx;
margin-top: 20rpx;
}
.bqpiece {
width: 210rpx;
height: 70rpx;
@ -1158,6 +1185,7 @@ export default {
justify-content: space-around;
align-items: center;
margin: 20rpx 20rpx 20rpx 0;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -1179,13 +1207,93 @@ export default {
::v-deep .u-search__content {
background: rgba($color: #FFFFFF, $alpha: 0.6) !important;
}
::v-deep .u-search__content__input {
background-color: rgba($color: #FFFFFF, $alpha: 0.6) !important;
}
::v-deep .u-icon__img {
width: 36rpx !important;
height: 36rpx !important;
}
}
}
.swiper_s {
width: 100%;
height: 100%;
}
.swiper-image {
width: 100%;
height: 100%;
border-radius: 36rpx;
object-fit: contain;
}
.text {
position: absolute;
/* 确保文字在模糊背景之上 */
z-index: 200;
/* 提高z-index以确保文字位于最上层 */
font-family: "YouSheBiaoTiHei";
font-weight: 400;
font-size: 38rpx;
color: #ffffff;
text-align: center;
width: 100%;
bottom: 70rpx;
transform: translateZ(0);
}
.fnon_tit {
position: absolute;
left: 5%;
z-index: 1;
width: 630rpx;
height: 117rpx;
line-height: 100rpx;
background: rgba(0, 0, 0, 0.24);
backdrop-filter: blur(4px);
border-radius: 36rpx;
bottom: 30rpx;
}
// .fnon_tit::before {
// content: "";
// position: absolute;
// top: 0;
// left: 0;
// right: 0;
// bottom: 0;
// backdrop-filter: blur(4px);
// /* */
// pointer-events: none;
// /* */
// border-radius: 36rpx;
// z-index: 0;
// /* */
// }
.dots {
position: absolute;
bottom: 50rpx;
width: 100%;
display: flex;
justify-content: center;
.dot {
background-color: #ffffff;
width: 30rpx;
height: 6rpx;
border-radius: 0;
margin-right: 10rpx;
&.active {
background: #0DAE11;
// transform: scale(0.9);
}
}
}
</style>