张延森 3 years ago
parent
commit
d7667cd578

+ 6
- 2
src/hotel/pages/landlord/landlord.jsx View File

1
 import React, { useState, useEffect, useRef } from 'react'
1
 import React, { useState, useEffect, useRef } from 'react'
2
 import Taro,{ useRouter,useShareAppMessage } from '@tarojs/taro'
2
 import Taro,{ useRouter,useShareAppMessage } from '@tarojs/taro'
3
-import HouseManage from '../../components/HouseManage/houseManage'
4
-import Income from '../../components/Income/income'
5
 import TabBar from '@/components/CustTabBar'
3
 import TabBar from '@/components/CustTabBar'
6
 import incomeImg from '@/assets/icons/landlord/我的收入.png'
4
 import incomeImg from '@/assets/icons/landlord/我的收入.png'
7
 import onincomeImg from '@/assets/icons/landlord/我的收入按下.png'
5
 import onincomeImg from '@/assets/icons/landlord/我的收入按下.png'
11
 import { getHotelManage,  getNowHotelManage } from '@/services/landlord'
9
 import { getHotelManage,  getNowHotelManage } from '@/services/landlord'
12
 import NoData from '@/components/NoData'
10
 import NoData from '@/components/NoData'
13
 import CustomNav from '@/components/CustomNav'
11
 import CustomNav from '@/components/CustomNav'
12
+import useSubscribeMessage from '@/utils/hooks/useSubscribeMessage'
13
+import HouseManage from '../../components/HouseManage/houseManage'
14
+import Income from '../../components/Income/income'
14
 import './landlord.less'
15
 import './landlord.less'
15
 
16
 
16
 export default withLayout((props) => {
17
 export default withLayout((props) => {
24
 
25
 
25
   const houseRef = useRef()
26
   const houseRef = useRef()
26
 
27
 
28
+  // 订阅消息
29
+  useSubscribeMessage('hotel_check_in', true)
30
+
27
 
31
 
28
   useEffect(() => {
32
   useEffect(() => {
29
     getHotelManage().then((res) => {
33
     getHotelManage().then((res) => {

+ 3
- 3
src/pages/RoomOrder/index.jsx View File

3
 import CustomNav from '@/components/CustomNav'
3
 import CustomNav from '@/components/CustomNav'
4
 import withLayout from '@/layouts'
4
 import withLayout from '@/layouts'
5
 import { getTaRoom, goToRoomForm, personSubmit } from '@/services/taRoom​'
5
 import { getTaRoom, goToRoomForm, personSubmit } from '@/services/taRoom​'
6
+import useSubscribeMessage from "@/utils/hooks/useSubscribeMessage"
6
 import RoomForm from './components/RoomForm'
7
 import RoomForm from './components/RoomForm'
7
 import './style.less'
8
 import './style.less'
8
 
9
 
9
 
10
 
10
-
11
-
12
 export default withLayout((props) => {
11
 export default withLayout((props) => {
13
   const { router, person } = props
12
   const { router, person } = props
14
   const { roomId, roomOrderId, status } = router.params
13
   const { roomId, roomOrderId, status } = router.params
44
 
43
 
45
   }
44
   }
46
 
45
 
47
-
46
+  // 订阅消息
47
+  useSubscribeMessage('hotel_check_out', true)
48
 
48
 
49
 
49
 
50
   useEffect(() => {
50
   useEffect(() => {

+ 4
- 11
src/pages/index/tabs/Guide.jsx View File

1
 import { useState, useEffect, useRef } from "react";
1
 import { useState, useEffect, useRef } from "react";
2
 import Taro from '@tarojs/taro'
2
 import Taro from '@tarojs/taro'
3
-import CustomNav from '@/components/CustomNav'
4
-
5
 import MoreGuide from "@/components/MoreGuide";
3
 import MoreGuide from "@/components/MoreGuide";
6
 import BossCard from '@/components/BossCard'
4
 import BossCard from '@/components/BossCard'
7
 import Taxi from '@/assets/icons/GuideCheck/taxi.png'
5
 import Taxi from '@/assets/icons/GuideCheck/taxi.png'
13
 import sleep from '@/assets/icons/GuideCheck/sleep_logo.png'
11
 import sleep from '@/assets/icons/GuideCheck/sleep_logo.png'
14
 import { getTaRoom, goToRoomForm } from '@/services/taRoom​'
12
 import { getTaRoom, goToRoomForm } from '@/services/taRoom​'
15
 import useTrackClick from '@/utils/hooks/useTrackClick'
13
 import useTrackClick from '@/utils/hooks/useTrackClick'
16
-import showMore from '../../../assets/icons/housemantj/查看更多.png'
14
+import showMore from '@/assets/icons/housemantj/查看更多.png'
15
+import useSubscribeMessage from "@/utils/hooks/useSubscribeMessage";
17
 import './GuideCss/style.less'
16
 import './GuideCss/style.less'
18
 
17
 
19
 
18
 
20
-
21
-
22
-
23
-
24
 export default (props) => {
19
 export default (props) => {
25
   const { router, person, location, } = props
20
   const { router, person, location, } = props
26
   const { roomId, roomOrderId } = router.params
21
   const { roomId, roomOrderId } = router.params
58
     })
53
     })
59
   }
54
   }
60
 
55
 
61
-
62
-
63
-
64
-
56
+  // 订阅消息
57
+  useSubscribeMessage('hotel_check_out', !roomOrderId)
65
 
58
 
66
   useEffect(() => {
59
   useEffect(() => {
67
     if (roomOrderId) {
60
     if (roomOrderId) {

+ 2
- 0
src/store/index.js View File

1
 import { createStore, createStoreRoot, createModelHook } from '@zjxpcyc/react-tiny-store'
1
 import { createStore, createStoreRoot, createModelHook } from '@zjxpcyc/react-tiny-store'
2
+import system from './models/system'
2
 import person from './models/person'
3
 import person from './models/person'
3
 
4
 
4
 const store = createStore()
5
 const store = createStore()
5
 const models = {
6
 const models = {
7
+  system,
6
   person,
8
   person,
7
 }
9
 }
8
 
10
 

+ 10
- 0
src/store/models/system.js View File

1
+import { useState } from "react";
2
+
3
+export default function useSystem() {
4
+  const [messageTpls, setMessageTpls] = useState([])
5
+
6
+  return {
7
+    messageTpls,
8
+    setMessageTpls,
9
+  }
10
+}

+ 21
- 0
src/utils/hooks/useSubscribeMessage.js View File

1
+import { useEffect } from "react";
2
+import Taro from '@tarojs/taro';
3
+import { useModel } from "@/store";
4
+
5
+export default function(messageType, dep) {
6
+  const { messageTpls } = useModel('system')
7
+
8
+  useEffect(() => {
9
+    if (!messageTpls || !messageTpls.length) return;
10
+
11
+    if (dep && messageType) {
12
+      const tpl = messageTpls.filter(x => x.messageType === messageType)[0] || {}
13
+
14
+      if (tpl.templateId) {
15
+        Taro.requestSubscribeMessage({
16
+          tmplIds: [tpl.templateId]
17
+        })
18
+      }
19
+    }
20
+  }, [messageTpls, messageType, dep])
21
+}

+ 23
- 9
src/utils/preFetchData.js View File

1
 import Taro from '@tarojs/taro'
1
 import Taro from '@tarojs/taro'
2
+import store from '@/store'
2
 
3
 
3
 export default () => {
4
 export default () => {
4
 
5
 
5
   return new Promise((resolve, reject) => {
6
   return new Promise((resolve, reject) => {
6
-    Taro.getLocation({
7
+    Taro.getBackgroundFetchData({
8
+      fetchType: 'pre',
7
       success(res) {
9
       success(res) {
8
-        const location = `${res.longitude},${res.latitude}`
9
-        Taro.setStorageSync('location', location)
10
-        resolve({
11
-          location,
12
-        })
10
+        const { code, data } = JSON.parse(res.fetchedData) || {}
11
+        if (code === 1000) {
12
+          const { messageTpls } = data
13
+          const { setMessageTpls } = store.getModel('system').getState()
14
+          setMessageTpls(messageTpls)
15
+        }
13
       },
16
       },
14
-      fail(err) {
15
-        console.error(err)
16
-        reject(err)
17
+      complete() {
18
+        Taro.getLocation({
19
+          success(res) {
20
+            const location = `${res.longitude},${res.latitude}`
21
+            Taro.setStorageSync('location', location)
22
+            resolve({
23
+              location,
24
+            })
25
+          },
26
+          fail(err) {
27
+            console.error(err)
28
+            reject(err)
29
+          }
30
+        })
17
       }
31
       }
18
     })
32
     })
19
   })
33
   })