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 @@ ...@@ -4,7 +4,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <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"> <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> <title>
<%= htmlWebpackPlugin.options.title %> <%= htmlWebpackPlugin.options.title %>
</title> </title>
......
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
}, },
onHide: function() { onHide: function() {
console.log('App Hide') console.log('App Hide')
},
onPageNotFound: function(res) {
uni.redirectTo({
url: "/pages/NotFound/NotFound"
})
} }
} }
</script> </script>
......
...@@ -374,7 +374,7 @@ ...@@ -374,7 +374,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/TemperatureRecords/TemperatureStatistics/TemperatureStatistics", "path": "pages/TemperatureRecords/TemperatureStatistics/TemperatureStatistics",
"style": { "style": {
"navigationBarTitleText": "体温记录", "navigationBarTitleText": "体温记录",
...@@ -382,7 +382,7 @@ ...@@ -382,7 +382,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/TemperatureRecords/HighTemperature/HighTemperature", "path": "pages/TemperatureRecords/HighTemperature/HighTemperature",
"style": { "style": {
"navigationBarTitleText": "高温", "navigationBarTitleText": "高温",
...@@ -390,7 +390,7 @@ ...@@ -390,7 +390,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/TemperatureRecords/LowTemperature/LowTemperature", "path": "pages/TemperatureRecords/LowTemperature/LowTemperature",
"style": { "style": {
"navigationBarTitleText": "低温", "navigationBarTitleText": "低温",
...@@ -398,7 +398,7 @@ ...@@ -398,7 +398,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/TemperatureRecords/NormalTemperatrue/NormalTemperatrue", "path": "pages/TemperatureRecords/NormalTemperatrue/NormalTemperatrue",
"style": { "style": {
"navigationBarTitleText": "正常", "navigationBarTitleText": "正常",
...@@ -406,7 +406,7 @@ ...@@ -406,7 +406,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/TemperatureRecords/Undetected/Undetected", "path": "pages/TemperatureRecords/Undetected/Undetected",
"style": { "style": {
"navigationBarTitleText": "未测量", "navigationBarTitleText": "未测量",
...@@ -414,7 +414,7 @@ ...@@ -414,7 +414,7 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{ }, {
"path": "pages/SchoolReport/SchoolReport", "path": "pages/SchoolReport/SchoolReport",
"style": { "style": {
"navigationBarTitleText": "校园报告", "navigationBarTitleText": "校园报告",
...@@ -424,6 +424,15 @@ ...@@ -424,6 +424,15 @@
} }
, {
"path": "pages/NotFound/NotFound",
"style": {
"navigationBarTitleText": "抱歉!没有找到您想要的资源",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "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> <template>
<view class="tainer" :style="{height:containerHeight+'rpx'}"> <view class="tainer" :style="{height:containerHeight+'rpx'}">
<view> <view v-if="showReport">
<view class="school-report-header"> <view class="school-report-header">
<view class="school-report-header-item"> <view class="school-report-header-item">
<view class="user-avatar"> <view class="user-avatar">
...@@ -41,15 +41,18 @@ ...@@ -41,15 +41,18 @@
<view class="school-report-context"> <view class="school-report-context">
<view class="school-report-context-tab"> <view class="school-report-context-tab">
<view class="school-report-context-tab-item"> <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> <text>消费报告</text>
</view> </view>
<!-- <view class="school-report-context-tab-item-one"> <view v-if="isAttendanceOpen" class="school-report-context-tab-item-one"
<text>门禁报告</text> :class="tabIndex==2?'active':''" @tap="tabTap(2)">
<text>出入校报告</text>
</view> </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> <text>公话报告</text>
</view> --> </view>
</view> </view>
<view class="school-report-context-tab-item-two"> <view class="school-report-context-tab-item-two">
<view class="share-button" @tap="shareHandler"> <view class="share-button" @tap="shareHandler">
...@@ -61,13 +64,14 @@ ...@@ -61,13 +64,14 @@
</view> </view>
</view> </view>
</view> </view>
<view class="school-report-context-bgImg"> <view :class="['consumer-report-bgImg','attendance-report-bgImg','pubTalk-report-bgImg'][tabIndex-1]">
</view> </view>
<view class="school-report-context-card"> <view class="school-report-context-card">
<view class="school-report-context-card-one"> <view class="school-report-context-card-one" :style="{height:[598,256,525][tabIndex-1]+'rpx'}">
<view class="school-report-context-card-one-img"> <view :class="['consumer-report-img','attendance-report-img','pubTalk-report-img'][tabIndex-1]">
</view> </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-item">
<view class="school-report-context-card-one-context-dot"> <view class="school-report-context-card-one-context-dot">
<view class="school-report-context-card-one-context-dot-item"> <view class="school-report-context-card-one-context-dot-item">
...@@ -88,7 +92,7 @@ ...@@ -88,7 +92,7 @@
</view> </view>
</view> </view>
<view class="school-report-context-card-one-context-txt"> <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> class="txt-important-two">过低</text>,请及时调整饮食习惯</text>
<text v-else>饮食较<text class="txt-important-two">均衡</text>,继续保持哦</text> <text v-else>饮食较<text class="txt-important-two">均衡</text>,继续保持哦</text>
</view> </view>
...@@ -99,7 +103,7 @@ ...@@ -99,7 +103,7 @@
</view> </view>
</view> </view>
<view class="school-report-context-card-one-context-txt"> <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 class="txt-important">{{consumerAmountObj.exceedRate}}%</text>
的同学<text v-if="isReasonable">,请及时评估生活费是否合理</text> 的同学<text v-if="isReasonable">,请及时评估生活费是否合理</text>
</view> </view>
...@@ -117,9 +121,66 @@ ...@@ -117,9 +121,66 @@
</view> </view>
</view> </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>
<!-- 公话报告 -->
<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">
<view class="school-report-context-card-title-img"> <view class="school-report-context-card-title-img">
<text>就餐情况</text> <text>就餐情况</text>
...@@ -128,7 +189,7 @@ ...@@ -128,7 +189,7 @@
<view class="school-report-context-card-two-conclusion"> <view class="school-report-context-card-two-conclusion">
<view class="school-report-context-card-two-conclusion-txt"> <view class="school-report-context-card-two-conclusion-txt">
<text>{{['',''][reportTypeIndex]}}<text <text>{{['',''][reportTypeIndex]}}<text
class="abnormal-days">{{diningSituations.notRepastDay}}</text>就餐异常</text> class="abnormal-days">{{diningSituations.notRepastDay}}</text>未就餐</text>
</view> </view>
<view class="school-report-context-card-two-conclusion-logo"> <view class="school-report-context-card-two-conclusion-logo">
<view class="school-report-context-card-two-conclusion-logo-item"> <view class="school-report-context-card-two-conclusion-logo-item">
...@@ -142,10 +203,10 @@ ...@@ -142,10 +203,10 @@
</view> </view>
</view> </view>
<view class="school-report-context-card-two-calendar"> <view class="school-report-context-card-two-calendar">
<van-calendar :formatter="formatter" :min-date="minDate" :max-date="maxDate" <van-calendar v-show="tabIndex==1" :formatter="formatter" :min-date="minDate"
:default-date="minDate" :show-title="false" :show-subtitle="false" :show-mark="false" :max-date="maxDate" :default-date="minDate" :row-height="44" :show-title="false"
:poppable="false" :show-confirm="false" :style="{ height: '575rpx' }" :show-subtitle="false" :show-mark="false" :poppable="false" :show-confirm="false"
@select="dateSelect" /> :style="{ height: '575rpx' }" @select="dateSelect" />
</view> </view>
<view class="school-report-context-card-two-details"> <view class="school-report-context-card-two-details">
<view class="school-report-context-card-two-details-item"> <view class="school-report-context-card-two-details-item">
...@@ -157,11 +218,12 @@ ...@@ -157,11 +218,12 @@
<text>早餐</text> <text>早餐</text>
</view> </view>
<view class="school-report-context-card-two-details-meal-logo"> <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"> class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image> <image src="../../static/images/eatted.png" mode=""></image>
</view> </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> <text></text>
</view> </view>
</view> </view>
...@@ -170,11 +232,12 @@ ...@@ -170,11 +232,12 @@
</view> </view>
<view <view
class="school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-two"> 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"> class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image> <image src="../../static/images/eatted.png" mode=""></image>
</view> </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> <text></text>
</view> </view>
</view> </view>
...@@ -183,11 +246,12 @@ ...@@ -183,11 +246,12 @@
</view> </view>
<view <view
class="school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-three"> 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"> class="school-report-context-card-two-details-meal-img">
<image src="../../static/images/eatted.png" mode=""></image> <image src="../../static/images/eatted.png" mode=""></image>
</view> </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> <text></text>
</view> </view>
</view> </view>
...@@ -195,7 +259,7 @@ ...@@ -195,7 +259,7 @@
</view> </view>
</view> </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">
<view class="school-report-context-card-title-img"> <view class="school-report-context-card-title-img">
<text>消费偏好</text> <text>消费偏好</text>
...@@ -203,7 +267,7 @@ ...@@ -203,7 +267,7 @@
</view> </view>
<view class="school-report-context-card-three-conclusion"> <view class="school-report-context-card-three-conclusion">
<view class="school-report-context-card-three-conclusion-item"> <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> class="school-report-context-card-three-conclusion-item-describe">过低</text>,请及时调整饮食习惯</text>
<text v-else>饮食较<text <text v-else>饮食较<text
class="school-report-context-card-three-conclusion-item-describe">均衡</text>,继续保持哦</text> class="school-report-context-card-three-conclusion-item-describe">均衡</text>,继续保持哦</text>
...@@ -212,15 +276,15 @@ ...@@ -212,15 +276,15 @@
<view id="consumer-preferences-pie"> <view id="consumer-preferences-pie">
</view> </view>
</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">
<view class="school-report-context-card-title-img"> <view class="school-report-context-card-title-img">
<text>消费总额</text> <text>生活费额度</text>
</view> </view>
</view> </view>
<view class="school-report-context-card-four-conclusion"> <view class="school-report-context-card-four-conclusion">
<view class="school-report-context-card-four-conclusion-item"> <view class="school-report-context-card-four-conclusion-item">
<text>消费总额<text <text>消费<text
class="consume-total">{{consumerAmountObj.consumerAmount}}</text>元,超过全校<text class="consume-total">{{consumerAmountObj.consumerAmount}}</text>元,超过全校<text
class="consume-total">{{consumerAmountObj.exceedRate}}%</text>的同学<text class="consume-total">{{consumerAmountObj.exceedRate}}%</text>的同学<text
v-if="isReasonable">,请及时评估生活费是否合理</text></text> v-if="isReasonable">,请及时评估生活费是否合理</text></text>
...@@ -253,7 +317,7 @@ ...@@ -253,7 +317,7 @@
</view> </view>
</view> </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">
<view class="school-report-context-card-title-img"> <view class="school-report-context-card-title-img">
<text>消费趋势</text> <text>消费趋势</text>
...@@ -284,7 +348,195 @@ ...@@ -284,7 +348,195 @@
</view> </view>
</view> </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">
<view class="school-report-footer-item-txt"> <view class="school-report-footer-item-txt">
<text>到期后将无法查看完整报告</text> <text>到期后将无法查看完整报告</text>
...@@ -302,10 +554,11 @@ ...@@ -302,10 +554,11 @@
</view> </view>
</view> </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" @tap="equityPay">
<view class="no-open-solution-txt"> <view class="no-open-solution-txt">
<text>最低 {{memberInfo.leastAmount}}元/天开通,查看完整消费报告</text> <text>最低{{memberInfo.leastAmount||''}}元/天开通,查看完整{{['消费','出入校','公话'][tabIndex-1]}}报告</text>
</view> </view>
<view class="no-open-solution-item"> <view class="no-open-solution-item">
</view> </view>
...@@ -317,16 +570,19 @@ ...@@ -317,16 +570,19 @@
<view class="open-results-items"> <view class="open-results-items">
<view class="open-results-items-summary"> <view class="open-results-items-summary">
<view class="summary-item"> <view class="summary-item">
<text>月度消费报告</text> <text>{{['月度消费报告','实时推送','音视频通话'][tabIndex-1]}}</text>
</view> </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> <text>+</text>
</view> </view>
<view class="summary-item"> <view class="summary-item">
<text>消费总结</text> <text>{{['消费总结','月度出入校报告','月度公话报告'][tabIndex-1]}}</text>
</view> </view>
</view> </view>
<view class="open-results-items-details"> <view class="open-results-items-details">
<!-- 消费报告 -->
<view v-if="tabIndex==1">
<view class="open-results-items-details-item"> <view class="open-results-items-details-item">
<view class="dining-situations-img"> <view class="dining-situations-img">
</view> </view>
...@@ -355,7 +611,7 @@ ...@@ -355,7 +611,7 @@
<view class="consumer-num-img"> <view class="consumer-num-img">
</view> </view>
<view class="open-results-items-details-item-txt"> <view class="open-results-items-details-item-txt">
<text>消费总额分析</text> <text>生活费额度分析</text>
</view> </view>
</view> </view>
<view class="open-results-items-details-item"> <view class="open-results-items-details-item">
...@@ -366,17 +622,107 @@ ...@@ -366,17 +622,107 @@
</view> </view>
</view> </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>
</view> </view>
</view> </view>
<van-dialog class="htmlCanvas" id="htmlCanvas" ref="imgCanvas" v-model="dialogShow" show-cancel-button <view v-else class="nodata">
style="width: 100%; max-height: 80% !important;overflow: scroll"> <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> </van-dialog>
</view> </view>
</view>
</template> </template>
<script> <script>
import html2cancas from "html2canvas" import html2cancas from "html2canvas"
var gHost = "https://" + window.location.host; var gHost = "https://" + window.location.host;
...@@ -398,10 +744,13 @@ ...@@ -398,10 +744,13 @@
} }
// 时间处理模块 // 时间处理模块
import dayjs from 'dayjs' import dayjs from 'dayjs'
import moment from "moment";
export default { export default {
name: 'SchoolReport', name: 'SchoolReport',
data() { data() {
return { return {
showReport: true,
nodataImgUrl: this.$ImgUrl,
userInfo: {}, userInfo: {},
reportTypeIndex: 0, reportTypeIndex: 0,
reportTypeArr: ['月报', '周报'], reportTypeArr: ['月报', '周报'],
...@@ -416,6 +765,7 @@ ...@@ -416,6 +765,7 @@
maxDate: new Date(), maxDate: new Date(),
imgUrl: '', // 存储base64图片 imgUrl: '', // 存储base64图片
dialogShow: false, dialogShow: false,
tabIndex: 1,
// 就餐情况 // 就餐情况
diningSituations: { diningSituations: {
diningSituationsDate: '', diningSituationsDate: '',
...@@ -430,7 +780,7 @@ ...@@ -430,7 +780,7 @@
// 消费偏好 // 消费偏好
pieDatas: [], pieDatas: [],
isEatLow: false, isEatLow: false,
// 消费总额 // 生活费额度
consumerAmountObj: {}, consumerAmountObj: {},
isReasonable: false, isReasonable: false,
schoolAverageHeight: '', schoolAverageHeight: '',
...@@ -439,8 +789,36 @@ ...@@ -439,8 +789,36 @@
consumerTrend: {}, consumerTrend: {},
isAbnormal: false, isAbnormal: false,
lineDatas: [], lineDatas: [],
// 出入校报告数据
attendanceSituations: {
attendanceDate: '',
abnomalDateList: [],
},
imageDialogShow: false,
imageDialogSrc: '',
// 公话报告数据
pubTalkReport: {
// 通话次数
callNumberInfoList: [],
// 通话时长
callDurationInfoList: [],
// 亲子留言
leaveMessageInfoList: []
},
// 出入校报告数据
attendanceReport: {
abnormalNum: 0,
abnomalDateList: [],
},
attendanceReportDatail: [],
// 会员信息 // 会员信息
// 消费
isOpen: false, isOpen: false,
// 出入校
isAttendanceOpen: false,
// 公话
isPubTalkOpen: false,
flag: 0,
memberInfo: { memberInfo: {
leastAmount: '', leastAmount: '',
invalidDateStr: '', invalidDateStr: '',
...@@ -450,56 +828,60 @@ ...@@ -450,56 +828,60 @@
} }
}, },
mounted() { 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) { if (this.isOpen) {
this.queryMemberValidTime().then(e => { this.queryMemberValidTime(1002).then(e => {
if (new Date(this.memberInfo.invalidDate).getTime() <= new Date('2022/06/30') if (new Date(this.memberInfo.invalidDate).getTime() <= new Date('2022/06/30')
.getTime()) { .getTime()) {
this.isOpen = true; this.isOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日'; this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day'); this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 4200; this.containerHeight = 4200;
this.queryStudentConsumerPreference(1).then(e => this.piechart()); this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex)); this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
} else { } else {
this.queryIsDredgeMember(1).then(() => { this.queryIsDredgeMember(1002, 1).then(() => {
if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this this.queryStudentConsumerPreference(1).then(e => this
.piechart()); .piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex)); .reportTypeIndex));
} else {
this.queryStudentConsumerPreference();
this.queryDayConsumerTrend();
}
}); });
} }
}) })
} else { } else {
if (new Date().getTime() <= new Date('2022/06/30').getTime()) { if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isOpen = true; this.isOpen = true;
this.flag = 0;
this.memberInfo.invalidDateStr = '2022年6月30日'; this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day'); this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day');
this.containerHeight = 4200; this.containerHeight = 4200;
this.queryStudentConsumerPreference(1).then(e => this.piechart()); this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex)); this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
} else { } else {
this.queryIsDredgeMember(1).then(() => { this.queryIsDredgeMember(1002, 1).then(() => {
if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
} else {
this.queryStudentConsumerPreference(); this.queryStudentConsumerPreference();
this.queryDayConsumerTrend(); this.queryDayConsumerTrend();
}
}); });
} }
} }
}); });
let tmpArr = [] 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 startWeek = dayjs().subtract(i, 'month').startOf('month');
let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d.getTime() ? dayjs() let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d.getTime() ? dayjs()
.subtract(i, 'month').endOf('month') : dayjs(); .subtract(i, 'month').endOf('month') : dayjs();
...@@ -515,16 +897,165 @@ ...@@ -515,16 +897,165 @@
this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate); this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate);
this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex].startDate; this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex].startDate;
this.diningSituations.diningSituationsDate = this.formatDate(this.minDate); this.diningSituations.diningSituationsDate = this.formatDate(this.minDate);
this.attendanceSituations.attendanceDate = this.formatDate(this.minDate);
this.queryCampusStudentInfo(); this.queryCampusStudentInfo();
let tmpDate=this.formatDateTwo(this.minDate); let tmpDate = this.formatDateTwo(this.minDate);
this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this
.dataRangeIndex].endDate).then(()=>{ .dataRangeIndex].endDate).then(() => {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[0]; if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[
0];
this.diningSituations.notRepastDetails = today; this.diningSituations.notRepastDetails = today;
} else {
this.diningSituations.notRepastDetails = {};
}
}); });
this.queryConsumerTrend(); this.queryConsumerTrend();
}, },
methods: { 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() { toImage: function() {
this.$nextTick(() => { this.$nextTick(() => {
html2cancas(document.getElementsByClassName("tainer")[0], { html2cancas(document.getElementsByClassName("tainer")[0], {
...@@ -574,8 +1105,7 @@ ...@@ -574,8 +1105,7 @@
this.dataRangeArr = tmpArr; this.dataRangeArr = tmpArr;
} else { } else {
let tmpArr = [] let tmpArr = []
if (new Date().getDate() > 5) { for (let i = 1; i <= 11; i++) {
for (let i = 0; i <= 11; i++) {
let startWeek = dayjs().subtract(i, 'month').startOf('month'); let startWeek = dayjs().subtract(i, 'month').startOf('month');
let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d let endWeek = dayjs().$d.getTime() > dayjs().subtract(i, 'month').endOf('month').$d
.getTime() ? .getTime() ?
...@@ -587,33 +1117,25 @@ ...@@ -587,33 +1117,25 @@
endDate: endWeek.format("YYYY-MM-DD") 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.dataRangeArr = tmpArr;
} }
this.minDate = new Date(this.dataRangeArr[this.dataRangeIndex].startDate); this.minDate = new Date(this.dataRangeArr[this.dataRangeIndex].startDate);
this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate); this.maxDate = new Date(this.dataRangeArr[this.dataRangeIndex].endDate);
if (this.tabIndex == 1) {
this.diningSituations.diningSituationsDate = this.formatDate(this.minDate); this.diningSituations.diningSituationsDate = this.formatDate(this.minDate);
this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex] this.diningSituations.diningSituationsRequestDate = this.dataRangeArr[this.dataRangeIndex]
.startDate; .startDate;
let tmpDate=this.formatDateTwo(this.minDate); let tmpDate = this.formatDateTwo(this.minDate);
this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this
.dataRangeIndex].endDate).then(()=>{ .dataRangeIndex].endDate).then(() => {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[0]; if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate ===
tmpDate)[0];
this.diningSituations.notRepastDetails = today; this.diningSituations.notRepastDetails = today;
});; } else {
this.diningSituations.notRepastDetails = {};
}
});
this.queryConsumerTrend(); this.queryConsumerTrend();
if (this.isOpen) { if (this.isOpen) {
this.queryStudentConsumerPreference(1).then(e => this.piechart()); this.queryStudentConsumerPreference(1).then(e => this.piechart());
...@@ -622,6 +1144,19 @@ ...@@ -622,6 +1144,19 @@
this.queryStudentConsumerPreference(); this.queryStudentConsumerPreference();
this.queryDayConsumerTrend(); 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) { formatter(day) {
const year = day.date.getFullYear(); const year = day.date.getFullYear();
...@@ -630,6 +1165,8 @@ ...@@ -630,6 +1165,8 @@
const date = day.date.getDate(); const date = day.date.getDate();
const datestr = date < 10 ? '0' + date : date; const datestr = date < 10 ? '0' + date : date;
const sum = year + '-' + monthstr + '-' + datestr; const sum = year + '-' + monthstr + '-' + datestr;
if (this.tabIndex == 1) { // 消费报告
if (this.diningSituations.notRepastDetailsDTOS) {
const contrastList = this.diningSituations.notRepastDetailsDTOS.filter(e => e const contrastList = this.diningSituations.notRepastDetailsDTOS.filter(e => e
.dayNotEatNumber != 0); .dayNotEatNumber != 0);
contrastList.forEach(item => { contrastList.forEach(item => {
...@@ -641,6 +1178,37 @@ ...@@ -641,6 +1178,37 @@
day.className = 'notice-day' 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; return day;
}, },
formatDate(date) { formatDate(date) {
...@@ -653,8 +1221,16 @@ ...@@ -653,8 +1221,16 @@
this.diningSituations.diningSituationsDate = this.formatDate(date); this.diningSituations.diningSituationsDate = this.formatDate(date);
var dateStr = var dateStr =
`${date.getFullYear()}-${date.getMonth()<9?'0'+(date.getMonth()+1):date.getMonth()+1}-${date.getDate()<10?'0'+date.getDate():date.getDate()}`; `${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]; let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === dateStr)[0];
this.diningSituations.notRepastDetails = today; this.diningSituations.notRepastDetails = today;
} else {
this.diningSituations.notRepastDetails = {};
}
},
attendanceDateSelect(date) {
this.attendanceSituations.attendanceDate = this.formatDate(date);
this.attendanceReprotDatail(this.formatDateTwo(date));
}, },
piechart: function() { piechart: function() {
var myChart = echarts.init(document.getElementById('consumer-preferences-pie')); var myChart = echarts.init(document.getElementById('consumer-preferences-pie'));
...@@ -714,7 +1290,7 @@ ...@@ -714,7 +1290,7 @@
var mySize = document.getElementById('consumer-trend-line'); var mySize = document.getElementById('consumer-trend-line');
mySize.style.width = 360 + 'px'; mySize.style.width = 360 + 'px';
mySize.style.height = 260 + '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 xdata = this.lineDatas.map(v => v.name);
var year = this.dataRangeArr[this.dataRangeIndex].startDate.slice(0, 4); var year = this.dataRangeArr[this.dataRangeIndex].startDate.slice(0, 4);
var month = this.dataRangeArr[this.dataRangeIndex].startDate.slice(5, 7); var month = this.dataRangeArr[this.dataRangeIndex].startDate.slice(5, 7);
...@@ -814,9 +1390,11 @@ ...@@ -814,9 +1390,11 @@
color: 'transparent' color: 'transparent'
} }
}, },
extraCssText: `width:109px;height:55px;line-height:33rpx;background: no-repeat center/100% url(../../static/images/consumeTrendbgm.png); 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;`, font-size:24rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;
color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
confine: true, confine: true,
position: function(pt) { position: function(pt) {
return [pt[0] - 27, pt[1] - 73]; return [pt[0] - 27, pt[1] - 73];
...@@ -827,9 +1405,249 @@ ...@@ -827,9 +1405,249 @@
} }
}, },
}; };
option && myChart.setOption(option); option && myLineChart.setOption(option);
window.addEventListener('resize', function() { 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 @@ ...@@ -849,8 +1667,7 @@
}) })
return return
} }
this.userInfo = data.obj; this.userInfo = data.obj || {};
} catch (e) { } catch (e) {
//TODO handle the exception //TODO handle the exception
console.log(e); console.log(e);
...@@ -865,7 +1682,8 @@ ...@@ -865,7 +1682,8 @@
async queryNotRepastDetails(startDate, endDate) { async queryNotRepastDetails(startDate, endDate) {
try { try {
let data = await this.$http.get({ 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'), schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'), userId: getQueryParams('userId'),
...@@ -880,6 +1698,10 @@ ...@@ -880,6 +1698,10 @@
}) })
return return
} }
if (!data.obj) {
this.diningSituations = {};
return;
}
this.diningSituations.notRepastDay = data.obj.notRepastDay; this.diningSituations.notRepastDay = data.obj.notRepastDay;
this.diningSituations.notRepastDetailsDTOS = data.obj.notRepastDetailsDTOS; this.diningSituations.notRepastDetailsDTOS = data.obj.notRepastDetailsDTOS;
this.diningSituations.cateringLevel = data.obj.cateringLevel; this.diningSituations.cateringLevel = data.obj.cateringLevel;
...@@ -922,12 +1744,13 @@ ...@@ -922,12 +1744,13 @@
}) })
return return
} }
if (!data.obj) return;
const tmpObj = data.obj; const tmpObj = data.obj;
this.isEatLow = tmpObj.canteenAmount / tmpObj.grossAmount < 0.5 ? true : false; this.isEatLow = tmpObj.canteenAmount / tmpObj.grossAmount < 0.5 ? true : false;
if (num) { if (num) {
this.pieDatas = [ this.pieDatas = [
[{ [{
name: '食堂', name: '正餐',
value: tmpObj.canteenAmount value: tmpObj.canteenAmount
}, { }, {
name: '超市', name: '超市',
...@@ -948,7 +1771,7 @@ ...@@ -948,7 +1771,7 @@
}) })
} }
}, },
// 查询消费总额 // 查询生活费额度
async queryConsumerTrend() { async queryConsumerTrend() {
try { try {
let data = await this.$http.get({ let data = await this.$http.get({
...@@ -968,6 +1791,7 @@ ...@@ -968,6 +1791,7 @@
}) })
return return
} }
if (!data.obj) return;
this.consumerAmountObj = data.obj; this.consumerAmountObj = data.obj;
this.isReasonable = this.consumerAmountObj.exceedRate >= 40 && this this.isReasonable = this.consumerAmountObj.exceedRate >= 40 && this
.consumerAmountObj.exceedRate <= .consumerAmountObj.exceedRate <=
...@@ -1009,6 +1833,7 @@ ...@@ -1009,6 +1833,7 @@
}) })
return return
} }
if (!data.obj) return;
var exceptionDate = data.obj.exceptionDate; var exceptionDate = data.obj.exceptionDate;
this.isAbnormal = exceptionDate.length ? true : false; this.isAbnormal = exceptionDate.length ? true : false;
var clues = ''; var clues = '';
...@@ -1038,8 +1863,115 @@ ...@@ -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 { try {
let data = await this.$http.get({ let data = await this.$http.get({
url: gHost + url: gHost +
...@@ -1047,7 +1979,7 @@ ...@@ -1047,7 +1979,7 @@
}, { }, {
schoolId: getQueryParams('schoolId'), schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'), userId: getQueryParams('userId'),
serviceItemCode: 4001 serviceItemCode
}) })
if (data.code != 200) { if (data.code != 200) {
uni.showToast({ uni.showToast({
...@@ -1057,15 +1989,53 @@ ...@@ -1057,15 +1989,53 @@
}) })
return return
} }
switch (serviceItemCode) {
case 1002:
this.isOpen = data.obj.status; 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 (num == 1) {
if (this.isOpen) { if (this.isOpen) {
this.queryMemberValidTime(); this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 4200; this.containerHeight = 4200;
this.flag = 0;
} else { } else {
this.queryMemberConsumerAmount(); this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 2340; 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) { } catch (e) {
//TODO handle the exception //TODO handle the exception
...@@ -1078,7 +2048,7 @@ ...@@ -1078,7 +2048,7 @@
} }
}, },
// 查询会员消费金额 // 查询会员消费金额
async queryMemberConsumerAmount() { async queryMemberConsumerAmount(serviceItemCode) {
try { try {
let data = await this.$http.get({ let data = await this.$http.get({
url: gHost + url: gHost +
...@@ -1086,7 +2056,7 @@ ...@@ -1086,7 +2056,7 @@
}, { }, {
schoolId: getQueryParams('schoolId'), schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'), userId: getQueryParams('userId'),
serviceItemCode: 4001 serviceItemCode
}) })
if (data.code != 200) { if (data.code != 200) {
uni.showToast({ uni.showToast({
...@@ -1096,7 +2066,7 @@ ...@@ -1096,7 +2066,7 @@
}) })
return return
} }
this.memberInfo.leastAmount = data.obj.leastAmount; this.memberInfo.leastAmount = data.obj.leastAmount || '';
} catch (e) { } catch (e) {
//TODO handle the exception //TODO handle the exception
console.log(e); console.log(e);
...@@ -1108,7 +2078,7 @@ ...@@ -1108,7 +2078,7 @@
} }
}, },
// 查询会员有效期 // 查询会员有效期
async queryMemberValidTime() { async queryMemberValidTime(serviceItemCode) {
try { try {
let data = await this.$http.get({ let data = await this.$http.get({
url: gHost + url: gHost +
...@@ -1116,7 +2086,7 @@ ...@@ -1116,7 +2086,7 @@
}, { }, {
schoolId: getQueryParams('schoolId'), schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'), userId: getQueryParams('userId'),
serviceItemCode: 4001 serviceItemCode
}) })
if (data.code != 200) { if (data.code != 200) {
uni.showToast({ uni.showToast({
...@@ -1128,6 +2098,7 @@ ...@@ -1128,6 +2098,7 @@
} }
this.memberInfo.differDay = data.obj.differDay; this.memberInfo.differDay = data.obj.differDay;
this.memberInfo.invalidDate = data.obj.invalidDate; this.memberInfo.invalidDate = data.obj.invalidDate;
if (data.obj.invalidDate) {
let month = data.obj.invalidDate.slice(5, 6) == 0 ? data let month = data.obj.invalidDate.slice(5, 6) == 0 ? data
.obj.invalidDate.slice(6, 7) : data.obj .obj.invalidDate.slice(6, 7) : data.obj
.invalidDate.slice(5, 7); .invalidDate.slice(5, 7);
...@@ -1136,6 +2107,9 @@ ...@@ -1136,6 +2107,9 @@
.invalidDate.slice(8); .invalidDate.slice(8);
this.memberInfo.invalidDateStr = data.obj.invalidDate this.memberInfo.invalidDateStr = data.obj.invalidDate
.slice(0, 4) + '' + month + '' + date + ''; .slice(0, 4) + '' + month + '' + date + '';
} else {
this.memberInfo.invalidDateStr = '';
}
} catch (e) { } catch (e) {
//TODO handle the exception //TODO handle the exception
console.log(e); console.log(e);
...@@ -1160,11 +2134,38 @@ ...@@ -1160,11 +2134,38 @@
} }
}); });
}, },
imageClick: function(src) {
this.imageDialogSrc = src;
this.imageDialogShow = true;
},
}, },
} }
</script> </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 { .tainer {
.school-report-header { .school-report-header {
height: 88rpx; height: 88rpx;
...@@ -1234,7 +2235,6 @@ ...@@ -1234,7 +2235,6 @@
} }
} }
.school-report-screen-item-two { .school-report-screen-item-two {
width: 270rpx; width: 270rpx;
display: flex; display: flex;
...@@ -1318,12 +2318,43 @@ ...@@ -1318,12 +2318,43 @@
} }
} }
.school-report-context-bgImg { .consumer-report-bgImg {
width: 100%; width: 100%;
height: 452rpx; height: 452rpx;
background: no-repeat center/100% url(../../static/images/consumeReportBg.png); 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 { .school-report-context-card {
width: 100%; width: 100%;
background: #E5F8F1; background: #E5F8F1;
...@@ -1334,12 +2365,11 @@ ...@@ -1334,12 +2365,11 @@
.school-report-context-card-one { .school-report-context-card-one {
width: 100%; width: 100%;
height: 598rpx;
background: #FFFFFF; background: #FFFFFF;
border-radius: 16rpx; border-radius: 16rpx;
margin-bottom: 40rpx; margin-bottom: 40rpx;
.school-report-context-card-one-img { .consumer-report-img {
width: 428rpx; width: 428rpx;
height: 428rpx; height: 428rpx;
background: no-repeat center/100% url(../../static/images/consumeReport.png); background: no-repeat center/100% url(../../static/images/consumeReport.png);
...@@ -1348,9 +2378,27 @@ ...@@ -1348,9 +2378,27 @@
left: 160rpx; left: 160rpx;
} }
.school-report-context-card-one-context { .attendance-report-img {
width: 613rpx; width: 428rpx;
margin: 0 30rpx 0 47rpx; 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; position: absolute;
top: 163rpx; top: 163rpx;
...@@ -1390,24 +2438,68 @@ ...@@ -1390,24 +2438,68 @@
} }
} }
} }
}
.school-report-context-card-title { .attendance-report-context-card-one-context {
height: 62rpx; padding: 163rpx 0 0;
display: flex; box-sizing: border-box;
justify-content: center;
.school-report-context-card-title-img { .attendance-report-context-card-one-context-item {
width: 318rpx; height: 40rpx;
background: no-repeat center/100% url(../../static/images/cardBg.png); font-size: 28rpx;
font-size: 32rpx; font-family: PingFangSC-Medium, PingFang SC;
font-family: PingFangSC-Semibold, PingFang SC; font-weight: 500;
font-weight: 600;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
line-height: 45rpx;
display: flex; display: flex;
justify-content: center; 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; 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 @@ ...@@ -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; height: 575rpx;
width: 690rpx; width: 690rpx;
.mark-green {
color: #04B871;
}
.mark-orange {
color: #F9793F;
}
.mark-yellow {
color: #DAA000;
}
/deep/ .van-calendar__weekdays { /deep/ .van-calendar__weekdays {
background: #F7FAF8; background: #F7FAF8;
} }
...@@ -1504,8 +2816,6 @@ ...@@ -1504,8 +2816,6 @@
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
border-radius: 22rpx; border-radius: 22rpx;
width: 88rpx;
height: 88rpx;
} }
/deep/ .van-calendar__top-info { /deep/ .van-calendar__top-info {
...@@ -1518,100 +2828,343 @@ ...@@ -1518,100 +2828,343 @@
margin: 12rpx 0 4rpx; margin: 12rpx 0 4rpx;
} }
/deep/ .notice-day { /deep/ .late-day {
color: #F9793F; color: #F9793F;
background: rgba(249, 121, 63, .1); background: rgba(249, 121, 63, .1);
border-radius: 22rpx; border-radius: 22rpx;
width: 88rpx; width: 88rpx;
height: 88rpx; height: 88rpx;
margin-right: 10rpx; margin-left: 10rpx;
display: flex;
align-items: flex-end;
} }
/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 { /deep/ .champion-day {
height: 132rpx; color: #DAA000;
background: no-repeat center/100% url(../../static/images/diningSituations.png); background: url(../../static/images/champion.png) no-repeat -4rpx center/100%;
padding: 55rpx 42rpx 30rpx 29rpx; 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; 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; 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; width: 130rpx;
height: 43rpx; height: 43rpx;
border-radius: 8rpx; border-radius: 8rpx;
border: 1rpx solid #04B871; border: 1rpx solid #04B871;
font-size: 28rpx; font-size: 28rpx;
font-family: FontName; font-family: FontName;
font-weight: 600; font-weight: 700;
font-style: italic; font-style: italic;
color: #04B871; color: #04B871;
margin-right: 65rpx;
display: flex; display: flex;
justify-content: center; 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; display: flex;
justify-content: space-between;
position: absolute;
margin-left: 71rpx;
.school-report-context-card-two-details-meal-txt { .attendance-report-details-item {
width: 56rpx; height: 40rpx;
margin-right: 8rpx;
.attendance-report-time {
display: flex;
font-size: 28rpx; font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
line-height: 40rpx; 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; display: flex;
align-items: center; align-items: center;
margin-right: 48rpx;
&.school-report-context-card-two-details-meal-logo-two { .early-champions-img {
margin-right: 56rpx; 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 { .early-champions-txt {
margin: 0; font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #916610;
}
}
}
} }
.school-report-context-card-two-details-meal-img { .attendance-report-details-img-item {
width: 48rpx; 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; 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 { image {
width: 100%;
height: 100%; height: 100%;
}
}
}
}
}
}
}
.image-dialog {
width: 620rpx;
height: 800rpx;
image {
width: 100%; width: 100%;
max-height: 100%; height: 100%;
max-width: 100%;
} }
} }
.school-report-context-card-two-details-meal-noeat { .pubTalk-report-context-card-two {
width: 40rpx; height: 506rpx;
height: 40rpx; background: #FFFFFF;
background: rgba(249, 121, 63, 0.17); border-radius: 16rpx;
border-radius: 12rpx; margin: 0 0 40rpx;
.call-number-bar-unit {
margin: 0 0 28rpx 28rpx;
height: 33rpx;
font-size: 24rpx; font-size: 24rpx;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 500; font-weight: 400;
color: #F9793F; color: rgba(0, 0, 0, 0.5);
display: flex; line-height: 33rpx;
justify-content: center; }
align-items: center;
#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 @@ ...@@ -1756,7 +3309,6 @@
height: 634rpx; height: 634rpx;
background: #FFFFFF; background: #FFFFFF;
border-radius: 16rpx; border-radius: 16rpx;
margin-bottom: 37rpx;
position: relative; position: relative;
.school-report-context-card-five-conclusion { .school-report-context-card-five-conclusion {
...@@ -1780,6 +3332,7 @@ ...@@ -1780,6 +3332,7 @@
#consumer-trend-line { #consumer-trend-line {
position: absolute; position: absolute;
top: 120rpx; top: 120rpx;
left: 10rpx;
z-index: 100; z-index: 100;
} }
...@@ -1823,13 +3376,12 @@ ...@@ -1823,13 +3376,12 @@
} }
} }
} }
} }
.school-report-footer { .school-report-footer {
height: 169rpx; height: 169rpx;
margin: 0 0 43rpx; margin: 40rpx 0 43rpx;
padding: 33rpx 34rpx 42rpx 42rpx; padding: 33rpx 34rpx 42rpx 42rpx;
box-sizing: border-box; box-sizing: border-box;
background: no-repeat center/100% url(../../static/images/extendPermissionsBg.png); background: no-repeat center/100% url(../../static/images/extendPermissionsBg.png);
...@@ -1880,16 +3432,17 @@ ...@@ -1880,16 +3432,17 @@
} }
} }
} }
// 出入校报告
} }
.no-open { .no-open {
width: 100%; 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; 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; padding: 309rpx 30rpx 63rpx;
box-sizing: border-box; box-sizing: border-box;
z-index: 101;
.no-open-solution { .no-open-solution {
height: 40rpx; height: 40rpx;
...@@ -1956,8 +3509,19 @@ ...@@ -1956,8 +3509,19 @@
.summary-item-icon { .summary-item-icon {
font-size: 40rpx; font-size: 40rpx;
line-height: 45rpx; line-height: 45rpx;
}
.consumer-report-icon {
margin: 0 45rpx 0 70rpx; 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 { .open-results-items-details {
...@@ -2017,6 +3581,92 @@ ...@@ -2017,6 +3581,92 @@
background: no-repeat center/100% url(../../static/images/consumerTrend.png); background: no-repeat center/100% url(../../static/images/consumerTrend.png);
margin-right: 25rpx; 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 @@ ...@@ -14,7 +14,7 @@
</view> </view>
<view class="cardBox"> <view class="cardBox">
<view v-if="ifShow"> <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="temperatureResult">
<view class="studentInfo"> <view class="studentInfo">
<view class="studentName"> <view class="studentName">
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</view> </view>
<view class="cardBox"> <view class="cardBox">
<view v-if="ifShow"> <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="temperatureResult">
<view class="studentInfo"> <view class="studentInfo">
<view class="studentName"> <view class="studentName">
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</view> </view>
<view class="cardBox"> <view class="cardBox">
<view v-if="ifShow"> <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="temperatureResult">
<view class="studentInfo"> <view class="studentInfo">
<view class="studentName"> <view class="studentName">
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</view> </view>
<view class="cardBox"> <view class="cardBox">
<view v-if="ifShow"> <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="temperatureResult">
<view class="studentInfo"> <view class="studentInfo">
<view class="studentName"> <view class="studentName">
......
...@@ -4,7 +4,10 @@ ...@@ -4,7 +4,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <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"> <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> <title>
<%= htmlWebpackPlugin.options.title %> <%= htmlWebpackPlugin.options.title %>
</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