From 804158fa14e17559f5b4bc0ebf62c42d7b640cff Mon Sep 17 00:00:00 2001 From: taoxu <2622874537@qq.com> Date: Tue, 26 Dec 2023 22:40:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=B8=B2=E6=9F=93=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/css/iconfont.css | 14 +- common/http.interceptor.js | 2 +- pages.json | 10 + pages/Mystudent/Mystudent.vue | 1295 +++++++++-------- pages_teacher/pages_add/add_class.vue | 59 +- pages_teacher/teacher_class/class_members.vue | 60 +- .../teacher_teachers/operation_detail.vue | 122 +- 7 files changed, 782 insertions(+), 780 deletions(-) diff --git a/common/css/iconfont.css b/common/css/iconfont.css index 36c7f17..12be79d 100644 --- a/common/css/iconfont.css +++ b/common/css/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 3598721 */ - src: url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.woff2?t=1691978562796') format('woff2'), - url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.woff?t=1691978562796') format('woff'), - url('//at.alicdn.com/t/c/font_3598721_fd8phfvkjv.ttf?t=1691978562796') format('truetype'); + src: url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.woff2?t=1703600739909') format('woff2'), + url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.woff?t=1703600739909') format('woff'), + url('//at.alicdn.com/t/c/font_3598721_z5jk4kgjfv.ttf?t=1703600739909') format('truetype'); } .iconfont { @@ -13,6 +13,14 @@ -moz-osx-font-smoothing: grayscale; } +.icon-xiangxiajiantoucuxiao:before { + content: "\e8c8"; +} + +.icon-xiangshangjiantoucuxiao:before { + content: "\e8d8"; +} + .icon-yiwancheng:before { content: "\e630"; } diff --git a/common/http.interceptor.js b/common/http.interceptor.js index c62fbe8..74ddf6b 100644 --- a/common/http.interceptor.js +++ b/common/http.interceptor.js @@ -42,7 +42,7 @@ const install = (Vue, vm) => { // 所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值 // const token = uni.getStorageSync('token'); - const token = " Bearer 794bed8faaf14a00b07befd07b8402b2" + const token = " Bearer 5791a135fff342a4b7e70109b6936826" // console.log("我是token", token) config.header.Authorization = token; diff --git a/pages.json b/pages.json index 0a2b316..16e574f 100644 --- a/pages.json +++ b/pages.json @@ -228,6 +228,16 @@ "enablePullDownRefresh": false, "navigationStyle": "custom" } + }, + { + "path" : "teacher_class/class_members", + "style" : + { + "navigationBarTitleText": "", + "navigationBarBackgroundColor": "#4473f6", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } } ] diff --git a/pages/Mystudent/Mystudent.vue b/pages/Mystudent/Mystudent.vue index 9452838..754c631 100644 --- a/pages/Mystudent/Mystudent.vue +++ b/pages/Mystudent/Mystudent.vue @@ -1,21 +1,16 @@ <template> <view class="pagebox"> <view class="topbox"> - <u-navbar title="LILY" - :border-bottom="false" - :background="bgc" - title-color='#FFFFFF' - title-size='36' - height='36'></u-navbar> + <u-navbar title="LILY" :border-bottom="false" :background="bgc" title-color='#FFFFFF' title-size='36' + height='36'></u-navbar> <view class="echarts"> <!-- <mpvue-echarts id="main" ref="pieChart" :echarts="echarts" @onInit="initChart" /> --> - <l-echart ref="chart" - @finished="initChart"></l-echart> + <l-echart ref="chart" @finished="initChart"></l-echart> </view> <view class="infobigbox"> <view class="logo"> - <image src="https://file.langsi.online/yasiimg/web/static/ubtuFZZ3dgSoSc444qIg" - style="z-index: 0;"></image> + <image src="https://file.langsi.online/yasiimg/web/static/ubtuFZZ3dgSoSc444qIg" style="z-index: 0;"> + </image> </view> <view class="infobox"> @@ -25,15 +20,33 @@ 今日学习(分) </view> <view class="infobox_top_leftbot"> - 320 + {{workinfo.todayStudyPoint}} </view> </view> <view class="infobox_top_right"> <view class="infobox_top_righttop"> 较昨日 </view> - <view class="infobox_top_rightbot"> - 20% + <view class="infobox_top_rightbot" style="color: #2D7CE6; " v-if="isup"> + <view class="iconfont icon-xiangshangjiantoucuxiao"> + </view> + <view class="text"> + {{beforyes}}% + </view> + + </view> + <view class="infobox_top_rightbot" v-if="beforyes==0" style="color: #2E4975;"> + <view class="text"> + {{beforyes}}% + </view> + </view> + <view class="infobox_top_rightbot" v-if="isup==false"> + <view class="iconfont icon-xiangxiajiantoucuxiao"> + </view> + <view class="text"> + {{beforyes}}% + </view> + </view> </view> </view> @@ -59,7 +72,7 @@ 今日问AI(次) </view> <view class="infobox_bot_cont_bot"> - 43 + {{workinfo.askAiNum}} </view> </view> </view> @@ -71,88 +84,34 @@ <view class="study_info_top_left"> 作业完成情况 </view> - <view class="study_info_top_right"> + <!-- <view class="study_info_top_right"> 本周 <view class="iconfont icon-arow_down"></view> - </view> + </view> --> </view> <view class="study_info_cont_box"> - <view class="study_info_cont"> - <view class="data">Mon</view> + <view class="study_info_cont" v-for="(item, index) in sdydata" :key="index"> + <view class="data" v-if="index==1">Sun</view> + <view class="data" v-if="index==2">Mon</view> + <view class="data" v-if="index==3">Tus</view> + <view class="data" v-if="index==4">Wed</view> + <view class="data" v-if="index==5">Thu</view> + <view class="data" v-if="index==6">Fri</view> + <view class="data" v-if="index==7">Sat</view> + <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> + <view class="study" v-for="(items,indexs) in item" :key="indexs" + :style="{ backgroundColor: items.background }"></view> </view> </view> - <view class="study_info_cont"> - <view class="data">Tue</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - </view> - <view class="study_info_cont"> - <view class="data">Wed</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - - </view> - <view class="study_info_cont"> - <view class="data">Thu</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - - </view> - <view class="study_info_cont"> - <view class="data">Fri</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - - </view> - <view class="study_info_cont"> - <view class="data">Sat</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - - </view> - <view class="study_info_cont"> - <view class="data">Sun</view> - <view class="study_box"> - <view class="study" - v-for="(item, index) in sdydata" - :key="index" - :style="{ backgroundColor: item.background }"></view> - </view> - - </view> </view> </view> - + </view> <view class="work_info"> <view class="work_info_top"> @@ -231,8 +190,7 @@ </view> </view> </view> - <view class="work_card" - :class="isalready == true ? 'act1' : ''"> + <view class="work_card" :class="isalready == true ? 'act1' : ''"> <view class="work_card_top"> <view class="work_card_top_left"> <view class="work_card_top_left_img"> @@ -240,8 +198,7 @@ </view> 课后作业 </view> - <view class="work_card_top_right" - :class="isalready == true ? 'act2' : ''"> + <view class="work_card_top_right" :class="isalready == true ? 'act2' : ''"> 进行中 </view> </view> @@ -305,465 +262,584 @@ </template> <script> -import * as echarts from '@/uni_modules/lime-echart/static/echarts.min' - -// import echarts from '@/common/echarts.min2.js' /*chart.min.js为在线定制*/ -import mpvueEcharts from '@/components/mpvue-echarts/src/echarts.vue' -import LEchart from '@/uni_modules/lime-echart/components/l-echart/l-echart.vue'; -export default { - components: { - mpvueEcharts, LEchart - }, - data() { - return { - // echarts, - totalScore: 10, - grammaticalScore: 8, - vocabularyScore: 8, - pronounceScore: 8, - fluencyScore: 8, - bgc: { - backgroundColor: "transparent", - }, - sdydata: [], - isalready: true, - // https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX - } - }, - onLoad(option) { - - - - this.changedata() - }, - - methods: { - async initChart() { - let _this = this - - const option = { - color: ['#d1f7ff', '#95c6fd'], - legend: { // 图例组件 + import * as echarts from '@/uni_modules/lime-echart/static/echarts.min' + // import echarts from '@/common/echarts.min2.js' /*chart.min.js为在线定制*/ + import mpvueEcharts from '@/components/mpvue-echarts/src/echarts.vue' + import LEchart from '@/uni_modules/lime-echart/components/l-echart/l-echart.vue'; + export default { + components: { + mpvueEcharts, + LEchart + }, + data() { + return { + // echarts, + totalScore: 10, + grammaticalScore: 8, + vocabularyScore: 8, + pronounceScore: 8, + fluencyScore: 8, + bgc: { + backgroundColor: "transparent", }, - backgroundColor: 'transparent', - radar: [{ // 雷达图坐标系组件,只适用于雷达图。 - center: ['50%', '50%'], - // 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ] - radius: '70rpx', - // 圆的半径,数组的第一项是内半径,第二项是外半径。 - startAngle: 90, - // 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ] - name: { // (圆外的标签)雷达图每个指示器名称的配置项。 - formatter: '{value}', - textStyle: { - fontSize: '24rpx', - color: '#4DA1FF' - } - }, - nameGap: 5, - // 指示器名称和指示器轴的距离。[ default: 15 ] - splitNumber: 1, - // (这里是圆的环数)指示器轴的分割段数。[ default: 5 ] - shape: 'circle', - // 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ] - axisLine: { // (圆内的几条直线)坐标轴轴线相关设置 - lineStyle: { - color: '#daedff', - // 坐标轴线线的颜色。 - width: 1, - // 坐标轴线线宽。 - type: 'solid', - // 坐标轴线线的类型。 - } - }, - splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。 - lineStyle: { - color: ['#daedff', '#daedff', '#daedff', '#daedff', '#daedff', '#91c5ff'], - // 分隔线颜色 - width: 1, - // 分隔线线宽 - type: ['solid', 'dashed'], - // 坐标轴线线的类型 - } - }, - splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。 - show: true, - areaStyle: { // 分隔区域的样式设置。 - color: ' #E1F0FF', - // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。 - } - }, - indicator: [ - { // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应 - name: '平均成绩/分' + ' ' + Number(_this.totalScore).toFixed(1), - // 指示器名称 - max: 100, - // 指示器的最大值,可选,建议设置 - color: '#FFFFFF ' // 标签特定的颜色。 - }, - { - name: '写作' + ' ' + Number(_this.grammaticalScore).toFixed(1), - max: 100, - color: '#FFFFFF' // 标签特定的颜色。 - }, - { - name: '阅读' + ' ' + Number(_this.vocabularyScore).toFixed(1), - max: 100, - color: '#FFFFFF' // 标签特定的颜色。 - }, - { - name: '口语' + ' ' + Number(_this.pronounceScore).toFixed(1), - max: 100, - color: '#FFFFFF' // 标签特定的颜色。 - }, - { - name: '听力' + ' ' + Number(_this.fluencyScore).toFixed(1), - max: 100, - color: '#FFFFFF' // 标签特定的颜色。 - }] - }], - series: [{ - name: '雷达图', - // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 - type: 'radar', - // 系列类型: 雷达图 - itemStyle: { // 折线拐点标志的样式。 + sdydata: [], + isalready: true, + id: 1523, + workinfo: {}, + orgworkinfo: {}, + beforyes: '', + isup: '' + // https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX + } + }, + onLoad(option) { - normal: { // 普通状态时的样式 - lineStyle: { - width: 2, - color: '#3F9AFF', - }, - opacity: 1 - }, - emphasis: { // 高亮时的样式 - lineStyle: { - width: 0, - color: '#60abff', - }, - opacity: 1 - } - }, - data: [ - // { // 雷达图的数据是多变量(维度)的 - // name: '', - // // 数据项名称 - // value: [100, 100, 100, 100, 100], - // // 其中的value项数组是具体的数据,每个值跟 radar.indicator 一一对应。 - // symbol: 'circle', - // // 单个数据标记的图形。 - // symbolSize: 0, - // // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。 - // // label: { // 单个拐点文本的样式设置 - // // normal: { - // // show: false, - // // // 单个拐点文本的样式设置。[ default: false ] - // // position: 'top', - // // // 标签的位置。[ default: top ] - // // distance: 5, - // // // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ] - // // color: '#d1f7ff', - // // // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ] - // // fontSize: 14, - // // // 文字的字体大小 - // // formatter: function(params) { - // // return params.value; - // // } - // // } - // // }, - // itemStyle: { // 单个拐点标志的样式设置。 - // normal: { - // borderColor: '#d1f7ff', - // // 拐点的描边颜色。[ default: '#000' ] - // borderWidth: 0, - // // 拐点的描边宽度,默认不描边。[ default: 0 ] - // } - // }, - // lineStyle: { // 单项线条样式。 - // normal: { - // opacity: 0.5,// 图形透明度 - // width: 2, - // color: '#d1f7ff', - // }, - // emphasis: { // 高亮时的样式 - // width: 2, - // color: '#d1f7ff', - // opacity: 1 - // } - // }, - // areaStyle: { // 单项区域填充样式 - // normal: { - // color: '#d1f7ff' // 填充的颜色。[ default: "#000" ] - // } - // } - // }, - { - name: '', - value: [Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this.vocabularyScore).toFixed(1) * 10, Number(_this.pronounceScore).toFixed(1) * 10, Number(_this.fluencyScore).toFixed(1) * 10], - symbol: 'circle', - symbolSize: 0, - // label: { - // normal: { - // show: false, - // position: 'top', - // distance: 5, - // color: '#95c6fd', - // fontSize: 14, - // formatter: function(params) { - // return params.value; - // } - // } - // }, - itemStyle: { - normal: { - borderColor: '##3F9AFF', - borderWidth: 0, - } - }, + + // this.changedata() + this.getinfo() + }, + + methods: { + getinfo() { + this.$u.get( + `https://api.admin-v2.langsi.online/admin-api/classroom/work-record/statistics?memberId=${this.id}` + ).then(res => { + + + if (res.code == 0) { + this.workinfo = res.data + this.sdydata = this.workinfo.weekWorkStatistics + this.orgworkinfo = JSON.parse(JSON.stringify(res.data)); + const percentageChange = ((this.workinfo.todayStudyPoint - this.workinfo + .yesterdayStudyPoint) / Math.abs(this.workinfo.yesterdayStudyPoint)) * 100; + + // Determine whether it's an improvement or decline + this.isup = percentageChange > 0; + + // Assign the absolute percentage change to this.beforyes + this.beforyes = Math.abs(percentageChange); + this.changedata() + + // this.classlist = res.data.list + // this.isloding = false + + } + }) + }, + async initChart() { + let _this = this + + const option = { + color: ['#d1f7ff', '#95c6fd'], + legend: { // 图例组件 + + }, + backgroundColor: 'transparent', + radar: [{ // 雷达图坐标系组件,只适用于雷达图。 + center: ['50%', '50%'], + // 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ] + radius: '70rpx', + // 圆的半径,数组的第一项是内半径,第二项是外半径。 + startAngle: 90, + // 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ] + name: { // (圆外的标签)雷达图每个指示器名称的配置项。 + formatter: '{value}', + textStyle: { + fontSize: '24rpx', + color: '#4DA1FF' + } + }, + nameGap: 5, + // 指示器名称和指示器轴的距离。[ default: 15 ] + splitNumber: 1, + // (这里是圆的环数)指示器轴的分割段数。[ default: 5 ] + shape: 'circle', + // 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ] + axisLine: { // (圆内的几条直线)坐标轴轴线相关设置 lineStyle: { - normal: { - opacity: 0.5, + color: '#daedff', + // 坐标轴线线的颜色。 + width: 1, + // 坐标轴线线宽。 + type: 'solid', + // 坐标轴线线的类型。 + } + }, + splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。 + lineStyle: { + color: ['#daedff', '#daedff', '#daedff', '#daedff', '#daedff', '#91c5ff'], + // 分隔线颜色 + width: 1, + // 分隔线线宽 + type: ['solid', 'dashed'], + // 坐标轴线线的类型 + } + }, + splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。 + show: true, + areaStyle: { // 分隔区域的样式设置。 + color: ' #E1F0FF', + // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。 + } + }, + indicator: [{ // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应 + name: '平均成绩/分' + ' ' + Number(_this.totalScore).toFixed(1), + // 指示器名称 + max: 100, + // 指示器的最大值,可选,建议设置 + color: '#FFFFFF ' // 标签特定的颜色。 + }, + { + name: '写作' + ' ' + Number(_this.grammaticalScore).toFixed(1), + max: 100, + color: '#FFFFFF' // 标签特定的颜色。 + }, + { + name: '阅读' + ' ' + Number(_this.vocabularyScore).toFixed(1), + max: 100, + color: '#FFFFFF' // 标签特定的颜色。 + }, + { + name: '口语' + ' ' + Number(_this.pronounceScore).toFixed(1), + max: 100, + color: '#FFFFFF' // 标签特定的颜色。 + }, + { + name: '听力' + ' ' + Number(_this.fluencyScore).toFixed(1), + max: 100, + color: '#FFFFFF' // 标签特定的颜色。 + } + ] + }], + series: [{ + name: '雷达图', + // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: 'radar', + // 系列类型: 雷达图 + itemStyle: { // 折线拐点标志的样式。 + + normal: { // 普通状态时的样式 + lineStyle: { width: 2, - color: '#2D7CE6', + color: '#3F9AFF', }, - emphasis: { // 高亮时的样式 - width: 2, - color: '#2D7CE6', - opacity: 1 - } + opacity: 1 }, - areaStyle: { - normal: { - color: '#2D7CE6' + emphasis: { // 高亮时的样式 + lineStyle: { + width: 0, + color: '#60abff', + }, + opacity: 1 + } + }, + data: [ + // { // 雷达图的数据是多变量(维度)的 + // name: '', + // // 数据项名称 + // value: [100, 100, 100, 100, 100], + // // 其中的value项数组是具体的数据,每个值跟 radar.indicator 一一对应。 + // symbol: 'circle', + // // 单个数据标记的图形。 + // symbolSize: 0, + // // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。 + // // label: { // 单个拐点文本的样式设置 + // // normal: { + // // show: false, + // // // 单个拐点文本的样式设置。[ default: false ] + // // position: 'top', + // // // 标签的位置。[ default: top ] + // // distance: 5, + // // // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ] + // // color: '#d1f7ff', + // // // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ] + // // fontSize: 14, + // // // 文字的字体大小 + // // formatter: function(params) { + // // return params.value; + // // } + // // } + // // }, + // itemStyle: { // 单个拐点标志的样式设置。 + // normal: { + // borderColor: '#d1f7ff', + // // 拐点的描边颜色。[ default: '#000' ] + // borderWidth: 0, + // // 拐点的描边宽度,默认不描边。[ default: 0 ] + // } + + // }, + // lineStyle: { // 单项线条样式。 + // normal: { + // opacity: 0.5,// 图形透明度 + // width: 2, + // color: '#d1f7ff', + // }, + // emphasis: { // 高亮时的样式 + // width: 2, + // color: '#d1f7ff', + // opacity: 1 + // } + // }, + // areaStyle: { // 单项区域填充样式 + // normal: { + // color: '#d1f7ff' // 填充的颜色。[ default: "#000" ] + // } + // } + // }, + { + name: '', + value: [Number(_this.grammaticalScore).toFixed(1) * 10, Number(_this + .grammaticalScore).toFixed(1) * 10, Number(_this + .vocabularyScore).toFixed(1) * 10, Number(_this + .pronounceScore).toFixed(1) * 10, Number(_this + .fluencyScore).toFixed(1) * 10], + symbol: 'circle', + symbolSize: 0, + // label: { + // normal: { + // show: false, + // position: 'top', + // distance: 5, + // color: '#95c6fd', + // fontSize: 14, + // formatter: function(params) { + // return params.value; + // } + // } + // }, + itemStyle: { + normal: { + borderColor: '##3F9AFF', + borderWidth: 0, + } + }, + lineStyle: { + normal: { + opacity: 0.5, + width: 2, + color: '#2D7CE6', + }, + emphasis: { // 高亮时的样式 + width: 2, + color: '#2D7CE6', + opacity: 1 + } + }, + areaStyle: { + normal: { + color: '#2D7CE6' + } } } - }] - }, - ] - }; - const chart = await this.$refs.chart.init(echarts); - chart.setOption(option) - //return chart - }, + ] + }, ] + }; + const chart = await this.$refs.chart.init(echarts); + chart.setOption(option) + //return chart + }, - changedata() { - this.sdydata = []; + changedata() { + this.sdydata[1][0].times = 10 + for (const key in this.sdydata) { + if (this.sdydata.hasOwnProperty(key)) { + const items = this.sdydata[key]; - for (let i = 0; i < 10; i++) { - const isStudy = Math.random() < 0.5; - let totalNum = "0"; - let alreadyNum = "0"; + // Loop through each item in the structure + for (const item of items) { + // Compare times with maxTimes and calculate the percentage + const percentage = (item.times / this.workinfo.maxTimes) * 100; - if (isStudy) { - totalNum = String(Math.floor(Math.random() * 100)); - alreadyNum = String(Math.floor(Math.random() * (parseInt(totalNum) + 1))); + // Get the background color using the getColorByPercentage method + const backgroundColor = this.getColorByPercentage(percentage); + + // Add the background property to the item + item.background = backgroundColor; + } + } } + console.log(this.sdydata, 'sdydatasdydata'); + }, + getColorByPercentage(percentage) { + // 将百分比转换为透明度 + const alpha = percentage / 100; - this.sdydata.push({ - isStudy, - totalNum, - alreadyNum, - }); + // 返回颜色值,使用计算得到的透明度 + return `rgba(61, 202, 211, ${alpha})`; } - for (let i = 0; i < this.sdydata.length; i++) { - const item = this.sdydata[i]; - if (item.isStudy) { - const percentage = (parseInt(item.alreadyNum) / parseInt(item.totalNum)) * 100; - const color = this.getColorByPercentage(percentage); - item.background = color; - } else { - item.background = '#F6F6F6'; - } - } - console.log(this.sdydata, 'this.sdydata'); - }, - getColorByPercentage(percentage) { - // 将百分比转换为透明度 - const alpha = percentage / 100; - - // 返回颜色值,使用计算得到的透明度 - return `rgba(61, 202, 211, ${alpha})`; } - - } -} </script> -<style lang="scss"> -page { - background: #F7F9FC; - padding-bottom: 50rpx; -} +<style lang="scss"> + page { + background: #F7F9FC; + padding-bottom: 50rpx; + } -.pagebox { + .pagebox { - width: 750rpx; - - .topbox { - // display: flex; - // flex-wrap: wrap; - padding: 0 32rpx; width: 750rpx; - height: 1345.92rpx; - background-image: url("https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX"); - background-size: cover; - background-position: center; - .echarts { - margin-top: 70rpx; - margin-left: auto; - margin-right: 20rpx; - width: 400rpx; - height: 300rpx; - // background:transparent; - } + .topbox { + // display: flex; + // flex-wrap: wrap; + padding: 0 32rpx; + width: 750rpx; + height: 1345.92rpx; + background-image: url("https://file.langsi.online/yasiimg/web/static/uBHiWpVS8LQdX241DdjX"); + background-size: cover; + background-position: center; - .infobigbox { - width: 686rpx; - position: relative; - - .logo { - position: absolute; - left: 20rpx; - top: -342rpx; - width: 220rpx; - height: 485.82rpx; - z-index: 0 !important; + .echarts { + margin-top: 70rpx; + margin-left: auto; + margin-right: 20rpx; + width: 400rpx; + height: 300rpx; + // background:transparent; } - .infobox { - position: relative; + .infobigbox { width: 686rpx; + position: relative; - background: rgba(255, 255, 255, 0.7); - border-radius: 20rpx 20rpx 20rpx 20rpx; + .logo { + position: absolute; + left: 20rpx; + top: -342rpx; + width: 220rpx; + height: 485.82rpx; + z-index: 0 !important; + } - border: 2rpx solid #FFFFFF; - // z-index: 999; + .infobox { + position: relative; + width: 686rpx; - .infobox_top { - display: flex; - flex-wrap: nowrap; + background: rgba(255, 255, 255, 0.7); + border-radius: 20rpx 20rpx 20rpx 20rpx; - // align-items: center; - .infobox_top_left { - width: 196rpx; - margin-top: 48rpx; - margin-left: 100rpx; + border: 2rpx solid #FFFFFF; + // z-index: 999; - .infobox_top_lefttop { - font-size: 28rpx; - font-family: 'PingFang'; - font-weight: 400; - color: #2E4975; + .infobox_top { + display: flex; + flex-wrap: nowrap; + // align-items: center; + .infobox_top_left { + width: 196rpx; + margin-top: 48rpx; + margin-left: 100rpx; + + .infobox_top_lefttop { + font-size: 28rpx; + font-family: 'PingFang'; + font-weight: 400; + color: #2E4975; + + } + + .infobox_top_leftbot { + font-size: 76rpx; + font-family: 'PingFang'; + font-weight: 800; + color: #2E4975; + margin-top: 12rpx; + } } - .infobox_top_leftbot { - font-size: 76rpx; - font-family: 'PingFang'; - font-weight: 800; - color: #2E4975; - margin-top: 12rpx; + .infobox_top_right { + margin-left: 112rpx; + margin-top: 78rpx; + + .infobox_top_righttop { + font-size: 24rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 800; + color: #2E4975; + } + + .infobox_top_rightbot { + display: flex; + flex-wrap: nowrap; + margin-top: 4rpx; + align-items: flex-end; + /* Align items at the bottom */ + color: #F18F21; + + .icon-xiangshangjiantoucuxiao { + font-size: 16rpx; + margin-bottom: 12rpx; + } + + .icon-xiangxiajiantoucuxiao { + font-size: 16rpx; + margin-bottom: 12rpx; + } + + .text { + font-size: 40rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 800; + } + } } } - .infobox_top_right { - margin-left: 112rpx; - margin-top: 78rpx; + .infobox_bot { + margin-left: 32rpx; + margin-top: 32rpx; + margin-bottom: 32rpx; + width: 622rpx; + height: 126rpx; + background: #F6F6F6; + border-radius: 20rpx 20rpx 20rpx 20rpx; + display: flex; + flex-wrap: nowrap; + justify-content: space-around; + align-items: center; - .infobox_top_righttop { - font-size: 24rpx; - font-family:'PingFang','PingFang'; - font-weight: 800; - color: #2E4975; + .infobox_bot_cont { + width: 140rpx; + display: flex; + flex-wrap: wrap; + justify-content: center; + + .infobox_bot_cont_top { + font-size: 20rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: #2E4975; + } + + .infobox_bot_cont_bot { + margin-top: 8rpx; + font-size: 36rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 800; + color: #2E4975; + } } + } + } + } - .infobox_top_rightbot { - margin-top: 4rpx; - font-size: 40rpx; - font-family:'PingFang','PingFang'; - font-weight: 800; - color: #F18F21; + .study_info_box { + // position: absolute; + margin-top: 20rpx; + width: 686rpx; + padding: 32rpx; + // height: 365rpx; + background: #FFFFFF; + border-radius: 20rpx 20rpx 20rpx 20rpx; + + .study_info_top { + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + align-items: center; + + .study_info_top_left { + font-size: 28rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 800; + color: #2E4975; + } + + .study_info_top_right { + display: flex; + flex-wrap: nowrap; + align-items: center; + font-size: 24rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: rgba(46, 73, 117, 0.65); + line-height: 38rpx; + + .icon-arow_down { + margin-left: 8rpx; + font-size: 16rpx; + color: #2E4975; } } } - .infobox_bot { - margin-left: 32rpx; + .study_info_cont_box { + margin-top: 32rpx; - margin-bottom: 32rpx; - width: 622rpx; - height: 126rpx; - background: #F6F6F6; - border-radius: 20rpx 20rpx 20rpx 20rpx; display: flex; - flex-wrap: nowrap; - justify-content: space-around; - align-items: center; + // flex-wrap: warp; + flex-wrap: wrap; - .infobox_bot_cont { - width: 140rpx; + .study_info_cont { + margin-top: 4rpx; display: flex; - flex-wrap: wrap; - justify-content: center; + flex-wrap: nowrap; + align-content: center; - .infobox_bot_cont_top { + // justify-content: space-between; + .data { + width: 40rpx; font-size: 20rpx; - font-family:'PingFang','PingFang'; + font-family: 'PingFang', 'PingFang'; font-weight: 500; color: #2E4975; } - .infobox_bot_cont_bot { - margin-top: 8rpx; - font-size: 36rpx; - font-family:'PingFang','PingFang'; - font-weight: 800; - color: #2E4975; + .study_box { + margin-left: 12rpx; + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + + .study { + margin-right: 2rpx; + width: 57.4rpx; + height: 32.41rpx; + background: #F6F6F6; + } } } } + } + } - .study_info_box { - // position: absolute; - margin-top: 20rpx; - width: 686rpx; - padding: 32rpx; - // height: 365rpx; - background: #FFFFFF; - border-radius: 20rpx 20rpx 20rpx 20rpx; + .work_info { - .study_info_top { + margin-top: 40rpx; + padding: 0 32rpx; + + .work_info_top { display: flex; flex-wrap: nowrap; - justify-content: space-between; align-items: center; + justify-content: space-between; - .study_info_top_left { - font-size: 28rpx; - font-family:'PingFang','PingFang'; + .work_info_top_text { + font-size: 32rpx; + font-family: 'PingFang', 'PingFang'; font-weight: 800; color: #2E4975; } - .study_info_top_right { + .work_info_top_right { display: flex; flex-wrap: nowrap; align-items: center; font-size: 24rpx; - font-family:'PingFang','PingFang'; + font-family: 'PingFang', 'PingFang'; font-weight: 500; - color: rgba(46, 73, 117, 0.65); - line-height: 38rpx; + color: rgba(7, 47, 90, 0.6); .icon-arow_down { margin-left: 8rpx; @@ -773,208 +849,133 @@ page { } } - .study_info_cont_box { - margin-top: 32rpx; + .work_card { + margin-top: 20rpx; display: flex; - // flex-wrap: warp; flex-wrap: wrap; - - .study_info_cont { - margin-top: 4rpx; - display: flex; - flex-wrap: nowrap; - align-content: center; - - // justify-content: space-between; - .data { - width: 40rpx; - font-size: 20rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; - color: #2E4975; - } - - .study_box { - margin-left: 12rpx; - display: flex; - flex-wrap: nowrap; - justify-content: space-between; - - .study { - margin-right: 2rpx; - width: 57.4rpx; - height: 32.41rpx; - background: #F6F6F6; - } - } - } - } - - } - - } - - .work_info { - - margin-top: 40rpx; - padding: 0 32rpx; - - .work_info_top { - display: flex; - flex-wrap: nowrap; - align-items: center; - justify-content: space-between; - - .work_info_top_text { - font-size: 32rpx; - font-family:'PingFang','PingFang'; - font-weight: 800; - color: #2E4975; - } - - .work_info_top_right { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 24rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; - color: rgba(7, 47, 90, 0.6); - - .icon-arow_down { - margin-left: 8rpx; - font-size: 16rpx; - color: #2E4975; - } - } - } - - .work_card { - margin-top: 20rpx; - display: flex; - flex-wrap: wrap; - width: 686rpx; - padding: 32rpx; - background: #FFFFFF; - border-radius: 20rpx 20rpx 20rpx 20rpx; - - border-left: 8rpx solid #F18F21; - - .work_card_top { - width: 100%; - display: flex; - flex-wrap: nowrap; - align-items: center; - justify-content: space-between; - - .work_card_top_left { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 28rpx; - font-family:'PingFang','PingFang'; - font-weight: 800; - color: #2E4975; - - .work_card_top_left_img { - margin-right: 8rpx; - width: 38rpx; - height: 32rpx; - } - } - - .work_card_top_right { - font-size: 24rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; - color: #F18F21; - } - - .act2 { - color: #2D7CE6; - } - } - - .work_card_cont_box { - margin-top: 16rpx; - padding: 24rpx; - width: 100%; - background: #F9F9F9; + width: 686rpx; + padding: 32rpx; + background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; - .work_card_cont:last-child { - margin-bottom: 0; - } + border-left: 8rpx solid #F18F21; - .work_card_cont { - margin-bottom: 24rpx; + .work_card_top { + width: 100%; display: flex; flex-wrap: nowrap; align-items: center; + justify-content: space-between; - .work_card_cont_point { - width: 8rpx; - height: 8rpx; - background: #2E4975; - border-radius: 50%; - } - - .work_card_cont_text { - margin-left: 20rpx; - font-size: 24rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; + .work_card_top_left { + display: flex; + flex-wrap: nowrap; + align-items: center; + font-size: 28rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 800; color: #2E4975; + + .work_card_top_left_img { + margin-right: 8rpx; + width: 38rpx; + height: 32rpx; + } } - .work_card_cont_tag { - margin-left: 30rpx; - padding: 8rpx 18rpx; - background: #FFF2E4; - border-radius: 20rpx 20rpx 20rpx 20rpx; - font-size: 20rpx; - font-family:'PingFang','PingFang'; + .work_card_top_right { + font-size: 24rpx; + font-family: 'PingFang', 'PingFang'; font-weight: 500; color: #F18F21; } - } - } - - .work_card_info_box { - display: flex; - flex-wrap: wrap; - margin-top: 22rpx; - - .work_card_info_top { - display: flex; - flex-wrap: nowrap; - align-items: center; - width: 100%; - font-size: 20rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; - color: rgba(46, 73, 117, 0.6); - - .work_card_info_topimg { - margin-right: 8rpx; - width: 18.74rpx; - height: 20rpx; + .act2 { + color: #2D7CE6; } } - .work_card_info_bot { - margin-top: 4rpx; - font-size: 24rpx; - font-family:'PingFang','PingFang'; - font-weight: 500; - color: #2E4975; + .work_card_cont_box { + margin-top: 16rpx; + padding: 24rpx; + width: 100%; + background: #F9F9F9; + border-radius: 20rpx 20rpx 20rpx 20rpx; + + .work_card_cont:last-child { + margin-bottom: 0; + } + + .work_card_cont { + margin-bottom: 24rpx; + display: flex; + flex-wrap: nowrap; + align-items: center; + + .work_card_cont_point { + width: 8rpx; + height: 8rpx; + background: #2E4975; + border-radius: 50%; + } + + .work_card_cont_text { + margin-left: 20rpx; + font-size: 24rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: #2E4975; + } + + .work_card_cont_tag { + margin-left: 30rpx; + padding: 8rpx 18rpx; + background: #FFF2E4; + border-radius: 20rpx 20rpx 20rpx 20rpx; + font-size: 20rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: #F18F21; + } + + } + } + + .work_card_info_box { + display: flex; + flex-wrap: wrap; + margin-top: 22rpx; + + .work_card_info_top { + display: flex; + flex-wrap: nowrap; + align-items: center; + width: 100%; + font-size: 20rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: rgba(46, 73, 117, 0.6); + + .work_card_info_topimg { + margin-right: 8rpx; + width: 18.74rpx; + height: 20rpx; + } + } + + .work_card_info_bot { + margin-top: 4rpx; + font-size: 24rpx; + font-family: 'PingFang', 'PingFang'; + font-weight: 500; + color: #2E4975; + } } } - } - .act1 { - border-left: 8rpx solid #2D7CE6; + .act1 { + border-left: 8rpx solid #2D7CE6; + } } } -}</style> +</style> \ No newline at end of file diff --git a/pages_teacher/pages_add/add_class.vue b/pages_teacher/pages_add/add_class.vue index cc4d372..31713db 100644 --- a/pages_teacher/pages_add/add_class.vue +++ b/pages_teacher/pages_add/add_class.vue @@ -19,51 +19,28 @@ </view> --> - <view class="check_card_cls"> + + <view class="check_card_cls " v-for="(item,index) in workinfo" :key="index"> <view class="check_card_cls_info_left"> <view class="class_card_left"> - <image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image> + <image :src="item.avatar"></image> </view> <view class="class_card_right"> <view class="class_card_right_top"> - 雅思1班 + {{item.name}} </view> - <view class="class_card_right_bot"> - 共21人 + + <view class="class_card_right_bot" v-show="item.classify == 1"> + 听力 </view> - </view> - </view> - <view class="check_card_cls_info_right"> - <view class="class_info"> - <view class="class_info_top"> - 平均成绩/分 + <view class="class_card_right_bot" v-show="item.classify == 2"> + 阅读 </view> - <view class="class_info_bot"> - 6 + <view class="class_card_right_bot" v-show="item.classify == 3"> + 写作 </view> - </view> - <view class="class_info"> - <view class="class_info_top"> - 作业完成度 - </view> - <view class="class_info_bot"> - 80% - </view> - </view> - - </view> - </view> - <view class="check_card_cls "> - <view class="check_card_cls_info_left"> - <view class="class_card_left"> - <image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image> - </view> - <view class="class_card_right"> - <view class="class_card_right_top"> - 雅思1班 - </view> - <view class="class_card_right_bot"> - 共21人 + <view class="class_card_right_bot" v-show="item.classify == 4"> + 口语 </view> </view> </view> @@ -103,19 +80,23 @@ backgroundColor: "#F6F9FC", }, checkindex: 0, - id:13, + id:12, workinfo:[], orgworkinfo:[] } }, - onLoad() { + onLoad(option) { + console.log(option); + this.id = option.id + // this.classid=15 this.getworklist() }, + methods: { getworklist() { - this.$u.get(`https://api.admin-v2.langsi.online//admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => { + this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => { if (res.code == 0) { diff --git a/pages_teacher/teacher_class/class_members.vue b/pages_teacher/teacher_class/class_members.vue index cc4d372..4334764 100644 --- a/pages_teacher/teacher_class/class_members.vue +++ b/pages_teacher/teacher_class/class_members.vue @@ -19,21 +19,21 @@ </view> --> - <view class="check_card_cls"> - <view class="check_card_cls_info_left"> + <view class="check_card_stu" v-for="(item,index) in workinfo" :key="index"> + <view class="check_card_stu_info_left"> <view class="class_card_left"> - <image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image> + <image :src="item.avatar"></image> </view> <view class="class_card_right"> <view class="class_card_right_top"> - 雅思1班 + {{item.name}} </view> <view class="class_card_right_bot"> - 共21人 + ID:{{item.id}} </view> </view> </view> - <view class="check_card_cls_info_right"> + <view class="check_card_stu_info_right"> <view class="class_info"> <view class="class_info_top"> 平均成绩/分 @@ -50,43 +50,11 @@ 80% </view> </view> - - </view> - </view> - <view class="check_card_cls "> - <view class="check_card_cls_info_left"> - <view class="class_card_left"> - <image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image> - </view> - <view class="class_card_right"> - <view class="class_card_right_top"> - 雅思1班 - </view> - <view class="class_card_right_bot"> - 共21人 - </view> - </view> - </view> - <view class="check_card_cls_info_right"> - <view class="class_info"> - <view class="class_info_top"> - 平均成绩/分 - </view> - <view class="class_info_bot"> - 6 - </view> - </view> - <view class="class_info"> - <view class="class_info_top"> - 作业完成度 - </view> - <view class="class_info_bot"> - 80% - </view> - </view> - + </view> </view> + + </view> </view> @@ -96,7 +64,7 @@ export default { data() { return { - title: '班级安排', + title: '学生安排', // 班级名称数据绑定 bgc: { @@ -110,12 +78,16 @@ } }, - onLoad() { + onLoad(option) { + console.log(option); + this.id = option.id + // this.classid=15 this.getworklist() }, + methods: { getworklist() { - this.$u.get(`https://api.admin-v2.langsi.online//admin-api/classroom/work-record/classrooms?workId=${this.id}`).then(res => { + this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/members?workId=${this.id}`).then(res => { if (res.code == 0) { diff --git a/pages_teacher/teacher_teachers/operation_detail.vue b/pages_teacher/teacher_teachers/operation_detail.vue index ae98431..02f62f3 100644 --- a/pages_teacher/teacher_teachers/operation_detail.vue +++ b/pages_teacher/teacher_teachers/operation_detail.vue @@ -53,7 +53,7 @@ <!-- 班级 --> <view class="ap_class"> <!-- 安排班级 --> - <view class="ap_classes"> + <view class="ap_classes" @click="toclass()"> <view class="ad_organization"> <view class="ad_ap">班级安排</view> <view class="ad_icon"> @@ -70,7 +70,7 @@ </view> </view> <!-- 成员安排 --> - <view class="ap_classes"> + <view class="ap_classes" @click="tostu()"> <view class="ad_organization"> <view class="ad_ap">成员安排</view> <view class="ad_icon"> @@ -96,17 +96,20 @@ <view class="view_timeline" style="margin-top: 20rpx;"> <u-time-line> <!-- 时间线1 --> - <u-time-line-item nodeTop="2" node-color="red" v-for="(itemsx,indexx) in item.items" :key="indexx"> + <u-time-line-item nodeTop="2" node-color="red" v-for="(itemsx,indexx) in item.items" + :key="indexx"> <template v-slot:content> <view> <view class="u-order-title"> <view class="fickle"> <view class="view_first_wz" v-if="itemsx.classify==1||itemsx.classify==2"> - {{itemsx.testName}}</view> + {{itemsx.testName}} + </view> <view class="view_first_wz" v-if="itemsx.classify==3">{{itemsx.testName}} </view> <view class="view_first_wz" v-if="itemsx.classify==4"> - {{itemsx.moduleName}}-{{itemsx.partName}}</view> + {{itemsx.moduleName}}-{{itemsx.partName}} + </view> <view class="changeable greenish" v-if="itemsx.classify==1">听力</view> <view class="changeable yellow" v-if="itemsx.classify==2">阅读</view> <view class="changeable blur" v-if="itemsx.classify==3">写作</view> @@ -117,34 +120,40 @@ </view> <veiw class="blue-green"> - <view class="blue_qs" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==1"> + <view class="blue_qs" :style="'width:' + itemsx.speedwidth + '%;'" + v-if="itemsx.classify==1"> </view> - <view class="blue_qs2" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==2"> + <view class="blue_qs2" :style="'width:' + itemsx.speedwidth + '%;'" + v-if="itemsx.classify==2"> </view> - <view class="blue_qs3" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==3"> + <view class="blue_qs3" :style="'width:' + itemsx.speedwidth + '%;'" + v-if="itemsx.classify==3"> </view> - <view class="blue_qs4" :style="'width:' + itemsx.speedwidth + '%;'" v-if="itemsx.classify==4"> + <view class="blue_qs4" :style="'width:' + itemsx.speedwidth + '%;'" + v-if="itemsx.classify==4"> </view> - <view class="text" style="z-index: 2;" v-if="itemsx.classify==1||itemsx.classify==2" > + <view class="text" style="z-index: 2;" + v-if="itemsx.classify==1||itemsx.classify==2"> {{itemsx.partName}} </view> - <view class="word" style="z-index: 2;" v-if="itemsx.classify==1||itemsx.classify==2"> + <view class="word" style="z-index: 2;" + v-if="itemsx.classify==1||itemsx.classify==2"> :{{itemsx.questionType}} </view> - <view class="text" style="z-index: 2;" v-if="itemsx.classify==3" > + <view class="text" style="z-index: 2;" v-if="itemsx.classify==3"> {{itemsx.partName}} </view> - - <view class="text" style="z-index: 2;" v-if="itemsx.classify==4" > + + <view class="text" style="z-index: 2;" v-if="itemsx.classify==4"> {{itemsx.questionName}} </view> - - <view class="word" style="z-index: 2;" v-if="itemsx.classify==4"> + + <view class="word" style="z-index: 2;" v-if="itemsx.classify==4"> : - <span v-for=" ts in itemsx.speakingType.split(',') " :key="ts"> - {{ getTypeText(ts) }} - </span> + <span v-for=" ts in itemsx.speakingType.split(',') " :key="ts"> + {{ getTypeText(ts) }} + </span> </view> </veiw> @@ -156,7 +165,7 @@ </view> </template> <view class="zhanwei" style="width: 100%;height: 50rpx;"> - + </view> </view> </view> @@ -179,18 +188,38 @@ }, methods: { - getTypeText(type) { - switch (type) { - case '1': - return '串题'+" "; - case '2': - return '跟读'+" "; - case '3': - return '模考'+" "; - default: - return '其他类型'; - } - }, + getTypeText(type) { + switch (type) { + case '1': + return '串题' + " "; + case '2': + return '跟读' + " "; + case '3': + return '模考' + " "; + default: + return '其他类型'; + } + }, + toclass(){ + uni.navigateTo({ + url: "/pages_teacher/pages_add/add_class?id=" +this.workinfo.id + + }).then(res => { + + }).catch(err => { + + }); + }, + tostu(){ + uni.navigateTo({ + url: "/pages_teacher/teacher_class/class_members?id=" + this.workinfo.id + + }).then(res => { + + }).catch(err => { + + }); + }, getworklist() { this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record/detail?workId=${this.id}`) .then(res => { @@ -199,17 +228,17 @@ if (res.code == 0) { this.workinfo = res.data this.uploadspeath = (this.workinfo.doneNum / this.workinfo.totalNum) * 100; - - let json = JSON.stringify(this.workinfo ) - - for (const paper of this.workinfo.papers) { - // Loop through items in each paper - for (const item of paper.items) { - // Calculate speedwidth and add it to the item - item.speedwidth = (item.doneNum / item.totalNum) * 100; - } - } - + + let json = JSON.stringify(this.workinfo) + + for (const paper of this.workinfo.papers) { + // Loop through items in each paper + for (const item of paper.items) { + // Calculate speedwidth and add it to the item + item.speedwidth = (item.doneNum / item.totalNum) * 100; + } + } + // this.orgworkinfo = JSON.parse(JSON.stringify(res.data)); // this.classlist = res.data.list // this.isloding = false @@ -231,7 +260,7 @@ .title { margin-top: 32rpx; font-size: 40rpx; - font-family: 'YOUSHEBIAOTIHEI-2', 'YOUSHEBIAOTIHEI-2'; + font-family: 'YOUSHEBIAOTIHEI-2', 'YOUSHEBIAOTIHEI-2'; font-weight: 400; color: #2E4975; } @@ -439,12 +468,13 @@ font-family: 'PingFang', 'PingFang'; font-weight: 500; color: #2E4975; - + overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } - .word{ + + .word { z-index: 2; font-size: 24rpx; font-family: 'PingFang', 'PingFang';