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

解决冲突

parents 181687dd 5400418d
<template>
<view class="tainer" :style="{height:containerHeight+'rpx'}">
<view v-if="showReport">
<view class="school-report-header-bg">
</view>
<view class="school-report-header-position">
<view class="school-report-header">
<view class="school-report-header-item">
<view class="user-avatar">
......@@ -18,7 +21,8 @@
<view class="school-report-screen">
<view class="school-report-screen-item">
<view class="school-report-type">
<picker @change="schoolReportChange" :value="reportTypeIndex" :range="reportTypeArr">
<picker @change="schoolReportChange" :value="reportTypeIndex"
:range="reportTypeArr">
<view class="uni-input">{{reportTypeArr[reportTypeIndex]}}</view>
</picker>
</view>
......@@ -38,20 +42,25 @@
</view>
</view>
</view>
<view class="school-report-context">
<view class="school-report-context-tab">
<view class="school-report-context-tab-item">
<view v-if="isService" class="school-report-context-tab-item-one"
:class="tabIndex==1?'active':''" @tap="tabTap(1)">
<text>消费报告</text>
<view class="tab-title"><text>消费报告</text></view>
<view :class="tabIndex==1?'active-bottomline':''">
</view>
</view>
<view v-if="isAttendanceService" class="school-report-context-tab-item-one"
:class="tabIndex==2?'active':''" @tap="tabTap(2)">
<text>出入校报告</text>
<view class="tab-title"><text>出入校报告</text></view>
<view :class="tabIndex==2?'active-bottomline':''">
</view>
</view>
<view v-if="isPubTalkService" class="school-report-context-tab-item-one"
:class="tabIndex==3?'active':''" @tap="tabTap(3)">
<text>公话报告</text>
<view class="tab-title"><text>公话报告</text></view>
<view :class="tabIndex==3?'active-bottomline':''">
</view>
</view>
</view>
<view class="school-report-context-tab-item-two">
......@@ -64,10 +73,13 @@
</view>
</view>
</view>
</view>
<view v-if="tabIndex" class="school-report-context">
<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" :style="{height:[598,256,525][tabIndex-1]+'rpx'}">
<view class="school-report-context-card-one"
:style="{height:[804,256,pubTalkSummaryHeight][tabIndex-1]+'rpx'}">
<view :class="['consumer-report-img','attendance-report-img','pubTalk-report-img'][tabIndex-1]">
</view>
<!-- 消费报告 -->
......@@ -109,8 +121,7 @@
的同学<text v-if="isReasonable">,请及时评估生活费是否合理</text>
</view>
</view>
<view
class="school-report-context-card-one-context-item school-report-context-card-one-context-item-last">
<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">
</view>
......@@ -121,12 +132,41 @@
<text v-else>每日消费金额较稳定,继续保持哦</text>
</view>
</view>
<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">
</view>
</view>
<view v-if="!abnormalStr" class="school-report-context-card-one-context-txt">
早、中、晚餐就餐时间较稳定,按时吃饭,自律如昔,你就赢了大多数人
</view>
<view v-else class="school-report-context-card-one-context-txt">
<text class="txt-important">{{abnormalStr}}</text>的就餐时间跟同班同学相差超20分钟,如果快乐很难,那么按时吃饭
</view>
</view>
<view
class="school-report-context-card-one-context-item school-report-context-card-one-context-item-last">
<view class="school-report-context-card-one-context-dot">
<view class="school-report-context-card-one-context-dot-item">
</view>
</view>
<view v-if="!mealPalArr.length" class="school-report-context-card-one-context-txt">
独立的<text class="txt-important">{{userInfo.userName}}</text>很棒,偶尔也可以叫上朋友一起吃饭哦</text>
</view>
<view v-else-if="mealPalArr.length==1"
class="school-report-context-card-one-context-txt">
最佳饭友非<text class="txt-important">{{mealPalStr}}</text>莫属,有饭友吃嘛嘛香</text>
</view>
<view v-else class="school-report-context-card-one-context-txt">
最佳干饭组合,赶快叫上<text class="txt-important">{{mealPalStr}}</text>一起吃饭吧</text>
</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>
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>
......@@ -260,7 +300,7 @@
</view>
</view>
</view>
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-three">
<view v-show="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>
......@@ -277,7 +317,7 @@
<view id="consumer-preferences-pie">
</view>
</view>
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-four">
<view v-show="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>
......@@ -329,7 +369,7 @@
</view>
</view>
</view>
<view v-if="tabIndex==1&&isOpen" class="school-report-context-card-five">
<view v-show="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>
......@@ -360,17 +400,173 @@
</view>
</view>
</view>
<view v-show="tabIndex==1&&isOpen" class="school-report-context-card-six">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>就餐时间趋势</text>
</view>
</view>
<view class="school-report-context-card-six-conclusion">
<view class="school-report-context-card-six-conclusion-item">
<text v-if="!abnormalStr">早、中、晚餐就餐时间较稳定,按时吃饭,自律如昔,你就赢了大多数人</text>
<text v-else>
<text class="abnormal-date">{{abnormalStr}}</text>的就餐时间跟同班同学相差超20分钟,如果快乐很难,那么按时吃饭
</text>
</view>
</view>
<view v-if="mealtypeArr.indexOf(1)!=-1" class="mealtime-trends">
<view class="mealtime-trends-theme">
<view class="meal-type">
<text>早餐</text>
</view>
<view class="user-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left">
</view>
<view class="user-meal-time-logo-middle">
</view>
<view class="user-meal-time-logo-right">
</view>
</view>
<view class="user-meal-time-txt">
<text>就餐时间</text>
</view>
</view>
<view class="class-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left" style="background: rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-middle"
style="border: 3rpx solid rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-right" style="background: rgba(0, 0, 0, 0.5)">
</view>
</view>
<view class="user-meal-time-txt">
<text>班级集中就餐时间</text>
</view>
</view>
</view>
</view>
<view v-if="mealtypeArr.indexOf(1)!=-1" id="breakfast-time-line">
</view>
<view v-if="mealtypeArr.indexOf(2)!=-1" class="mealtime-trends"
style="position: relative;top:-134rpx">
<view class="mealtime-trends-theme">
<view class="meal-type">
<text>中餐</text>
</view>
<view class="user-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left">
</view>
<view class="user-meal-time-logo-middle">
</view>
<view class="user-meal-time-logo-right">
</view>
</view>
<view class="user-meal-time-txt">
<text>就餐时间</text>
</view>
</view>
<view class="class-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left" style="background: rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-middle"
style="border: 3rpx solid rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-right" style="background: rgba(0, 0, 0, 0.5)">
</view>
</view>
<view class="user-meal-time-txt">
<text>班级集中就餐时间</text>
</view>
</view>
</view>
</view>
<view v-if="mealtypeArr.indexOf(2)!=-1" id="lunch-time-line">
</view>
<view v-if="mealtypeArr.indexOf(3)!=-1" class="mealtime-trends"
style="position: relative;top:-286rpx">
<view class="mealtime-trends-theme">
<view class="meal-type">
<text>晚餐</text>
</view>
<view class="user-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left">
</view>
<view class="user-meal-time-logo-middle">
</view>
<view class="user-meal-time-logo-right">
</view>
</view>
<view class="user-meal-time-txt">
<text>就餐时间</text>
</view>
</view>
<view class="class-meal-time">
<view class="user-meal-time-logo">
<view class="user-meal-time-logo-left" style="background: rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-middle"
style="border: 3rpx solid rgba(0, 0, 0, 0.5)">
</view>
<view class="user-meal-time-logo-right" style="background: rgba(0, 0, 0, 0.5)">
</view>
</view>
<view class="user-meal-time-txt">
<text>班级集中就餐时间</text>
</view>
</view>
</view>
</view>
<view v-if="mealtypeArr.indexOf(3)!=-1" id="dinner-time-line">
</view>
</view>
<view v-show="tabIndex==1&&isOpen" class="school-report-context-card-seven">
<view class="school-report-context-card-title">
<view class="school-report-context-card-title-img">
<text>饭友分析</text>
</view>
</view>
<view class="school-report-context-card-seven-conclusion">
<view class="school-report-context-card-seven-conclusion-item">
<text v-if="!mealPalArr.length">
独立的<text class="abnormal-date">{{userInfo.userName}}</text>很棒,偶尔也可以叫上朋友一起吃饭哦</text>
</text>
<text v-else-if="mealPalArr.length==1">
最佳饭友非<text class="abnormal-date">{{mealPalStr}}</text>莫属,有饭友吃嘛嘛香</text>
</text>
<text v-else>
最佳干饭组合,赶快叫上<text class="abnormal-date">{{mealPalStr}}</text>一起吃饭吧</text>
</text>
</view>
</view>
<view class="meal-pal-bar-unit">
<view class="meal-pal-bar-unit-item">
<view class="meal-pal-bar-icon">
</view>
<view class="meal-pal-bar-txt">
<text>一起就餐天数</text>
</view>
</view>
</view>
<view id="meal-pal-bar">
</view>
</view>
<!-- 出入校报告 -->
<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>
<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>
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">
......@@ -397,14 +593,16 @@
<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-orange">早退</span>
<span v-if="item.topInfo=='冠军'" class="mark-yellow">冠军</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-if="tabIndex==2&&isAttendanceOpen" class="attendance-report-context-details"
:style="{height:attendanceReportDatail.length?858:620+'rpx',overflow:attendanceReportDatail.length?'scroll':'none',top:attendanceReportDatail.length?-30:0+'rpx'}">
<view v-for="(detailItem,detailIndex) in attendanceReportDatail" :key="detailIndex">
<view v-if="detailItem.attendIntervalType&&detailItem.attendIntervalType!=-1"
class="attendance-report-context-card-two-details">
......@@ -428,6 +626,8 @@
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>
......@@ -437,7 +637,7 @@
</view>
</view>
</view>
<view class="attendance-report-context-card-three">
<view v-if="attendanceReportDatail.length" 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">
......@@ -469,17 +669,26 @@
<text>早到冠军</text>
</view>
</view>
<view v-else-if="item.describeContent=='非常不错哦,比昨天早到'"
class="early-champions" style="width: 368rpx">
<view class="progress-img">
</view>
<view class="early-champions-txt">
<text>非常不错哦,比昨天早到</text>
</view>
</view>
</view>
<view class="attendance-report-details-img-item">
<view class="attendance-report-time-details">
<view v-if="item.describeContent!='当日早到冠军'"
<view
v-if="item.describeContent!='当日早到冠军'&&item.describeContent!='非常不错哦,比昨天早到'"
class="attendance-report-time-details-item">
<text>{{item.describeContent}}</text>
</view>
<view class="attendance-report-time-details-icon">
</view>
</view>
</view>
<view class="attendance-report-details-img-item">
<view class="attendance-report-details-img-box">
<image v-if="item.attendImage" :src="item.attendImage" mode=""
@click="imageClick(item.attendImage)">
......@@ -491,6 +700,24 @@
</view>
</view>
</view>
<view v-if="!attendanceReportDatail.length" class="noAttendanceReportDatail">
<view 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>
<view class="attendance-report-context-card-two-details-date">
<text>{{attendanceSituations.attendanceDate}}</text>
</view>
</view>
</view>
<view class="noAttendanceReportDatailImg">
</view>
</view>
</view>
<van-dialog v-model="imageDialogShow" width="620rpx">
<view class="image-dialog">
......@@ -548,7 +775,7 @@
<view id="leave-message-bar">
</view>
</view>
<view v-if="isOpen||isPubTalkOpen||isAttendanceOpen" class="school-report-footer">
<view v-if="tabIndex&&flag!=tabIndex" class="school-report-footer">
<view class="school-report-footer-item">
<view class="school-report-footer-item-txt">
<text>到期后将无法查看完整报告</text>
......@@ -566,8 +793,8 @@
</view>
</view>
</view>
<view v-if="flag==tabIndex" class="no-open"
:style="{height:[915,845,891][tabIndex-1]+'rpx',top:[1425,1099,1260][tabIndex-1]+'rpx'}">
<view v-if="tabIndex&&flag==tabIndex" class="no-open"
:style="{height:[992,845,891][tabIndex-1]+'rpx',top:[1620,1099,pubTalkNoopenHeight][tabIndex-1]+'rpx'}">
<view class="no-open-solution" @tap="equityPay">
<view class="no-open-solution-txt">
<text>最低{{memberInfo.leastAmount}}元/天开通,查看完整{{['消费','出入校','公话'][tabIndex-1]}}报告</text>
......@@ -576,66 +803,110 @@
</view>
</view>
<view class="open-results">
<view class="open-results-title">
<!-- 消费报告 -->
<view v-if="tabIndex==1" class="open-results-title consume-open-results-title">
<text>开通后,掌握消费动态、更省心</text>
</view>
<view v-else class="open-results-title">
<text>开通后,你将解锁</text>
</view>
<view class="open-results-items">
<view class="open-results-items-summary">
<view class="open-results-items" :class="tabIndex==1?'consume-open-results-items':''">
<view v-if="tabIndex==2||tabIndex==3" class="open-results-items-summary">
<view class="summary-item">
<text>{{['月度消费报告','实时推送','音视频通话'][tabIndex-1]}}</text>
<text>{{['实时推送','音视频通话'][tabIndex-2]}}</text>
</view>
<view class="summary-item-icon"
:class="['consumer-report-icon','attendance-report-icon','pubTalk-report-icon'][tabIndex-1]">
:class="['attendance-report-icon','pubTalk-report-icon'][tabIndex-2]">
<text>+</text>
</view>
<view class="summary-item">
<text>{{['消费总结','月度出入校报告','月度公话报告'][tabIndex-1]}}</text>
<text>{{['月度出入校报告','月度公话报告'][tabIndex-2]}}</text>
</view>
</view>
<view class="open-results-items-details">
<!-- 消费报告 -->
<view v-if="tabIndex==1">
<view class="open-results-items-details-item">
<view v-if="tabIndex==1" class="consume-open-results-items-details">
<view class="consume-open-results-items-details-item">
<view class="details-item-left">
<view class="details-item-up">
<text>孩子是否缺餐?</text>
</view>
<view class="details-item-down">
<view class="dining-situations-img">
</view>
<view class="open-results-items-details-item-txt">
<text>就餐情况分析</text>
<view class="details-item-down-txt">
<text>【就餐情况】告诉你</text>
</view>
<view class="consumer-rationality-img">
</view>
<view class="open-results-items-details-item-txt">
<text>消费合理性</text>
</view>
<view class="details-item-left">
<view class="details-item-up">
<text>孩子在校交友了?</text>
</view>
<view class="open-results-items-details-item">
<view class="consumer-preference-img">
<view class="details-item-down">
<view class="meal-pal-img">
</view>
<view class="open-results-items-details-item-txt">
<text>消费偏好分析</text>
<view class="details-item-down-txt">
<text>【饭友分析】告诉你</text>
</view>
<view class="consumer-advice-img">
</view>
<view class="open-results-items-details-item-txt">
<text>消费建议</text>
</view>
</view>
<view class="open-results-items-details-item">
<view class="consume-open-results-items-details-item">
<view class="details-item-left">
<view class="details-item-up">
<text>消费偏高还是偏低?</text>
</view>
<view class="details-item-down">
<view class="consumer-num-img">
</view>
<view class="open-results-items-details-item-txt">
<text>生活费额度分析</text>
<view class="details-item-down-txt">
<text>【生活费额度】直观看</text>
</view>
</view>
<view class="open-results-items-details-item">
</view>
<view class="details-item-left">
<view class="details-item-up">
<text>孩子正餐超市消费多?</text>
</view>
<view class="details-item-down">
<view class="consumer-preference-img">
</view>
<view class="details-item-down-txt">
<text>【消费偏好】直观看</text>
</view>
</view>
</view>
</view>
<view class="consume-open-results-items-details-item">
<view class="details-item-left">
<view class="details-item-up">
<text>担心孩子被迫高额消费?</text>
</view>
<view class="details-item-down">
<view class="consumer-trend-img">
</view>
<view class="open-results-items-details-item-txt">
<text>消费趋势分析</text>
<view class="details-item-down-txt">
<text>【消费趋势】告诉你</text>
</view>
</view>
</view>
<view class="details-item-left">
<view class="details-item-up">
<text>孩子是否准时就餐?</text>
</view>
<view class="details-item-down">
<view class="time-trends-img">
</view>
<view class="details-item-down-txt">
<text>【就餐时间趋势】告诉你</text>
</view>
</view>
</view>
</view>
</view>
<view v-else class="open-results-items-details">
<!-- 出入校报告 -->
<view v-else-if="tabIndex==2">
<view v-if="tabIndex==2">
<view class="open-results-items-details-item">
<view class="admission-notice-img">
</view>
......@@ -645,7 +916,7 @@
<view class="admission-analysis-img">
</view>
<view class="open-results-items-details-item-txt">
<text>情况分析</text>
<text>情况分析</text>
</view>
</view>
<view class="open-results-items-details-item">
......@@ -719,7 +990,7 @@
</view>
</view>
</view>
<view v-else class="nodata">
<view v-else class="nodata" @click="nodataClick">
<view class="nodataImg">
<img style="width: 100%"
src="https://xiaopay2020.oss-cn-shenzhen.aliyuncs.com/static/weapp/images/purchaseChart.gif" />
......@@ -728,8 +999,20 @@
<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 v-model="dialogShow" :showConfirmButton="false" close-on-click-overlay
style="width: 90%;background: linear-gradient(225deg, #0ADD80 0%, #04B871 100%);margin: 100rpx 0 0;">
<view class="htmlCanvasTxt">
<view class="htmlCanvasTxt1">
<text>长按下方图片分享</text>
</view>
<view class="htmlCanvasTxt2">
<text>您可以分享给好友,或者保存到手机</text>
</view>
</view>
<view class="htmlCanvasBox">
<view class="htmlCanvas" id="htmlCanvas" ref="imgCanvas">
</view>
</view>
</van-dialog>
</view>
</view>
......@@ -777,7 +1060,7 @@
maxDate: new Date(),
imgUrl: '', // 存储base64图片
dialogShow: false,
tabIndex: 1,
tabIndex: 0,
// 就餐情况
diningSituations: {
diningSituationsDate: '',
......@@ -802,6 +1085,16 @@
consumerTrend: {},
isAbnormal: false,
lineDatas: [],
// 饭友分析
mealPalData: [],
mealPalArr: [],
mealPalStr: '',
// 就餐时间趋势
breakfastAbnormalStr: '',
lunchAbnormalStr: '',
dinnerAbnormalStr: '',
mealtypeArr: [],
mealtimeTrendsData: [],
// 出入校报告数据
attendanceSituations: {
attendanceDate: '',
......@@ -842,10 +1135,34 @@
differDay: ''
},
containerHeight: '',
pubTalkSummaryHeight: 275,
pubTalkNoopenHeight: 1260,
isnodataClick: false
}
},
computed: {
abnormalStr() {
if (this.mealtypeArr.length) {
var breakfastAbnormalStr = this.mealtimeAbnormalDate(1);
var lunchAbnormalStr = this.mealtimeAbnormalDate(2);
var dinnerAbnormalStr = this.mealtimeAbnormalDate(3);
var str1 = breakfastAbnormalStr ? breakfastAbnormalStr + '早餐' : '';
var str2 = lunchAbnormalStr ? lunchAbnormalStr + '中餐' : '';
var str3 = dinnerAbnormalStr ? dinnerAbnormalStr + '晚餐' : '';
var str = str1 ? (str1 + (str2 ? ('' + str2 + (str3 ? '' + str3 : '')) : (str3 ? '' + str3 : ''))) :
(str2 ? (str2 + (str3 ? '' + str3 : '')) : (str3 ? str3 : ''));
} else {
var str = ''
}
return str;
}
},
mounted() {
if (this.isPeakPeriod()) {
this.init()
},
methods: {
init() {
if (this.isPeakPeriod() && !this.isnodataClick) {
this.showReport = false;
return
}
......@@ -863,7 +1180,8 @@
// 有无进出校、公话入口
this.queryMemberServcieItem().then(() => {
if (this.queryMemberServcieItemList.length) {
this.isAttendanceService = this.queryMemberServcieItemList.indexOf(3002) == -1 ? false : true;
this.isAttendanceService = this.queryMemberServcieItemList.indexOf(3002) == -1 ? false :
true;
this.isPubTalkService = this.queryMemberServcieItemList.indexOf(2002) == -1 ? false : true;
}
})
......@@ -873,19 +1191,58 @@
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.tabIndex = 1;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day') + 1;
this.containerHeight = 4200;
this.queryConsumerSummaryAmount(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
this.queryMealPalAnalyse().then(() => this.mealPalBarchart());
this.queryRepastTimeTrend().then(() => {
if (this.mealtypeArr.indexOf(1) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'breakfast-time-line',
1);
}
if (this.mealtypeArr.indexOf(2) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'lunch-time-line',
2);
}
if (this.mealtypeArr.indexOf(3) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'dinner-time-line',
3);
}
})
} else {
this.tabIndex = 1;
this.queryIsDredgeMember(1002, 1).then(() => {
this.queryConsumerSummaryAmount(1).then(e => this
.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
this.queryMealPalAnalyse().then(() => this.mealPalBarchart());
this.queryRepastTimeTrend().then(() => {
if (this.mealtypeArr.indexOf(1) != -1) {
this.breakfastTimeLinechart(this
.reportTypeIndex,
'breakfast-time-line',
1);
}
if (this.mealtypeArr.indexOf(2) != -1) {
this.breakfastTimeLinechart(this
.reportTypeIndex, 'lunch-time-line',
2);
}
if (this.mealtypeArr.indexOf(3) != -1) {
this.breakfastTimeLinechart(this
.reportTypeIndex, 'dinner-time-line',
3);
}
})
});
}
})
......@@ -893,16 +1250,36 @@
if (new Date().getTime() <= new Date('2022/06/30').getTime()) {
this.isOpen = true;
this.flag = 0;
this.tabIndex = 1;
this.memberInfo.invalidDateStr = '2022年6月30日';
this.memberInfo.differDay = dayjs('2022/06/30').diff(dayjs(), 'day') + 1;
this.containerHeight = 4200;
this.queryConsumerSummaryAmount(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this.reportTypeIndex));
this.queryMealPalAnalyse().then(() => this.mealPalBarchart());
this.queryRepastTimeTrend().then(() => {
if (this.mealtypeArr.indexOf(1) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'breakfast-time-line',
1);
}
if (this.mealtypeArr.indexOf(2) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex, 'lunch-time-line',
2);
}
if (this.mealtypeArr.indexOf(3) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex, 'dinner-time-line',
3);
}
})
} else {
this.tabIndex = 1;
this.queryIsDredgeMember(1002, 1).then(() => {
this.queryConsumerSummaryAmount();
this.queryDayConsumerTrend();
});
this.queryMealPalAnalyse();
this.queryRepastTimeTrend();
})
}
}
});
......@@ -930,22 +1307,26 @@
this.queryNotRepastDetails(this.dataRangeArr[this.dataRangeIndex].startDate, this.dataRangeArr[this
.dataRangeIndex].endDate).then(() => {
if (this.diningSituations.notRepastDetailsDTOS) {
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate === tmpDate)[
let today = this.diningSituations.notRepastDetailsDTOS.filter(e => e.repastDate ===
tmpDate)[
0];
this.diningSituations.notRepastDetails = today;
} else {
this.diningSituations.notRepastDetails = {};
}
});
if (this.isPubTalkService) {
this.getPubTalkReport();
}
},
methods: {
// 当天6:30 ~ 9:00,11:30 ~ 12:00, 17:30 ~ 19:00属于高峰期
// 当天11:00 ~ 13: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;
let first = this.timeIn("11:00:00", "13:00:00");
return first;
},
nodataClick: function() {
this.isnodataClick = true
this.init()
},
/*在某段时间内*/
timeIn(s, e) {
......@@ -987,11 +1368,30 @@
this.queryConsumerSummaryAmount(1).then(e => this.piechart());
this.queryDayConsumerTrend(1).then(e => this.linechart(this
.reportTypeIndex));
this.queryMealPalAnalyse().then(() => this.mealPalBarchart());
this.queryRepastTimeTrend().then(() => {
if (this.mealtypeArr.indexOf(1) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'breakfast-time-line',
1);
}
if (this.mealtypeArr.indexOf(2) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'lunch-time-line',
2);
}
if (this.mealtypeArr.indexOf(3) != -1) {
this.breakfastTimeLinechart(this.reportTypeIndex,
'dinner-time-line',
3);
}
})
} else {
this.queryConsumerSummaryAmount();
this.queryDayConsumerTrend();
}
})
} else if (num == 2) {
if (flag) {
this.attendanceSituations.attendanceDate = this.formatDate(this.minDate);
......@@ -1010,7 +1410,7 @@
if (this.attendanceReportDatail.length) {
this.containerHeight = 2762;
} else {
this.containerHeight = 1904;
this.containerHeight = 2524;
}
});
}
......@@ -1037,23 +1437,21 @@
this.memberInfo.differDay = '';
this.memberInfo.invalidDateStr = '';
this.memberInfo.leastAmount = '';
this.getPubTalkReport().then(() => {
this.queryIsDredgeMember(2002).then(e => {
if (this.isPubTalkOpen) {
this.getPubTalkReport().then(() => {
this.$nextTick(() => {
this.callNumberBarchart();
this.callDurationBarchart();
this.leaveMessageBarchart();
})
})
} else {
this.getPubTalkReport().then(() => {
this.$nextTick(() => {
this.callNumberBarchart();
})
})
}
})
})
}
}
},
......@@ -1061,6 +1459,10 @@
this.$nextTick(() => {
html2cancas(document.getElementsByClassName("tainer")[0], {
useCORS: true,
// 解决截图不完整问题
scale: 1,
height: document.getElementsByClassName("tainer")[0].scrollHeight,
windowHeight: document.getElementsByClassName("tainer")[0].scrollHeight
}).then((canvas) => {
let htmlCanvas = document.getElementById('htmlCanvas');
let url = canvas.toDataURL('image/png');
......@@ -1068,7 +1470,8 @@
let img = document.createElement("img");
img.setAttribute('src', this.imgUrl);
img.setAttribute('class', 'htmlCanvasImg');
img.style.width = '100vw';
img.style.width = '83vw';
img.style.borderRadius = '15px';
htmlCanvas.appendChild(img);
})
})
......@@ -1139,7 +1542,7 @@
const lunchTxt = item.lunchStatus ? '' : '';
const supperTxt = item.supperStatus ? '' : '';
day.topInfo = breakfastTxt + lunchTxt + supperTxt;
if(day.topInfo){
if (day.topInfo) {
day.className = 'notice-day'
}
}
......@@ -1151,10 +1554,11 @@
.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);
// 迟到 早退 旷课
const progressList = this.attendanceReport.abnomalDateList.filter(e => e.abnomalType == 7);
// 迟到 早退 未到校
abnomalList.forEach(item => {
if (sum == item.attendDate.slice(0, 10)) {
var topInfo = item.abnomalType == 5 ? '旷课' : item.abnomaleName;
var topInfo = item.abnomalType == 5 ? '未到校' : item.abnomaleName;
day.topInfo = topInfo;
day.className = 'late-day';
}
......@@ -1173,6 +1577,13 @@
day.className = 'champion-day';
}
})
// 进步
progressList.forEach(item => {
if (sum == item.attendDate.slice(0, 10)) {
day.topInfo = item.abnomaleName;
day.className = 'progress-day';
}
})
}
}
return day;
......@@ -1376,6 +1787,324 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
myLineChart.resize();
})
},
// 就餐时间趋势
breakfastTimeLinechart: function(num, eleId, mealtype) {
var mySize = document.getElementById(eleId);
mySize.style.width = 350 + 'px';
mySize.style.height = 260 + 'px';
var myBreakfastTimeLineChart = echarts.init(mySize);
var cateringList = this.mealtimeTrendsData.filter(e => e.mealtype == mealtype)[0].cateringList;
var breakfastTimeData = JSON.parse(JSON.stringify(cateringList));
var breakfastTimeDataTwo = JSON.parse(JSON.stringify(cateringList));
breakfastTimeData.forEach(e => {
if ('itemStyle' in e) delete e.itemStyle;
if ('symbol' in e) delete e.symbol;
if ('symbolSize' in e) delete e.symbolSize;
if (e.classmealtime.indexOf('2022/07/01') == -1) {
e.classmealtime = "2022/07/01 " + e.classmealtime
}
e.value = e.classmealtime;
});
breakfastTimeDataTwo.forEach(e => {
if ('itemStyle' in e) delete e.itemStyle;
if ('symbol' in e) delete e.symbol;
if ('symbolSize' in e) delete e.symbolSize;
if (e.usermealtime.indexOf('2022/07/01') == -1) {
e.usermealtime = "2022/07/01 " + e.usermealtime
}
e.value = e.usermealtime;
});
var xInterval = this.reportTypeIndex ? 0 : 6;
var yMidPoint = "2022/07/01 " + this.mealtimeTrendsData.filter(e => e.mealtype == 1)[0].earliestTime;
var maxDate = new Date(yMidPoint).setHours(new Date(yMidPoint).getHours() == 23 ? '00' : new Date(
yMidPoint).getHours() + 1);
var minDate = new Date(yMidPoint).setHours(new Date(yMidPoint).getHours() == 0 ? 23 : new Date(
yMidPoint).getHours() - 1);
var xdata = breakfastTimeData.map(e => e.repasttime.slice(5));
var year = this.dataRangeArr[this.dataRangeIndex].startDate.slice(0, 4);
var month = this.dataRangeArr[this.dataRangeIndex].startDate.slice(5, 7);
var saturdayList = this.getMonthSaturdayDate(year, month);
var seriesDataOne = [];
var seriesDataTwo = [];
switch (num) {
case 0: // 月报
breakfastTimeData.map(v => {
if (v.repastType == 1) {
if (v.repasttime == this.formatDateTwo(new Date(year, month, 0)) ||
saturdayList
.includes(v.repasttime)) { // 第1/2/3/4周的最后一天+月末最后一天
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: 'rgba(0, 0, 0, 0.5)',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: 'rgba(0, 0, 0, 0.5)',
borderWidth: 1.5
},
symbol: 'none'
}))
}
} else {
if (v.repasttime == this.formatDateTwo(new Date(year, month, 0)) ||
saturdayList
.includes(v.repasttime)) {
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: 'rgba(0, 0, 0, 0.5)',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: '#FF8646',
borderWidth: 1.5
},
symbol: 'none'
}))
}
}
});
breakfastTimeDataTwo.map(v => {
if (v.repastType == 1) {
if (v.repasttime == this.formatDateTwo(new Date(year, month, 0)) ||
saturdayList
.includes(v.repasttime)) {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#0BDB7E',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#0BDB7E',
borderWidth: 1.5
},
symbol: 'none'
}))
}
} else {
if (v.repasttime == this.formatDateTwo(new Date(year, month, 0)) ||
saturdayList
.includes(v.repasttime)) {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#0BDB7E',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#FF8646',
borderWidth: 1.5
},
symbol: 'none'
}))
}
}
});
break;
case 1: // 周报
breakfastTimeData.map(v => {
if (v.repastType == 1) {
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: 'rgba(0, 0, 0, 0.5)',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataOne.push(Object.assign(v, {
itemStyle: {
color: '#FF8646',
borderWidth: 1.5
},
symbolSize: 4
}))
}
});
breakfastTimeDataTwo.map(v => {
if (v.repastType == 1) {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#0BDB7E',
borderWidth: 1.5
},
symbolSize: 4
}))
} else {
seriesDataTwo.push(Object.assign(v, {
itemStyle: {
color: '#FF8646',
borderWidth: 1.5
},
symbolSize: 4
}))
}
});
break;
}
var option = {
xAxis: {
type: 'category',
data: xdata,
axisLabel: {
interval: xInterval
},
},
yAxis: {
type: 'time',
axisLabel: {
margin: 2,
formatter: function(value) {
return (moment(value).format('YYYY-MM-DD HH:mm')).slice(11)
}
},
max: function(value) {
if (new Date(maxDate).getMinutes() > 0 && new Date(maxDate).getMinutes() <
30) {
return new Date(maxDate).setMinutes(30);
} else {
return maxDate;
}
},
min: minDate,
minInterval: 2400 * 1000,
maxInterval: 2400 * 1000
},
series: [{
data: seriesDataOne,
type: 'line',
smooth: true,
lineStyle: {
color: 'rgba(0, 0, 0, 0.5)'
}
}, {
data: seriesDataTwo,
type: 'line',
smooth: true,
lineStyle: {
color: '#0BDB7E'
}
}, ],
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
shadowStyle: {
color: 'transparent'
}
},
extraCssText: `width:150px;height:30px;line-height:33rpx;background: no-repeat center/100% url(./static/images/breakfastTimeBg.png);
font-size:24rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;
color: #FF8646;padding:23px 0 30px 12px;box-sizing:border-box;`,
confine: true,
position: function(pt) {
return [pt[0] - 30, pt[1] - 5];
},
formatter: function(data) {
if (data[0].data.repastType == 2 && data[0].data.symbolSize) {
return `${new Date(data[0].data.repasttime).getMonth()+1}${new Date(data[0].data.repasttime).getDate()}日就餐时间较晚`;
} else if (data[0].data.repastType == 3 && data[0].data.symbolSize) {
return `${new Date(data[0].data.repasttime).getMonth()+1}${new Date(data[0].data.repasttime).getDate()}日就餐时间较早`;
}
}
},
};
option && myBreakfastTimeLineChart.setOption(option);
window.addEventListener('resize', function() {
myBreakfastTimeLineChart.resize();
})
},
mealPalBarchart: function() {
var mySize = document.getElementById('meal-pal-bar');
mySize.style.width = 300 + 'px';
mySize.style.height = 280 + 'px';
var myMealPalBarchart = echarts.init(mySize);
var ydata = this.mealPalArr;
var seriesData = this.mealPalData.map(v => v.mealnumber);
var seriesDataMax = Math.max(...seriesData);
var option = {
xAxis: {
type: 'value',
interval: Math.ceil(seriesDataMax / 5),
axisLabel: {
formatter: '{value}天'
},
splitLine: {
show: true,
lineStyle: {
color: ['#979797'],
width: 0.5,
type: 'solid'
}
}
},
yAxis: {
type: 'category',
data: ydata,
axisLabel: {
show: true,
textStyle: {
color: '#000000',
fontSize: 12
},
},
axisLine: {
show: true,
lineStyle: {
color: ['#979797'],
width: 0.5,
type: 'solid'
}
}
},
series: [{
data: seriesData,
type: 'bar',
itemStyle: {
color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [{
offset: 0,
color: '#04B871'
},
{
offset: 1,
color: '#07D66A'
}
]),
barBorderRadius: [0, 8, 8, 0],
},
label: {
show: true,
position: 'right',
color: '#04B871',
fontSize: '14px',
formatter: (params) => {
return params.value + '';
}
},
barWidth: 25
}]
};
option && myMealPalBarchart.setOption(option);
window.addEventListener('resize', function() {
myMealPalBarchart.resize();
})
},
callNumberBarchart: function() {
var mySize = document.getElementById('call-number-bar');
mySize.style.width = 350 + 'px';
......@@ -1755,11 +2484,13 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
title: data.msg
})
return
}
if (!data.obj) return;
if (data.obj.length) {
const tmpObj = data.obj[0];
this.isEatLow = tmpObj.canteenamount / tmpObj.consumergrossamount < 0.5 ? true : false;
this.isEatLow = tmpObj.canteenamount / tmpObj.consumergrossamount < 0.5 ?
true : false;
if (num) {
this.pieDatas = [
[{
......@@ -1788,12 +2519,17 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
name: 'gradeAverageHeight',
num: this.consumerAmountObj.gradeavgamount
});
const tempArr = [this.consumerAmountObj.schoolavgamount, this.consumerAmountObj
const tempArr = [this.consumerAmountObj.schoolavgamount, this
.consumerAmountObj
.consumergrossamount,
this.consumerAmountObj.gradeavgamount
];
const heightArr = Object.keys(this.counterArray(tempArr)).length == 1 ? [139, 139, 139] : (
Object.keys(this.counterArray(tempArr)).length == 2 ? [139, 139, 160] : [139, 160, 192]
const heightArr = Object.keys(this.counterArray(tempArr)).length == 1 ? [
139, 139, 139
] : (
Object.keys(this.counterArray(tempArr)).length == 2 ? [139, 139,
160
] : [139, 160, 192]
);
sortArr.forEach(e => {
this[e.name] = heightArr[e.tag]
......@@ -1862,6 +2598,106 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
})
}
},
// 饭友分析
async queryMealPalAnalyse() {
try {
let data = await this.$http.get({
url: gHost +
'/report-push/campus-consumer-report/queryMealPalAnalyse'
}, {
schoolId: getQueryParams('schoolId'),
studentId: getQueryParams('userId'),
startDate: this.dataRangeArr[this.dataRangeIndex].startDate,
endDate: this.dataRangeArr[this.dataRangeIndex].endDate,
timeType: this.dataRangeIndex == 0 ? 2 : 1
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.message
})
return
}
this.mealPalData = data.obj || [];
this.mealPalArr = this.mealPalData.map(v => v.mealpalname.slice(0, 1) +
'**');
this.mealPalStr = this.mealPalArr.join('');
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 异常就餐日期
mealtimeAbnormalDate(mealtype) { // mealtype 1 早餐 2 中餐 3 晚餐
var breakfastArr = this.mealtimeTrendsData.filter(e => e.mealtype == mealtype);
var breakfastAbnormalArr = [];
var breakfastAbnormalStr = '';
if (breakfastArr && breakfastArr[0].cateringList) {
breakfastAbnormalArr = breakfastArr[0].cateringList.filter(e => e.repastType == 2 || e.repastType == 3)
.map(e => e.repasttime.slice(8, 9) ? e.repasttime.slice(8) : e.repasttime.slice(8, 9))
if (breakfastAbnormalArr.length > 1) {
for (var i = 0; i < breakfastAbnormalArr.length - 1; i++) {
breakfastAbnormalStr += breakfastAbnormalArr[i] + '日、';
}
breakfastAbnormalStr += breakfastAbnormalArr[breakfastAbnormalArr.length - 1] + '';
} else if (breakfastAbnormalArr.length == 1) {
breakfastAbnormalStr += breakfastAbnormalArr[breakfastAbnormalArr.length - 1] + '';
}
}
return breakfastAbnormalStr;
},
// 就餐时间趋势
async queryRepastTimeTrend() {
try {
let data = await this.$http.get({
url: gHost +
'/report-push/campus-consumer-report/queryRepastTimeTrend'
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
startDate: this.dataRangeArr[this.dataRangeIndex].startDate,
endDate: this.dataRangeArr[this.dataRangeIndex].endDate,
timeType: this.dataRangeIndex == 0 ? 2 : 1
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.message
})
return
}
if (data.obj) {
this.mealtimeTrendsData = data.obj
}
if (data.obj && data.obj.filter(e => e.mealtype == 1) && data.obj.filter(e => e.mealtype == 1)[0]
.cateringList) {
this.mealtypeArr.push(1)
}
if (data.obj && data.obj.filter(e => e.mealtype == 2 && data.obj.filter(e => e.mealtype == 2)[0]
.cateringList)) {
this.mealtypeArr.push(2)
}
if (data.obj && data.obj.filter(e => e.mealtype == 3 && data.obj.filter(e => e.mealtype == 3)[0]
.cateringList)) {
this.mealtypeArr.push(3)
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 获取公话报告
async getPubTalkReport() {
try {
......@@ -1871,8 +2707,10 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}, {
schoolId: getQueryParams('schoolId'),
studentId: getQueryParams('userId'),
startDate: this.dataRangeArr[this.dataRangeIndex].startDate,
endDate: this.dataRangeArr[this.dataRangeIndex].endDate,
startDate: this.dataRangeArr[this.dataRangeIndex]
.startDate,
endDate: this.dataRangeArr[this.dataRangeIndex]
.endDate,
})
if (data.code != 0) {
uni.showToast({
......@@ -1883,6 +2721,15 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
return
}
this.pubTalkReport = data.data || {};
if (!this.pubTalkReport.talkText5 && !this.pubTalkReport
.talkText9) {
this.pubTalkSummaryHeight = 275;
} else if (this.pubTalkReport.talkText5 && !this.pubTalkReport
.talkText9) {
this.pubTalkSummaryHeight = 387;
} else {
this.pubTalkSummaryHeight = 525;
}
} catch (e) {
//TODO handle the exception
console.log(e);
......@@ -1903,8 +2750,10 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
startTime: this.dataRangeArr[this.dataRangeIndex].startDate,
endTime: this.dataRangeArr[this.dataRangeIndex].endDate,
startTime: this.dataRangeArr[this.dataRangeIndex]
.startDate,
endTime: this.dataRangeArr[this.dataRangeIndex]
.endDate,
classId: this.userInfo.classId
})
if (data.code != 200) {
......@@ -1926,7 +2775,7 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
})
}
},
// 出情况明细
// 出情况明细
async attendanceReprotDatail(currentDate) {
try {
let data = await this.$http.post({
......@@ -1949,10 +2798,14 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
var tempList = data.data;
if (tempList && tempList.length) {
tempList.forEach(e => {
if (e.attendDetailReportDTOList && e.attendDetailReportDTOList.length) {
e.attendDetailReportDTOList.forEach(c => {
c.border = c.describeContent && c
.describeContent != '当日早到冠军' ?
if (e.attendDetailReportDTOList && e
.attendDetailReportDTOList.length) {
e.attendDetailReportDTOList.forEach(
c => {
c.border = c
.describeContent && c
.describeContent !=
'当日早到冠军' ?
'4rpx solid #F9793F' :
'4rpx solid rgba(0, 0, 0, 0.25)'
})
......@@ -1993,32 +2846,41 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
switch (serviceItemCode) {
case 1002:
this.isOpen = data.obj.status;
this.isOpen = data.obj && data.obj.status ||
false;
if (!this.isOpen) {
this.flag = 1;
}
break;
case 2002:
this.isPubTalkOpen = data.obj.status;
this.isPubTalkOpen = data.obj && data.obj
.status || false;
if (this.isPubTalkOpen) {
this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 3290;
this.containerHeight = 2765 + this
.pubTalkSummaryHeight;
this.flag = 0;
} else {
this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 2130;
this.queryMemberConsumerAmount(
serviceItemCode);
this.containerHeight = 1605 + this
.pubTalkSummaryHeight;
this.pubTalkNoopenHeight = 735 + this
.pubTalkSummaryHeight;
this.flag = 3;
}
break;
case 3002:
this.isAttendanceOpen = data.obj.status;
this.isAttendanceOpen = data.obj && data.obj
.status || false;
if (this.isAttendanceOpen) {
this.queryMemberValidTime(serviceItemCode);
this.containerHeight = 2762;
this.flag = 0;
} else {
this.queryMemberConsumerAmount(serviceItemCode);
this.containerHeight = 1944;
this.queryMemberConsumerAmount(
serviceItemCode);
this.containerHeight = 1974;
this.flag = 2;
}
break;
......@@ -2029,7 +2891,8 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
this.containerHeight = 4200;
this.flag = 0;
} else {
this.queryMemberConsumerAmount(serviceItemCode);
this.queryMemberConsumerAmount(
serviceItemCode);
this.containerHeight = 2340;
}
}
......@@ -2063,7 +2926,8 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
const tempList = data.obj || [];
if (tempList.length) {
this.queryMemberServcieItemList = tempList.map(e => e.serviceCode);
this.queryMemberServcieItemList = tempList.map(
e => e.serviceCode);
} else {
this.queryMemberServcieItemList = [];
}
......@@ -2084,7 +2948,8 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
url: gHost +
'/report-push/member-info/queryMemberConsumerAmount'
}, {
schoolId: getQueryParams('schoolId'),
schoolId: getQueryParams(
'schoolId'),
userId: getQueryParams('userId'),
serviceItemCode
})
......@@ -2096,7 +2961,8 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
})
return
}
this.memberInfo.leastAmount = data.obj.leastAmount;
this.memberInfo.leastAmount = data.obj
.leastAmount;
} catch (e) {
//TODO handle the exception
console.log(e);
......@@ -2114,8 +2980,10 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
url: gHost +
'/report-push/member-info/queryMemberValidTime'
}, {
schoolId: getQueryParams('schoolId'),
userId: getQueryParams('userId'),
schoolId: getQueryParams(
'schoolId'),
userId: getQueryParams(
'userId'),
serviceItemCode
})
if (data.code != 200) {
......@@ -2126,17 +2994,24 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
})
return
}
this.memberInfo.differDay = data.obj.differDay;
this.memberInfo.invalidDate = data.obj.invalidDate;
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
let month = data.obj.invalidDate.slice(
5, 6) == 0 ? data
.obj.invalidDate.slice(6, 7) : data
.obj
.invalidDate.slice(5, 7);
let date = data.obj.invalidDate.slice(8, 9) == 0 ? data.obj
let date = data.obj.invalidDate.slice(
8, 9) == 0 ? data.obj
.invalidDate.slice(9) : data.obj
.invalidDate.slice(8);
this.memberInfo.invalidDateStr = data.obj.invalidDate
.slice(0, 4) + '' + month + '' + date + '';
this.memberInfo.invalidDateStr = data
.obj.invalidDate
.slice(0, 4) + '' + month + '' +
date + '';
} else {
this.memberInfo.invalidDateStr = '';
}
......@@ -2159,7 +3034,9 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
fail: function fail(_fail) {
console.warn(_fail);
uni.showModal({
content: JSON.stringify(_fail)
content: JSON
.stringify(
_fail)
});
}
});
......@@ -2196,12 +3073,60 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
.htmlCanvasTxt {
height: 154rpx;
width: 100%;
padding: 42rpx 0 20rpx 29rpx;
box-sizing: border-box;
.htmlCanvasTxt1 {
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #FFFFFF;
line-height: 44rpx;
}
.htmlCanvasTxt2 {
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
line-height: 44rpx;
}
}
.htmlCanvasBox {
overflow: scroll;
height: 943rpx;
border-radius: 30rpx;
margin: 0 24rpx 25rpx;
}
.tainer {
position: relative;
.school-report-header-bg {
height: 292rpx;
}
.school-report-header-position {
height: 292rpx;
padding: 72rpx 0 0 30rpx;
box-sizing: border-box;
position: fixed;
top: 0;
left: 0;
background: #FFFFFF;
z-index: 1000;
.school-report-header {
height: 88rpx;
margin: 72rpx 0 48rpx 40rpx;
display: flex;
justify-content: space-between;
position: relative;
margin: 0 0 48rpx;
.school-report-header-item {
display: flex;
......@@ -2289,10 +3214,8 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
.school-report-context {
.school-report-context-tab {
height: 84rpx;
padding-left: 40rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
......@@ -2306,14 +3229,25 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
border-radius: 20rpx 20rpx 0rpx 0rpx;
font-size: 30rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: rgba(0, 0, 0, 0.85);
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
&.active {
background: #E4F9F2;
font-weight: 600;
}
.tab-title {
margin: 20rpx 0 10rpx;
}
.active-bottomline {
width: 49rpx;
height: 7rpx;
background: #04B871;
border-radius: 4rpx;
}
}
}
......@@ -2348,6 +3282,9 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
}
.school-report-context {
.consumer-report-bgImg {
width: 100%;
height: 452rpx;
......@@ -2390,7 +3327,7 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
background: #E5F8F1;
padding: 0 30rpx;
position: absolute;
top: 650rpx;
top: 720rpx;
box-sizing: border-box;
.school-report-context-card-one {
......@@ -2884,19 +3821,25 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
height: 88rpx;
margin-left: 10rpx;
}
/deep/ .progress-day {
color: #DAA000;
background: url(../../static/images/progress.png) no-repeat -2rpx 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;
padding: 28rpx 39rpx 0 34rpx;
box-sizing: border-box;
.attendance-report-context-card-two-details-item {
......@@ -3002,13 +3945,16 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
.attendance-report-details-item-box {
width: 83.5%;
height: 156rpx;
display: flex;
justify-content: space-between;
flex-direction: column;
position: absolute;
margin-left: 71rpx;
.attendance-report-details-item {
height: 40rpx;
display: flex;
justify-content: space-between;
.attendance-report-time {
display: flex;
......@@ -3018,6 +3964,10 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
.attendance-report-time-txt {
width: 56rpx;
}
.attendance-report-time-item {
color: #F9793F;
margin: 0 21rpx 0 15rpx;
......@@ -3039,6 +3989,13 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
margin-right: 2rpx;
}
.progress-img {
width: 30rpx;
height: 29rpx;
background: no-repeat center/100% url(../../static/images/progressIcon.png);
margin-right: 2rpx;
}
.early-champions-txt {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
......@@ -3047,12 +4004,6 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
}
}
.attendance-report-details-img-item {
display: flex;
flex-direction: column;
align-items: flex-end;
.attendance-report-time-details {
width: 212rpx;
......@@ -3077,15 +4028,22 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
width: 21rpx;
height: 12rpx;
background: no-repeat center/100% url(../../static/images/arrowUp.png);
margin-left: 30rpx;
// margin-left: 30rpx;
}
}
}
.attendance-report-details-img-item {
display: flex;
justify-content: flex-end;
width: 100%;
height: 95rpx;
margin: 14rpx 0 0;
.attendance-report-details-img-box {
width: 155rpx;
height: 95rpx;
display: flex;
justify-content: flex-end;
image {
width: 100%;
......@@ -3096,6 +4054,21 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
}
.noAttendanceReportDatail {
height: 620rpx;
background: #F5F7F7;
margin: -40rpx 0 0;
border-radius: 0 0 16rpx 16rpx;
.noAttendanceReportDatailImg {
margin: 78rpx 0 0 107rpx;
width: 474rpx;
height: 235rpx;
background: no-repeat center/100% url(../../static/images/noAttendanceReportDatailData.png);
}
}
}
.image-dialog {
......@@ -3339,6 +4312,7 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
height: 634rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 0 40rpx;
position: relative;
.school-report-context-card-five-conclusion {
......@@ -3408,6 +4382,172 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
.school-report-context-card-six {
height: 1590rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 0 40rpx;
.school-report-context-card-six-conclusion {
margin: 40rpx 0 57rpx;
.school-report-context-card-six-conclusion-item {
margin: 0 40rpx 0 30rpx;
height: 120rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
.abnormal-date {
color: #04B871;
}
}
}
.mealtime-trends {
.mealtime-trends-theme {
height: 42rpx;
padding: 0 49rpx 0 30rpx;
box-sizing: border-box;
display: flex;
.meal-type {
font-size: 30rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 42rpx;
}
.user-meal-time {
width: 144rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 32rpx 0 143rpx;
}
.class-meal-time {
width: 234rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.user-meal-time-logo {
display: flex;
align-items: center;
margin-right: 10rpx;
.user-meal-time-logo-left,
.user-meal-time-logo-right {
width: 8rpx;
height: 1rpx;
background: #0BDA7D;
}
.user-meal-time-logo-middle {
width: 12rpx;
height: 12rpx;
background: #FFFFFF;
border: 3rpx solid #0BDB7E;
border-radius: 12rpx;
}
}
.user-meal-time-txt {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8C8C8C;
}
}
}
#breakfast-time-line {
position: relative;
top: -95rpx;
left: 24rpx;
z-index: 100;
}
#lunch-time-line {
position: relative;
top: -228rpx;
left: 24rpx;
z-index: 100;
}
#dinner-time-line {
position: relative;
top: -376rpx;
left: 24rpx;
z-index: 100;
}
}
.school-report-context-card-seven {
height: 645rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 0 40rpx;
.school-report-context-card-seven-conclusion {
margin: 40rpx 0 50rpx;
.school-report-context-card-seven-conclusion-item {
margin: 0 40rpx 0 30rpx;
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 40rpx;
.abnormal-date {
color: #04B871;
}
}
}
.meal-pal-bar-unit {
height: 33rpx;
display: flex;
justify-content: center;
.meal-pal-bar-unit-item {
width: 180rpx;
display: flex;
justify-content: space-between;
align-items: center;
.meal-pal-bar-icon {
width: 20rpx;
height: 20rpx;
background: linear-gradient(360deg, #04B871 0%, #07D66A 100%);
border-radius: 4rpx;
}
.meal-pal-bar-txt {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8C8C8C;
line-height: 33rpx;
}
}
}
#meal-pal-bar {
position: relative;
top: -106rpx;
left: 18rpx;
z-index: 100;
}
}
.school-report-footer {
height: 169rpx;
margin: 40rpx 0 43rpx;
......@@ -3511,6 +4651,10 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
display: flex;
justify-content: center;
align-items: center;
&.consume-open-results-title {
background: url(../../static/images/consumeOpenbgm.png) center/100% no-repeat;
}
}
.open-results-items {
......@@ -3521,6 +4665,12 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
padding: 32rpx 0 43rpx 73rpx;
box-sizing: border-box;
&.consume-open-results-items {
padding: 44rpx 0 0 34rpx;
box-sizing: border-box;
height: 473rpx;
}
.open-results-items-summary {
width: 100%;
height: 45rpx;
......@@ -3540,10 +4690,6 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
line-height: 45rpx;
}
.consumer-report-icon {
margin: 0 45rpx 0 70rpx;
}
.attendance-report-icon {
margin: 0 35rpx 0 134rpx;
}
......@@ -3553,62 +4699,89 @@ color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`,
}
}
.open-results-items-details {
.open-results-items-details-item {
width: 100%;
height: 40rpx;
margin: 0 0 24rpx;
.consume-open-results-items-details {
.consume-open-results-items-details-item {
display: flex;
align-items: center;
height: 80rpx;
margin: 0 0 55rpx;
.open-results-items-details-item-txt {
.details-item-left {
width: 313rpx;
.details-item-up {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #13664C;
line-height: 40rpx;
}
.details-item-down {
display: flex;
align-items: center;
.details-item-down-txt {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(19, 102, 76, 0.7);
line-height: 33rpx;
}
.dining-situations-img {
width: 34rpx;
height: 27rpx;
width: 26rpx;
height: 21rpx;
background: no-repeat center/100% url(../../static/images/repast.png);
margin-right: 22rpx;
}
.consumer-rationality-img {
width: 34rpx;
height: 34rpx;
background: no-repeat center/100% url(../../static/images/consumerRationality.png);
margin: 0 22rpx 0 108rpx;
.meal-pal-img {
width: 26rpx;
height: 22rpx;
background: no-repeat center/100% url(../../static/images/mealPal.png);
}
.consumer-num-img {
width: 22rpx;
height: 25rpx;
background: no-repeat center/100% url(../../static/images/consumerNum.png);
}
.consumer-preference-img {
width: 30rpx;
height: 27rpx;
width: 25rpx;
height: 23rpx;
background: no-repeat center/100% url(../../static/images/consumerPreference.png);
margin-right: 24rpx;
}
.consumer-advice-img {
width: 31rpx;
height: 31rpx;
background: no-repeat center/100% url(../../static/images/consumerAdvice.png);
margin: 0 24rpx 0 112rpx;
.consumer-trend-img {
width: 24rpx;
height: 21rpx;
background: no-repeat center/100% url(../../static/images/consumerTrend.png);
}
.consumer-num-img {
width: 30rpx;
height: 34rpx;
background: no-repeat center/100% url(../../static/images/consumerNum.png);
margin-right: 24rpx;
.time-trends-img {
width: 25rpx;
height: 25rpx;
background: no-repeat center/100% url(../../static/images/timeTrends.png);
}
}
}
}
}
.consumer-trend-img {
width: 28rpx;
height: 25rpx;
background: no-repeat center/100% url(../../static/images/consumerTrend.png);
margin-right: 25rpx;
.open-results-items-details {
.open-results-items-details-item {
width: 100%;
height: 40rpx;
margin: 0 0 24rpx;
display: flex;
align-items: center;
.open-results-items-details-item-txt {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #13664C;
line-height: 40rpx;
}
// 出入校报告
......
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