579 lines
12 KiB
Vue
579 lines
12 KiB
Vue
<template>
|
||
<!-- 头部代码 -->
|
||
<view class="view_by">
|
||
<u-navbar :is-back="false" title='首页' title-color="#2E4975" :border-bottom="false" :background="true"
|
||
id="navbar">
|
||
</u-navbar>
|
||
<view class="noinfo">
|
||
<view class="noinfo_tit">
|
||
当前暂无学习数据,快去布置作业吧!
|
||
</view>
|
||
<view class="noinfo_btn">
|
||
去安排
|
||
<image src="https://file.langsi.online/yasiimg/web/static/urw7xsodoO8Ay2ZWizL4" mode=""></image>
|
||
</view>
|
||
</view>
|
||
<view class="top_message" v-if="false">
|
||
<view class="top_message_left">
|
||
<view class="top_message_left_top">
|
||
32
|
||
</view>
|
||
<view class="top_message_left_bot">
|
||
已完成人数(人)
|
||
</view>
|
||
</view>
|
||
<view class="top_message_cent">
|
||
|
||
</view>
|
||
<view class="top_message_right">
|
||
<view class="top_message_right_top">
|
||
90%
|
||
</view>
|
||
<view class="top_message_right_bot">
|
||
已完成作业正确率
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="work_msa">
|
||
<view class="work_img">
|
||
<image src="https://file.langsi.online/yasiimg/web/static/ukr9UZt8xuv2DgcwkWCq" mode=""></image>
|
||
</view>
|
||
<view class="work_msa_top">
|
||
<view class="work_msa_top_left">
|
||
作业完成情况
|
||
</view>
|
||
<view class="work_msa_top_right">
|
||
本周<!-- <view class="iconfont icon-arrow-down"></view> -->
|
||
</view>
|
||
</view>
|
||
<view class="echarts">
|
||
<!-- <mpvue-echarts id="main" ref="pieChart" :echarts="echarts" @onInit="initChart" /> -->
|
||
<l-echart ref="chart" @finished="initChart"></l-echart>
|
||
</view>
|
||
</view>
|
||
<div class="data">
|
||
8月31日<view class="iconfont icon-arrow-down"></view>
|
||
</div>
|
||
<view class="class_infobox">
|
||
<view class="class_info" style="width:80rpx ;">
|
||
|
||
<view class="class_info_bot">
|
||
21
|
||
</view>
|
||
<view class="class_info_top">
|
||
完成人数
|
||
</view>
|
||
</view>
|
||
<view class="class_info">
|
||
<view class="class_info_bot">
|
||
6
|
||
</view>
|
||
<view class="class_info_top">
|
||
平均成绩/分
|
||
</view>
|
||
|
||
</view>
|
||
<view class="class_info">
|
||
|
||
<view class="class_info_bot">
|
||
80%
|
||
|
||
</view>
|
||
<view class="class_info_top">
|
||
作业正确率
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<div class="card">
|
||
<view class="card_left">
|
||
<view class="stu_img">
|
||
<image src="https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49" mode=""></image>
|
||
</view>
|
||
<view class="stu_info">
|
||
<view class="stu_info_top">
|
||
口语单科模考
|
||
</view>
|
||
<view class="stu_info_bot">
|
||
李斯丹妮
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="card_right">
|
||
<view class="card_right_top">
|
||
正确率 80%
|
||
</view>
|
||
<view class="card_right_bot">
|
||
2023/02/23 12:00
|
||
</view>
|
||
</view>
|
||
</div>
|
||
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">xxxxxxxxxxxxxxxx</button>
|
||
</view>
|
||
|
||
</template>
|
||
|
||
<script>
|
||
import * as echarts from '@/uni_modules/lime-echart/static/echarts.min'
|
||
import LEchart from '@/uni_modules/lime-echart/components/l-echart/l-echart.vue';
|
||
export default {
|
||
components: {
|
||
LEchart
|
||
},
|
||
data() {
|
||
return {
|
||
flag: true
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.getUserInfo()
|
||
},
|
||
methods: {
|
||
getPhoneNumber(e) {
|
||
let that = this
|
||
console.log("eeeeeeee", e)
|
||
wx.login({
|
||
success(res) {
|
||
if (res.code) {
|
||
console.log('登录!', res)
|
||
|
||
//发起网络请求
|
||
// wx.request({
|
||
// url: 'https://api.admin-v2.langsi.online/admin-api/system/auth/mini-login',
|
||
// header: {
|
||
// "Tenant-Id": 1
|
||
// },
|
||
// method: "POST",
|
||
// data: {
|
||
// loginCode: res.code,
|
||
// phoneCode: e.detail.code,
|
||
// encryptedData: e.detail.encryptedData,
|
||
// iv: e.detail.iv
|
||
// }
|
||
// })
|
||
let data ={
|
||
loginCode: res.code,
|
||
phoneCode: e.detail.code,
|
||
encryptedData: e.detail.encryptedData,
|
||
iv: e.detail.iv
|
||
}
|
||
that.$u.post('https://api.admin-v2.langsi.online/admin-api/system/auth/mini-login',data).then(res => {
|
||
uni.setStorageSync('token','Bearer '+ res.data.accessToken);
|
||
|
||
})
|
||
|
||
} else {
|
||
console.log('登录失败!', res.errMsg)
|
||
}
|
||
},
|
||
fail(err) {
|
||
console.log(err)
|
||
}
|
||
})
|
||
},
|
||
getUserInfo(e) {
|
||
let that = this
|
||
wx.login({
|
||
success(res) {
|
||
if (res.code) {
|
||
console.log('登录!', res)
|
||
|
||
wx.getUserInfo({
|
||
success(rrr) {
|
||
console.log("xxxxx", rrr)
|
||
let data ={
|
||
loginCode: res.code,
|
||
encryptedData: rrr.encryptedData,
|
||
iv: rrr.iv
|
||
}
|
||
that.$u.post('https://api.admin-v2.langsi.online/admin-api/system/auth/mini-login',data).then(res => {
|
||
if (res.code == 200) {
|
||
|
||
uni.setStorageSync('token','Bearer '+ res.data.accessToken);
|
||
} else {
|
||
|
||
}
|
||
|
||
})
|
||
//发起网络请求
|
||
// wx.request({
|
||
// url: 'https://api.admin-v2.langsi.online/admin-api/system/auth/mini-login',
|
||
// header: {
|
||
// "Tenant-Id": 1
|
||
// },
|
||
// method: "POST",
|
||
// data: {
|
||
// loginCode: res.code,
|
||
// encryptedData: rrr.encryptedData,
|
||
// iv: rrr.iv
|
||
// }
|
||
// })
|
||
|
||
}
|
||
})
|
||
|
||
|
||
} else {
|
||
console.log('登录失败!', res.errMsg)
|
||
}
|
||
}
|
||
})
|
||
},
|
||
// async userlogin() {
|
||
// let code = await this.wxLogin();
|
||
// console.log(code);
|
||
// let data={
|
||
// loginCode:code
|
||
// }
|
||
// this.$u.post('https://api.admin-v2.langsi.online/admin-api/system/auth/mini-login',data).then(res => {
|
||
// if (res.code == 10003) {
|
||
// // console.log("新用户登录")
|
||
// uni.setStorageSync('token','Bearer '+ res.data);
|
||
// this.getuser()
|
||
// } else if (res.code == 200) {
|
||
// console.log("老用户登录", res.data)
|
||
// uni.setStorageSync('token','Bearer '+ res.data);
|
||
// this.isLogin = true
|
||
// this.getuser()
|
||
// } else if (res.code == 30003) {
|
||
// this.userlogin()
|
||
// }
|
||
// })
|
||
// uni.hideLoading();
|
||
// },
|
||
// 获取个人信息
|
||
async getuser() {
|
||
await this.$u.get('/app-api/user/info').then(res => {
|
||
if (res.code == 200) {
|
||
if (res.data.headImgUrl == "") {
|
||
this.userlogin()
|
||
}
|
||
this.userInfo = res.data
|
||
// this.getstatistics()
|
||
} else {
|
||
this.userlogin()
|
||
}
|
||
|
||
})
|
||
},
|
||
async initChart() {
|
||
let _this = this
|
||
|
||
const option = {
|
||
grid: {
|
||
left: 0,
|
||
right: 0,
|
||
top: 10,
|
||
bottom: 0,
|
||
containLabel: true,
|
||
},
|
||
xAxis: {
|
||
type: 'category',
|
||
data: ['Mon', '', 'Wed', '', 'Fri', '', 'Sun']
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
min: 0,
|
||
max: 100,
|
||
interval: 20,
|
||
axisLabel: {
|
||
formatter: '{value}%'
|
||
}
|
||
},
|
||
series: [{
|
||
data: [90, 45, 66, 82, 37, 65, 40],
|
||
type: 'bar',
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#2D7CE6',
|
||
barBorderRadius: [5, 5, 0, 0] // 设置四个角的半径,都为10像素
|
||
}
|
||
}
|
||
}]
|
||
};
|
||
|
||
|
||
const chart = await this.$refs.chart.init(echarts);
|
||
chart.setOption(option)
|
||
//return chart
|
||
},
|
||
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
page {
|
||
background: linear-gradient(180deg, #E1EEFF 0%, #FFFFFF 100%);
|
||
}
|
||
|
||
.view_by {
|
||
padding: 0 32rpx;
|
||
|
||
.noinfo {
|
||
margin-top: 62rpx;
|
||
margin-left: 186rpx;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
|
||
.noinfo_tit {
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: #627698;
|
||
}
|
||
|
||
.noinfo_btn {
|
||
margin-top: 18rpx;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 160rpx;
|
||
height: 56rpx;
|
||
background: #2D7CE6;
|
||
border-radius: 86rpx 86rpx 86rpx 86rpx;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: #FFFFFF;
|
||
|
||
image {
|
||
margin-left: 8rpx;
|
||
width: 16rpx;
|
||
height: 16rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.top_message {
|
||
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
justify-content: space-between;
|
||
|
||
.top_message_left {
|
||
margin-left: 60rpx;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
|
||
.top_message_left_top {
|
||
width: 100%;
|
||
text-align: center;
|
||
font-size: 76rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
}
|
||
|
||
.top_message_left_bot {
|
||
width: 100%;
|
||
text-align: center;
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
}
|
||
}
|
||
|
||
.top_message_cent {
|
||
width: 0;
|
||
height: 146rpx;
|
||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||
margin-left: 2rpx;
|
||
border: 2rpx solid rgba(0, 0, 0, 0.11);
|
||
}
|
||
|
||
.top_message_right {
|
||
margin-right: 60rpx;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
|
||
.top_message_right_top {
|
||
width: 100%;
|
||
text-align: center;
|
||
font-size: 76rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
}
|
||
|
||
.top_message_right_bot {
|
||
width: 100%;
|
||
text-align: center;
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
}
|
||
}
|
||
}
|
||
|
||
.work_msa {
|
||
position: relative;
|
||
padding: 32rpx;
|
||
margin-top: 32rpx;
|
||
width: 686rpx;
|
||
height: 459rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
|
||
.work_img {
|
||
position: absolute;
|
||
left: 22rpx;
|
||
top: -190rpx;
|
||
height: 190rpx;
|
||
width: 145.28rpx;
|
||
}
|
||
|
||
.work_msa_top {
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
justify-content: space-between;
|
||
|
||
// justify-content: center;
|
||
.work_msa_top_left {
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
}
|
||
|
||
.work_msa_top_right {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: nowrap;
|
||
font-size: 24rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: rgba(46, 73, 117, 0.65);
|
||
|
||
.icon-arrow-down {
|
||
margin-left: 8rpx;
|
||
font-size: 24rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.echarts {
|
||
// width: 100%;
|
||
// height: 80%;
|
||
width: 622rpx;
|
||
height: 350rpx;
|
||
}
|
||
|
||
.data {
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
margin-top: 32rpx;
|
||
font-size: 24rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
|
||
.icon-arrow-down {
|
||
color: #2E4975;
|
||
margin-left: 8rpx;
|
||
font-size: 24rpx;
|
||
}
|
||
}
|
||
|
||
.class_infobox {
|
||
margin-top: 20rpx;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
justify-content: space-around;
|
||
width: 686rpx;
|
||
height: 128rpx;
|
||
background: linear-gradient(179deg, rgba(255, 237, 223, 0.65) 0%, #FFFFFF 100%);
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
|
||
.class_info {
|
||
width: 110rpx;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
|
||
.class_info_top {
|
||
margin-top: 12rpx;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: rgba(7, 47, 90, 0.5);
|
||
}
|
||
|
||
.class_info_bot {
|
||
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 800;
|
||
color: #2D7CE6;
|
||
}
|
||
}
|
||
}
|
||
|
||
.card {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-top: 20rpx;
|
||
padding: 24rpx;
|
||
width: 686rpx;
|
||
height: 124rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
|
||
.card_left {
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
|
||
.stu_img {
|
||
width: 76rpx;
|
||
height: 76rpx;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.stu_info {
|
||
margin-left: 16rpx;
|
||
|
||
.stu_info_top {
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: bold;
|
||
color: #072F5A;
|
||
}
|
||
|
||
.stu_info_bot {
|
||
margin-top: 4rpx;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: rgba(46, 73, 117, 0.5);
|
||
}
|
||
}
|
||
}
|
||
|
||
.card_right {
|
||
|
||
.card_right_top {
|
||
text-align: right;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: #F18F21;
|
||
}
|
||
|
||
.card_right_bot {
|
||
margin-top: 4rpx;
|
||
text-align: right;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang', 'PingFang';
|
||
font-weight: 500;
|
||
color: rgba(7, 47, 90, 0.4);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style> |