123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- import {
- getDataSet,
- getEventParam,
- toast
- } from "../../../../utils/utils";
- import Route from "../../../../model/route";
- import {
- courseTypes,
- liveStatus,
- logicStatus,
- courseStatus
- } from "../../../../model/enum";
- import Api from '../../../../model/api';
- const SEARCH_TAB_MAP = {
- ALL: 'all',
- FINISHED: 'finished',
- NOT_FINISH: 'notfinish'
- };
- Component({
- properties: {
- isPre: {
- type: Number,
- },
- courseList: {
- type: Array
- },
- obj: {
- type: Object,
- },
- },
- data: {
- liveStatusEnum: liveStatus,
- courseTypesEnum: courseTypes,
- courseStatusEnum: courseStatus,
- filterCourseDate: '',
- searchCourseList: [],
- searchName: '', //搜索的课程名称
- // searchTabMap: SEARCH_TAB_MAP,
- activeSearchTab: SEARCH_TAB_MAP.ALL,
- searchTabs: [{
- name: SEARCH_TAB_MAP.ALL,
- label: '全部课程',
- info: 0
- },
- {
- name: SEARCH_TAB_MAP.FINISHED,
- label: '已完成',
- info: 0
- },
- {
- name: SEARCH_TAB_MAP.NOT_FINISH,
- label: '未完成',
- info: 0
- },
- ],
- showCollapseButton: false,
- showMaxNum: 20,
- expandAll: {
- [SEARCH_TAB_MAP.ALL]: false,
- [SEARCH_TAB_MAP.FINISHED]: false,
- [SEARCH_TAB_MAP.NOT_FINISH]: false,
- },
- defaultPicture: 'https://college-file-1254259530.cos.ap-beijing.myqcloud.com/resource/course/kc.jpg'
- // expandAll: false
- },
- observers: {
- courseList() {
- this.queryCourse();
- }
- },
- attached: function () {
- this.queryCourse();
- },
- ready() {
- this.selectComponent('#searchTabs').resize();
- },
- methods: {
- setCourseTabInfo(courseList) {
- // let searchName = this.data.searchName.trim();
- // let courseList = list.filter(item => {
- // let flag = true;
- // if (item.ceremonyCategory) {
- // //活动仪式
- // flag = searchName ? item.ceremonyName.indexOf(searchName) !== -1 : true;
- // } else {
- // //课程
- // flag = searchName ? item.courseName.indexOf(searchName) !== -1 : true;
- // }
- // return flag;
- // });
- // console.log('courseList', courseList);
- let total = courseList.length;
- let finishList = courseList.filter(item => item.courseProcess == courseStatus.COMPLETE);
- let finishLen = finishList.length;
- let tabs = this.data.searchTabs;
- tabs.forEach((item, index) => {
- switch (item.name) {
- case SEARCH_TAB_MAP.ALL:
- item.info = total;
- break;
- case SEARCH_TAB_MAP.FINISHED:
- item.info = finishLen;
- break;
- case SEARCH_TAB_MAP.NOT_FINISH:
- item.info = total - finishLen;
- break;
- }
- });
- // console.log('tabs -> ', tabs);
- this.setData({
- searchTabs: tabs
- });
- },
- onSearchChange(e) {
- // console.log('onSearchChange', e.detail);
- this.setData({
- searchName: e.detail
- });
- },
- // handleClearSearch() {
- // console.log('clear!!!!!!');
- // this.data.searchName = '';
- // this.setData({
- // searchName: ''
- // });
- // },
- onSearchTabChange(e) {
- // console.log(e);
- let name = e.detail.name;
- // this.activeSearchTab = name;
- this.setData({
- activeSearchTab: name
- });
- this.queryCourse(false);
- },
- queryCourse(updateTabInfo = true) {
- if (this.data.expandAll[this.data.activeSearchTab]) {
- wx.showLoading({
- title: '加载中',
- });
- }
- wx.nextTick(() => {
- // console.log('this.data.searchName', this.data.searchName);
- let searchName = this.data.searchName.trim();
- let courseFilterTab = this.data.activeSearchTab;
- let courseDate = this.data.filterCourseDate;
- let startTime, endTime;
- if (courseDate) {
- courseDate = this.data.filterCourseDate.replaceAll('-', '/');
- startTime = new Date(`${courseDate} 00:00:00`).getTime();
- endTime = new Date(`${courseDate} 23:59:59`).getTime();
- }
- //按照搜索的课程名称、课程日期筛选
- let courseList = this.data.courseList.filter(item => {
- let flag = true;
- if (item.ceremonyCategory) {
- //活动仪式
- flag = searchName ? item.ceremonyName.indexOf(searchName) !== -1 : true;
- } else {
- //课程
- flag = searchName ? item.courseName.indexOf(searchName) !== -1 : true;
- }
- if (courseDate && flag) {
- //按日期筛选
- // courseDate = this.data.filterCourseDate.replaceAll('-', '/');
- // let startTime = new Date(`${courseDate} 00:00:00`).getTime();
- // let endTime = new Date(`${courseDate} 23:59:59`).getTime();
- let courseStartTime = new Date(`${item.courseStart.replaceAll('-', '/')}`).getTime();
- let courseEndTime = new Date(`${item.courseEnd.replaceAll('-', '/')}`).getTime();
- // //开始时间 和 结束时间 都在当日
- // let flag1 = courseStartTime >= startTime && courseEndTime <= endTime;
- //1. 开始时间和结束时间包含当日
- let flag1 = courseStartTime <= startTime && courseEndTime >= endTime;
- //2. 开始时间在当日
- let flag2 = courseStartTime >= startTime && courseStartTime <= endTime;
- //3. 结束时间在当日
- let flag3 = courseEndTime >= startTime && courseEndTime <= endTime;
- //三种情况满足任意一种就可以
- return flag1 || flag2 || flag3;
- }
- return flag;
- });
- // console.log(courseList.length);
- //按照课程状态(全部、已学、未学)tab筛选
- let list = courseList.filter(item => {
- let flag = true;
- if (courseFilterTab == SEARCH_TAB_MAP.FINISHED) {
- flag = item.courseProcess == courseStatus.COMPLETE;
- } else if (courseFilterTab == SEARCH_TAB_MAP.NOT_FINISH) {
- flag = item.courseProcess != courseStatus.COMPLETE;
- }
- return flag;
- });
- // console.log('list -> ', list.length);
- // console.log('list -> ', list);
- this.setData({
- searchCourseList: this.data.expandAll[this.data.activeSearchTab] ? list : list.slice(0, this.data.showMaxNum),
- showCollapseButton: list.length > this.data.showMaxNum
- });
- if (updateTabInfo) {
- this.setCourseTabInfo(courseList);
- }
- wx.nextTick(() => {
- setTimeout(() => {
- wx.hideLoading({
- success: (res) => {},
- });
- }, 1500);
- });
- });
- },
- handleExpandChange() {
- let key = this.data.activeSearchTab;
- let prop = `expandAll.${key}`
- let value = !this.data.expandAll[key];
- this.setData({
- [prop]: value
- });
- // if (value) {
- // wx.showLoading({
- // title: '加载中',
- // });
- // }
- this.queryCourse(false);
- },
- scrollToSchedule(info) {
- const query = this.createSelectorQuery();
- query.select(`#course-${info.id}`).boundingClientRect();
- query.exec(function (res) {
- console.log('query-res', res);
- wx.pageScrollTo({
- duration: 0,
- scrollTop: res[0].top - 80
- });
- });
- },
- async toLive(e) {
- // console.log('e --> ', e);
- // let item = getDataSet(e, "item");
- let item = e.type ? getDataSet(e, "item") : e;
- let plan = JSON.stringify(item);
- let isPre = this.data.isPre;
- if (isPre) {
- if (item.isReplay == logicStatus.NO) {
- if (item.courseType == courseTypes.RECORD) {
- toast('课程不允许回放!');
- }
- if (item.isLive && item.liveStatus == liveStatus.LIVEEND) {
- toast('课程不允许回放!');
- }
- return;
- } else if (item.isReplay == logicStatus.YES) {
- if (item.isLive && item.liveStatus != liveStatus.LIVEEND) {
- return;
- }
- }
- }
- let type = "";
- if (item.courseType == courseTypes.RECORD) {
- type = courseTypes.RECORD;
- let res = await Api.getCourseOpenStatus(item.id, (code, msg) => {
- wx.hideToast();
- wx.showModal({
- title: msg || '课程还未开始~',
- content: `${item.courseStart} 开始上课`,
- showCancel: false
- });
- return false;
- });
- if (!res) {
- return;
- }
- }
- if (item.isReplay && item.isLive && item.liveStatus == liveStatus.LIVEEND && type == "") {
- type = courseTypes.PLAYBACK;
- }
- if (item.isLive && type == "") {
- type = courseTypes.LIVE;
- }
- if (type == "") {
- type = courseTypes.OFFLINE;
- }
- // let detail = JSON.stringify(this.data.obj);
- //暂时解决解析json报错问题 start
- let detail = this.data.obj;
- let paramsDetail = JSON.stringify({
- ...detail,
- picUrl: '',
- teamName: '',
- itemName: ''
- });
- //暂时解决解析json报错问题 end
- Route.toCourseDetail(type, item.id, paramsDetail, plan, isPre, {
- refresh: () => {
- this.triggerEvent("refresh")
- }
- });
- },
- selectDate(e) {
- // this.triggerEvent("select", getEventParam(e))
- let courseDate = getEventParam(e, "date");
- // console.log('courseStart -> ', courseDate);
- this.setData({
- filterCourseDate: courseDate
- });
- this.queryCourse();
- // let courseList = [];
- // if (!courseDate) {
- // //全部
- // courseList = this.data.courseList;
- // } else {
- // //按日期筛选
- // courseDate = courseDate.replaceAll('-', '/');
- // let startTime = new Date(`${courseDate} 00:00:00`).getTime();
- // let endTime = new Date(`${courseDate} 23:59:59`).getTime();
- // // if (startTime)
- // courseList = this.data.courseList.filter(course => {
- // let courseStartTime = new Date(`${course.courseStart.replaceAll('-', '/')}`).getTime();
- // let courseEndTime = new Date(`${course.courseEnd.replaceAll('-', '/')}`).getTime();
- // // //开始时间 和 结束时间 都在当日
- // // let flag1 = courseStartTime >= startTime && courseEndTime <= endTime;
- // //开始时间和结束时间包含当日
- // let flag1 = courseStartTime <= startTime && courseEndTime >= endTime;
- // //开始时间在当日
- // let flag2 = courseStartTime >= startTime && courseStartTime <= endTime;
- // //结束时间在当日
- // let flag3 = courseEndTime >= startTime && courseEndTime <= endTime;
- // return flag1 || flag2 || flag3;
- // });
- // }
- },
- refresh(e) {
- this.triggerEvent("refresh")
- }
- }
- });
|