xujing 5 年前
父节点
当前提交
a2d06722cd
共有 5 个文件被更改,包括 47 次插入20 次删除
  1. 11
    2
      src/actions/project.js
  2. 2
    1
      src/constants/project.js
  3. 1
    1
      src/pages/city/index.js
  4. 14
    14
      src/pages/project/index.js
  5. 19
    2
      src/reducers/project.js

+ 11
- 2
src/actions/project.js 查看文件

@@ -1,11 +1,13 @@
1 1
 import {
2 2
   PROJECT_DETAIL,
3
-  PROJECT_LIST
3
+  PROJECT_LIST,
4
+  PROJECT_SCREEN
4 5
 } from '@constants/project'
5 6
 
6 7
 import {
7 8
   API_ITEMS_DETAIL,
8
-  API_ITEMS_LIST
9
+  API_ITEMS_LIST,
10
+  API_BANNER_LIST
9 11
 } from '@constants/api'
10 12
 
11 13
 import { createAction } from '@utils/redux'
@@ -30,3 +32,10 @@ export const dispatchProjectDetail = id => createAction({
30 32
   url: `${API_ITEMS_DETAIL}/${id}`,
31 33
   type: PROJECT_DETAIL
32 34
 })
35
+
36
+/**
37
+ * 获取开屏广告
38
+ *  @param {*} payload 
39
+ * 
40
+*/
41
+export const dispatchProjectScreen = (payload) => createAction({ url: `${API_BANNER_LIST}/screen`, payload, type: PROJECT_SCREEN })

+ 2
- 1
src/constants/project.js 查看文件

@@ -1,4 +1,5 @@
1 1
 export const PROJECT_LIST = 'PROJECT_LIST'
2 2
 export const PROJECT_DETAIL = 'PROJECT_DETAIL'
3
-
3
+export const PROJECT_SCREEN = 'PROJECT_SCREEN'
4
+export const SET_SCREEN_SHOWED = 'SET_SCREEN_SHOWED'
4 5
 export const LOCATION_CITY = 'LOCATION_CITY'

+ 1
- 1
src/pages/city/index.js 查看文件

@@ -40,7 +40,7 @@ export default class Index extends Component {
40 40
       list
41 41
     })
42 42
   }
43
-
43
+ 
44 44
   handleSelected(item) {
45 45
     this.props.dispatchCitySelected(item).then(res => {
46 46
       Taro.navigateBack({

+ 14
- 14
src/pages/project/index.js 查看文件

@@ -5,7 +5,6 @@ import ProjectItem from './item'
5 5
 import Banner from './banner'
6 6
 import HelpGroupBanner from './swiper'
7 7
 // import ActivityItem from '../activity/item'
8
-
9 8
 import ready from '@utils/ready'
10 9
 import { getLocationCity } from '@services/map'
11 10
 
@@ -14,6 +13,7 @@ import { queryNewsList, queryHelpGroup } from '@services/news'
14 13
 import { queryActivityList } from '@services/activity'
15 14
 import { dispatchCitySelected } from '@actions/city'
16 15
 import { ROLE_CODE, DECREASE_UNREADNUM } from '@constants/user'
16
+import { SET_SCREEN_SHOWED } from '@constants/project'
17 17
 import { getStore, connect } from '@tarojs/redux'
18 18
 import * as actions from '@actions/project'
19 19
 import { transferImage } from '@utils/tools'
@@ -85,6 +85,7 @@ export default class Index extends Component {
85 85
   componentDidShow() {
86 86
     if (this.props.curCity.id) {
87 87
       ready.queue(() => {
88
+        // debugger
88 89
         this.loadData()
89 90
       })
90 91
     }
@@ -153,6 +154,7 @@ export default class Index extends Component {
153 154
     this.loadBannerList()
154 155
     this.loadHelpGroupList()
155 156
     this.loadNewsList()
157
+    this.loadOpenScreenBanner()
156 158
     // this.loadActivityList()
157 159
     this.loadList()
158 160
 
@@ -163,32 +165,30 @@ export default class Index extends Component {
163 165
     const payload = {}
164 166
     if (curCity.id) {
165 167
       payload.cityId = curCity.id
166
-    } else {
167
-
168 168
     }
169
+
169 170
     // 获取开屏广告图
170
-    queryBanners('screen', payload).then(res => {
171
+    this.props.dispatchProjectScreen(payload).then(res => {
171 172
       const banner = res[0]
172
-      if (banner) {
173
+      debugger
174
+      const maskVisible = this.props.screenShow !== (banner || {}).contentId
175
+
176
+      if (maskVisible) {
173 177
         Taro.hideTabBar({
174 178
           animation: true
175 179
         })
176 180
       }
181
+
177 182
       this.setState({
178
-        maskVisible: banner ? true : false,
183
+        maskVisible,
179 184
         maskBanner: banner
185
+      }, () => {
186
+        const { dispatch } = getStore()
187
+        dispatch({ type: SET_SCREEN_SHOWED, payload: (banner || {}).contentId })
180 188
       })
181 189
     })
182 190
   }
183
-  componentWillReceiveProps(nextProps) {
184
-    console.log(nextProps.curCity, "curCitycurCitycurCitycurCitycurCity")
185
-    console.log(this.state.maskBanner, "maskBannermaskBannermaskBannermaskBannermaskBanner")
186
-
187
-    if (!this.state.maskBanner && JSON.stringify(nextProps.curCity) != '{}') {
188 191
 
189
-      this.loadOpenScreenBanner()
190
-    }
191
-  }
192 192
   loadBannerList() {
193 193
     const { curCity } = this.props
194 194
     // 获取首页banner

+ 19
- 2
src/reducers/project.js 查看文件

@@ -1,12 +1,16 @@
1 1
 import {
2 2
   PROJECT_DETAIL,
3
-  PROJECT_LIST
3
+  PROJECT_LIST,
4
+  PROJECT_SCREEN,
5
+  SET_SCREEN_SHOWED,
4 6
 } from '@constants/project'
5 7
 
6 8
 
7 9
 const INITIAL_STATE = {
8 10
   proList: {},
9
-  projectDetail: {}
11
+  projectDetail: {},
12
+  screen: {},
13
+  screenShow: undefined,
10 14
 }
11 15
 
12 16
 export default function project(state = INITIAL_STATE, action) {
@@ -27,6 +31,19 @@ export default function project(state = INITIAL_STATE, action) {
27 31
         }
28 32
       }
29 33
     }
34
+    case PROJECT_SCREEN: {
35
+      return {
36
+        ...state,
37
+        screen: (action.payload || [])[0] || {}
38
+      }
39
+    }
40
+
41
+    case SET_SCREEN_SHOWED: {
42
+      return {
43
+        ...state,
44
+        screenShow: action.payload,
45
+      }
46
+    }
30 47
 
31 48
     default:
32 49
       return state