smartmeter-app/pages/index/index.vue
2024-01-15 21:29:11 +08:00

554 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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) {
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
}
})
} else {
console.log('登录失败!', res.errMsg)
}
},
fail(err) {
console.log(err)
}
})
},
getUserInfo(e) {
wx.login({
success(res) {
if (res.code) {
console.log('登录!', res)
wx.getUserInfo({
success(rrr) {
console.log("xxxxx", rrr)
//发起网络请求
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>