Commit efdb686c authored by aifen@azjy1.onexmail.com's avatar aifen@azjy1.onexmail.com

Merge branch 'develop' into uat

parents 297dada9 a836e44d
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,10 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="./faceico.ico"/>
<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="0">
<link rel="shortcut icon" type="image/x-icon" href="./static/faceico.ico"/>
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
......
......@@ -8,6 +8,11 @@
},
onHide: function() {
console.log('App Hide')
},
onPageNotFound: function(res) {
uni.redirectTo({
url: "/pages/NotFound/NotFound"
})
}
}
</script>
......
......@@ -374,7 +374,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/TemperatureRecords/TemperatureStatistics/TemperatureStatistics",
"style": {
"navigationBarTitleText": "体温记录",
......@@ -382,7 +382,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/TemperatureRecords/HighTemperature/HighTemperature",
"style": {
"navigationBarTitleText": "高温",
......@@ -390,7 +390,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/TemperatureRecords/LowTemperature/LowTemperature",
"style": {
"navigationBarTitleText": "低温",
......@@ -398,7 +398,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/TemperatureRecords/NormalTemperatrue/NormalTemperatrue",
"style": {
"navigationBarTitleText": "正常",
......@@ -406,7 +406,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/TemperatureRecords/Undetected/Undetected",
"style": {
"navigationBarTitleText": "未测量",
......@@ -414,7 +414,7 @@
"enablePullDownRefresh": false
}
},{
}, {
"path": "pages/SchoolReport/SchoolReport",
"style": {
"navigationBarTitleText": "校园报告",
......@@ -424,6 +424,15 @@
}
, {
"path": "pages/NotFound/NotFound",
"style": {
"navigationBarTitleText": "抱歉!没有找到您想要的资源",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
......
<template>
<view class="noData hideToShow" :style="{ backgroundColor: bgColor }">
<view class="image">
<image :src="noDataImg"></image>
</view>
<!-- 网络连接失败默认显示内容 -->
<view class="content">
<text class="title" :style="{ color: mainColor }">不存在的内容</text>
<text class="desc" :style="{ color: viceColor }">没有找到您想要的东西</text>
</view>
<!-- 自定义内容 -->
<slot />
</view>
</template>
<script>
export default {
name: "NotFound",
props: {
isShow: {
type: Boolean,
default: false
},
/* 背景颜色自定义 */
bgColor: {
type: String,
default: '#ffffff'
},
/* 标题颜色自定义 */
mainColor: {
type: String,
default: '#373a40'
},
/* 描述颜色自定义 */
viceColor: {
type: String,
default: '#8b8b8b'
},
// 是否开启自定义
custom: {
type: false,
default: false
}
},
data() {
return {
type: '',
netType: "",
mainText: '网络居然崩溃了',
viceText: '别紧张,去检测一下网络设置',
netWorkImg: '/static/images/noNetWork.png',
noDataImg: '/static/images/notFound.png'
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.noData {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
padding-top: 400rpx;
.image {
width: 187upx;
height: 144upx;
image {
width: 100%;
height: 100%;
}
}
.content {
width: 100%;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
letter-spacing: 1upx;
.title {
font-size: 36upx;
}
.desc {
font-size: 28upx;
margin-top: 6upx;
}
.btn {
width: 160upx;
height: 65upx;
color: #868d91;
font-size: 24upx;
margin-top: 34upx;
border-radius: 36upx;
border: 1upx solid #d4d4d4;
}
.btn::after {
border: none;
}
}
}
</style>
<template>
<view class="tainer" :style="{height:containerHeight+'rpx'}">
<view>
<view v-if="showReport">
<view class="school-report-header">
<view class="school-report-header-item">
<view class="user-avatar">
......@@ -41,15 +41,18 @@
<view class="school-report-context">
<view class="school-report-context-tab">
<view class="school-report-context-tab-item">
<view class="school-report-context-tab-item-one active">
<view class="school-report-context-tab-item-one" :class="tabIndex==1?'active':''"
@tap="tabTap(1)">
<text>消费报告</text>
</view>
<!-- <view class="school-report-context-tab-item-one">
<text>门禁报告</text>
<view v-if="isAttendanceOpen" class="school-report-context-tab-item-one"
:class="tabIndex==2?'active':''" @tap="tabTap(2)">
<text>出入校报告</text>
</view>
<view class="school-report-context-tab-item-one">
<view v-if="isPubTalkOpen" class="school-report-context-tab-item-one"
:class="tabIndex==3?'active':''" @tap="tabTap(3)">
<text>公话报告</text>
</view> -->
</view>
</view>
<view class="school-report-context-tab-item-two">
<view class="share-button" @tap="shareHandler">
......@@ -61,13 +64,14 @@
</view>
</view>
</view>
<view class="school-report-context-bgImg">
<view :class="['consumer-report-bgImg','attendance-report-bgImg','pubTalk-report-bgImg'][tabIndex-1]">
</view>
<view class="school-report-context-card">
<view class="school-report-context-card-one">
<view class="school-report-context-card-one-img">
<view class="school-report-context-card-one" :style="{height:[598,256,525][tabIndex-1]+'rpx'}">
<view :class="['consumer-report-img','attendance-report-img','pubTalk-report-img'][tabIndex-1]">
</view>
<view class="school-report-context-card-one-context">
<!-- 消费报告 -->
<view v-show="tabIndex==1" class="school-report-context-card-one-context">
<view class="school-report-context-card-one-context-item">
<view class="school-report-context-card-one-context-dot">
<view class="school-report-context-card-one-context-dot-item">
......@@ -88,7 +92,7 @@
</view>
</view>
<view class="school-report-context-card-one-context-txt">
<text v-if="isEatLow">食堂消费占比<text
<text v-if="isEatLow">正餐消费占比<text
class="txt-important-two">过低</text>,请及时调整饮食习惯</text>
<text v-else>饮食较<text class="txt-important-two">均衡</text>,继续保持哦</text>
</view>
......@@ -99,7 +103,7 @@
</view>
</view>
<view class="school-report-context-card-one-context-txt">
消费总额 <text class="txt-important">{{consumerAmountObj.consumerAmount}}</text>元,超过全校
消费 <text class="txt-important">{{consumerAmountObj.consumerAmount}}</text>元,超过全校
<text class="txt-important">{{consumerAmountObj.exceedRate}}%</text>
的同学<text v-if="isReasonable">,请及时评估生活费是否合理</text>
</view>
......@@ -117,9 +121,66 @@
</view>
</view>
</view>
<!-- 出入校报告 -->
<view v-show="tabIndex==2" class="attendance-report-context-card-one-context">
<view class="attendance-report-context-card-one-context-item">
<text v-if="attendanceReport.abnormalNum&&attendanceReport.abnormalNum!=-1"><text
class="txt-important">{{attendanceReport.abnormalNum}}</text>天出勤异常,请及时关注</text>
<text v-else-if="attendanceReport.abnormalNum==-1">风雨无阻上学路,继续加油哦</text>
<text v-else>恭喜<text
class="txt-important">{{userInfo.userName}}</text>荣获全勤好学生,风雨无阻上学路</text>
</view>
</view>
<view class="school-report-context-card-two">
<!-- 公话报告 -->
<view v-show="tabIndex==3" class="pubTalk-report-context-card-one-context">
<view class="pubTalk-report-context-card-one-context-item" v-if="pubTalkReport.talkText1">
<view class="pubTalk-report-context-card-one-context-dot">
<view class="pubTalk-report-context-card-one-context-dot-item">
</view>
</view>
<view class="pubTalk-report-context-card-one-context-txt">
<text>最喜欢和<text class="txt-important">{{pubTalkReport.talkText1}}</text>沟通,共通话<text
class="txt-important">{{pubTalkReport.talkText2}}{{pubTalkReport.talkText3}}分钟</text>,超过全校<text
class="txt-important">{{pubTalkReport.talkText4}}</text>的同学</text>
</view>
</view>
<view class="pubTalk-report-context-card-one-context-item" v-else>
<view class="pubTalk-report-context-card-one-context-dot">
<view class="pubTalk-report-context-card-one-context-dot-item">
</view>
</view>
<view class="pubTalk-report-context-card-one-context-txt">
<text class="txt-important">有事没事记得和家人多联系哦~</text>
</view>
</view>
<view class="pubTalk-report-context-card-one-context-item" v-if="pubTalkReport.talkText5">
<view class="pubTalk-report-context-card-one-context-dot">
<view class="pubTalk-report-context-card-one-context-dot-item">
</view>
</view>
<view class="pubTalk-report-context-card-one-context-txt">
<text><text class="txt-important">{{pubTalkReport.talkText5}}</text>沟通最少,共通话<text
class="txt-important">{{pubTalkReport.talkText6}}{{pubTalkReport.talkText7}}分钟</text>,超过全校<text
class="txt-important">{{pubTalkReport.talkText8}}</text>的同学</text>
</view>
</view>
<view
class="pubTalk-report-context-card-one-context-item pubTalk-report-context-card-one-context-item-last"
v-if="pubTalkReport.talkText9">
<view class="pubTalk-report-context-card-one-context-dot">
<view class="pubTalk-report-context-card-one-context-dot-item">
</view>
</view>
<view class="pubTalk-report-context-card-one-context-txt">
<text><text
class="txt-important">{{pubTalkReport.talkText9}}</text>是默默的守护,有时也不要忘记多和<text
class="txt-important">{{pubTalkReport.talkText9}}</text>进行交流</text>
</view>
</view>
</view>
</view>
<!-- 消费报告 -->
<view v-show="tabIndex==1" class="school-report-context-card-two">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>就餐情况</text>
......@@ -128,7 +189,7 @@
<view class="school-report-context-card-two-conclusion">
<view class="school-report-context-card-two-conclusion-txt">
<text>{{['',''][reportTypeIndex]}}<text
class="abnormal-days">{{diningSituations.notRepastDay}}</text>就餐异常</text>
class="abnormal-days">{{diningSituations.notRepastDay}}</text>未就餐</text>
</view>
<view class="school-report-context-card-two-conclusion-logo">
<view class="school-report-context-card-two-conclusion-logo-item">
......@@ -142,10 +203,10 @@
</view>
</view>
<view class="school-report-context-card-two-calendar">
<van-calendar :formatter="formatter" :min-date="minDate" :max-date="maxDate"
:default-date="minDate" :show-title="false" :show-subtitle="false" :show-mark="false"
:poppable="false" :show-confirm="false" :style="{ height: '575rpx' }"
@select="dateSelect" />
<van-calendar v-show="tabIndex==1" :formatter="formatter" :min-date="minDate"
:max-date="maxDate" :default-date="minDate" :row-height="44" :show-title="false"
:show-subtitle="false" :show-mark="false" :poppable="false" :show-confirm="false"
:style="{ height: '575rpx' }" @select="dateSelect" />
</view>
<view class="school-report-context-card-two-details">
<view class="school-report-context-card-two-details-item">
......@@ -157,11 +218,12 @@
<text>早餐</text>
</view>
<view class="school-report-context-card-two-details-meal-logo">
<view v-if="diningSituations.notRepastDetails.breakfastStatus"
<view v-if="diningSituations.notRepastDetails.breakfastStatus==1"
class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image>
</view>
<view v-else class="school-report-context-card-two-details-meal-noeat">
<view v-else-if="diningSituations.notRepastDetails.breakfastStatus==0"
class="school-report-context-card-two-details-meal-noeat">
<text></text>
</view>
</view>
......@@ -170,11 +232,12 @@
</view>
<view
class="school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-two">
<view v-if="diningSituations.notRepastDetails.lunchStatus"
<view v-if="diningSituations.notRepastDetails.lunchStatus==1"
class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image>
</view>
<view v-else class="school-report-context-card-two-details-meal-noeat">
<view v-else-if="diningSituations.notRepastDetails.lunchStatus==0"
class="school-report-context-card-two-details-meal-noeat">
<text></text>
</view>
</view>
......@@ -183,11 +246,12 @@
</view>
<view
class="school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-three">
<view v-if="diningSituations.notRepastDetails.supperStatus"
<view v-if="diningSituations.notRepastDetails.supperStatus==1"
class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image>
</view>
<view v-else class="school-report-context-card-two-details-meal-noeat">
<view v-else-if="diningSituations.notRepastDetails.supperStatus==0"
class="school-report-context-card-two-details-meal-noeat">
<text></text>
</view>
</view>
......@@ -195,7 +259,7 @@
</view>
</view>
</view>
<view v-if="isOpen" class="school-report-context-card-three">
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-three">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>消费偏好</text>
......@@ -203,7 +267,7 @@
</view>
<view class="school-report-context-card-three-conclusion">
<view class="school-report-context-card-three-conclusion-item">
<text v-if="isEatLow">食堂消费占比<text
<text v-if="isEatLow">正餐消费占比<text
class="school-report-context-card-three-conclusion-item-describe">过低</text>,请及时调整饮食习惯</text>
<text v-else>饮食较<text
class="school-report-context-card-three-conclusion-item-describe">均衡</text>,继续保持哦</text>
......@@ -212,15 +276,15 @@
<view id="consumer-preferences-pie">
</view>
</view>
<view v-if="isOpen" class="school-report-context-card-four">
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-four">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>消费总额</text>
<text>生活费额度</text>
</view>
</view>
<view class="school-report-context-card-four-conclusion">
<view class="school-report-context-card-four-conclusion-item">
<text>消费总额<text
<text>消费<text
class="consume-total">{{consumerAmountObj.consumerAmount}}</text>元,超过全校<text
class="consume-total">{{consumerAmountObj.exceedRate}}%</text>的同学<text
v-if="isReasonable">,请及时评估生活费是否合理</text></text>
......@@ -253,7 +317,7 @@
</view>
</view>
</view>
<view v-if="isOpen" class="school-report-context-card-five">
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-five">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>消费趋势</text>
......@@ -284,7 +348,195 @@
</view>
</view>
</view>
<view v-if="isOpen" class="school-report-footer">
<!-- 出入校报告 -->
<view v-show="tabIndex==2" class="attendance-report-context-card-two">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>出勤情况</text>
</view>
</view>
<view class="attendance-report-context-card-two-conclusion">
<view class="attendance-report-context-card-two-conclusion-txt">
<text v-if="attendanceReport.abnormalNum!=-1">{{['',''][reportTypeIndex]}}<text
class="abnormal-days">{{attendanceReport.abnormalNum}}</text>天出勤异常</text>
</view>
<view class="attendance-report-context-card-two-conclusion-logo">
<view class="attendance-report-context-card-two-conclusion-logo-item">
<view class="attendance-report-context-card-two-conclusion-logo-item-dot leave">
</view>
<view class="attendance-report-context-card-two-conclusion-logo-item-txt">
<text>请假</text>
</view>
</view>
<view class="attendance-report-context-card-two-conclusion-logo-item">
<view class="attendance-report-context-card-two-conclusion-logo-item-dot">
</view>
<view class="attendance-report-context-card-two-conclusion-logo-item-txt">
<text>异常</text>
</view>
</view>
</view>
</view>
<view class="attendance-report-context-card-two-calendar">
<van-calendar v-show="tabIndex==2" :formatter="formatter" :min-date="minDate"
:max-date="maxDate" :default-date="minDate" :row-height="44" :show-title="false"
:show-subtitle="false" :show-mark="false" :poppable="false" :show-confirm="false"
:style="{ height: '575rpx' }" @select="attendanceDateSelect">
<template #top-info="item">
<span v-if="item.topInfo=='请假'" class="mark-green">请假</span>
<span v-if="item.topInfo=='迟到'" class="mark-orange">迟到</span>
<span v-if="item.topInfo=='旷课'" class="mark-orange">旷课</span>
<span v-if="item.topInfo=='早退'" class="mark-orange">早退</span>
<span v-if="item.topInfo=='冠军'" class="mark-yellow">冠军</span>
</template>
</van-calendar>
</view>
</view>
<view v-if="tabIndex==2&&attendanceReportDatail.length" class="attendance-report-context-details">
<view v-for="(detailItem,detailIndex) in attendanceReportDatail" :key="detailIndex">
<view v-if="detailItem.attendIntervalType&&detailItem.attendIntervalType!=-1"
class="attendance-report-context-card-two-details">
<view class="attendance-report-context-card-two-details-item">
<view class="attendance-report-context-card-two-details-time">
<view class="attendance-report-context-card-two-details-time-img">
</view>
<view class="attendance-report-context-card-two-details-time-txt txt-details">
<text>考勤时间</text>
</view>
<view class="attendance-report-context-card-two-details-time-txt">
<text>{{detailItem.attendIntervalName}}</text>
</view>
</view>
<view v-if="detailIndex==0" class="attendance-report-context-card-two-details-date">
<text>{{attendanceSituations.attendanceDate}}</text>
</view>
</view>
</view>
<view v-else-if="detailItem.attendIntervalType==-1"
class="attendance-report-context-card-two-details">
<view class="attendance-report-context-card-two-details-item">
<view class="attendance-report-context-card-two-details-time">
<view class="attendance-report-context-card-two-details-time-txt txt-details">
<text>未设置考勤时间</text>
</view>
</view>
<view class="attendance-report-context-card-two-details-date">
<text>{{attendanceSituations.attendanceDate}}</text>
</view>
</view>
</view>
<view class="attendance-report-context-card-three">
<view v-for="(item,index) in detailItem.attendDetailReportDTOList" :key="index">
<view class="attendance-report-details">
<view class="dashed-line-box">
<view v-if="index" class="dashed-line">
</view>
<view v-else class="dashed-line-first">
</view>
<view v-if="index" class="attendance-report-dot"
:style="{border:item.border}">
</view>
<view v-else class="attendance-report-dot-first"
:style="{border:item.border}">
</view>
</view>
<view class="attendance-report-details-item-box"
:style="{top: 18+index*170+'rpx'}">
<view class="attendance-report-details-item">
<view class="attendance-report-time">
<view class="attendance-report-time-txt">
<text>{{item.iotTypeName}}</text>
</view>
<view class="attendance-report-time-item">
<text>{{item.timeContent}}</text>
</view>
<view v-if="item.describeContent=='当日早到冠军'" class="early-champions">
<view class="early-champions-img">
</view>
<view class="early-champions-txt">
<text>早到冠军</text>
</view>
</view>
</view>
</view>
<view class="attendance-report-details-img-item">
<view class="attendance-report-time-details">
<view v-if="item.describeContent!='当日早到冠军'"
class="attendance-report-time-details-item">
<text>{{item.describeContent}}</text>
</view>
<view class="attendance-report-time-details-icon">
</view>
</view>
<view class="attendance-report-details-img-box">
<image v-if="item.attendImage" :src="item.attendImage" mode=""
@click="imageClick(item.attendImage)">
</image>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<van-dialog v-model="imageDialogShow" width="620rpx">
<view class="image-dialog">
<image :src="imageDialogSrc" mode=""></image>
</view>
</van-dialog>
<!-- 公话报告 -->
<view v-show="tabIndex==3" class="pubTalk-report-context-card-two">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>通话次数</text>
</view>
</view>
<view class="call-number-bar-unit">
<text>(次)</text>
</view>
<view id="call-number-bar">
</view>
</view>
<view v-show="tabIndex==3&&isPubTalkOpen" class="pubTalk-report-context-card-three">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>通话时长</text>
</view>
</view>
<view class="call-duration-bar-unit">
<text>(min)</text>
</view>
<view id="call-duration-bar">
</view>
</view>
<view v-show="tabIndex==3&&isPubTalkOpen" class="pubTalk-report-context-card-four">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>亲子留言</text>
</view>
</view>
<view class="leave-message-summary" v-if="pubTalkReport.messageText1">
<text><text class="txt-important">{{pubTalkReport.messageText1}}</text> 最喜欢和你留言,共 <text
class="txt-important">{{pubTalkReport.messageText2}}</text> 次,超过全校<text
class="txt-important">{{pubTalkReport.messageText3}}</text>的同学</text>
</view>
<view class="leave-message-summary" v-else>
<text class="txt-important">想家人了可以多多留言哦~</text>
</view>
<view class="leave-message-summary leave-message-less-summary"
v-if="pubTalkReport.messageText4">
<text><text class="txt-important">{{pubTalkReport.messageText4}}</text> 留言最少,共 <text
class="txt-important">{{pubTalkReport.messageText5}}</text> 次,超过全校<text
class="txt-important">{{pubTalkReport.messageText6}}</text>的同学</text>
</view>
<view class="leave-message-bar-unit">
<text>(次)</text>
</view>
<view id="leave-message-bar">
</view>
</view>
<view v-if="isOpen||isPubTalkOpen||isAttendanceOpen" class="school-report-footer">
<view class="school-report-footer-item">
<view class="school-report-footer-item-txt">
<text>到期后将无法查看完整报告</text>
......@@ -302,10 +554,11 @@
</view>
</view>
</view>
<view v-if="!isOpen" class="no-open">
<view v-if="flag==tabIndex" class="no-open"
:style="{height:[915,845,891][tabIndex-1]+'rpx',top:[1425,1099,1260][tabIndex-1]+'rpx'}">
<view class="no-open-solution" @tap="equityPay">
<view class="no-open-solution-txt">
<text>最低 {{memberInfo.leastAmount}}元/天开通,查看完整消费报告</text>
<text>最低{{memberInfo.leastAmount||''}}元/天开通,查看完整{{['消费','出入校','公话'][tabIndex-1]}}报告</text>
</view>
<view class="no-open-solution-item">
</view>
......@@ -317,16 +570,19 @@
<view class="open-results-items">
<view class="open-results-items-summary">
<view class="summary-item">
<text>月度消费报告</text>
<text>{{['月度消费报告','实时推送','音视频通话'][tabIndex-1]}}</text>
</view>
<view class="summary-item-icon">
<view class="summary-item-icon"
:class="['consumer-report-icon','attendance-report-icon','pubTalk-report-icon'][tabIndex-1]">
<text>+</text>
</view>
<view class="summary-item">
<text>消费总结</text>
<text>{{['消费总结','月度出入校报告','月度公话报告'][tabIndex-1]}}</text>
</view>
</view>
<view class="open-results-items-details">
<!-- 消费报告 -->
<view v-if="tabIndex==1">
<view class="open-results-items-details-item">
<view class="dining-situations-img">
</view>
......@@ -355,7 +611,7 @@
<view class="consumer-num-img">
</view>
<view class="open-results-items-details-item-txt">
<text>消费总额分析</text>
<text>生活费额度分析</text>
</view>
</view>
<view class="open-results-items-details-item">
......@@ -366,17 +622,107 @@
</view>
</view>
</view>
<!-- 出入校报告 -->
<view v-else-if="tabIndex==2">
<view class="open-results-items-details-item">
<view class="admission-notice-img">
</view>
<view class="open-results-items-details-item-txt">
<text>出入校通知</text>
</view>
<view class="admission-analysis-img">
</view>
<view class="open-results-items-details-item-txt">
<text>出勤情况分析</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="admission-record-img">
</view>
<view class="open-results-items-details-item-txt">
<text>出入校记录</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="admission-image-img">
</view>
<view class="open-results-items-details-item-txt">
<text>出入校图片</text>
</view>
</view>
</view>
<!-- 公话报告 -->
<view v-else>
<view class="open-results-items-details-item">
<view class="video-call-img">
</view>
<view class="open-results-items-details-item-txt">
<text>视频通话</text>
</view>
<view class="communication-advice-img">
</view>
<view class="open-results-items-details-item-txt">
<text>家庭沟通建议</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="voice-call-img">
</view>
<view class="open-results-items-details-item-txt">
<text>语音通话</text>
</view>
<view class="call-count-img">
</view>
<view class="open-results-items-details-item-txt">
<text>通话次数分析</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="leave-word-img">
</view>
<view class="open-results-items-details-item-txt">
<text>亲子留言</text>
</view>
<view class="call-duration-img">
</view>
<view class="open-results-items-details-item-txt">
<text>通话时长分析</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="face-call-img">
</view>
<view class="open-results-items-details-item-txt">
<text>刷脸通话</text>
</view>
<view class="leave-word-analysis-img">
</view>
<view class="open-results-items-details-item-txt">
<text>家庭留言分析</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<van-dialog class="htmlCanvas" id="htmlCanvas" ref="imgCanvas" v-model="dialogShow" show-cancel-button
style="width: 100%; max-height: 80% !important;overflow: scroll">
<view v-else class="nodata">
<view class="nodataImg">
<img style="width: 100%"
src="https://xiaopay2020.oss-cn-shenzhen.aliyuncs.com/static/weapp/images/purchaseChart.gif" />
</view>
<view class="nodataTxt">
<text>当前为使用高峰期,请稍后再试</text>
</view>
</view>
<van-dialog class="htmlCanvas" id="htmlCanvas" ref="imgCanvas" v-model="dialogShow" confirm-button-text='长按保存'
close-on-click-overlay style="width: 100%; max-height: 80% !important;overflow: scroll">
</van-dialog>
</view>
</view>
</template>
<script>
import html2cancas from "html2canvas"
var gHost = "https://" + window.location.host;
......@@ -398,10 +744,13 @@
}
// 时间处理模块
import dayjs from 'dayjs'
import moment from "moment";
export default {
name: 'SchoolReport',
data() {
return {
showReport: true,
nodataImgUrl: this.$ImgUrl,
userInfo: {},
reportTypeIndex: 0,
reportTypeArr: ['月报', '周报'],
......@@ -416,6 +765,7 @@
maxDate: new Date(),
imgUrl: '', // 存储base64图片
dialogShow: false,
tabIndex: 1,
// 就餐情况
diningSituations: {
diningSituationsDate: '',
......@@ -430,7 +780,7 @@
// 消费偏好
pieDatas: [],
isEatLow: false,
// 消费总额
// 生活费额度
consumerAmountObj: {},
isReasonable: false,
schoolAverageHeight: '',
......@@ -439,8 +789,36 @@
consumerTrend: {},
isAbnormal: false,
lineDatas: [],
// 出入校报告数据
attendanceSituations: {
attendanceDate: '',
abnomalDateList: [],
},
imageDialogShow: false,
imageDialogSrc: '',
// 公话报告数据
pubTalkReport: {
// 通话次数
callNumberInfoList: [],
// 通话时长
callDurationInfoList: [],
// 亲子留言
leaveMessageInfoList: []
},
// 出入校报告数据
attendanceReport: {
abnormalNum: 0,
abnomalDateList: [],
},
attendanceReportDatail: [],
// 会员信息
// 消费
isOpen: false,
// 出入校
isAttendanceOpen: false,
// 公话
isPubTalkOpen: false,
flag: 0,
memberInfo: {
leastAmount: '',
invalidDateStr: '',
......@@ -450,56 +828,60 @@
}
},
mounted() {
this.queryIsDredgeMember().then(() => {
if (this.isPeakPeriod()) {
this.showReport = false;
return
}
this.showReport = true;
if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isAttendanceOpen = true;
this.isPubTalkOpen = true;
} else {
this.queryIsDredgeMember(2002);
this.queryIsDredgeMember(3002);
}
// 消费报告
this.queryIsDredgeMember(1002).then(() => {
if (this.isOpen) {
this.queryMemberValidTime().then(e => {
this.queryMemberValidTime(1002).then(e => {
if (new Date(this.memberInfo.invalidDate).getTime() <= new Date('2022/06/30')
.getTime()) {
this.isOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 4200;
this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
} else {
this.queryIsDredgeMember(1).then(() => {
if (this.isOpen) {
this.queryIsDredgeMember(1002, 1).then(() => {
this.queryStudentConsumerPreference(1).then(e => this
.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
} else {
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
}
});
}
})
} else {
if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 4200;
this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
} else {
this.queryIsDredgeMember(1).then(() => {
if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
} else {
this.queryIsDredgeMember(1002, 1).then(() => {
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
}
});
}
}
});
let tmpArr = []
// 获取时间
for (let i = 0; i <= 11; i++) {
for (let i = 1; i <= 11; i++) {
let startWeek = dayjs().subtract(i, 'month').startOf('month');
let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d.getTime() ? dayjs()
.subtract(i, 'month').endOf('month') : dayjs();
......@@ -515,16 +897,165 @@
this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate);
this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex].startDate;
this.diningSituations.diningSituationsDate = this.formatDate(this.minDate);
this.attendanceSituations.attendanceDate = this.formatDate(this.minDate);
this.queryCampusStudentInfo();
let tmpDate=this.formatDateTwo(this.minDate);
let tmpDate = this.formatDateTwo(this.minDate);
this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this
.dataRangeIndex].endDate).then(()=>{
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[0];
.dataRangeIndex].endDate).then(() => {
if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[
0];
this.diningSituations.notRepastDetails = today;
} else {
this.diningSituations.notRepastDetails = {};
}
});
this.queryConsumerTrend();
},
methods: {
// 当天6:30 ~ 9:00,11:30 ~ 12:00, 17:30 ~ 19:00属于高峰期
isPeakPeriod() {
let first = this.timeIn("06:30:00", "09:00:00");
let second = this.timeIn("11:00:00", "12:00:00");
let three = this.timeIn("17:30:00", "19:00:00");
console.log(first, "first", second, "second", three, "three");
return first || second || three;
},
/*在某段时间内*/
timeIn(s, e) {
let t = moment().format("YYYY-MM-DD");
if (
moment(t + " " + s).diff(moment()) < 0 &&
moment(t + " " + e).diff(moment()) > 0
) {
return true;
}
return false;
},
tabTap: function(num) {
this.tabIndex = num;
if (num == 1) {
this.$nextTick(() => {
if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
} else {
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
}
})
} else if (num == 2) {
this.memberInfo.differDay = '';
this.memberInfo.invalidDateStr = '';
this.memberInfo.leastAmount = '';
this.queryIsDredgeMember(3002).then(() => {
if (this.isAttendanceOpen) {
if (new Date(this.memberInfo.invalidDate).getTime() <= new Date('2022/06/30')
.getTime()) {
this.isAttendanceOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.statisAttendanceAbnormal();
this.attendanceReprotDatail(this.dataRangeArr[this.dataRangeIndex].startDate)
.then(e => {
if (this.attendanceReportDatail.length) {
this.containerHeight = 2762;
} else {
this.containerHeight = 1904;
}
});
} else {
this.queryIsDredgeMember(3002, 2);
this.statisAttendanceAbnormal();
this.attendanceReprotDatail(this.dataRangeArr[this.dataRangeIndex].startDate)
.then(e => {
if (this.attendanceReportDatail.length) {
this.containerHeight = 2762;
} else {
this.containerHeight = 1904;
}
});
}
} else {
if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isAttendanceOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.statisAttendanceAbnormal();
this.attendanceReprotDatail(this.dataRangeArr[this.dataRangeIndex].startDate)
.then(e => {
if (this.attendanceReportDatail.length) {
this.containerHeight = 2762;
} else {
this.containerHeight = 1904;
}
});
} else {
this.queryIsDredgeMember(3002, 2);
}
}
})
} else {
this.memberInfo.differDay = '';
this.memberInfo.invalidDateStr = '';
this.memberInfo.leastAmount = '';
this.queryIsDredgeMember(2002).then(() => {
if (this.isPubTalkOpen) {
if (new Date(this.memberInfo.invalidDate).getTime() <= new Date('2022/06/30')
.getTime()) {
this.isPubTalkOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 3290;
this.getPubTalkReport().then(e => {
this.$nextTick(() => {
this.callNumberBarchart();
this.callDurationBarchart();
this.leaveMessageBarchart();
})
})
} else {
this.queryIsDredgeMember(2002, 3).then(() => {
this.$nextTick(() => {
this.callNumberBarchart();
this.callDurationBarchart();
this.leaveMessageBarchart();
})
});
}
} else {
if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isPubTalkOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 3290;
this.getPubTalkReport().then(e => {
this.$nextTick(() => {
this.callNumberBarchart();
this.callDurationBarchart();
this.leaveMessageBarchart();
})
})
} else {
this.queryIsDredgeMember(2002, 3).then(() => {
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
this.getPubTalkReport().then(e => {
this.$nextTick(() => {
this.callNumberBarchart();
})
})
});
}
}
})
}
},
toImage: function() {
this.$nextTick(() => {
html2cancas(document.getElementsByClassName("tainer")[0], {
......@@ -574,8 +1105,7 @@
this.dataRangeArr = tmpArr;
} else {
let tmpArr = []
if (new Date().getDate() > 5) {
for (let i = 0; i <= 11; i++) {
for (let i = 1; i <= 11; i++) {
let startWeek = dayjs().subtract(i, 'month').startOf('month');
let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d
.getTime() ?
......@@ -587,33 +1117,25 @@
endDate: endWeek.format("YYYY-MM-DD")
})
}
} else {
for (let i = 1; i <= 11; i++) {
let startWeek = dayjs().subtract(i, 'month').startOf('month');
let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d
.getTime() ?
dayjs().subtract(i, 'month').endOf('month') : dayjs();
tmpArr.push({
week: (startWeek.format("YYYY/MM/DD")) + '~' + (endWeek.format("YYYY/MM/DD")),
weekstr: (startWeek.format("MM/DD")) + '~' + (endWeek.format("MM/DD")),
startDate: startWeek.format("YYYY-MM-DD"),
endDate: endWeek.format("YYYY-MM-DD")
})
}
}
this.dataRangeArr = tmpArr;
}
this.minDate = new Date(this.dataRangeArr[this.dataRangeIndex].startDate);
this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate);
if (this.tabIndex == 1) {
this.diningSituations.diningSituationsDate = this.formatDate(this.minDate);
this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex]
.startDate;
let tmpDate=this.formatDateTwo(this.minDate);
let tmpDate = this.formatDateTwo(this.minDate);
this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this
.dataRangeIndex].endDate).then(()=>{
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[0];
.dataRangeIndex].endDate).then(() => {
if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate ===
tmpDate)[0];
this.diningSituations.notRepastDetails = today;
});;
} else {
this.diningSituations.notRepastDetails = {};
}
});
this.queryConsumerTrend();
if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this.piechart());
......@@ -622,6 +1144,19 @@
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
}
} else if (this.tabIndex == 2) {
this.attendanceSituations.attendanceDate = this.formatDate(this.minDate);
this.statisAttendanceAbnormal();
this.attendanceReprotDatail(this.dataRangeArr[this.dataRangeIndex].startDate);
} else {
this.getPubTalkReport().then(() => {
this.$nextTick(() => {
this.callNumberBarchart();
this.callDurationBarchart();
this.leaveMessageBarchart();
})
})
}
},
formatter(day) {
const year = day.date.getFullYear();
......@@ -630,6 +1165,8 @@
const date = day.date.getDate();
const datestr = date < 10 ? '0' + date : date;
const sum = year + '-' + monthstr + '-' + datestr;
if (this.tabIndex == 1) { // 消费报告
if (this.diningSituations.notRepastDetailsDTOS) {
const contrastList = this.diningSituations.notRepastDetailsDTOS.filter(e => e
.dayNotEatNumber != 0);
contrastList.forEach(item => {
......@@ -641,6 +1178,37 @@
day.className = 'notice-day'
}
})
}
} else if (this.tabIndex == 2) { // 出入校报告
if (this.attendanceReport.abnomalDateList && this.attendanceReport.abnomalDateList.length) {
const abnomalList = this.attendanceReport.abnomalDateList.filter(e => e.abnomalType == 2 || e
.abnomalType == 3 || e.abnomalType == 5);
const leaveList = this.attendanceReport.abnomalDateList.filter(e => e.abnomalType == 4);
const championList = this.attendanceReport.abnomalDateList.filter(e => e.abnomalType == 6);
// 迟到 早退 旷课
abnomalList.forEach(item => {
if (sum == item.attendDate.slice(0, 10)) {
var topInfo = item.abnomalType == 5 ? '旷课' : item.abnomaleName;
day.topInfo = topInfo;
day.className = 'late-day';
}
})
// 请假
leaveList.forEach(item => {
if (sum == item.attendDate.slice(0, 10)) {
day.topInfo = item.abnomaleName;
day.className = 'leave-day';
}
})
// 冠军
championList.forEach(item => {
if (sum == item.attendDate.slice(0, 10)) {
day.topInfo = item.abnomaleName;
day.className = 'champion-day';
}
})
}
}
return day;
},
formatDate(date) {
......@@ -653,8 +1221,16 @@
this.diningSituations.diningSituationsDate = this.formatDate(date);
var dateStr =
`${date.getFullYear()}-${date.getMonth()<9?'0'+(date.getMonth()+1):date.getMonth()+1}-${date.getDate()<10?'0'+date.getDate():date.getDate()}`;
if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === dateStr)[0];
this.diningSituations.notRepastDetails = today;
} else {
this.diningSituations.notRepastDetails = {};
}
},
attendanceDateSelect(date) {
this.attendanceSituations.attendanceDate = this.formatDate(date);
this.attendanceReprotDatail(this.formatDateTwo(date));
},
piechart: function() {
var myChart = echarts.init(document.getElementById('consumer-preferences-pie'));
......@@ -714,7 +1290,7 @@
var mySize = document.getElementById('consumer-trend-line');
mySize.style.width = 360 + 'px';
mySize.style.height = 260 + 'px';
var myChart = echarts.init(mySize);
var myLineChart = echarts.init(mySize);
var xdata = this.lineDatas.map(v => v.name);
var year = this.dataRangeArr[this.dataRangeIndex].startDate.slice(0, 4);
var month = this.dataRangeArr[this.dataRangeIndex].startDate.slice(5, 7);
......@@ -814,9 +1390,11 @@
color: 'transparent'
}
},
extraCssText: `width:109px;height:55px;line-height:33rpx;background: no-repeat center/100% url(../../static/images/consumeTrendbgm.png);
font-size:24rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;
color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
extraCssText: `width:109px;height:55px;line-height:33rpx;background: no-repeat center/100% url(./static/images/consumeTrendbgm.png);
font-size:24rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;
color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
confine: true,
position: function(pt) {
return [pt[0] - 27, pt[1] - 73];
......@@ -827,9 +1405,249 @@
}
},
};
option && myChart.setOption(option);
option && myLineChart.setOption(option);
window.addEventListener('resize', function() {
myChart.resize();
myLineChart.resize();
})
},
callNumberBarchart: function() {
var mySize = document.getElementById('call-number-bar');
mySize.style.width = 350 + 'px';
mySize.style.height = 260 + 'px';
var myCallNumberBarchart = echarts.init(mySize);
var xdata = this.pubTalkReport.callNumberInfoList.map(v => v.nickname);
var seriesData = this.pubTalkReport.callNumberInfoList.map(v => v.callNumber);
var option = {
xAxis: {
type: 'category',
data: xdata,
axisLabel: {
show: true,
interval: 0,
textStyle: {
color: 'rgba(0, 0, 0, 0.5)',
fontSize: 12
},
formatter: function(params) {
var newParamsName = "";
var tempParamsName = "";
var paramsNameNumber = params.length;
var provideNumber = 2;
var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
if (paramsNameNumber > provideNumber) {
for (var p = 0; p < rowNumber; p++) {
var tempStr = "";
var start = p * provideNumber;
var end = start + provideNumber;
if (p == rowNumber - 1) {
tempStr = params.substring(start, paramsNameNumber);
} else {
tempStr = params.substring(start, end) + "\n";
}
tempParamsName += tempStr;
}
} else {
tempParamsName = params;
}
if (tempParamsName.length > 9) {
newParamsName = tempParamsName.substring(0, 10) + '...';
} else {
newParamsName = tempParamsName;
}
return newParamsName;
}
}
},
yAxis: {
type: 'value',
min: 0,
max: function(value) {
return Math.ceil(value.max) + 1
},
minInterval: 1
},
series: [{
data: seriesData,
type: 'bar',
itemStyle: {
color: '#FF9523',
barBorderRadius: [5, 5, 0, 0],
},
label: {
show: true,
position: 'top',
color: '#FE931F',
fontSize: '14px',
formatter: (params) => {
return params.value[params.encode.x[0]];
}
},
barWidth: 25
}]
};
option && myCallNumberBarchart.setOption(option);
window.addEventListener('resize', function() {
myCallNumberBarchart.resize();
})
},
callDurationBarchart: function() {
var mySize = document.getElementById('call-duration-bar');
mySize.style.width = 340 + 'px';
mySize.style.height = 260 + 'px';
var myCallDurationBarchart = echarts.init(mySize);
var xdata = this.pubTalkReport.callDurationInfoList.map(v => v.nickname);
var seriesData = this.pubTalkReport.callDurationInfoList.map(v => v.duration);
var option = {
xAxis: {
type: 'category',
data: xdata,
axisLabel: {
show: true,
interval: 0,
textStyle: {
color: 'rgba(0, 0, 0, 0.5)',
fontSize: 12
},
formatter: function(params) {
var newParamsName = "";
var tempParamsName = "";
var paramsNameNumber = params.length;
var provideNumber = 2;
var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
if (paramsNameNumber > provideNumber) {
for (var p = 0; p < rowNumber; p++) {
var tempStr = "";
var start = p * provideNumber;
var end = start + provideNumber;
if (p == rowNumber - 1) {
tempStr = params.substring(start, paramsNameNumber);
} else {
tempStr = params.substring(start, end) + "\n";
}
tempParamsName += tempStr;
}
} else {
tempParamsName = params;
}
if (tempParamsName.length > 9) {
newParamsName = tempParamsName.substring(0, 10) + '...';
} else {
newParamsName = tempParamsName;
}
return newParamsName;
}
}
},
yAxis: {
type: 'value',
min: 0,
max: function(value) {
return Math.ceil(value.max)
},
minInterval: 1
},
series: [{
data: seriesData,
type: 'bar',
itemStyle: {
color: '#D59F00',
barBorderRadius: [5, 5, 0, 0],
},
label: {
show: true,
position: 'top',
color: '#D59F00',
fontSize: '14px',
formatter: (params) => {
return params.value[params.encode.x[0]];
}
},
barWidth: 25
}]
};
option && myCallDurationBarchart.setOption(option);
window.addEventListener('resize', function() {
myCallDurationBarchart.resize();
})
},
leaveMessageBarchart: function() {
var mySize = document.getElementById('leave-message-bar');
mySize.style.width = 350 + 'px';
mySize.style.height = 260 + 'px';
var myLeaveMessageBarchart = echarts.init(mySize);
var xdata = this.pubTalkReport.leaveMessageInfoList.map(v => v.nickname);
var seriesData = this.pubTalkReport.leaveMessageInfoList.map(v => v.leaveMessageNumber);
var option = {
xAxis: {
type: 'category',
data: xdata,
axisLabel: {
show: true,
interval: 0,
textStyle: {
color: 'rgba(0, 0, 0, 0.5)',
fontSize: 12
},
formatter: function(params) {
var newParamsName = "";
var tempParamsName = "";
var paramsNameNumber = params.length;
var provideNumber = 2;
var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
if (paramsNameNumber > provideNumber) {
for (var p = 0; p < rowNumber; p++) {
var tempStr = "";
var start = p * provideNumber;
var end = start + provideNumber;
if (p == rowNumber - 1) {
tempStr = params.substring(start, paramsNameNumber);
} else {
tempStr = params.substring(start, end) + "\n";
}
tempParamsName += tempStr;
}
} else {
tempParamsName = params;
}
if (tempParamsName.length > 9) {
newParamsName = tempParamsName.substring(0, 10) + '...';
} else {
newParamsName = tempParamsName;
}
return newParamsName;
}
}
},
yAxis: {
type: 'value',
min: 0,
max: function(value) {
return Math.ceil(value.max)
},
minInterval: 1
},
series: [{
data: seriesData,
type: 'bar',
itemStyle: {
color: '#00AB6C',
barBorderRadius: [5, 5, 0, 0],
},
label: {
show: true,
position: 'top',
color: '#00AB6C',
fontSize: '14px',
formatter: (params) => {
return params.value[params.encode.x[0]];
}
},
barWidth: 25
}]
};
option && myLeaveMessageBarchart.setOption(option);
window.addEventListener('resize', function() {
myLeaveMessageBarchart.resize();
})
},
// 查询学生信息
......@@ -849,8 +1667,7 @@
})
return
}
this.userInfo = data.obj;
this.userInfo = data.obj || {};
} catch (e) {
//TODO handle the exception
console.log(e);
......@@ -865,7 +1682,8 @@
async queryNotRepastDetails(startDate, endDate) {
try {
let data = await this.$http.get({
url: gHost +'/report-push/campus-consumer-report/queryNotRepastDetails'
url: gHost +
'/report-push/campus-consumer-report/queryNotRepastDetails'
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
......@@ -880,6 +1698,10 @@
})
return
}
if (!data.obj) {
this.diningSituations = {};
return;
}
this.diningSituations.notRepastDay = data.obj.notRepastDay;
this.diningSituations.notRepastDetailsDTOS = data.obj.notRepastDetailsDTOS;
this.diningSituations.cateringLevel = data.obj.cateringLevel;
......@@ -922,12 +1744,13 @@
})
return
}
if (!data.obj) return;
const tmpObj = data.obj;
this.isEatLow = tmpObj.canteenAmount / tmpObj.grossAmount < 0.5 ? true : false;
if (num) {
this.pieDatas = [
[{
name: '食堂',
name: '正餐',
value: tmpObj.canteenAmount
}, {
name: '超市',
......@@ -948,7 +1771,7 @@
})
}
},
// 查询消费总额
// 查询生活费额度
async queryConsumerTrend() {
try {
let data = await this.$http.get({
......@@ -968,6 +1791,7 @@
})
return
}
if (!data.obj) return;
this.consumerAmountObj = data.obj;
this.isReasonable = this.consumerAmountObj.exceedRate >= 40 && this
.consumerAmountObj.exceedRate <=
......@@ -1009,6 +1833,7 @@
})
return
}
if (!data.obj) return;
var exceptionDate = data.obj.exceptionDate;
this.isAbnormal = exceptionDate.length ? true : false;
var clues = '';
......@@ -1038,8 +1863,115 @@
})
}
},
// 是否开通消费报告
async queryIsDredgeMember(num) {
// 获取公话报告
async getPubTalkReport() {
try {
let data = await this.$http.post({
url: gHost +
'/report-push/vpt-web-report/pubTalkReport/getPubTalkReport'
}, {
schoolId: getQueryParams('schoolId'),
studentId: getQueryParams('userId'),
startDate: this.dataRangeArr[this.dataRangeIndex].startDate,
endDate: this.dataRangeArr[this.dataRangeIndex].endDate,
})
if (data.code != 0) {
uni.showToast({
icon: "none",
mask: true,
title: data.message
})
return
}
this.pubTalkReport = data.data || {};
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 出入校报告
// 统计异常天数
async statisAttendanceAbnormal() {
try {
let data = await this.$http.post({
url: gHost +
'/report-push/attemdance-report/statisAttendanceAbnormal'
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
startTime: this.dataRangeArr[this.dataRangeIndex].startDate,
endTime: this.dataRangeArr[this.dataRangeIndex].endDate,
classId: this.userInfo.classId
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.message
})
return
}
this.attendanceReport = data.data || {};
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 出勤情况明细
async attendanceReprotDatail(currentDate) {
try {
let data = await this.$http.post({
url: gHost +
'/report-push/attemdance-report/attendanceReprotDatail'
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
currentDate,
classId: this.userInfo.classId
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.message
})
return
}
var tempList = data.data;
if (tempList && tempList.length) {
tempList.forEach(e => {
e.attendDetailReportDTOList.forEach(c => {
c.border = c.describeContent && c.describeContent != '当日早到冠军' ?
'4rpx solid #F9793F' :
'4rpx solid rgba(0, 0, 0, 0.25)'
})
})
this.attendanceReportDatail = tempList || [];
} else {
this.attendanceReportDatail = [];
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 是否开通会员功能
async queryIsDredgeMember(serviceItemCode, num) {
try {
let data = await this.$http.get({
url: gHost +
......@@ -1047,7 +1979,7 @@
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
serviceItemCode: 4001
serviceItemCode
})
if (data.code != 200) {
uni.showToast({
......@@ -1057,15 +1989,53 @@
})
return
}
switch (serviceItemCode) {
case 1002:
this.isOpen = data.obj.status;
if (!this.isOpen) {
this.flag = 1;
}
break;
case 2002:
this.isPubTalkOpen = data.obj.status;
if (!this.isPubTalkOpen) {
this.flag = 3;
}
break;
case 3002:
this.isAttendanceOpen = data.obj.status;
if (!this.isAttendanceOpen) {
this.flag = 2;
}
break;
}
if (num == 1) {
if (this.isOpen) {
this.queryMemberValidTime();
this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 4200;
this.flag = 0;
} else {
this.queryMemberConsumerAmount();
this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 2340;
}
} else if (num == 2) {
if (this.isAttendanceOpen) {
this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 2762;
this.flag = 0;
} else {
this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 1944;
}
} else if (num == 3) {
if (this.isPubTalkOpen) {
this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 3290;
this.flag = 0;
} else {
this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 2130;
}
}
} catch (e) {
//TODO handle the exception
......@@ -1078,7 +2048,7 @@
}
},
// 查询会员消费金额
async queryMemberConsumerAmount() {
async queryMemberConsumerAmount(serviceItemCode) {
try {
let data = await this.$http.get({
url: gHost +
......@@ -1086,7 +2056,7 @@
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
serviceItemCode: 4001
serviceItemCode
})
if (data.code != 200) {
uni.showToast({
......@@ -1096,7 +2066,7 @@
})
return
}
this.memberInfo.leastAmount = data.obj.leastAmount;
this.memberInfo.leastAmount = data.obj.leastAmount || '';
} catch (e) {
//TODO handle the exception
console.log(e);
......@@ -1108,7 +2078,7 @@
}
},
// 查询会员有效期
async queryMemberValidTime() {
async queryMemberValidTime(serviceItemCode) {
try {
let data = await this.$http.get({
url: gHost +
......@@ -1116,7 +2086,7 @@
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
serviceItemCode: 4001
serviceItemCode
})
if (data.code != 200) {
uni.showToast({
......@@ -1128,6 +2098,7 @@
}
this.memberInfo.differDay = data.obj.differDay;
this.memberInfo.invalidDate = data.obj.invalidDate;
if (data.obj.invalidDate) {
let month = data.obj.invalidDate.slice(5, 6) == 0 ? data
.obj.invalidDate.slice(6, 7) : data.obj
.invalidDate.slice(5, 7);
......@@ -1136,6 +2107,9 @@
.invalidDate.slice(8);
this.memberInfo.invalidDateStr = data.obj.invalidDate
.slice(0, 4) + '' + month + '' + date + '';
} else {
this.memberInfo.invalidDateStr = '';
}
} catch (e) {
//TODO handle the exception
console.log(e);
......@@ -1160,11 +2134,38 @@
}
});
},
imageClick: function(src) {
this.imageDialogSrc = src;
this.imageDialogShow = true;
},
},
}
</script>
<style lang="scss" scope>
<style lang="scss">
.nodata {
position: absolute;
left: 50%;
top: 0%;
width: 100%;
transform: translate(-50%, 0);
.nodataImg {
width: 100%;
text-align: center;
}
.nodataTxt {
margin-top: -100rpx;
display: flex;
justify-content: center;
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
}
}
.tainer {
.school-report-header {
height: 88rpx;
......@@ -1234,7 +2235,6 @@
}
}
.school-report-screen-item-two {
width: 270rpx;
display: flex;
......@@ -1318,12 +2318,43 @@
}
}
.school-report-context-bgImg {
.consumer-report-bgImg {
width: 100%;
height: 452rpx;
background: no-repeat center/100% url(../../static/images/consumeReportBg.png);
}
.attendance-report-bgImg {
width: 100%;
height: 452rpx;
background: no-repeat center/100% url(../../static/images/attendanceReportBg.png);
}
.pubTalk-report-bgImg {
width: 100%;
height: 452rpx;
background: no-repeat center/100% url(../../static/images/pubTalkReportBg.png);
}
.school-report-context-card-title {
height: 62rpx;
display: flex;
justify-content: center;
.school-report-context-card-title-img {
width: 318rpx;
background: no-repeat center/100% url(../../static/images/cardBg.png);
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: rgba(0, 0, 0, 0.85);
line-height: 45rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
.school-report-context-card {
width: 100%;
background: #E5F8F1;
......@@ -1334,12 +2365,11 @@
.school-report-context-card-one {
width: 100%;
height: 598rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin-bottom: 40rpx;
.school-report-context-card-one-img {
.consumer-report-img {
width: 428rpx;
height: 428rpx;
background: no-repeat center/100% url(../../static/images/consumeReport.png);
......@@ -1348,9 +2378,27 @@
left: 160rpx;
}
.school-report-context-card-one-context {
width: 613rpx;
margin: 0 30rpx 0 47rpx;
.attendance-report-img {
width: 428rpx;
height: 428rpx;
background: no-repeat center/100% url(../../static/images/attendanceReport.png);
position: absolute;
top: -172rpx;
left: 160rpx;
}
.pubTalk-report-img {
width: 428rpx;
height: 428rpx;
background: no-repeat center/100% url(../../static/images/pubTalkReport.png);
position: absolute;
top: -172rpx;
left: 160rpx;
}
.school-report-context-card-one-context {
width: 613rpx;
margin: 0 30rpx 0 47rpx;
position: absolute;
top: 163rpx;
......@@ -1390,24 +2438,68 @@
}
}
}
}
.school-report-context-card-title {
height: 62rpx;
display: flex;
justify-content: center;
.attendance-report-context-card-one-context {
padding: 163rpx 0 0;
box-sizing: border-box;
.school-report-context-card-title-img {
width: 318rpx;
background: no-repeat center/100% url(../../static/images/cardBg.png);
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
.attendance-report-context-card-one-context-item {
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 45rpx;
display: flex;
justify-content: center;
.txt-important {
color: #04B871;
margin: 0 4rpx;
}
}
}
.pubTalk-report-context-card-one-context {
width: 613rpx;
margin: 0 30rpx 0 47rpx;
position: absolute;
top: 163rpx;
.pubTalk-report-context-card-one-context-item {
margin: 0 0 32rpx;
display: flex;
.pubTalk-report-context-card-one-context-dot {
height: 40rpx;
display: flex;
align-items: center;
.pubTalk-report-context-card-one-context-dot-item {
width: 10rpx;
height: 10rpx;
background: #04B871;
border-radius: 10rpx;
margin-right: 16rpx;
}
}
.pubTalk-report-context-card-one-context-txt {
line-height: 40rpx;
.txt-important {
color: #04B871;
margin: 0 4rpx;
}
.txt-important-two {
color: #04B871;
}
}
&.pubTalk-report-context-card-one-context-item-last {
margin: 0;
}
}
}
}
......@@ -1461,10 +2553,230 @@
}
}
.school-report-context-card-two-calendar {
.school-report-context-card-two-calendar {
height: 575rpx;
width: 690rpx;
/deep/ .van-calendar__weekdays {
background: #F7FAF8;
}
/deep/ .van-calendar__weekday {
text-align: left;
padding-left: 30rpx;
box-sizing: border-box;
}
/deep/ .van-calendar__weekday:first-of-type {
color: rgba(0, 0, 0, 0.25);
}
/deep/ .van-calendar__weekday:last-of-type {
color: rgba(0, 0, 0, 0.25);
}
/deep/ .van-calendar__month-title {
display: none;
}
/deep/ .van-calendar__days {
margin: 10rpx 0 0;
}
/deep/ .van-calendar__day {
margin: 0 0 8rpx;
border-radius: 22rpx;
display: flex;
align-items: flex-end;
}
/deep/ .van-calendar__selected-day {
background: rgba(0, 0, 0, .1);
color: #F9793F;
display: flex;
align-items: flex-end;
border-radius: 22rpx;
}
/deep/ .van-calendar__top-info {
top: 0;
font-size: 20rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #F9793F;
line-height: 28rpx;
margin: 12rpx 0 4rpx;
}
/deep/ .notice-day {
color: #F9793F;
background: rgba(249, 121, 63, .1);
border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
margin-right: 10rpx;
display: flex;
align-items: flex-end;
}
}
.school-report-context-card-two-details {
height: 132rpx;
background: no-repeat center/100% url(../../static/images/diningSituations.png);
padding: 55rpx 42rpx 30rpx 29rpx;
box-sizing: border-box;
border-radius: 0 0 16rpx 16rpx;
.school-report-context-card-two-details-item {
display: flex;
height: 43rpx;
.school-report-context-card-two-details-date {
width: 130rpx;
height: 43rpx;
border-radius: 8rpx;
border: 1rpx solid #04B871;
font-size: 28rpx;
font-family: FontName;
font-weight: 700;
font-style: italic;
color: #04B871;
margin-right: 65rpx;
display: flex;
justify-content: center;
}
.school-report-context-card-two-details-meal {
display: flex;
.school-report-context-card-two-details-meal-txt {
width: 56rpx;
margin-right: 8rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
}
.school-report-context-card-two-details-meal-logo {
display: flex;
align-items: center;
margin-right: 48rpx;
&.school-report-context-card-two-details-meal-logo-two {
margin-right: 56rpx;
}
&.school-report-context-card-two-details-meal-logo-three {
margin: 0;
}
.school-report-context-card-two-details-meal-img {
width: 48rpx;
height: 40rpx;
image {
height: 100%;
width: 100%;
max-height: 100%;
max-width: 100%;
}
}
.school-report-context-card-two-details-meal-noeat {
width: 40rpx;
height: 40rpx;
background: rgba(249, 121, 63, 0.17);
border-radius: 12rpx;
font-size: 24rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #F9793F;
display: flex;
justify-content: center;
align-items: center;
}
}
}
}
}
}
.attendance-report-context-card-two {
height: 748rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 0 0;
.attendance-report-context-card-two-conclusion {
height: 40rpx;
padding: 0 30rpx 0;
box-sizing: border-box;
margin: 36rpx 0 29rpx;
display: flex;
justify-content: space-between;
.attendance-report-context-card-two-conclusion-txt {
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
.abnormal-days {
color: #F9793F;
margin: 0 5rpx;
}
}
.attendance-report-context-card-two-conclusion-logo {
width: 190rpx;
display: flex;
justify-content: space-between;
.attendance-report-context-card-two-conclusion-logo-item {
display: flex;
align-items: center;
.attendance-report-context-card-two-conclusion-logo-item-dot {
width: 12rpx;
height: 12rpx;
background: #F9793F;
border-radius: 12rpx;
&.leave {
background: #04B871;
}
}
.attendance-report-context-card-two-conclusion-logo-item-txt {
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.5);
margin-left: 14rpx;
}
}
}
}
.attendance-report-context-card-two-calendar {
height: 575rpx;
width: 690rpx;
.mark-green {
color: #04B871;
}
.mark-orange {
color: #F9793F;
}
.mark-yellow {
color: #DAA000;
}
/deep/ .van-calendar__weekdays {
background: #F7FAF8;
}
......@@ -1504,8 +2816,6 @@
display: flex;
align-items: flex-end;
border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
}
/deep/ .van-calendar__top-info {
......@@ -1518,100 +2828,343 @@
margin: 12rpx 0 4rpx;
}
/deep/ .notice-day {
/deep/ .late-day {
color: #F9793F;
background: rgba(249, 121, 63, .1);
border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
margin-right: 10rpx;
display: flex;
align-items: flex-end;
margin-left: 10rpx;
}
/deep/ .leave-day {
color: #04B871;
background: rgba(4, 184, 113, .09);
border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
margin-left: 10rpx;
}
.school-report-context-card-two-details {
height: 132rpx;
background: no-repeat center/100% url(../../static/images/diningSituations.png);
padding: 55rpx 42rpx 30rpx 29rpx;
/deep/ .champion-day {
color: #DAA000;
background: url(../../static/images/champion.png) no-repeat -4rpx center/100%;
border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
margin-left: 10rpx;
}
}
}
.attendance-report-context-details {
height: 858rpx;
overflow: scroll;
.attendance-report-context-card-two-details {
position: relative;
top: -30rpx;
height: 146rpx;
background: #F5F7F7;
padding: 57rpx 39rpx 0 34rpx;
box-sizing: border-box;
border-radius: 0 0 16rpx 16rpx;
.school-report-context-card-two-details-item {
.attendance-report-context-card-two-details-item {
height: 50rpx;
display: flex;
height: 43rpx;
justify-content: space-between;
.school-report-context-card-two-details-date {
.attendance-report-context-card-two-details-time {
display: flex;
align-items: center;
.attendance-report-context-card-two-details-time-img {
width: 25rpx;
height: 25rpx;
background: no-repeat center/100% url(../../static/images/attendanceTime.png);
}
.attendance-report-context-card-two-details-time-txt {
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
&.txt-details {
margin: 0 16rpx 0 13rpx;
}
}
}
.attendance-report-context-card-two-details-date {
width: 130rpx;
height: 43rpx;
border-radius: 8rpx;
border: 1rpx solid #04B871;
font-size: 28rpx;
font-family: FontName;
font-weight: 600;
font-weight: 700;
font-style: italic;
color: #04B871;
margin-right: 65rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
}
.school-report-context-card-two-details-meal {
.attendance-report-context-card-three {
background: #F5F7F7;
margin: -40rpx 0 0;
position: relative;
border-radius: 0 0 16rpx 16rpx;
.attendance-report-details {
width: 572rpx;
height: 168rpx;
.dashed-line-box {
position: relative;
top: -40rpx;
width: 16rpx;
height: 212rpx;
.dashed-line-first {
width: 2rpx;
height: 66rpx;
border-left: 2rpx dashed rgba(0, 0, 0, .25);
position: absolute;
left: 44rpx;
}
.attendance-report-dot-first {
width: 16rpx;
height: 16rpx;
background: #FFFFFF;
border: 4rpx solid rgba(0, 0, 0, 0.25);
border-radius: 16rpx;
position: absolute;
top: 66rpx;
left: 34rpx;
}
.dashed-line {
width: 2rpx;
height: 146rpx;
border-left: 2rpx dashed rgba(0, 0, 0, .25);
position: absolute;
left: 44rpx;
top: -76rpx;
}
.attendance-report-dot {
width: 16rpx;
height: 16rpx;
background: #FFFFFF;
border: 4rpx solid rgba(0, 0, 0, 0.25);
border-radius: 16rpx;
position: absolute;
top: 70rpx;
left: 34rpx;
}
}
.attendance-report-details-item-box {
width: 83.5%;
display: flex;
justify-content: space-between;
position: absolute;
margin-left: 71rpx;
.school-report-context-card-two-details-meal-txt {
width: 56rpx;
margin-right: 8rpx;
.attendance-report-details-item {
height: 40rpx;
.attendance-report-time {
display: flex;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
.attendance-report-time-item {
color: #F9793F;
margin: 0 21rpx 0 15rpx;
}
.school-report-context-card-two-details-meal-logo {
.early-champions {
width: 183rpx;
background: #F7E4BB;
border-radius: 20rpx;
padding: 0 26rpx 0 23rpx;
box-sizing: border-box;
display: flex;
align-items: center;
margin-right: 48rpx;
&.school-report-context-card-two-details-meal-logo-two {
margin-right: 56rpx;
.early-champions-img {
width: 32rpx;
height: 29rpx;
background: no-repeat center/100% url(../../static/images/champions.png);
margin-right: 2rpx;
}
&.school-report-context-card-two-details-meal-logo-three {
margin: 0;
.early-champions-txt {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #916610;
}
}
}
}
.school-report-context-card-two-details-meal-img {
width: 48rpx;
.attendance-report-details-img-item {
display: flex;
flex-direction: column;
align-items: flex-end;
.attendance-report-time-details {
width: 212rpx;
display: flex;
align-items: center;
justify-content: flex-end;
margin: 0 0 11rpx;
.attendance-report-time-details-item {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #F9793F;
line-height: 40rpx;
width: 165rpx;
height: 40rpx;
display: flex;
justify-content: flex-end;
}
.attendance-report-time-details-icon {
width: 21rpx;
height: 12rpx;
background: no-repeat center/100% url(../../static/images/arrowUp.png);
margin-left: 30rpx;
}
}
.attendance-report-details-img-box {
width: 155rpx;
height: 95rpx;
display: flex;
justify-content: flex-end;
image {
width: 100%;
height: 100%;
}
}
}
}
}
}
}
.image-dialog {
width: 620rpx;
height: 800rpx;
image {
width: 100%;
max-height: 100%;
max-width: 100%;
height: 100%;
}
}
.school-report-context-card-two-details-meal-noeat {
width: 40rpx;
height: 40rpx;
background: rgba(249, 121, 63, 0.17);
border-radius: 12rpx;
.pubTalk-report-context-card-two {
height: 506rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 0 40rpx;
.call-number-bar-unit {
margin: 0 0 28rpx 28rpx;
height: 33rpx;
font-size: 24rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #F9793F;
display: flex;
justify-content: center;
align-items: center;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.5);
line-height: 33rpx;
}
#call-number-bar {
position: relative;
top: -110rpx;
left: 18rpx;
z-index: 100;
}
}
.pubTalk-report-context-card-three {
height: 537rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 0 40rpx;
.call-duration-bar-unit {
margin: 0 0 28rpx 28rpx;
height: 33rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.5);
line-height: 33rpx;
}
#call-duration-bar {
position: relative;
top: -88rpx;
left: 28rpx;
z-index: 100;
}
}
.pubTalk-report-context-card-four {
height: 756rpx;
background: #FFFFFF;
border-radius: 16rpx;
.leave-message-summary {
height: 90rpx;
margin: 42rpx 36rpx 0;
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 45rpx;
.txt-important {
color: #04B871;
margin: 0 4rpx;
}
&.leave-message-less-summary {
margin: 0 36rpx 0;
}
}
.leave-message-bar-unit {
margin: 43rpx 0 28rpx 28rpx;
height: 33rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.5);
line-height: 33rpx;
}
#leave-message-bar {
position: relative;
top: -116rpx;
left: 18rpx;
z-index: 100;
}
}
......@@ -1756,7 +3309,6 @@
height: 634rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin-bottom: 37rpx;
position: relative;
.school-report-context-card-five-conclusion {
......@@ -1780,6 +3332,7 @@
#consumer-trend-line {
position: absolute;
top: 120rpx;
left: 10rpx;
z-index: 100;
}
......@@ -1823,13 +3376,12 @@
}
}
}
}
.school-report-footer {
height: 169rpx;
margin: 0 0 43rpx;
margin: 40rpx 0 43rpx;
padding: 33rpx 34rpx 42rpx 42rpx;
box-sizing: border-box;
background: no-repeat center/100% url(../../static/images/extendPermissionsBg.png);
......@@ -1880,16 +3432,17 @@
}
}
}
// 出入校报告
}
.no-open {
width: 100%;
height: 915rpx;
background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.97) 38%, #FFFFFF 100%);
position: absolute;
top: 1425rpx;
background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.97) 38%, #FFFFFF 100%);
padding: 309rpx 30rpx 63rpx;
box-sizing: border-box;
z-index: 101;
.no-open-solution {
height: 40rpx;
......@@ -1956,8 +3509,19 @@
.summary-item-icon {
font-size: 40rpx;
line-height: 45rpx;
}
.consumer-report-icon {
margin: 0 45rpx 0 70rpx;
}
.attendance-report-icon {
margin: 0 35rpx 0 134rpx;
}
.pubTalk-report-icon {
margin: 0 35rpx 0 102rpx;
}
}
.open-results-items-details {
......@@ -2017,6 +3581,92 @@
background: no-repeat center/100% url(../../static/images/consumerTrend.png);
margin-right: 25rpx;
}
// 出入校报告
.admission-notice-img {
width: 30rpx;
height: 27rpx;
background: no-repeat center/100% url(../../static/images/admissionNotice.png);
margin-right: 23rpx;
}
.admission-analysis-img {
width: 30rpx;
height: 32rpx;
background: no-repeat center/100% url(../../static/images/admissionAnalysis.png);
margin: 0 25rpx 0 135rpx;
}
.admission-record-img {
width: 29rpx;
height: 31rpx;
background: no-repeat center/100% url(../../static/images/admissionRecord.png);
margin-right: 24rpx;
}
.admission-image-img {
width: 29rpx;
height: 29rpx;
background: no-repeat center/100% url(../../static/images/admissionImage.png);
margin-right: 24rpx;
}
// 公话报告
.video-call-img {
width: 31rpx;
height: 24rpx;
background: no-repeat center/100% url(../../static/images/videoCall.png);
margin-right: 21rpx;
}
.communication-advice-img {
width: 38rpx;
height: 31rpx;
background: no-repeat center/100% url(../../static/images/communicationAdvice.png);
margin: 0 24rpx 0 165rpx;
}
.voice-call-img {
width: 25rpx;
height: 34rpx;
background: no-repeat center/100% url(../../static/images/voiceCall.png);
margin-right: 26rpx;
}
.call-count-img {
width: 30rpx;
height: 30rpx;
background: no-repeat center/100% url(../../static/images/callCount.png);
margin: 0 31rpx 0 165rpx;
}
.leave-word-img {
width: 30rpx;
height: 28rpx;
background: no-repeat center/100% url(../../static/images/leaveWord.png);
margin-right: 22rpx;
}
.call-duration-img {
width: 31rpx;
height: 35rpx;
background: no-repeat center/100% url(../../static/images/callDuration.png);
margin: 0 23rpx 0 165rpx;
}
.face-call-img {
width: 32rpx;
height: 31rpx;
background: no-repeat center/100% url(../../static/images/faceCall.png);
margin-right: 21rpx;
}
.leave-word-analysis-img {
width: 31rpx;
height: 31rpx;
background: no-repeat center/100% url(../../static/images/leaveWordAnalysis.png);
margin: 0 23rpx 0 165rpx;
}
}
}
}
......
......@@ -14,7 +14,7 @@
</view>
<view class="cardBox">
<view v-if="ifShow">
<view class="card" v-for="item of detailsList">
<view class="card" v-for="(item,index) of detailsList" :key="index">
<view class="temperatureResult">
<view class="studentInfo">
<view class="studentName">
......
......@@ -14,7 +14,7 @@
</view>
<view class="cardBox">
<view v-if="ifShow">
<view class="card" v-for="item of detailsList">
<view class="card" v-for="(item,index) of detailsList" :key="index">
<view class="temperatureResult">
<view class="studentInfo">
<view class="studentName">
......
......@@ -14,7 +14,7 @@
</view>
<view class="cardBox">
<view v-if="ifShow">
<view class="card" v-for="item of detailsList">
<view class="card" v-for="(item,index) of detailsList" :key="index">
<view class="temperatureResult">
<view class="studentInfo">
<view class="studentName">
......
......@@ -14,7 +14,7 @@
</view>
<view class="cardBox">
<view v-if="ifShow">
<view class="card" v-for="item of detailsList">
<view class="card" v-for="(item,index) of detailsList" :key="index">
<view class="temperatureResult">
<view class="studentInfo">
<view class="studentName">
......
......@@ -4,7 +4,10 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="./faceico.ico"/>
<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="0">
<link rel="shortcut icon" type="image/x-icon" href="./static/faceico.ico"/>
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment