From fa93e847216dfe1da8920aecfa37c37b887c0f29 Mon Sep 17 00:00:00 2001 From: litian <C21AF165> Date: 星期一, 23 九月 2024 17:52:12 +0800 Subject: [PATCH] rwd --- packageBookService/pages/bookServices/detail/components/learnTask/index.js | 170 +++++++++++++++++++++------ packageBookService/pages/bookServices/detail/components/learnTask/index.wxss | 21 +++ packageBookService/pages/bookServices/detail/components/learnTask/index.wxml | 22 ++- packageDomain/pages/resourceDetails/myVideo/index.js | 62 +++++++++ packageDomain/pages/resourceDetails/myAudio/index.js | 59 +++++++++ 5 files changed, 278 insertions(+), 56 deletions(-) diff --git a/packageBookService/pages/bookServices/detail/components/learnTask/index.js b/packageBookService/pages/bookServices/detail/components/learnTask/index.js index 71b76f3..0607788 100644 --- a/packageBookService/pages/bookServices/detail/components/learnTask/index.js +++ b/packageBookService/pages/bookServices/detail/components/learnTask/index.js @@ -15,7 +15,7 @@ name: '', school: '', class: '', - learnTime: '2', + learnTime: '0灏忔椂', taskShow: false, dataList: [], //浠诲姟鍗� tasksListData: [], //宸插~鍐欎换鍔″崟messsge @@ -24,7 +24,7 @@ userId: 0, userName: '', isUpdate: false, - taskId: 0, //榛樿閫変腑鐩綍id + taskId: '', //榛樿閫変腑鐩綍id autosize: { maxHeight: 120, minHeight: 80, @@ -32,6 +32,8 @@ disabled: false, dialogVisible: false, invitee: "", + teacherEvaluated: false, + evaluated: false }, onShow() { var that = this; @@ -55,7 +57,7 @@ taskId: options.bookId, consumer: options.consumer, userId: options.userId, - userName: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).name + userName: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).nickName }); if (options.consumer) { this.setData({ @@ -72,13 +74,44 @@ disabled: false }); } + console.log(options.consumer, 77) this.getResourceData() + this.getLearnTime() } }, + getLearnTime() { + app.MG.identity + .getUserKey({ + domain: 'cloudLearningTime', + keys: [this.data.bookId + ''] + }) + .then((res) => { + if (res.length > 0 && JSON.parse(res[0].value) && JSON.parse(res[0].value).length > 0) { + let time = JSON.parse(res[0].value)[0].learnTime + let minutes = Number(time) / (1000 * 60) + let hours = Number(time) / (1000 * 60 * 60) + if (minutes > 0 && minutes < 60) { + this.setData({ + learnTime: Math.round(minutes) + '鍒嗛挓', + }); + } else if (minutes > 60) { + this.setData({ + learnTime: Math.round(hours) + '灏忔椂', + }); + } else { + this.setData({ + learnTime: '0灏忔椂', + }); + } + } + }) + }, + getResourceData() { this.setData({ + menuList: [], loading: true, }); let query = { @@ -124,10 +157,12 @@ } dataList.push(item) }) - this.setData({ - menuList: dataList, - loading: false, - }); + setTimeout(() => { + this.setData({ + menuList: dataList, + loading: false, + }); + }, 500) if (this.data.taskId) { setTimeout(() => { this.data.menuList.forEach((item) => { @@ -163,6 +198,11 @@ this.getTasksList() }) }, + getTask(e) { + console.log(e) + let item = e.currentTarget.dataset.item + this.taskSelect(item) + }, onVisibleChange(e) { this.setData({ @@ -191,7 +231,7 @@ this.setData({ tasksListData: res.datas, }); - if (this.data.taskInfo) { + if (this.data.taskInfo.name) { this.taskSelect(this.data.taskInfo) } }) @@ -218,28 +258,27 @@ }); this.getChildTasksList() if (content.evaluate.length > 0) { - content.evaluate.forEach((element) => { - if (this.data.consumer == 'classmate') { - element.mateEvaluation = '' - } - if (this.data.consumer == 'teacher') { - element.teacherEvaluation = '' - } - }) + // content.evaluate.forEach((element) => { + // if (this.data.consumer == 'classmate') { + // element.mateEvaluation = '' + // } + // if (this.data.consumer == 'teacher') { + // element.teacherEvaluation = '' + // } + // }) this.setData({ dataList: content.evaluate, }); - } } } else { - this.goDetail(item) + return false } }) - - } else { - this.goDetail(item) } + } + if (this.data.dataList.length == 0) { + this.goDetail(item) } }, goDetail(item) { @@ -274,6 +313,7 @@ } this.setData({ dataList: res.datas.cmsDatas[0].datas, + taskShow: true, }); }) }, @@ -293,19 +333,50 @@ if (res.datas.length > 0) { let list = [] this.data.dataList.forEach((item) => { + item.teacherEvaluation = [] + item.mateEvaluation = [] res.datas.forEach((item1) => { let content = JSON.parse(item1.content) - if (content.teacherComment) { + if (content.teacherComment.length > 0) { content.teacherComment.forEach((item2) => { if (item.id == item2.childTaskId) { - item.teacherEvaluation.push(item2) + item.mateEvaluation = [item2] + if (this.data.consumer == 'teacher') { + this.setData({ + evaluated: true + }); + } } }) } - if (content.mateComment) { + if (item.teacherEvaluation && item.teacherEvaluation.length > 0) { + this.setData({ + teacherEvaluated: true + }); + } + if (content.mateComment.length > 0) { content.mateComment.forEach((item3) => { if (item.id == item3.childTaskId) { - item.mateEvaluation.push(item3) + item.mateEvaluation = [...item.mateEvaluation, item3] + console.log(item.mateEvaluation, 123) + if (this.data.consumer == 'classmate') { + if (item.mateEvaluation && item.mateEvaluation.length > 0) { + let data = item.mateEvaluation.find( + (item) => item.userId == this.data.userId + ) + if (data) { + this.setData({ + evaluated: true + }); + item.mateEvaluation = [data] + } else { + this.setData({ + evaluated: false + }); + item.mateEvaluation = '' + } + } + } } }) } @@ -363,6 +434,7 @@ //鎻愪氦鑷繁濉啓 inviteBtn() { let empty = false + console.log(this.data.dataList, 123) this.data.dataList.forEach((item) => { if (item.introspection == '' || item.completion == '' || item.selfEvaluation == '') { empty = true @@ -422,6 +494,7 @@ }, updateSubmit() { let evaluate = [] + console.log(this.data.dataList, 211) this.data.dataList.forEach((item) => { evaluate.push({ id: item.id, @@ -478,6 +551,14 @@ }, confirmBtn() { + if (this.data.invitee == 'teacher' && this.data.teacherEvaluated) { + wx.showToast({ + title: "鏁欏笀宸茬粡璇勪环锛屼笉鑳藉啀閭�璇锋暀甯堣瘎浠凤紒", + icon: 'none', + duration: 1000 + }) + return false + } wx.showShareMenu({ withShareTicket: true }); @@ -487,37 +568,44 @@ let teacherEvaluationList = [] this.data.dataList.forEach((item) => { if (this.data.consumer == 'classmate') { - if (item.mateEvaluation == '') { - wx.showToast({ - title: "璇峰厛濉瘎浠�", - icon: 'none', - duration: 1000 - }) - } else { + if (item.mateEvaluation && item.mateEvaluation != '') { mateEvaluationList.push({ childTaskId: item.id, + userId: this.data.userId, userName: this.data.userName, evaluation: item.mateEvaluation }) } } - if (this.data.consumer == 'teacher') { - if (item.teacherEvaluation == '') { - wx.showToast({ - title: "璇峰厛濉瘎浠�", - icon: 'none', - duration: 1000 - }) - } else { + if (item.teacherEvaluation && item.teacherEvaluation != '') { teacherEvaluationList.push({ childTaskId: item.id, + userId: this.data.userId, userName: this.data.userName, evaluation: item.teacherEvaluation }) } } }) + if (this.data.consumer == 'classmate') { + if (mateEvaluationList.length < this.data.dataList.length) { + wx.showToast({ + title: "璇峰厛濉啓璇勪环", + icon: 'none', + duration: 1000 + }) + } + } + if (this.data.consumer == 'teacher') { + if (teacherEvaluationList.length < this.data.dataList.length) { + wx.showToast({ + title: "璇峰厛濉啓璇勪环", + icon: 'none', + duration: 1000 + }) + } + } let content = { id: this.data.taskInfo.id, taskName: this.data.taskInfo.name, @@ -565,7 +653,7 @@ onShareAppMessage() { return { title: '璇勪环瀛︿範浠诲姟鍗�', - path: `packageBookService/pages/bookServices/detail/components/learnTask/index?bookId=${this.data.bookId}&consumer=${this.data.invitee}&taskId=${this.data.taskInfo.id}&userId=${this.data.userId}`, + path: `packageBookService/pages/bookServices/detail/components/learnTask/index?bookId=${this.data.bookId}&consumer=${this.data.invitee}&taskId=${this.data.taskInfo.id}&userId=${this.data.userId}&cmsPath=${this.data.cmsPath}`, imgUrl: 'https://jsek.bnuic.com/home/image/click-icon.png', } } diff --git a/packageBookService/pages/bookServices/detail/components/learnTask/index.wxml b/packageBookService/pages/bookServices/detail/components/learnTask/index.wxml index 86e10c6..6524d53 100644 --- a/packageBookService/pages/bookServices/detail/components/learnTask/index.wxml +++ b/packageBookService/pages/bookServices/detail/components/learnTask/index.wxml @@ -46,13 +46,15 @@ <view class="item-box" wx:if="{{menuList.length > 0 && !loading}}"> <view wx:for="{{menuList}}" wx:for-item="item" wx:for-index="index" wx:key="id" class="item"> <view class="itemCon"> - <view> + <div wx:if="{{!item.children}}" class="noChild"></div> + <view wx:if="{{item.children}}"> + <t-icon name="chevron-down" size="48rpx" data-name="chevron-down" /> </view> - <view bind:tap="getTask" data-item="{{item}}">{{ item.name }}</view> + <view bind:tap="getTask" data-item="{{item}}" class="itemName">{{ item.name }}</view> </view> <view class="childBox" wx:if="{{item.children}}"> <view wx:for="{{item.children}}" wx:for-item="item1" wx:for-index="index" wx:key="id" class="item"> - <view bind:tap="getTask" data-item="{{item}}">{{ item1.name }}</view> + <view bind:tap="getTask" data-item="{{item1}}" class="itemName">{{ item1.name }}</view> </view> </view> </view> @@ -98,7 +100,7 @@ <view class="box-list" wx:if="{{consumer == 'classmate' || !consumer}}"> <view class="lable">鍚屼即璇�:</view> <view class="inputBox"> - <t-textarea placeholder="璇疯緭鍏ヨ瘎浠�" value="{{item.mateEvaluation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMateInput" data-index="{{index}}" wx:if="{{consumer == 'classmate'}}" /> + <t-textarea placeholder="璇疯緭鍏ヨ瘎浠�" value="{{item.mateEvaluation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMateInput" data-index="{{index}}" wx:if="{{consumer == 'classmate' && !evaluated}}" /> <view wx:if="{{isUpdate && item.mateEvaluation.length > 0}}" class="rateList"> <view wx:for="{{item.mateEvaluation}}" wx:for-item="mateItem" wx:key="index" class="li"> <view class="userName">{{ mateItem.userName }}</view> @@ -111,7 +113,7 @@ <view class="box-list" wx:if="{{consumer == 'teacher' || !consumer}}"> <view class="lable">鑰佸笀璇�:</view> <view class="inputBox"> - <t-textarea placeholder="璇疯緭鍏ヨ瘎浠�" value="{{item.teacherEvaluation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTeacherInput" data-index="{{index}}" wx:if="{{consumer == 'teacher'}}" /> + <t-textarea placeholder="璇疯緭鍏ヨ瘎浠�" value="{{item.teacherEvaluation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTeacherInput" data-index="{{index}}" wx:if="{{consumer == 'teacher' && !evaluated}}" /> <view wx:if="{{isUpdate && item.teacherEvaluation.length > 0}}" class="rateList"> <view wx:for="{{item.teacherEvaluation}}" wx:for-item="mateItem" wx:key="index" class="li"> <view class="userName"><text></text>{{ mateItem.userName }}</view> @@ -127,14 +129,14 @@ <view wx:if="{{dataList.length == 0}}" class="empyt"> <empty /> </view> - <view class="buttonBox"> - <t-button class="btn" theme="primary" bind:tap="submitComment" wx:if="{{consumer}}"> + <view class="buttonBox" wx:if="{{dataList.length > 0}}"> + <t-button class="btn" theme="primary" bind:tap="submitComment" wx:if="{{consumer && !evaluated}}"> <view slot="content" class="btn-content">鎻愪氦</view> </t-button> - <t-button class="btn" theme="primary" bind:tap="updateSubmit" wx:if="{{isUpdate && !consumer}}"> + <t-button class="btn" theme="primary" bind:tap="updateSubmit" wx:if="{{isUpdate && !consumer && dataList.length > 0}}"> <view slot="content" class="btn-content">閭�璇疯瘎浠�</view> </t-button> - <t-button class="btn" theme="primary" bind:tap="inviteBtn" wx:if="{{!isUpdate && !consumer}}"> + <t-button class="btn" theme="primary" bind:tap="inviteBtn" wx:if="{{!isUpdate && !consumer && dataList.length > 0}}"> <view slot="content" class="btn-content">閭�璇疯瘎浠�</view> </t-button> </view> @@ -148,7 +150,7 @@ <view class="info-center" style="top:{{height*0.3}}px;" wx:if="{{dialogVisible}}"> <view class="block1"> <t-radio-group value="{{invitee}}" borderless t-class="box" class="radioBox" bind:change="onInviteeChange"> - <t-radio block="{{false}}" label="鍚屼即" value="mate" class="radio" /> + <t-radio block="{{false}}" label="鍚屼即" value="classmate" class="radio" /> <t-radio block="{{false}}" label="鑰佸笀" value="teacher" class="radio" /> </t-radio-group> </view> diff --git a/packageBookService/pages/bookServices/detail/components/learnTask/index.wxss b/packageBookService/pages/bookServices/detail/components/learnTask/index.wxss index 42ffa45..ed792ca 100644 --- a/packageBookService/pages/bookServices/detail/components/learnTask/index.wxss +++ b/packageBookService/pages/bookServices/detail/components/learnTask/index.wxss @@ -72,6 +72,27 @@ padding: 10rpx 0; } +.itemCon { + display: flex; +} + +.noChild { + width: 50rpx; + height: 40rpx; +} + +.itemName { + width: 100%; + background: #f1f1f1; + padding: 10rpx; +} + +.childBox { + margin-left: 80rpx; + margin-top: 10rpx; + overflow: hidden; +} + .block { position: relative; width: 90vw; diff --git a/packageDomain/pages/resourceDetails/myAudio/index.js b/packageDomain/pages/resourceDetails/myAudio/index.js index 624b1dc..24b9ccb 100644 --- a/packageDomain/pages/resourceDetails/myAudio/index.js +++ b/packageDomain/pages/resourceDetails/myAudio/index.js @@ -57,7 +57,10 @@ buyIdList: [], buyList: [], learnClassData: null, - bookDetail: null + bookDetail: null, + learnStartTime: 0, + learnTimeList: [], + learnTimeData: 0 }, format(time) { @@ -126,7 +129,13 @@ this.resourceDetailsData() this.getNoteList() } - if (options.formPath == 'jsek_cloudLearning') this.getBookInfo(options.bookId) + if (options.formPath == 'jsek_cloudLearning') { + this.setData({ + learnStartTime: Date.now(), + }) + this.getLearnTime() + } + this.getBookInfo(options.bookId) }, /** @@ -187,6 +196,10 @@ this.count(duration) } this.setPlayerList() + if (this.data.fromPath == 'jsek_cloudLearning') { + let cloudDuration = this.data.pauseTime - this.data.learnStartTime + this.cloudCount(cloudDuration) + } }, count(timeStr) { const data = { @@ -207,6 +220,48 @@ console.log('缁熻', data) app.MG.job.newJobWithApiNewEvent(data).then((res) => {}) }, + + getLearnTime() { + app.MG.identity + .getUserKey({ + domain: 'cloudLearningTime', + keys: [this.data.bookId] + }) + .then((res) => { + if (res.length > 0) { + if (JSON.parse(res[0].value) && JSON.parse(res[0].value).length > 0) { + this.setData({ + learnTimeList: JSON.parse(res[0].value), + learnTimeData: JSON.parse(res[0].value)[0].learnTime, + }) + } else { + this.setData({ + learnTimeList: [], + learnTimeData: 0 + }) + } + } + }) + }, + cloudCount(timeStr) { + let time = Number(this.data.learnTimeData) + Number(timeStr) + this.setData({ + learnTimeList: [{ + learnTime: time + }], + }) + app.MG.identity + .setUserKey({ + setKeyRequests: [{ + domain: 'cloudLearningTime', + key: this.data.bookId, + value: JSON.stringify(this.data.learnTimeList) + }] + }) + .then((res) => { + console.log(timeStr, '瀛︿範鏃堕暱') + }) + }, // 鑾峰彇鍥句功璇︽儏 getBookInfo(id) { const query = { diff --git a/packageDomain/pages/resourceDetails/myVideo/index.js b/packageDomain/pages/resourceDetails/myVideo/index.js index c4906d2..41f8562 100644 --- a/packageDomain/pages/resourceDetails/myVideo/index.js +++ b/packageDomain/pages/resourceDetails/myVideo/index.js @@ -3,6 +3,7 @@ import { loginInfo } from '../../../../assets/js/login'; +import moment from 'moment' Page({ /** @@ -54,7 +55,10 @@ buyIdList: [], buyList: [], learnClassData: null, - bookDetail: null + bookDetail: null, + learnStartTime: 0, + learnTimeList: [], + learnTimeData: 0 }, // 鏍煎紡鍖栫瑪璁版椂闂� convertTimestamp(timestamp) { @@ -110,7 +114,13 @@ } else { this.resourceDetailsData() } - if (options.formPath == 'jsek_cloudLearning') this.getBookInfo(options.bookId) + if (options.formPath == 'jsek_cloudLearning') { + this.setData({ + learnStartTime: Date.now(), + }) + this.getLearnTime() + } + this.getBookInfo(options.bookId) }, /** @@ -149,7 +159,53 @@ this.count(duration) } this.setPlayerList() + if (this.data.fromPath == 'jsek_cloudLearning') { + let cloudDuration = this.data.pauseTime - this.data.learnStartTime + this.cloudCount(cloudDuration) + } }, + getLearnTime() { + app.MG.identity + .getUserKey({ + domain: 'cloudLearningTime', + keys: [this.data.bookId] + }) + .then((res) => { + if (res.length > 0) { + if (JSON.parse(res[0].value) && JSON.parse(res[0].value).length > 0) { + this.setData({ + learnTimeList: JSON.parse(res[0].value), + learnTimeData: JSON.parse(res[0].value)[0].learnTime, + }) + } else { + this.setData({ + learnTimeList: [], + learnTimeData: 0 + }) + } + } + }) + }, + cloudCount(timeStr) { + let time = Number(this.data.learnTimeData) + Number(timeStr) + this.setData({ + learnTimeList: [{ + learnTime: time + }], + }) + app.MG.identity + .setUserKey({ + setKeyRequests: [{ + domain: 'cloudLearningTime', + key: this.data.bookId, + value: JSON.stringify(this.data.learnTimeList) + }] + }) + .then((res) => { + console.log(timeStr, '瀛︿範鏃堕暱') + }) + }, + // 鑾峰彇鍥句功璇︽儏 getBookInfo(id) { @@ -570,7 +626,7 @@ res.datas.forEach((item) => { // item.compliceHover = false // item.deleteHover = false - item.createDate = this.convertTimestamp(item.createDate) + item.createDate = moment(item.createDate).format('YYYY-MM-DD HH:mm:ss') }) this.setData({ "pageCount.total": res.totalSize, -- Gitblit v1.9.1