Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
X
xzf_uniapp-wechat-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李智书
xzf_uniapp-wechat-web
Commits
d886b04b
Commit
d886b04b
authored
May 24, 2022
by
袁玲利
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
校园报告高峰期判断
parent
50f300b6
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
2422 additions
and
22451 deletions
+2422
-22451
package-lock.json
package-lock.json
+50
-20436
src/pages/SchoolReport/SchoolReport.vue
src/pages/SchoolReport/SchoolReport.vue
+2372
-2015
No files found.
package-lock.json
View file @
d886b04b
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/pages/SchoolReport/SchoolReport.vue
View file @
d886b04b
<
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-item"
>
<view
class=
"user-avatar"
>
</view>
<view
class=
"user-avatar"
>
</view>
<view
class=
"user-info"
>
<view
class=
"user-name"
>
<text>
{{
userInfo
.
userName
}}
</text>
<text>
{{
userInfo
.
userName
}}
</text>
</view>
<view
class=
"class-name"
>
<text>
{{
userInfo
.
gradeName
}}
{{
userInfo
.
className
}}
</text>
<text>
{{
userInfo
.
gradeName
}}
{{
userInfo
.
className
}}
</text>
</view>
</view>
</view>
...
...
@@ -18,22 +18,32 @@
<view
class=
"school-report-screen"
>
<view
class=
"school-report-screen-item"
>
<view
class=
"school-report-type"
>
<picker
@
change=
"schoolReportChange"
:value=
"reportTypeIndex"
:range=
"reportTypeArr"
>
<view
class=
"uni-input"
>
{{
reportTypeArr
[
reportTypeIndex
]
}}
</view>
<picker
@
change=
"schoolReportChange"
:value=
"reportTypeIndex"
:range=
"reportTypeArr"
>
<view
class=
"uni-input"
>
{{
reportTypeArr
[
reportTypeIndex
]
}}
</view>
</picker>
</view>
<view
class=
"triangle"
>
</view>
<view
class=
"triangle"
>
</view>
</view>
<view
class=
"school-report-screen-item-two"
>
<view
class=
"school-report-date"
>
<picker
@
change=
"dataRangeChange"
:value=
"dataRangeIndex"
:range=
"dataRangeArr"
range-key=
"week"
>
<view
class=
"uni-input"
>
{{
dataRangeArr
[
dataRangeIndex
].
weekstr
||
""
}}
</view>
<picker
@
change=
"dataRangeChange"
:value=
"dataRangeIndex"
:range=
"dataRangeArr"
range-key=
"week"
>
<view
class=
"uni-input"
>
{{
dataRangeArr
[
dataRangeIndex
].
weekstr
||
""
}}
</view>
</picker>
</view>
<view
class=
"triangle"
>
</view>
<view
class=
"triangle"
>
</view>
</view>
</view>
</view>
...
...
@@ -53,66 +63,102 @@
</view>
<view
class=
"school-report-context-tab-item-two"
>
<view
class=
"share-button"
@
tap=
"shareHandler"
>
<view
class=
"share-button-img"
>
</view>
<view
class=
"share-button-img"
>
</view>
<view
class=
"share-button-txt"
>
<text>
分享
</text>
</view>
</view>
</view>
</view>
<view
class=
"school-report-context-bgImg"
>
</view>
<view
class=
"school-report-context-bgImg"
>
</view>
<view
class=
"school-report-context-card"
>
<view
class=
"school-report-context-card-one"
>
<view
class=
"school-report-context-card-one-img"
>
</view>
<view
class=
"school-report-context-card-one-img"
>
</view>
<view
class=
"school-report-context-card-one-context"
>
<view
class=
"school-report-context-card-one-context-item"
>
<view
class=
"school-report-context-card-one-context-dot"
>
<view
class=
"school-report-context-card-one-context-dot-item"
>
<view
class=
"school-report-context-card-one-context-dot-item"
>
</view>
</view>
<view
class=
"school-report-context-card-one-context-txt"
>
<text
v-if=
"diningSituations.cateringLevel"
>
共
<text
class=
"txt-important"
>
{{
diningSituations
.
notCateringNumber
}}
</text>
次未吃
{{
diningSituations
.
notCateringType
}}
,请提醒
<text
class=
"txt-important"
>
{{
userInfo
.
userName
}}
</text>
{{
diningSituations
.
clues
}}
</text>
<text
v-else
>
恭喜
<text
class=
"txt-important"
>
{{
userInfo
.
userName
}}
</text>
荣获“快乐干饭人”称号,快乐要和家人一起分享哦
</text>
<text
v-if=
"diningSituations.cateringLevel"
>
共
<text
class=
"txt-important"
>
{{
diningSituations
.
notCateringNumber
}}
</text
>
次未吃
{{
diningSituations
.
notCateringType
}}
,请提醒
<text
class=
"txt-important"
>
{{
userInfo
.
userName
}}
</text
>
{{
diningSituations
.
clues
}}
</text
>
<text
v-else
>
恭喜
<text
class=
"txt-important"
>
{{
userInfo
.
userName
}}
</text
>
荣获“快乐干饭人”称号,快乐要和家人一起分享哦
</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
class=
"school-report-context-card-one-context-dot-item"
>
</view>
</view>
<view
class=
"school-report-context-card-one-context-txt"
>
<text
v-if=
"isEatLow"
>
食堂消费占比
<text
class=
"txt-important-two"
>
过低
</text>
,请及时调整饮食习惯
</text>
<text
v-else
>
饮食较
<text
class=
"txt-important-two"
>
均衡
</text>
,继续保持哦
</text>
<text
v-if=
"isEatLow"
>
食堂消费占比
<text
class=
"txt-important-two"
>
过低
</text
>
,请及时调整饮食习惯
</text
>
<text
v-else
>
饮食较
<text
class=
"txt-important-two"
>
均衡
</text
>
,继续保持哦
</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
class=
"school-report-context-card-one-context-dot-item"
>
</view>
</view>
<view
class=
"school-report-context-card-one-context-txt"
>
消费总额
<text
class=
"txt-important"
>
{{
consumerAmountObj
.
consumerAmount
}}
</text>
元,超过全校
<text
class=
"txt-important"
>
{{
consumerAmountObj
.
exceedRate
}}
%
</text>
的同学
<text
v-if=
"isReasonable"
>
,请及时评估生活费是否合理
</text>
消费总额
<text
class=
"txt-important"
>
{{
consumerAmountObj
.
consumerAmount
}}
</text
>
元,超过全校
<text
class=
"txt-important"
>
{{
consumerAmountObj
.
exceedRate
}}
%
</text
>
的同学
<text
v-if=
"isReasonable"
>
,请及时评估生活费是否合理
</text
>
</view>
</view>
<view
class=
"school-report-context-card-one-context-item school-report-context-card-one-context-item-last"
>
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
class=
"school-report-context-card-one-context-dot-item"
>
</view>
</view>
<view
class=
"school-report-context-card-one-context-txt"
>
<text
v-if=
"isAbnormal"
><text
class=
"txt-important-two"
>
{{
consumerTrend
.
clues
}}
</text>
的消费金额存在异常,请及时关注
</text>
<text
v-if=
"isAbnormal"
><text
class=
"txt-important-two"
>
{{
consumerTrend
.
clues
}}
</text
>
的消费金额存在异常,请及时关注
</text
>
<text
v-else
>
每日消费金额较稳定,继续保持哦
</text>
</view>
</view>
...
...
@@ -127,67 +173,136 @@
</view>
<view
class=
"school-report-context-card-two-conclusion"
>
<view
class=
"school-report-context-card-two-conclusion-txt"
>
<text>
本
{{
[
'
月
'
,
'
周
'
][
reportTypeIndex
]
}}
共
<text
class=
"abnormal-days"
>
{{
diningSituations
.
notRepastDay
}}
</text>
天就餐异常
</text>
<text
>
本
{{
[
"
月
"
,
"
周
"
][
reportTypeIndex
]
}}
共
<text
class=
"abnormal-days"
>
{{
diningSituations
.
notRepastDay
}}
</text
>
天就餐异常
</text
>
</view>
<view
class=
"school-report-context-card-two-conclusion-logo"
>
<view
class=
"school-report-context-card-two-conclusion-logo-item"
>
<view
class=
"school-report-context-card-two-conclusion-logo-item-dot"
>
<view
class=
"school-report-context-card-two-conclusion-logo-item"
>
<view
class=
"
school-report-context-card-two-conclusion-logo-item-dot
"
>
</view>
</view>
<view
class=
"school-report-context-card-two-conclusion-logo-item school-report-context-card-two-conclusion-logo-item-right"
>
class=
"
school-report-context-card-two-conclusion-logo-item
school-report-context-card-two-conclusion-logo-item-right
"
>
<text>
未就餐
</text>
</view>
</view>
</view>
<view
class=
"school-report-context-card-two-calendar"
>
<van-calendar
:formatter=
"formatter"
:min-date=
"minDate"
:max-date=
"maxDate"
:default-date=
"minDate"
:show-title=
"false"
:show-subtitle=
"false"
:show-mark=
"false"
:poppable=
"false"
:show-confirm=
"false"
:style=
"
{ height: '575rpx' }"
@select="dateSelect" />
<van-calendar
:formatter=
"formatter"
:min-date=
"minDate"
:max-date=
"maxDate"
:default-date=
"minDate"
:show-title=
"false"
:show-subtitle=
"false"
:show-mark=
"false"
:poppable=
"false"
:show-confirm=
"false"
:style=
"
{ height: '575rpx' }"
@select="dateSelect"
/>
</view>
<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-date"
>
<text>
{{
diningSituations
.
diningSituationsDate
}}
</text>
<text>
{{
diningSituations
.
diningSituationsDate
}}
</text>
</view>
<view
class=
"school-report-context-card-two-details-meal"
>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<text>
早餐
</text>
</view>
<view
class=
"school-report-context-card-two-details-meal-logo"
>
<view
v-if=
"diningSituations.notRepastDetails.breakfastStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
<view
class=
"school-report-context-card-two-details-meal-logo"
>
<view
v-if=
"diningSituations.notRepastDetails.breakfastStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
</view>
<view
v-else
class=
"school-report-context-card-two-details-meal-noeat"
>
<view
v-else
class=
"
school-report-context-card-two-details-meal-noeat
"
>
<text>
缺
</text>
</view>
</view>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<text>
中餐
</text>
</view>
<view
class=
"school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-two"
>
<view
v-if=
"diningSituations.notRepastDetails.lunchStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
class=
"
school-report-context-card-two-details-meal-logo
school-report-context-card-two-details-meal-logo-two
"
>
<view
v-if=
"diningSituations.notRepastDetails.lunchStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
</view>
<view
v-else
class=
"school-report-context-card-two-details-meal-noeat"
>
<view
v-else
class=
"
school-report-context-card-two-details-meal-noeat
"
>
<text>
缺
</text>
</view>
</view>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<view
class=
"school-report-context-card-two-details-meal-txt"
>
<text>
晚餐
</text>
</view>
<view
class=
"school-report-context-card-two-details-meal-logo school-report-context-card-two-details-meal-logo-three"
>
<view
v-if=
"diningSituations.notRepastDetails.supperStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
class=
"
school-report-context-card-two-details-meal-logo
school-report-context-card-two-details-meal-logo-three
"
>
<view
v-if=
"diningSituations.notRepastDetails.supperStatus"
class=
"school-report-context-card-two-details-meal-img"
>
<image
src=
"../../static/images/eatted.png"
mode=
""
></image>
</view>
<view
v-else
class=
"school-report-context-card-two-details-meal-noeat"
>
<view
v-else
class=
"
school-report-context-card-two-details-meal-noeat
"
>
<text>
缺
</text>
</view>
</view>
...
...
@@ -203,14 +318,25 @@
</view>
<view
class=
"school-report-context-card-three-conclusion"
>
<view
class=
"school-report-context-card-three-conclusion-item"
>
<text
v-if=
"isEatLow"
>
食堂消费占比
<text
class=
"school-report-context-card-three-conclusion-item-describe"
>
过低
</text>
,请及时调整饮食习惯
</text>
<text
v-else
>
饮食较
<text
class=
"school-report-context-card-three-conclusion-item-describe"
>
均衡
</text>
,继续保持哦
</text>
</view>
</view>
<view
id=
"consumer-preferences-pie"
>
</view>
<text
v-if=
"isEatLow"
>
食堂消费占比
<text
class=
"
school-report-context-card-three-conclusion-item-describe
"
>
过低
</text
>
,请及时调整饮食习惯
</text
>
<text
v-else
>
饮食较
<text
class=
"
school-report-context-card-three-conclusion-item-describe
"
>
均衡
</text
>
,继续保持哦
</text
>
</view>
</view>
<view
id=
"consumer-preferences-pie"
>
</view>
</view>
<view
v-if=
"isOpen"
class=
"school-report-context-card-four"
>
<view
class=
"school-report-context-card-title"
>
...
...
@@ -220,27 +346,45 @@
</view>
<view
class=
"school-report-context-card-four-conclusion"
>
<view
class=
"school-report-context-card-four-conclusion-item"
>
<text>
消费总额
<text
class=
"consume-total"
>
{{
consumerAmountObj
.
consumerAmount
}}
</text>
元,超过全校
<text
class=
"consume-total"
>
{{
consumerAmountObj
.
exceedRate
}}
%
</text>
的同学
<text
v-if=
"isReasonable"
>
,请及时评估生活费是否合理
</text></text>
<text
>
消费总额
<text
class=
"consume-total"
>
{{
consumerAmountObj
.
consumerAmount
}}
</text
>
元,超过全校
<text
class=
"consume-total"
>
{{
consumerAmountObj
.
exceedRate
}}
%
</text
>
的同学
<text
v-if=
"isReasonable"
>
,请及时评估生活费是否合理
</text
></text
>
</view>
</view>
<view
class=
"consume-total-img"
>
<view
class=
"school-average"
:style=
"
{height:schoolAverageHeight+'rpx'}">
<view
class=
"school-average"
:style=
"
{ height: schoolAverageHeight + 'rpx' }"
>
<view
class=
"school-average-num"
>
<text>
{{
consumerAmountObj
.
schoolAmount
}}
</text>
<text>
{{
consumerAmountObj
.
schoolAmount
}}
</text>
</view>
<view
class=
"school-average-img"
>
<image
src=
"../../static/images/greenArrow.png"
mode=
""
></image>
<image
src=
"../../static/images/greenArrow.png"
mode=
""
></image>
</view>
</view>
<view
class=
"user-consume"
:style=
"
{height:userConsumeHeight+'rpx'}">
<view
class=
"user-consume"
:style=
"
{ height: userConsumeHeight + 'rpx' }"
>
<view
class=
"user-consume-num"
>
<text>
{{
consumerAmountObj
.
consumerAmount
}}
</text>
<text>
{{
consumerAmountObj
.
consumerAmount
}}
</text>
</view>
<view
class=
"user-consume-img"
>
<image
src=
"../../static/images/yellowArrow.png"
mode=
""
></image>
<image
src=
"../../static/images/yellowArrow.png"
mode=
""
></image>
</view>
</view>
</view>
...
...
@@ -261,22 +405,20 @@
</view>
<view
class=
"school-report-context-card-five-conclusion"
>
<view
class=
"school-report-context-card-five-conclusion-item"
>
<text
v-if=
"isAbnormal"
><text
class=
"abnormal-date"
>
{{
consumerTrend
.
clues
}}
</text>
的消费金额存在异常,请及时关注
</text>
<text
v-if=
"isAbnormal"
><text
class=
"abnormal-date"
>
{{
consumerTrend
.
clues
}}
</text
>
的消费金额存在异常,请及时关注
</text
>
<text
v-else
>
每日消费金额较稳定,继续保持哦
</text>
</view>
</view>
<view
id=
"consumer-trend-line"
>
</view>
<view
id=
"consumer-trend-line"
>
</view>
<view
class=
"consumer-trend-line-icon"
>
<view
class=
"consumer-trend-line-icon-item"
>
<view
class=
"consumer-trend-line-icon-logo"
>
<view
class=
"consumer-trend-line-icon-logo-left"
>
</view>
<view
class=
"consumer-trend-line-icon-logo-middle"
>
</view>
<view
class=
"consumer-trend-line-icon-logo-right"
>
</view>
<view
class=
"consumer-trend-line-icon-logo-left"
>
</view>
<view
class=
"consumer-trend-line-icon-logo-middle"
>
</view>
<view
class=
"consumer-trend-line-icon-logo-right"
>
</view>
</view>
<view
class=
"consumer-trend-line-icon-txt"
>
<text>
消费金额
</text>
...
...
@@ -290,8 +432,14 @@
<text>
到期后将无法查看完整报告
</text>
</view>
<view
class=
"school-report-validity"
>
<text>
有效期至
<text
class=
"validity-date"
>
{{
memberInfo
.
invalidDateStr
}}
</text>
,剩余
<text
class=
"validity-date"
>
{{
memberInfo
.
differDay
}}
天
</text></text>
<text
>
有效期至
<text
class=
"validity-date"
>
{{
memberInfo
.
invalidDateStr
}}
</text
>
,剩余
<text
class=
"validity-date"
>
{{
memberInfo
.
differDay
}}
天
</text
></text
>
</view>
</view>
<view
class=
"school-report-footer-item-two"
>
...
...
@@ -305,10 +453,12 @@
<view
v-if=
"!isOpen"
class=
"no-open"
>
<view
class=
"no-open-solution"
@
tap=
"equityPay"
>
<view
class=
"no-open-solution-txt"
>
<text>
最低
{{
memberInfo
.
leastAmount
}}
元/天开通,查看完整消费报告
</text>
</view>
<view
class=
"no-open-solution-item"
>
<text
>
最低
{{
memberInfo
.
leastAmount
}}
元/天开通,查看完整消费报告
</text
>
</view>
<view
class=
"no-open-solution-item"
>
</view>
</view>
<view
class=
"open-results"
>
<view
class=
"open-results-title"
>
...
...
@@ -328,39 +478,33 @@
</view>
<view
class=
"open-results-items-details"
>
<view
class=
"open-results-items-details-item"
>
<view
class=
"dining-situations-img"
>
</view>
<view
class=
"dining-situations-img"
>
</view>
<view
class=
"open-results-items-details-item-txt"
>
<text>
就餐情况分析
</text>
</view>
<view
class=
"consumer-rationality-img"
>
</view>
<view
class=
"consumer-rationality-img"
>
</view>
<view
class=
"open-results-items-details-item-txt"
>
<text>
消费合理性
</text>
</view>
</view>
<view
class=
"open-results-items-details-item"
>
<view
class=
"consumer-preference-img"
>
</view>
<view
class=
"consumer-preference-img"
>
</view>
<view
class=
"open-results-items-details-item-txt"
>
<text>
消费偏好分析
</text>
</view>
<view
class=
"consumer-advice-img"
>
</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=
"consumer-num-img"
>
</view>
<view
class=
"consumer-num-img"
>
</view>
<view
class=
"open-results-items-details-item-txt"
>
<text>
消费总额分析
</text>
</view>
</view>
<view
class=
"open-results-items-details-item"
>
<view
class=
"consumer-trend-img"
>
</view>
<view
class=
"consumer-trend-img"
>
</view>
<view
class=
"open-results-items-details-item-txt"
>
<text>
消费趋势分析
</text>
</view>
...
...
@@ -370,23 +514,38 @@
</view>
</view>
</view>
<van-dialog
class=
"htmlCanvas"
id=
"htmlCanvas"
ref=
"imgCanvas"
v-model=
"dialogShow"
show-cancel-button
style=
"width: 100%; max-height: 80% !important;overflow: scroll"
>
<view
v-else
class=
"nodata"
>
<view
class=
"nodataImg"
>
<img
style=
"width: 35vw"
:src=
"nodataImgUrl + 'images/1.png'"
/>
</view>
<view
class=
"nodataTxt"
>
<text>
当前为使用高峰期,请点击加载更多数据
</text>
</view>
</view>
<van-dialog
class=
"htmlCanvas"
id=
"htmlCanvas"
ref=
"imgCanvas"
v-model=
"dialogShow"
show-cancel-button
style=
"width: 100%; max-height: 80% !important; overflow: scroll"
>
</van-dialog>
</view>
</view>
</
template
>
<
script
>
import
html2cancas
from
"
html2canvas
"
var
gHost
=
"
https://
"
+
window
.
location
.
host
;
if
(
window
.
location
.
protocol
!=
"
https:
"
)
{
import
html2cancas
from
"
html2canvas
"
;
var
gHost
=
"
https://
"
+
window
.
location
.
host
;
if
(
window
.
location
.
protocol
!=
"
https:
"
)
{
gHost
=
"
https://fpdev.xiaopay.net
"
;
}
//获取参数
function
getQueryParams
(
params
)
{
let
href
=
window
.
location
.
href
let
query
=
href
.
substring
(
href
.
indexOf
(
'
?
'
)
+
1
);
}
//获取参数
function
getQueryParams
(
params
)
{
let
href
=
window
.
location
.
href
;
let
query
=
href
.
substring
(
href
.
indexOf
(
"
?
"
)
+
1
);
let
vars
=
query
.
split
(
"
&
"
);
for
(
var
i
=
0
;
i
<
vars
.
length
;
i
++
)
{
let
pair
=
vars
[
i
].
split
(
"
=
"
);
...
...
@@ -394,38 +553,43 @@
return
pair
[
1
];
}
}
return
(
false
);
}
// 时间处理模块
import
dayjs
from
'
dayjs
'
export
default
{
name
:
'
SchoolReport
'
,
return
false
;
}
// 时间处理模块
import
dayjs
from
"
dayjs
"
;
import
moment
from
"
moment
"
;
export
default
{
name
:
"
SchoolReport
"
,
data
()
{
return
{
showReport
:
true
,
userInfo
:
{},
reportTypeIndex
:
0
,
reportTypeArr
:
[
'
月报
'
,
'
周报
'
],
reportTypeArr
:
[
"
月报
"
,
"
周报
"
],
dataRangeIndex
:
0
,
dataRangeArr
:
[{
nodataImgUrl
:
this
.
$ImgUrl
,
dataRangeArr
:
[
{
week
:
""
,
weekstr
:
""
,
startDate
:
""
,
endDate
:
""
}],
minDate
:
new
Date
(
'
1970/01/01
'
),
endDate
:
""
,
},
],
minDate
:
new
Date
(
"
1970/01/01
"
),
maxDate
:
new
Date
(),
imgUrl
:
''
,
// 存储base64图片
imgUrl
:
""
,
// 存储base64图片
dialogShow
:
false
,
// 就餐情况
diningSituations
:
{
diningSituationsDate
:
''
,
diningSituationsRequestDate
:
''
,
notRepastDay
:
''
,
diningSituationsDate
:
""
,
diningSituationsRequestDate
:
""
,
notRepastDay
:
""
,
notRepastDetails
:
{},
notRepastDetailsDTOS
:
[],
cateringLevel
:
''
,
notCateringNumber
:
''
,
notCateringType
:
''
cateringLevel
:
""
,
notCateringNumber
:
""
,
notCateringType
:
""
,
},
// 消费偏好
pieDatas
:
[],
...
...
@@ -433,8 +597,8 @@
// 消费总额
consumerAmountObj
:
{},
isReasonable
:
false
,
schoolAverageHeight
:
''
,
userConsumeHeight
:
''
,
schoolAverageHeight
:
""
,
userConsumeHeight
:
""
,
// 消费趋势
consumerTrend
:
{},
isAbnormal
:
false
,
...
...
@@ -442,53 +606,77 @@
// 会员信息
isOpen
:
false
,
memberInfo
:
{
leastAmount
:
''
,
invalidDateStr
:
''
,
differDay
:
''
leastAmount
:
""
,
invalidDateStr
:
""
,
differDay
:
""
,
},
containerHeight
:
''
,
}
containerHeight
:
""
,
};
},
mounted
()
{
// 判断是否在高峰期内
if
(
this
.
isPeakPeriod
())
{
this
.
showReport
=
false
;
}
else
{
this
.
showReport
=
true
;
this
.
queryIsDredgeMember
().
then
(()
=>
{
if
(
this
.
isOpen
)
{
this
.
queryMemberValidTime
().
then
(
e
=>
{
if
(
new
Date
(
this
.
memberInfo
.
invalidDate
).
getTime
()
<=
new
Date
(
'
2022/06/30
'
)
.
getTime
())
{
this
.
queryMemberValidTime
().
then
((
e
)
=>
{
if
(
new
Date
(
this
.
memberInfo
.
invalidDate
).
getTime
()
<=
new
Date
(
"
2022/06/30
"
).
getTime
()
)
{
this
.
isOpen
=
true
;
this
.
memberInfo
.
invalidDateStr
=
'
2022年6月30日
'
;
this
.
memberInfo
.
differDay
=
dayjs
(
'
2022/06/30
'
).
diff
(
dayjs
(),
'
day
'
);
this
.
memberInfo
.
invalidDateStr
=
"
2022年6月30日
"
;
this
.
memberInfo
.
differDay
=
dayjs
(
"
2022/06/30
"
).
diff
(
dayjs
(),
"
day
"
);
this
.
containerHeight
=
4200
;
this
.
queryStudentConsumerPreference
(
1
).
then
(
e
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
(
e
=>
this
.
linechart
(
this
.
reportTypeIndex
));
this
.
queryStudentConsumerPreference
(
1
).
then
((
e
)
=>
this
.
piechart
()
);
this
.
queryDayConsumerTrend
(
1
).
then
((
e
)
=>
this
.
linechart
(
this
.
reportTypeIndex
)
);
}
else
{
this
.
queryIsDredgeMember
(
1
).
then
(()
=>
{
if
(
this
.
isOpen
)
{
this
.
queryStudentConsumerPreference
(
1
).
then
(
e
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
(
e
=>
this
.
linechart
(
this
.
reportTypeIndex
));
this
.
queryStudentConsumerPreference
(
1
).
then
((
e
)
=>
this
.
piechart
()
);
this
.
queryDayConsumerTrend
(
1
).
then
((
e
)
=>
this
.
linechart
(
this
.
reportTypeIndex
)
);
}
else
{
this
.
queryStudentConsumerPreference
();
this
.
queryDayConsumerTrend
();
}
});
}
})
});
}
else
{
if
(
new
Date
().
getTime
()
<=
new
Date
(
'
2022/06/30
'
).
getTime
())
{
if
(
new
Date
().
getTime
()
<=
new
Date
(
"
2022/06/30
"
).
getTime
())
{
this
.
isOpen
=
true
;
this
.
memberInfo
.
invalidDateStr
=
'
2022年6月30日
'
;
this
.
memberInfo
.
differDay
=
dayjs
(
'
2022/06/30
'
).
diff
(
dayjs
(),
'
day
'
);
this
.
memberInfo
.
invalidDateStr
=
"
2022年6月30日
"
;
this
.
memberInfo
.
differDay
=
dayjs
(
"
2022/06/30
"
).
diff
(
dayjs
(),
"
day
"
);
this
.
containerHeight
=
4200
;
this
.
queryStudentConsumerPreference
(
1
).
then
(
e
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
(
e
=>
this
.
linechart
(
this
.
reportTypeIndex
));
this
.
queryStudentConsumerPreference
(
1
).
then
((
e
)
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
((
e
)
=>
this
.
linechart
(
this
.
reportTypeIndex
)
);
}
else
{
this
.
queryIsDredgeMember
(
1
).
then
(()
=>
{
if
(
this
.
isOpen
)
{
this
.
queryStudentConsumerPreference
(
1
).
then
(
e
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
(
e
=>
this
.
linechart
(
this
.
reportTypeIndex
));
this
.
queryStudentConsumerPreference
(
1
).
then
((
e
)
=>
this
.
piechart
()
);
this
.
queryDayConsumerTrend
(
1
).
then
((
e
)
=>
this
.
linechart
(
this
.
reportTypeIndex
)
);
}
else
{
this
.
queryStudentConsumerPreference
();
this
.
queryDayConsumerTrend
();
...
...
@@ -497,51 +685,82 @@
}
}
});
let
tmpArr
=
[]
let
tmpArr
=
[];
// 获取时间
for
(
let
i
=
0
;
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
();
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
"
)),
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
"
)
})
endDate
:
endWeek
.
format
(
"
YYYY-MM-DD
"
),
});
}
this
.
dataRangeArr
=
tmpArr
this
.
dataRangeArr
=
tmpArr
;
this
.
minDate
=
new
Date
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
);
this
.
maxDate
=
new
Date
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
);
this
.
diningSituations
.
diningSituationsRequestDate
=
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
;
this
.
diningSituations
.
diningSituationsDate
=
this
.
formatDate
(
this
.
minDate
);
this
.
diningSituations
.
diningSituationsRequestDate
=
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
;
this
.
diningSituations
.
diningSituationsDate
=
this
.
formatDate
(
this
.
minDate
);
this
.
queryCampusStudentInfo
();
let
tmpDate
=
this
.
formatDateTwo
(
this
.
minDate
);
this
.
queryNotRepastDetails
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
).
then
(()
=>
{
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
e
=>
e
.
repastDate
===
tmpDate
)[
0
];
let
tmpDate
=
this
.
formatDateTwo
(
this
.
minDate
);
this
.
queryNotRepastDetails
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
).
then
(()
=>
{
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
(
e
)
=>
e
.
repastDate
===
tmpDate
)[
0
];
this
.
diningSituations
.
notRepastDetails
=
today
;
});
this
.
queryConsumerTrend
();
}
},
methods
:
{
toImage
:
function
()
{
// 当天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
;
},
toImage
:
function
()
{
this
.
$nextTick
(()
=>
{
html2cancas
(
document
.
getElementsByClassName
(
"
tainer
"
)[
0
],
{
useCORS
:
true
,
}).
then
((
canvas
)
=>
{
let
htmlCanvas
=
document
.
getElementById
(
'
htmlCanvas
'
);
let
url
=
canvas
.
toDataURL
(
'
image/png
'
);
let
htmlCanvas
=
document
.
getElementById
(
"
htmlCanvas
"
);
let
url
=
canvas
.
toDataURL
(
"
image/png
"
);
this
.
imgUrl
=
url
;
let
img
=
document
.
createElement
(
"
img
"
);
img
.
setAttribute
(
'
src
'
,
this
.
imgUrl
);
img
.
setAttribute
(
'
class
'
,
'
htmlCanvasImg
'
);
img
.
style
.
width
=
'
100vw
'
;
img
.
setAttribute
(
"
src
"
,
this
.
imgUrl
);
img
.
setAttribute
(
"
class
"
,
"
htmlCanvasImg
"
);
img
.
style
.
width
=
"
100vw
"
;
htmlCanvas
.
appendChild
(
img
);
})
})
});
});
},
shareHandler
:
function
()
{
shareHandler
:
function
()
{
let
htmlCanvasImg
=
document
.
getElementsByClassName
(
"
htmlCanvasImg
"
)[
0
];
if
(
htmlCanvasImg
)
{
htmlCanvasImg
.
parentNode
.
removeChild
(
htmlCanvasImg
);
...
...
@@ -549,75 +768,101 @@
this
.
toImage
();
this
.
dialogShow
=
true
;
},
schoolReportChange
:
function
(
e
)
{
schoolReportChange
:
function
(
e
)
{
this
.
reportTypeIndex
=
e
.
target
.
value
;
this
.
getDataRangeArr
(
this
.
reportTypeIndex
);
},
dataRangeChange
:
function
(
e
)
{
dataRangeChange
:
function
(
e
)
{
this
.
dataRangeIndex
=
e
.
target
.
value
;
this
.
getDataRangeArr
(
this
.
reportTypeIndex
);
},
getDataRangeArr
:
function
(
num
)
{
getDataRangeArr
:
function
(
num
)
{
if
(
num
)
{
let
tmpArr
=
[]
let
tmpArr
=
[];
for
(
let
i
=
1
;
i
<=
52
;
i
++
)
{
let
startWeek
=
dayjs
().
subtract
(
i
,
'
week
'
).
startOf
(
'
week
'
);
let
endWeek
=
dayjs
().
$d
.
getTime
()
>
dayjs
().
subtract
(
i
,
'
week
'
).
endOf
(
'
week
'
).
$d
.
getTime
()
?
dayjs
().
subtract
(
i
,
'
week
'
).
endOf
(
'
week
'
)
:
dayjs
();
let
startWeek
=
dayjs
().
subtract
(
i
,
"
week
"
).
startOf
(
"
week
"
);
let
endWeek
=
dayjs
().
$d
.
getTime
()
>
dayjs
().
subtract
(
i
,
"
week
"
).
endOf
(
"
week
"
).
$d
.
getTime
()
?
dayjs
().
subtract
(
i
,
"
week
"
).
endOf
(
"
week
"
)
:
dayjs
();
tmpArr
.
push
({
week
:
(
startWeek
.
format
(
"
YYYY/MM/DD
"
))
+
'
~
'
+
(
endWeek
.
format
(
"
YYYY/MM/DD
"
)),
weekstr
:
(
startWeek
.
format
(
"
MM/DD
"
))
+
'
~
'
+
(
endWeek
.
format
(
"
MM/DD
"
)),
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
"
)
})
endDate
:
endWeek
.
format
(
"
YYYY-MM-DD
"
),
});
}
this
.
dataRangeArr
=
tmpArr
;
}
else
{
let
tmpArr
=
[]
let
tmpArr
=
[];
if
(
new
Date
().
getDate
()
>
5
)
{
for
(
let
i
=
0
;
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
();
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
"
)),
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
"
)
})
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
();
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
"
)),
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
"
)
})
endDate
:
endWeek
.
format
(
"
YYYY-MM-DD
"
),
});
}
}
this
.
dataRangeArr
=
tmpArr
;
}
this
.
minDate
=
new
Date
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
);
this
.
maxDate
=
new
Date
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
);
this
.
diningSituations
.
diningSituationsDate
=
this
.
formatDate
(
this
.
minDate
);
this
.
diningSituations
.
diningSituationsRequestDate
=
this
.
dataRangeArr
[
this
.
dataRangeIndex
]
.
startDate
;
let
tmpDate
=
this
.
formatDateTwo
(
this
.
minDate
);
this
.
queryNotRepastDetails
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
).
then
(()
=>
{
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
e
=>
e
.
repastDate
===
tmpDate
)[
0
];
this
.
diningSituations
.
diningSituationsDate
=
this
.
formatDate
(
this
.
minDate
);
this
.
diningSituations
.
diningSituationsRequestDate
=
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
;
let
tmpDate
=
this
.
formatDateTwo
(
this
.
minDate
);
this
.
queryNotRepastDetails
(
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
).
then
(()
=>
{
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
(
e
)
=>
e
.
repastDate
===
tmpDate
)[
0
];
this
.
diningSituations
.
notRepastDetails
=
today
;
});
;
})
;
this
.
queryConsumerTrend
();
if
(
this
.
isOpen
)
{
this
.
queryStudentConsumerPreference
(
1
).
then
(
e
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
(
e
=>
this
.
linechart
(
this
.
reportTypeIndex
));
this
.
queryStudentConsumerPreference
(
1
).
then
((
e
)
=>
this
.
piechart
());
this
.
queryDayConsumerTrend
(
1
).
then
((
e
)
=>
this
.
linechart
(
this
.
reportTypeIndex
)
);
}
else
{
this
.
queryStudentConsumerPreference
();
this
.
queryDayConsumerTrend
();
...
...
@@ -626,317 +871,367 @@
formatter
(
day
)
{
const
year
=
day
.
date
.
getFullYear
();
const
month
=
day
.
date
.
getMonth
()
+
1
;
const
monthstr
=
month
<
10
?
'
0
'
+
month
:
month
;
const
monthstr
=
month
<
10
?
"
0
"
+
month
:
month
;
const
date
=
day
.
date
.
getDate
();
const
datestr
=
date
<
10
?
'
0
'
+
date
:
date
;
const
sum
=
year
+
'
-
'
+
monthstr
+
'
-
'
+
datestr
;
const
contrastList
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
e
=>
e
.
dayNotEatNumber
!=
0
);
contrastList
.
forEach
(
item
=>
{
const
datestr
=
date
<
10
?
"
0
"
+
date
:
date
;
const
sum
=
year
+
"
-
"
+
monthstr
+
"
-
"
+
datestr
;
const
contrastList
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
(
e
)
=>
e
.
dayNotEatNumber
!=
0
);
contrastList
.
forEach
((
item
)
=>
{
if
(
sum
==
item
.
repastDate
)
{
const
breakfastTxt
=
item
.
breakfastStatus
?
''
:
'
早
'
;
const
lunchTxt
=
item
.
lunchStatus
?
''
:
'
中
'
;
const
supperTxt
=
item
.
supperStatus
?
''
:
'
晚
'
;
const
breakfastTxt
=
item
.
breakfastStatus
?
""
:
"
早
"
;
const
lunchTxt
=
item
.
lunchStatus
?
""
:
"
中
"
;
const
supperTxt
=
item
.
supperStatus
?
""
:
"
晚
"
;
day
.
topInfo
=
breakfastTxt
+
lunchTxt
+
supperTxt
;
day
.
className
=
'
notice-day
'
day
.
className
=
"
notice-day
"
;
}
})
});
return
day
;
},
formatDate
(
date
)
{
return
`
${
date
.
getMonth
()
+
1
}
月
${
date
.
getDate
()}
日`
;
return
`
${
date
.
getMonth
()
+
1
}
月
${
date
.
getDate
()}
日`
;
},
formatDateTwo
(
date
)
{
return
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
<
9
?
'
0
'
+
(
date
.
getMonth
()
+
1
):
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()
<
10
?
'
0
'
+
date
.
getDate
():
date
.
getDate
()}
`
;
return
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
<
9
?
"
0
"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()
<
10
?
"
0
"
+
date
.
getDate
()
:
date
.
getDate
()}
`
;
},
dateSelect
(
date
)
{
this
.
diningSituations
.
diningSituationsDate
=
this
.
formatDate
(
date
);
var
dateStr
=
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
<
9
?
'
0
'
+
(
date
.
getMonth
()
+
1
):
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()
<
10
?
'
0
'
+
date
.
getDate
():
date
.
getDate
()}
`
;
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
e
=>
e
.
repastDate
===
dateStr
)[
0
];
var
dateStr
=
`
${
date
.
getFullYear
()}
-
${
date
.
getMonth
()
<
9
?
"
0
"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
}
-
${
date
.
getDate
()
<
10
?
"
0
"
+
date
.
getDate
()
:
date
.
getDate
()}
`
;
let
today
=
this
.
diningSituations
.
notRepastDetailsDTOS
.
filter
(
(
e
)
=>
e
.
repastDate
===
dateStr
)[
0
];
this
.
diningSituations
.
notRepastDetails
=
today
;
},
piechart
:
function
()
{
var
myChart
=
echarts
.
init
(
document
.
getElementById
(
'
consumer-preferences-pie
'
));
piechart
:
function
()
{
var
myChart
=
echarts
.
init
(
document
.
getElementById
(
"
consumer-preferences-pie
"
)
);
var
option
=
{
tooltip
:
{
trigger
:
'
item
'
trigger
:
"
item
"
,
},
series
:
this
.
pieDatas
.
map
(
function
(
data
,
idx
)
{
series
:
this
.
pieDatas
.
map
(
function
(
data
,
idx
)
{
return
{
type
:
'
pie
'
,
radius
:
[
'
33
'
,
'
58
'
],
type
:
"
pie
"
,
radius
:
[
"
33
"
,
"
58
"
],
data
:
data
,
itemStyle
:
{
borderColor
:
'
#fff
'
,
borderColor
:
"
#fff
"
,
borderWidth
:
3
,
},
label
:
{
formatter
:
function
(
e
)
{
return
e
.
name
+
"
\n
"
+
e
.
value
+
'
元
'
;
formatter
:
function
(
e
)
{
return
e
.
name
+
"
\n
"
+
e
.
value
+
"
元
"
;
},
padding
:
[
0
,
2
],
rich
:
{
color
:
'
rgba(0, 0, 0, 0.85)
'
,
color
:
"
rgba(0, 0, 0, 0.85)
"
,
fontSize
:
12
,
fontFamily
:
'
PingFangSC-Regular, PingFang SC
'
,
fontFamily
:
"
PingFangSC-Regular, PingFang SC
"
,
fontWeight
:
400
,
lineHeight
:
17
}
}
lineHeight
:
17
,
},
},
};
}),
color
:
[
'
#00C47C
'
,
'
#F6C723
'
,
'
#FF8646
'
]
color
:
[
"
#00C47C
"
,
"
#F6C723
"
,
"
#FF8646
"
],
};
option
&&
myChart
.
setOption
(
option
);
window
.
addEventListener
(
'
resize
'
,
function
()
{
window
.
addEventListener
(
"
resize
"
,
function
()
{
myChart
.
resize
();
})
});
},
// 获取某月的所有周六
getMonthSaturdayDate
:
function
(
year
,
month
)
{
getMonthSaturdayDate
:
function
(
year
,
month
)
{
const
lastDay
=
new
Date
(
year
,
month
,
0
).
getDate
();
const
startDay
=
new
Date
(
year
,
month
,
1
).
getDate
()
const
startDay
=
new
Date
(
year
,
month
,
1
).
getDate
();
const
allDate
=
[];
for
(
var
i
=
startDay
;
i
<=
lastDay
;
i
++
)
{
allDate
[
i
-
1
]
=
i
<
10
?
year
+
'
-
'
+
month
+
'
-
'
+
'
0
'
+
i
:
year
+
'
-
'
+
month
+
'
-
'
+
i
;
allDate
[
i
-
1
]
=
i
<
10
?
year
+
"
-
"
+
month
+
"
-
"
+
"
0
"
+
i
:
year
+
"
-
"
+
month
+
"
-
"
+
i
;
}
const
saturdayDate
=
allDate
.
filter
(
e
=>
{
const
saturdayDate
=
allDate
.
filter
((
e
)
=>
{
const
date
=
new
Date
(
e
);
if
(
date
.
getDay
()
==
6
)
{
return
true
return
true
;
}
})
});
return
saturdayDate
;
},
linechart
:
function
(
num
)
{
var
mySize
=
document
.
getElementById
(
'
consumer-trend-line
'
);
mySize
.
style
.
width
=
360
+
'
px
'
;
mySize
.
style
.
height
=
260
+
'
px
'
;
linechart
:
function
(
num
)
{
var
mySize
=
document
.
getElementById
(
"
consumer-trend-line
"
);
mySize
.
style
.
width
=
360
+
"
px
"
;
mySize
.
style
.
height
=
260
+
"
px
"
;
var
myChart
=
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
month
=
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
.
slice
(
5
,
7
);
var
saturdayList
=
this
.
getMonthSaturdayDate
(
year
,
month
);
switch
(
num
)
{
case
0
:
var
seriesData
=
[];
this
.
lineDatas
.
map
(
v
=>
{
this
.
lineDatas
.
map
((
v
)
=>
{
if
(
v
.
isException
==
1
)
{
if
(
v
.
date
==
this
.
formatDateTwo
(
new
Date
(
year
,
month
,
0
))
||
saturdayList
.
includes
(
v
.
date
))
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
if
(
v
.
date
==
this
.
formatDateTwo
(
new
Date
(
year
,
month
,
0
))
||
saturdayList
.
includes
(
v
.
date
)
)
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#0BDB7E
'
,
borderWidth
:
1.5
}
})
)
color
:
"
#0BDB7E
"
,
borderWidth
:
1.5
,
},
}
)
);
}
else
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#0BDB7E
'
,
borderWidth
:
1.5
color
:
"
#0BDB7E
"
,
borderWidth
:
1.5
,
},
symbol
:
'
none
'
}))
symbol
:
"
none
"
,
})
);
}
}
else
{
if
(
v
.
date
==
this
.
formatDateTwo
(
new
Date
(
year
,
month
,
0
))
||
saturdayList
.
includes
(
v
.
date
))
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
if
(
v
.
date
==
this
.
formatDateTwo
(
new
Date
(
year
,
month
,
0
))
||
saturdayList
.
includes
(
v
.
date
)
)
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#FF8646
'
,
borderWidth
:
1.5
}
}))
color
:
"
#FF8646
"
,
borderWidth
:
1.5
,
},
})
);
}
else
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#FF8646
'
,
borderWidth
:
1.5
color
:
"
#FF8646
"
,
borderWidth
:
1.5
,
},
symbol
:
'
none
'
}))
symbol
:
"
none
"
,
})
);
}
}
});
break
;
case
1
:
var
seriesData
=
[];
this
.
lineDatas
.
map
(
v
=>
{
this
.
lineDatas
.
map
((
v
)
=>
{
if
(
v
.
isException
==
1
)
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#0BDB7E
'
,
borderWidth
:
1.5
}
}))
color
:
"
#0BDB7E
"
,
borderWidth
:
1.5
,
},
})
);
}
else
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
seriesData
.
push
(
Object
.
assign
(
v
,
{
itemStyle
:
{
color
:
'
#FF8646
'
,
borderWidth
:
1.5
}
}))
color
:
"
#FF8646
"
,
borderWidth
:
1.5
,
},
})
);
}
});
break
;
}
var
option
=
{
xAxis
:
{
type
:
'
category
'
,
data
:
xdata
type
:
"
category
"
,
data
:
xdata
,
},
yAxis
:
{
type
:
'
value
'
,
type
:
"
value
"
,
},
series
:
[{
series
:
[
{
data
:
seriesData
,
type
:
'
line
'
,
type
:
"
line
"
,
smooth
:
true
,
areaStyle
:
{
color
:
'
linear-gradient(180 deg, #0DDE7E 0%, rgba(4, 205, 124, 0) 100%)
'
,
opacity
:
0.2
color
:
"
linear-gradient(180 deg, #0DDE7E 0%, rgba(4, 205, 124, 0) 100%)
"
,
opacity
:
0.2
,
},
lineStyle
:
{
color
:
'
#0BDB7E
'
}
}],
color
:
"
#0BDB7E
"
,
},
},
],
tooltip
:
{
trigger
:
'
axis
'
,
trigger
:
"
axis
"
,
axisPointer
:
{
type
:
'
shadow
'
,
type
:
"
shadow
"
,
shadowStyle
:
{
color
:
'
transparent
'
}
color
:
"
transparent
"
,
},
},
extraCssText
:
`width:109px;height:55px;line-height:33rpx;background: no-repeat center/100% url(./static/images/consumeTrendbgm.png);
font-size:24rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;
color: #FF8646;padding:13rpx 12rpx 30rpx 17rpx;`
,
confine
:
true
,
position
:
function
(
pt
)
{
position
:
function
(
pt
)
{
return
[
pt
[
0
]
-
27
,
pt
[
1
]
-
73
];
},
formatter
:
function
(
data
)
{
let
desp
=
[
''
,
'
消费金额偏高
'
,
'
消费金额偏低
'
][
data
[
0
].
data
.
isException
-
1
]
return
data
[
0
].
name
+
'
消费
'
+
data
[
0
].
value
+
'
元
'
+
'
<br>
'
+
desp
;
}
formatter
:
function
(
data
)
{
let
desp
=
[
""
,
"
消费金额偏高
"
,
"
消费金额偏低
"
][
data
[
0
].
data
.
isException
-
1
];
return
data
[
0
].
name
+
"
消费
"
+
data
[
0
].
value
+
"
元
"
+
"
<br>
"
+
desp
;
},
},
};
option
&&
myChart
.
setOption
(
option
);
window
.
addEventListener
(
'
resize
'
,
function
()
{
window
.
addEventListener
(
"
resize
"
,
function
()
{
myChart
.
resize
();
})
});
},
// 查询学生信息
async
queryCampusStudentInfo
()
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/campus-consumer-report/queryCampusStudentInfo
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
})
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/campus-consumer-report/queryCampusStudentInfo
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
this
.
userInfo
=
data
.
obj
;
}
catch
(
e
)
{
//TODO handle the exception
console
.
log
(
e
);
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 查询就餐情况
async
queryNotRepastDetails
(
startDate
,
endDate
)
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/campus-consumer-report/queryNotRepastDetails
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/campus-consumer-report/queryNotRepastDetails
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
startDate
,
endDate
})
endDate
,
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
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
.
notCateringNumber
=
data
.
obj
.
notCateringNumber
;
this
.
diningSituations
.
notCateringType
=
this
.
diningSituations
.
cateringLevel
?
[
'
早餐
'
,
'
午餐
'
,
'
晚餐
'
][
this
.
diningSituations
.
cateringLevel
-
1
]
:
''
;
this
.
diningSituations
.
clues
=
this
.
diningSituations
.
cateringLevel
?
[
'
早餐吃好,一天才能活力满满哦
'
,
'
及时补充能量,下午才能集中精神学习哦
'
,
'
晚餐好好吃,身体才能更健康
'
][
this
.
diningSituations
.
cateringLevel
-
1
]
:
''
;
.
cateringLevel
?
[
"
早餐
"
,
"
午餐
"
,
"
晚餐
"
][
this
.
diningSituations
.
cateringLevel
-
1
]
:
""
;
this
.
diningSituations
.
clues
=
this
.
diningSituations
.
cateringLevel
?
[
"
早餐吃好,一天才能活力满满哦
"
,
"
及时补充能量,下午才能集中精神学习哦
"
,
"
晚餐好好吃,身体才能更健康
"
,
][
this
.
diningSituations
.
cateringLevel
-
1
]
:
""
;
}
catch
(
e
)
{
//TODO handle the exception
console
.
log
(
e
);
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 查询学生消费偏好类型
async
queryStudentConsumerPreference
(
num
)
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/campus-consumer-report/queryStudentConsumerPreference
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/campus-consumer-report/queryStudentConsumerPreference
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
startDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
endDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
,
})
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
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
)
{
this
.
pieDatas
=
[
[{
name
:
'
食堂
'
,
value
:
tmpObj
.
canteenAmount
},
{
name
:
'
超市
'
,
value
:
tmpObj
.
supermarketAmount
},
{
name
:
'
其他
'
,
value
:
tmpObj
.
otherAmount
}]
]
[
{
name
:
"
食堂
"
,
value
:
tmpObj
.
canteenAmount
,
},
{
name
:
"
超市
"
,
value
:
tmpObj
.
supermarketAmount
,
},
{
name
:
"
其他
"
,
value
:
tmpObj
.
otherAmount
,
},
],
];
}
}
catch
(
e
)
{
//TODO handle the exception
...
...
@@ -944,88 +1239,109 @@
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 查询消费总额
async
queryConsumerTrend
()
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/campus-consumer-report/queryConsumerTrend
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/campus-consumer-report/queryConsumerTrend
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
startDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
endDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
,
})
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
this
.
consumerAmountObj
=
data
.
obj
;
this
.
isReasonable
=
this
.
consumerAmountObj
.
exceedRate
>=
40
&&
this
.
consumerAmountObj
.
exceedRate
<=
60
?
false
:
true
;
this
.
schoolAverageHeight
=
this
.
consumerAmountObj
.
schoolAmount
<=
this
.
consumerAmountObj
.
consumerAmount
?
139
:
192
;
this
.
userConsumeHeight
=
this
.
consumerAmountObj
.
consumerAmount
<=
this
.
consumerAmountObj
.
schoolAmount
?
139
:
192
;
this
.
isReasonable
=
this
.
consumerAmountObj
.
exceedRate
>=
40
&&
this
.
consumerAmountObj
.
exceedRate
<=
60
?
false
:
true
;
this
.
schoolAverageHeight
=
this
.
consumerAmountObj
.
schoolAmount
<=
this
.
consumerAmountObj
.
consumerAmount
?
139
:
192
;
this
.
userConsumeHeight
=
this
.
consumerAmountObj
.
consumerAmount
<=
this
.
consumerAmountObj
.
schoolAmount
?
139
:
192
;
}
catch
(
e
)
{
//TODO handle the exception
console
.
log
(
e
);
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 日消费趋势
async
queryDayConsumerTrend
(
num
)
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/campus-consumer-report/queryDayConsumerTrend
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
startDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
]
.
startDate
,
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/campus-consumer-report/queryDayConsumerTrend
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
startDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
startDate
,
endDate
:
this
.
dataRangeArr
[
this
.
dataRangeIndex
].
endDate
,
})
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
var
exceptionDate
=
data
.
obj
.
exceptionDate
;
this
.
isAbnormal
=
exceptionDate
.
length
?
true
:
false
;
var
clues
=
''
;
exceptionDate
.
forEach
((
item
,
index
)
=>
item
.
slice
(
5
,
6
)
==
'
0
'
?
(
clues
+=
item
.
slice
(
6
,
7
)
+
'
月
'
+
item
.
slice
(
8
,
10
)
+
'
日
'
+
(
index
==
exceptionDate
.
length
-
1
?
''
:
'
、
'
))
:
(
clues
+=
item
.
slice
(
5
,
7
)
+
'
月
'
+
item
.
slice
(
8
,
10
)
+
'
日
'
+
(
index
==
exceptionDate
.
length
-
1
?
''
:
'
、
'
)))
var
clues
=
""
;
exceptionDate
.
forEach
((
item
,
index
)
=>
item
.
slice
(
5
,
6
)
==
"
0
"
?
(
clues
+=
item
.
slice
(
6
,
7
)
+
"
月
"
+
item
.
slice
(
8
,
10
)
+
"
日
"
+
(
index
==
exceptionDate
.
length
-
1
?
""
:
"
、
"
))
:
(
clues
+=
item
.
slice
(
5
,
7
)
+
"
月
"
+
item
.
slice
(
8
,
10
)
+
"
日
"
+
(
index
==
exceptionDate
.
length
-
1
?
""
:
"
、
"
))
);
this
.
consumerTrend
.
clues
=
clues
;
if
(
num
)
{
var
lineDatas
=
data
.
obj
.
dayConsumerAmount
.
map
(
item
=>
Object
.
assign
(
item
,
{
var
lineDatas
=
data
.
obj
.
dayConsumerAmount
.
map
((
item
)
=>
Object
.
assign
(
item
,
{
value
:
item
.
consumerAmount
,
name
:
item
.
date
.
slice
(
5
)
}));
name
:
item
.
date
.
slice
(
5
),
})
);
this
.
lineDatas
=
lineDatas
;
}
}
catch
(
e
)
{
...
...
@@ -1034,28 +1350,30 @@
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 是否开通消费报告
async
queryIsDredgeMember
(
num
)
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/member-info/queryIsDredgeMember
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
serviceItemCode
:
4001
})
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/member-info/queryIsDredgeMember
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
serviceItemCode
:
4001
,
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
this
.
isOpen
=
data
.
obj
.
status
;
if
(
num
==
1
)
{
...
...
@@ -1073,28 +1391,30 @@
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 查询会员消费金额
async
queryMemberConsumerAmount
()
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/member-info/queryMemberConsumerAmount
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
serviceItemCode
:
4001
})
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/member-info/queryMemberConsumerAmount
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
serviceItemCode
:
4001
,
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
this
.
memberInfo
.
leastAmount
=
data
.
obj
.
leastAmount
;
}
catch
(
e
)
{
...
...
@@ -1103,69 +1423,94 @@
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
// 查询会员有效期
async
queryMemberValidTime
()
{
try
{
let
data
=
await
this
.
$http
.
get
({
url
:
gHost
+
'
/report-push/member-info/queryMemberValidTime
'
},
{
schoolId
:
getQueryParams
(
'
schoolId
'
),
userId
:
getQueryParams
(
'
userId
'
),
serviceItemCode
:
4001
})
let
data
=
await
this
.
$http
.
get
(
{
url
:
gHost
+
"
/report-push/member-info/queryMemberValidTime
"
,
},
{
schoolId
:
getQueryParams
(
"
schoolId
"
),
userId
:
getQueryParams
(
"
userId
"
),
serviceItemCode
:
4001
,
}
);
if
(
data
.
code
!=
200
)
{
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
data
.
msg
})
return
title
:
data
.
msg
,
});
return
;
}
this
.
memberInfo
.
differDay
=
data
.
obj
.
differDay
;
this
.
memberInfo
.
invalidDate
=
data
.
obj
.
invalidDate
;
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
.
invalidDate
.
slice
(
9
)
:
data
.
obj
.
invalidDate
.
slice
(
8
);
this
.
memberInfo
.
invalidDateStr
=
data
.
obj
.
invalidDate
.
slice
(
0
,
4
)
+
'
年
'
+
month
+
'
月
'
+
date
+
'
日
'
;
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
.
invalidDate
.
slice
(
9
)
:
data
.
obj
.
invalidDate
.
slice
(
8
);
this
.
memberInfo
.
invalidDateStr
=
data
.
obj
.
invalidDate
.
slice
(
0
,
4
)
+
"
年
"
+
month
+
"
月
"
+
date
+
"
日
"
;
}
catch
(
e
)
{
//TODO handle the exception
console
.
log
(
e
);
uni
.
showToast
({
icon
:
"
none
"
,
mask
:
true
,
title
:
e
.
message
})
title
:
e
.
message
,
});
}
},
equityPay
:
function
()
{
equityPay
:
function
()
{
jWeixin
.
miniProgram
.
switchTab
({
url
:
`/pages/Member/main`
,
success
:
function
success
()
{
console
.
log
(
'
skip success
'
)
console
.
log
(
"
skip success
"
);
},
fail
:
function
fail
(
_fail
)
{
console
.
warn
(
_fail
);
uni
.
showModal
({
content
:
JSON
.
stringify
(
_fail
)
content
:
JSON
.
stringify
(
_fail
),
});
}
},
});
},
},
}
};
</
script
>
<
style
lang=
"scss"
scope
>
.tainer
{
.nodata
{
position
:
absolute
;
left
:
50%
;
top
:
30%
;
width
:
100%
;
transform
:
translate
(
-50%
,
0
);
.nodataImg
{
width
:
100%
;
text-align
:
center
;
}
.nodataTxt
{
margin-top
:
10rpx
;
display
:
flex
;
justify-content
:
center
;
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#999999
;
}
}
.tainer
{
.school-report-header
{
height
:
88rpx
;
margin
:
72rpx
0
48rpx
40rpx
;
...
...
@@ -1192,7 +1537,7 @@
font-size
:
34rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#1B1B1B
;
color
:
#1b1b1b
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
...
...
@@ -1223,18 +1568,18 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#1B1B1B
;
color
:
#1b1b1b
;
margin-right
:
12rpx
;
}
.triangle
{
width
:
21rpx
;
height
:
10rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/grayTriangle.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/grayTriangle.png)
;
}
}
.school-report-screen-item-two
{
width
:
270rpx
;
display
:
flex
;
...
...
@@ -1245,14 +1590,15 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#1B1B1B
;
color
:
#1b1b1b
;
margin-right
:
17rpx
;
}
.triangle
{
width
:
21rpx
;
height
:
10rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/grayTriangle.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/grayTriangle.png)
;
}
}
}
...
...
@@ -1272,7 +1618,7 @@
.school-report-context-tab-item-one
{
width
:
172rpx
;
background
:
#F9F9F
9
;
background
:
#f9f9f
9
;
border-radius
:
20rpx
20rpx
0rpx
0rpx
;
font-size
:
30rpx
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
...
...
@@ -1283,7 +1629,7 @@
align-items
:
center
;
&
.active
{
background
:
#E4F9F
2
;
background
:
#e4f9f
2
;
}
}
}
...
...
@@ -1295,7 +1641,7 @@
.share-button
{
width
:
155rpx
;
height
:
64rpx
;
background
:
rgba
(
4
,
184
,
113
,
.13
);
background
:
rgba
(
4
,
184
,
113
,
0
.13
);
border-radius
:
32rpx
0rpx
0rpx
32rpx
;
display
:
flex
;
justify-content
:
center
;
...
...
@@ -1312,7 +1658,7 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#04B
871
;
color
:
#04b
871
;
}
}
}
...
...
@@ -1321,12 +1667,13 @@
.school-report-context-bgImg
{
width
:
100%
;
height
:
452rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumeReportBg.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumeReportBg.png)
;
}
.school-report-context-card
{
width
:
100%
;
background
:
#E5F8F
1
;
background
:
#e5f8f
1
;
padding
:
0
30rpx
;
position
:
absolute
;
top
:
650rpx
;
...
...
@@ -1335,14 +1682,15 @@
.school-report-context-card-one
{
width
:
100%
;
height
:
598rpx
;
background
:
#FFFFFF
;
background
:
#ffffff
;
border-radius
:
16rpx
;
margin-bottom
:
40rpx
;
.school-report-context-card-one-img
{
width
:
428rpx
;
height
:
428rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumeReport.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumeReport.png)
;
position
:
absolute
;
top
:
-172rpx
;
left
:
160rpx
;
...
...
@@ -1366,7 +1714,7 @@
.school-report-context-card-one-context-dot-item
{
width
:
10rpx
;
height
:
10rpx
;
background
:
#04B
871
;
background
:
#04b
871
;
border-radius
:
10rpx
;
margin-right
:
16rpx
;
}
...
...
@@ -1376,12 +1724,12 @@
line-height
:
40rpx
;
.txt-important
{
color
:
#04B
871
;
color
:
#04b
871
;
margin
:
0
4rpx
;
}
.txt-important-two
{
color
:
#04B
871
;
color
:
#04b
871
;
}
}
...
...
@@ -1413,7 +1761,7 @@
.school-report-context-card-two
{
height
:
876rpx
;
background
:
#FFFFFF
;
background
:
#ffffff
;
border-radius
:
16rpx
;
margin-bottom
:
40rpx
;
...
...
@@ -1431,7 +1779,7 @@
.school-report-context-card-two-conclusion-txt
{
.abnormal-days
{
color
:
#F9793F
;
color
:
#f9793f
;
margin
:
0
5rpx
;
}
}
...
...
@@ -1443,14 +1791,14 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#F9793F
;
color
:
#f9793f
;
display
:
flex
;
align-items
:
center
;
.school-report-context-card-two-conclusion-logo-item-dot
{
width
:
12rpx
;
height
:
12rpx
;
background
:
#F9793F
;
background
:
#f9793f
;
border-radius
:
12rpx
;
}
...
...
@@ -1466,7 +1814,7 @@
width
:
690rpx
;
/
deep
/
.van-calendar__weekdays
{
background
:
#F7FAF
8
;
background
:
#f7faf
8
;
}
/
deep
/
.van-calendar__weekday
{
...
...
@@ -1499,8 +1847,8 @@
}
/
deep
/
.van-calendar__selected-day
{
background
:
rgba
(
0
,
0
,
0
,
.1
);
color
:
#F9793F
;
background
:
rgba
(
0
,
0
,
0
,
0
.1
);
color
:
#f9793f
;
display
:
flex
;
align-items
:
flex-end
;
border-radius
:
22rpx
;
...
...
@@ -1513,14 +1861,14 @@
font-size
:
20rpx
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#F9793F
;
color
:
#f9793f
;
line-height
:
28rpx
;
margin
:
12rpx
0
4rpx
;
}
/
deep
/
.notice-day
{
color
:
#F9793F
;
background
:
rgba
(
249
,
121
,
63
,
.1
);
color
:
#f9793f
;
background
:
rgba
(
249
,
121
,
63
,
0
.1
);
border-radius
:
22rpx
;
width
:
88rpx
;
height
:
88rpx
;
...
...
@@ -1532,7 +1880,8 @@
.school-report-context-card-two-details
{
height
:
132rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/diningSituations.png)
;
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
;
...
...
@@ -1545,12 +1894,12 @@
width
:
130rpx
;
height
:
43rpx
;
border-radius
:
8rpx
;
border
:
1rpx
solid
#04B
871
;
border
:
1rpx
solid
#04b
871
;
font-size
:
28rpx
;
font-family
:
FontName
;
font-weight
:
600
;
font-style
:
italic
;
color
:
#04B
871
;
color
:
#04b
871
;
margin-right
:
65rpx
;
display
:
flex
;
justify-content
:
center
;
...
...
@@ -1602,14 +1951,12 @@
font-size
:
24rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#F9793F
;
color
:
#f9793f
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
}
}
}
}
...
...
@@ -1617,7 +1964,7 @@
.school-report-context-card-three
{
height
:
526rpx
;
background
:
#FFFFFF
;
background
:
#ffffff
;
border-radius
:
16rpx
;
margin-bottom
:
40rpx
;
...
...
@@ -1634,7 +1981,7 @@
margin-left
:
30rpx
;
.school-report-context-card-three-conclusion-item-describe
{
color
:
#04B
871
;
color
:
#04b
871
;
}
}
}
...
...
@@ -1648,7 +1995,7 @@
.school-report-context-card-four
{
height
:
536rpx
;
background
:
#FFFFFF
;
background
:
#ffffff
;
border-radius
:
16rpx
;
margin-bottom
:
40rpx
;
...
...
@@ -1665,7 +2012,7 @@
margin
:
0
40rpx
0
30rpx
;
.consume-total
{
color
:
#04B
871
;
color
:
#04b
871
;
margin
:
0
6rpx
;
}
}
...
...
@@ -1679,12 +2026,12 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#FFFFFF
;
color
:
#ffffff
;
line-height
:
40rpx
;
.school-average
{
width
:
110rpx
;
background
:
linear-gradient
(
360deg
,
#04B871
0%
,
#07D66A
100%
);
background
:
linear-gradient
(
360deg
,
#04b871
0%
,
#07d66a
100%
);
border-radius
:
16rpx
16rpx
0
0
;
margin-right
:
74rpx
;
display
:
flex
;
...
...
@@ -1709,7 +2056,7 @@
.user-consume
{
width
:
110rpx
;
background
:
linear-gradient
(
360deg
,
#F0662B
0%
,
#FF
8646
100%
);
background
:
linear-gradient
(
360deg
,
#f0662b
0%
,
#ff
8646
100%
);
border-radius
:
16rpx
16rpx
0
0
;
display
:
flex
;
flex-direction
:
column
;
...
...
@@ -1754,7 +2101,7 @@
.school-report-context-card-five
{
height
:
634rpx
;
background
:
#FFFFFF
;
background
:
#ffffff
;
border-radius
:
16rpx
;
margin-bottom
:
37rpx
;
position
:
relative
;
...
...
@@ -1772,7 +2119,7 @@
line-height
:
40rpx
;
.abnormal-date
{
color
:
#04B
871
;
color
:
#04b
871
;
}
}
}
...
...
@@ -1802,14 +2149,14 @@
.consumer-trend-line-icon-logo-right
{
width
:
8rpx
;
height
:
1rpx
;
background
:
#0BDA7D
;
background
:
#0bda7d
;
}
.consumer-trend-line-icon-logo-middle
{
width
:
12rpx
;
height
:
12rpx
;
background
:
#FFFFFF
;
border
:
3rpx
solid
#0BDB7E
;
background
:
#ffffff
;
border
:
3rpx
solid
#0bdb7e
;
border-radius
:
12rpx
;
}
}
...
...
@@ -1818,12 +2165,10 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#8C8C8C
;
color
:
#8c8c8c
;
line-height
:
40rpx
;
}
}
}
}
...
...
@@ -1832,7 +2177,8 @@
margin
:
0
0
43rpx
;
padding
:
33rpx
34rpx
42rpx
42rpx
;
box-sizing
:
border-box
;
background
:
no-repeat
center
/
100%
url(../../static/images/extendPermissionsBg.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/extendPermissionsBg.png)
;
display
:
flex
;
justify-content
:
space-between
;
...
...
@@ -1855,7 +2201,7 @@
color
:
rgba
(
123
,
80
,
53
,
0
.85
);
.validity-date
{
color
:
#F9793F
;
color
:
#f9793f
;
}
}
}
...
...
@@ -1867,12 +2213,12 @@
.school-report-footer-item-btn
{
width
:
180rpx
;
height
:
61rpx
;
background
:
linear-gradient
(
360deg
,
#F0662B
0%
,
#FF
8646
100%
);
background
:
linear-gradient
(
360deg
,
#f0662b
0%
,
#ff
8646
100%
);
border-radius
:
49rpx
;
font-size
:
28rpx
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#FFFFFF
;
color
:
#ffffff
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
...
...
@@ -1885,7 +2231,12 @@
.no-open
{
width
:
100%
;
height
:
915rpx
;
background
:
linear-gradient
(
180deg
,
rgba
(
255
,
255
,
255
,
0
)
0%
,
rgba
(
255
,
255
,
255
,
0
.97
)
38%
,
#FFFFFF
100%
);
background
:
linear-gradient
(
180deg
,
rgba
(
255
,
255
,
255
,
0
)
0%
,
rgba
(
255
,
255
,
255
,
0
.97
)
38%
,
#ffffff
100%
);
position
:
absolute
;
top
:
1425rpx
;
padding
:
309rpx
30rpx
63rpx
;
...
...
@@ -1903,14 +2254,15 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#04B
871
;
color
:
#04b
871
;
line-height
:
40rpx
;
}
.no-open-solution-item
{
width
:
15rpx
;
height
:
20rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/rightArrow.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/rightArrow.png)
;
}
}
...
...
@@ -1925,7 +2277,7 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
#21775C
;
color
:
#21775c
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
...
...
@@ -1934,7 +2286,7 @@
.open-results-items
{
width
:
100%
;
height
:
379rpx
;
background
:
#F6FAF
9
;
background
:
#f6faf
9
;
border-radius
:
16rpx
;
padding
:
32rpx
0
43rpx
73rpx
;
box-sizing
:
border-box
;
...
...
@@ -1972,49 +2324,55 @@
font-size
:
28rpx
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#13664C
;
color
:
#13664c
;
line-height
:
40rpx
;
}
.dining-situations-img
{
width
:
34rpx
;
height
:
27rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/repast.png)
;
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)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerRationality.png)
;
margin
:
0
22rpx
0
108rpx
;
}
.consumer-preference-img
{
width
:
30rpx
;
height
:
27rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerPreference.png)
;
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)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerAdvice.png)
;
margin
:
0
24rpx
0
112rpx
;
}
.consumer-num-img
{
width
:
30rpx
;
height
:
34rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerNum.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerNum.png)
;
margin-right
:
24rpx
;
}
.consumer-trend-img
{
width
:
28rpx
;
height
:
25rpx
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerTrend.png)
;
background
:
no-repeat
center
/
100%
url(../../static/images/consumerTrend.png)
;
margin-right
:
25rpx
;
}
}
...
...
@@ -2022,6 +2380,5 @@
}
}
}
}
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment