|
|
|
|
@ -1,18 +1,24 @@
|
|
|
|
|
<template>
|
|
|
|
|
<view class="container">
|
|
|
|
|
<image class="cbg" :src="base.imgHost('common_bg.png')"></image>
|
|
|
|
|
<view class="search">
|
|
|
|
|
<!-- <view class="select"> -->
|
|
|
|
|
<w-select width="250rpx" :showClose="false" style="margin-left: 20rpx;" v-model="chooseValue" :list="selectList" valueName="name"
|
|
|
|
|
keyName="id" @change="changeMonth">
|
|
|
|
|
<view class="search-wrap" v-if="selectList.length>0">
|
|
|
|
|
<view class="search">
|
|
|
|
|
<!-- <view class="select"> -->
|
|
|
|
|
<w-select width="250rpx" :showClose="false" style="margin-left: 20rpx;" v-model="chooseValue"
|
|
|
|
|
:list="selectList" valueName="name" keyName="id" @change="changeMonth">
|
|
|
|
|
</w-select>
|
|
|
|
|
<!-- </view> -->
|
|
|
|
|
<view class="all" @click="changeAll">全部课表</view>
|
|
|
|
|
<!-- </view> -->
|
|
|
|
|
<view class="all" @click="changeAll">全部课表</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="search-tab" v-if="selectDayList.length>0">
|
|
|
|
|
<u-tabs :bg-color="'#f0f7fc'" active-color="#b89155" :list="selectDayList" name="value" :is-scroll="true"
|
|
|
|
|
:current="current" @change="changeSearchDay"></u-tabs>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="wrap">
|
|
|
|
|
<view v-if="monthList.length>0">
|
|
|
|
|
<view class="item" v-for="item in monthList">
|
|
|
|
|
<view class="item-date">{{item.monthday}}</view>
|
|
|
|
|
<view class="wrap" :style="isAll?'padding-top:100rpx':'padding-top:30rpx'">
|
|
|
|
|
<view v-if="dayDataList.length>0">
|
|
|
|
|
<view class="item" v-for="item in dayDataList">
|
|
|
|
|
<view v-if="isAll" class="item-date">{{item.monthday}}</view>
|
|
|
|
|
<view class="item-period">{{item.period}}</view>
|
|
|
|
|
<view class="item-img">
|
|
|
|
|
<image :src="base.imgHost('mycourse-c1.png')" style="width:22rpx;height:22rpx"></image>
|
|
|
|
|
@ -44,9 +50,12 @@
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
list: [],
|
|
|
|
|
monthList: [],
|
|
|
|
|
dayDataList: [],
|
|
|
|
|
chooseValue: '',
|
|
|
|
|
selectList: ''
|
|
|
|
|
selectList: '',
|
|
|
|
|
selectDayList: [],
|
|
|
|
|
current: 0,
|
|
|
|
|
isAll:false
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onLoad(options) {
|
|
|
|
|
@ -56,37 +65,58 @@
|
|
|
|
|
async getMyCourseContents(id) {
|
|
|
|
|
const res = await this.$u.api.courseContent({
|
|
|
|
|
course_id: id,
|
|
|
|
|
})
|
|
|
|
|
this.list = res.list
|
|
|
|
|
if(res.list.length>0){
|
|
|
|
|
// this.monthList = res.list
|
|
|
|
|
let obj = this.groupByMonthAndSort(res.list)
|
|
|
|
|
})
|
|
|
|
|
this.list = res.list
|
|
|
|
|
if (res.list.length > 0) {
|
|
|
|
|
// this.dayDataList = res.list
|
|
|
|
|
let obj = this.groupByMonthAndSort(res.list)
|
|
|
|
|
const currentMonth = this.$moment().format('YYYY年MM月')
|
|
|
|
|
|
|
|
|
|
if(this.selectList.length>0){
|
|
|
|
|
this.selectList.map((item,index)=>{
|
|
|
|
|
if(item.name===currentMonth){
|
|
|
|
|
this.monthList = item.item
|
|
|
|
|
const currentDay = this.$moment().format('MM月DD日')
|
|
|
|
|
if (this.selectList.length > 0) {
|
|
|
|
|
this.selectList.map((item, index) => {
|
|
|
|
|
if (item.name === currentMonth) {
|
|
|
|
|
this.chooseValue = item.name
|
|
|
|
|
this.selectDayList = item.item
|
|
|
|
|
this.dayDataList = item.item[0]['arr']
|
|
|
|
|
item.item.map((cur,index1)=>{
|
|
|
|
|
if(cur.value===currentDay){
|
|
|
|
|
this.dayDataList = cur['arr']
|
|
|
|
|
this.current = index1
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
this.selectDayList = this.selectList[this.selectList.length - 1]['item']
|
|
|
|
|
this.chooseValue = item.name
|
|
|
|
|
}else{
|
|
|
|
|
this.monthList = this.selectList[this.selectList.length-1]['item']
|
|
|
|
|
this.chooseValue = item.name
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.dayDataList = this.selectList[this.selectList.length - 1]['item'][0]['arr']
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
changeMonth(e) {
|
|
|
|
|
console.log("e",e,this.chooseValue)
|
|
|
|
|
this.monthList = e.item
|
|
|
|
|
},
|
|
|
|
|
changeAll(){
|
|
|
|
|
this.chooseValue = ''
|
|
|
|
|
this.monthList = this.list
|
|
|
|
|
console.log("e", e, this.chooseValue)
|
|
|
|
|
this.selectDayList = e.item
|
|
|
|
|
this.dayDataList = e.item[0]['arr']
|
|
|
|
|
this.current = 0
|
|
|
|
|
this.isAll = false
|
|
|
|
|
},
|
|
|
|
|
changeAll() {
|
|
|
|
|
this.current = 0
|
|
|
|
|
this.selectDayList = []
|
|
|
|
|
this.dayDataList = this.list
|
|
|
|
|
this.isAll = true
|
|
|
|
|
// this.$set(this,'chooseValue','请选择')
|
|
|
|
|
},
|
|
|
|
|
// 切换日期
|
|
|
|
|
changeSearchDay(e) {
|
|
|
|
|
console.log("e1", e)
|
|
|
|
|
this.current = e
|
|
|
|
|
this.dayDataList = this.selectDayList[e]['arr']
|
|
|
|
|
},
|
|
|
|
|
// 将日期换成 年月合并
|
|
|
|
|
groupByMonthAndSort(a) {
|
|
|
|
|
// 创建一个空对象来存储按月份分组的数据
|
|
|
|
|
const groupedData = {};
|
|
|
|
|
@ -103,20 +133,45 @@
|
|
|
|
|
}
|
|
|
|
|
// 将当前对象添加到对应的月份数组中
|
|
|
|
|
groupedData[monthKey].push(item);
|
|
|
|
|
});
|
|
|
|
|
let _arr = []
|
|
|
|
|
|
|
|
|
|
for(var k in groupedData){
|
|
|
|
|
_arr.push({
|
|
|
|
|
name:k,
|
|
|
|
|
item:groupedData[k],
|
|
|
|
|
id:k
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
this.selectList = _arr
|
|
|
|
|
});
|
|
|
|
|
let _arr = []
|
|
|
|
|
for (var k in groupedData) {
|
|
|
|
|
_arr.push({
|
|
|
|
|
name: k,
|
|
|
|
|
item: groupedData[k],
|
|
|
|
|
id: k
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
this.selectList = this.transformItemsToObject(_arr)
|
|
|
|
|
// 返回重组后的数据
|
|
|
|
|
return groupedData;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 将 想同日期的合并
|
|
|
|
|
transformItemsToObject(arr) {
|
|
|
|
|
return arr.map(month => {
|
|
|
|
|
const transformedItems = month.item.reduce((acc, curr) => {
|
|
|
|
|
const key = curr.monthday;
|
|
|
|
|
const existingItem = acc.find(item => item.value === key);
|
|
|
|
|
|
|
|
|
|
if (existingItem) {
|
|
|
|
|
existingItem.arr.push(curr);
|
|
|
|
|
} else {
|
|
|
|
|
acc.push({
|
|
|
|
|
value: key,
|
|
|
|
|
arr: [curr]
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return acc;
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
...month,
|
|
|
|
|
item: transformedItems
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -137,28 +192,41 @@
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search {
|
|
|
|
|
width:100%;
|
|
|
|
|
padding: 30rpx;
|
|
|
|
|
position: fixed;
|
|
|
|
|
top:0;
|
|
|
|
|
left:0;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
box-shadow: 1rpx -4rpx 15rpx 0 #333;
|
|
|
|
|
z-index:9;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
height:100rpx;
|
|
|
|
|
.all {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color:#b89155;
|
|
|
|
|
|
|
|
|
|
.search {
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding: 30rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
box-shadow: 1rpx -4rpx 15rpx 0 #333;
|
|
|
|
|
z-index: 9;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
height: 100rpx;
|
|
|
|
|
|
|
|
|
|
.all {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #b89155;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.search-tab {
|
|
|
|
|
// position: fixed;
|
|
|
|
|
// top: 100rpx;
|
|
|
|
|
// left: 0;
|
|
|
|
|
// width: 100%;
|
|
|
|
|
margin-top: 100rpx;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.wrap {
|
|
|
|
|
position: relative;
|
|
|
|
|
padding-top:100rpx;
|
|
|
|
|
// padding-top: 20rpx;
|
|
|
|
|
|
|
|
|
|
.item {
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
padding: 30rpx;
|
|
|
|
|
|