|
@@ -1,32 +1,54 @@
|
1
|
|
-import React, { useState, useEffect } from 'react'
|
|
1
|
+import React, { useState, useEffect, useRef } from 'react'
|
2
|
2
|
import withLayout from '@/layout'
|
3
|
3
|
import { ScrollView, Image } from '@tarojs/components'
|
4
|
4
|
import { getChannelRank } from '@/services/agent'
|
5
|
5
|
import { fetch } from '@/utils/request'
|
6
|
6
|
import { API_GET_AGENT_BUILDINGS } from '@/constants/api'
|
7
|
|
-import '@/assets/css/iconfont.css'
|
|
7
|
+import { } from '@/constants/user'
|
|
8
|
+import DateRangePicker from '@/components/DateRangePicker'
|
|
9
|
+import Picker from '@/components/Picker'
|
|
10
|
+import LineChat from './components/LineChat'
|
|
11
|
+// import '@/assets/css/iconfont.css'
|
8
|
12
|
import './index.scss'
|
9
|
13
|
|
|
14
|
+const lineXDicts = [
|
|
15
|
+ {name: '按天', id: 'day'},
|
|
16
|
+ {name: '按月', id: 'month'},
|
|
17
|
+]
|
|
18
|
+
|
|
19
|
+const padMonth = m => m > 9 ? m : `0${m}`
|
|
20
|
+
|
10
|
21
|
export default withLayout((props) => {
|
11
|
22
|
|
|
23
|
+ const [showPicker, setShowPicker] = useState(false)
|
|
24
|
+ const [rankDateRange, setRankDateRange] = useState([])
|
|
25
|
+ const [reportDateRange, setReportDateRange] = useState([])
|
12
|
26
|
const [buildingId, setBuildingId] = useState()
|
13
|
27
|
const [buildingList, setBuildingList] = useState([])
|
14
|
28
|
const [rankList, setRankList] = useState([])
|
15
|
|
- const [IsPull, setPull] = useState(false)
|
16
|
|
- const [PullTimer, setPullTimer] = useState(null)
|
|
29
|
+ const [lineXType, setLineXType] = useState('day')
|
|
30
|
+ const [lingeDateRange, seteLineDateRange] = useState([])
|
|
31
|
+ const pickerTrigger = useRef()
|
17
|
32
|
|
18
|
|
- const PageRefresh = () => { // 页面下拉刷新回调
|
19
|
|
- setPull(true)
|
|
33
|
+ const handleRankDate = () => {
|
|
34
|
+ pickerTrigger.current = 'rank'
|
|
35
|
+ setShowPicker(true)
|
20
|
36
|
}
|
21
|
37
|
|
22
|
|
- useEffect(() => { // 下拉刷新触发
|
23
|
|
- if (IsPull) {
|
24
|
|
- clearTimeout(PullTimer)
|
25
|
|
- setPullTimer(setTimeout(() => {
|
26
|
|
- setPull(false)
|
27
|
|
- }, 2000))
|
|
38
|
+ const handleReportDate = () => {
|
|
39
|
+ pickerTrigger.current = 'report'
|
|
40
|
+ setShowPicker(true)
|
|
41
|
+ }
|
|
42
|
+
|
|
43
|
+ const handlePickerChange = (e) => {
|
|
44
|
+ setShowPicker(false)
|
|
45
|
+
|
|
46
|
+ if (pickerTrigger.current == 'rank') {
|
|
47
|
+ setRankDateRange(e)
|
|
48
|
+ } else {
|
|
49
|
+ setReportDateRange(e)
|
28
|
50
|
}
|
29
|
|
- }, [IsPull])
|
|
51
|
+ }
|
30
|
52
|
|
31
|
53
|
useEffect(() => {
|
32
|
54
|
fetch({ url: API_GET_AGENT_BUILDINGS }).then((res) => {
|
|
@@ -46,16 +68,38 @@ export default withLayout((props) => {
|
46
|
68
|
}
|
47
|
69
|
}, [buildingId])
|
48
|
70
|
|
|
71
|
+ useEffect(() => {
|
|
72
|
+ const now = new Date()
|
|
73
|
+ const endDay = now.toJSON().substring(0, 10)
|
|
74
|
+ if (lineXType === 'day') {
|
|
75
|
+ const cutDay = 7 * 24 * 60 * 60 * 1000
|
|
76
|
+ const start = new Date(now - cutDay)
|
|
77
|
+ seteLineDateRange([start.toJSON().substring(0, 10), endDay])
|
|
78
|
+ } else {
|
|
79
|
+ const cutMonth = 6
|
|
80
|
+ const curMonth = now.getMonth() + 1
|
|
81
|
+ const startMonth = curMonth - cutMonth + 1
|
|
82
|
+ if (startMonth <= 0) {
|
|
83
|
+ const startYear = now.getFullYear() - 1
|
|
84
|
+ seteLineDateRange([`${startYear}-${padMonth(startMonth + 12)}-01`, endDay])
|
|
85
|
+ } else {
|
|
86
|
+ seteLineDateRange([`${now.getFullYear()}-${padMonth(startMonth)}-01`, endDay])
|
|
87
|
+ }
|
|
88
|
+ }
|
|
89
|
+
|
|
90
|
+ }, [lineXType])
|
|
91
|
+
|
49
|
92
|
return (
|
50
|
93
|
<view className='Page partnerChannel'>
|
51
|
|
- <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
|
|
94
|
+ <DateRangePicker visable={showPicker} close={() => setShowPicker(false)} change={handlePickerChange} />
|
|
95
|
+ <ScrollView scrollY>
|
52
|
96
|
<view className='PageContent'>
|
53
|
97
|
|
54
|
98
|
{/* 排行榜 */}
|
55
|
99
|
<view className='Ranking'>
|
56
|
100
|
<view className='Top flex-h'>
|
57
|
101
|
<text className='flex-item'>龙虎榜</text>
|
58
|
|
- <Image mode='heightFix' src={require('@/assets/mine-icon23.png')}></Image>
|
|
102
|
+ <Image mode='heightFix' src={require('@/assets/mine-icon23.png')} onClick={handleRankDate} />
|
59
|
103
|
</view>
|
60
|
104
|
<view className='List flex-h'>
|
61
|
105
|
{
|
|
@@ -94,7 +138,7 @@ export default withLayout((props) => {
|
94
|
138
|
<view className='SaleNews'>
|
95
|
139
|
<view className='Top flex-h'>
|
96
|
140
|
<text>销售简报</text>
|
97
|
|
- <Image mode='heightFix' src={require('../../../assets/mine-icon23.png')}></Image>
|
|
141
|
+ <Image mode='heightFix' src={require('../../../assets/mine-icon23.png')} onClick={handleReportDate}></Image>
|
98
|
142
|
<view className='flex-item'></view>
|
99
|
143
|
<text>更多</text>
|
100
|
144
|
<text className='iconfont icon-jiantouright'></text>
|
|
@@ -128,12 +172,12 @@ export default withLayout((props) => {
|
128
|
172
|
<text className='iconfont icon-sanjiaoxingdown'></text>
|
129
|
173
|
</view>
|
130
|
174
|
<view className='Sort'>
|
131
|
|
- <text>按天</text>
|
|
175
|
+ <Picker kv={['name', 'id']} dicts={lineXDicts} value={lineXType} onChange={setLineXType} />
|
132
|
176
|
<text className='iconfont icon-sanjiaoxingdown'></text>
|
133
|
177
|
</view>
|
134
|
178
|
</view>
|
135
|
179
|
<view className='LineChart'>
|
136
|
|
-
|
|
180
|
+ <LineChat buildingId={buildingId} xType={lineXType} dateRange={lingeDateRange} />
|
137
|
181
|
</view>
|
138
|
182
|
</view>
|
139
|
183
|
|