修改样式ui和部分功能问题

This commit is contained in:
张凯 2025-04-24 09:31:50 +08:00
parent 654f12eb11
commit a32be3d657
24 changed files with 2794 additions and 708 deletions

View File

@ -1,7 +1,7 @@
<template>
<swiper class="swiper_s" :autoplay="autoplaySwiper" indicator-active-color="#0DAE11" indicator-color="#ffffff" :indicator-dots="true" :current="swiperCurrent" @change="swiperChange">
<swiper-item v-for="(item,index) in list" :key="index">
<span class="fnon_tit">{{ item.title?item.title:'' }}</span>
<span class="fnon_tit"><span class="text">{{ item.title?item.title:'' }}</span></span>
<!-- @click="click(item.url)" 跳转活动链接 -->
<image class="swiper-image" v-if="isImageUrl(item.image)" :src="item.image" mode="scaleToFill" lazy-load />
<div style="height: 100%;width: 100%;position: relative;" v-else>
@ -199,6 +199,19 @@
line-height: 100rpx;
background: rgba(0, 0, 0, 0.24);
border-radius: 36rpx;
bottom: 20rpx;
bottom: 30rpx;
.text {
position: relative; /* 确保文字在模糊背景之上 */
z-index: 10; /* 确保文字位于最上层 */
}
}
.fnon_tit::after {
content: "";
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
backdrop-filter: blur(4px); /* 调整模糊程度 */
pointer-events: none; /* 确保模糊效果不会干扰点击事件 */
border-radius: 36rpx;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<view class="page-total">
<view class="tab-list">
<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>
@ -8,9 +8,9 @@
<!-- background: (index == 2) ? 'red' : '' -->
<text :class="(tabBarShow === index) ? 'action' :''">{{item.name}}</text>
</view>
<span class="badge" v-if="number != 0">
<!-- <span class="badge" v-if="number != 0">
<u-badge type="warning " max="99" :value="number"></u-badge>
</span>
</span> -->
</view>
</view>
</template>
@ -77,12 +77,15 @@
// console.log(res.screenWidth) //
// console.log(res.screenHeight) //
that.codeheight = Math.round(res.screenHeight);
that.phoneModel = res.model
if (res.model.search('iPhone')) {
that.isOverall = 0;
} else if (Math.round(res.screenHeight) > 740) {
that.phoneModel = res.model;
if (/iPad|iPhone|iPod/.test(res.model)) {
that.isOverall = 1;
}
// else if (Math.round(res.screenHeight) > 740) {
// that.isOverall = 1;
// }
}
});
} catch (e) {
@ -190,6 +193,45 @@
}
}
}
.tab-list_ip {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 160rpx;
padding-bottom: 50rpx;
background-color: #FFFFFF;
box-sizing:border-box;
box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
.list {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 200rpx;
height: 130rpx;
position: relative;
image {
width: 44rpx;
height: 44rpx;
background-color: white;
margin-top: 12rpx;
}
text {
color: #C1C1C1;
font-size: 20rpx;
margin-top: 14rpx;
}
.action {
color: $base;
font-weight: 400;
font-size: 20rpx;
}
}
}
.badge {
position: absolute;

View File

@ -332,5 +332,8 @@
"devDependencies": {
"eslint": "^9.24.0",
"eslint-plugin-vue": "^10.0.0"
},
"dependencies": {
"url-search-params-polyfill": "^8.2.5"
}
}

View File

@ -0,0 +1,421 @@
<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>

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,9 @@
</span>
</view>
<view class="flex hdkuai flex-column" v-for="(item,index) in list" :key="index">
<view style="min-height: 100vh;">
<view class="flex hdkuai flex-column" v-for="(item,index) in list" :key="index">
<view style="margin:0 30rpx;">
<span class="text_h">活动时间 {{dateWeeks(item.detail.start_time) +' - '+dateWeekends(item.detail.end_time)}}</span>
</view>
@ -36,7 +38,7 @@
支付倒计时<u-count-down :time="item.cancel_last_seconds*1000"></u-count-down>
</span>
<span v-if="item.status == 2 || item.status == 3">待核销</span>
<span v-if="item.status == (-3)" style="color: #9C9C9C;">已关闭</span>
<span v-if="item.status == -3" style="color: #9C9C9C;">已关闭</span>
<span v-if="item.status == 4 || item.status == 7" style="color: #FF4810;">售后中</span>
<span v-if="item.status == 5" style="color: #FF4810;">退款中</span>
<span v-if="item.status == 6" style="color: #FF4810;">已退款</span>
@ -44,13 +46,17 @@
<view class="flex align-items" style="justify-content: flex-end;">
<view v-if="item.status == 0 && item.cancel_last_seconds > 0" class="btn_xq" @click="toPay(item.id,item.order_no)">去支付</view>
<view v-if="item.status == 2 || item.status == 3" class="btnhx">核销码</view>
<view v-if="item.status != 0" class="btn_xq" @click="toDetail(item.id,item.order_no)">查看详情</view>
<view v-if="item.status == 2 || item.status == 3" class="btnhx" @click="toDetail(item.id,item.order_no,item.status)">核销码</view>
<view v-if="item.status != 0" class="btn_xq" @click="toDetail(item.id,item.order_no,item.status)">查看详情</view>
</view>
</view>
</view>
<view class="flex justify-center align-items" v-if="list.length == 0" style="margin-top: 150rpx;">
<span class="no-data">暂无数据</span>
</view>
</view>
@ -211,12 +217,12 @@
onLoad(option) {
this.list = []
this.page = 1
// if (option?.status) {
// this.selected = option.status
// this.getList(option.status);
// } else {
if (option?.status) {
this.selected = option.status
this.getList(option.status);
} else {
this.getList('0');
// }
}
},
onReachBottom() {
@ -285,10 +291,18 @@
})
},
//
toDetail(id,order_no) {
uni.navigateTo({
url: "/packageA/my/pendinPayDetail?id=" + id +"&order_no=" + order_no
})
toDetail(id,order_no,status) {
if (status == 2 || status == 3) {
uni.navigateTo({
url: "/packageA/my/pendinPayDetail?id=" + id +"&order_no=" + order_no
})
}else{
uni.navigateTo({
url: "/packageA/my/pendinPayStatus?id=" + id
})
}
},
//
toPay(id,order_no) {
@ -387,6 +401,7 @@
.con-center {
width: 100%;
height: 100%;
// margin-top: 25rpx;
// overflow: hidden;
@ -403,7 +418,7 @@
display: flex;
justify-content: center;
align-items: center;
width: 140rpx;
width: 150rpx;
height: 80rpx;
font-weight: 400;
font-size: 28rpx;
@ -413,7 +428,7 @@
}
.s-header.selected {
width: 140rpx;
width: 150rpx;
height: 80rpx;
background: #ffffff;
font-weight: 800;

View File

@ -27,10 +27,9 @@
<view class="content flex align-items flex-column">
<view
class="flex flex-column w-100 bbb"
style="position: relative;"
style="position: relative;"
v-for="(item, index) in hotList"
:key="index"
@click="detail(item.id)"
>
<image
v-if="item.auth_status == 0"
@ -95,9 +94,10 @@
</view>
</view>
</view>
<view class="bottom flex align-items" v-if="item.auth_status != 0">
<view class="flex align-items">
<span class="flex align-items" style="width: 200rpx">
<view class="bottom flex align-items" v-if="item.auth_status != 0" style="justify-content: space-around;">
<!-- <view class="flex align-items" v-if="item.status == 2">
<span class="flex align-items" style="width: 150rpx">
<u-avatar-group
:urls="item.join_info.users"
keyName="avatar"
@ -119,10 +119,19 @@
<view class="number flex align-items">
{{ Number(item.join_info.people_number) + "人已上车" }}
</view>
</view>
<span class="part flex justify-center align-items"> 上车 </span>
</view> -->
<!-- <view class="flex align-items">
<span class="flex align-items" style="width: 150rpx">
123/456
</span>
</view> -->
<span v-if="item.status == 4 || item.status == 3 || item.status == 2" class="part1 flex justify-center align-items" @click="toHexiao"> 核销 </span>
<span class="part flex justify-center align-items" v-if="item.auth_status != 2" @click="detail(item.id)"> 详情 </span>
</view>
</view>
<view class="flex justify-center align-items" v-if="hotList.length == 0" style="margin-top: 150rpx;">
<span class="no-data">暂无数据</span>
</view>
</view>
</view>
</view>
@ -153,6 +162,7 @@
</u-popup> -->
<!-- <u-loadmore :status="loadStatus" /> -->
</view>
</template>
@ -229,15 +239,15 @@ export default {
};
},
onLoad(option) {
// this.list = []
// this.page = 1
// if (option?.status) {
// this.selected = option.status
// this.getList(option.status);
// } else {
// this.getList('0');
// }
this.getHotList(this.status);
this.list = []
this.page = 1
if (option?.status) {
this.selected = option.status
this.getHotList(option.status);
} else {
this.getHotList('0');
}
},
// onReachBottom() {
@ -318,6 +328,37 @@ export default {
url: "/pages/center/detail?id=" + id,
});
},
toHexiao(){
// API
let that = this;
wx.scanCode({
success(res) {
if (res.path) { //
const sceneValue = decodeURIComponent(res.path.split('=')[1]);
that.navigateToVerifyPage(sceneValue);
} else if (res.result.startsWith('https://wxaurl.cn')) { //
that.navigateToVerifyPage(res.result);
}
}
});
},
//
navigateToVerifyPage(e) {
console.log(e);
let urlParams = this.parseQueryString(e.split('?')[1]);
console.log(urlParams);
uni.navigateTo({
url: '/packageA/my/cancelActivity?code='+urlParams.code+'&id='+urlParams.id
});
},
parseQueryString(query) {
return query.split('&').reduce((obj, pair) => {
const [key, value] = pair.split('=');
obj[key] = decodeURIComponent(value || ''); // URI
return obj;
}, {});
},
//
Cancel(order_no) {
console.log(order_no);
@ -882,6 +923,7 @@ export default {
.hot {
// margin-top: 30rpx;
margin-bottom: 70rpx;
min-height: 100vh;
.hot-top {
// padding-bottom: 12rpx;
@ -929,6 +971,7 @@ export default {
.right {
margin-left: 24rpx;
width: 100%;
padding: 20rpx 0;
.title {
width: 95%;
@ -1030,7 +1073,7 @@ export default {
.bottom {
margin: 32rpx 0 32rpx 24rpx;
width: 626rpx;
width: 666rpx;
.number {
font-family: Source Han Sans CN, Source Han Sans CN;
@ -1038,7 +1081,7 @@ export default {
font-size: 26rpx;
color: #3d3d3d;
line-height: 30rpx;
width: 242rpx;
width: 150rpx;
margin-left: 20rpx;
}
@ -1068,13 +1111,25 @@ export default {
}
}
.part {
width: 180rpx;
width: 168rpx;
height: 70rpx;
background: url(@/static/index/shangche.png);
background-size: 168rpx 70rpx;
background-repeat: no-repeat;
font-family: "YouSheBiaoTiHei";
font-weight: 400;
font-size: 42rpx;
color: #bbfc5b;
}
.part1 {
width: 168rpx;
height: 70rpx;
background: url(@/static/index/hexiao.png);
background-size: 168rpx 70rpx;
background-repeat: no-repeat;
font-family: "YouSheBiaoTiHei";
font-weight: 400;
font-size: 42rpx;
color: #323232;
}
</style>

View File

@ -11,7 +11,7 @@
<view class="flex align-items">
<span class="first-name">{{detail.title}}</span>
</view>
<view class="first-image flex align-items" style="margin-top: 25rpx;">
<view class="first-image flex align-items white-space" style="margin-top: 25rpx;">
<image :src="detailAny.user.avatar" mode="" style="width: 36rpx;height: 36rpx;"></image>
<span style="color:#9C9C9C;">{{ detailAny.user.nickname }}</span>
<span style="color:#0CA013;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</span>
@ -845,7 +845,7 @@
if (res.errMsg == "requestPayment:ok") {
that.order_no = ''
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
url: "/packageA/my/exercise?status=" + 3
})
console.log('支付成功', res)
} else {

View File

@ -14,8 +14,7 @@
<view class="first-image flex align-items" style="margin-top: 25rpx;">
<image :src="detailAny.user.avatar" mode="" style="width: 36rpx;height: 36rpx;"></image>
<span style="color:#9C9C9C;">{{ detailAny.user.nickname }}</span>
<span style="color:#0CA013;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</span>
<span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in detailAny.classes_cate">#{{ items_t }}</span>
<span style="color:#9C9C9C;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</span>
</view>
<view class="flex align-items" style="margin-top: 20rpx;">
{{detailAny.totalprice}}
@ -31,6 +30,7 @@
<span class="line"></span>
<span class="first-image flex align-items space-between"
style="width: 100%;"
@click.stop="toMap(detail.latitude, detail.longitude, detail.address_detail)">
<view>
<image src="/static/center/address.png" mode="" class="icon-size"></image>
@ -43,11 +43,36 @@
</view>
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third-top flex align-items">
<span>核销二维码
<image class="icons" src="/static/detail/xiangqing.png"></image>
</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>
</l-painter-view>
</l-painter>
</view>
</view>
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third-center">
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单状态</span>
<span>{{detailAny.status == 0 ? '待支付' : '' }}</span>
<span v-if="detailAny.status == 2 || detailAny.status == 3 || detailAny.status == 4">待核销</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单编号</span>
@ -271,6 +296,7 @@
titleStyle: {
color: '#FFFFFF'
},
qrcodesurl:'' //
};
},
@ -304,14 +330,13 @@
},
methods: {
//
dateWeeks(timestamp) {
return dateWeek(timestamp)
},
//
formattime(e){
return dayjs(e).format('YYYY-MM-DD HH:mm:ss')
return dayjs(e*1000).format('YYYY-MM-DD HH:mm:ss')
},
overlayShow() {
@ -458,6 +483,7 @@
}).then(res => {
if (res.code == 1) {
this.detail = res.data.detail.detail;
this.qrcodesurl = res.data.detail.ordercode[0].miniurl;
this.detailAny = res.data.detail;
} else {
uni.showToast({
@ -931,8 +957,7 @@
color: #7A7A7A;
span {
// width: 600rpx;
// height: 40rpx;
// height: 80rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
@ -979,8 +1004,32 @@
background: #ffffff;
margin-top:20rpx;
border-radius: 44rpx;
.third-top{
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 36rpx;
color: #323232;
line-height: 50rpx;
margin-top: 30rpx;
margin-left:30rpx;
position: relative;
z-index: 10;
span{
position: relative;
.icons{
width: 37rpx;
height: 20rpx;
position: absolute;
left: 0;
bottom: 0;
z-index: -1;
}
}
}
.third-center {
padding: 30rpx;
position: relative;
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;

View File

@ -0,0 +1,893 @@
<template>
<view class="detail_all">
<view class="box flex justify-start flex-column align-items">
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
<view class="first-box flex flex-start flex-column justify-start">
<view class="flex align-items justify-center">
<image class="head_img" v-if="detail.images.length > 0" :src="detail.images[0]" mode="" ></image>
<view style="margin-left: 20rpx;">
<view class="flex align-items">
<span class="first-name">{{detail.title}}</span>
</view>
<view class="first-image flex align-items white-space" style="margin-top: 25rpx;">
<image :src="detailAny.user.avatar" mode="" style="width: 36rpx;height: 36rpx;"></image>
<span style="color:#9C9C9C;">{{ detailAny.user.nickname }}</span>
<span style="color:#9C9C9C;margin-left: 20rpx;">{{ detailAny.join_info.people_number }}人玩过</span>
</view>
<view class="flex align-items" style="margin-top: 20rpx;">
{{detailAny.totalprice}}
</view>
</view>
</view>
<span class="line"></span>
<span class="first-image flex align-items" style="margin-top: 20rpx;">
<image src="../../static/center/Alarm.png" mode="" class="icon-size"></image>
<span>{{formattedTime.formattedTime}}</span>
</span>
<span class="line"></span>
<span class="first-image flex align-items space-between"
style="width: 100%;"
@click.stop="toMap(detail.latitude, detail.longitude, detail.address_detail)">
<view>
<image src="/static/center/address.png" mode="" class="icon-size"></image>
<span class="white-space">{{detail.address_detail}}</span>
</view>
<image src="/static/detail/daohang.png" class="icon-size" style="width: 50rpx; height: 50rpx;"></image>
</span>
</view>
</view>
<view class="third flex flex-column" style="justify-content: flex-start;">
<view class="third-center">
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单状态</span>
<span>{{detailAny.status == 9 ? '已完成' : '' }}</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>订单编号</span>
<span>{{detailAny.order_no}}</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>创建时间</span>
<span>{{ formattime(detailAny.createtime)}}</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款金额</span>
<span style="color: #FF4810;">{{detailAny.totalprice}}</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款方式</span>
<span>{{detailAny.pay_type == 'wechat' ? '微信支付' : '余额'}}</span>
</view>
<view class="flex w-100 space-between hui align-items" style="margin-top: 8rpx;" >
<span>付款时间</span>
<span>{{ formattime(detailAny.paytime)}}</span>
</view>
</view>
</view>
<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> -->
</view>
</view>
</view>
</template>
<script>
import dayjs from 'dayjs';
import {
dateWeek
} from '../../utils/dateFormat'
export default {
computed: {
// formattedTitle() {
// if (this.detail.title.length > 9) {
// return this.detail.title.slice(0, 9) + '..';
// }
// return this.detail.title;
// },
formattedTimeList() {
return this.timeList.map(item => {
const startTime = dayjs.unix(item.start_time).format('YYYY-MM-DD HH:mm:ss');
const endTime = dayjs.unix(item.end_time).format('HH:mm:ss');
return {
formattedTime: `${startTime}~${endTime}`,
limit_num: item.limit_num,
sign_num: item.sign_num
};
});
},
formattedTime() {
const startTime = dateWeek(this.detail.start_time);
const endTime = dateWeek(this.detail.end_time);
return {
formattedTime: `${startTime} ~ ${endTime}`
};
}
},
data() {
return {
style: {
//
img: 'width: 100%'
},
value_slide:0,
scrollTop: 0,
overlay: false,
userInfo: {},
path: 'https://testy.hschool.com.cn//uploads/20241219/3406baf51fcc28c63c31ebcee5c9c75e.jpg',
uloadingShow: false,
show: false,
buyShow: false,
type: 0, // 0 1 2 3
id: 1,
count: 5,
value: 5,
order_no: '',
PayPirce: 0,
detail: {},
detailAny:{},
people: {},
qrUrl: '',
is_collect: 0,
popupStyle: {
width: '690rpx',
height: '716rpx',
margin: '0 auto', //
display: 'flex',
justifyContent: 'flex-start',
alignItems: 'center'
},
timeList: [],
selectedTime: null,
// indexBackgroundImage: indexBackgroundImage,
orderId: "",
classes_lib_spec_id: '',
order_no2: '',
mobile: '',
is_show_model: false, //
background: '#ffffff00',
titleStyle: {
color: '#FFFFFF'
},
};
},
onLoad(options) {
this.userInfo = uni.getStorageSync("userInfo")
this.id = options.id
this.order_no = options.order_no
this.getDetail()
},
methods: {
//
dateWeeks(timestamp) {
return dateWeek(timestamp)
},
//
formattime(e){
return dayjs(e*1000).format('YYYY-MM-DD HH:mm:ss')
},
overlayShow() {
const token = uni.getStorageSync('token')
if (token) {
this.overlay = true
} else {
uni.showToast({
title: '请登录',
icon: 'none',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.switchTab({
url: '/pages/my/index',
});
}, 2000);
}
});
}
},
//
showErrorToast(msg) {
uni.showToast({
title: msg,
icon: 'none',
duration: 2000
});
},
//
getDetail() {
uni.$u.http.get('/api/school.newactivity.order/detail', {
params: {
id: this.id,
}
}).then(res => {
if (res.code == 1) {
this.detail = res.data.detail.detail;
this.detailAny = res.data.detail;
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
}).catch(error => {});
},
//
toMap(latitude, longitude, name) {
uni.openLocation({
latitude: parseFloat(latitude),
longitude: parseFloat(longitude),
name: name,
success: function() {
console.log('success');
}
});
},
//
toIndex() {
uni.switchTab({
url: "/pages/index/index"
})
},
},
}
</script>
<style lang="scss" scoped>
.detail_all{
background-color: #f7f7f7;
height: 100vh;
}
.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;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.con-center {
// background: white;
border-radius: 44rpx;
position: relative;
margin-top: 30rpx;
}
.space-between {
justify-content: space-between;
}
.swiper {
width: 100%;
height: 580rpx;
}
.box {
position: relative;
margin: 0 30rpx;
}
.first-box {
width: 690rpx;
background: #FFFFFF;
padding: 30rpx;
border-radius: 18rpx;
box-sizing: border-box;
.head_img{
width: 160rpx;
height: 160rpx;
border-radius: 18rpx;
}
.first-name{
width: 440rpx;
height: 39rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #323232;
// margin-left: 16rpx;
}
.first-image {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
span {
// height: 80rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #222222;
}
.xieyi{
background-color:#BBFC5B;
width: 156rpx;
height: 48rpx;
border-radius: 8rpx;
}
}
}
.second-box {
width: 690rpx;
height: 64rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: 20rpx 0 16rpx 0;
.number {
height: 40rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #323232;
margin-left: 32rpx;
}
view {
span {
width: 24rpx;
height: 24rpx;
background: rgba(255, 255, 255, 0.4);
border-radius: 24rpx;
margin: 0 22rpx 0 4rpx;
}
}
}
.third {
width: 100%;
background: #ffffff;
margin-top:20rpx;
border-radius: 44rpx;
.third-center {
padding: 30rpx;
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
}
}
}
.line {
width: 630rpx;
height: 1rpx;
background: #F0F0F0;
margin: 19rpx 0;
}
.icon-size {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
}
.footer {
width: 100%;
height: 166rpx;
margin-top: 50rpx;
.footer-right {
width: 690rpx;
height: 90rpx;
background: #323232;
border-radius: 148rpx;
margin-bottom: 30rpx;
span {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
color: #BBFC5B;
}
}
.footer-right1 {
width: 690rpx;
height: 90rpx;
background: #E4E4E4;
border-radius: 148rpx;
span {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
color: #9C9C9C;
}
}
}
.popupBox {
width: 690rpx;
height: 716rpx;
.pop-header {
width: 100%;
background-image: url("/static/center/bg.png");
background-repeat: no-repeat;
background-position: left bottom;
height: 265rpx;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 20rpx;
color: #343434;
}
.name {
width: 594rpx;
height: 66rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 44rpx;
color: #222222;
margin-top: 80rpx;
}
.price {
width: 594rpx;
height: 66rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 44rpx;
color: #FF4810;
margin-top: 16rpx;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 36rpx;
color: #FF2323;
line-height: 32rpx;
}
}
}
.popup {
display: flex;
align-items: self-start;
justify-content: center;
width: 594rpx;
}
.popup-footer {
position: absolute;
left: 48rpx;
bottom: 48rpx;
span {
width: 594rpx;
height: 100rpx;
background: #222222;
border-radius: 200rpx 200rpx 200rpx 200rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 32rpx;
color: #BEEE03;
display: flex;
justify-content: center;
align-items: center;
}
}
.line {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.times {
width: 93%;
.selectTime {
width: 288rpx;
height: 50rpx;
background: #FFFFFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1rpx solid #D9D9D9;
color: #4B4B4B;
font-family: 'PingFang SC', 'PingFang SC';
font-weight: 500;
font-size: 24rpx;
padding-left: 15rpx;
cursor: pointer;
margin: 24rpx 32rpx 0 0;
white-space: nowrap;
/* 防止文本换行 */
text-overflow: ellipsis;
/* 超出部分显示省略号 */
overflow: hidden;
/* 隐藏超出部分 */
text-align: left;
/* 文字靠左对齐 */
line-height: 50rpx;
/* 垂直居中对齐 */
box-sizing: border-box;
/* 确保 padding 和 border 不影响宽度和高度 */
display: inline-block;
/* 确保容器内文字正确对齐 */
}
}
.selectTime.selected {
width: 288rpx;
height: 50rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
background: #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
cursor: pointer;
margin: 24rpx 32rpx 0 0;
}
}
.share {
position: fixed;
color: #FFFFFF;
right: 0;
bottom: 190rpx;
background: linear-gradient(to bottom right, #FE726B, #FE956B);
padding: 10rpx 10rpx 10rpx 20rpx;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
box-shadow: 0 0 20upx rgba(0, 0, 0, .09);
}
.cancel {
width: 100vw;
padding: 30rpx;
text-align: center;
background: #FFFFFF;
color: red;
font-weight: bold;
font-size: 30rpx;
}
.md-content {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 50rpx 0;
background-color: white;
}
.md-content-item {
margin: 0 70rpx;
position: relative;
}
.md-content-item image {
width: 100rpx;
height: 100rpx;
}
.md-content-item view {
margin-top: 15rpx;
font-size: 28rpx;
}
.sharebtn {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
}
.cu-modal {
position: fixed;
bottom: 166rpx;
left: 0;
z-index: 999999;
}
.gj {
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 32rpx;
color: #4B4B4B;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #4B4B4B;
}
}
.scroll {
width: 642rpx;
max-height: 340rpx;
view {
margin: 24rpx;
width: 600rpx;
height: 56rpx;
background: #E8E8E8;
border-radius: 12rpx 12rpx 12rpx 12rpx;
display: flex;
justify-content: center;
align-items: center;
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #7A7A7A;
}
.red {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #FF5F5F;
}
.lan {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #008CFF;
}
}
}
}
::v-deep ::-webkit-scrollbar {
/*滚动条整体样式*/
width: 4px !important;
height: 1px !important;
overflow: auto !important;
background: #ccc !important;
-webkit-appearance: auto !important;
display: block;
}
::v-deep ::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 10px !important;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background: #7b7979 !important;
}
::v-deep ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
// border-radius: 10px !important;
background: #FFFFFF !important;
}
.Poster {
position: relative;
top: 21rpx;
left: 30rpx;
width: 690rpx;
}
.posterClose {
position: absolute;
right: 8rpx;
top: 8rpx;
}
.pos {
position: relative;
}
.btnList {
width: 690rpx;
position: absolute;
bottom: 150rpx;
left: 30rpx;
display: flex;
justify-content: space-evenly;
span {
width: 250rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
display: flex;
justify-content: center;
align-items: center;
}
.save {}
}
.no-scroll {
overflow: hidden;
height: 100vh;
}
::v-deep ._root {
padding: 0 10rpx;
}
.no-border-button {
background-color: transparent;
/* 去掉背景色 */
border: none;
/* 去掉边框 */
padding: 0;
/* 去掉内边距 */
margin: 0;
/* 去掉外边距 */
display: inline-flex;
/* 使按钮内容居中 */
align-items: center;
/* 垂直居中 */
justify-content: center;
/* 水平居中 */
flex-flow: column;
height: 80rpx;
line-height: inherit;
span {
width: 250rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>
<style lang="scss">
.value_slide{
width: 50%;
::v-deep .uni-slider-handle-wrapper{
height: 10rpx;
}
::v-deep .uni-slider-handle{
background: url('@/static/detail/qiu.png') !important;
border-radius: 0;
background-size: 36rpx 36rpx !important;
width: 36rpx;
height: 36rpx;
top: 14rpx;
margin-left: -18rpx !important;
}
::v-deep .uni-slider-value{
color: #323232;
&::after{
content: '%';
}
}
// #ifdef MP-WEIXIN
.wx-slider-handle-wrapper{
height: 8rpx;
}
.wx-slider-handle{
background: url('@/static/detail/qiu.png') !important;
border-radius: 0;
background-size: 28rpx 28rpx !important;
width: 28rpx;
height: 28rpx;
top: 18rpx;
margin-left: -14rpx !important;
}
.wx-slider-value{
display: flex;
width: 30rpx;
color: #323232;
&::after{
content: '%';
}
}
// #endif
}
</style>

View File

@ -23,107 +23,51 @@
</view>
<view class="list-item">
<view class="left">
姓名
银行卡
</view>
<view class="right">
<u--input v-model="realname" placeholder="请输入姓名" border="none" inputAlign="right"></u--input>
</view>
</view>
<view class="list-item">
<view class="left">
性别
</view>
<view class="right" @click="show=true">
<u--input v-model="gender" disabled disabledColor="#ffffff" placeholder="未设置" border="none"
inputAlign="right"></u--input>
<u-icon name="arrow-right" color="#babdc7"></u-icon>
</view>
</view>
<view class="list-item">
<view class="left">
出生日期
</view>
<view class="right" @click="show3=true">
<u--input v-model="birthday" disabled disabledColor="#ffffff" placeholder="未设置"
border="none" inputAlign="right"></u--input>
<u-icon name="arrow-right" color="#babdc7"></u-icon>
</view>
</view>
<!-- <view class="list-item">
<view class="left">
年龄
</view>
<view class="right" @click="show1=true">
<u--input v-model="ages" disabled disabledColor="#ffffff" placeholder="未设置" border="none"
inputAlign="right"></u--input>
<u-icon name="arrow-right" color="#babdc7"></u-icon>
</view>
</view> -->
<!-- <view class="list-item">
<view class="left">
地区
</view>
<view class="right" @click="show4=true">
<u--input v-model="area" disabled disabledColor="#ffffff" placeholder="未设置" border="none"
inputAlign="right"></u--input>
<u-icon name="arrow-right" color="#babdc7"></u-icon>
</view>
</view> -->
<view class="list-item">
<view class="left">
职业
</view>
<view class="right" @click="show2=true">
<u--input v-model="zhiYe" disabled disabledColor="#ffffff" placeholder="未设置" border="none"
inputAlign="right"></u--input>
<u-icon name="arrow-right" color="#babdc7"></u-icon>
</view>
</view>
<view class="list-item">
<view class="left">
手机号
</view>
<view class="right">
<u--input v-model="phoneNumber" placeholder="请输入手机号" disabledColor="#fff" type='number'
border="none" disabled inputAlign="right" maxlength='11'></u--input>
</view>
</view>
</view>
</view>
</view>
<view class="bottom">
<u-button type="primary" text="保存" :customStyle="style" @click="submit"></u-button>
<u-button v-if="typeop == 2" :customStyle="style" @click="out">退出账号</u-button>
<u-button v-else :customStyle="style" @click="submit">保存</u-button>
</view>
<u-picker :show="show" :columns="columns" keyName='name' @confirm="confirm" @cancel="cancel"></u-picker>
<!-- <u-picker :show="show" :columns="columns" keyName='name' @confirm="confirm" @cancel="cancel"></u-picker>
<u-picker :show="show1" :columns="columns1" keyName='name' @confirm="confirm1" @cancel="cancel"></u-picker>
<u-picker :show="show2" :columns="columns2" keyName='name' @confirm="confirm2" @cancel="cancel"></u-picker>
<u-datetime-picker ref="datetimePicker" :show="show3" v-model="value" mode="date" :formatter="formatter"
@confirm="confirm3" @cancel="cancel" min-date="1970"></u-datetime-picker>
<u-picker :show="show4" ref="uPicker" :loading="loading" :columns="columns3" @change="changeHandler"
@cancel="cancel" @confirm="confirm4"></u-picker>
@cancel="cancel" @confirm="confirm4"></u-picker> -->
<u-popup :show="show5" @close="close" :closeOnClickOverlay="false" closeable :customStyle="avatarStyle">
<view class="avatar_choose">
<view class="cards" @click="clickAvatar(0)">
<img src="https://testy.hschool.com.cn//uploads/20241218/dea7681e46c3a2efbf3bdbab35ea2f66.png" alt="" />
<img src="https://naweigetetest2.hschool.com.cn/dyqc/img1.png" alt="" />
<view class="choose_btn" >
更换
</view>
</view>
<view class="cards" @click="clickAvatar(1)">
<img src="https://testy.hschool.com.cn//uploads/20241218/961fef0bae1a3cc5381cec0bbffa5ea6.png" alt="" />
<img src="https://naweigetetest2.hschool.com.cn/dyqc/img2.png" alt="" />
<view class="choose_btn" >
更换
</view>
</view>
<view class="cards" @click="clickAvatar(2)">
<img src="https://testy.hschool.com.cn//uploads/20241218/051a964f45acfaa9a4a7a9f2a8d7440c.png" alt="" />
<img src="https://naweigetetest2.hschool.com.cn/dyqc/img3.png" alt="" />
<view class="choose_btn">
更换
</view>
</view>
<view class="cards" @click="clickAvatar(3)">
<img src="https://testy.hschool.com.cn//uploads/20241218/1d0e2d8aabcd99a192dc3073c9bd7edb.png" alt="" />
<img src="https://naweigetetest2.hschool.com.cn/dyqc/img4.png" alt="" />
<view class="choose_btn">
更换
</view>
@ -145,6 +89,7 @@
export default {
data() {
return {
typeop: '',
avatarStyle: {
display: 'flex',
alignItems: 'center',
@ -179,13 +124,13 @@
style: {
width: '690rpx',
height: '90rpx',
borderRadius: '59rpx',
background: '#008CFF',
fontSize: '34rpx',
color: '#fff',
fontWeight: 'bold',
lineHeight: '166rpx',
border: 'none'
borderRadius: '148rpx',
background: '#323232',
fontSize: '36rpx',
color: '#BBFC5B',
lineHeight: '90rpx',
border: 'none',
fontFamily: "YouSheBiaoTiHei"
},
niName: '',
realname: '',
@ -253,7 +198,10 @@
]
}
},
onLoad() {
onLoad(options) {
if (options) {
this.typeop = options.type;
}
const userInfo = uni.getStorageSync('userInfo')
this.phoneNumber = userInfo.mobile
this.niName = userInfo.nickname
@ -264,15 +212,21 @@
this.getDetail()
},
methods: {
out(){
uni.clearStorageSync()
uni.reLaunch({
url: '/pages/my/index'
})
},
submit() {
console.log(this.avatar,'this.avatar')
uni.$u.http.post('/api/user/profile', {
avatar: this.avatar,
nickname: this.niName,
work: this.zhiYe,
birthday: this.birthday,
realname: this.realname,
gender: this.gender == '男' ? '1' : '0',
// work: this.zhiYe,
// birthday: this.birthday,
// realname: this.realname,
// gender: this.gender == '' ? '1' : '0',
update_fields: ['nickname', 'birthday', 'realname', 'gender', 'work','avatar']
}).then(res => {
if (res.code == 1) {
@ -404,13 +358,13 @@
clickAvatar(index) {
let avatar = ''
if (index == 0) {
avatar = 'https://testy.hschool.com.cn//uploads/20241218/dea7681e46c3a2efbf3bdbab35ea2f66.png'
avatar = 'https://naweigetetest2.hschool.com.cn/dyqc/img1.png'
} else if (index == 1) {
avatar = 'https://testy.hschool.com.cn//uploads/20241218/961fef0bae1a3cc5381cec0bbffa5ea6.png'
avatar = 'https://naweigetetest2.hschool.com.cn/dyqc/img2.png'
} else if (index == 2) {
avatar = 'https://testy.hschool.com.cn//uploads/20241218/051a964f45acfaa9a4a7a9f2a8d7440c.png'
avatar = 'https://naweigetetest2.hschool.com.cn/dyqc/img3.png'
} else if (index == 3) {
avatar = 'https://testy.hschool.com.cn/uploads/20241218/1d0e2d8aabcd99a192dc3073c9bd7edb.png'
avatar = 'https://naweigetetest2.hschool.com.cn/dyqc/img4.png'
}
this.avatar = avatar
console.log(this.avatar,'this.avatar')
@ -613,6 +567,7 @@
height: 166rpx;
background: #FFFFFF;
box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(186, 189, 199, 0.2);
}
.avatar_choose {
@ -632,6 +587,7 @@
width: 150rpx;
height: 150rpx;
margin-bottom: 20rpx;
border-radius: 50%;
}
.choose_btn {

View File

@ -213,6 +213,12 @@
"navigationBarTitleText": "待核销订单"
}
},
{
"path": "my/pendinPayStatus",
"style": {
"navigationBarTitleText": "已完成订单"
}
},
{
"path": "my/cancel",

View File

@ -10,14 +10,19 @@
<span class="searchBtn bg-blue" @click.stop="search()">搜索</span>
</view> -->
<u-navbar title="" :border="false" :placeholder="true" :autoBack="false" :is-back="false" :leftIcon="none">
<view class="" slot="center">
<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>
</view> -->
</u-navbar>
<view class="listBox flex flex-column flex-start">
<view class="flex flex-column flex-start align-items" style="margin-top: 300rpx;">
<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;">
@ -39,13 +44,14 @@
<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> -->
<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">
</view> -->
<!-- <view class="footer flex justify-center align-items">
<u-loadmore :status="loadStatus" />
</view>
</view> -->
</view>
<tab-bar :tabBarShow="2"></tab-bar>
</view>
@ -171,7 +177,7 @@
<style lang="scss" scoped>
.center-box {
width: 750rpx;
background: #F1F2F8;
background: #f7f7f7;
min-height: calc(100vh - 130rpx);
}

View File

@ -17,7 +17,7 @@
<view class="flex flex-column">
<view class="flex">
<image src="/static/index/about.png" mode="" style="width: 159rpx;height: 159rpx;"></image>
<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">
@ -35,17 +35,17 @@
</span>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;">
<view class="tt1">数量<span> (剩余30)</span></view>
<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"></image>
<span style="margin: 0 20rpx;">1</span>
<image style="width: 42rpx;height: 42rpx;" src="/static/detail/jia.png"></image>
<image style="width: 42rpx;height: 42rpx;" src="/static/detail/jian.png" @click="removeMon"></image>
<span style="margin: 0 20rpx;">{{ nummoney }}</span>
<image style="width: 42rpx;height: 42rpx;" src="/static/detail/jia.png" @click="addMon"></image>
</span>
</span>
<span class="line"></span>
<span class="flex align-items" style="width: 100%;margin-top: 20rpx;justify-content: space-between;">
<view class="tt1">支付金额</view>
<span style="color: #FF4810;font-weight: 900;">99.00</span>
<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;">
@ -71,15 +71,20 @@
<uni-table border stripe emptyText="暂无更多数据" >
<!-- 表头行 -->
<uni-tr>
<uni-th width="120" align="left">申请退款时间</uni-th>
<uni-th width="160" align="left">申请退款时间</uni-th>
<uni-th width="80" align="left">退款比例</uni-th>
<uni-th width="100" align="left">退款金额</uni-th>
<uni-th width="80" align="left">退款金额</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr>
<uni-td>2020-10-20</uni-td>
<uni-td>Jeson</uni-td>
<uni-td>北京市海淀区</uni-td>
<uni-tr v-if="detail.refund_info.status == 1">
<uni-td>报名开始后</uni-td>
<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>
@ -107,7 +112,7 @@
<view class="footer flex align-items" style="justify-content: space-between;">
<span style="margin-bottom: 170rpx; width: 750rpx;">
<cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = false"
<cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = true"
@protocolClick="protocolClick"></cc-protocolBox>
</span>
<view class="footer-right flex justify-center align-items">
@ -191,7 +196,7 @@
</template>
<script>
// import dayjs from 'dayjs';
import dayjs from 'dayjs';
import {
dateWeek,
dateWeekend
@ -205,11 +210,14 @@
// return this.detail.title;
// },
fomartertime() {
return dayjs(this.detail.last_time*1000).format('YYYY-MM-DD HH:mm:ss');
},
formattedTime() {
const startTime = dateWeek(this.detail.sign_start_time);
const endTime = dateWeekend(this.detail.sign_end_time);
const startTime = dateWeek(this.detail.start_time);
const endTime = dateWeekend(this.detail.end_time);
return {
formattedTime: `${startTime} ~ ${endTime}`
formattedTime: `${startTime} - ${endTime}`
};
}
},
@ -221,6 +229,8 @@
img: 'width: 100%'
},
nummoney:1,
priceGem:null,
Negotiate: null, //
agree: false,
agreeShow: false,
@ -304,6 +314,16 @@
},
methods: {
addMon(){
this.nummoney++
this.getMoneyGetm();
},
removeMon(){
if (this.nummoney > 1) {
this.nummoney--
this.getMoneyGetm();
}
},
change() {
this.agree = true
this.show = false
@ -383,6 +403,7 @@
}).then(res => {
if (res.code == 1) {
this.detail = res.data.detail
this.priceGem = res.data.detail.price
this.value_slide = res.data.detail.join_info.percent;
if (res.data.detail.is_collect != 0) {
this.is_collect = 1
@ -541,13 +562,39 @@
return this.selectedTime === time;
},
moveScroll() {},
//
getMoney() {
//
getMoneyGetm() {
let num = this.nummoney;
uni.$u.http.post('/api/school.newactivity.order/confirm', {
activity_id: this.id,
order_no: this.order_no,
is_compute: 1,
num:1
num:num || 1
}).then(res => {
if (res.code == 1) {
this.priceGem = res.data.order_data.totalprice
this.order_no = res.data.order_no
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
// _this.$api.toast(res.msg);
}
this.uloadingShow = false
}).catch(error => {
});
},
//
getMoney() {
let num = this.nummoney;
uni.$u.http.post('/api/school.newactivity.order/confirm', {
activity_id: this.id,
order_no: this.order_no,
is_compute: 1,
num:num || 1
}).then(res => {
if (res.code == 1) {
this.PayPirce = res.data.order_data.totalprice
@ -623,7 +670,7 @@
if (res.errMsg == "requestPayment:ok") {
that.order_no = ''
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
url: "/packageA/my/exercise?status=" + '2,3'
})
console.log('支付成功', res)
} else {
@ -905,7 +952,7 @@
border-radius: 44rpx;
.third-top{
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-weight: bold;
font-size: 36rpx;
color: #323232;
line-height: 50rpx;

View File

@ -15,14 +15,14 @@
<image src="/static/detail/rmb.png" class="topimgs_rmb"></image>
<view class="top_texts flex align-items" v-if="detail.feel == 0">
<span style="font-weight: 900;font-size: 60rpx;">{{ detail.price.split('.')[0] }}</span>
<span style="font-weight: 900;font-size: 56rpx;">{{ detail.price.split('.')[0] }}</span>
<view class="flex flex-column xiao">
<span>.{{ detail.price.split('.')[1] }}</span>
<span>/</span>
</view>
</view>
<view class="top_texts flex align-items" v-else>
<span style="font-weight: 900;font-size: 60rpx;">免费</span>
<span style="font-weight: 900;font-size: 56rpx;">免费</span>
</view>
<view class="first-box flex flex-start flex-column justify-start">
<view class="flex align-items">
@ -57,9 +57,11 @@
<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>
<span class="flex justify-center align-items">
<image src="/static/center/right_.png" mode="" style="width: 20rpx;height: 20rpx;"></image>
</span>
<image
src="/static/index/dian.png"
:class="detail.join_info.users.length > 0 ? '' :'smalld'"
style="width: 60rpx;height: 60rpx;z-index: 1;"
></image>
</view>
<span class="number">{{detail.join_info.people_number}}/{{detail.join_info.stock >= 10000 ? '9999+' : detail.join_info.stock}}
人数</span>
@ -90,12 +92,12 @@
<view class="v_html">
<rich-text :nodes="detail.content"></rich-text>
</view>
<image class="imgs" v-for="(item,index) in detail.images" :key="index" :src="item"></image>
<image mode="widthFix" class="imgs" v-for="(item,index) in detail.images" :key="index" :src="item"></image>
</view>
</view>
<view class="footer flex align-items" style="justify-content: space-between;">
<view class="footer flex align-items" style="justify-content: space-between;" v-if="detail.status == 2">
<view class="footer-left">
<!-- <view @click="callPhone(detail.user.mobile)">
<image src="../../static/center/phone.png" mode=""></image>
@ -117,11 +119,11 @@
</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="sign()"> 免费参加 </span>
<span v-if="type == 1 && detail.feel == 0" @click="buy()"> 立即支付 </span>
<span v-if="type == 0 && detail.feel == 1" @click="signs()"> 免费参加 </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>
<span v-if="type == 3" @click="confimTime()"> 确认时间 </span>
<span v-if="type == 3" @click="confimTime()"> 确认时间 </span> -->
<!-- <image src="../../static/center/signUp.png" mode="" v-if="type == 0" @click="sign()"></image>
<image src="../../static/center/appointment.png" mode="" v-else-if="type == 1" @click="open()"></image>
<image src="../../static/center/Confirm.png" mode="" v-else="type == 2" @click="confimTime()"></image> -->
@ -263,7 +265,8 @@
<script>
import dayjs from 'dayjs';
import {
dateWeek
dateWeek,
dateWeekend
} from '../../utils/dateFormat'
export default {
computed: {
@ -285,10 +288,10 @@
});
},
formattedTime() {
const startTime = dateWeek(this.detail.sign_start_time);
const endTime = dateWeek(this.detail.sign_end_time);
const startTime = dateWeek(this.detail.start_time);
const endTime = dateWeekend(this.detail.end_time);
return {
formattedTime: `${startTime} ~ ${endTime}`
formattedTime: `${startTime} - ${endTime}`
};
}
},
@ -374,7 +377,11 @@
overlayShow() {
const token = uni.getStorageSync('token')
if (token) {
this.overlay = true
// this.overlay = true
uni.showToast({
title: '开发中,暂未开放',
icon: 'none'
});
} else {
uni.showToast({
title: '请登录',
@ -538,15 +545,19 @@
// 0 1 2 3
sign() {
// this.buyShow = true
// this.type = 3;
uni.navigateTo({
url: '/pages/center/applyDetail?id=' + this.id
})
},
//
signs() {
uni.navigateTo({
url: '/pages/center/applyDetail?id=' + this.id+"&type=1"
})
},
buy() {
this.uloadingShow = true
this.getMoney()
@ -870,7 +881,7 @@
if (res.errMsg == "requestPayment:ok") {
that.order_no = ''
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
url: "/packageA/my/exercise?status=" + 3
})
console.log('支付成功', res)
} else {
@ -979,14 +990,14 @@
}
.top_texts{
position: absolute;
top: -156rpx;
top: -151rpx;
right: 68rpx;
z-index: 3;
color: #ffffff;
.xiao{
margin-left: 4rpx;
font-size: 22rpx;
font-weight: 400;
font-weight: bold;
}
}
.first-box {
@ -1011,7 +1022,7 @@
width: 586rpx;
height: 52rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-weight: bold;
font-size: 36rpx;
color: #323232;
// margin-left: 16rpx;
@ -1055,6 +1066,7 @@
width: 156rpx;
height: 48rpx;
border-radius: 8rpx;
margin-left: 20rpx;
}
}
}
@ -1065,7 +1077,9 @@
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: 20rpx 0 16rpx 0;
.smalld{
margin-left: 0 !important;
}
.number {
height: 40rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
@ -1091,9 +1105,10 @@
background: #ffffff;
margin-top:20rpx;
border-radius: 44rpx;
margin-bottom: 150rpx;
.third-top{
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-weight: bold;
font-size: 36rpx;
color: #323232;
line-height: 50rpx;
@ -1117,10 +1132,14 @@
padding: 30rpx;
overflow: hidden;
margin: 0 auto;
height: 100%;
.v_html{
word-wrap: break-word;word-break: break-all;
font-size: 26rpx;
line-height: 42rpx;
}
.imgs{
margin-top:30rpx;
width: 690rpx;
}
}
@ -1151,7 +1170,7 @@
position: fixed;
z-index: 99;
/* 绝对定位 */
bottom: 0;
bottom: 40rpx;
/* 定位在底部 */
left: 0;
/* 定位在左边 */

View File

@ -90,7 +90,7 @@
<span class="line-row"></span>
<view class="row flex align-items" style="margin: 25rpx 0;">
<view class="row flex align-items" style="margin: 25rpx 0;" v-if="form.price != 0">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>退款政策
</span>
@ -144,7 +144,7 @@
</view>
</view>
<span style="margin: 30rpx 0 280rpx 0; width: 750rpx;" v-if="status == -1 || status == 2">
<span style="margin: 30rpx 0 320rpx 0; width: 750rpx;" v-if="status == -1 || status == 2">
<cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = false"
@protocolClick="protocolClick"></cc-protocolBox>
</span>
@ -153,31 +153,21 @@
<span class="flex align-items justify-center" v-if="agree == false"
style="background: #EEEEEE;color: #9C9C9C;">确认发布</span>
</view>
<!-- 退款政策 -->
<u-popup class="popup_tkall" @touchmove.native.stop.prevent :closeable="false" :show="tuikuan" :round="22" mode="bottom" @close="closetuikuan"
@open="opentuikuan" :custom-style="popupStyletk">
<span style="font-size: 42rpx;font-weight: 800;margin: 12rpx 0 24rpx 0;height: 120rpx;">选择退款政策</span>
<span class="closetk">取消</span>
<span class="confirmtk">确认</span>
<view class="popup-content">
<view class="popup-content-item" v-for="(item,index) in refund_policy" :key="index" @click="selectItem(index,item)">
<span class="popup-content-item-title">随时退</span>
<span class="popup-content-item-content">活动开始前随时申请退款100%</span>
<span class="popup-content-item-content">活动开始后不支持退款特殊原因协商</span>
</view>
</view>
<view class="popup-content_act">
<view class="popup-content-item" v-for="(item,index) in refund_policy" :key="index" @click="selectItem(index,item)">
<span class="popup-content-item-title">{{item.name}}</span>
<span class="popup-content-item-content">{{item.content}}</span>
</view>
</view>
<!-- <view class="popup-footer">
<span class="zhixiao" v-if="agreeShow == false">我同意</span>
<span class="zhixiao shows_zhidao" v-if="agreeShow == true"
@click="change">我同意</span>
</view> -->
<!-- 退款政策 -->
<u-popup @touchmove.native.stop.prevent :closeable="false" :show="tuikuan" :round="22" mode="bottom" @close="closetuikuan"
@open="opentuikuan" :custom-style="popupStyletk">
<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>
</view>
</view>
</u-popup>
<!-- 声明 -->
@ -199,30 +189,33 @@
<!-- 活动分类 -->
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1162rpx'}" :closeable="true"
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1040rpx'}" :closeable="true"
@close="closebq">
<view class="popup_bq">
<img src="https://naweigetetest2.hschool.com.cn/dyqc/hdfenlei.png" alt="" />
<view class="flex flex-column w-100 bqlist">
<view class="flex flex-column w-100 bqlist">
<span>最近使用</span>
<view class="flex align-items allmybqs">
<view class="flex align-items bqpiece" v-for="(item_bq,index) in list" :key="index">
<span>
{{ item_bq.name }}
</span>
</view>
</view>
<span>最近使用</span>
<view class="flex align-items allmybqs">
<view class="flex align-items bqpiece" v-for="(item_bq,index) in list" :key="index">
<span>
{{ item_bq.name }}
</span>
<u-icon name="close" color="#babdc7" @click="removebq(index)"></u-icon>
</view>
</view>
<span style="margin-top: 50rpx;">全部标签</span>
<view class="flex align-items allbqs">
<view class="flex align-items" :class="['bqpiece', { active: current === index }]" v-for="(item,index) in bqList" :key="index">
<span @click="addbq(item,index)">
{{ item.name }}
</span>
</view>
</view>
</view>
<span style="margin-top: 50rpx;">全部标签</span>
<scroll-view scroll-y="true" class="flex align-items allbqs">
<view style="display: flex; flex-wrap: wrap;">
<view class="flex align-items" :class="['bqpiece', { active: current === index }]" v-for="(item,index) in bqList" :key="index">
<span @click="addbq(item,index)">
{{ item.name }}
</span>
</view>
</view>
</scroll-view>
</view>
</view>
</u-popup>
@ -290,7 +283,7 @@
cate_idsName:"",
content: '',
refund_id:'随时退',
price:0,
price:1,
stock:'',
sign_time:'',
time:'',
@ -348,6 +341,30 @@
this.getBqList();
this.getrefund_list();
this.getitembq();
},
onShow() {
this.form = {
cate_ids: '',
//
cate_idsName:"",
content: '',
refund_id:'随时退',
price:1,
stock:'',
sign_time:'',
time:'',
images:'',
title: '',
address: '',
latitude: '',
longitude: '',
address_detail: '', //
date: '', //
date1: '', //
birth: '', //
birth1: '', //
}
},
filters: {
formatTimestamp(value) {
@ -392,6 +409,15 @@
uni.setStorageSync('zjlist',JSON.stringify(this.list))
}
},
//
removebq(i){
this.list.splice(i,1);
uni.setStorageSync('zjlist',JSON.stringify(this.list))
let arr = this.list.map((item)=>{
return item.name
})
this.form.cate_idsName = arr.join(',')
},
addbq(val,index){
this.current = index;
let arrbql = uni.getStorageSync("zjlist");
@ -1125,7 +1151,7 @@
.bottom {
width: 750rpx;
height: 122rpx;
height: 162rpx;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 12rpx 0rpx rgba(111, 190, 255, 0.1);
border-radius: 0rpx 0rpx 0rpx 0rpx;
@ -1172,43 +1198,7 @@
}
.popup_tkall{
.popup-content{
width: 690rpx;
height: 220rpx;
background: #F7F7F7;
border-radius: 18rpx 18rpx 18rpx 18rpx;
border: 2rpx solid #EAEAEA;
margin-bottom: 30rpx;
}
.popup-content_act{
width: 690rpx;
height: 220rpx;
background: #FAFFF3;
border-width: 2rpx;
border-style: solid;
border-image: linear-gradient(270deg, rgba(251, 246, 109, 1), rgba(156, 234, 162, 1)) 2 2;
border-radius: 18rpx;
}
.closetk{
position: absolute;
top:46rpx;
left: 30rpx;
color: #9C9C9C;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
.confirmtk{
position: absolute;
top:46rpx;
right: 30rpx;
color: #3D3D3D;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
}
.popup-footer {
@ -1288,12 +1278,12 @@
display: flex;
flex-direction: column;
align-items: center;
height: 1162rpx;
height: 1040rpx;
position: relative;
img {
position: absolute;
width: 750rpx;
height: 1162rpx;
height: 1040rpx;
top: -164rpx;
z-index: 0;
}
@ -1301,15 +1291,17 @@
margin-top: 160rpx;
z-index: 1;
margin-left: 80rpx;
height: 100%;
.allmybqs{
flex-wrap: wrap;
width: 720rpx;
}
.allbqs{
overflow: scroll;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
flex-wrap: wrap;
height: 620rpx;
width: 720rpx;
width: 700rpx;
}
.bqpiece{
width: 210rpx;
@ -1336,4 +1328,48 @@
}
.popup_tkall{
// height: 1100rpx;
.popup_tk{
font-size: 42rpx;font-weight: 800;margin: 12rpx 0 24rpx 0;height: 120rpx;
text-align: center;
}
.popup-content{
height: 900rpx;
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;
margin-bottom: 30rpx;
:active{
border-image: linear-gradient(270deg, rgba(251, 246, 109, 1), rgba(156, 234, 162, 1)) 2 2;
}
}
.closetk{
position: absolute;
top:46rpx;
left: 30rpx;
color: #9C9C9C;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
.confirmtk{
position: absolute;
top:46rpx;
right: 30rpx;
color: #3D3D3D;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
}
</style>

View File

@ -10,7 +10,9 @@
<view class="box">
<!-- logo -->
<!-- logo -->
<view>
<image
src="/static/index/logo1.png"
@ -32,6 +34,7 @@
<span class="searchBtn" @click.stop="search()">搜索</span>
</view>
<view class="swiper-box">
<MySwiper :list="swiperList"></MySwiper>
</view>
@ -71,7 +74,7 @@
<view
class="flex"
style="margin-top: 24rpx"
style="margin-top: 30rpx"
>
<view
class="right flex flex-column"
@ -80,7 +83,7 @@
<span class="title white-space">{{ item.title }}</span>
<view class="first-image flex align-items" style="margin-top: 20rpx;width: 100%;">
<image :src="item.user.avatar" style="width: 36rpx;height: 36rpx;"></image>
<span style="color: #9C9C9C;margin-left: 10rpx;width: 35%;">{{ item.user.nickname }}</span>
<span style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span>
<view class="white-space" style="width: 60%;">
<span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in item.classes_cate">#{{ items_t }}</span>
</view>
@ -89,9 +92,9 @@
<view class="flex flex-column" style="margin-top: 20rpx;">
<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 8rpx;">{{ dateWeeks(item.sign_start_time) }}</span>|
<span class="white-space" style="margin-left: 8rpx;width: 260rpx;">{{ item.address_detail }}</span>
<!-- <span class="time_tex time_texs" v-if="item.status == 4">{{ '进行中' }}</span> -->
<span style="margin:0 20rpx;">{{ dateWeeks(item.start_time) }}</span>|
<span class="white-space" style="margin-left: 20rpx;width: 260rpx;">{{ item.address_detail }}</span>
</view>
</view>
@ -104,7 +107,7 @@
<view class="bottom flex align-items">
<view class="flex align-items toptext">
<span class="flex align-items" style="width: 200rpx">
<span class="flex align-items">
<u-avatar-group
:urls="item.join_info.users"
keyName="avatar"
@ -137,7 +140,7 @@
</view>
<!-- 全部标签 -->
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1304rpx'}" :closeable="true"
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1040rpx'}" :closeable="true"
@close="closebq">
<view class="popup_bq">
<img src="https://naweigetetest2.hschool.com.cn/dyqc/biaoqian.png" alt="" />
@ -158,22 +161,27 @@
</view>
</view>
<span style="margin-top: 50rpx;">全部标签</span>
<view class="flex align-items allbqs">
<view class="flex align-items bqpiece" v-for="(item,index) in bqList" :key="index">
<span>
<image
:src="item.image"
style="width: 48rpx;height: 48rpx;margin-right:10rpx;"
></image>
{{ item.name }}
</span>
<u-icon name="plus" color="#babdc7" @click="addbq(item)"></u-icon>
</view>
<span style="margin-top: 30rpx;">全部标签</span>
<scroll-view scroll-y="true" class="flex align-items allbqs">
<view style="display: flex; flex-wrap: wrap;">
<view class="flex align-items bqpiece" v-for="(item,index) in bqList" :key="index">
<span>
<image
:src="item.image"
style="width: 48rpx;height: 48rpx;margin-right:10rpx;"
></image>
{{ item.name }}
</span>
<u-icon name="plus" color="#babdc7" @click="addbq(item)"></u-icon>
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</u-popup>
@ -411,7 +419,7 @@ export default {
page: 1,
limit: 6,
order: "normal",
status: "2,3,4",//5
status: "2",//5
auth_status: 1 //
},
})
@ -608,12 +616,21 @@ 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;
height: 100%;
background: #323232 ;
border-radius: 30rpx;
border-radius: 40rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
@ -628,7 +645,7 @@ export default {
.hot {
// margin-top: 30rpx;
margin-bottom: 70rpx;
margin-bottom: 100rpx;
}
}
@ -648,13 +665,13 @@ export default {
}
.right {
margin-left: 24rpx;
margin-left: 30rpx;
width: 100%;
.title {
width: 95%;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-weight: bold;
font-size: 30rpx;
color: #323232;
}
@ -733,8 +750,9 @@ export default {
font-weight: 400;
font-size: 24rpx;
color: #323232;
line-height: 42rpx;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.time_texs{
background: #FF4810;
@ -745,7 +763,7 @@ export default {
.imgs_con{
width: 202rpx;
height: 202rpx;
margin-right: 20rpx;
margin-right: 12rpx;
&:first-child{
border-radius: 18rpx 0 0 18rpx;
}
@ -758,7 +776,7 @@ export default {
.bottom {
margin: 32rpx 0 32rpx 24rpx;
width: 626rpx;
width: 655rpx;
.toptext{
width: 480rpx;
.smalld{
@ -894,7 +912,7 @@ export default {
}
.part {
width: 180rpx;
width: 162rpx;
height: 70rpx;
background: url(@/static/index/shangche.png);
background-size: 162rpx 70rpx;
@ -905,7 +923,7 @@ export default {
color: #BBFC5B;
}
.part1{
width: 180rpx;
width: 162rpx;
height: 70rpx;
background: url(@/static/index/shangchew.png);
background-size: 162rpx 70rpx;
@ -924,28 +942,31 @@ export default {
display: flex;
flex-direction: column;
align-items: center;
height: 1304rpx;
height: 1040rpx;
position: relative;
img {
position: absolute;
width: 750rpx;
height: 1304rpx;
height: 1040rpx;
top: -164rpx;
z-index: 0;
}
.bqlist{
margin-top: 160rpx;
margin-top: 130rpx;
z-index: 1;
margin-left: 80rpx;
.allmybqs{
flex-wrap: wrap;
width: 720rpx;
margin-top:20rpx ;
}
.allbqs{
overflow: scroll;
display: flex;
overflow-y: scroll;
flex-wrap: wrap;
height: 620rpx;
width: 720rpx;
width: 692rpx;
margin-top:20rpx ;
}
.bqpiece{
width: 210rpx;

View File

@ -3,20 +3,23 @@
<view class="box flex justify-start align-items flex-column">
<view class="con-center flex flex-start flex-column">
<view class="header flex align-items">
<view class="hea-left flex align-items" @click="clickTop()">
<image :src="avatar" mode="" class="avatar"></image>
<view class="hea-left flex align-items" >
<image :src="avatar" mode="" class="avatar" @click="clickTop(1)"></image>
<view class="first-header flex justify-center align-items">
<span>
{{userName}}
</span>
<view class="flex flex-column" @click="clickTop(1)">
<span style="margin-bottom: 20rpx;">
{{userName}}
</span>
<span style="color: #909090; font-size: 24rpx;">带着热爱在搭子圈里撒野~</span>
</view>
<image src="../../static/shezhi.png" mode=""
style="width: 50rpx; height: 50rpx;margin-left: 16rpx;"></image>
style="width: 50rpx; height: 50rpx;position: absolute;right: 0;" @click="clickTop(2)"></image>
</view>
</view>
<view class="hea-right flex flex-column align-items" @click="out()" v-if="token">
<!-- <view class="hea-right flex flex-column align-items" @click="out()" v-if="token">
<image src="../../static/my/Leave.png" mode="" style="width: 64rpx; height: 64rpx;"></image>
<span>退出登录</span>
</view>
</view> -->
</view>
<view class="top_box flex">
@ -69,7 +72,7 @@
>
<view
class="flex "
style="margin-top: 24rpx"
style="margin-top: 30rpx"
>
<view
class="right flex flex-column"
@ -78,7 +81,7 @@
<span class="title white-space">{{ item.title }}</span>
<span class="first-image flex align-items" style="margin-top: 20rpx;width: 100%;">
<image :src="item.user.avatar" style="width: 36rpx;height: 36rpx;"></image>
<span style="color: #9C9C9C;margin-left: 10rpx;width: 35%;">{{ item.user.nickname }}</span>
<span style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span>
<view class="white-space" style="width: 60%;">
<span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in item.classes_cate">#{{ items_t }}</span>
</view>
@ -88,10 +91,10 @@
<view class="flex flex-column" style="margin-top: 20rpx;">
<view class="time flex align-items white-space">
<span class="time_tex" v-if="item.status == 2">{{ '报名中' }}</span>
<span style="margin:0 8rpx;"
<span style="margin:0 20rpx;"
>{{ dateWeeks(item.sign_start_time) }}
</span>|<span class="white-space"
style="margin-left: 8rpx;width: 260rpx;"
style="margin-left: 20rpx;width: 260rpx;"
>{{ item.address_detail }}</span
>
</view>
@ -104,8 +107,8 @@
</view>
</view>
<view class="bottom flex align-items">
<view class="flex align-items">
<span class="flex align-items" style="width: 200rpx">
<view class="flex align-items toptext">
<span class="flex align-items">
<u-avatar-group
:urls="item.join_info.users"
keyName="avatar"
@ -114,12 +117,12 @@
gap="0.4"
></u-avatar-group>
<image
v-if="item.join_info.users.length > 0"
:class="item.join_info.users.length > 0 ? '' :'smalld'"
src="/static/index/dian.png"
style="width: 60rpx;height: 60rpx;margin-left:-20rpx;z-index: 1;"
></image>
</span>
<view class="number flex align-items">
<view class="number flex align-items" >
{{ Number(item.join_info.people_number)+"人已上车" }}
</view>
</view>
@ -374,7 +377,10 @@
onShow() {
this.getStatus()
this.token = uni.getStorageSync('token')
this.token = uni.getStorageSync('token');
if (this.token) {
this.getUserInfo();
}
this.unread_number = this.number
const userinfo = uni.getStorageSync('userInfo')
const activityInfo = uni.getStorageSync('activityInfo')
@ -388,8 +394,10 @@
}
this.actives = activityInfo.join_num;
this.pushActives = activityInfo.release_num;
this.avatar = uni.getStorageSync('userInfo').avatar || '../../static/moren.png';
let openidInfo = uni.getStorageSync('openidInfo')
let openidInfo = uni.getStorageSync('openidInfo');
let _this = this;
if (!openidInfo) {
_this.miniLogin();
@ -397,6 +405,7 @@
this.number();
this.getinit();
this.getHotList();
},
created() {
const systemInfo = uni.getSystemInfoSync();
@ -425,9 +434,9 @@
.get("/api/school.new_activity/activity_list", {
params: {
page: 1,
limit: 1,
order: "normal",
status: "2,3,4", //5
limit: 3,
order: "hot",
status: "2", //5
auth_status: 1,
},
})
@ -760,6 +769,11 @@
uni.setStorageSync('token', res.data.token)
_this.getUserInfo()
this.token = res.data.token
uni.showToast({
title: '登陆成功',
icon: 'none',
duration: 2000
})
// _this.$api.setCache('token', res.data.token);
} else {
uni.showToast({
@ -786,15 +800,10 @@
uni.setStorageSync('userInfo', res.data.user_info)
uni.setStorageSync('settleInfo', res.data.settle_info)
uni.setStorageSync('activityInfo', res.data.activity_info)
uni.showToast({
title: '登陆成功',
icon: 'none',
duration: 2000
})
this.showPopup = false
this.userName = res.data.user_info.nickname;
this.avatar = res.data.user_info.avatar;
this.actives = res.data.activity_info.join_num;
this.pushActives = res.data.activity_info.release_num;
@ -859,7 +868,7 @@
// },
clickTop() {
clickTop(val) {
// uni.navigateTo({
// url: '/packageA/my/person-detail'
// })
@ -869,7 +878,7 @@
this.showPopup = true
} else {
uni.navigateTo({
url: "/packageA/my/person-detail",
url: "/packageA/my/person-detail?type="+val,
})
}
},
@ -929,7 +938,7 @@
.box {
border-radius: 8rpx 8rpx 8rpx 8rpx;
// padding-top: env(safe-area-inset-top);
padding-top: 170rpx;
padding-top: 200rpx;
/* 顶部安全距离 */
.backImg {
@ -979,14 +988,15 @@
justify-content: space-between;
.hea-left {
width: 100%;
position: relative;
.avatar {
width: 120rpx;
height: 120rpx;
width: 140rpx;
height: 140rpx;
border-radius: 50%;
}
margin-left: 20rpx;
.first-header {
margin-left: 18rpx;
@ -996,7 +1006,7 @@
font-weight: 800;
font-size: 34rpx;
color: #181818;
line-height: 26rpx;
// line-height: 26rpx;
}
}
@ -1017,7 +1027,9 @@
}
}
.hea-right {}
.hea-right {
// width: 20%;
}
.line {}
@ -1026,7 +1038,7 @@
.top_box{
width: 690rpx;
margin-top: 52rpx;
margin-top: 32rpx;
view{
background: #FFFFFF;
border-radius: 18rpx;
@ -1043,7 +1055,7 @@
.p1{
width: 100%;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-weight: bold;
font-size: 30rpx;
color: #323232;
}
@ -1177,7 +1189,7 @@
}
}
.service{
margin-top: 42rpx;
margin-top: 30rpx;
height: 206rpx;
background: url("https://naweigetetest2.hschool.com.cn/dyqc/zhuliren.png");
background-size: 690rpx 206rpx;
@ -1185,37 +1197,33 @@
}
.hot {
// margin-top: 30rpx;
margin-bottom: 70rpx;
margin-bottom: 100rpx;
.hot-top {
// padding-bottom: 12rpx;
// border-bottom: 2rpx solid red;
.left {
background-image: url("/static/footer.png");
background-repeat: no-repeat;
background-position: bottom;
span {
width: 160rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 40rpx;
color: #222222;
line-height: 47rpx;
}
}
.more {
width: 104rpx;
height: 40rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #222222;
line-height: 30rpx;
}
}
}
.part {
width: 162rpx;
height: 70rpx;
background: url(@/static/index/shangche.png);
background-size: 162rpx 70rpx ;
background-repeat: no-repeat;
font-family: 'YouSheBiaoTiHei';
font-weight: 400;
font-size: 42rpx;
color: #BBFC5B;
}
.part1{
width: 162rpx;
height: 70rpx;
background: url(@/static/index/shangchew.png);
background-size: 162rpx 70rpx;
background-repeat: no-repeat;
font-family: 'YouSheBiaoTiHei';
font-weight: 400;
font-size: 42rpx;
color: #9C9C9C;
}
.content {
// height: 462rpx;
// overflow-x: auto;
@ -1226,18 +1234,18 @@
.bbb {
background: #ffffff;
margin-top: 30rpx;
margin-top: 24rpx;
border-radius: 36rpx;
}
.right {
margin-left: 24rpx;
margin-left: 30rpx;
width: 100%;
.title {
width: 95%;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-weight: bold;
font-size: 30rpx;
color: #323232;
}
@ -1307,27 +1315,33 @@
font-size: 26rpx;
color: #323232 ;
line-height: 30rpx;
.time_tex{
width: 116rpx;
height: 42rpx;
background: #BBFC5B;
border-radius: 159rpx;
font-weight: 400;
.time_tex{
width: 116rpx;
height: 42rpx;
background: #BBFC5B;
border-radius: 159rpx;
font-weight: 400;
font-size: 24rpx;
color: #323232;
line-height: 42rpx;
text-align: center;
}
color: #323232;
display: flex;
justify-content: center;
align-items: center;
}
.time_texs{
background: #FF4810;
color: #ffffff;
}
}
.imgs_con{
width: 202rpx;
height: 202rpx;
margin-right: 20rpx;
margin-right: 12rpx;
&:first-child{
border-radius: 18rpx 0 0 18rpx;
}
&:nth-child(3){
&:nth-child(3){
border-radius: 0 18rpx 18rpx 0;
}
}
@ -1336,9 +1350,13 @@
.bottom {
margin: 32rpx 0 32rpx 24rpx;
width: 626rpx;
width: 655rpx;
.toptext{
width: 480rpx;
.smalld{
margin-left: 0 !important;
}
}
.number {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
@ -1374,14 +1392,4 @@
margin-right: 24rpx;
}
}
.part {
width: 180rpx;
height: 70rpx;
background: url(@/static/index/shangche.png);
background-size: 168rpx 70rpx ;
font-family: 'YouSheBiaoTiHei';
font-weight: 400;
font-size: 42rpx;
color: #BBFC5B;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<view class="app">
<view class="countdown" :style="{ top: navHeight }" v-if="countdownNum > 0" @click="jump">{{ countdownNum }}s{{ countTip }}</view>
<image src="https://testy.hschool.com.cn/uploads/20250222/926c6226c4eec9d142f54128e8f5b4a8.png" mode=""></image>
<image src="https://naweigetetest2.hschool.com.cn/dyqc/kaiping.jpg" mode=""></image>
</view>
</template>
@ -94,7 +94,8 @@ export default {
right: 40rpx;
width: 120rpx;
height: 60rpx;
border-radius: 8rpx;
font-size: 26rpx;
border-radius: 40rpx;
background-color: rgba(0, 0, 0, 0.6);
color: #fff;
text-align: center;

BIN
static/index/hexiao.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/message/activen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
static/message/message.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -1,12 +1,12 @@
<template>
<view class="protocol_box">
<view class="protocol_box" @click="protocolClick()">
<view class="select" :class="{active: agree}" @click="agreeClick"></view>
由于本类活动特殊性请自已查看
<view v-for="(item, index) in protocolArr" :key="index">
<!-- <text @click="protocolClick(index)">{{protocolArr[index]}}</text> -->
<text @click="protocolClick(index)">免责声明</text>
<text>免责声明</text>
<span v-if="index < (protocolArr.length - 1)">{{" "}}</span>

View File

@ -22,6 +22,9 @@ export const dateJsing = time =>{
}
export const dateWeek = time =>{
return dayjs.unix(time).format('ddd MM-DD HH:mm')
}
export const dateWeekbeg = time =>{
return dayjs.unix(time).format('MM-DD(ddd) HH:mm')
}
export const dateWeekend = time =>{