修改消息 首页 和 核销 添加封装二次弹窗组件

This commit is contained in:
张凯 2025-05-20 18:10:18 +08:00
parent 1551608ee7
commit 3967a563f6
31 changed files with 868 additions and 1410 deletions

View File

@ -171,11 +171,11 @@
this.videoIndex = null this.videoIndex = null
this.videoId = null this.videoId = null
this.autoplaySwiper = true this.autoplaySwiper = true
if (!type) { // if (!type) {
setTimeout(v => { // setTimeout(v => {
this.swiperCurrent++ // this.swiperCurrent++
}, 500) // }, 500)
} // }
}, },
} }
} }

View File

@ -19,7 +19,7 @@
</view> --> </view> -->
<view class="centerBox flex justify-start align-items flex-column"> <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" <view class="flex w-100 center flex-column" style="align-items: center;" v-for="(item,index) in list"
:key="index" @click.stop="openUrl('/pages/afterSales/info?id='+item.id)"> :key="index" @click.stop="openUrl('/packageA/afterSales/info?id='+item.id)">
<view class="flex" style="width: 690rpx;"> <view class="flex" style="width: 690rpx;">
<image :src="item.detail.headimage" mode="" style="width: 280rpx; height: 200rpx;"></image> <image :src="item.detail.headimage" mode="" style="width: 280rpx; height: 200rpx;"></image>
<view class="flex flex-column rightBox"> <view class="flex flex-column rightBox">
@ -120,7 +120,7 @@
// //
service(id) { service(id) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/afterSales/index?id=" + id url: "/packageA/afterSales/index?id=" + id
}) })
}, },
// //

View File

@ -67,7 +67,7 @@
<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"> <view class="footer-right flex justify-center align-items">
<span @click="hexiaohd()"> 核销订单 </span> <span @click="hexiaohd()"> 确认核销 </span>
</view> </view>
</view> </view>

View File

@ -313,7 +313,7 @@
// //
service(id) { service(id) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/afterSales/index?id=" + id url: "/packageA/afterSales/index?id=" + id
}) })
}, },
// //

View File

@ -342,7 +342,7 @@
// //
service(id) { service(id) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/afterSales/index?id=" + id url: "/packageA/afterSales/index?id=" + id
}) })
}, },
headerSelected(status) { headerSelected(status) {

View File

@ -454,7 +454,7 @@ export default {
// //
service(id) { service(id) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/afterSales/index?id=" + id, url: "/packageA/afterSales/index?id=" + id,
}); });
}, },
// //

View File

@ -712,7 +712,7 @@
// //
service(id) { service(id) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/afterSales/index?id=${id}` url: `/packageA/afterSales/index?id=${id}`
}) })
}, },
// //

View File

@ -52,7 +52,19 @@
"navigationStyle": "custom" // "navigationStyle": "custom" //
} }
}, },
{
"path": "pages/center/detailSys",
"style": {
"navigationBarTitleText": "", //
"navigationStyle": "custom"
}
},
{
"path": "pages/center/signDetail",
"style": {
"navigationBarTitleText": "报名信息"
}
},
{ {
"path": "pages/center/MechanismDetail", "path": "pages/center/MechanismDetail",
"style": { "style": {
@ -77,65 +89,55 @@
"navigationBarTitleText": "支付参加" "navigationBarTitleText": "支付参加"
} }
}, },
{
"path": "pages/index/group",
"style": {
"navigationBarTitleText": "一键进群"
}
},
{
"path": "pages/index/previousList",
"style": {
"navigationBarTitleText": "往期课程"
}
},
{
"path": "pages/afterSales/index",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "pages/afterSales/list",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "pages/afterSales/info",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "pages/Negotiate/agreement",
"style": {
"navigationBarTitleText": "用户协议"
}
},
{
"path": "pages/Negotiate/privacy",
"style": {
"navigationBarTitleText": "隐私政策"
}
},
{ {
"path": "pages/activity/stationStemys", "path": "pages/activity/stationStemys",
"style": { "style": {
"navigationBarTitleText": "系统消息" "navigationBarTitleText": "系统消息",
"navigationStyle": "custom"
} }
} }
], ],
"subPackages": [{ "subPackages": [{
"root": "packageA", "root": "packageA",
"pages": [ "pages": [
{
"path": "afterSales/index",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "afterSales/list",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "afterSales/info",
"style": {
"navigationBarTitleText": "售后订单"
}
},
{
"path": "Negotiate/agreement",
"style": {
"navigationBarTitleText": "用户协议"
}
},
{
"path": "Negotiate/privacy",
"style": {
"navigationBarTitleText": "隐私政策"
}
},
{ {
"path": "my/person-detail", "path": "my/person-detail",
"style": { "style": {
"navigationBarTitleText": "个人中心" "navigationBarTitleText": "个人中心"
} }
}, },
{ {
"path": "my/makeList", "path": "my/makeList",
"style": { "style": {

View File

@ -69,7 +69,7 @@
unread_activity_number: '', unread_activity_number: '',
keywords: '', keywords: '',
page: 1, page: 1,
limit: 10, limit: 20,
loadStatus: 'loading', loadStatus: 'loading',
status: '', status: '',
mini_type: '', mini_type: '',
@ -339,10 +339,10 @@
} }
.center { .center {
width: 690rpx; width: 690rpx;
margin-bottom: 200rpx; // margin-bottom: 200rpx;
position: fixed; position: fixed;
margin-top: 130rpx; margin-top: 130rpx;
height: 100%; height: 1120rpx;
overflow-y: auto; overflow-y: auto;
.list { .list {
width: 690rpx; width: 690rpx;

View File

@ -1,17 +1,43 @@
<template> <template>
<view class="box flex justify-center flex-column"> <view class="box flex justify-center flex-column">
<view class="center flex flex-column flex-start" v-for="detail,index in list" :key="index"> <view class="nav">
<span class="title">{{detail.title}}</span> <u-navbar :is-back="true" :autoBack='true' leftIconColor="#323232" bgColor="#FFFFFF">
<span class="span" style="margin-top: 20rpx;"> <view
<!-- <u-parse :content="detail.desc" :selectable="true"></u-parse> --> class="u-nav-slot"
<rich-text :nodes="detail.desc" selectable user-select></rich-text> slot="left"
</span> >
<span class="span" style="margin-top: 20rpx; color: #999999 ;">{{detail.createtime_text}}</span> <u-icon
<span class="jiao"> name="arrow-left"
<u-badge :isDot="true" type="error"></u-badge> size="22"
</span> ></u-icon>
</view>
<view
class="nav_txt"
slot="center"
@click="one"
>
<span style="padding-right: 20rpx;">系统消息</span>
<u-icon
size="19"
name="/static/clearicon.png"
></u-icon>
</view>
</u-navbar>
</view> </view>
<u-loadmore :status="loadStatus" /> <view style="margin-top: 180rpx;">
<view class="center flex flex-column flex-start" v-for="detail,index in list" :key="index" @click="only(detail.id,detail.type)">
<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" v-if="detail.type == 1">
<u-badge :isDot="true" type="error"></u-badge>
</span>
</view>
</view>
<u-loadmore :status="loadStatus" nomoreText="已经到底啦~"/>
</view> </view>
</template> </template>
@ -22,8 +48,7 @@
page: 1, page: 1,
limit: 10, limit: 10,
list:[], list:[],
loadStatus:'', loadStatus: 'loading',
loadStatus: 'loading'
}; };
}, },
onLoad(option) { onLoad(option) {
@ -36,13 +61,39 @@
this.getDetail(); this.getDetail();
}, },
methods: { methods: {
//
only(id,type){
if (type == 1) {
uni.$u.http.get('/api/school/message/detail', {
params: {
id: id,
}
}).then(res => {
if (res.code == 1) {
uni.showToast({
title: '确认已读',
icon: 'none',
duration: 2000
});
this.getDetail();
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
}
},
getDetail() { getDetail() {
uni.$u.http.get('/api/school/message/message_list', { uni.$u.http.get('/api/school/message/message_list', {
params: { params: {
page: this.page, page: this.page,
limit: this.limit, limit: this.limit,
status: 'system,activity', status: 'system,activity',
type: "1", type: "1,2",
} }
}).then(res => { }).then(res => {
if (res.code == 1) { if (res.code == 1) {
@ -57,6 +108,33 @@
} }
}).catch(error => {}); }).catch(error => {});
}, },
//
one() {
uni.$u.http.get('/api/school/message/batch', {
params: {
id: '*',
status: 'system,activity',
mini_type: '',
event: ''
}
}).then(res => {
if (res.code == 1) {
uni.showToast({
title: '全部已读',
icon: 'none',
duration: 2000
});
this.getDetail();
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {});
},
// //
resetLists() { resetLists() {
this.page = 1; this.page = 1;
@ -71,8 +149,23 @@
.box { .box {
background: #F1F2F8; background: #F1F2F8;
width: 750rpx; width: 750rpx;
height: 100vh; height: 100%;
margin: 0 auto; margin: 0 auto;
.nav_txt{
display: flex;
justify-content: center;
align-items: center;
}
.u-nav-slot{
width: 64rpx;
height: 64rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
border: 1rpx solid #EBEBEB;
display: flex;
justify-content: center;
align-items: center;
}
} }
.w-100 { .w-100 {

View File

@ -114,9 +114,9 @@
<span>已收藏</span> <span>已收藏</span>
</view> --> </view> -->
</view> </view>
<view class="footer-right flex justify-center align-items"> <view class="footer-right flex justify-center align-items" @click="sign()">
<span v-if="type == 0 && detail.feel == 0" @click="sign()"> 支付并参加 </span> <span v-if="type == 0 && detail.feel == 0" > 支付并参加 </span>
<span v-if="type == 0 && detail.feel == 1" @click="sign()"> 免费参加 </span> <span v-if="type == 0 && detail.feel == 1" > 免费参加 </span>
<!-- <span v-if="type == 1 && detail.feel == 0" @click="buy()"> 立即支付 </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 == 1 && detail.feel == 1" @click="buy()"> 确认报名 </span>
<span v-if="type == 2" @click="open()"> 我要预约 </span> <span v-if="type == 2" @click="open()"> 我要预约 </span>
@ -231,12 +231,12 @@
<l-painter <l-painter
isCanvasToTempFilePath isCanvasToTempFilePath
@success="sunccessimg" @success="sunccessimg"
custom-style="width:661rpx;height: 1072rpx;position:absolute;left:45rpx;right:44rpx;top:200rpx;background-image: url(https://naweigetetest2.hschool.com.cn/dyqc/fenxiang.png);background-size: 100%;" css="width:661rpx;height: 1072rpx;background-image:url(https://naweigetetest2.hschool.com.cn/dyqc/fenxiang.png);"
css="" custom-style="position:absolute;left:45rpx;right:44rpx;top:200rpx;"
> >
<l-painter-image <l-painter-image
:src="detail.user.avatar" :src="detail.user.avatar"
css="margin-left: 30rpx; margin-top: 120rpx;border: 2rpx solid #FFFFFF; width: 60rpx; height: 60rpx; border-radius: 50%;" css="margin-left: 15rpx; margin-top: 120rpx;border: 2rpx solid #FFFFFF; width: 60rpx; height: 60rpx; border-radius: 50%;"
/> />
<l-painter-view <l-painter-view
css="margin-top: 130rpx; padding-left: 20rpx; display: inline-block" css="margin-top: 130rpx; padding-left: 20rpx; display: inline-block"
@ -251,25 +251,25 @@
> >
<l-painter-image <l-painter-image
:src="detail.images[0]" :src="detail.images[0]"
css="width: 620rpx; height: 620rpx; border-radius: 24rpx;margin: 0 auto;display: block;object-fit: cover;" css="width: 620rpx; height: 620rpx; border-radius: 24rpx;object-fit: cover;"
/> />
<l-painter-view css="margin-top: 30rpx;display: flex;justify-content: space-between;width:100%;"> <l-painter-view css="margin-top: 30rpx;display: flex;justify-content: space-between;width:100%;">
<l-painter-view css="display: flex;flex-direction: column;width: 420rpx;"> <l-painter-view css="display: flex;flex-direction: column;width: 420rpx;">
<l-painter-text <l-painter-text
css="line-clamp: 1; color: #202020;font-size: 36rpx; width: 320rpx; box-sizing: border-box;line-height: 42rpx;" css="line-clamp: 1;font-weight: bold;color:#202020;font-size: 32rpx;width:400rpx;box-sizing:border-box;line-height: 42rpx;"
:text="detail.title" :text="detail.title"
></l-painter-text> ></l-painter-text>
<l-painter-text <l-painter-text
css="line-clamp: 1; color:#FF4810;font-size: 28rpx;width: 220rpx;margin-top: 20rpx;line-height: 38rpx;" css="line-clamp: 1; color:#FF4810;font-size: 28rpx;width:220rpx;margin-top: 20rpx;line-height: 38rpx;"
:text="'¥'+detail.price" :text="'¥'+detail.price"
></l-painter-text> ></l-painter-text>
<l-painter-text <l-painter-text
css="line-clamp: 1; color: #9C9C9C;font-size: 26rpx;margin-top: 20rpx;line-height: 36rpx;width: 340rpx;" css="line-clamp: 2; color:#9C9C9C;font-size: 26rpx;margin-top: 20rpx;line-height: 36rpx;width: 360rpx;"
:text="'地址:'+detail.address" :text="'地址:'+detail.address"
></l-painter-text> ></l-painter-text>
</l-painter-view> </l-painter-view>
<l-painter-view css="background: #ffffff;border-radius: 18rpx;width: 200rpx; height: 200rpx;"> <l-painter-view css="background: #ffffff;border-radius: 18rpx;width: 200rpx; height: 200rpx;margin-right: 50rpx;">
<l-painter-qrcode <l-painter-qrcode
css="width: 160rpx; height: 160rpx;margin:20rpx;" css="width: 160rpx; height: 160rpx;margin:20rpx;"
:text="qrUrl" :text="qrUrl"

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="detail_all"> <view class="detail_all">
<view class="nav"> <view class="nav">
<u-navbar :is-back="true" leftIconColor="#FFFFFF" :autoBack='true' title="" :bgColor="background" <u-navbar :is-back="true" leftIconColor="#FFFFFF" :autoBack='true' :bgColor="background"
:titleStyle='titleStyle'> </u-navbar> :titleStyle='titleStyle'> </u-navbar>
</view> </view>
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''"> <view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
@ -15,14 +15,14 @@
<image src="/static/detail/rmb.png" class="topimgs_rmb"></image> <image src="/static/detail/rmb.png" class="topimgs_rmb"></image>
<view class="top_texts flex align-items" v-if="detail.feel == 0"> <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"> <view class="flex flex-column xiao">
<span>.{{ detail.price.split('.')[1] }}</span> <span>.{{ detail.price.split('.')[1] }}</span>
<span>/</span> <span>/</span>
</view> </view>
</view> </view>
<view class="top_texts flex align-items" v-else> <view class="top_texts flex align-items" v-else style="top:-140rpx;right: 88rpx;">
<span style="font-weight: 900;font-size: 60rpx;">免费</span> <span style="font-weight: 900;font-size: 44rpx;">免费</span>
</view> </view>
<view class="first-box flex flex-start flex-column justify-start"> <view class="first-box flex flex-start flex-column justify-start">
<view class="flex align-items"> <view class="flex align-items">
@ -32,10 +32,11 @@
<span class="first-image flex align-items" style="margin-top: 25rpx;width: 100%;"> <span class="first-image flex align-items" style="margin-top: 25rpx;width: 100%;">
<image :src="detail.user.avatar" mode="" class="icon-size" style="width: 36rpx;height: 36rpx;"></image> <image :src="detail.user.avatar" mode="" class="icon-size" style="width: 36rpx;height: 36rpx;margin-right: 12rpx;border-radius: 80rpx;"></image>
<span style="color: #9C9C9C ;width: 32%;">{{ detail.user.nickname }}</span> <span style="color: #9C9C9C ;width: 32%;">{{ detail.user.nickname }}</span>
<span class="flex justify-center align-items xieyi"> <span class="flex justify-center align-items xieyi">
<image src="/static/detail/baohu.png" mode="" style="width: 28rpx;height: 28rpx;margin-right: 0;" ></image> <image src="/static/detail/baohu.png" mode=""
style="width: 28rpx;height: 28rpx;margin-right: 0;" ></image>
<span class="white-space" style="width: 90rpx;text-align: center;">{{ detail.refund_info.title }}</span> <span class="white-space" style="width: 90rpx;text-align: center;">{{ detail.refund_info.title }}</span>
<image src="/static/detail/zidong.png" mode="" style="width: 20rpx;height: 20rpx;margin-right: 0;" ></image> <image src="/static/detail/zidong.png" mode="" style="width: 20rpx;height: 20rpx;margin-right: 0;" ></image>
</span> </span>
@ -55,13 +56,13 @@
<span class="line"></span> <span class="line"></span>
<view class="second-box flex align-items space-between"> <view class="second-box flex align-items space-between">
<view class="flex align-items"> <view class="flex align-items">
<u-avatar-group :urls="detail.join_info.users" <u-avatar-group :urls="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>
<span class="flex justify-center align-items"> <image src="/static/index/dian.png"
<image src="/static/center/right_.png" mode="" style="width: 20rpx;height: 20rpx;"></image> :class="join_info.users && join_info.users.length > 0 ? '' : 'smalld'"
</span> style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;"></image>
</view> </view>
<span class="number">{{detail.join_info.people_number}}/{{detail.join_info.stock >= 10000 ? '9999+' : detail.join_info.stock}} <span class="number">{{join_info.people_number}}/{{join_info.stock >= 10000 ? '9999+' : join_info.stock}}
人数</span> 人数</span>
<view class="value_slide"> <view class="value_slide">
<u-slider <u-slider
@ -82,22 +83,28 @@
</view> </view>
<!-- 报名成功 --> <!-- 报名成功 -->
<view class="third flex flex-column" style="justify-content: flex-start;"> <view class="third flex flex-column" style="justify-content: flex-start;margin-bottom: 0rpx;">
<view class="third-center flex " style="justify-content: space-between;"> <view class="third-top flex align-items" style="justify-content: space-between;">
<view class="scroll-container "> <span>报名信息
<view v-for="(item, index) in detail.paid_user_data" :key="index" class="item"> <image class="icons" src="/static/detail/xiangqing.png"></image>
<view class="flex align-items" style="justify-content: space-between;"> </span>
<image :src="item.head_image" mode="" style="width: 40rpx; height: 40rpx;"> <view style="margin-right: 35rpx;" @click="toSgindetail()">
</image> <span style="font-family: PingFang SC, PingFang SC;font-weight: 400;font-size: 26rpx;color: #3D3D3D;">查看全部</span>
<span <image src="/static/detail/zidong.png" style="margin-left: 20rpx;width: 20rpx;height: 20rpx;"> </image>
style="width: 72rpx; overflow: hidden; white-space: nowrap;">{{item.nickname}}</span>
<span class="line-colum"></span>
<span>报名成功</span>
</view>
<span>{{ item.createTime }}</span>
</view>
</view> </view>
</view> </view>
<view class="flex third-center-gro" style="justify-content: space-between; position: relative;">
<scroll-view scroll-y="true" class="scroll-container">
<view v-for="(item, index) in mysignList" :key="index" >
<view class="flex align-items" style="justify-content: space-between;height: 50rpx;line-height: 50rpx;">
<view class="t1_name">{{item.user.nickname}}</view>
<view class="t1_order">订单编号{{item.order_no}}</view>
<view class="t1_num">数量{{item.num}}</view>
</view>
</view>
</scroll-view>
</view>
</view> </view>
<view class="third flex flex-column" style="justify-content: flex-start;"> <view class="third flex flex-column" style="justify-content: flex-start;">
@ -110,41 +117,19 @@
<view class="v_html"> <view class="v_html">
<rich-text :nodes="detail.content"></rich-text> <rich-text :nodes="detail.content"></rich-text>
</view> </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> </view>
<view class="footer flex align-items" style="justify-content: space-between;"> <view class="footer flex align-items" style="justify-content: space-between;">
<view class="footer-left"> <view class="footer-left">
<!-- <view @click="callPhone(detail.user.mobile)">
<image src="../../static/center/phone.png" mode=""></image>
<span>电话</span>
</view> -->
<view @click="overlayShow()">
<!-- <view @click="Share()"> -->
<image src="@/static/detail/fenxiang.png" mode=""></image>
<!-- <span>分享</span> -->
</view>
<!-- <view v-if="is_collect == 0" @click="Collect(1)">
<image src="../../static/center/Collect.png" mode=""></image>
<span>收藏</span>
</view>
<view v-if="is_collect != 0" @click="Collect(0)">
<image src="../../static/center/Collected.png" mode=""></image>
<span>已收藏</span>
</view> -->
</view> </view>
<view class="footer-right flex justify-center align-items"> <view class="bottom_fot">
<span v-if="type == 0 && detail.feel == 0" @click="sign()"> 支付并参加 </span> <view class="footer-right flex justify-center align-items">
<span v-if="type == 0 && detail.feel == 1" @click="sign()"> 免费参加 </span> <span @click="cancelsOpen"> 取消活动 </span>
<span v-if="type == 1 && detail.feel == 0" @click="buy()"> 立即支付 </span> </view>
<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>
<!-- <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> -->
</view> </view>
</view> </view>
@ -152,114 +137,31 @@
<!-- 购买弹窗 --> <!-- 二次确认弹窗 -->
<u-popup :show="buyShow" mode="center" :round="10" :zIndex="99999" :custom-style="popupStyle" @close="buyClose" <u-popup :show="cancelsShow" mode="center" :round="10" :zIndex="99999" :custom-style="popupStyle" @close="cancelsClose"
@open="buyOpen" :safeAreaInsetBottom="false" :closeable="true"> @open="cancelsOpen" :safeAreaInsetBottom="false" :closeable="false">
<view class="popupBox flex justify-start align-items flex-column"> <view class="popupBox flex justify-start align-items flex-column">
<view class="pop-header flex align-items flex-column flex-start"> <view class="pop-header flex align-items flex-column flex-start">
<span class="name white-space">{{detail.title}}</span> <span class="name white-space">是否确认取消活动</span>
<span class="price"> <span class="price">
<span v-if="detail.feel == 0">{{detail.price}}</span> 取消活动后如果再次举办活动需重新设置并提交信息审核
<span v-if="detail.feel == 1">公益</span>
</span> </span>
<!-- <image src="../../static/center/buy.png" mode="" style="width: 168rpx; height: 48rpx;"> <!-- <image src="../../static/center/buy.png" mode="" style="width: 168rpx; height: 48rpx;">
</image> --> </image> -->
</view> </view>
<view class="popup flex-column">
<span class="first-image flex align-items" style="margin: 16rpx 0;"> <view class="popup-footer flex ">
<image src="../../static/center/Alarm.png" mode="" class="icon-size"></image> <span @click="cancelsClose" class="span1">关闭</span>
<span>{{formattedTime.formattedTime}} (共计{{formattedTimeList.length}})</span> <span @click="cancels">确认取消</span>
</span>
<span class="first-image flex align-items">
<image src="../../static/center/address.png" mode="" class="icon-size"></image>
<span>{{detail.address_detail}}</span>
</span>
<!-- <image :src="detail.headimage" mode="" style="width: 200rpx; height: 140rpx;"></image>
<view class="popur-right flex flex-column">
<span class="name white-space">{{detail.title}}</span>
<span class="address">地址:{{detail.address_detail}}</span>
<span class="date">开始时间:{{detail.start_time_text}}</span>
<span class="time">结束时间:{{detail.end_time_text}}</span>
<span class="line-row"></span>
<span class="price">
课程价格:
<span v-if="detail.feel == 0">{{detail.price}}</span>
<span v-if="detail.feel == 1">免费</span>
</span>
</view> -->
</view>
<view class="popup-footer flex " @click="buy()">
<span v-if="type == 1 && detail.feel == 0"> </span>
<span v-if="type == 1 && detail.feel == 1"> </span>
<!-- <image src="../../static/center/price.png" mode="" style="width: 642rpx;height: 80rpx;"></image> --> <!-- <image src="../../static/center/price.png" mode="" style="width: 642rpx;height: 80rpx;"></image> -->
<u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon> <!-- <u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon> -->
</view> </view>
</view> </view>
</u-popup> </u-popup>
<!-- 分享海报 -->
<u-overlay :show="overlay" class="pos">
<view class="btnList">
<span class="save" @click.stop="save()"> </span>
<!-- <span class="sharePoster" @click.stop="sharePoster()">
</span> -->
<button open-type="share" class="no-border-button" plain="true">
<span> </span>
</button>
</view>
<!-- <view class="Poster" style="z-index: 9999;height: 1230rpx;">
<span class="posterClose" @click.stop="overlay = false">
<image src="../../static/center/close.png" mode="" style="width: 64rpx;height: 64rpx;"></image>
</span>
<image :src="path" mode="widthFix" style="width: 690rpx;height: 1230rpx;"></image>
<l-painter isCanvasToTempFilePath ref="painter" @success="path = $event" hidden
css="width: 750rpx;height:1230rpx; padding-bottom: 40rpx; background-image: url('https://testy.hschool.com.cn//uploads/20241219/6f46474364fe7ae36295cb8d96854b52.png')">
<l-painter-image :src="userInfo.avatar"
css="margin-left: 40rpx; margin-top: 100rpx; width: 90rpx; height: 90rpx; border-radius: 50%;" />
<l-painter-view css="margin-top: 100rpx; padding-left: 20rpx; display: inline-block">
<l-painter-text :text="userInfo.realname || userInfo.nickname"
css="display: block; padding-bottom: 10rpx; color: #181818; font-size: 34rpx; fontWeight: bold" />
<l-painter-text text="邀请您一起上课" css="color: #7A7A7A; font-size: 24rpx" />
</l-painter-view>
<l-painter-view
css="margin-left: 35rpx; margin-top: 24rpx; padding: 32rpx; box-sizing: border-box; background: #fff; border-radius: 16rpx; width: 690rpx; box-shadow: 0 20rpx 58rpx rgba(0,0,0,.15)">
<l-painter-image :src="detail.headimage"
css="object-fit: cover; object-position: 50% 50%; width: 626rpx; height: 448rpx; border-radius: 12rpx;" />
<l-painter-view css=" width: 626rpx;display: flex;alignItems: center;"> </view>
<l-painter-view>
<l-painter-view
css="margin-top: 32rpx; color: #FF0000; font-weight: bold; font-size: 28rpx; line-height: 1em;">
<l-painter-text text="¥" css="vertical-align: bottom;font-size: 42rpx"
v-if="detail.feel == 0" />
<l-painter-text :text="detail.price" css="vertical-align: bottom; font-size: 58rpx"
v-if="detail.feel == 0" />
<l-painter-text text="免费" css="vertical-align: bottom;font-size: 42rpx"
v-if="detail.feel == 1" />
</l-painter-view>
<l-painter-view css="margin-top: 24rpx;">
<l-painter-text :text="formattedTitle" css="color: #343434;font-size: 36rpx;" />
</l-painter-view>
<l-painter-text
css="line-clamp: 2; color: #333333; line-height: 1.8em; font-size: 26rpx;display: block; width: 380rpx; padding-right:32rpx; box-sizing: border-box"
:text="'讲师:' + detail.teacher.name"></l-painter-text>
<l-painter-text
css="line-clamp: 2; color: #333333; line-height: 1.8em; font-size: 26rpx;display: block;margin-bottom:30rpx; width: 380rpx; padding-right:32rpx; box-sizing: border-box"
:text="detail.address_detail"></l-painter-text>
</l-painter-view>
<l-painter-view css="margin-top: 24rpx;">
<l-painter-qrcode css="width: 200rpx; height: 200rpx;" :text="qrUrl"></l-painter-qrcode>
</l-painter-view>
</l-painter-view>
</l-painter-view>
</l-painter>
</view> -->
</u-overlay>
</view>
</view> </view>
</template> </template>
@ -270,12 +172,7 @@
} from '../../utils/dateFormat' } from '../../utils/dateFormat'
export default { export default {
computed: { computed: {
// formattedTitle() {
// if (this.detail.title.length > 9) {
// return this.detail.title.slice(0, 9) + '..';
// }
// return this.detail.title;
// },
formattedTimeList() { formattedTimeList() {
return this.timeList.map(item => { return this.timeList.map(item => {
const startTime = dayjs.unix(item.start_time).format('YYYY-MM-DD HH:mm:ss'); const startTime = dayjs.unix(item.start_time).format('YYYY-MM-DD HH:mm:ss');
@ -303,6 +200,8 @@
img: 'width: 100%' img: 'width: 100%'
}, },
mysignList:[],
join_info:{},
value_slide:0, value_slide:0,
scrollTop: 0, scrollTop: 0,
overlay: false, overlay: false,
@ -310,7 +209,7 @@
path: 'https://testy.hschool.com.cn//uploads/20241219/3406baf51fcc28c63c31ebcee5c9c75e.jpg', path: 'https://testy.hschool.com.cn//uploads/20241219/3406baf51fcc28c63c31ebcee5c9c75e.jpg',
uloadingShow: false, uloadingShow: false,
show: false, show: false,
buyShow: false, cancelsShow: false,
type: 0, // 0 1 2 3 type: 0, // 0 1 2 3
id: 1, id: 1,
count: 5, count: 5,
@ -322,12 +221,13 @@
qrUrl: '', qrUrl: '',
is_collect: 0, is_collect: 0,
popupStyle: { popupStyle: {
width: '690rpx', width: '640rpx',
height: '716rpx', height: '414rpx',
margin: '0 auto', // margin: '0 auto', //
display: 'flex', display: 'flex',
justifyContent: 'flex-start', justifyContent: 'flex-start',
alignItems: 'center' alignItems: 'center',
borderRadius: '50rpx'
}, },
timeList: [], timeList: [],
selectedTime: null, selectedTime: null,
@ -367,9 +267,8 @@
} }
console.log(options.id) console.log(options.id)
this.getDetail() this.getDetail()
// this.getPeople() this.getPeople()
// this.getTime()
this.getShare()
}, },
methods: { methods: {
@ -393,28 +292,6 @@
}); });
} }
}, },
getShare() {
uni.$u.http.post('/api/wechat_util/link', {
path: 'pages/center/detail',
query: `id=${this.id}`,
}).then(res => {
if (res.code == 1) {
this.qrUrl = res.data.url_link
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
// //
timeago(timestamp) { timeago(timestamp) {
const now = new Date().getTime(); // const now = new Date().getTime(); //
@ -433,12 +310,6 @@
} }
}, },
// sharePoster() {
// //
// this.is_show_model = false
// this.$refs.poster.showCanvas()
// },
// //
getTime() { getTime() {
uni.$u.http.get('/api/school/classes/spec', { uni.$u.http.get('/api/school/classes/spec', {
@ -464,20 +335,23 @@
}); });
}); });
}, },
toSgindetail(){
uni.navigateTo({
url: '/pages/center/signDetail?id=' + this.id
});
},
// //
getPeople() { getPeople() {
const that = this const that = this
uni.$u.http.get('/api/school/classes/people', { uni.$u.http.get('/api/school.newworker.activity.order/order_list', {
params: { params: {
id: that.id, activity_id: that.id,
} page: 1,
limit: 1000,
},
}).then(res => { }).then(res => {
if (res.code == 1) { if (res.code == 1) {
that.processPeopleData(res.data).then(processedData => { this.mysignList = res.data.list;
that.people = processedData;
console.log('that.people', that.people)
});
} else { } else {
that.showErrorToast(res.msg); that.showErrorToast(res.msg);
} }
@ -486,21 +360,6 @@
}); });
}, },
//
processPeopleData(data) {
return new Promise((resolve) => {
const paidUserData = data.paid_user_data.map(item => {
item.createTime = this.timeago(item.time);
return item;
}).reverse();
const unpaidUserData = data.unpaid_user_data
const processedData = {
unpaid_user_data: unpaidUserData,
paid_user_data: paidUserData
}
resolve(processedData);
});
},
// //
showErrorToast(msg) { showErrorToast(msg) {
uni.showToast({ uni.showToast({
@ -509,6 +368,29 @@
duration: 2000 duration: 2000
}); });
}, },
//
cancels(){
uni.$u.http.post('/api/school.new_activity/cancel', {
id: this.id,
}).then(res => {
if (res.code == 1) {
uni.showToast({
title: '取消成功',
icon: 'success',
duration: 2000
})
uni.redirectTo({
url: "/packageA/my/orderList?status=-1"
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
}).catch(error => {});
},
// //
getDetail() { getDetail() {
uni.$u.http.get('/api/school.new_activity/detail', { uni.$u.http.get('/api/school.new_activity/detail', {
@ -517,7 +399,8 @@
} }
}).then(res => { }).then(res => {
if (res.code == 1) { if (res.code == 1) {
this.detail = res.data.detail this.detail = res.data.detail;
this.join_info = res.data.detail.join_info;
this.value_slide = res.data.detail.join_info.percent; this.value_slide = res.data.detail.join_info.percent;
if (res.data.detail.is_collect != 0) { if (res.data.detail.is_collect != 0) {
this.is_collect = 1 this.is_collect = 1
@ -538,11 +421,10 @@
} }
}).catch(error => {}); }).catch(error => {});
}, },
// 0 1 2 3
sign() { sign() {
// this.buyShow = true // this.cancelsShow = true
// this.type = 3; // this.type = 3;
uni.navigateTo({ uni.navigateTo({
@ -554,10 +436,9 @@
this.uloadingShow = true this.uloadingShow = true
this.getMoney() this.getMoney()
}, },
// type = 0 1 2 3 //
buyOpen() { cancelsOpen() {
this.buyShow = true this.cancelsShow = true
this.type = 1
}, },
// type = 2 0 1 2 3 // type = 2 0 1 2 3
open() { open() {
@ -647,10 +528,8 @@
this.selectedTime = null this.selectedTime = null
this.show = false this.show = false
}, },
buyClose() { cancelsClose() {
this.type = 0 this.cancelsShow = false
this.selectedTime = null
this.buyShow = false
}, },
// //
toIndex() { toIndex() {
@ -709,29 +588,6 @@
}, },
base64ToFilePath(base64data, callback) {
const time = new Date().getTime();
const imgPath = `${wx.env.USER_DATA_PATH}/addFriends${time}share_qrcode.png`;
const imageData = base64data.replace(/^data:image\/\w+;base64,/, "");
const fileSystemManager = uni.getFileSystemManager();
fileSystemManager.writeFile({
filePath: imgPath,
data: imageData,
encoding: 'base64',
success: () => {
callback(imgPath);
},
fail: (err) => {
console.error('Write file failed:', err);
uni.showToast({
title: '写入文件失败',
icon: 'none'
});
}
});
},
// //
Collect(number) { Collect(number) {
uni.$u.http.post('/api/school/classes/collect', { uni.$u.http.post('/api/school/classes/collect', {
@ -796,7 +652,6 @@
if (res.code == 1) { if (res.code == 1) {
this.PayPirce = res.data.order_data.totalprice this.PayPirce = res.data.order_data.totalprice
this.order_no = res.data.order_no this.order_no = res.data.order_no
this.create(this.order_no, this.PayPirce)
} else { } else {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -808,88 +663,6 @@
this.uloadingShow = false this.uloadingShow = false
}).catch(error => { }).catch(error => {
});
},
//
create(order_no, PayPirce) {
uni.$u.http.post('/api/school.newactivity.order/create', {
order_no: order_no,
}).then(res => {
if (res.code == 1) {
if (PayPirce != 0) {
this.pament()
} else {
this.uloadingShow = false
uni.showToast({
title: '创建成功',
icon: 'success',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
})
}, 2000);
}
});
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
that.uloadingShow = false
// _this.$api.toast(res.msg);
}
}).catch(error => {
});
},
//
pament() {
let that = this
that.uloadingShow = false
uni.$u.http.post('/api/school.newactivity.pay/payment', {
type: 'wechat',
order_no: that.order_no,
platform: 'miniapp'
}).then(res => {
if (res.code == 1) {
wx.requestPayment({
timeStamp: res.data.paydata.timeStamp, //
nonceStr: res.data.paydata.nonceStr, //
package: res.data.paydata.package, //prepay_id
signType: res.data.paydata.signType, //MD5
paySign: res.data.paydata.paySign, //
success(res) {
if (res.errMsg == "requestPayment:ok") {
that.order_no = ''
uni.redirectTo({
url: "/packageA/my/orderList?status=" + 3
})
console.log('支付成功', res)
} else {
that.uloadingShow = false
console.log('支付失败')
}
},
fail(res) {
that.uloadingShow = false
console.log('支付失败', res)
}
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
// _this.$api.toast(res.msg);
}
}).catch(error => {
}); });
}, },
}, },
@ -1061,7 +834,9 @@
height: 64rpx; height: 64rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx; border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: 20rpx 0 16rpx 0; margin: 20rpx 0 16rpx 0;
.smalld {
margin-left: 0 !important;
}
.number { .number {
height: 40rpx; height: 40rpx;
@ -1081,23 +856,23 @@
margin: 0 22rpx 0 4rpx; margin: 0 22rpx 0 4rpx;
} }
} }
.value_slide{ // .value_slide{
width: 50%; // width: 50%;
::v-deep .uni-slider-handle-wrapper{ // ::v-deep .uni-slider-handle-wrapper{
height: 10rpx; // height: 10rpx;
} // }
::v-deep .uni-slider-handle{ // ::v-deep .uni-slider-handle{
background: url('@/static/detail/qiu.png') !important; // background: url('@/static/detail/qiu.png') !important;
border-radius: 0; // border-radius: 0;
background-size: 52rpx 52rpx !important; // background-size: 52rpx 52rpx !important;
} // }
::v-deep .uni-slider-value{ // ::v-deep .uni-slider-value{
color: #323232; // color: #323232;
&::after{ // &::after{
content: '%'; // content: '%';
} // }
} // }
} // }
} }
@ -1106,9 +881,10 @@
background: #ffffff; background: #ffffff;
margin-top:20rpx; margin-top:20rpx;
border-radius: 44rpx; border-radius: 44rpx;
margin-bottom: 150rpx;
.third-top{ .third-top{
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
font-weight: 400; font-weight: bold;
font-size: 36rpx; font-size: 36rpx;
color: #323232; color: #323232;
line-height: 50rpx; line-height: 50rpx;
@ -1139,6 +915,74 @@
width: 690rpx; width: 690rpx;
} }
} }
.third-center-gro {
margin-top: 28rpx;
width: auto;
height: 160rpx;
overflow: hidden;
position: relative;
margin-left: 30rpx;
margin-right: 30rpx;
margin-bottom: 30rpx;
.scroll-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
// animation: scroll 12s linear infinite;
// @keyframes scroll {
// 0% {
// transform: translateY(0);
// }
// 100% {
// transform: translateY(calc(-100% + 8 * 100px));
// /* 8 * 100px 100px */
// }
// }
.t1_name{
width: 240rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.t1_order{
width: 310rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.t1_num{
width: 103rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
}
@ -1200,16 +1044,20 @@
height: 118rpx; height: 118rpx;
} }
} }
.bottom_fot{
width: 100%;
height: 147rpx;
background: #FFFFFF;
position: fixed;
bottom: 0;
}
.footer-right { .footer-right {
position: absolute; margin: 0 auto;
right: 30rpx; width: 690rpx;
width: 487rpx; height: 90rpx;
height: 102rpx; background: #323232;
background: url('@/static/detail/shangche.png');
background-size: 487rpx 102rpx;
border-radius: 200rpx; border-radius: 200rpx;
margin-top: 30rpx;
span { span {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei; font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-weight: 400; font-weight: 400;
@ -1221,16 +1069,19 @@
.popupBox { .popupBox {
width: 690rpx; width: 640rpx;
height: 716rpx; height: 414rpx;
background-image: url("https://naweigetetest2.hschool.com.cn/dyqc/confirm2.png");
background-size: 100%;
background-repeat:no-repeat;
border-radius: 44rpx;
.pop-header { .pop-header {
width: 100%; width: 100%;
background-image: url("/static/center/bg.png");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: left bottom; background-position: left bottom;
height: 265rpx; height: 414rpx;
margin-top: 80rpx;
span { span {
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
font-weight: 400; font-weight: 400;
@ -1239,31 +1090,30 @@
} }
.name { .name {
width: 594rpx; width: 288rpx;
height: 66rpx; height: 36rpx;
font-family: Source Han Sans CN, Source Han Sans CN; font-family: PingFang SC Bold, PingFang SC Bold;
font-weight: bold; font-weight: 400;
font-size: 44rpx; font-size: 36rpx;
color: #222222; color: #202020;
margin-top: 80rpx; line-height: 36rpx;
text-align: center;
font-style: normal;
text-transform: none;
} }
.price { .price {
width: 594rpx; width: 520rpx;
height: 66rpx; height: 68rpx;
font-family: Source Han Sans CN, Source Han Sans CN; margin-top: 30rpx;
font-weight: bold; font-family: PingFang SC, PingFang SC;
font-size: 44rpx; font-weight: 400;
color: #FF4810; font-size: 24rpx;
margin-top: 16rpx; color: #202020;
line-height: 34rpx;
span { text-align: center;
font-family: PingFang SC, PingFang SC; font-style: normal;
font-weight: 800; text-transform: none;
font-size: 36rpx;
color: #FF2323;
line-height: 32rpx;
}
} }
} }
@ -1276,22 +1126,28 @@
.popup-footer { .popup-footer {
position: absolute; position: absolute;
left: 48rpx; left: 75rpx;
bottom: 48rpx; bottom: 60rpx;
span { span {
width: 594rpx; width: 230rpx;
height: 100rpx; height: 90rpx;
background: #222222; background: #323232;
border-radius: 200rpx 200rpx 200rpx 200rpx; border-radius: 200rpx 200rpx 200rpx 200rpx;
font-family: Source Han Sans CN, Source Han Sans CN; font-family: PingFang SC Regular, PingFang SC Regular;
font-weight: bold; font-weight: 400;
font-size: 32rpx; font-size: 32rpx;
color: #BEEE03; color: #BBFC5B;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.span1{
background: rgba(193, 193, 193, 0.22);
color: #202020;
margin-right: 30rpx;
}
} }
@ -1303,39 +1159,7 @@
border-radius: 0rpx 0rpx 0rpx 0rpx; 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 { .selectTime.selected {
width: 288rpx; width: 288rpx;
@ -1575,4 +1399,57 @@
align-items: 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: 30rpx 30rpx !important;
width: 28rpx;
height: 28rpx;
top: 14rpx;
margin-left: -14rpx !important;
}
.wx-slider-value {
display: flex;
width: 30rpx;
color: #323232;
&::after { content: '%';
}
}
// #endif
}
</style> </style>

View File

@ -6,7 +6,7 @@
<image src="/static/fabu/fabuhd.png" style="width: 237rpx; height: 57rpx"></image> <image src="/static/fabu/fabuhd.png" style="width: 237rpx; height: 57rpx"></image>
</view> </view>
<view class="box flex flex-column align-items"> <scroll-view scroll-y="true" :show-scrollbar="true" class="box flex flex-column align-items">
<view class="first flex flex-column align-items justify-start"> <view class="first flex flex-column align-items justify-start">
<view class="row flex align-items" style="margin-top: 25rpx;"> <view class="row flex align-items" style="margin-top: 25rpx;">
<span> <span>
@ -134,11 +134,12 @@
</view> </view>
</view> </view>
</view>
<span style="margin: 30rpx 0 320rpx 0; width: 750rpx;" v-if="status == -1 || status == 2"> <span style="margin:30rpx 0 0 0; width: 750rpx;" v-if="status == -1 || status == 2">
<cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = false" <cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = false"
@protocolClick="protocolClick"></cc-protocolBox> @protocolClick="protocolClick"></cc-protocolBox>
</span> </span>
</scroll-view>
<view class="bottom flex align-items justify-center" v-if="status == -1 || status == 2"> <view class="bottom flex align-items justify-center" v-if="status == -1 || status == 2">
<span class="flex align-items justify-center" @click="apply()" v-if="agree == true">确认发布</span> <span class="flex align-items justify-center" @click="apply()" v-if="agree == true">确认发布</span>
<span class="flex align-items justify-center" v-if="agree == false" <span class="flex align-items justify-center" v-if="agree == false"
@ -1028,7 +1029,8 @@ export default {
.box { .box {
width: 690rpx; width: 690rpx;
margin-top: 40rpx; margin-top: 40rpx;
height: 1100rpx;
margin-bottom:320rpx ;
.title { .title {
font-family: PingFang SC, PingFang SC; font-family: PingFang SC, PingFang SC;
font-weight: 500; font-weight: 500;
@ -1263,29 +1265,29 @@ export default {
// //
::v-deep ::-webkit-scrollbar { // ::v-deep ::-webkit-scrollbar {
/*滚动条整体样式*/ // /**/
width: 4px !important; // width: 4px !important;
height: 1px !important; // height: 1px !important;
overflow: auto !important; // overflow: auto !important;
background: #ccc !important; // background: #ccc !important;
-webkit-appearance: auto !important; // -webkit-appearance: auto !important;
display: block; // display: block;
} // }
::v-deep ::-webkit-scrollbar-thumb { // ::v-deep ::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/ // /**/
border-radius: 10px !important; // border-radius: 10px !important;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important; // box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background: #7b7979 !important; // background: #7b7979 !important;
} // }
::v-deep ::-webkit-scrollbar-track { // ::v-deep ::-webkit-scrollbar-track {
/*滚动条里面轨道*/ // /**/
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important; // // box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
// border-radius: 10px !important; // // border-radius: 10px !important;
background: #FFFFFF !important; // background: #FFFFFF !important;
} // }
.textarea_mph { .textarea_mph {
::v-deep .u-textarea { ::v-deep .u-textarea {

176
pages/center/signDetail.vue Normal file
View File

@ -0,0 +1,176 @@
<template>
<view class="box flex flex-column align-items">
<view v-for="(item, index) in mysignList" :key="index" style="margin: 0 30rpx;">
<view class="flex align-items" style="justify-content: space-between;height: 70rpx;line-height: 70rpx;">
<view class="t1_name">
{{item.user.realname ? item.user.realname : item.user.nickname.slice(0,5)}}
<image v-if="item.status == 2" class="imgs" src="/static/detail/hxslice.png"> </image>
<image v-if="item.status == 9" class="imgs" src="/static/detail/hxall.png"> </image>
</view>
<view class="t1_order">订单编号{{item.order_no}}</view>
<view class="t1_num">数量{{item.num}}</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
mysignList:[],
};
},
onLoad(option) {
this.id = option.id;
},
onShow() {
this.getPeople();
},
methods:{
//
getPeople() {
const that = this
uni.$u.http.get('/api/school.newworker.activity.order/order_list', {
params: {
activity_id: that.id,
page: 1,
limit: 1000,
},
}).then(res => {
if (res.code == 1) {
this.mysignList = res.data.list;
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
//
toDetail(status){
uni.navigateTo({
url: "/packageA/my/exercise?status=" + status
})
},
//
goHome() {
uni.switchTab({
url: "/pages/index/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.w-100 {
width: 100%;
}
.w-400{
width: 400rpx;
}
.flex {
display: flex;
}
.justify-center {
justify-content: center;
}
.space-between {
justify-content: space-between;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.mar-top-30 {
margin-top: 30rpx;
}
.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;
}
.box{
width: 750rpx;
height: 100vh;
background-color: #FFFFFF;
.t1_name{
width: 140rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
display: flex;
align-items: center;
.imgs{
margin-left: 10rpx;
width: 26rpx;
height: 26rpx;
}
}
.t1_order{
width: 430rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.t1_num{
width: 103rpx;
height: 36rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #3D3D3D;
line-height: 36rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
</style>

View File

@ -1,77 +0,0 @@
<template>
<view class="box">
<u--image :showLoading="true"
:src="init.image" showMenuByLongpress
width="690rpx" height="600rpx"></u--image>
<view class=" service flex justify-center align-items" @click="callPhone(init.mobile)">
<image src="../../static/my/server.png" mode="" style="width: 64rpx;height: 64rpx;"></image>
<span class="flex justify-center align-items">联系客服:{{init.mobile}}</span>
</view>
</view>
</template>
<script>
export default {
data() {
return {
init:{}
};
},
onShow() {
this.getinit()
},
methods:{
callPhone(phone) {
uni.makePhoneCall({
phoneNumber: phone
})
},
getinit() {
uni.$u.http.get('/api/index/init', {}).then(res => {
if (res.code == 1) {
this.init = res.data.customer_service
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
}
}
</script>
<style lang="scss" scoped>
.box{
display: flex;
justify-content: center;
align-items: center;
flex-flow: column;
}
.service{
margin-top: 42rpx;
margin-bottom: 120rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #008CFF;
display: flex;
justify-content: center;
align-items: center;
span{
display: flex;
justify-content: center;
align-items: center;
}
}
</style>

View File

@ -33,121 +33,121 @@
<image src="/static/index/schoolNight.png" alt="" class="imgstop_ye" @click="toshool"></image> <image src="/static/index/schoolNight.png" alt="" class="imgstop_ye" @click="toshool"></image>
</view> </view>
<!-- <scroll-view scroll-y="true" class="flex align-items" style="height: 1250rpx;box-sizing: border-box;"> -->
<view class="swiper-box">
<MySwiper :list="swiperList"></MySwiper>
</view>
<view class="swiper-box"> <!-- 标签 -->
<MySwiper :list="swiperList"></MySwiper> <view class="tab_all">
</view> <view class="tabs">
<view
<!-- 标签 --> v-for="(tab, index) in list"
<view class="tab_all"> :key="index"
<view class="tabs"> :class="['tab-item', { active: current === index }]"
<view @click="handleClick(index,tab.id)"
v-for="(tab, index) in list" >
:key="index" <image
:class="['tab-item', { active: current === index }]" v-if="index != 0 && index != 1 && tab.image"
@click="handleClick(index,tab.id)" :src="tab.image"
> mode=""
<image class="imgs_bq"
v-if="index != 0 && index != 1 && tab.image" ></image>
:src="tab.image" <image
mode="" v-if="index === 1"
class="imgs_bq" src="/static/index/schoolye.png"
></image> mode=""
<image class="imgs_bq"
v-if="index === 1" ></image>
src="/static/index/schoolye.png" <span>{{ tab.name }}</span>
mode="" </view>
class="imgs_bq" </view>
></image> <view class="allbq" @click="openBq">
<span>{{ tab.name }}</span> <image src="/static/index/qbbqfl.png" mode="" class="imgs_all"></image>
</view> </view>
</view> </view>
<view class="allbq" @click="openBq"> <!-- 热门活动 -->
<image src="/static/index/qbbqfl.png" mode="" class="imgs_all"></image> <view class="hot flex flex-column">
</view> <view class="content flex align-items flex-column">
</view> <view
<!-- 热门活动 --> class="flex flex-column w-100 bbb"
<view class="hot flex flex-column"> v-for="(item, index) in hotList"
<view class="content flex align-items flex-column"> :key="index"
<view @click="detail(item.id)"
class="flex flex-column w-100 bbb" >
v-for="(item, index) in hotList"
:key="index"
@click="detail(item.id)"
>
<view <view
class="flex" class="flex"
style="margin-top: 30rpx" style="margin-top: 30rpx"
>
<view
class="right flex flex-column"
style="align-items: self-start"
> >
<span class="title white-space">{{ item.title }}</span> <view
<view class="first-image flex align-items" style="margin-top: 20rpx;width: 100%;"> class="right flex flex-column"
<image v-if="cate_ids != 1" :src="item.user.avatar" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image> style="align-items: self-start"
<image v-else :src="item.headimage" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image> >
<span v-if="cate_ids != 1" style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span> <span class="title white-space">{{ item.title }}</span>
<span v-else class="white-space" style="color: #9C9C9C;margin-left: 10rpx;width: 220rpx;">{{ item.teacher.name }}</span> <view class="first-image flex align-items" style="margin-top: 20rpx;width: 100%;">
<view class="white-space" style="width: 60%;"> <image v-if="cate_ids != 1" :src="item.user.avatar" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
<span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in item.classes_cate">#{{ items_t }}</span> <image v-else :src="item.headimage" style="width: 36rpx;height: 36rpx;border-radius: 80rpx;"></image>
</view> <span v-if="cate_ids != 1" style="color: #9C9C9C;margin-left: 10rpx;">{{ item.user.nickname }}</span>
</view> <span v-else class="white-space" style="color: #9C9C9C;margin-left: 10rpx;width: 220rpx;">{{ item.teacher.name }}</span>
<view class="white-space" style="width: 60%;">
<view class="flex flex-column" style="margin-top: 20rpx;"> <span style="color:#0CA013;margin-left: 20rpx;" v-for="items_t in item.classes_cate">#{{ items_t }}</span>
<view class="time flex align-items white-space"> </view>
<span class="time_tex" v-if="item.status == 2">{{ '报名中' }}</span>
<!-- <span class="time_tex time_texs" v-if="item.status == 4">{{ '进行中' }}</span> -->
<span style="margin:0 20rpx;">{{ dateWeeks(item.start_time) }}</span><span style="width: 1rpx;height: 22rpx;background: #323232;"></span>
<span class="white-space" style="margin-left: 20rpx;width: 260rpx;">{{ item.address_detail }}</span>
</view> </view>
</view> <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 20rpx;">{{ dateWeeks(item.start_time) }}</span><span style="width: 1rpx;height: 22rpx;background: #323232;"></span>
<span class="white-space" style="margin-left: 20rpx;width: 260rpx;">{{ item.address_detail }}</span>
</view>
<view class="flex align-items justify-center" style="margin-top: 20rpx;margin-bottom: 32rpx;" > </view>
<view class="imgs_con_div" v-for="(items_img,index) in item.images.slice(0,3)" :key="index">
<image class="imgs_con" mode="widthFix" :src="items_img"></image> <view class="flex align-items justify-center" style="margin-top: 20rpx;margin-bottom: 32rpx;" >
<view class="imgs_con_div" v-for="(items_img,index) in item.images.slice(0,3)" :key="index">
<image class="imgs_con" mode="widthFix" :src="items_img"></image>
</view>
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="bottom flex align-items" v-if="cate_ids != 1"> <view class="bottom flex align-items" v-if="cate_ids != 1">
<view class="flex align-items toptext"> <view class="flex align-items toptext">
<span class="flex align-items" > <span class="flex align-items" >
<u-avatar-group <u-avatar-group
:urls="item.join_info.users" :urls="item.join_info.users"
keyName="avatar" keyName="avatar"
size="30" size="30"
maxCount="5" maxCount="5"
gap="0.4" gap="0.4"
></u-avatar-group> ></u-avatar-group>
<image <image
src="/static/index/dian.png" src="/static/index/dian.png"
:class="item.join_info.users.length > 0 ? '' :'smalld'" :class="item.join_info.users.length > 0 ? '' :'smalld'"
style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;" style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;"
></image> ></image>
</span>
<view class="number flex align-items" >
{{ Number(item.join_info.people_number)+"人已上车" }}
</view>
</view>
<span v-if="item.status == 5" class="part1 flex justify-center align-items">
已结束
</span> </span>
<view class="number flex align-items" > <span v-if="item.status == 2" class="part flex justify-center align-items">
{{ Number(item.join_info.people_number)+"人已上车" }} 上车
</view> </span>
</view> </view>
<span v-if="item.status == 5" class="part1 flex justify-center align-items">
已结束
</span>
<span v-if="item.status == 2" class="part flex justify-center align-items">
上车
</span>
</view> </view>
</view> </view>
</view> </view>
</view> <!-- </scroll-view> -->
<!-- 全部标签 --> <!-- 全部标签 -->
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1040rpx'}" <u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{'width':'750rpx','height':'1040rpx'}"
@close="closebq"> @close="closebq">
@ -250,7 +250,9 @@ export default {
}; };
}, },
onLoad() { onLoad() {
uni.hideTabBar();
// uni.hideTabBar();
}, },
mounted() { mounted() {
this.videoContext = uni.createVideoContext("myVideo"); //video this.videoContext = uni.createVideoContext("myVideo"); //video

View File

@ -1,508 +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('/packageA/index/previousDetail?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,
is_expire: 1
}
}).then(res => {
if (res.code == 1) {
this.last_page = res.data.list.last_page
this.list = [...this.list, ...res.data.list.data];
if (this.list.length >= res.data.list.total) {
this.loadStatus = 'nomore';
} else {
this.loadStatus = 'loading';
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
this.loadStatus = 'loading';
}
}).catch(error => {
console.error('请求失败', error);
this.loadStatus = 'loading';
});
},
}
}
</script>
<style lang="scss" scoped>
.box {
background: linear-gradient(to bottom, #F1F2F8 0%, #FFFFFF 5%, #FFFFFF 100%);
.con-center {
width: 690rpx;
margin-top: 25rpx;
.centerBack {
position: fixed;
width: 100%;
height: 100%;
top: 25rpx;
left: 0;
z-index: -1;
}
.header {
height: 50rpx;
margin-top: 37rpx;
.s-header {
width: 104rpx;
height: 50rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9E9E9E;
line-height: 26rpx;
}
.s-header.selected {
width: 104rpx;
height: 50rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FFFFFF;
line-height: 26rpx;
}
}
}
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.line {
margin-top: 12rpx;
width: 690rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.centerBox {
width: 690rpx;
.error {
width: 100%;
word-break: break-all;
}
.box-line {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin-top: 52rpx;
}
.center {
margin: 32rpx 0 32rpx 0;
}
.rightBox {
margin-left: 24rpx;
width: 378rpx;
.line-row {
width: 382rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
margin: 14rpx 0 6rpx 0;
}
.name {
font-weight: 800;
font-size: 36rpx;
color: #343434;
margin-bottom: 24rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
/* 设置行数 */
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
/* 防止单词被截断 */
}
.minge {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
margin-bottom: 14rpx;
}
.pass {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #34DC12;
}
.full {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF2323;
}
.money {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF2323;
span {
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.Cancel {
width: 138rpx;
height: 48rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
background: #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
}
.make {
width: 138rpx;
height: 48rpx;
background: #008CFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
line-height: 32rpx;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-left: 16rpx;
}
.QR {
width: 138rpx;
height: 48rpx;
background: #4974FF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
font-weight: 400;
font-size: 26rpx;
color: #EAEAEA;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-end;
margin-top: 50rpx;
}
}
}
.charge {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FF2323;
line-height: 32rpx;
}
.search {
margin-top: 24rpx;
width: 690rpx;
height: 64rpx;
background: #FFFFFF;
box-shadow: 2rpx 2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border: 2rpx solid #008CFF;
.dashed {
image {
width: 52rpx;
height: 52rpx;
}
}
.line-search {
width: 2rpx;
height: 42rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.input {
// border: 4rpx solid #EAEAEA;
padding-left: 12rpx;
height: 100%;
width: 100%;
}
::v-deep .input-placeholder {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
line-height: 32rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.searchBtn{
width: 128rpx;
height: 64rpx;
background: #008CFF;
border-radius: 5rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.popup {
.header {
margin-left: 24rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #008CFF;
margin-top: 34rpx;
width: 690rpx;
}
.line-row {
width: 690rpx;
height: 1rpx;
background: #D9D9D9;
margin: 11rpx 0 31rpx 0;
}
.pop-center {
.left {}
.right {
margin-left: 30rpx;
.title {
width: 340rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
}
}
}
.line-short {
width: 400rpx;
height: 1rpx;
background: #D9D9D9;
}
.popList {
justify-content: space-between;
width: 600rpx;
margin-top: 32rpx;
.hei {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #343434;
}
}
.pop-btn {
width: 690rpx;
margin-top: 62rpx;
justify-content: space-around;
.Cancel {
width: 306rpx;
height: 80rpx;
border-radius: 401rpx 401rpx 401rpx 401rpx;
border: 2rpx solid #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
}
.Confirm {
width: 306rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
}
}
}
.hui {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
.white-space {
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
}
</style>

View File

@ -42,16 +42,7 @@
<!-- <view class="first flex flex-column flex-start justify-center" style="margin-top: 42rpx;">
<view class="centerBox flex justify-start align-items" style="margin-left: 60rpx;">
<view class="flex flex-column align-items justify-center" v-for="(item,index) in list2"
:key="index" @click="jump(item.url,item.auth_status)" v-if="item.auth_status == 1">
<image :src="item.image" mode="" style="width: 64rpx; height: 64rpx;margin-bottom: 24rpx;">
</image>
<span class="text">{{item.text}}</span>
</view>
</view>
</view> -->
<!-- 提现 --> <!-- 提现 -->
<!-- <view class="first mymoney flex flex-column" @click="callPhone(init.mobile)"> <!-- <view class="first mymoney flex flex-column" @click="callPhone(init.mobile)">
@ -129,7 +120,7 @@
maxCount="5" gap="0.4"></u-avatar-group> maxCount="5" gap="0.4"></u-avatar-group>
<image :class="item.join_info.users.length > 0 ? '' : 'smalld'" <image :class="item.join_info.users.length > 0 ? '' : 'smalld'"
src="/static/index/dian.png" src="/static/index/dian.png"
style="width: 60rpx;height: 60rpx;margin-left:-20rpx;z-index: 1;"></image> style="width: 58rpx;height: 58rpx;margin-left:-20rpx;z-index: 1;"></image>
</span> </span>
<view class="number flex align-items"> <view class="number flex align-items">
{{ Number(item.join_info.people_number) + "人已上车" }} {{ Number(item.join_info.people_number) + "人已上车" }}
@ -152,8 +143,8 @@
<!-- 授权登录 --> <!-- 授权登录 -->
<u-popup :show="showPopup" mode="center" round="20" :customStyle="{ 'width': '644rpx', 'height': '486rpx'}" <u-popup :show="showPopup" mode="center" round="20" :customStyle="{ 'width': '644rpx', 'height': '426rpx','position': 'relative'}"
:closeable="true" @close="close"> :closeable="false" @close="close">
<!-- 隐私协议 --> <!-- 隐私协议 -->
<lsl-protocol-popup title="用户协议和隐私政策提示" predesc="感谢您使用洛阳多样青春搭+。为保护您的个人信息安全,在您洛阳多样青春搭+的服务前,请务必仔细阅读" <lsl-protocol-popup title="用户协议和隐私政策提示" predesc="感谢您使用洛阳多样青春搭+。为保护您的个人信息安全,在您洛阳多样青春搭+的服务前,请务必仔细阅读"
subdesc='以了解详细内容。如您同意,请点击“同意并继续”并开始使用我们的服务。' subdesc='以了解详细内容。如您同意,请点击“同意并继续”并开始使用我们的服务。'
@ -203,12 +194,12 @@ export default {
other: [{ other: [{
tit: '《用户协议》', tit: '《用户协议》',
type: 'page', // doc page type: 'page', // doc page
content: '/pages/Negotiate/agreement', // / content: '/packageA/Negotiate/agreement', // /
}, },
{ {
tit: '《隐私政策》', tit: '《隐私政策》',
type: 'page', // doc page type: 'page', // doc page
content: '/pages/Negotiate/privacy', // / content: '/packageA/Negotiate/privacy', // /
}, },
], ],
protocolArr: ["<隐私协议>"], protocolArr: ["<隐私协议>"],
@ -280,65 +271,7 @@ export default {
}, },
], ],
list2: [{
image: '../../static/my/Platform.png',
text: '申请入驻',
url: "/pages/index/Apply",
auth_status: 1
},
{
image: '../../static/my/Check.png',
text: '报名审核',
url: "/packageA/my/classCheck",
auth_status: 0
},
{
image: '../../static/my/Manage.png',
text: '课程管理',
auth_status: 0,
url: '/packageA/my/management',
},
{
image: '../../static/my/activity.png',
text: '活动管理',
auth_status: 0,
url: '/packageA/my/ac-management',
},
{
image: '../../static/my/verification.png',
text: '核销课程',
url: '/packageA/my/cancel',
auth_status: 0
},
{
image: '../../static/my/cancal.png',
text: '核销活动',
url: '/packageA/my/cancelActivity',
auth_status: 0
},
// {
// image: '../../static/my/list.png',
// text: '',
// auth_status: 0
// },
// {
// image: '../../static/my/phone.png',
// text: '',
// auth_status: 0
// },
{
image: '../../static/my/organization.png',
text: '我的机构',
auth_status: 0,
url: '/pages/center/MechanismDetail',
},
{
image: '../../static/my/addClass.png',
text: '创建课程',
auth_status: 0,
url: '/packageA/my/addManagement',
}
]
}; };
}, },
// watch: { // watch: {
@ -375,7 +308,6 @@ export default {
}, },
onShow() { onShow() {
this.getStatus()
this.token = uni.getStorageSync('token'); this.token = uni.getStorageSync('token');
if (this.token) { if (this.token) {
this.getUserInfo(); this.getUserInfo();
@ -507,49 +439,6 @@ export default {
}); });
}); });
}, },
//
getStatus() {
uni.$u.http.get('/api/school/shop/auth_info', {}).then(res => {
console.log(this.list2.length, 'this.list2.length')
if (res.code == 1) {
let have_auth = false;
let have_shop = false;
if (res.data.verification_auth.verification) {
have_auth = true;
}
if (res.data.auth_status == 1 && res.data.shop_id) {
have_shop = true;
}
if (have_auth) {
for (let i = 1; i < this.list2.length; i++) {
this.list2[i].auth_status = 1;
}
this.list2[this.list2.length - 1].auth_status = 0;
this.list2[this.list2.length - 2].auth_status = 0;
}
if (have_shop) {
this.list2[0].auth_status = 0;
for (let i = 1; i < this.list2.length; i++) {
this.list2[i].auth_status = 1;
}
this.shop_id = res.data.shop_id
uni.setStorageSync('shop_id', res.data.shop_id)
uni.setStorageSync('apply_info', res.data.apply_info)
this.list2[this.list2.length - 2].url = `/pages/center/MechanismDetail?id=${res.data.shop_id}`;
}
}
}).catch(error => {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
})
},
toMycy() { toMycy() {
// if (!this.token) { // if (!this.token) {
// this.miniLogin() // this.miniLogin()
@ -599,71 +488,72 @@ export default {
url: url url: url
}); });
}, },
jump(url, type) { //
console.log(url) // jump(url, type) {
if (url == '/packageA/my/cancel') { // console.log(url)
uni.scanCode({ // if (url == '/packageA/my/cancel') {
success: (res) => { // uni.scanCode({
console.log('扫码结果:' + res.result); // success: (res) => {
uni.navigateTo({ // console.log('' + res.result);
url: url + '?res=' + encodeURIComponent(res.result) // uni.navigateTo({
}); // url: url + '?res=' + encodeURIComponent(res.result)
}, // });
fail: (err) => { // },
console.error('扫码失败:' + err); // fail: (err) => {
uni.showToast({ // console.error('' + err);
title: '扫码已取消', // uni.showToast({
icon: 'none' // title: '',
}); // icon: 'none'
} // });
}); // }
} else if (url == '/packageA/my/addManagement') { // });
uni.$u.http.get('/api/school/shop/auth_info',).then(res => { // } else if (url == '/packageA/my/addManagement') {
if (res.code == 1) { // uni.$u.http.get('/api/school/shop/auth_info',).then(res => {
if (res.data.check_full) { // if (res.code == 1) {
uni.navigateTo({ // if (res.data.check_full) {
url: "/packageA/my/addManagement?shop_id=" + this.shop_id // uni.navigateTo({
}) // url: "/packageA/my/addManagement?shop_id=" + this.shop_id
} else { // })
uni.showToast({ // } else {
title: '必要展示信息未完善,请先在机构完善展示信息', // uni.showToast({
icon: 'none', // title: '',
duration: 2000 // icon: 'none',
}); // duration: 2000
} // });
// }
} else { // } else {
uni.showToast({ // uni.showToast({
title: res.msg, // title: res.msg,
icon: 'none', // icon: 'none',
duration: 2000 // duration: 2000
}); // });
} // }
}).catch(error => { // }).catch(error => {
console.error('请求失败', error); // console.error('', error);
}); // });
} else if (url == '/packageA/my/cancelActivity') { // } else if (url == '/packageA/my/cancelActivity') {
uni.scanCode({ // uni.scanCode({
success: (res) => { // success: (res) => {
console.log('扫码结果:' + res.result); // console.log('' + res.result);
uni.navigateTo({ // uni.navigateTo({
url: url + '?res=' + encodeURIComponent(res.result) // url: url + '?res=' + encodeURIComponent(res.result)
}); // });
}, // },
fail: (err) => { // fail: (err) => {
console.error('扫码失败:' + err); // console.error('' + err);
uni.showToast({ // uni.showToast({
title: '扫码已取消', // title: '',
icon: 'none' // icon: 'none'
}); // });
} // }
}); // });
} else { // } else {
uni.navigateTo({ // uni.navigateTo({
url: url // url: url
}); // });
} // }
}, // },
close() { close() {
this.showPopup = false this.showPopup = false
}, },
@ -1159,6 +1049,7 @@ export default {
} }
.popup { .popup {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -1168,16 +1059,16 @@ export default {
.img_shouquan { .img_shouquan {
position: absolute; position: absolute;
width: 675rpx; width: 680rpx;
height: 857rpx; height: 857rpx;
left: -24rpx; left: -25rpx;
top: -185px; top: -390rpx;
} }
#txt2 { #txt2 {
text-align: center; text-align: center;
margin-top: 220rpx; margin-top: 200rpx;
font-size: 28rpx; font-size: 28rpx;
color: #525252; color: #525252;
margin-bottom: 60rpx; margin-bottom: 60rpx;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 988 B

BIN
static/clearicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/detail/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
static/detail/hxall.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

BIN
static/detail/hxslice.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -67,8 +67,8 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
// margin-top: 40rpx; margin-top: 20rpx;
margin-left: 40rpx; // margin-left: 40rpx;
width: 90%; width: 90%;
font-size: 28rpx; font-size: 28rpx;
color: $themeColor; color: $themeColor;