980 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			980 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <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>
 | ||
| 			<view class="echarts">
 | ||
| 				<!-- <mpvue-echarts id="main" ref="pieChart" :echarts="echarts" @onInit="initChart" /> -->
 | ||
| 				<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>
 | ||
| 				</view>
 | ||
| 				<view class="infobox">
 | ||
| 
 | ||
| 					<view class="infobox_top">
 | ||
| 						<view class="infobox_top_left">
 | ||
| 							<view class="infobox_top_lefttop">
 | ||
| 								今日学习(分)
 | ||
| 							</view>
 | ||
| 							<view class="infobox_top_leftbot">
 | ||
| 								320
 | ||
| 							</view>
 | ||
| 						</view>
 | ||
| 						<view class="infobox_top_right">
 | ||
| 							<view class="infobox_top_righttop">
 | ||
| 								较昨日
 | ||
| 							</view>
 | ||
| 							<view class="infobox_top_rightbot">
 | ||
| 								20%
 | ||
| 							</view>
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 					<view class="infobox_bot">
 | ||
| 						<view class="infobox_bot_cont">
 | ||
| 							<view class="infobox_bot_cont_top">
 | ||
| 								总学习(时)
 | ||
| 							</view>
 | ||
| 							<view class="infobox_bot_cont_bot">
 | ||
| 								320
 | ||
| 							</view>
 | ||
| 						</view>
 | ||
| 						<view class="infobox_bot_cont">
 | ||
| 							<view class="infobox_bot_cont_top">
 | ||
| 								今日做题(道)
 | ||
| 							</view>
 | ||
| 							<view class="infobox_bot_cont_bot">
 | ||
| 								4300
 | ||
| 							</view>
 | ||
| 						</view>
 | ||
| 						<view class="infobox_bot_cont">
 | ||
| 							<view class="infobox_bot_cont_top">
 | ||
| 								今日问AI(次)
 | ||
| 							</view>
 | ||
| 							<view class="infobox_bot_cont_bot">
 | ||
| 								43
 | ||
| 							</view>
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="study_info_box">
 | ||
| 
 | ||
| 				<view class="study_info_top">
 | ||
| 					<view class="study_info_top_left">
 | ||
| 						作业完成情况
 | ||
| 					</view>
 | ||
| 					<view class="study_info_top_right">
 | ||
| 						本周
 | ||
| 						<view class="iconfont icon-arow_down"></view>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="study_info_cont_box">
 | ||
| 
 | ||
| 					<view class="study_info_cont">
 | ||
| 						<view class="data">Mon</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">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">
 | ||
| 				<view class="work_info_top_text">
 | ||
| 					作业记录
 | ||
| 				</view>
 | ||
| 				<view class="work_info_top_right">
 | ||
| 					作业记录
 | ||
| 					<view class="iconfont icon-arow_down"></view>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="work_card">
 | ||
| 				<view class="work_card_top">
 | ||
| 					<view class="work_card_top_left">
 | ||
| 						<view class="work_card_top_left_img">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/u07sCQb6mW6OSamVr1Va"></image>
 | ||
| 						</view>
 | ||
| 						课后作业
 | ||
| 					</view>
 | ||
| 					<view class="work_card_top_right">
 | ||
| 						进行中
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_cont_box">
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_info_box">
 | ||
| 					<view class="work_card_info_top">
 | ||
| 						<view class="work_card_info_topimg">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/uw2jJ5BraHhwDDaIZ0MC"></image>
 | ||
| 						</view>
 | ||
| 						描述
 | ||
| 					</view>
 | ||
| 					<view class="work_card_info_bot">
 | ||
| 						最好在中午十二点之前完成交上作业,过期不候
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_info_box">
 | ||
| 					<view class="work_card_info_top">
 | ||
| 						<view class="work_card_info_topimg">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/uhApaomh5maFP29oecp3">
 | ||
| 
 | ||
| 							</image>
 | ||
| 						</view>
 | ||
| 						时间
 | ||
| 					</view>
 | ||
| 
 | ||
| 					<view class="work_card_info_bot">
 | ||
| 						02-12 12:00
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<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">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/u07sCQb6mW6OSamVr1Va"></image>
 | ||
| 						</view>
 | ||
| 						课后作业
 | ||
| 					</view>
 | ||
| 					<view class="work_card_top_right"
 | ||
| 						  :class="isalready == true ? 'act2' : ''">
 | ||
| 						进行中
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_cont_box">
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 					<view class="work_card_cont">
 | ||
| 						<view class="work_card_cont_point"></view>
 | ||
| 						<view class="work_card_cont_text">
 | ||
| 							IELTS 18-Test 2-Part 1
 | ||
| 						</view>
 | ||
| 						<view class="work_card_cont_tag">
 | ||
| 							听力
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_info_box">
 | ||
| 					<view class="work_card_info_top">
 | ||
| 						<view class="work_card_info_topimg">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/uw2jJ5BraHhwDDaIZ0MC"></image>
 | ||
| 						</view>
 | ||
| 						描述
 | ||
| 					</view>
 | ||
| 					<view class="work_card_info_bot">
 | ||
| 						最好在中午十二点之前完成交上作业,过期不候
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 				<view class="work_card_info_box">
 | ||
| 					<view class="work_card_info_top">
 | ||
| 						<view class="work_card_info_topimg">
 | ||
| 							<image src="https://file.langsi.online/yasiimg/web/static/uhApaomh5maFP29oecp3">
 | ||
| 
 | ||
| 							</image>
 | ||
| 						</view>
 | ||
| 						时间
 | ||
| 					</view>
 | ||
| 
 | ||
| 					<view class="work_card_info_bot">
 | ||
| 						02-12 12:00
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 		</view>
 | ||
| 	</view>
 | ||
| </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: { // 图例组件
 | ||
| 
 | ||
| 				},
 | ||
| 				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: { // 折线拐点标志的样式。
 | ||
| 
 | ||
| 						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,
 | ||
| 								}
 | ||
| 							},
 | ||
| 							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
 | ||
| 		},
 | ||
| 
 | ||
| 		changedata() {
 | ||
| 			this.sdydata = [];
 | ||
| 
 | ||
| 			for (let i = 0; i < 10; i++) {
 | ||
| 				const isStudy = Math.random() < 0.5;
 | ||
| 				let totalNum = "0";
 | ||
| 				let alreadyNum = "0";
 | ||
| 
 | ||
| 				if (isStudy) {
 | ||
| 					totalNum = String(Math.floor(Math.random() * 100));
 | ||
| 					alreadyNum = String(Math.floor(Math.random() * (parseInt(totalNum) + 1)));
 | ||
| 				}
 | ||
| 
 | ||
| 				this.sdydata.push({
 | ||
| 					isStudy,
 | ||
| 					totalNum,
 | ||
| 					alreadyNum,
 | ||
| 				});
 | ||
| 			}
 | ||
| 
 | ||
| 			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;
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| .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;
 | ||
| 		}
 | ||
| 
 | ||
| 		.infobigbox {
 | ||
| 			width: 686rpx;
 | ||
| 			position: relative;
 | ||
| 
 | ||
| 			.logo {
 | ||
| 				position: absolute;
 | ||
| 				left: 20rpx;
 | ||
| 				top: -342rpx;
 | ||
| 				width: 220rpx;
 | ||
| 				height: 485.82rpx;
 | ||
| 				z-index: 0 !important;
 | ||
| 			}
 | ||
| 
 | ||
| 			.infobox {
 | ||
| 				position: relative;
 | ||
| 				width: 686rpx;
 | ||
| 
 | ||
| 				background: rgba(255, 255, 255, 0.7);
 | ||
| 				border-radius: 20rpx 20rpx 20rpx 20rpx;
 | ||
| 
 | ||
| 				border: 2rpx solid #FFFFFF;
 | ||
| 				//  z-index: 999;
 | ||
| 
 | ||
| 				.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_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 {
 | ||
| 							margin-top: 4rpx;
 | ||
| 							font-size: 40rpx;
 | ||
| 							font-family:'PingFang','PingFang';
 | ||
| 							font-weight: 800;
 | ||
| 							color: #F18F21;
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				.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_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;
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 
 | ||
| 		.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;
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 			.study_info_cont_box {
 | ||
| 				margin-top: 32rpx;
 | ||
| 				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;
 | ||
| 				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;
 | ||
| 		}
 | ||
| 	}
 | ||
| }</style>
 | 
