修改ui细节完善小程序页面,修改bug

This commit is contained in:
张凯 2025-04-30 18:10:51 +08:00
parent a32be3d657
commit 796cc0ff52
39 changed files with 2961 additions and 12287 deletions

21
App.vue
View File

@ -9,6 +9,15 @@
},
onShow: function() {
console.log('App Show')
wx.loadFontFace({
global: true,
family: 'YouSheBiaoTiHei',
source: 'url("https://naweigetetest2.hschool.com.cn/dyqc/YouSheBiaoTiHei.ttf")',
success: function(res) {
console.log('字体加载成功');
console.log(res);
}
})
},
onHide: function() {
console.log('App Hide')
@ -62,10 +71,12 @@
.uni-input-input {
font-size: 35rpx;
}
@font-face {
font-family: 'YouSheBiaoTiHei';
src: url('https://naweigetetest2.hschool.com.cn/dyqc/biaotihei.ttf') format('truetype');
}
// #ifdef MP-WEIXIN
// @font-face {
// font-family: 'YouSheBiaoTiHei';
// src: url('https://naweigetetest2.hschool.com.cn/dyqc/YouSheBiaoTiHei.ttf') format('truetype');
// }
// #endif
.swiper_s{
.uni-swiper-dots{
bottom: 40rpx;
@ -82,7 +93,7 @@
//
// #ifdef MP-WEIXIN
.wx-swiper-dots{
bottom: 40rpx;
bottom: 50rpx;
}
.wx-swiper-dot{
background-color: #ffffff ;

View File

@ -1,7 +1,7 @@
<template>
<view class="page-total">
<view :class="isOverall?'tab-list_ip':'tab-list'">
<view class="list" v-for="(item,index) in TabBarList" @click="onTabBar(item,index)" :key="index">
<view :class="isOverall ? 'tab-list_ip' : 'tab-list' ">
<view class="list" v-for="(item,index) in TabBarList" @click="onTabBar(item,index)" :key="index" >
<image :src="item.acImg" mode="widthFix" v-show="tabBarShow === index"></image>
<image :src="item.img" mode="widthFix" v-show="tabBarShow != index" ></image>
@ -25,7 +25,8 @@
},
data() {
return {
TabBarList: [{
TabBarList:[],
TabBarList1: [{
index: 0,
name: '首页',
img: '/static/index.png',
@ -50,10 +51,31 @@
acImg: '/static/my1.png',
},
],
TabBarList2: [{
index: 0,
name: '首页',
img: '/static/index.png',
acImg: '/static/index1.png',
},
{
index: 1,
name: '消息',
img: '/static/activity.png',
acImg: '/static/activity1.png',
},
{
index: 3,
name: '我的',
img: '/static/my.png',
acImg: '/static/my1.png',
},
],
codeheight: 0,
isOverall: 0,
phoneModel: '',
initFb:''
};
},
@ -66,6 +88,7 @@
},
mounted() {
this.getinit();
try {
const res = uni.getSystemInfoSync();
let that = this;
@ -100,41 +123,81 @@
},
methods: {
getinit() {
uni.$u.http.get('/api/index/init', {}).then(res => {
if (res.code == 1) {
this.initFb = res.data.base_info.miniapp_activity_swtich;
if (res.data.base_info.miniapp_activity_swtich == 1) {
this.TabBarList = this.TabBarList1;
} else {
this.TabBarList = this.TabBarList2;
}
}
}).catch(error => {
console.log(error);
});
},
/**
* @param {Object} item
* @param {Number} index
*/
onTabBar(item, index) {
this.$emit('tabBarShow', index);
console.log('index', index)
switch (index) {
case 0:
uni.switchTab({
url: '/pages/index/index'
})
break;
case 1:
uni.switchTab({
url: '/pages/center/index'
})
break;
case 2:
uni.switchTab({
url: '/pages/activity/index'
})
break;
case 3:
uni.switchTab({
url: '/pages/my/index'
})
break;
case 3:
uni.switchTab({
url: '/pages/activity/index'
})
break;
console.log('index', index);
if(this.initFb == 1){
switch (index) {
case 0:
uni.switchTab({
url: '/pages/index/index'
})
break;
case 1:
uni.switchTab({
url: '/pages/center/index'
})
break;
case 2:
uni.switchTab({
url: '/pages/activity/index'
})
break;
case 3:
uni.switchTab({
url: '/pages/my/index'
})
break;
default:
uni.switchTab({
url: '/pages/index/index'
})
}
}else{
switch (index) {
case 0:
uni.switchTab({
url: '/pages/index/index'
})
break;
case 1:
uni.switchTab({
url: '/pages/activity/index'
})
break;
case 2:
uni.switchTab({
url: '/pages/my/index'
})
break;
default:
uni.switchTab({
url: '/pages/index/index'
})
}
}
},
}

125
components/qrcodeSwiper.vue Normal file
View File

@ -0,0 +1,125 @@
<template>
<view class="carousel-container">
<!-- 轮播主体 -->
<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="aspectFill" />
</swiper-item>
</swiper>
<!-- 控制按钮 -->
<view class="nav-buttons">
<view class="btn prev" @click="switchSlide(-1)">
<image style="width: 50rpx;height: 50rpx;" src="/static/detail/left.png"></image>
</view>
<view class="btn next" @click="switchSlide(1)">
<image style="width: 50rpx;height: 50rpx;" src="/static/detail/right.png"></image>
</view>
</view>
<!-- 自定义指示器 -->
<!-- <view class="dots">
<text
v-for="(dot, idx) in images.length"
:key="idx"
:class="['dot', { active: currentIndex === idx }]"
/>
</view> -->
</view>
</template>
<script>
export default {
props: {
images: { type: Array, default: () => [] } //
},
data() {
return {
currentIndex: 0
};
},
methods: {
//
onSwiperChange(e) {
this.currentIndex = e.detail.current;
},
//
switchSlide(step) {
const total = this.images.length;
let newIndex = this.currentIndex + step;
if (newIndex < 0) newIndex = total - 1; //
else if (newIndex >= total) newIndex = 0; //
this.currentIndex = newIndex;
}
}
};
</script>
<style lang="scss" scoped>
.carousel-container {
position: relative;
height: 400rpx;
}
.swiper-box {
width: 100%;
height: 100%;
}
.swiper-item{
display: flex;
align-items: center;
justify-content: center;
}
.swiper-image {
width: 200rpx;
height: 200rpx;
border-radius: 16rpx;
}
.nav-buttons {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 100%;
display: flex;
justify-content: space-between;
.btn {
width: 60rpx;
height: 60rpx;
// border-radius: 50%;
// background: rgba(0,0,0,0.3);
color: white;
display: flex;
align-items: center;
justify-content: center;
}
}
.dots {
position: absolute;
bottom: 20rpx;
width: 100%;
display: flex;
justify-content: center;
.dot {
width: 12rpx;
height: 12rpx;
border-radius: 50%;
background: rgba(255,255,255,0.5);
margin: 0 8rpx;
&.active {
background: #007AFF;
transform: scale(1.2);
}
}
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,471 +0,0 @@
<template>
<view class="center-box">
<view class="box flex flex-column flex-start">
<view class="listBox flex flex-column flex-start">
<view class="list flex flex-column flex-start" v-for="(item,index) in list" :key="index"
@click="open(item.id)">
<image :src="item.detail.headimage" mode=""
style="width: 690rpx;height: 482rpx;border-radius: 10rpx;"></image>
<span class="title white-space">{{item.detail.title}}</span>
<view class="icon flex align-items">
<span class="white-space"
style="font-size: 24rpx;">{{'活动时间: ' + item.detail.start_time_text + '-' + item.detail.end_time_text}}</span>
</view>
<view class="icon flex align-items" style="margin-bottom: 8rpx;margin-top: 8rpx;width: 400rpx;">
<span class="white-space" style="font-size: 24rpx;color: #FF2323;">
<span style="color:#7A7A7A;" v-if="item.detail.feel == 1">活动费用:{{'' + '公益'}}</span>
<span style="color:#7A7A7A;" v-if="item.detail.feel == 2">活动费用:{{''+ item.price}}</span>
</span>
</view>
<view class="icon flex align-items" style="margin-top: 0rpx;margin-bottom: 32rpx;">
<span class="status" v-if="item.status == -3" style="color: #FF0000;">已取消</span>
<span class="status text-blue" v-if="item.status == 0">待支付</span>
<span class="status text-blue" v-if="item.status == 2">待审核</span>
<span class="status text-blue" v-if="item.status == 3">已预约</span>
<span class="status" v-if="item.status == 4" style="color: #FF0000;">售后中</span>
<span class="status" v-if="item.status == 5" style="color: #FF0000;">退款中</span>
<span class="status" v-if="item.status == 6" style="color: #FF0000;">已退款</span>
<span class="status" v-if="item.status == 9" style="color: #34DC12;">已完成</span>
</view>
<span class="Sign bg-blue flex justify-center align-items" v-if="item.status == 3"
@click.stop="QR(item.id)"> </span>
<span class="hui bg-hui flex justify-center align-items" v-if="item.status != 3"> </span>
</view>
</view>
</view>
<u-popup :show="show" mode="center" :zIndex="99999" :custom-style="popupStyle" closeable="true" @close="qrClose"
@open="qrOpen">
<view class="popup flex flex-column align-items">
<view class="pop-center flex">
<!-- <view class="left">
<image :src="qrcode.detail.headimage" mode="" style="width: 280rpx;height: 200rpx;"></image>
</view> -->
<view class="right flex flex-column">
<span class="title white-space">{{qrcode.detail.title}}</span>
<span class="line-short"></span>
<span class="hui" style="margin-bottom: 20rpx;">活动时间:{{' ' + qrcode.detail.start_time_text}} -
{{qrcode.detail.end_time_text}}</span>
<span class="hui">报名时间:{{' ' + qrcode.detail.sign_start_time_text}} -
{{qrcode.detail.sign_end_time_text}}</span>
<span class="hui" style="margin: 20rpx 0;">活动地址:{{' ' + qrcode.detail.address_detail}}</span>
<view class="flex align-items">
<span class="hui">{{'审核状态:' + ' '}}</span>
<span class="status" v-if="qrcode.status == -3" style="color: #FF0000;">已取消</span>
<span class="status text-blue" v-if="qrcode.status == 0">待支付</span>
<span class="status text-blue" v-if="qrcode.status == 2">待审核</span>
<span class="status text-blue" v-if="qrcode.status == 3">已预约</span>
<span class="status" v-if="qrcode.status == 4" style="color: #FF0000;">售后中</span>
<span class="status" v-if="qrcode.status == 5" style="color: #FF0000;">退款中</span>
<span class="status" v-if="qrcode.status == 6" style="color: #FF0000;">已退款</span>
<span class="status" v-if="qrcode.status == 9" style="color: #34DC12;">已完成</span>
</view>
</view>
</view>
<image :src="qrcode.codeimage" mode="" style="width: 376rpx;height: 376rpx;"></image>
<span style="margin: 24rpx 0 64rpx 0;">核销二维码</span>
</view>
</u-popup>
<u-loadmore :status="loadStatus" />
</view>
</template>
<script>
export default {
data() {
return {
page: 1,
limit: 10,
keywords: '',
list: [],
count: 0,
loadStatus: 'loading',
popupStyle: {
width: '690rpx',
margin: '0 auto', //
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
padding: '0',
borderRadius: '20rpx'
},
show: false,
qrcode: {}
};
},
onLoad() {
this.getList()
},
onReachBottom() {
if (this.list.length < this.count) {
this.page++;
this.getList();
}
},
methods: {
//
qrClose() {
this.show = false
// this.qrcode = ''
},
qrOpen() {
this.show = true
},
//
QR(id) {
uni.$u.http.get('/api/school.activity.order/detail', {
params: {
id: id
},
}).then(res => {
if (res.code == 1) {
this.qrcode = res.data.detail
this.show = true
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
},
getList() {
uni.$u.http.get('/api/school.activity.order/order_list', {
params: {
keywords: this.keywords,
page: this.page,
limit: this.limit,
status: '-3,0,2,3,4,5,6,9'
}
}).then(res => {
if (res.code == 1) {
this.count = res.data.count
this.list = [...this.list, ...res.data.list];
if (this.list.length >= res.data.count) {
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loading';
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
open(id) {
uni.navigateTo({
url: "/packageA/activity/exerciseDetaill?id=" + id
})
},
}
}
</script>
<style lang="scss" scoped>
.center-box {
width: 750rpx;
background: #F1F2F8;
min-height: 100vh;
}
.box {
width: 690rpx;
padding: 0 30rpx 0rpx 30rpx;
border-radius: 0px 0px 0px 0px;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.search {
margin-top: 27rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 78%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn {
width: 128rpx;
height: 64rpx;
background: #008CFF;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.listBox {
width: 690rpx;
margin-top: 10rpx;
.list {
margin-top: 32rpx;
position: relative;
background: #FFFFFF;
border-radius: 10rpx;
.title {
width: 642rpx;
margin-top: 32rpx;
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 32rpx;
color: #343434;
}
.icon {
width: 580rpx;
margin-top: 24rpx;
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
}
.Sign {
position: absolute;
bottom: 32rpx;
right: 54rpx;
width: 152rpx;
height: 56rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 32rpx;
color: #FFFFFF;
}
.hui {
position: absolute;
bottom: 32rpx;
right: 54rpx;
width: 152rpx;
height: 56rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 32rpx;
color: #FFFFFF;
}
}
}
.icon-size {
width: 32rpx;
height: 32rpx;
margin-right: 8rpx;
}
.status {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #008CFF;
}
.popup {
.header {
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #008CFF;
margin-top: 34rpx;
width: 690rpx;
}
.line-row {
width: 690rpx;
height: 1rpx;
background: #D9D9D9;
margin: 11rpx 0 31rpx 0;
}
.pop-center {
margin-top: 50rpx;
align-items: center;
width: 650rpx;
.left {
image {
border-radius: 12rpx;
}
}
.right {
// margin-left: 30rpx;
.title {
width: 650rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #343434;
}
.line-short {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 25rpx 0 25rpx 0;
}
.status {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
}
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
}
.popList {
justify-content: space-between;
width: 600rpx;
margin-top: 32rpx;
.hei {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #343434;
}
}
.pop-btn {
width: 690rpx;
margin-top: 62rpx;
justify-content: space-around;
.Cancel {
width: 306rpx;
height: 80rpx;
border-radius: 401rpx 401rpx 401rpx 401rpx;
border: 2rpx solid #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
}
.Confirm {
width: 306rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,509 +0,0 @@
<template>
<view class="box flex justify-center align-items flex-column">
<view class="search flex align-items">
<span class="dashed">
<image src="../../static/center/search.png" mode=""></image>
</span>
<span class="line-search"></span>
<input type="text" placeholder="搜索教师课程" v-model="keywords" class="input" placeholder-class="plasty" />
<span class="searchBtn" @click.stop="search()">搜索</span>
</view>
<view class="con-center flex flex-column justify-center align-items">
<view class="centerBox flex justify-start align-items flex-column" v-if="list.length != 0">
<view class="flex w-100 center flex-column" style="align-items: center;" v-for="(item,index) in list"
:key="index" @click.stop="openUrl('/pages/center/detail?id='+item.id)" >
<view class="flex" style="width: 690rpx;">
<image :src="item.headimage" mode="" style="width: 280rpx; height: 200rpx;border-radius: 12rpx;"></image>
<view class="flex flex-column rightBox">
<span class="name">{{item.title}}</span>
<!-- <span class="line-row"></span> -->
<span class="minge">{{'开始时间 ' + item.start_time_text}}</span>
<span class="minge">{{'结束时间 ' + item.end_time_text}}</span>
<span class="money" v-if="item.feel == 0">
<span>课程价格:</span>
{{'¥' + item.price}}</span>
<span class="charge" v-if="item.feel == 1" >
免费
</span>
</view>
</view>
<!-- <span class="error" v-if="item.auth_status == 2">审核失败:{{item.reason}}</span> -->
<span class="box-line"></span>
</view>
</view>
<view class="" v-else>
<u-empty
mode="list"
icon="http://cdn.uviewui.com/uview/empty/list.png"
>
</u-empty>
</view>
</view>
<u-loadmore :status="loadStatus" />
</view>
</template>
<script>
export default {
data() {
return {
size: 13,
page: 1,
limit: 10,
loadStatus: 'loading',
list: [],
last_page:0,
keywords:''
};
},
// onLoad() {
// this.getList();
// },
onShow() {
this.page = 1
this.list = []
this.getList();
},
onReachBottom() {
if (this.page < this.last_page) {
this.page++;
this.getList();
}
},
methods: {
openUrl(url) {
uni.navigateTo({
url: url
})
},
search(){
this.resetLists()
this.getList()
},
resetLists(){
this.page = 1;
this.list = [];
this.loadStatus = 'loading'
},
//
getList() {
// if (this.loadStatus === 'nomore') return;
uni.$u.http.get('/api/school/classes/classes_list', {
params: {
page: this.page,
limit: this.limit,
order: 'normal',
keywords:this.keywords,
teacher_id:this.id,
is_expire: 2
}
}).then(res => {
if (res.code == 1) {
this.last_page = res.data.list.last_page
this.list = [...this.list, ...res.data.list.data];
if (this.list.length >= res.data.list.total) {
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loading';
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
this.loadStatus = 'loading';
}
}).catch(error => {
console.error('请求失败', error);
this.loadStatus = 'loading';
});
},
}
}
</script>
<style lang="scss" scoped>
.box {
background: linear-gradient(to bottom, #F1F2F8 0%, #FFFFFF 5%, #FFFFFF 100%);
.con-center {
width: 690rpx;
margin-top: 25rpx;
.centerBack {
position: fixed;
width: 100%;
height: 100%;
top: 25rpx;
left: 0;
z-index: -1;
}
.header {
height: 50rpx;
margin-top: 37rpx;
.s-header {
width: 104rpx;
height: 50rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9E9E9E;
line-height: 26rpx;
}
.s-header.selected {
width: 104rpx;
height: 50rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FFFFFF;
line-height: 26rpx;
}
}
}
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.line {
margin-top: 12rpx;
width: 690rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.centerBox {
width: 690rpx;
.error {
width: 100%;
word-break: break-all;
}
.box-line {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin-top: 52rpx;
}
.center {
margin: 32rpx 0 32rpx 0;
}
.rightBox {
margin-left: 24rpx;
width: 378rpx;
.line-row {
width: 382rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
margin: 14rpx 0 6rpx 0;
}
.name {
font-weight: 800;
font-size: 36rpx;
color: #343434;
margin-bottom: 24rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
/* 设置行数 */
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
/* 防止单词被截断 */
}
.minge {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
margin-bottom: 14rpx;
}
.pass {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #34DC12;
}
.full {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF2323;
}
.money {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF2323;
span {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.Cancel {
width: 138rpx;
height: 48rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
background: #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
}
.make {
width: 138rpx;
height: 48rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-left: 16rpx;
}
.QR {
width: 138rpx;
height: 48rpx;
background: #4974FF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
font-weight: 400;
font-size: 26rpx;
color: #EAEAEA;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-top: 50rpx;
}
}
}
.charge {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FF2323;
line-height: 32rpx;
}
.search {
margin-top: 24rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 100%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn{
width: 128rpx;
height: 64rpx;
background: #008CFF;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.popup {
.header {
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #008CFF;
margin-top: 34rpx;
width: 690rpx;
}
.line-row {
width: 690rpx;
height: 1rpx;
background: #D9D9D9;
margin: 11rpx 0 31rpx 0;
}
.pop-center {
.left {}
.right {
margin-left: 30rpx;
.title {
width: 340rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
}
}
}
.line-short {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
}
.popList {
justify-content: space-between;
width: 600rpx;
margin-top: 32rpx;
.hei {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #343434;
}
}
.pop-btn {
width: 690rpx;
margin-top: 62rpx;
justify-content: space-around;
.Cancel {
width: 306rpx;
height: 80rpx;
border-radius: 401rpx 401rpx 401rpx 401rpx;
border: 2rpx solid #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
}
.Confirm {
width: 306rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
}
}
}
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
}
</style>

View File

@ -1,61 +0,0 @@
<template>
<view class="box">
<!-- <image src="https://testy.hschool.com.cn//uploads/20241128/50fba75792a2d6478eeedcd0e2373772.png" mode="widthFix"
class="backImg"></image> -->
<rich-text :nodes="Negotiate"></rich-text>
</view>
</template>
<script>
export default {
data() {
return {
Negotiate:''
};
},
onLoad() {
this.getAgreement()
},
methods:{
//
getAgreement() {
uni.$u.http.get('/api/index/agreement', {
params: {}
}).then(res => {
if (res.code == 1) {
this.Negotiate = (res.data.about_us).replace(/\<img/gi,
'<img style="max-width:100%;height:auto" ');
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
}
}
</script>
<style lang="scss">
.box {
width: 750rpx;
overflow-y: auto;
/* 允许垂直滚动 */
.backImg {
width: 100%;
/* 图片宽度占满容器 */
height: auto;
/* 图片高度自适应 */
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,421 +0,0 @@
<template>
<view class="box flex flex-column flex-start align-items">
<view class="con-box flex flex-column flex-start align-items">
<view class="top flex ">
<image :src="detail.detail.headimage" mode=""
style="width: 280rpx;height: 200rpx;border-radius: 12rpx;"></image>
<view class="rightBox flex flex-column flex-start">
<span class="name">{{detail.detail.title}}</span>
<span class="minge">活动规格</span>
<span class="minge" style="font-weight: 800;">{{detail.orderitem.name}}</span>
<view class="flex align-items" style="width: 340rpx;">
<span class="minge">{{detail.orderitem.limit_num}}</span>
<span class="minge">{{detail.orderitem.age}}</span>
<span class="minge" v-if="detail.orderitem.sex == 3">男女不限</span>
<span class="minge" v-else>{{detail.orderitem.sex == 1 ? "" : ""}}</span>
</view>
<!-- <span class="minge" v-if="detail.feel == 0">课程价格:
<span style="color: #FF2323;font-weight: 800;">{{'¥' + detail.price}}</span>
</span>
<span class="minge" v-if="detail.feel == 1">
<span style="color: #FF2323;font-weight: 800;">免费</span>
</span> -->
</view>
</view>
<span class="line"></span>
<view class="con-center flex flex-start flex-column align-items ">
<view class="top flex flex-start" style="padding: 0;">
<image :src="detail.user.avatar" mode=""
style="width: 120rpx;height: 120rpx;border-radius: 100%;margin-right: 18rpx;">
</image>
<view class="flex flex-column " style="width: 550rpx;">
<span class="name">{{detail.user.nickname}}</span>
<span class="minge"> {{'姓 名:' + detail.user.realname}}</span>
<span class="minge flex align-items white-space" @click="callPhone(detail.user.mobile)">
<span class="white-space">{{'联系电话:' + detail.user.mobile}}</span>
<image src="../../static/tel.png" mode="" style="width: 36rpx;height: 36rpx;"></image>
</span>
<span class="minge">{{'订 单 号:' + detail.order_no}}</span>
<span class="minge">{{'购买时间:' + detail.user.realname || detail.user.nickname}}</span>
<span class="minge">{{'姓 名:' + detail.paytime_text}}</span>
</view>
</view>
<span class="line-row"></span>
<view class="center flex flex-column flex-start">
<span class="detail">活动介绍</span>
<span class="minge">{{'活动时间:' + detail.detail.start_time_text}} -
{{detail.detail.end_time_text}}</span>
<span class="minge">{{'报名时间:' + detail.detail.sign_start_time_text}} -
{{detail.detail.sign_end_time_text}}</span>
<span class="minge">
报名费用:
<span
class="price">{{ parseFloat(detail.orderitem.price) == 0 ? '公益' : detail.orderitem.price }}</span>
</span>
<span class="minge">{{'活动人数:' + detail.orderitem.limit_num}}</span>
<span class="minge flex align-items "
@click.stop="toMap(detail.detail.latitude,detail.detail.longitude,detail.detail.address_detail)">
<span class="white-space">{{'活动地址:' + detail.detail.address_detail}}</span>
<image src="../../static/center/address.png" mode=""
style="width: 36rpx;height: 36rpx; margin-left: 12rpx;"></image>
</span>
</view>
</view>
</view>
<view class="footer flex justify-center center align-items">
<span class="flex justify-center center align-items" @click.stop="submit">确认核销</span>
</view>
</view>
</template>
<script>
export default {
data() {
return {
detail: {},
order_id: '',
type: '',
vcode: '',
};
},
filters: {
formatDateTime(timestamp) {
if (!timestamp) return '';
const date = new Date(timestamp * 1000);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
},
onLoad(option) {
console.log('option', option);
if (option.res) {
//
const decodedRes = decodeURIComponent(option.res);
//
const params = this.parseQueryString(decodedRes);
// data
this.order_id = params.order_id;
this.type = params.type;
this.vcode = params.vcode;
}
},
onShow() {
this.page = 1
this.list = []
this.getDetail(this.order_id)
},
methods: {
submit() {
uni.$u.http.post('/api/school.worker.activity.order/verification', {
order_no: this.detail.order_no
}).then(res => {
if (res.code == 1) {
uni.showToast({
title: '核销完成',
icon: 'none',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.navigateBack(1)
}, 2000);
}
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
}).catch(error => {});
},
parseQueryString(queryString) {
const params = {};
const pairs = queryString.split('&');
for (const pair of pairs) {
const [key, value] = pair.split('=');
params[key] = value;
}
return params;
},
getDetail(id) {
uni.$u.http.get('/api/school.worker.activity.order/detail', {
params: {
id: id,
}
}).then(res => {
if (res.code == 1) {
this.detail = res.data.detail
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.navigateBack(1)
}, 2000);
}
})
}
}).catch(error => {});
},
//
toMap(latitude, longitude, name) {
uni.openLocation({
latitude: parseFloat(latitude),
longitude: parseFloat(longitude),
name: name,
success: function() {
console.log('success');
}
});
},
callPhone(phone) {
uni.makePhoneCall({
phoneNumber: phone
})
}
}
}
</script>
<style lang="scss" scoped>
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.line {
margin-top: 12rpx;
width: 690rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.space-between {
justify-content: space-between;
}
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
.minge {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
margin-top: 8rpx;
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.box {
width: 750rpx;
background: #F1F2F8;
height: 100vh;
.con-box {
background: #FFFFFF;
}
.con-center {
width: 690rpx;
margin-bottom: 42rpx;
.name {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #181818;
}
.line-row {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 33rpx 0 23rpx 0;
}
.center {
width: 642rpx;
.detail {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 26rpx;
color: #008CFF;
margin-bottom: 6rpx;
}
.price {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #FF0000;
}
.minge {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
margin-top: 18rpx;
}
}
}
.top {
width: 690rpx;
padding: 32rpx 30rpx;
background: #FFFFFF;
.rightBox {
margin-left: 32rpx;
width: 378rpx;
.line-row {
width: 382rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
margin: 14rpx 0 6rpx 0;
}
.price {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FF2323;
}
.name {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
/* 设置行数 */
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
/* 防止单词被截断 */
}
.money {
font-weight: 800;
font-size: 24rpx;
color: #FF2323;
span {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
}
}
.centerBack {
position: fixed;
width: 100%;
height: 100%;
top: 25rpx;
left: 0;
z-index: -1;
}
}
.line {
width: 690rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 37rpx 0;
}
.footer {
width: 750rpx;
height: 122rpx;
position: fixed;
bottom: 0;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 12rpx 0rpx rgba(111, 190, 255, 0.1);
span {
width: 642rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
}
}
</style>

View File

@ -11,7 +11,7 @@
</span>
</view>
<view style="min-height: 100vh;">
<view style="min-height: 100vh;margin-top: 80rpx;">
<view class="flex hdkuai flex-column" v-for="(item,index) in list" :key="index">
<view style="margin:0 30rpx;">
@ -179,7 +179,7 @@
sortStyle: ['#ff557f', '#3f3f3f'],
headers: [
{
status: '',
status: '-3,0,2,3,4,5,6,7,9',
text: '全部'
},
{
@ -221,7 +221,7 @@
this.selected = option.status
this.getList(option.status);
} else {
this.getList('0');
this.getList('-3,0,2,3,4,5,6,7,9');
}
},
@ -413,6 +413,8 @@
// margin-top: 10rpx;
-webkit-overflow-scrolling: touch;
font-family: PingFang SC, PingFang SC;
position: fixed;
top: 0;
.s-header {
display: flex;
@ -425,6 +427,7 @@
color: #9E9E9E;
line-height: 26rpx;
flex: 0 0 auto;
position: relative;
}
.s-header.selected {
@ -437,7 +440,8 @@
line-height: 28rpx;
}
.lines{
padding-top: 16rpx;
position: absolute;
bottom: 0;
width: 44rpx;
}
.lines.selected{

View File

@ -1,718 +0,0 @@
<template>
<view class="box flex justify-center align-items flex-column">
<view class="con-center flex flex-column justify-center align-items">
<view class="search flex align-items" style="width: 99%;">
<span class="dashed flex align-items justify-center">
<image src="../../static/center/search.png" mode=""></image>
</span>
<span class="line-search"></span>
<input type="text" placeholder="搜索您的课程" v-model="keywords" class="input" placeholder-class="plasty" />
<span class="searchBtn" @click.stop="search()">搜索</span>
</view>
<view class="header flex align-items w-100" style="justify-content: space-between;">
<span class="s-header flex justify-center align-items" v-for="(item,index) in headers" :key="index"
:class="{ selected: headerSelected(item.status) }"
@click="selectheader(item.status)">{{item.text}}</span>
</view>
<span class="line"></span>
<!-- <view class="sort flex" style="width: 100%;padding: 20rpx 0;">
<JQ-orderBy @switchSort="switchSort" :size="size"></JQ-orderBy>
</view> -->
<view class="centerBox flex justify-start align-items flex-column">
<view class="flex w-100 center flex-column" style="align-items: center;" v-for="(item,index) in list"
:key="index">
<view class="flex w-100">
<image :src="item.detail.headimage" mode="" style="width: 280rpx; height: 200rpx;border-radius: 12rpx;"
@click="toDetail(item.shop_id,item.id,item.classes_lib_id,item.order_no)"></image>
<view class="flex flex-column rightBox">
<view class="flex flex-column"
@click="toDetail(item.shop_id,item.id,item.classes_lib_id,item.order_no)">
<span class="name">{{item.detail.title}}</span>
<!-- <span class="line-row"></span> -->
<span class="minge" v-if="selected == 0">课程名额 {{ Number(item.detail.verification_num )}}
/
{{item.detail.limit_num}}</span>
<span class="minge" v-if="selected == 0">剩余时间:24:00:00</span>
<span class="minge"
v-if="selected == 3 || selected == 6 || selected == 9">{{'购买时间 ' + item.paytime_text.slice(0,10)}}</span>
<span class="minge" v-if="selected == 2">{{'预约时间 ' + item.make}}</span>
<span class="minge" v-if="selected == 3">{{'课时 ' + item.detail.use_num + "/" + item.detail.classes_num}}</span>
<span class="minge" v-if="selected == 9">{{'核销时间 ' + item.finishtime_text.slice(0,10)}}</span>
<span class="minge" v-if="selected == -3">{{'取消时间 ' + item.canceltime}}</span>
<span class="minge" v-if="selected == 6">{{'退款时间 ' + item.refundtime}}</span>
<span class="money" v-if="item.payprice != 0">
<span>课程价格:</span>
{{'¥' + item.payprice}}</span>
<!-- <span class="charge" v-if="item.payprice == 0" >
免费
</span> -->
<span class="charge" v-if="item.payprice == 0" >
</span>
</view>
<view class="flex align-items" style="justify-content: flex-end;margin-top: 12rpx;">
<span class="Cancel" v-if="selected == 0" @click="Cancel(item.order_no)">取消订单</span>
<span class="make" v-if="selected == 0"
@click="toPay(item.shop_id,item.id,item.classes_lib_id,item.order_no,1)">去付款</span>
<span class="Cancel" v-if="selected == 3 && item.detail.feel == 0" style="width: 100rpx;"
@click="service(item.id)">售后</span>
<span class="Cancel" v-if="selected == 3 && item.detail.feel == 1" style="width: 100rpx;"
@click="service(item.id)">取消</span>
<span class="Cancel" v-if="selected == 3" @click="QR(item.id)"
style="width: 100rpx; margin-left: 24rpx;">核销</span>
<span class="make" v-if="selected == 3"
@click="toMake(item.shop_id,item.id,item.classes_lib_id,2)"
style="width: 100rpx;">预约</span>
<span class="Cancel" v-if="selected == 9">已完成</span>
<!-- <span class="make" v-if="selected == 6 || selected == -3 || selected == 9"
@click="againBuy(item.classes_lib_id)">再次购买</span> -->
<!-- <span class="make" v-if="selected == 6 || selected == -3 || selected == 9"
@click.stop="toDetail(item.shop_id,item.id,item.classes_lib_id,item.order_no)">再次购买</span> -->
<!-- <span class="QR" v-if="selected == 2" >二维码</span> -->
</view>
</view>
</view>
<span class="box-line"></span>
</view>
</view>
</view>
<u-popup :show="show" mode="center" :zIndex="99999" :custom-style="popupStyle" closeable="true" @close="close"
@open="open">
<view class="popup flex flex-column align-items">
<view class="pop-center flex">
<view class="left">
<image :src="qrcode.detail.headimage" mode="" style="width: 280rpx;height: 200rpx;"></image>
</view>
<view class="right flex flex-column">
<span class="title white-space">{{qrcode.detail.title}}</span>
<span class="hui"
style="margin: 16rpx 0 6rpx 0;">课时:{{qrcode.detail.verification_num}}/{{qrcode.detail.limit_num}}</span>
<!-- <span class="hui">日期:{{qrcode.detail.classes_date_text}}</span> -->
<!-- <span class="hui" style="margin: 6rpx 0 6rpx 0;">时间:{{qrcode.detail.classes_time_text}}</span> -->
<span class="hui" v-if="qrcode && qrcode.detail" style="margin-top: 6rpx;">开始时间:{{ formatTimestamp(qrcode.detail.start_time) }}</span>
<span class="hui" v-if="qrcode && qrcode.detail" style="margin: 6rpx 0 6rpx 0;">结束时间:{{ formatTimestamp(qrcode.detail.end_time) }}</span>
<span class="hui">地址:{{qrcode.detail.address_detail}}</span>
</view>
</view>
<span class="line-short"></span>
<image :src="qrcode.codeimage" mode="" style="width: 376rpx;height: 376rpx;"></image>
<span style="margin: 24rpx 0 64rpx 0;">核销二维码</span>
</view>
</u-popup>
<u-loadmore :status="loadStatus" />
</view>
</template>
<script>
export default {
data() {
return {
popupStyle: {
width: '690rpx',
margin: '0 auto', //
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
padding: '0',
borderRadius: '20rpx'
},
sortList: [{
text: '按照价格排序',
value: ['acs', 'desc'],
}, {
text: '按照编号排序',
value: ['acs', 'desc'],
}],
size: 13,
sortStyle: ['#ff557f', '#3f3f3f'],
headers: [{
status: '0',
text: '待付款'
},
{
status: '3',
text: '进行中'
},
{
status: '9',
text: '已完成'
},
{
status: '-3',
text: '已取消'
},
{
status: '6',
text: '已退款'
}
],
selected: '0',
page: 1,
limit: 10,
loadStatus: 'loading',
keywords: '',
list: [],
show: false,
qrcode: '',
count:0
};
},
onLoad(option) {
this.list = []
this.page = 1
if (option?.status) {
this.selected = option.status
this.getList(option.status);
} else {
this.getList('0');
}
},
onReachBottom() {
if (this.list.length < this.count) {
this.page++;
this.getList(this.selected);
}
},
methods: {
formatTimestamp(timestamp) {
const date = new Date(timestamp * 1000); // 101000
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
//
close() {
this.show = false
// this.qrcode = ''
},
open() {
this.show = true
},
againBuy(id) {
uni.navigateTo({
url: "/pages/center/detail?id=" + id
})
},
//
Cancel(order_no) {
console.log(order_no)
uni.$u.http.post('/api/school/order/cancel', {
order_no: order_no
}).then(res => {
if (res.code == 1) {
this.list = []
this.getList(0);
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
},
//
toMake(id, orderId, classes_lib_id, type) {
uni.navigateTo({
// url: "/pages/center/applyDetail?id=" + id + "&orderId=" + orderId + "&type=" + 2
url: "/pages/center/orderDetail?id=" + id + "&orderId=" + orderId + "&type=" + 2 +
"&classes_lib_id=" + classes_lib_id
})
},
toDetail(id, orderId, classes_lib_id, order_no) {
let type = null;
if (this.selected == 0) {
type = 1;
} else if (this.selected == 3) {
type = 2;
} else if (this.selected == 9) {
type = 9;
} else if (this.selected == -3) {
type = -3;
} else if (this.selected == 6) {
type = 6;
} else {
type = 0;
}
uni.navigateTo({
url: "/pages/center/orderDetail?id=" + id + "&orderId=" + orderId + "&order_no=" + order_no +
"&type=" + type + "&classes_lib_id=" + classes_lib_id
})
},
//
toPay(id, orderId, classes_lib_id, order_no, type) {
uni.navigateTo({
url: "/pages/center/orderDetail?id=" + id + "&orderId=" + orderId + "&order_no=" + order_no +
"&type=" + 1 + "&classes_lib_id=" + classes_lib_id
})
},
//
service(id) {
uni.navigateTo({
url: "/pages/afterSales/index?id=" + id
})
},
//
QR(id) {
uni.$u.http.get('/api/school/order/detail', {
params: {
id: id
},
}).then(res => {
if (res.code == 1) {
this.qrcode = res.data.detail
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
this.show = true
},
switchSort(index, value) {
console.log(index, value);
},
//
search() {
const that = this
that.page = 1
that.list = []
this.getList(this.selected)
},
//
getList(status) {
// if (this.loadStatus === 'nomore') return;
uni.$u.http.get('/api/school/order/order_list', {
params: {
keywords: this.keywords,
page: this.page,
limit: this.limit,
status: status,
}
}).then(res => {
if (res.code == 1) {
this.count = res.data.count
this.list = [...this.list, ...res.data.list];
if (this.list.length >= res.data.count) {
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loading';
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
this.loadStatus = 'loading';
}
}).catch(error => {
console.error('请求失败', error);
this.loadStatus = 'loading';
});
},
selectheader(status) {
const that = this
that.selected = status;
console.log(status, '')
that.page = 1
that.list = []
that.getList(status)
},
headerSelected(status) {
return this.selected === status;
},
}
}
</script>
<style lang="scss" scoped>
.box {
background: linear-gradient(to bottom, #F1F2F8 0%, #FFFFFF 5%, #FFFFFF 100%);
.con-center {
width: 690rpx;
// margin-top: 25rpx;
.centerBack {
position: fixed;
width: 100%;
height: 100%;
top: 25rpx;
left: 0;
z-index: -1;
}
.header {
height: 50rpx;
margin-top: 37rpx;
.s-header {
width: 104rpx;
height: 50rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9E9E9E;
line-height: 26rpx;
}
.s-header.selected {
width: 104rpx;
height: 50rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FFFFFF;
line-height: 26rpx;
}
}
}
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.line {
margin-top: 12rpx;
width: 690rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.centerBox {
width: 690rpx;
.box-line {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin-top: 24rpx;
}
.center {
margin: 32rpx 0 32rpx 0;
}
.rightBox {
margin-left: 32rpx;
width: 50%;
.line-row {
width: 382rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
margin: 14rpx 0 6rpx 0;
}
.name {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
/* 设置行数 */
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
margin-bottom: 24rpx;
/* 防止单词被截断 */
}
.minge {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
margin-bottom: 8rpx;
}
.money {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF2323;
span {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.Cancel {
width: 138rpx;
height: 48rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 2rpx solid #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #008CFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
}
.make {
width: 138rpx;
height: 48rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-left: 24rpx;
}
.QR {
width: 138rpx;
height: 48rpx;
background: #4974FF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
font-weight: 400;
font-size: 26rpx;
color: #EAEAEA;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-top: 50rpx;
}
}
}
.charge {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FF2323;
line-height: 32rpx;
}
.search {
margin-top: 24rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 100%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn {
width: 128rpx;
height: 64rpx;
background: #008CFF;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.popup {
.header {
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #008CFF;
margin-top: 34rpx;
width: 690rpx;
}
.line-row {
width: 690rpx;
height: 1rpx;
background: #D9D9D9;
margin: 11rpx 0 31rpx 0;
}
.pop-center {
margin-top: 50rpx;
align-items: center;
width: 650rpx;
.left {
image {
border-radius: 12rpx;
}
}
.right {
margin-left: 30rpx;
.title {
width: 340rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
}
}
}
.line-short {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
margin: 24rpx 0;
}
.popList {
justify-content: space-between;
width: 600rpx;
margin-top: 32rpx;
.hei {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #343434;
}
}
.pop-btn {
width: 690rpx;
margin-top: 62rpx;
justify-content: space-around;
.Cancel {
width: 306rpx;
height: 80rpx;
border-radius: 401rpx 401rpx 401rpx 401rpx;
border: 2rpx solid #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
}
.Confirm {
width: 306rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
}
}
}
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
}
</style>

View File

@ -1,6 +1,7 @@
<template>
<view class="box flex justify-center align-items flex-column">
<view class="con-center flex flex-column justify-center align-items">
<view class="tabs align-items">
<span
class="s-header flex flex-column"
@ -129,9 +130,14 @@
<span class="part flex justify-center align-items" v-if="item.auth_status != 2" @click="detail(item.id)"> 详情 </span>
</view>
</view>
<view class="flex justify-center align-items" v-if="hotList.length == 0" style="margin-top: 150rpx;">
<span class="no-data">暂无数据</span>
</view>
<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>
<view class="tofb" @click="tofb">前往发布</view>
</view>
</view>
</view>
</view>
@ -265,6 +271,11 @@ export default {
url: "/pages/center/detailSys?id=" + id,
});
},
tofb() {
uni.switchTab({
url: '/pages/center/index',
});
},
//
dateWeeks(e) {
return dateWeek(e);
@ -544,6 +555,9 @@ export default {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
font-family: PingFang SC, PingFang SC;
position: fixed;
top: 0;
z-index: 2;
.s-header {
display: flex;
@ -556,6 +570,7 @@ export default {
color: #9e9e9e;
line-height: 26rpx;
flex: 0 0 auto;
position: relative;
}
.s-header.selected {
@ -568,7 +583,8 @@ export default {
line-height: 28rpx;
}
.lines {
padding-top: 16rpx;
position: absolute;
bottom: 0;
width: 44rpx;
}
.lines.selected {
@ -579,6 +595,8 @@ export default {
width: 100%;
margin-left: 30rpx;
margin-top: 30rpx;
position: fixed;
top: 80rpx;
.span_s{
width: 134rpx;
height: 60rpx;
@ -921,9 +939,9 @@ export default {
/* 使用省略号表示被截断的文本 */
}
.hot {
// margin-top: 30rpx;
margin-bottom: 70rpx;
min-height: 100vh;
margin-top: 80rpx;
margin-bottom: 70rpx;
min-height: 100vh;
.hot-top {
// padding-bottom: 12rpx;
@ -1132,4 +1150,18 @@ export default {
font-size: 42rpx;
color: #323232;
}
.tofb{
margin-top: 50rpx;
width: 280rpx;
height: 70rpx;
background: #323232;
border-radius: 198rpx;
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 500;
font-size: 32rpx;
color: #BBFC5B;
display: flex;
align-items: center;
justify-content: center;
}
</style>

View File

@ -12,7 +12,7 @@
<span class="first-name">{{detail.title}}</span>
</view>
<view class="first-image flex align-items" style="margin-top: 25rpx;">
<image :src="detailAny.user.avatar" mode="" style="width: 36rpx;height: 36rpx;"></image>
<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>
</view>
@ -32,11 +32,11 @@
<span class="first-image flex align-items space-between"
style="width: 100%;"
@click.stop="toMap(detail.latitude, detail.longitude, detail.address_detail)">
<view>
<view class="flex">
<image src="/static/center/address.png" mode="" class="icon-size"></image>
<span>{{detail.address_detail}}</span>
</view>
<image src="/static/detail/daohang.png" class="icon-size" style="width: 50rpx; height: 50rpx;"></image>
<image src="/static/detail/daohang.png" class="icon-size" style="width: 48rpx; height: 48rpx;"></image>
</span>
</view>
@ -50,21 +50,13 @@
</span>
</view>
<view class="third-center">
<!-- <u-swiper
:list="detail.ordercode"
previousMargin="30"
nextMargin="30"
keyName="miniurl"
circular
:autoplay="false"
radius="5"
bgColor="#ffffff"
></u-swiper> -->
<l-painter>
<l-painter-view css="margin-top: 24rpx;">
<l-painter-qrcode css="width: 200rpx; height: 200rpx;margin:0 auto" :text="qrcodesurl"></l-painter-qrcode>
<qrcode-swiper :images="['/static/index/about.png','/static/index/about.png','/static/index/about.png']"> </qrcode-swiper>
<l-painter v-for="qrcodesurl in detailAny.ordercode">
<l-painter-view css="margin-top: 20rpx;margin-bottom: 20rpx;">
<l-painter-qrcode css="width: 200rpx; height: 200rpx;margin:0 auto;" :text="qrcodesurl.miniurl"></l-painter-qrcode>
</l-painter-view>
</l-painter>
</view>
</view>
@ -97,11 +89,11 @@
</view>
</view>
<!-- v-if="detailAny.feel == 0" -->
<view class="footer flex align-items flex-column" style="justify-content: space-between;" >
<view class="footer flex align-items flex-column" style="justify-content: space-between;">
<view class="footer-right flex justify-center align-items">
<span @click="pament()"> 申请售后 </span>
<view class="footer-right flex justify-center align-items" >
<span @click="service(detailAny.id)"> 申请售后 </span>
</view>
</view>
@ -219,10 +211,14 @@
<script>
import dayjs from 'dayjs';
import qrcodeSwiper from "components/qrcodeSwiper.vue" // tabBar
import {
dateWeek
} from '../../utils/dateFormat'
export default {
components: {
qrcodeSwiper
},
computed: {
// formattedTitle() {
// if (this.detail.title.length > 9) {
@ -296,7 +292,7 @@
titleStyle: {
color: '#FFFFFF'
},
qrcodesurl:'' //
// qrcodesurl:'' //
};
},
@ -483,7 +479,7 @@
}).then(res => {
if (res.code == 1) {
this.detail = res.data.detail.detail;
this.qrcodesurl = res.data.detail.ordercode[0].miniurl;
// this.qrcodesurl = res.data.detail.ordercode[0].miniurl;
this.detailAny = res.data.detail;
} else {
uni.showToast({
@ -733,7 +729,12 @@
phoneNumber: phone
})
},
//
service(id) {
uni.navigateTo({
url: `/pages/afterSales/index?id=${id}`
})
},
//
cancel() {
this.selectedTime = null

View File

@ -582,7 +582,7 @@
flex-direction: column;
align-items: center;
justify-content: center;
margin: 0 10rpx;
img {
width: 150rpx;
height: 150rpx;

View File

@ -131,46 +131,17 @@
"style": {
"navigationBarTitleText": "隐私政策"
}
},
{
"path": "pages/activity/stationStemys",
"style": {
"navigationBarTitleText": "系统消息"
}
}
],
"subPackages": [{
"root": "packageA",
"pages": [{
"path": "activity/activityDetaill",
"style": {
"navigationBarTitleText": "活动详情"
}
},
{
"path": "activity/exercise",
"style": {
"navigationBarTitleText": "我的活动"
}
},
{
"path": "activity/acList",
"style": {
"navigationBarTitleText": "活动管理"
}
},
{
"path": "activity/exerciseDetaill",
"style": {
"navigationBarTitleText": "活动详情"
}
},
{
"path": "index/About",
"style": {
"navigationBarTitleText": "关于我们"
}
},
{
"path": "index/previousDetail",
"style": {
"navigationBarTitleText": "课程详情"
}
},
"pages": [
{
"path": "my/person-detail",
"style": {
@ -247,7 +218,7 @@
{
"path": "my/stationDetail",
"style": {
"navigationBarTitleText": "消息通知"
"navigationBarTitleText": "消息详情"
}
},
{
@ -314,12 +285,7 @@
"navigationBarTitleText": "订单管理"
}
},
{
"path": "center/teacherClass",
"style": {
"navigationBarTitleText": "全部课程"
}
},
{
"path": "my/refund",
"style": {

View File

@ -1,131 +1,176 @@
<template>
<view class="center-box">
<view class="box flex flex-column flex-start">
<!-- <view class="search flex align-items" style="width: 99%;">
<span class="dashed">
<image src="../../static/center/search.png" mode=""></image>
</span>
<span class="line-search"></span>
<input type="text" placeholder="搜索活动" v-model="keywords" class="input" placeholder-class="plasty" />
<span class="searchBtn bg-blue" @click.stop="search()">搜索</span>
</view> -->
<view class="box flex flex-column align-items">
<view class="title_logo">
<image
src="/static/index/xiaoxilogo.png"
mode=""
style="width: 237rpx; height: 56rpx;"
></image>
</view>
<view class="box_center flex flex-column align-items">
<view class="top flex align-items justify-between" @click="toSystem">
<view class="flex align-items">
<image src="/static/index/xitongxiaoxi.png" mode="" style="width: 70rpx;height: 70rpx;margin-right: 20rpx;"></image>
<span class="xtxiaoxi">系统消息</span>
</view>
<view class="flex align-items">
<span class="xtNum">{{ numbers }}</span>
<image src="/static/detail/zidong.png" mode="" style="width: 20rpx;height: 20rpx;margin-left: 20rpx;" ></image>
</view>
</view>
<span class="lines"></span>
<view class="center flex flex-column">
<!-- <span class="hui" v-if="unread.length != 0">未读消息</span> -->
<!-- @click="detail(item.id,item.params)" -->
<view class="list flex flex-column" v-for="(item,index) in alllist" :key="index">
<u-navbar title="消息" :border="false" :placeholder="true" :autoBack="false" :is-back="false" :leftIcon="none">
<!-- <view class="" slot="center">
<u-search class="u-search" v-model="keywords" placeholder="请输入搜索内容" :showAction="false"
@change="search()"></u-search>
</view> -->
</u-navbar>
<view class="flex align-items left" v-if="item.params.images.length > 0">
<image :src="item.params.images[0]" mode="" style="width: 80rpx;height: 80rpx;border-radius: 8rpx;"></image>
<span class="white-space title1">{{ item.params.title }}</span>
</view>
<view class="flex flex-column flex-start align-items" style="margin-top: 300rpx;">
<view class="right flex flex-column">
<view class="flex align-items justify-between" style="margin-top: 30rpx;">
<span class="white-space title">{{item.title}}</span>
<span class="time">{{item.createtime_text}}</span>
</view>
<span class="white-space text">{{item.desc}}</span>
</view>
<!-- <span class="jiao">
<u-badge :isDot="true" type="success"></u-badge>
</span> -->
</view>
</view>
<!-- <u-loadmore :status="loadStatus" /> -->
<view class="flex flex-column flex-start align-items" v-if="alllist.length == 0" style="margin-top: 100rpx;">
<image src="/static/message/message.png" mode="" style="width: 256rpx;height: 240rpx;">
</image>
<view>暂无活动消息~</view>
</view>
<!-- <view class="listBox flex flex-column flex-start">
<view class="list flex flex-column flex-start" v-for="(item,index) in list" :key="index"
@click.stop="open(item.id)">
<image :src="item.headimage" mode="" style="width: 690rpx;height: 260rpx;border-radius: 10rpx;">
</image>
<view class="flex align-items" style="margin: 24rpx 0 0 32rpx;">
<span class="Sign flex justify-center align-items" style="color: #FFFFFF;background: #A4A4A4;"
v-if="item.has_sign_expire == 1"> </span>
<span class="Sign flex justify-center align-items"
style="color: #222222;background: #BEEE03;"
v-if="item.has_sign_expire == 2"> </span>
<span class="title white-space">{{item.title}}</span>
</view>
<view class="icon flex align-items">
<image src="../../static/index/address.png" mode="" class="icon-size"></image>
<span class="white-space">{{item.address_detail}}</span>
</view>
<view class="icon flex align-items" style="margin-bottom: 32rpx;margin-top: 14rpx;">
<image src="../../static/index/clock.png" mode="" class="icon-size"></image>
<span class="white-space">{{item.start_time_text}}</span>
</view>
<span class="Sign bg-hui flex justify-center align-items" v-if="item.has_sign_expire == 1"> </span>
<span class="Sign bg-blue flex justify-center align-items" v-if="item.has_sign_expire == 2"> </span>
</view>
</view> -->
<!-- <view class="footer flex justify-center align-items">
<u-loadmore :status="loadStatus" />
</view> -->
</view>
<tab-bar :tabBarShow="2"></tab-bar>
<tab-bar :tabBarShow="tabBarShow"></tab-bar>
</view>
</template>
<script>
import { mapActions } from 'vuex';
export default {
...mapActions(['number']),
data() {
return {
tabBarShow:null,
isFetching: false,
// selected: 'system,classes,order,activity',
selected: 'order',
alllist: [],//
unread_number: '',
unread_system_number: '',
unread_activity_number: '',
keywords: '',
page: 1,
limit: 10,
keywords: '',
loadStatus: 'loading',
status: '',
mini_type: '',
type: '',
list: [],
count: 1,
loadStatus: 'nomore'
show: false,
id: '',
title: '标题'
};
},
// onLoad() {
// this.getList()
// },
onShow() {
this.page = 1
this.limit = 10
this.list = []
this.getList()
this.resetLists();
this.number()
this.getinit()
this.fetchMessages(this.selected);
},
onReachBottom() {
if (this.count) {
this.getList();
computed: {
numbers() {
return this.unread_system_number + this.unread_activity_number;
}
},
onReachBottom() {
this.page++;
this.fetchMessages(this.selected);
},
methods: {
//
search() {
this.page = 1
this.limit = 10
this.list = []
this.getList()
},
getList() {
uni.$u.http.get('/api/school/activity/activity_list', {
params: {
keywords: this.keywords,
page: this.page,
limit: this.limit,
is_expire: 0,
order: 'normal'
}
}).then(res => {
getinit() {
uni.$u.http.get('/api/index/init', {}).then(res => {
if (res.code == 1) {
console.log(res.data.list.data)
if (res.data.list.data.length > 0) {
this.count = res.data.list.data.length;
if (this.count) {
this.loadStatus = 'nomore';
this.page++;
} else {
this.loadStatus = 'loading';
}
this.list = [...this.list, ...res.data.list.data];
// this.count = this.list.length
// if (this.list.length >= res.data.count) {
// this.loadStatus = 'loading';
// } else {
// this.loadStatus = 'nomore';
// }
if (res.data.base_info.miniapp_activity_swtich == 1) {
this.tabBarShow = 2;
} else {
this.count = this.list.length
this.loadStatus = 'nomore';
this.tabBarShow = 1;
}
}
}).catch(error => {
console.log(error);
});
},
//
getFormattedDates() {
const today = new Date();
const startOfDay = new Date(today);
startOfDay.setHours(0, 0, 0, 0);
const endOfDay = new Date(today);
endOfDay.setHours(23, 59, 59, 999);
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
const startOfYesterday = new Date(1970, 0, 1, 0, 0, 0, 0); // 1970/01/01 00:00:00
const endOfYesterday = new Date(yesterday);
endOfYesterday.setHours(23, 59, 59, 999);
const formatDate = (date) => {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`;
};
return {
today: `${formatDate(startOfDay)}-${formatDate(endOfDay)}`,
yesterday: `${formatDate(startOfYesterday)}-${formatDate(endOfYesterday)}`
};
},
fetchMessages(status) {
// const dates = this.getFormattedDates();
this.getList(status, "alllist" ,'1,2','');
// this.getList(status, 'read', '2', dates.today);
},
toSystem(){
uni.navigateTo({
url:"/pages/activity/stationStemys"
})
},
//
// detail(id,params){
// const message = JSON.parse(params);
// if (message.event == 'user_auth_need_after'){
// uni.navigateTo({
// url:"/packageA/my/settleIn?shop_id=" + message.shop_id + "&id=" + id
// })
// } else {
// uni.navigateTo({
// url:"/packageA/my/stationDetail?id=" + id
// })
// }
// },
//
number() {
uni.$u.http.get('/api/school/message/message_count').then(res => {
if (res.code == 1) {
this.unread_system_number = res.data.unread_system_number;
this.unread_activity_number = res.data.unread_activity_number;
} else {
uni.showToast({
title: res.msg,
@ -133,135 +178,80 @@
duration: 2000
});
}
}).catch(error => {
let token = uni.getStorageSync('token')
if (token) {
uni.showToast({
title: `请在'我的'页面 右上角退出重新登陆`,
icon: 'none',
duration: 3000,
complete: function() {
setTimeout(function() {
uni.switchTab({
url: '/pages/my/index',
});
}, 3000);
}
});
}).catch(error => {});
},
//
one() {
uni.$u.http.get('/api/school/message/batch', {
params: {
id: '*',
status: this.selected,
mini_type: '',
event: ''
}
}).then(res => {
if (res.code == 1) {
this.resetLists();
this.number();
this.fetchMessages('system,classes,order');
} else {
uni.showToast({
title: `请在'我的'页面 登陆后重试`,
title: res.msg,
icon: 'none',
duration: 3000,
complete: function() {
setTimeout(function() {
uni.switchTab({
url: '/pages/my/index',
});
}, 3000);
}
duration: 2000
});
}
}).catch(error => {});
},
//
async getList(status,zt,type,time) {
uni.$u.http.get('/api/school/message/message_list', {
params: {
page: this.page,
limit: this.limit,
status: status,
// mini_type: '',
type: type,
},
}).then(res => {
if (res.code == 1) {
this.updateList(zt, res.data.list, res.data.count);
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
});
},
open(id) {
uni.navigateTo({
url: "/packageA/activity/activityDetaill?id=" + id
})
//
updateList(type, list, count) {
console.log(type, list, count)
const targetList = this[type];
this[type] = [...targetList, ...list];
console.log('this.loadStatus ',this.loadStatus )
this.loadStatus = targetList.length >= count ? 'nomore' : 'loading';
},
//
resetLists() {
this.page = 1;
this.alllist = [];
this.loadStatus = 'loading'
}
}
}
};
</script>
<style lang="scss" scoped>
.center-box {
width: 750rpx;
background: #f7f7f7;
min-height: calc(100vh - 130rpx);
}
.box {
width: 690rpx;
padding: 0 30rpx 0rpx 30rpx;
border-radius: 0px 0px 0px 0px;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.search {
margin-top: 27rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 78%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn {
width: 128rpx;
height: 64rpx;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
background-color: #F1F2F8;
background-image: url("https://naweigetetest2.hschool.com.cn/dyqc/bgx2.png");
background-size: 750rpx 797rpx;
background-repeat: no-repeat;
}
.w-100 {
@ -272,9 +262,26 @@
display: flex;
}
.flex-start {
align-items: flex-start;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.justify-center {
justify-content: center;
}
.justify-between {
justify-content: space-between;
}
.align-items {
align-items: center;
@ -287,64 +294,195 @@
.justify-start {
justify-content: start;
}
.listBox {
.title_logo{
width: 690rpx;
margin-top: 10rpx;
.list {
height: 456rpx;
margin-top: 32rpx;
position: relative;
background: #FFFFFF;
border-radius: 10rpx;
.title {
width: 522rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
margin-top: 110rpx;
display: flex;
}
.box_center{
margin-top: 30rpx;
width: 750rpx;
background: linear-gradient( 180deg, #FFFFFF 0%, #F7F7F7 23%);
// background: #F7F7F7;
min-height: 80vh;
border-radius: 44rpx;
.lines{
width: 690rpx;
height: 1rpx;
background: #F0F0F0;
}
.top{
width: 690rpx;
padding: 30rpx;
.xtxiaoxi{
font-family: PingFang SC, PingFang SC;
font-weight: bold;
font-size: 32rpx;
color: #000000;
color: #3D3D3D;
line-height: 45rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.icon {
width: 580rpx;
margin-top: 8rpx;
margin-left: 32rpx;
.xtNum{
width: 56rpx;
height: 32rpx;
line-height: 32rpx;
background: #FF4810;
border-radius: 84rpx;
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
text-align: center;
}
}
.center {
width: 690rpx;
margin-bottom: 200rpx;
.list {
width: 690rpx;
background: #FFFFFF;
border-radius: 18rpx 18rpx 18rpx 18rpx;
margin-top: 30rpx;
position: relative;
.left {
font-size: 24rpx;
font-weight: bold;
margin-top: 40rpx;
margin-left: 30rpx;
.title1 {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #9C9C9C;
margin-left: 20rpx;
width: 460rpx;
}
}
.Sign {
width: 88rpx;
height: 40rpx;
border-radius: 4rpx 4rpx 4rpx 4rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 24rpx;
margin-right: 16rpx;
.right {
margin-left:30rpx;
margin-right: 30rpx;
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 600;
font-family: PingFang SC, PingFang SC;
font-size: 30rpx;
color: #202020;
line-height: 34rpx;
width: 360rpx;
}
.time {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #999999;
}
.text {
margin-top: 20rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #3D3D3D;
margin-bottom: 40rpx;
}
}
// .jiao {
// position: absolute;
// left: 0;
// top: 0;
// }
}
}
}
.header {
width: 690rpx;
height: 50rpx;
margin-top: 30rpx;
.s-header {
width: 152rpx;
height: 50rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9E9E9E;
position: relative;
.numberPos {
// width: 45rpx;
// height: 50rpx;
position: absolute;
right: -10rpx;
top: -4px;
}
}
.s-header.selected {
width: 152rpx;
height: 50rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
line-height: 26rpx;
}
}
.icon-size {
width: 32rpx;
height: 32rpx;
margin-right: 8rpx;
}
.footer {
margin-bottom: 200rpx;
}
.slot-wrap {
.yidu {
border-top: #008CFF 1rpx solid;
width: 690rpx;
display: flex;
justify-content: space-between;
align-items: center;
height: 66rpx;
margin-top: 18rpx;
.news {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #9E9E9E;
}
.One {
width: 132rpx;
height: 40rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1rpx solid #9E9E9E;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #9E9E9E;
display: flex;
justify-content: center;
align-items: center;
}
}
.hui {
width: 132rpx;
height: 40rpx;
background: #E7E7E7;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #9E9E9E;
margin: 24rpx 0;
display: flex;
justify-content: center;
align-items: center;
/* 如果您想让slot内容占满整个导航栏的宽度 */
/* flex: 1; */
/* 如果您想让slot内容与导航栏左右有空隙 */
/* padding: 0 30rpx; */
}
</style>

View File

@ -0,0 +1,144 @@
<template>
<view class="box flex justify-center flex-column">
<view class="center flex flex-column flex-start" v-for="detail,index in list" :key="index">
<span class="title">{{detail.title}}</span>
<span class="span" style="margin-top: 20rpx;">
<!-- <u-parse :content="detail.desc" :selectable="true"></u-parse> -->
<rich-text :nodes="detail.desc" selectable user-select></rich-text>
</span>
<span class="span" style="margin-top: 20rpx; color: #999999 ;">{{detail.createtime_text}}</span>
<span class="jiao">
<u-badge :isDot="true" type="error"></u-badge>
</span>
</view>
<u-loadmore :status="loadStatus" />
</view>
</template>
<script>
export default {
data() {
return {
page: 1,
limit: 10,
list:[],
loadStatus:'',
loadStatus: 'loading'
};
},
onLoad(option) {
console.log(option)
this.getDetail();
this.resetLists()
},
onReachBottom() {
this.page++;
this.getDetail();
},
methods: {
getDetail() {
uni.$u.http.get('/api/school/message/message_list', {
params: {
page: this.page,
limit: this.limit,
status: 'system,activity',
type: "1",
}
}).then(res => {
if (res.code == 1) {
this.list = [...res.data.list , ...this.list ]
this.loadStatus = this.list.length >= res.data.count ? 'nomore' : 'loading';
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
},
//
resetLists() {
this.page = 1;
this.alllist = [];
this.loadStatus = 'loading'
}
}
}
</script>
<style lang="scss" scoped>
.box {
background: #F1F2F8;
width: 750rpx;
height: 100vh;
margin: 0 auto;
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.center {
margin: 30rpx;
width: 690rpx;
height: 278rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
padding: 30rpx;
box-sizing: border-box;
position: relative;
.span {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
line-height: 36rpx;
color: #202020;
}
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #202020 ;
}
.jiao {
position: absolute;
left: 0;
top: 0;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -18,14 +18,14 @@
</view>
</view>
<view style="height: 1px;width: 70%;background: #D9D9D9;margin: 45rpx auto;"></view>
<view v-if="infoRefund!=''" class="item-spacing"
<view v-if=" infoRefund != '' " class="item-spacing"
style="display: flex; justify-content: space-between; font-size: 26rpx;">
<view style="color: #7A7A7A;">当前状态</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts==1">机构处理中</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts==4">待用户确认</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts==7">结算中</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts==10">已完成</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts==-3">驳回</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts== 1">机构处理中</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts== 4">待用户确认</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts== 7">结算中</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts== 10">已完成</view>
<view style="color: #FF6D6D;" v-if="infoRefund.service_stauts== -3">驳回</view>
</view>
<view class="item-spacing" style="display: flex; justify-content: space-between; font-size: 26rpx;">
<view style="color: #7A7A7A;">课程机构</view>

View File

@ -19,22 +19,22 @@
<view class="flex">
<image v-if="detail.images" :src="detail.images[0]" mode="" style="width: 159rpx;height: 159rpx;border-radius: 18rpx;"></image>
<view class="flex align-items flex-column" style="margin-left: 20rpx;">
<span class="first-name">{{detail.title}}</span>
<view class="rbot">
<image src="/static/center/address.png" mode="" style="width: 32rpx;height: 32rpx;"></image>
<span>{{detail.address_detail}}</span>
<span class="first-name white-space">{{detail.title}}</span>
<view class="rbot flex align-items">
<image src="/static/center/address.png" mode="" style="width: 32rpx;height: 32rpx;margin-right: 20rpx;"></image>
<span class="white-space">{{detail.address_detail}}</span>
</view>
</view>
</view>
</view>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;">
<span class="flex align-items" style="width: 100%;justify-content: space-between;">
<view class="tt1">活动时间</view>
<span style="font-size: 14px;">{{formattedTime.formattedTime}}</span>
</span>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;">
<span class="flex align-items" style="width: 100%;justify-content: space-between;">
<view class="tt1">数量<span> (剩余{{detail.join_info.stock - detail.join_info.people_number}})</span></view>
<span class="flex align-items">
<image style="width: 42rpx;height: 42rpx;" src="/static/detail/jian.png" @click="removeMon"></image>
@ -43,12 +43,12 @@
</span>
</span>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;">
<span class="flex align-items" style="width: 100%;justify-content: space-between;">
<view class="tt1">支付金额</view>
<span style="color: #FF4810;font-weight: 900;">{{ priceGem }}</span>
</span>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;margin-bottom: 50rpx;">
<span class="flex align-items" style="width: 100%;justify-content: space-between;margin-bottom: 40rpx;">
<view class="tt1">支付方式</view>
<span class="flex align-items">
<image style="width: 44rpx;height: 44rpx;" src="/static/detail/weixin.png"></image>
@ -61,7 +61,7 @@
</view>
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third flex flex-column" style="justify-content: flex-start;" v-if="priceGem > 0">
<view class="third-top flex align-items">
<span>退款政策
<image class="icons" src="/static/detail/xiangqing.png"></image>
@ -81,11 +81,13 @@
<uni-td>0%</uni-td>
<uni-td>0</uni-td>
</uni-tr>
<uni-tr v-if="detail.refund_info.status == 5">
<uni-td>报名开始至{{ fomartertime }}</uni-td>
<uni-td>需协商</uni-td>
<uni-td>需协商</uni-td>
</uni-tr>
</uni-table>
</view>
</view>
@ -295,7 +297,7 @@
},
onLoad(options) {
this.loginShow();
// this.loginShow();
this.userInfo = uni.getStorageSync("userInfo")
this.id = options.id
if (options.type == 2) {
@ -305,7 +307,7 @@
if (options.type == 1) {
this.type = 1
this.order_no = options.order_no
this.pament()
this.create()
}
console.log(options.id)
this.getDetail()
@ -630,7 +632,7 @@
complete: function() {
setTimeout(function() {
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
url: "/packageA/my/exercise?status=" + "2,3"
})
}, 2000);
}
@ -835,7 +837,7 @@
}
.first-name{
width: 430rpx;
height: 52rpx;
// height: 77rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
@ -847,7 +849,7 @@
height: 52rpx;
font-size: 26rpx;
color: #323232;
margin-top: 20rpx;
margin-top: 60rpx;
}
@ -997,7 +999,7 @@
width: 690rpx;
height: 1rpx;
background: #F0F0F0;
margin: 19rpx 0;
margin: 30rpx 0;
}
.icon-size {

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
<view class="swiper">
<u-swiper :list="detail.images" indicator indicatorActiveColor="#323232" indicatorMode="dot" :indicator-style="{ bottom: '60rpx',zIndex: 999}"
height="580rpx" circular></u-swiper>
:height="height_sw" circular></u-swiper>
</view>
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
@ -56,11 +56,11 @@
<view class="second-box flex align-items space-between">
<view class="flex align-items">
<u-avatar-group :urls="detail.join_info.users"
keyName="avatar" size="24" gap="0.3" :maxCount="3"></u-avatar-group>
keyName="avatar" size="30" gap="0.3" :maxCount="3"></u-avatar-group>
<image
src="/static/index/dian.png"
:class="detail.join_info.users.length > 0 ? '' :'smalld'"
style="width: 60rpx;height: 60rpx;z-index: 1;"
style="width: 60rpx;height: 60rpx;margin-left:-20rpx;z-index: 1;"
></image>
</view>
<span class="number">{{detail.join_info.people_number}}/{{detail.join_info.stock >= 10000 ? '9999+' : detail.join_info.stock}}
@ -119,7 +119,7 @@
</view>
<view class="footer-right flex justify-center align-items">
<span v-if="type == 0 && detail.feel == 0" @click="sign()"> 支付并参加 </span>
<span v-if="type == 0 && detail.feel == 1" @click="signs()"> 免费参加 </span>
<span v-if="type == 0 && detail.feel == 1" @click="sign()"> 免费参加 </span>
<!-- <span v-if="type == 1 && detail.feel == 0" @click="buy()"> 立即支付 </span>
<span v-if="type == 1 && detail.feel == 1" @click="buy()"> 确认报名 </span>
<span v-if="type == 2" @click="open()"> 我要预约 </span>
@ -298,6 +298,7 @@
data() {
return {
height_sw:'580rpx',
style: {
//
img: 'width: 100%'
@ -549,13 +550,6 @@
url: '/pages/center/applyDetail?id=' + this.id
})
},
//
signs() {
uni.navigateTo({
url: '/pages/center/applyDetail?id=' + this.id+"&type=1"
})
},
buy() {
@ -1608,10 +1602,10 @@
.wx-slider-handle{
background: url('@/static/detail/qiu.png') !important;
border-radius: 0;
background-size: 28rpx 28rpx !important;
background-size: 30rpx 30rpx !important;
width: 28rpx;
height: 28rpx;
top: 18rpx;
top: 14rpx;
margin-left: -14rpx !important;
}
.wx-slider-value{

View File

@ -9,7 +9,7 @@
></image>
</view>
<view class="box flex flex-column align-items" @click="tofb">
<view class="box flex flex-column align-items">
<view class="first flex flex-column align-items justify-start">
<view class="row flex align-items" style="margin-top: 25rpx;">
<span >
@ -27,7 +27,7 @@
<span class="line-row" style="margin-top: 0;"></span>
<!-- 图片 -->
<view class="row flex flex-column" style="margin-top: 42rpx;">
<view class="shenfen row flex flex-column" style="margin-top: 42rpx;">
<u-upload :fileList="fileList1" @afterRead="afterRead" :previewFullImage="true" @delete="deletePic"
@oversize="oversize" name="1" multiple :maxSize="1*1024*1024" :maxCount="5">
<view class="pic_view">
@ -94,9 +94,9 @@
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>退款政策
</span>
<!-- @click="tuikuan = true" -->
<span class="row-right" >
<input type="text" placeholder="请选择退款政策" class="input" disabled="true" v-model="form.refund_id"
<!-- -->
<span class="row-right" @click="tuikuan = true">
<input type="text" placeholder="请选择退款政策" class="input" disabled="true" v-model="form.refund_idn"
placeholder-class="plasty_c" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
@ -160,13 +160,18 @@
<view class="popup_tkall">
<view class="popup_tk"> 选择退款政策</view>
<view class="closetk" @click="closetuikuan">取消</view>
<view class="confirmtk">确认</view>
<view class="popup-content">
<view class="popup-content-item" v-for="(item,index) in refund_list" :key="index" @click="selectItem(index,item)">
<span class="popup-content-item-title">{{ item.title }}</span>
<span v-html="item.desc" class="popup-content-item-content"></span>
<view class="confirmtk"@click="closetuikuan">确认</view>
<scroll-view scroll-y="true" class="popup-content">
<view class="popup-content-item flex align-items" :class="[{ active: currents === index }]" v-for="(item,index) in refund_list" :key="index" @click="selectItem(index,item)">
<view style="width: 540rpx;">
<span class="popup-content-item-title">{{ item.title }}</span>
<span v-html="item.desc" class="popup-content-item-content" style="margin-top: 20rpx;"></span>
</view>
<image v-if="currents === index" src="@/static/fabu/check.png" mode="widthFix" style="width: 44rpx;height: 44rpx;" />
<image v-else src="@/static/fabu/nocheck.png" mode="widthFix" style="width: 44rpx;height: 44rpx;" />
</view>
</view>
</scroll-view>
</view>
</u-popup>
@ -261,8 +266,8 @@
birthShow1: false, //
value: false,
scrollTop: 0,
minDate: dayjs(new Date()).unix()*1000,
minDate1: dayjs(new Date()).unix()*1000,
minDate: dayjs().add(2, 'hour').valueOf(),
minDate1: dayjs().add(4, 'hour').valueOf(),
old: {
scrollTop: 0
},
@ -282,7 +287,8 @@
//
cate_idsName:"",
content: '',
refund_id:'随时退',
refund_id:'',
refund_idn:'',
price:1,
stock:'',
sign_time:'',
@ -321,7 +327,7 @@
flexColumn: 'column'
},
current:0,
currents:0,
institutionList: [],
images: '',
fileList1: [], //
@ -335,7 +341,7 @@
};
},
onLoad() {
this.tofb();
// this.tofb();
// this.searchStatus()
this.getAgreement()
this.getBqList();
@ -349,7 +355,8 @@
//
cate_idsName:"",
content: '',
refund_id:'随时退',
refund_id:'',
refund_idn:'',
price:1,
stock:'',
sign_time:'',
@ -377,26 +384,32 @@
}
},
methods: {
//
tofb() {
const token = uni.getStorageSync('token')
if (token) {
return true;
} else {
uni.showToast({
title: '请登录',
icon: 'none',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.switchTab({
url: '/pages/my/index',
});
}, 2000);
}
});
}
//
selectItem(index,item) {
this.currents = index;
this.form.refund_id = item.id;
this.form.refund_idn = item.title;
},
//
// tofb() {
// const token = uni.getStorageSync('token')
// if (token) {
// return true;
// } else {
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000,
// complete: function() {
// setTimeout(function() {
// uni.switchTab({
// url: '/pages/my/index',
// });
// }, 2000);
// }
// });
// }
// },
// 使
getitembq(){
if (uni.getStorageSync("zjlist") != "") {
@ -587,7 +600,9 @@
this.show = true
},
opentuikuan(){
this.tuikuan = true
this.tuikuan = true;
this.form.refund_id = 1;
this.form.refund_idn = '随时退';
},
change() {
this.agree = true
@ -960,9 +975,9 @@
// }
.title_logo{
width: 100%;
margin-top: 100rpx;
margin-left: 40rpx;
width: 690rpx;
margin-top: 110rpx;
display: flex;
}
.backImg {
// background: linear-gradient(to bottom, #F1F2F8 0%, #F1F2F8 50%, #FFFFFF 100%);
@ -1136,17 +1151,10 @@
}
}
.ji ::v-deep .u-upload .u-upload__wrap__preview__image {
width: 690rpx !important;
height: 450rpx !important;
}
.shenfen ::v-deep .u-upload .u-upload__wrap__preview__image {
width: 690rpx !important;
height: 450rpx !important;
width: 196rpx !important;
height: 196rpx !important;
}
.bottom {
@ -1338,18 +1346,38 @@
}
.popup-content{
height: 900rpx;
overflow-y: auto;
// overflow-y: auto;
}
.popup-content-item{
width: 690rpx;
padding: 30rpx;
box-sizing: border-box;
background: #F7F7F7;
border-radius: 18rpx 18rpx 18rpx 18rpx;
border: 2rpx solid #EAEAEA;
border-radius: 18rpx;
border: 5rpx solid #EAEAEA;
margin-bottom: 30rpx;
:active{
font-family: PingFang SC, PingFang SC;
justify-content: space-between;
color: #3D3D3D;
&.active{
background: #FAFFF3;
border: 5rpx solid;
border-image: linear-gradient(270deg, rgba(251, 246, 109, 1), rgba(156, 234, 162, 1)) 2 2;
border-radius: 18rpx;
clip-path: inset(0px round 16rpx);
}
.popup-content-item-title{
font-weight: bold;
font-size: 36rpx;
}
.popup-content-item-content{
font-weight: 400;
font-size: 26rpx;
line-height: 45rpx;
::v-deep rich-text{
margin-top: 20rpx;
display: flex;
}
}
}

View File

@ -1,905 +0,0 @@
<template>
<view class="center-box">
<view class="box flex justify-center align-items flex-column">
<view class="search flex align-items" style="width: 99%;">
<u-navbar :title="navbarTitle" :border="false" :placeholder="true" :autoBack="false" :is-back="false" :leftIcon="none">
<view class="" slot="center">
<u-search class="u-search" v-model="keywords" placeholder="请输入搜索内容" :showAction="false"
@change="search()"></u-search>
</view>
</u-navbar>
</view>
<!-- 推荐课程 -->
<view class="hot flex flex-column" :style="{ marginTop: capsuleHeight()}">
<view class="hot-top flex align-items ">
<image src="/static/index/Subtract.png" mode=""
style="width: 16rpx; height: 22rpx;margin: 0 8rpx 0 32rpx;"></image>
<span>优质课程陪您成长~</span>
</view>
<view class="content flex align-items" style="background: none;overflow-y: hidden;">
<view class=" ovr flex align-items" style="align-items: self-start;" v-for="(item,index) in Tjlist"
:key="index">
<view class="hot-center justify-start flex flex-column" style="align-items: flex-start;"
@click="detail(item.id)">
<image :src="item.headimage" mode=""
style="width: 308rpx; height: 168rpx;border-radius: 20rpx;"></image>
<span class="jita white-space">{{item.title}}</span>
<span class="price" v-if="item.feel == 0">{{item.price}}</span>
<span class="price" v-if="item.feel == 1">公益</span>
<view class="mingePos flex justify-center align-items">
<image src="/static/index/fire.png" mode=""
style="width: 22rpx;height: 24rpx;margin: 0 8rpx 0 12rpx;">
</image>
<span class="minge">{{ Number(item.sign_num + item.virtual_num)}} /
{{item.limit_num}}</span>
</view>
</view>
</view>
</view>
<!-- <view class="" v-else>
<u-empty mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png">
</u-empty>
</view> -->
</view>
<!-- 标签 -->
<view class="tabs">
<view v-for="(tab, index) in list" :key="index" :class="['tab-item', { active: current === index }]"
@click="handleClick(index)">
{{ tab.name }}
</view>
</view>
<!-- 课程 -->
<view class="totalClass flex flex-column">
<!-- <view class="total-top flex align-items space-between">
<image src="../../static/center/TotalClass.png" mode="" style="width: 168rpx;height: 48rpx;">
</image>
</view> -->
<!-- <view v-if="LoadingShow" class="flex justify-center align-items" style="height: 300rpx;">
加载中...
</view> -->
<view class="totalBox flex align-items flex-column">
<view class="flex align-items flex-column w-100 bbb" v-for="(item,index) in hotList" :key="index"
@click="detail(item.id)">
<view class="top flex align-items" style="justify-content: space-around;margin-top: 24rpx;">
<view class="left">
<image :src="item.headimage" mode=""
style="width: 240rpx; height: 196rpx;border-radius: 12rpx 12rpx 12rpx 12rpx;">
</image>
</view>
<view class="right flex flex-column " style="align-items: self-start;">
<span class="title white-space">{{item.title}}</span>
<view class=" row flex flex align-items">
<span
v-for="(items,index1) in item.classes_type_name"
class="remen flex justify-center align-items">{{items}}</span>
<span
style="background: #FFF1ED;color: #FF4810;margin-left:8rpx; max-width: 170rpx;"
class="remen flex justify-center align-items">
<span class="white-space">{{item.shop.name}}</span>
</span>
</view>
<view class="flex flex-column pos">
<view class=" time flex align-items white-space">
<image src="../../static/index/clock.png" mode=""
style="width: 24rpx;height: 24rpx;"></image>
<span class="white-space" style="margin-left: 8rpx;">{{item.start_time_text}}
</span>
</view>
<view class="address flex align-items white-space">
<image src="../../static/index/address.png" mode=""
style="width: 24rpx;height: 24rpx;"></image>
<span class="white-space"
style="margin-left: 8rpx; width: 220rpx;">{{item.address_detail}}</span>
</view>
<span class=" ab flex align-items" v-if="item.feel == 0" style="">
<span class="m"></span>
<span class="money">{{item.price}}</span>
</span>
<span class="ab no flex align-items" v-if="item.feel == 1">公益</span>
</view>
</view>
</view>
<span style="width: 626rpx;height: 2rpx;background: #EEEEEE;margin: 32rpx 0 0 0;"></span>
<view class="bottom flex align-items">
<view class="flex align-items">
<span class="flex align-items" style="width: 200rpx;">
<u-avatar-group :urls="item.unpaid_user_data"
:extraValue="item.unpaid_user_data.length - 5" keyName="head_image" size="24"
gap="0.4"></u-avatar-group>
</span>
<view class="number flex align-items">
{{'已报名: ' + Number(item.sign_num + item.virtual_num)}}/{{item.limit_num}}
</view>
</view>
<span class="part flex justify-center align-items">
报名参加
</span>
</view>
</view>
</view>
<!-- <view class="" v-else>
<u-empty mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png">
</u-empty>
</view> -->
<view class="more flex flex-column align-items">
<span class="line-lone"></span>
<span class="line-erect"></span>
</view>
</view>
<view class="footer flex">
<u-loadmore :status="loadStatus" />
</view>
</view>
<tab-bar :tabBarShow="1"></tab-bar>
</view>
</template>
<script>
// import FilterMenu from "./myFilterMenu/index.vue"
// import {menuOption} from "@/common/menuOptions.js"
// import {
// updateStaticData
// } from '@/common/data.js';
export default {
// components: {
// FilterMenu
// },
data() {
return {
value1: 1,
options1: [{
label: '默认排序',
value: 1,
},
{
label: '距离优先',
value: 2,
},
{
label: '价格优先',
value: 3,
}
],
selectedLabel: '选项1',
selectedValue: 1,
searchValue: '',
value: 0,
range: [{
value: 0,
text: "篮球"
},
{
value: 1,
text: "足球"
},
{
value: 2,
text: "游泳"
},
],
list: [{
name: '全部课程'
},
{
name: '文化艺术'
},
{
name: '职业发展'
},
{
name: '社会融入'
},
{
name: '形势政策'
},
],
current: 0,
menuOption: {},
unread_number: '',
listQuery: {
priceStart: '',
priceEnd: ''
},
LoadingShow: true,
page: 1,
limit: 10,
tjShow: true,
keywords: '',
hotList: [],
Tjlist: [],
staticData: [],
loadStatus: 'loading',
district: '', //
classes_label_ids: '', //
classes_cate_ids: '', //
classes_type: '14,15,16,17', //
last_page: 0
}
},
onLoad() {
uni.hideTabBar()
},
onShow() {
this.resetLists()
// this.fetchAndUpdateStaticData()
this.getTjlList()
this.getTotalList()
},
onReachBottom() {
if (this.page < this.last_page) {
this.page++;
this.getTotalList();
}
},
methods: {
handleDropdownChange(value) {
const selectedItem = this.menuList.find(item => item.value === value);
if (selectedItem) {
this.selectedLabel = selectedItem.label;
this.selectedValue = selectedItem.value;
}
},
//
capsuleHeight() {
console.log(uni.getMenuButtonBoundingClientRect())
if (uni?.getMenuButtonBoundingClientRect()) {
return `${uni.getMenuButtonBoundingClientRect().height + uni.getMenuButtonBoundingClientRect().top + 26}rpx`;
} else {
return `180rpx`;
}
},
handleClick(index) {
this.current = index;
if (index == 0) {
this.classes_type = "14,15,16,17"
} else if (index == 1) {
this.classes_type = '15'
} else if (index == 2) {
this.classes_type = '16'
} else if (index == 3) {
this.classes_type = '17'
} else if (index == 3) {
this.classes_type = '14'
}
this.hotList = []
this.getTotalList()
},
handleSearch(value) {
this.keywords = value
this.search()
},
//
resetLists() {
this.page = 1;
this.hotList = []
this.loadStatus = 'loading'
},
//
search() {
if (this.keywords == '') {
this.tjShow = true
} else {
this.tjShow = false
}
this.resetLists()
this.getTotalList()
},
//
getPeople(id) {
return uni.$u.http.get('/api/school/classes/people', {
params: {
id: id,
have_real: 1
}
}).then(res => {
if (res.code == 1) {
return res.data.unpaid_user_data;
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
throw new Error(res.msg); // 便 catch
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
throw error; // 便 catch
});
},
//
getTotalList() {
uni.$u.http.get('/api/school/classes/classes_list', {
params: {
page: this.page,
limit: this.limit,
order: 'normal',
has_shop: 1,
is_expire: 2,
keywords: this.keywords,
district: this.district, //
// classes_label_ids: this.classes_label_ids, //
// classes_cate_ids: this.classes_cate_ids, //
classes_type: this.classes_type //
}
}).then(res => {
if (res.code == 1) {
// setTimeout(() => {
// this.LoadingShow = false; // loading
// }, 100); // 2
this.last_page = res.data.list.last_page
const dataLiat = [...this.hotList, ...res.data.list.data]
const promises = dataLiat.map(item => {
return this.getPeople(item.id).then(peopleData => {
item.unpaid_user_data = peopleData;
}).catch(error => {
console.error(`Failed to get people data for id ${item.id}:`,
error);
});
});
//
Promise.all(promises).then(() => {
this.hotList = dataLiat;
}).catch(error => {
console.error('Error in fetching people data:', error);
});
this.loadStatus = this.hotList.length >= res.data.list.total ? 'nomore' :
'loading';
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
this.loadStatus = 'nomore';
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
this.loadStatus = 'nomore';
});
},
//
getTjlList() {
uni.$u.http.get('/api/school/classes/classes_list', {
params: {
page: 1,
limit: 10,
order: 'recommend',
is_expire: 2
}
}).then(res => {
if (res.code == 1) {
this.Tjlist = res.data.list.data
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
resethandle(index) {
this.listQuery = {}
},
jump() {
uni.navigateTo({
url: '/pages/center/list',
success: res => {},
fail: () => {},
complete: () => {}
});
},
detail(id) {
uni.navigateTo({
url: "/pages/center/detail?id=" + id
})
},
onClickMenuIndex(props) {
console.log('onClickMenuIndex', props)
},
//
onClose(e) {
console.log('onClose', e)
},
onOpen() {
console.log('onOpen')
},
//
onSearch(e) {
console.log('onSearch', e)
},
handleConfirm(data) {
console.log('确认选择的数据:', data);
this.classes_cate_ids = data.classes_cate_ids.join(',')
this.classes_label_ids = data.classes_label_ids.join(',')
this.district = data.district.join(',')
this.classes_type = data.classes_type.join(',')
this.resetLists()
this.getTotalList()
// selectedData
//
}
}
}
</script>
<style lang="scss" scoped>
.center-box {
width: 750rpx;
min-height: 100vh;
background: #F2F2F2;
}
.box {
width: 690rpx;
padding: 0 30rpx 0rpx 30rpx;
border-radius: 0px 0px 0px 0px;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.search {
margin-top: 27rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
// box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
// border-radius: 8rpx 8rpx 8rpx 8rpx;
// border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 78%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn {
width: 128rpx;
height: 64rpx;
background: #008CFF;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.hot {
width: 100%;
}
.totalClass {
width: 100%;
.total-top {
padding-bottom: 12rpx;
border-bottom: 2rpx solid #008CFF;
}
}
.totalBox {
// height: 462rpx;
// overflow-x: auto;
/* 允许横向滚动 */
// white-space: nowrap;
width: 690rpx;
.bbb {
background: #FFFFFF;
margin-top: 24rpx;
border-radius: 20rpx;
}
.right {
margin-left: 24rpx;
width: 338rpx;
.title {
width: 338rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
}
.row {
margin: 10rpx 0 26rpx 0;
.remen {
// width: 136rpx;
height: 40rpx;
background: #EBFAF5;
border-radius: 4rpx 4rpx 4rpx 4rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 24rpx;
color: #14BC84;
line-height: 28rpx;
padding: 2rpx 8rpx;
}
.line-colum {
width: 1rpx;
height: 32rpx;
background: #7A7A7A;
margin: 0 13rpx;
}
.name {
width: 110rpx;
height: 32rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
line-height: 32rpx;
margin-left: 12rpx;
}
}
.line-row {
width: 338rpx;
height: 1rpx;
background: #E4E4E4;
}
.jigou {
width: 312rpx;
// height: 32rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
margin: 4rpx 0 14rpx 0;
}
.time {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #A4A4A4;
line-height: 30rpx;
}
.address {
width: 350rpx;
height: 40rpx;
margin-top: 8rpx;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #A4A4A4;
line-height: 30rpx;
}
}
}
.bottom {
margin: 32rpx 0 32rpx 0;
width: 626rpx;
.number {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 26rpx;
color: #222222;
line-height: 30rpx;
width: 242rpx;
margin-left: 42rpx;
}
.text {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 26rpx;
color: #7A7A7A;
}
.money {
width: 150rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 36rpx;
color: #FF2323;
justify-content: flex-end;
}
}
.ovr {
width: 312rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin-top: 18rpx;
margin-right: 24rpx;
}
}
.more {
margin-top: 62rpx;
.line-lone {
width: 260rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.line-erect {
margin-top: 16rpx;
width: 80rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
}
.hot {
.hot-top {
width: 278rpx;
height: 44rpx;
background: linear-gradient(90deg, #FDF850 0%, #85EE9C 100%);
border-radius: 200rpx 200rpx 200rpx 200rpx;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 24rpx;
color: #000000;
}
}
.ovr {
width: 308rpx;
height: 304rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin-right: 30rpx;
}
.content {
margin-top: 30rpx;
}
.jita {
width: 244rpx;
height: 44rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 30rpx;
color: #000000;
margin: 24rpx 32rpx 8rpx 32rpx;
}
.price {
width: 212rpx;
height: 36rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 24rpx;
color: #FF4810;
margin-left: 32rpx;
}
.hot-center {
position: relative;
}
.mingePos {
min-width: 118rpx;
height: 40rpx;
background: rgba(0, 0, 0, 0.7);
border-radius: 8rpx 8rpx 8rpx 8rpx;
position: absolute;
top: 40%;
right: 3%;
display: flex;
align-items: center;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
}
}
}
.footer {
margin: 120rpx 0 40rpx 0;
font-weight: 500;
font-size: 24rpx;
color: #BCBCBC;
line-height: 32rpx;
}
.u-search {
display: flex;
flex-direction: row;
align-items: center;
}
.tabs {
display: flex;
overflow-x: auto;
margin-top: 64rpx;
-webkit-overflow-scrolling: touch;
/* 优化滚动效果 */
}
.tab-item {
flex: 0 0 auto;
text-align: center;
margin-right: 40rpx;
position: relative;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 30rpx;
color: #222222;
}
.tab-item.active {
background-image: url("/static/center/footer.png");
background-repeat: no-repeat;
background-position: bottom;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 32rpx;
color: #222222;
}
.pos {
position: relative;
.ab {
position: absolute;
right: 0%;
bottom: 0%;
}
.m {
width: 28rpx;
height: 42rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 28rpx;
color: #FF4810;
}
.money {
width: 68rpx;
font-family: D-DIN-PRO, D-DIN-PRO;
font-weight: bold;
font-size: 36rpx;
color: #FF4810;
}
.no {
width: 64rpx;
height: 48rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 32rpx;
color: #FF4810;
line-height: 38rpx;
}
}
.part {
width: 176rpx;
height: 64rpx;
background: #BEEE03;
border-radius: 200rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 28rpx;
color: #222222;
line-height: 33rpx;
}
</style>

View File

@ -93,7 +93,7 @@
<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="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>
@ -358,6 +358,10 @@ export default {
.then((res) => {
if (res.code == 1) {
this.bqList = res.data.list;
//
if (this.list.length < 3) {
this.list = [...this.list, ...res.data.list.slice(0,3)];
}
} else {
uni.showToast({
title: res.msg,
@ -616,15 +620,7 @@ export default {
margin-top: 10rpx;
margin-bottom: 30rpx;
position: relative;
.u-search{
background: rgba($color: #FFFFFF, $alpha: 0.6);
::v-deep .u-search__content{
background: rgba($color: #FFFFFF, $alpha: 0.6);
}
::v-deep .u-search__content__input{
background: rgba($color: #FFFFFF, $alpha: 0.6);
}
}
.searchBtn{
position:absolute;
width: 133rpx;
@ -740,7 +736,6 @@ export default {
font-weight: 400;
font-size: 26rpx;
color: #323232 ;
line-height: 30rpx;
.time_tex{
width: 116rpx;
@ -753,6 +748,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
line-height: 30rpx;
}
.time_texs{
background: #FF4810;
@ -991,3 +987,20 @@ export default {
}
</style>
<style lang="scss">
.serch_top {
.u-search{
::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;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

BIN
static/detail/left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/detail/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/index/xiaoxilogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

BIN
static/my/qjt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

BIN
static/my/tixian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

34
utils/uqrcode.js Normal file

File diff suppressed because one or more lines are too long