修改ui细节完善小程序页面,修改bug
21
App.vue
@ -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 ;
|
||||
|
@ -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
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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{
|
||||
|
@ -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); // 10位时间戳需要乘以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}`;
|
||||
},
|
||||
// 关闭弹窗
|
||||
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>
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -582,7 +582,7 @@
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
margin: 0 10rpx;
|
||||
img {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
|
52
pages.json
@ -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": {
|
||||
|
@ -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>
|
144
pages/activity/stationStemys.vue
Normal 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>
|
@ -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>
|
||||
|
@ -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 {
|
||||
|
@ -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{
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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>
|
@ -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>
|
2517
pages/my/index.vue
BIN
static/detail/left.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
static/detail/right.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
static/index/xiaoxilogo.png
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
static/index/xitongxiaoxi.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 26 KiB |
BIN
static/my/qjt.png
Normal file
After Width: | Height: | Size: 448 B |
BIN
static/my/tixian.png
Normal file
After Width: | Height: | Size: 2.2 KiB |