张延森 3 年之前
父節點
當前提交
a9bd99a095

+ 2
- 2
config/dev.js 查看文件

@@ -3,8 +3,8 @@ module.exports = {
3 3
     NODE_ENV: '"development"'
4 4
   },
5 5
   defineConstants: {
6
-    // HOST: '"https://xlk.njyz.tech"',
7
-    HOST: '"http://127.0.0.1:8088"',
6
+    HOST: '"https://xlk.njyz.tech"',
7
+    // HOST: '"http://127.0.0.1:8088"',
8 8
     WSS_HOST: '"wss://xlk.njyz.tech"',
9 9
     OSS_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',
10 10
     OSS_FAST_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',

+ 32
- 8
src/pages/index/buildingDetail/components/DetailBottom/index.jsx 查看文件

@@ -1,27 +1,51 @@
1
-import React, { useState, useEffect } from 'react'
2
-import './index.scss'
1
+import React from 'react'
2
+import Taro from '@tarojs/taro'
3 3
 import { Image } from '@tarojs/components'
4
+import useConsultant from '@/utils/hooks/useConsultant'
5
+import './index.scss'
4 6
 
5 7
 export default function DetailBottom (props) {
6
-  const { Data = {} } = props
8
+  const { Info = {} } = props
9
+
10
+  // 当前推荐置业
11
+  const { consultant } = useConsultant(Info?.buildingId)
12
+
13
+  const handleCall = () => {
14
+    if (consultant) {
15
+      Taro.makePhoneCall({ phoneNumber: consultant.phone })
16
+      return
17
+    }
18
+
19
+    if (Info.tel) {
20
+      Taro.makePhoneCall({ phoneNumber: Info.tel })
21
+      return
22
+    }
23
+
24
+    Taro.showToast({ title: '暂无联系电话', icon: 'none' })
25
+  }
26
+
27
+  const handleChat = () => {
28
+    
29
+  }
30
+
7 31
   return (
8 32
     <view className='components DetailBottom flex-h'>
9 33
       <view className='Item'>
10
-        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon3.png')}></Image>
34
+        <Image mode='heightFix' src={require('@/assets/buildingDetail-icon3.png')}></Image>
11 35
         <text>一键海报</text>
12 36
       </view>
13 37
       <view className='Item'>
14
-        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon1.png')}></Image>
38
+        <Image mode='heightFix' src={require('@/assets/buildingDetail-icon1.png')}></Image>
15 39
         <text>一键带看</text>
16 40
       </view>
17 41
       <view className='Item'>
18
-        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon2.png')}></Image>
42
+        <Image mode='heightFix' src={require('@/assets/buildingDetail-icon2.png')}></Image>
19 43
         <text>一键推荐</text>
20 44
       </view>
21 45
       <view className='flex-item'></view>
22 46
       <view className='Btn'>
23
-        <text>一键咨询</text>
24
-        <text className='active'>一键电话</text>
47
+        <text onClick={handleChat}>一键咨询</text>
48
+        <text className='active' onClick={handleCall}>一键电话</text>
25 49
       </view>
26 50
     </view>
27 51
   )

+ 8
- 7
src/pages/index/buildingDetail/components/MarketingActivity/index.jsx 查看文件

@@ -13,16 +13,17 @@ export default function MarketingActivity (props) {
13 13
   const [dataList, setDataList] = useState([])
14 14
 
15 15
   const goMore = () => Taro.navigateTo({ url: `/pages/index/activityList/index?type=house&buildingId=${buildingId}` })
16
+  const goDetail = (id) => Taro.navigateTo({ url: `/pages/index/activityDetail/index?id=${id}` })
16 17
 
17 18
   useEffect(() => {
18
-    queryActivityList({ buildingId, pageSize: 3 }).then((res) => {
19
-      const { list } = res || {}
20
-      setDataList(list || [])
21
-    })
19
+    if (buildingId) {
20
+      queryActivityList({ buildingId, pageSize: 3, type: 'house' }).then((res) => {
21
+        const { list } = res || {}
22
+        setDataList(list || [])
23
+      })
24
+    }
22 25
   }, [buildingId])
23 26
 
24
-  console.log('----------->', dataList)
25
-
26 27
   return dataList.length > 0 && (
27 28
     <view className='components MarketingActivity'>
28 29
 
@@ -40,7 +41,7 @@ export default function MarketingActivity (props) {
40 41
             {
41 42
               dataList.map((item, index) => (
42 43
                 <SwiperItem key={`Banner-${index}`}>
43
-                  <view className='swiper-item'>
44
+                  <view className='swiper-item' onClick={() => goDetail(item.dynamicId)}>
44 45
                     <Image mode='aspectFill' className='centerLabel' src={getImgURL(item.bannerListImg || item.image || item.url || item.img || item.imgUrl || item.detailImg)} />
45 46
                   </view>
46 47
                 </SwiperItem>

+ 1
- 1
src/pages/index/buildingDetail/index.jsx 查看文件

@@ -139,7 +139,7 @@ export default withLayout((props) => {
139 139
       </view>
140 140
 
141 141
       <view className='PageBottom'>
142
-        <DetailBottom></DetailBottom>
142
+        <DetailBottom Info={DetailInfo}></DetailBottom>
143 143
       </view>
144 144
 
145 145
     </view>

+ 17
- 0
src/reducers/system.js 查看文件

@@ -8,6 +8,11 @@ const INITIAL_STATE = {
8 8
   userInfo: {},
9 9
   settings: [],
10 10
   systemInfo: {},
11
+
12
+  // 当前推荐人信息
13
+  recommender: {},
14
+  // 当前推荐置业顾问信息
15
+  consultant: {},
11 16
 };
12 17
 
13 18
 export default function(state = INITIAL_STATE, action) {
@@ -24,6 +29,18 @@ export default function(state = INITIAL_STATE, action) {
24 29
         systemInfo: action.payload
25 30
       };
26 31
     }
32
+    case 'SYNC_RECOMMENDER': {
33
+      return {
34
+        ...state,
35
+        recommender: action.payload
36
+      };
37
+    }
38
+    case 'SYNC_CONSULTANT': {
39
+      return {
40
+        ...state,
41
+        consultant: action.payload
42
+      };
43
+    }
27 44
 
28 45
     default:
29 46
       return state;

+ 18
- 0
src/utils/hooks/useConsultant.js 查看文件

@@ -0,0 +1,18 @@
1
+import { useSelector } from 'react-redux'
2
+
3
+/**
4
+ * 获取当前推荐置业
5
+ * @param {*} buildingId 
6
+ * @returns 
7
+ */
8
+export default function useConsultant(buildingId) {
9
+  const { consultant } = useSelector(s => s.system)
10
+
11
+  if (consultant?.id) {
12
+    if (consultant.projects && consultant.projects.indexOf(buildingId) > -1) {
13
+      return { consultant }
14
+    }
15
+  }
16
+
17
+  return {}
18
+}

+ 3
- 1
src/utils/im/sdk.js 查看文件

@@ -22,6 +22,8 @@ export default function IMSDK() {
22 22
     current: {}
23 23
   }
24 24
 
25
+  let connected = false
26
+
25 27
   return {
26 28
     STATE,
27 29
     getState,
@@ -47,7 +49,7 @@ export default function IMSDK() {
47 49
   function connect(options) {
48 50
     Object.assign(paramsRef.current, options || {})
49 51
     
50
-    if (instanceRef.current && instanceRef.current.readyState === STATE.OPEN) {
52
+    if (instanceRef.current && instanceRef.current.readyState <= STATE.CLOSING) {
51 53
       return Promise.resolve()
52 54
     }
53 55
 

+ 13
- 1
src/utils/login.js 查看文件

@@ -1,9 +1,10 @@
1 1
 import Taro from '@tarojs/taro';
2 2
 import store from "@/store";
3 3
 import { dispatchCitySelected } from '@/actions/city'
4
-import { USER_INFO, ASSIGN_UNREADNUM } from '@/constants/user'
4
+import { USER_INFO, ASSIGN_UNREADNUM, ROLE_CODE } from '@/constants/user'
5 5
 import { ifNull } from '@/utils/tools'
6 6
 import { wxLogin } from '@/services/login'
7
+import { getCardDetail } from '@/services/card'
7 8
 import { queryUserInfo } from '@/services/user'
8 9
 
9 10
 export default (payload) => {
@@ -46,6 +47,17 @@ export default (payload) => {
46 47
             dispatch({ type: ASSIGN_UNREADNUM, payload: true });
47 48
             resolve(data)
48 49
           }).catch(reject)
50
+
51
+          // 如果有推荐人信息
52
+          if (loginParams.recommender && loginParams.recommender !== person.personId) {
53
+            getCardDetail(loginParams.recommender).then((res) => {
54
+              dispatch({ type: 'SYNC_RECOMMENDER', payload: res });
55
+              if (res.personType === ROLE_CODE.CONSULTANT) {
56
+                dispatch({ type: 'SYNC_CONSULTANT', payload: res });
57
+              }
58
+            })
59
+          }
60
+
49 61
         }).catch(reject)
50 62
       }
51 63
     })