Browse Source

feat(market): 添加市场端我的页面相关功能

- 新增市场端我的页面,包括用户信息、统计信息等功能模块
- 实现切换身份、到课率统计、即将到期等功能跳转
- 添加个人资料编辑功能,包括头像、姓名、性别等信息修改- 新增授课统计详情页面,展示详细授课信息
- 实现意见反馈和设置页面的跳转
master
liutong 1 year ago
parent
commit
5bef7e0e8d
  1. 18
      components/AQ/AQTabber.vue
  2. 27
      pages.json
  3. 256
      pages/market/my/arrival_statistics.vue
  4. 316
      pages/market/my/due_soon.vue
  5. 317
      pages/market/my/index.vue
  6. 365
      pages/market/my/info.vue
  7. 275
      pages/market/my/schooling_statistics.vue
  8. 53
      pages/market/my/set_up.vue
  9. 107
      pages/market/my/update_pass.vue

18
components/AQ/AQTabber.vue

@ -27,7 +27,7 @@
methods: {
async init(){
uni.setStorageSync('userType','3')
uni.setStorageSync('userType','2')
let userType = uni.getStorageSync('userType')
this.userType = userType
@ -73,34 +73,34 @@
this.tabBar = [
{
text: "首页",
urlPath:'/pages/student/index/index',//
urlPath:'/pages/market/index/index',//
iconPath: "/static/images/tabbar/my.png",
selectedIconPath: "/static/images/tabbar/my.png"
},
{
text: "线索",
urlPath:'/pages/student/my/my',//
urlPath:'/pages/market/my/index',//
iconPath: "/static/images/tabbar/my.png",
selectedIconPath: "/static/images/tabbar/my.png"
},
{
text: "添加",
urlPath:'/pages/student/my/my',//
text: "",
urlPath:'/pages/market/my/index',//
iconPath: "/static/images/tabbar/my.png",
selectedIconPath: "/static/images/tabbar/my.png",
midButton: true,
width: 96,
height: 96
width: 70,
height: 70
},
{
text: "数据",
urlPath:'/pages/student/my/my',//
urlPath:'/pages/market/my/index',//
iconPath: "/static/images/tabbar/my.png",
selectedIconPath: "/static/images/tabbar/my.png"
},
{
text: "我的",
urlPath:'/pages/student/my/my',//
urlPath:'/pages/market/my/index',//
iconPath: "/static/images/tabbar/my.png",
selectedIconPath: "/static/images/tabbar/my.png"
}

27
pages.json

@ -303,7 +303,34 @@
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/market/my/index",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "white",

256
pages/market/my/arrival_statistics.vue

@ -0,0 +1,256 @@
<!--到课统计-详情-->
<template>
<view class="main_box">
<view class="main_section">
<view class="section_3">
<view class="ul">
<view class="li">
<view class="left_box">
<view class="date_box">
<text>12</text>
<text>/</text>
<text>24</text>
</view>
<view class="ratio">
到课率80%
</view>
</view>
<view class="center_box">
<view>班级少年班</view>
<view>时间2020-05-25 15:30 - 17:30</view>
<view>课室302
</view>
<view>课程篮球少儿课
</view>
</view>
<view class="right_box">
<view class="tag" style="background:#fad24e;">上课中</view>
<!-- <view class="tag" style="background:#1cd188;">待上课</view>-->
</view>
</view>
<view class="li">
<view class="left_box">
<view class="date_box">
<text>12</text>
<text>/</text>
<text>24</text>
</view>
<view class="ratio">
到课率80%
</view>
</view>
<view class="center_box">
<view>班级少年班</view>
<view>时间2020-05-25 15:30 - 17:30</view>
<view>课室302
</view>
<view>课程篮球少儿课
</view>
</view>
<view class="right_box">
<!-- <view class="tag" style="background:#fad24e;">上课中</view>-->
<view class="tag" style="background:#1cd188;">待上课</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import user from '@/api/user.js';
import AQTabber from "@/components/AQ/AQTabber.vue"
export default {
components: {
AQTabber,
},
data() {
return {
formData:{},
//
show_course:false,//
//
course_name:'课程',//
options_course: [
{
text: '请选择课程',
value: '',
checked: true
}, {
text: '羽毛球课程1',
value: '1'
}, {
text: '篮球课程2',
value: '2'
}
],
//
show_classroom:false,//
//
classroom_name:'课室',//
options_classroom: [
{
text: '请选择课室',
value: '',
checked: true
}, {
text: '羽毛球201',
value: '1'
}, {
text: '篮球室101',
value: '2'
}
],
}
},
onLoad() {
},
methods: {
//
clickCourse(e){
console.log(e)
this.course_name = e.text
this.show_course = true
},
//
filterTapCourse() {
//
this.$refs.ref_course.show()
this.show_course = true;
},
//
clickClassroom(e){
console.log(e)
this.classroom_name = e.text
this.show_classroom = true
},
//
filterTapClassroom() {
//
this.$refs.ref_classroom.show()
this.show_classroom = true;
},
//
openViewCourseInfo(item){
uni.navigateTo({
url: '/pages/coach/course/info'
})
},
}
}
</script>
<style lang="less" scoped>
.main_box{
background: #292929 ;
}
//
.navbar_section{
display: flex;
justify-content: center;
align-items: center;
background: #29d3b4;
.title{
padding: 20rpx 0;
font-size: 30rpx;
color: #315d55;
}
}
.main_section{
min-height: 100vh;
background: #292929 100%;
padding: 0 24rpx;
padding-top: 32rpx;
padding-bottom: 150rpx;
font-size: 28rpx;
.section_3{
color: #fff;
font-size: 24rpx;
.title_box{
display: flex;
flex-direction: column;
.top_box{
display: flex;
justify-content: space-between;
align-items: center;
text{
font-size: 30rpx;
}
}
.line{
width: 90rpx;
height: 2px;
background: #29D3B4;
}
}
.ul{
margin-top: 30rpx;
display: flex;
flex-direction: column;
gap: 20rpx;
.li{
position: relative;
border-radius: 22rpx;
background: #434544 100%;
padding: 14rpx 0;
display: flex;
align-items: center;
.left_box{
margin-left: 28rpx;
width: 146rpx;
display: flex;
flex-direction: column;
gap: 10rpx;
.date_box{
display: flex;
font-size: 48rpx;
text:nth-child(1){
color: #29D3B4;
}
}
.ratio{
color: #AAAAAA;
}
}
.center_box{
margin-left: 52rpx;
display: flex;
flex-direction: column;
gap: 10rpx;
}
.right_box{
.tag{
position:absolute;
top: 0rpx;
right: 0rpx;
padding: 10rpx;
width: 102rpx;
text-align: center;
font-size: 24rpx;
border-bottom-left-radius: 20rpx;
border-top-right-radius: 20rpx;
}
}
}
}
}
}
</style>

316
pages/market/my/due_soon.vue

@ -0,0 +1,316 @@
<!--即将到期-->
<template>
<view class="main_box">
<!--自定义导航栏-->
<!-- <view class="navbar_section">-->
<!-- <view class="title">班级详情</view>-->
<!-- </view>-->
<view class="main_section">
<!-- 班级成员列表-->
<view class="section_4">
<view class="ul">
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="tag_box">
即将到期
</view>
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="tag_box">
即将到期
</view>
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="tag_box">
即将到期
</view>
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="tag_box">
即将到期
</view>
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="tag_box">
即将到期
</view>
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
<view class="li" @click="openViewStudentInfo({id:1})">
<view class="left">
<view class="box_1">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<!-- <view class="tag_box">-->
<!-- 即将到期-->
<!-- </view>-->
</view>
<view class="box_2">
<view class="name">黄明明</view>
<view class="date">课程截止时间2020.05:25</view>
</view>
</view>
<view class="right">
<view class="item">
<view>24</view>
<view>已上课时</view>
</view>
<view class="item">
<view>24</view>
<view>剩余课时</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- 底部导航-->
<!-- <AQTabber/>-->
</view>
</template>
<script>
import user from '@/api/user.js';
import AQTabber from "@/components/AQ/AQTabber.vue"
export default {
components: {
AQTabber,
},
data() {
return {
formData:{},
tabType:'1',//1=,2=
}
},
onLoad() {
},
methods: {
//tab
tabChange(tabType) {
this.tabType = tabType
},
//
openViewCourseInfo(item){
uni.navigateTo({
url: '/pages/coach/course/info'
})
},
//
openViewStudentInfo(item){
uni.navigateTo({
url: '/pages/coach/student/info'
})
},
}
}
</script>
<style lang="less" scoped>
.main_box{
background: #292929 ;
}
//
.navbar_section{
display: flex;
justify-content: center;
align-items: center;
background: #292929;
.title{
padding: 20rpx 0;
font-size: 30rpx;
color: #fff;
}
}
.main_section{
min-height: 100vh;
background: #292929 100%;
padding: 0 24rpx;
padding-top: 40rpx;
padding-bottom: 150rpx;
font-size: 24rpx;
color: #FFFFFF;
//
.section_4{
.ul{
display: flex;
flex-direction: column;
gap: 10rpx;
.li{
padding: 20rpx 0;
padding-bottom: 40rpx;
border-bottom: 2px solid #D7D7D7;
display: flex;
justify-content: space-between;
.left{
display: flex;
align-items: center;
gap: 30rpx;
.box_1{
padding-left: 20rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
.pic{
width: 84rpx;
height: 84rpx;
border-radius: 50%;
}
.tag_box{
position: absolute;
bottom: -30rpx;
width: 120rpx;
height: 38rpx;
background-color: #F59A23;
border-radius: 4rpx;
line-height: 35rpx;
text-align: center;
font-size: 20rpx;
}
}
.box_2{
display: flex;
flex-direction: column;
gap: 20rpx;
.name{
font-size: 28rpx;
}
.date{
font-size: 24rpx;
}
}
}
.right{
display: flex;
align-items: center;
gap: 14rpx;
.item{
border: 1px solid #00E5BB;
border-radius: 10rpx;
width: 102rpx;
display: flex;
flex-direction: column;
view{
text-align: center;
height: 50rpx;
line-height: 50rpx;
}
view:nth-child(1){
font-size: 32rpx;
background-color: #fff;
color: #00e5bb;
}
view:nth-child(2){
font-size: 20rpx;
background-color: #00e5bb;
}
}
}
}
}
}
}
</style>

317
pages/market/my/index.vue

@ -0,0 +1,317 @@
<!--我的-首页-->
<template>
<view class="main_box">
<!--自定义导航栏-->
<view class="navbar_section">
<view class="title">我的</view>
</view>
<view style="background:#29D3B4;">
<!--用户信息-->
<view class="user_section">
<view class="box">
<view class="left" @click="openViewMyInfo()">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="name">包子皮</view>
</view>
<view class="right">
<view class="btn">切换身份</view>
<view class="btn" @click="openViewArrivalStatistics()">到课率统计</view>
<view class="btn"></view>
</view>
</view>
</view>
<!--统计信息-->
<view class="count_section">
<view class="main">
<view class="course_box">
<view class="top">
<view class="item">
<view class="num">1234</view>
<view class="intro">总授课数/</view>
</view>
<view class="item">
<view class="num">4</view>
<view class="intro">总授班级/</view>
</view>
<view class="item">
<view class="num">1234</view>
<view class="intro">总负责学员/
</view>
</view>
</view>
<view class="bottom">
月授课数
<text>12</text>
月负责学员
<text>188</text>
</view>
</view>
</view>
<view class="bg_box bg_top"></view>
<view class="bg_box bg_bottom"></view>
</view>
</view>
<view class="main_section">
<view class="section_box">
<view class="item">
<view>我的体育场</view>
<view>xxx场馆</view>
</view>
<view class="item" @click="openViewDueSoon()">
<view>即将到期</view>
<view></view>
</view>
<view class="item" @click="openViewSchoolingStatistics()">
<view>授课统计</view>
<view></view>
</view>
</view>
<view class="section_box">
<view class="item" @click="openViewFeedback()">
<view>意见反馈</view>
<view></view>
</view>
<view class="item" @click="openViewSetUp()">
<view>设置</view>
<view></view>
</view>
</view>
</view>
<!-- 底部导航-->
<AQTabber/>
</view>
</template>
<script>
import user from '@/api/user.js';
import AQTabber from "@/components/AQ/AQTabber.vue"
export default {
components: {
AQTabber,
},
data() {
return {
formData:{},
}
},
onLoad() {
},
methods: {
//
openViewArrivalStatistics(){
uni.navigateTo({
url: '/pages/coach/my/arrival_statistics'
})
},
//
openViewDueSoon(){
uni.navigateTo({
url: '/pages/coach/my/due_soon'
})
},
//
openViewSchoolingStatistics(){
uni.navigateTo({
url: '/pages/coach/my/schooling_statistics'
})
},
//
openViewFeedback(){
uni.navigateTo({
url: '/pages/common/feedback'
})
},
//
openViewMyInfo(){
uni.navigateTo({
url: '/pages/coach/my/info'
})
},
//
openViewSetUp(){
uni.navigateTo({
url: '/pages/coach/my/set_up'
})
}
}
}
</script>
<style lang="less" scoped>
.main_box{
background: #292929;
min-height: 28vh;
}
//
.navbar_section{
border: 1px solid #29D3B4;
display: flex;
justify-content: center;
align-items: center;
background: #29D3B4;
.title{
padding: 20rpx 0;
font-size: 30rpx;
color: #fff;
}
}
//
.user_section {
background-color: #29D3B4;
padding-top: 58rpx;
padding-bottom: 42rpx;
color: #fff;
font-size: 28rpx;
.box{
padding-left: 19rpx;
padding-right: 29rpx;
display: flex;
justify-content: space-between;
align-items: center;
gap: 15rpx;
.left{
display: flex;
align-items: center;
gap: 20rpx;
.pic{
width: 144rpx;
height: 144rpx;
border-radius: 50%;
}
.name{
font-size: 28rpx;
}
}
.right{
display: flex;
flex-direction: column;
gap: 20rpx;
.btn{
min-height: 28rpx;
font-size: 28rpx;
}
}
}
}
//
.count_section{
position: relative;
.main{
position: relative;
z-index: 2;
padding: 0rpx 24rpx;
display: flex;
justify-content: center;
.course_box{
padding: 42rpx 28rpx;
width: 692rpx;
border-radius: 20rpx;
background-color: #fff;
display: flex;
flex-direction: column;
gap: 32rpx;
.top{
display: flex;
justify-content: space-between;
align-items: center;
.item{
display: flex;
flex-direction: column;
align-items: center;
gap: 12rpx;
.num{
color: #29D3B4;
font-size: 56rpx;
}
.intro{
color: #AAAAAA;
font-size: 24rpx;
}
}
}
.bottom{
font-size: 24rpx;
color: #333333;
text{
color: #29D3B4;
}
}
}
}
.bg_box{
z-index: 1;
width: 100%;
height: 150rpx;
}
.bg_top{
position: absolute;
top: 0;
background-color: #29D3B4;
}
.bg_bottom{
top: 50%;
position: absolute;
background-color: #292929;
}
}
.main_section{
background: #292929 100%;
padding: 0 24rpx;
padding-top: 40rpx;
padding-bottom: 150rpx;
font-size: 24rpx;
color: #333333;
display: flex;
flex-direction: column;
gap: 22rpx;
.section_box {
background: #fff;
border-radius: 16rpx;
padding: 6rpx 24rpx;
display: flex;
flex-direction: column;
.item{
padding: 24rpx 78rpx;
border-top: 1px solid #F2F2F2;
font-size: 28rpx;
display: flex;
justify-content: space-between;
}
.item:nth-child(1){
border-top: 0;
}
}
}
</style>

365
pages/market/my/info.vue

@ -0,0 +1,365 @@
<!--授课统计-详情-->
<template>
<view class="main_box">
<view class="main_section">
<view class="section">
<view class="item">
<image @click="changeAvatar()" class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="btn" @click="changeAvatar()">修改头像</view>
</view>
</view>
<view class="section">
<view class="item">
<view class="title">
姓名 <text class="required">*</text>
</view>
<view class="input">
<input v-model="formData.name" placeholder="请输入姓名" />
</view>
</view>
<view class="item">
<view class="title">
账号 <text class="required"></text>
</view>
<view class="input">
<input disabled placeholder="暂无" />
</view>
</view>
<view class="item">
<view class="title">
部门 <text class="required"></text>
</view>
<view class="input">
<input disabled placeholder="暂无" />
</view>
</view>
<view class="item">
<view class="title">
等级 <text class="required"></text>
</view>
<view class="input">
<input disabled placeholder="暂无" />
</view>
</view>
</view>
<view class="section">
<view class="item">
<view class="title">
性别 <text class="required">*</text>
</view>
<view class="input">
<input placeholder="请选择性别" v-model="sex_name" @click="picker_show_sex=true"/>
<fui-picker
layer="1"
:linkage="true"
:options="options_sex_arr"
:show="picker_show_sex"
@change="changePickerSex"
@cancel="picker_sex_show=false"
></fui-picker>
</view>
</view>
<view class="item">
<view class="title">
生日 <text class="required">*</text>
</view>
<view class="input">
<input placeholder="请选择生日" @click="picker_show_birthday=true" v-model="formData.birthday"/>
<fui-date-picker
:minDate="minDate"
:maxDate="maxDate"
:show="picker_show_birthday"
type="3"
@change="changePickerBirthday"
@cancel="picker_show_birthday=false"
></fui-date-picker>
</view>
</view>
<view class="item">
<view class="title">
邮箱 <text class="required">*</text>
</view>
<view class="input">
<input v-model="formData.email" placeholder="请输入邮箱" />
</view>
</view>
<view class="item">
<view class="title">
手机 <text class="required">*</text>
</view>
<view class="input">
<input v-model="formData.tel" placeholder="请输入手机" />
</view>
</view>
<view class="item">
<view class="title">
微信 <text class="required"></text>
</view>
<view class="input">
<input v-model="formData.wx" placeholder="请输入微信" />
</view>
</view>
</view>
<view class="submet_btn">提交</view>
</view>
</view>
</template>
<script>
import user from '@/api/user.js';
import {Api_url} from "@/common/config.js";
import AQTabber from "@/components/AQ/AQTabber"
export default {
components: {
AQTabber,
},
data() {
return {
formData:{
images_arr:[],
name:'',//
email:'',//
tel:'',//
wx:'',//
sex:'',//
birthday:'',//
},
//APi
uploadUrl: `${Api_url}/salesmanapi/common/uploadFile`,
//
picker_show_sex: false,
sex_name:'请选择',
options_sex_arr:[
{ value: 1, text: '男' },
{ value: 2, text: '女' },
],
//
minDate:'',
maxDate:'',
picker_show_birthday:false,
}
},
onLoad() {
},
onShow() {
this.init()
},
methods: {
async init(){
this.getBirthday()
},
//
changeAvatar() {
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
const tempFilePath = res.tempFilePaths[0]
//
this.uploadFilePromise(tempFilePath)
}
})
},
async uploadFilePromise(url) {
console.log('AQ',this.uploadUrl,url)
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: this.uploadUrl, //
filePath: url,
name: "file",
formData: {
token: this.$store.state.token,
},
success: (e) => {
console.log('上传成功1',e)
let res = JSON.parse(e.data.replace(/\ufeff/g, "") || "{}")
console.log('上传成功2',res)
if (res.code >= 0){
this.userInfo.pic = res.data.pic_path
this.editPic(res.data.pic_path)
}else{
this.$util.showToast({
title: res.message
});
}
setTimeout(() => {
resolve(res.data.data);
}, 1000);
},
});
});
},
//Api
async editPic(pic) {
let res = await salesmanApi.editPic({pic: pic})
if (res.code >= 0) {
this.$util.showToast({
title: '修改成功'
})
} else {
this.$util.showToast({
title: res.message
})
}
},
//
changePickerSex(e){
console.log('监听选择',e)
this.sex_name = e.text
this.formData.sex = e.value
this.picker_show_sex = false
},
//
//+30
getBirthday(){
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let year_30 = year - 30;
let month_30 = month;
let day_30 = day;
if (month_30 == 2 && day_30 > 28) {
month_30 = 3;
day_30 = 1;
}
if (month_30 == 4 && day_30 > 30) {
month_30 = 5;
day_30 = 1;
}
if (month_30 == 6 && day_30 > 30) {
month_30 = 7;
day_30 = 1;
}
if (month_30 == 9 && day_30 > 30) {
month_30 = 10;
day_30 = 1;
}
if (month_30 == 11 && day_30 > 30) {
month_30 = 12;
day_30 = 1;
}
if (month_30 > 12) {
month_30 = month_30 - 12;
year_30 = year_30 + 1;
}
let minDate = year_30 + "-" + month_30 + "-" + day_30
let maxDate = year + "-" + month + "-" + day
this.minDate = minDate
this.maxDate = maxDate
},
//
changePickerBirthday(e){
console.log('监听生日选择',e)
this.formData.birthday = e.result
this.picker_show_birthday = false
},
}
}
</script>
<style lang="less" scoped>
.main_box{
background: #292929 ;
}
//
.navbar_section{
display: flex;
justify-content: center;
align-items: center;
background: #29d3b4;
.title{
padding: 20rpx 0;
font-size: 30rpx;
color: #315d55;
}
}
.main_section{
min-height: 100vh;
background: #292929 100%;
padding: 0 0rpx;
padding-top: 32rpx;
padding-bottom: 150rpx;
font-size: 28rpx;
color: #fff;
display: flex;
flex-direction: column;
gap: 20rpx;
.section{
background-color: #434544;
.item{
padding: 20rpx 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
.pic{
width: 82rpx;
height: 82rpx;
border-radius: 50%;
}
.btn{}
.title{
display: flex;
align-items: center;
font-size: 26rpx;
color: #D7D7D7;
.required{
margin-left: 10rpx;
color: red;
}
}
.input{
input{
text-align: right;
}
}
}
}
.submet_btn{
margin: 0 auto;
margin-top: 40rpx;
border: 2px solid #25a18b;
color: #25a18b;
width: 80%;
height: 80rpx;
font-size: 30rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
</style>

275
pages/market/my/schooling_statistics.vue

@ -0,0 +1,275 @@
<!--授课统计-详情-->
<template>
<view class="main_box">
<view class="main_section">
<view class="section_1">
<view class="ul">
<view class="li">
<view class="title">2021年3月</view>
<view class="box">
<view class="top">
<view class="top_item">
<view class="num">34</view>
<view class="explain">月授课数/</view>
</view>
<view class="top_item">
<view class="num">4</view>
<view class="explain">总授班级/</view>
</view>
<view class="top_item">
<view class="num">1234</view>
<view class="explain">月负责学员/</view>
</view>
</view>
<view class="bottom">
月到课率<text>88%</text>
</view>
</view>
</view>
<view class="li">
<view class="title">2021年3月</view>
<view class="box">
<view class="top">
<view class="top_item">
<view class="num">34</view>
<view class="explain">月授课数/</view>
</view>
<view class="top_item">
<view class="num">4</view>
<view class="explain">总授班级/</view>
</view>
<view class="top_item">
<view class="num">1234</view>
<view class="explain">月负责学员/</view>
</view>
</view>
<view class="bottom">
月到课率<text>88%</text>
</view>
</view>
</view>
<view class="li">
<view class="title">2021年3月</view>
<view class="box">
<view class="top">
<view class="top_item">
<view class="num">34</view>
<view class="explain">月授课数/</view>
</view>
<view class="top_item">
<view class="num">4</view>
<view class="explain">总授班级/</view>
</view>
<view class="top_item">
<view class="num">1234</view>
<view class="explain">月负责学员/</view>
</view>
</view>
<view class="bottom">
月到课率<text>88%</text>
</view>
</view>
</view>
<view class="li">
<view class="title">2021年3月</view>
<view class="box">
<view class="top">
<view class="top_item">
<view class="num">34</view>
<view class="explain">月授课数/</view>
</view>
<view class="top_item">
<view class="num">4</view>
<view class="explain">总授班级/</view>
</view>
<view class="top_item">
<view class="num">1234</view>
<view class="explain">月负责学员/</view>
</view>
</view>
<view class="bottom">
月到课率<text>88%</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import user from '@/api/user.js';
import AQTabber from "@/components/AQ/AQTabber.vue"
export default {
components: {
AQTabber,
},
data() {
return {
formData:{},
//
show_course:false,//
//
course_name:'课程',//
options_course: [
{
text: '请选择课程',
value: '',
checked: true
}, {
text: '羽毛球课程1',
value: '1'
}, {
text: '篮球课程2',
value: '2'
}
],
//
show_classroom:false,//
//
classroom_name:'课室',//
options_classroom: [
{
text: '请选择课室',
value: '',
checked: true
}, {
text: '羽毛球201',
value: '1'
}, {
text: '篮球室101',
value: '2'
}
],
}
},
onLoad() {
},
methods: {
//
clickCourse(e){
console.log(e)
this.course_name = e.text
this.show_course = true
},
//
filterTapCourse() {
//
this.$refs.ref_course.show()
this.show_course = true;
},
//
clickClassroom(e){
console.log(e)
this.classroom_name = e.text
this.show_classroom = true
},
//
filterTapClassroom() {
//
this.$refs.ref_classroom.show()
this.show_classroom = true;
},
//
openViewCourseInfo(item){
uni.navigateTo({
url: '/pages/coach/course/info'
})
},
}
}
</script>
<style lang="less" scoped>
.main_box{
background: #292929 ;
}
//
.navbar_section{
display: flex;
justify-content: center;
align-items: center;
background: #29d3b4;
.title{
padding: 20rpx 0;
font-size: 30rpx;
color: #315d55;
}
}
.main_section{
min-height: 100vh;
background: #292929 100%;
padding: 0 24rpx;
padding-top: 32rpx;
padding-bottom: 150rpx;
font-size: 28rpx;
.section_1{
color: #fff;
font-size: 24rpx;
.ul{
display: flex;
flex-direction: column;
gap: 56rpx;
.li{
.title{
color: #fff;
font-size: 24rpx;
}
.box{
margin-top: 24rpx;
padding: 36rpx 32rpx 28rpx 44rpx;
width: 700rpx;
border-radius: 14rpx;
background-color: #fff;
color: #333333FF;
font-size: 26rpx;
.top{
display: flex;
justify-content: space-between;
align-items: center;
.top_item{
display: flex;
flex-direction: column;
align-items: center;
gap: 12rpx;
.num{
font-size: 56rpx;
color: #29D3B4;
}
.explain{
font-size: 24rpx;
color: #AAAAAA;
}
}
}
.bottom{
margin-top: 34rpx;
font-size: 24rpx;
text{
margin-left: 15rpx;
color: #29D3B4;
}
}
}
}
}
}
}
</style>

53
pages/market/my/set_up.vue

@ -0,0 +1,53 @@
<!--设置页-->
<template>
<view class="assemble">
<view style="height: 30rpx;"></view>
<view class="option" @click="update_pass()">修改密码</view>
<view class="option" @click="privacy_agreement(1)">用户协议</view>
<view class="option" @click="privacy_agreement(2)">隐私策略</view>
<view class="option">清空缓存</view>
<view style="width:90%;margin: 60rpx auto;">
<fui-button background="#29d3b4">退出账号</fui-button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
privacy_agreement(type){
uni.navigateTo({
url: '/pages/common/privacy_agreement?type='+type
})
},
update_pass(){
uni.navigateTo({
url: '/pages/coach/my/update_pass'
})
}
}
}
</script>
<style lang="less" scoped>
.assemble{
width: 100%;
height: 100vh;
background: #333333;
}
.option{
margin-bottom: 20rpx;
background: #404045;
width: 100%;
font-size: 28rpx;
color: #fff;
line-height: 56rpx;
padding: 20rpx 0 20rpx 100rpx;
}
</style>

107
pages/market/my/update_pass.vue

@ -0,0 +1,107 @@
<!--修改密码-->
<template>
<view>
<view class="title">
<view :class="{'green-text': tset_style === 1}">1.验证手机号码</view>
<view :class="{'green-text': tset_style === 2}">2.设置新密码</view>
</view>
<view :style="{'background-color':'#fff','width':'100%','height':'100vh' }">
<view style="width: 95%;height: 30rpx;"></view>
<view v-if="tset_style == 1">
<view class="describe">
为保障您的账号安全修改密码前请填写原密码
</view>
<view style="width: 95%;margin:30rpx auto;">
<fui-input borderTop placeholder="请输入原登录密码" v-model="user" @input="input"
backgroundColor="#f2f2f2"></fui-input>
</view>
</view>
<view v-if="tset_style == 2">
<view style="width: 95%;margin:30rpx auto;">
<fui-input borderTop placeholder="请设置6-20位新的登录密码" v-model="user" @input="input"
backgroundColor="#f2f2f2"></fui-input>
</view>
<view style="width: 95%;margin: auto;">
<fui-input borderTop :padding="['20rpx','32rpx']" v-model="code" placeholder="请再次输入新的登录密码" @input="input"
backgroundColor="#f2f2f2">
</fui-input>
</view>
</view>
<view style="width: 95%;margin:60rpx auto;">
<fui-button background="#00be8c" radius="5rpx" @click="nextStep" v-if="tset_style == 1">下一步</fui-button>
<fui-button background="#00be8c" radius="5rpx" @click="submit" v-if="tset_style == 2">提交</fui-button>
<view style="width: 95%;margin:60rpx auto;">
<fui-button background="#fff" radius="5rpx" @click="forgot" color="#999999" v-if="tset_style == 1">忘记原密码</fui-button>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
code: '',
user: '',
tset_style: 1,
}
},
onLoad() {
},
methods: {
sendCode() {
//
setTimeout(() => {
//
//...
//success
this.$refs.fui_cdv && this.$refs.fui_cdv.success()
}, 800)
},
nextStep(){
this.tset_style = 2
},
forgot() {
uni.navigateTo({
url: '/pages/student/login/forgot'
})
},
}
}
</script>
<style lang="less" scoped>
page {
font-weight: normal;
}
.fui-section__title {
margin-left: 32rpx;
}
.fui-left__icon {
padding-right: 24rpx;
}
.title {
display: flex;
justify-content: space-around;
align-items: center;
height: 100rpx;
width: 100%;
background-color: #fff;
font-size: 26rpx;
border: 4rpx #f5f5f5 solid;
}
.green-text{
color: #36d6b9;
}
.describe{
color: #999999;
padding-left: 30rpx;
}
</style>
Loading…
Cancel
Save