张延森 4 anni fa
parent
commit
4b127a077c
53 ha cambiato i file con 2172 aggiunte e 105 eliminazioni
  1. 1
    1
      config/dev.js
  2. 3
    0
      config/index.js
  3. 2
    2
      project.config.json
  4. 30
    0
      src/actions/activity.js
  5. 59
    0
      src/actions/card.js
  6. 30
    0
      src/actions/city.js
  7. 36
    0
      src/actions/house.js
  8. 32
    0
      src/actions/news.js
  9. 53
    0
      src/actions/project.js
  10. 89
    0
      src/actions/shop.js
  11. 6
    1
      src/app.config.js
  12. 34
    4
      src/app.jsx
  13. BIN
      src/assets/logo.png
  14. 18
    0
      src/components/Loading/index.jsx
  15. 22
    0
      src/components/Loading/style.scss
  16. 30
    0
      src/components/Spin/index.jsx
  17. 112
    0
      src/components/Spin/style.scss
  18. 0
    21
      src/layout/Basic.jsx
  19. 24
    0
      src/layout/Basic/index.jsx
  20. 5
    0
      src/layout/Basic/style.scss
  21. 24
    0
      src/layout/index.js
  22. 0
    40
      src/layout/style.scss
  23. 7
    12
      src/pages/index/index.jsx
  24. 55
    0
      src/reducers/card.js
  25. 31
    0
      src/reducers/city.js
  26. 84
    0
      src/reducers/house.js
  27. 14
    0
      src/reducers/index.js
  28. 33
    0
      src/reducers/news.js
  29. 51
    0
      src/reducers/project.js
  30. 62
    0
      src/reducers/shop.js
  31. 31
    0
      src/reducers/system.js
  32. 112
    0
      src/services/activity.js
  33. 43
    0
      src/services/agent.js
  34. 91
    0
      src/services/card.js
  35. 40
    0
      src/services/chat.js
  36. 22
    0
      src/services/checkin.js
  37. 35
    0
      src/services/client.js
  38. 90
    0
      src/services/common.js
  39. 10
    0
      src/services/feedback.js
  40. 20
    0
      src/services/getCode.js
  41. 3
    0
      src/services/house.js
  42. 110
    0
      src/services/item.js
  43. 14
    0
      src/services/login.js
  44. 12
    0
      src/services/map.js
  45. 85
    0
      src/services/news.js
  46. 111
    0
      src/services/person.js
  47. 18
    0
      src/services/policy.js
  48. 131
    0
      src/services/project.js
  49. 33
    0
      src/services/report.js
  50. 81
    0
      src/services/user.js
  51. 2
    4
      src/store/index.js
  52. 50
    0
      src/utils/login.js
  53. 81
    20
      src/utils/tools.js

+ 1
- 1
config/dev.js Vedi File

4
   },
4
   },
5
   defineConstants: {
5
   defineConstants: {
6
     HOST: '"https://zcloud.njyunzhi.com"', //正式
6
     HOST: '"https://zcloud.njyunzhi.com"', //正式
7
-    WSS_HOST: '"wss://zcloud.njyunzhi.com"',
7
+    WSS_HOST: '"https://zcloud.njyunzhi.com"',
8
     OSS_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',
8
     OSS_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',
9
     OSS_FAST_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',
9
     OSS_FAST_PATH: '"https://zhiyun-image.oss-accelerate.aliyuncs.com/"',
10
     Version: '"V3.5.29-20201112"'
10
     Version: '"V3.5.29-20201112"'

+ 3
- 0
config/index.js Vedi File

15
   defineConstants: {
15
   defineConstants: {
16
   },
16
   },
17
   alias: {
17
   alias: {
18
+    '@/assets': path.resolve(__dirname, '..', 'src/assets'),
18
     '@/actions': path.resolve(__dirname, '..', 'src/actions'),
19
     '@/actions': path.resolve(__dirname, '..', 'src/actions'),
19
     '@/components': path.resolve(__dirname, '..', 'src/components'),
20
     '@/components': path.resolve(__dirname, '..', 'src/components'),
20
     '@/layout': path.resolve(__dirname, '..', 'src/layout'),
21
     '@/layout': path.resolve(__dirname, '..', 'src/layout'),
21
     '@/constants': path.resolve(__dirname, '..', 'src/constants'),
22
     '@/constants': path.resolve(__dirname, '..', 'src/constants'),
22
     '@/reducers': path.resolve(__dirname, '..', 'src/reducers'),
23
     '@/reducers': path.resolve(__dirname, '..', 'src/reducers'),
24
+    '@/store': path.resolve(__dirname, '..', 'src/store'),
25
+    '@/services': path.resolve(__dirname, '..', 'src/services'),
23
     '@/utils': path.resolve(__dirname, '..', 'src/utils'),
26
     '@/utils': path.resolve(__dirname, '..', 'src/utils'),
24
   },
27
   },
25
   copy: {
28
   copy: {

+ 2
- 2
project.config.json Vedi File

2
   "miniprogramRoot": "./dist",
2
   "miniprogramRoot": "./dist",
3
   "projectname": "miniapp",
3
   "projectname": "miniapp",
4
   "description": "",
4
   "description": "",
5
-  "appid": "touristappid",
5
+  "appid": "wx1d9348230d6a0da6",
6
   "setting": {
6
   "setting": {
7
-    "urlCheck": true,
7
+    "urlCheck": false,
8
     "es6": false,
8
     "es6": false,
9
     "postcss": false,
9
     "postcss": false,
10
     "minified": false
10
     "minified": false

+ 30
- 0
src/actions/activity.js Vedi File

1
+import {
2
+  ACTIVITY_SIGNIN
3
+} from '@/constants/activity'
4
+
5
+import {
6
+  API_ACTIVITY_SIGNIN
7
+} from '@/constants/api'
8
+
9
+import { createAction } from '@/utils/redux'
10
+
11
+/**
12
+ * 个人签到
13
+ * @param {*} id 
14
+ */
15
+export const dispatchSignin = id => createAction({
16
+  url: `${API_ACTIVITY_SIGNIN}/${id}`,
17
+  type: ACTIVITY_SIGNIN,
18
+  method: 'POST'
19
+})
20
+
21
+/**
22
+ * 判断是否签到
23
+ * @param {*} id 
24
+ */
25
+export const dispatchSigninCheck = id => createAction({
26
+  url: `${API_ACTIVITY_SIGNIN}/${id}/isChecked`,
27
+  type: ACTIVITY_SIGNIN
28
+})
29
+
30
+

+ 59
- 0
src/actions/card.js Vedi File

1
+import {
2
+  CARD_INFO,
3
+  CARD_LIST,
4
+  CARD_LIKE,
5
+  CARD_UNLIKE
6
+} from '@/constants/card'
7
+
8
+import {
9
+  API_CARDS_LIST,
10
+  API_CARDS_LIKE
11
+} from '@/constants/api'
12
+
13
+import { createAction } from '@/utils/redux'
14
+import { toQueryString } from '@/utils/tools'
15
+
16
+/**
17
+ * 获取卡片信息
18
+ * @param {*} id
19
+ */
20
+export const dispatchCardInfo = (id, params, options) => createAction({
21
+  url: `${API_CARDS_LIST}/${id}?${toQueryString(params)}`,
22
+  type: CARD_INFO,
23
+  fetchOptions: options || {}
24
+})
25
+
26
+/**
27
+ * 获取置业顾问列表
28
+ */
29
+export const dispatchCardList = (payload) => createAction({
30
+  url: `${API_CARDS_LIST}`,
31
+  type: CARD_LIST,
32
+  payload
33
+})
34
+
35
+
36
+/**
37
+ * 卡片点赞
38
+ * @param {*} id 
39
+ */
40
+export const dispatchCardLike = id => createAction({
41
+  url: `${API_CARDS_LIKE}/${id}`,
42
+  type: CARD_LIKE,
43
+  method: 'POST'
44
+})
45
+
46
+
47
+/**
48
+ * 卡片取消点赞
49
+ * @param {*} id 
50
+ */
51
+export const dispatchCardUnlike = id => createAction({
52
+  url: `${API_CARDS_LIKE}/${id}`,
53
+  type: CARD_UNLIKE,
54
+  method: 'DELETE'
55
+})
56
+
57
+
58
+
59
+

+ 30
- 0
src/actions/city.js Vedi File

1
+import {
2
+  CITY_LIST,
3
+  CITY_SELECTED
4
+} from '@/constants/city'
5
+
6
+import {
7
+  API_CITY_LIST
8
+} from '@/constants/api'
9
+
10
+import { createAction, createActionNormal } from '@/utils/redux'
11
+
12
+/**
13
+ * 获取城市列表
14
+ * @param {*} payload 
15
+ */
16
+export const dispatchCityList = payload => createAction({
17
+  url: API_CITY_LIST,
18
+  type: CITY_LIST,
19
+  payload
20
+})
21
+
22
+/**
23
+ * 获取城市列表
24
+ * @param {*} payload 
25
+ */
26
+export const dispatchCitySelected = payload => createActionNormal({
27
+  type: CITY_SELECTED,
28
+  payload
29
+})
30
+

+ 36
- 0
src/actions/house.js Vedi File

1
+import { createAction, createActionNormal } from '@/utils/redux'
2
+import { API_CARDS_LIST, API_PRESELECTION_RECORD } from '@/constants/api'
3
+import {
4
+  ADD_CART,
5
+  SUB_CART,
6
+  FLUSH_TO_CART,
7
+  ADD_CONSULTANT,
8
+  CHOOSE_CONSULTANT,
9
+  MY_PRESELECT_RECORD,
10
+  SET_ONLINE_PROTOCOL,
11
+} from '@/constants/house'
12
+
13
+// 加入临时车
14
+export const dispatchAddCart = payload => createActionNormal({ type: ADD_CART, payload })
15
+// 删减临时车
16
+export const dispatchSubCart = payload => createActionNormal({ type: SUB_CART, payload })
17
+// 全部进入临时车
18
+export const dispatchFlush2Cart = payload => createActionNormal({ type: FLUSH_TO_CART, payload })
19
+// 获取置业顾问
20
+export const dispatchGetConsultants = payload => createAction({
21
+  type: ADD_CONSULTANT,
22
+  url: API_CARDS_LIST,
23
+  payload
24
+})
25
+
26
+// 临时选择置业
27
+export const dispatchChooseConsultant = payload => createActionNormal({ type: CHOOSE_CONSULTANT, payload })
28
+
29
+// 获取预选记录
30
+export const dispatchGetMySelection = payload => createAction({
31
+  type: MY_PRESELECT_RECORD,
32
+  url: API_PRESELECTION_RECORD,
33
+  payload,
34
+})
35
+
36
+export const dispatchSetOnlineProtocol = payload => createActionNormal({ type: SET_ONLINE_PROTOCOL, payload })

+ 32
- 0
src/actions/news.js Vedi File

1
+import {
2
+  NEWS_LIST
3
+} from '@/constants/news'
4
+
5
+import {
6
+  API_NEWS_LIST,
7
+
8
+} from '@/constants/api'
9
+
10
+import { createAction } from '@/utils/redux'
11
+
12
+
13
+/**
14
+ * 资讯列表
15
+ * @param {*} payload 
16
+ */
17
+export const dispatchNewsList = payload => createAction({
18
+  url: API_NEWS_LIST,
19
+  type: NEWS_LIST,
20
+  payload
21
+})
22
+
23
+
24
+/**
25
+ * 资讯详情
26
+ * @param {*} id 
27
+ */
28
+export const dispatchNewsDetail = id => createAction({
29
+  url: `${API_NEWS_LIST}/${id}`,
30
+  type: NEWS_DETAIL,
31
+  payload
32
+})

+ 53
- 0
src/actions/project.js Vedi File

1
+import {
2
+  PROJECT_DETAIL,
3
+  PROJECT_LIST,
4
+  PROJECT_SCREEN
5
+} from '@/constants/project'
6
+
7
+import {
8
+  API_ITEMS_DETAIL,
9
+  API_ITEMS_LIST,
10
+  API_BANNER_LIST,
11
+  API_INDEX_PROJECTS,
12
+} from '@/constants/api'
13
+
14
+import { createAction } from '@/utils/redux'
15
+import { toQueryString } from '@/utils/tools'
16
+
17
+/**
18
+ * 获取楼盘列表
19
+ * @param {*} payload 
20
+ */
21
+export const dispatchProjectList = payload => createAction({
22
+  url: `${API_ITEMS_LIST}`,
23
+  type: PROJECT_LIST,
24
+  payload
25
+})
26
+
27
+/**
28
+ * 获取楼盘列表
29
+ * @param {*} payload 
30
+ */
31
+export const dispatchIndexProjects = payload => createAction({
32
+  url: `${API_INDEX_PROJECTS}`,
33
+  type: PROJECT_LIST,
34
+  payload
35
+})
36
+
37
+
38
+/**
39
+ * 获取项目信息
40
+ * @param {*} id 
41
+ */
42
+export const dispatchProjectDetail = (id, params, options) => createAction({
43
+  url: `${API_ITEMS_DETAIL}/${id}?${toQueryString(params)}`,
44
+  type: PROJECT_DETAIL,
45
+  fetchOptions: options || {}
46
+})
47
+
48
+/**
49
+ * 获取开屏广告
50
+ *  @param {*} payload 
51
+ * 
52
+*/
53
+export const dispatchProjectScreen = (payload) => createAction({ url: `${API_BANNER_LIST}/screen`, payload, type: PROJECT_SCREEN })

+ 89
- 0
src/actions/shop.js Vedi File

1
+import {
2
+  GOODS_LIST,
3
+  GOODS_DETAIL,
4
+  GOODS_EXCHANGE,
5
+  GOODS_EXCHANGE_RECORDS,
6
+  POINTS_RECORDS,
7
+  POINTS_RULE,
8
+  POINTS_ADRESS
9
+} from '@/constants/shop'
10
+
11
+import {
12
+  API_GOODS_LIST,
13
+  API_GOODS_EXCHANGE,
14
+  API_GOODS_EXCHANGE_RECORDS,
15
+  API_POINTS_RECORDS,
16
+  API_POINTS_RULE,
17
+  API_POINTS_ADRESS
18
+} from '@/constants/api'
19
+
20
+import { createAction } from '@/utils/redux'
21
+
22
+
23
+
24
+
25
+
26
+
27
+/**
28
+ * 商品详情
29
+ * @param {*} id
30
+ */
31
+export const dispatchGoodsDetail = id => createAction({
32
+  url: `${API_GOODS_LIST}/${id}`,
33
+  type: GOODS_DETAIL
34
+})
35
+
36
+
37
+
38
+/**
39
+ * 商品兑换
40
+ * @param {*} id
41
+ */
42
+export const dispatchGoodsExchange = id => createAction({
43
+  url: `${API_GOODS_EXCHANGE}/${id}`,
44
+  type: GOODS_EXCHANGE,
45
+  method: 'POST'
46
+})
47
+
48
+
49
+/**
50
+ * 商品兑换记录
51
+ * @param {*} payload
52
+ */
53
+export const dispatchGoodsExchangeRecords = payload => createAction({
54
+  url: `${API_GOODS_EXCHANGE_RECORDS}`,
55
+  type: GOODS_EXCHANGE_RECORDS,
56
+  payload
57
+})
58
+
59
+
60
+/**
61
+ * 积分记录
62
+ * @param {*} payload
63
+ */
64
+export const dispatchPointsRecords = payload => createAction({
65
+  url: API_POINTS_RECORDS,
66
+  type: POINTS_RECORDS,
67
+  payload
68
+})
69
+
70
+/**
71
+ * 积分规则
72
+ * @param {*} payload
73
+ */
74
+export const dispatchPointsRule = payload => createAction({
75
+  url: API_POINTS_RULE,
76
+  type: POINTS_RULE,
77
+  payload
78
+})
79
+
80
+/**
81
+ * 请求地址
82
+ * @param {*} payload
83
+ */
84
+export const dispatchPointsAddress = payload => createAction({
85
+  url: `${API_POINTS_ADRESS}`,
86
+  type: POINTS_ADRESS,
87
+  payload,
88
+  method: 'PUT'
89
+})

+ 6
- 1
src/app.config.js Vedi File

7
     navigationBarBackgroundColor: '#fff',
7
     navigationBarBackgroundColor: '#fff',
8
     navigationBarTitleText: 'WeChat',
8
     navigationBarTitleText: 'WeChat',
9
     navigationBarTextStyle: 'black'
9
     navigationBarTextStyle: 'black'
10
-  }
10
+  },
11
+  permission: {
12
+    "scope.userLocation": {
13
+      desc: "你的位置信息将用于显示当前区域信息"
14
+    }
15
+  },
11
 }
16
 }

+ 34
- 4
src/app.jsx Vedi File

1
 import { Component } from 'react'
1
 import { Component } from 'react'
2
 import { Provider } from 'react-redux'
2
 import { Provider } from 'react-redux'
3
-
4
-import configStore from './store'
3
+import Taro from '@tarojs/taro'
4
+import { getLocation, getRouterParams } from '@/utils/tools'
5
+import login from '@/utils/login'
6
+import store from './store'
5
 
7
 
6
 import './app.scss'
8
 import './app.scss'
7
 
9
 
8
-const store = configStore()
9
-
10
 class App extends Component {
10
 class App extends Component {
11
+
11
   componentDidMount () {}
12
   componentDidMount () {}
12
 
13
 
13
   componentDidShow () {}
14
   componentDidShow () {}
15
   componentDidHide () {}
16
   componentDidHide () {}
16
 
17
 
17
   componentDidCatchError () {}
18
   componentDidCatchError () {}
19
+  
20
+  onLaunch (options) {
21
+    getLocation().then((loc) => {
22
+      getRouterParams(options).then(router => {
23
+        Taro.setStorageSync('router', router)
24
+        const { query: payload } = router
25
+
26
+        payload.path = router.path
27
+        payload.scene = router.scene
28
+
29
+        if (loc) {
30
+          payload.lon = loc.lon
31
+          payload.lat = loc.lat
32
+        }
33
+
34
+        // login
35
+        login(payload).then((res) => {
36
+          // const { person: { personId } } = res
37
+
38
+          // socket.createSocket({ id: personId });
39
+          // socket.onMessage(data => {
40
+          //   store.dispatch({ type: INCREASE_UNREADNUM })
41
+          // })
42
+          // // 埋点
43
+          // trackUserSource(router.params).then(r => this.updateTrack = r)
44
+        })
45
+      })
46
+    })
47
+  }
18
 
48
 
19
   // 在 App 类中的 render() 函数没有实际作用
49
   // 在 App 类中的 render() 函数没有实际作用
20
   // 请勿修改此函数
50
   // 请勿修改此函数

BIN
src/assets/logo.png Vedi File


+ 18
- 0
src/components/Loading/index.jsx Vedi File

1
+import Spin from '@/components/Spin'
2
+import logo from '@/assets/logo.png'
3
+import './style.scss'
4
+
5
+export default (props) => {
6
+  const { width = '80px', logoVisible } = props
7
+  const height = width
8
+
9
+  return (
10
+    <view className="loading" style={{ width, height }}>
11
+      <Spin size={width} />
12
+      {
13
+        logoVisible !== false &&
14
+        (<image className="loading-logo" src={logo} style={{ width, height }} />)
15
+      }
16
+    </view>
17
+  )
18
+}

+ 22
- 0
src/components/Loading/style.scss Vedi File

1
+
2
+.loading {
3
+  margin: 0 auto;
4
+  position: relative;
5
+
6
+  &-logo {
7
+    position: absolute;
8
+    left: 0;
9
+    transform: scale(.75, .75);
10
+    animation: logo-opacity 2s linear infinite;
11
+  }
12
+}
13
+
14
+@keyframes logo-opacity {
15
+  0%, 100% {
16
+    opacity: 1;
17
+  }
18
+
19
+  50% {
20
+    opacity: .4;
21
+  }
22
+}

+ 30
- 0
src/components/Spin/index.jsx Vedi File

1
+import './style.scss'
2
+
3
+export default (props) => {
4
+  const { size = '160rpx' } = props
5
+  const wrapperStyle = {
6
+    width: size,
7
+    height: size,
8
+  }
9
+
10
+  const leftBarStyle = {
11
+    'border-top-right-radius': size,
12
+    'border-bottom-right-radius': size,
13
+  }
14
+
15
+  const rightBarStyle = {
16
+    'border-top-left-radius': size,
17
+    'border-bottom-left-radius': size,
18
+  }
19
+
20
+  return (
21
+    <view className="spin" style={wrapperStyle}>
22
+      <view className="mask-left">
23
+        <view className="spin-bar" style={leftBarStyle}></view>
24
+      </view>
25
+      <view className="mask-right">
26
+        <view className="spin-bar" style={rightBarStyle}></view>
27
+      </view>
28
+    </view>
29
+  )
30
+}

+ 112
- 0
src/components/Spin/style.scss Vedi File

1
+$width: 160px;
2
+
3
+.spin {
4
+  width: $width;
5
+  height: $width;
6
+  border-radius: 100%;
7
+  display: inline-block;
8
+  position: relative;
9
+  animation: spin-rotate 4s linear infinite;
10
+  box-sizing: border-box;
11
+
12
+  view {
13
+    box-sizing: border-box;
14
+    position: absolute;
15
+  }
16
+
17
+  .mask-left, .mask-right {
18
+    background: #fff;
19
+    top: 0;
20
+    width: calc(50% + 1px);
21
+    height: 100%;
22
+    overflow: hidden;
23
+  }
24
+
25
+  .mask-left {
26
+    left: 0;
27
+
28
+    .spin-bar {
29
+      left: 100%;
30
+      border-top-right-radius: $width;
31
+      border-bottom-right-radius: $width;
32
+      border-left: 0;
33
+      // transform: rotate(180deg);
34
+      transform-origin: center left;
35
+      animation: spin-rotate-right 1.2s cubic-bezier(.25,.5,.25,1) 0.6s infinite, spin-color 2s linear infinite;
36
+    }
37
+  }
38
+
39
+  .mask-right {
40
+    right: 0;
41
+
42
+    .spin-bar {
43
+      left: -100%;
44
+      border-top-left-radius: $width;
45
+      border-bottom-left-radius: $width;
46
+      border-right: 0;
47
+      transform-origin: center right;
48
+      animation: spin-rotate-right 1.2s cubic-bezier(1,.25,.5,.25) infinite, spin-color 2s linear infinite;
49
+    }
50
+  }
51
+
52
+  .spin-bar {
53
+    float: left;
54
+    width: 100%;
55
+    height: 100%;
56
+    border-width: 4px;
57
+    border-style: solid;
58
+  }
59
+}
60
+
61
+@keyframes spin-rotate-right {
62
+  0% {
63
+    transform: rotate(0deg);
64
+  }
65
+
66
+  50% {
67
+    transform: rotate(180deg);
68
+  }
69
+
70
+  100% {
71
+    transform: rotate(360deg);
72
+  }
73
+}
74
+
75
+@keyframes spin-rotate-left {
76
+  0% {
77
+    transform: rotate(180deg);
78
+  }
79
+
80
+  50% {
81
+    transform: rotate(360deg);
82
+  }
83
+
84
+  100% {
85
+    transform: rotate(540deg);
86
+  }
87
+}
88
+
89
+@keyframes spin-rotate {
90
+  0% {
91
+    transform: rotate(0deg);
92
+  }
93
+
94
+  100% {
95
+    transform: rotate(360deg);
96
+  }
97
+}
98
+
99
+@keyframes spin-color {
100
+  0%, 100% {
101
+    border-color: #d62d20;
102
+  }
103
+  40% {
104
+    border-color: #0057e7;
105
+  }
106
+  60% {
107
+    border-color: #008744;
108
+  }
109
+  80%, 90% {
110
+    border-color: #ffa700;
111
+  }
112
+}

+ 0
- 21
src/layout/Basic.jsx Vedi File

1
-import { Component } from 'react'
2
-import { connect } from 'react-redux'
3
-import { View } from '@tarojs/components'
4
-
5
-import './style.scss'
6
-
7
-@connect(({ user }) => ({...user}))
8
-class BasicLayout extends Component {
9
-  render () {
10
-    const person = this.props.person
11
-    const loading = !person || !person.personId
12
-
13
-    return (
14
-      <View className='demo'>
15
-      </View>
16
-    )
17
-  }
18
-}
19
-
20
-export default BasicLayout
21
-

+ 24
- 0
src/layout/Basic/index.jsx Vedi File

1
+import React from 'react'
2
+import { connect } from 'react-redux'
3
+import { View } from '@tarojs/components'
4
+import Loading from '@/components/Loading'
5
+
6
+import './style.scss'
7
+
8
+const BasicLayout = (props) => {
9
+  const {person, children, onProps, ...leftProps} = props
10
+  const loading = !person || !person.personId
11
+
12
+  if (onProps) {
13
+    onProps({person, ...leftProps})
14
+  }
15
+
16
+  return loading ?
17
+  (
18
+    <View className="page-loading-wrapper">
19
+      <Loading />
20
+    </View>
21
+  ) : children || null
22
+}
23
+
24
+export default connect(({ user }) => ({...user.userInfo || {}}))(BasicLayout)

+ 5
- 0
src/layout/Basic/style.scss Vedi File

1
+
2
+.page-loading-wrapper {
3
+  margin-top: 30vw;
4
+  
5
+}

+ 24
- 0
src/layout/index.js Vedi File

1
+import React, { useState, useEffect } from 'react'
2
+import { useRouter } from '@tarojs/taro'
3
+import BasicLayout from './Basic'
4
+
5
+export default (Child) => (props) => {
6
+  const [ready, setReady] = useState(false)
7
+  // ext 里面包含的人员等基本信息
8
+  const [info, setInfo] = useState({})
9
+  // 路由信息
10
+  const router = useRouter()
11
+
12
+  useEffect(() => {
13
+    const initedPerson = !!info?.person?.personId
14
+    const initedRouter = !!router?.path
15
+    setReady(initedPerson && initedRouter)
16
+  })
17
+
18
+  return (
19
+    <>
20
+      <BasicLayout onProps={setInfo} />    
21
+      {ready && <Child {...info} {...props} router={router} />}
22
+    </>
23
+  )
24
+}

+ 0
- 40
src/layout/style.scss Vedi File

1
-.demo {
2
-  width: 100px;
3
-  height: 100px;
4
-  border-radius: 100%;
5
-  animation: demo1 1.6s linear infinite;
6
-  border: 4px solid #f3f3f3;
7
-  margin: 100px auto;
8
-  display: inline-block;
9
-}
10
-
11
-@keyframes demo1 {
12
-  0% {
13
-    border-left-color: red;
14
-    transform:rotate(0deg);
15
-  }
16
-
17
-  25% {
18
-    border-left-color: red;
19
-    border-top-color: red;
20
-    transform:rotate(180deg);
21
-  }
22
-
23
-  50% {
24
-    border-left-color: red;
25
-    border-top-color: red;
26
-    border-bottom-color: red;
27
-    transform:rotate(180deg);
28
-  }
29
-
30
-  75% {
31
-    border-left-color: red;
32
-    border-top-color: red;
33
-    transform:rotate(180deg);
34
-  }
35
-
36
-  100% {
37
-    border-left-color: red;
38
-    transform:rotate(360deg);
39
-  }
40
-}

+ 7
- 12
src/pages/index/index.jsx Vedi File

1
-import { Component } from 'react'
1
+import React from 'react'
2
+import withLayout from '@/layout'
2
 
3
 
3
-import BasicLayout from '@/layout/Basic'
4
-
5
-class Index extends Component {
6
-  render () {
7
-    return (
8
-      <BasicLayout />
9
-    )
10
-  }
11
-}
12
-
13
-export default Index
4
+export default withLayout((props) => {
5
+  // props 里面包含了一些基本的信息
6
+  console.log('-----props---->', props)
14
 
7
 
8
+  return '这里是小程序首页';
9
+})

+ 55
- 0
src/reducers/card.js Vedi File

1
+import {
2
+  CARD_INFO,
3
+  CARD_LIST,
4
+  CARD_LIKE,
5
+  CARD_UNLIKE
6
+} from '@/constants/card'
7
+
8
+const INITIAL_STATE = {
9
+  cardList: [],
10
+  cardInfo: {}
11
+}
12
+
13
+export default function card(state = INITIAL_STATE, action) {
14
+  switch (action.type) {
15
+    case CARD_INFO: {
16
+      return {
17
+        ...state,
18
+        cardInfo: {
19
+          ...action.payload
20
+        }
21
+      }
22
+    }
23
+    case CARD_LIKE: {
24
+      return {
25
+        ...state,
26
+        cardInfo: {
27
+          ...state.cardInfo,
28
+          liked: true,
29
+          likeNum: state.cardInfo.likeNum + 1
30
+        }
31
+      }
32
+    }
33
+    case CARD_UNLIKE: {
34
+      return {
35
+        ...state,
36
+        cardInfo: {
37
+          ...state.cardInfo,
38
+          liked: false,
39
+          likeNum: state.cardInfo.likeNum - 1
40
+        }
41
+      }
42
+    }
43
+    case CARD_LIST: {
44
+      return {
45
+        ...state,
46
+        cardList: {
47
+          ...action.payload.records || []
48
+        }
49
+      }
50
+    }
51
+
52
+    default:
53
+      return state
54
+  }
55
+}

+ 31
- 0
src/reducers/city.js Vedi File

1
+import {
2
+  CITY_LIST,
3
+  CITY_SELECTED
4
+} from '@/constants/city'
5
+
6
+const INITIAL_STATE = {
7
+  cityList: {},
8
+  curCity: {}
9
+}
10
+
11
+export default function news(state = INITIAL_STATE, action) {
12
+  switch (action.type) {
13
+    case CITY_LIST: {
14
+      // console.log(action.payload, "!!action.payload!!")
15
+      return {
16
+        ...state,
17
+        cityList: action.payload
18
+      }
19
+    }
20
+
21
+    case CITY_SELECTED: {
22
+      return {
23
+        ...state,
24
+        curCity: action.payload
25
+      }
26
+    }
27
+
28
+    default:
29
+      return state
30
+  }
31
+}

+ 84
- 0
src/reducers/house.js Vedi File

1
+/**
2
+ * 房源相关
3
+ */
4
+
5
+ import {
6
+   ADD_CART,
7
+   SUB_CART,
8
+   FLUSH_TO_CART,
9
+   ADD_CONSULTANT,
10
+   CHOOSE_CONSULTANT,
11
+   MY_PRESELECT_RECORD,
12
+   SET_ONLINE_PROTOCOL,
13
+ } from '@/constants/house'
14
+
15
+const INITIAL_STATE = {
16
+  // 认筹临时选中房源
17
+  raiseCart: [],
18
+
19
+  // 置业顾问列表
20
+  consultantList: [],
21
+
22
+  // 认筹选中置业
23
+  chooseConsultant: undefined,
24
+
25
+  // 预选房源列表
26
+  mySelectHouses: [],
27
+
28
+  //
29
+  onlineProtocol: '',
30
+}
31
+
32
+export default function(state = INITIAL_STATE, action) {
33
+  const { type, payload } = action
34
+
35
+  switch(type) {
36
+    // 加入临时选择
37
+    case ADD_CART:
38
+      return {
39
+        ...state,
40
+        raiseCart: state.raiseCart.filter(x => x.houseId != payload.houseId).concat(payload),
41
+      };
42
+
43
+    // 取消临时选择
44
+    case SUB_CART:
45
+      return {
46
+        ...state,
47
+        raiseCart: state.raiseCart.filter(x => x.houseId != payload.houseId),
48
+      };
49
+
50
+    //
51
+    case FLUSH_TO_CART:
52
+      return {
53
+        ...state,
54
+        raiseCart: payload,
55
+      };
56
+
57
+    case ADD_CONSULTANT:
58
+      return {
59
+        ...state,
60
+        consultantList: payload.records,
61
+      };
62
+
63
+    case CHOOSE_CONSULTANT:
64
+      return {
65
+        ...state,
66
+        chooseConsultant: payload,
67
+      };
68
+
69
+    case MY_PRESELECT_RECORD:
70
+      return {
71
+        ...state,
72
+        mySelectHouses: payload.records,
73
+      };
74
+
75
+    case SET_ONLINE_PROTOCOL:
76
+      return {
77
+        ...state,
78
+        onlineProtocol: payload,
79
+      };
80
+
81
+    default:
82
+      return state;
83
+  }
84
+}

+ 14
- 0
src/reducers/index.js Vedi File

1
 import { combineReducers } from 'redux'
1
 import { combineReducers } from 'redux'
2
 import counter from './counter'
2
 import counter from './counter'
3
 import user from './user'
3
 import user from './user'
4
+import project from './project'
5
+import card from './card'
6
+import shop from './shop'
7
+import news from './news'
8
+import city from './city'
9
+import system from './system'
10
+import house from './house'
4
 
11
 
5
 export default combineReducers({
12
 export default combineReducers({
6
   counter,
13
   counter,
7
   user,
14
   user,
15
+  project,
16
+  card,
17
+  shop,
18
+  news,
19
+  city,
20
+  system,
21
+  house,
8
 })
22
 })

+ 33
- 0
src/reducers/news.js Vedi File

1
+import {
2
+  NEWS_LIST,
3
+  NEWS_DETAIL
4
+} from '@/constants/news'
5
+
6
+const INITIAL_STATE = {
7
+  newsList: {},
8
+  newsDetail: {}
9
+}
10
+
11
+export default function news(state = INITIAL_STATE, action) {
12
+  switch (action.type) {
13
+    case NEWS_LIST: {
14
+      return {
15
+        ...state,
16
+        newsList: {
17
+          ...action.payload
18
+        }
19
+      }
20
+    }
21
+    case NEWS_DETAIL: {
22
+      return {
23
+        ...state,
24
+        newsDetail: {
25
+          ...action.payload
26
+        }
27
+      }
28
+    }
29
+
30
+    default:
31
+      return state
32
+  }
33
+}

+ 51
- 0
src/reducers/project.js Vedi File

1
+import {
2
+  PROJECT_DETAIL,
3
+  PROJECT_LIST,
4
+  PROJECT_SCREEN,
5
+  SET_SCREEN_SHOWED,
6
+} from '@/constants/project'
7
+
8
+
9
+const INITIAL_STATE = {
10
+  proList: {},
11
+  projectDetail: {},
12
+  screen: {},
13
+  screenShow: undefined,
14
+}
15
+
16
+export default function project(state = INITIAL_STATE, action) {
17
+  switch (action.type) {
18
+    case PROJECT_LIST: {
19
+      return {
20
+        ...state,
21
+        proList: {
22
+          ...action.payload
23
+        }
24
+      }
25
+    }
26
+    case PROJECT_DETAIL: {
27
+      return {
28
+        ...state,
29
+        projectDetail: {
30
+          ...action.payload
31
+        }
32
+      }
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
+    }
47
+
48
+    default:
49
+      return state
50
+  }
51
+}

+ 62
- 0
src/reducers/shop.js Vedi File

1
+import {
2
+  GOODS_LIST,
3
+  GOODS_DETAIL,
4
+  GOODS_EXCHANGE_RECORDS,
5
+  POINTS_RECORDS,
6
+  POINTS_RULE
7
+} from '@/constants/shop'
8
+
9
+const INITIAL_STATE = {
10
+  goods: {},
11
+  goodsDetail: {},
12
+  exchangeRecords: {},
13
+  pointsRecords: {},
14
+  pointsRule:{}
15
+}
16
+
17
+export default function shop(state = INITIAL_STATE, action) {
18
+  switch (action.type) {
19
+    case GOODS_LIST: {
20
+      return {
21
+        ...state,
22
+        goods: {
23
+          ...action.payload
24
+        }
25
+      }
26
+    }
27
+    case GOODS_DETAIL: {
28
+      return {
29
+        ...state,
30
+        goodsDetail: {
31
+          ...action.payload
32
+        }
33
+      }
34
+    }
35
+    case GOODS_EXCHANGE_RECORDS: {
36
+      return {
37
+        ...state,
38
+        exchangeRecords: {
39
+          ...action.payload
40
+        }
41
+      }
42
+    }
43
+    case POINTS_RECORDS: {
44
+      return {
45
+        ...state,
46
+        pointsRecords: {
47
+          ...action.payload
48
+        }
49
+      }
50
+    }
51
+    case POINTS_RULE: {
52
+      return {
53
+        ...state,
54
+        pointsRule: {
55
+          ...action.payload
56
+        }
57
+      }
58
+    }
59
+    default:
60
+      return state
61
+  }
62
+}

+ 31
- 0
src/reducers/system.js Vedi File

1
+import { UPDATE_PRELOAD, SYNC_SYSTEMINFO } from "@/constants/common";
2
+
3
+// 初始数据
4
+const INITIAL_STATE = {
5
+  cityList: [],
6
+  miniappInfo: {},
7
+  orgInfo: {},
8
+  userInfo: {},
9
+  settings: [],
10
+  systemInfo: {}
11
+};
12
+
13
+export default function(state = INITIAL_STATE, action) {
14
+  switch (action.type) {
15
+    case UPDATE_PRELOAD: {
16
+      return {
17
+        ...state,
18
+        ...action.payload
19
+      };
20
+    }
21
+    case SYNC_SYSTEMINFO: {
22
+      return {
23
+        ...state,
24
+        systemInfo: action.payload
25
+      };
26
+    }
27
+
28
+    default:
29
+      return state;
30
+  }
31
+}

+ 112
- 0
src/services/activity.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_ACTIVITY_LIST,
4
+  API_ACTIVITY_DETAIL,
5
+  API_ACTIVITY_SIGNUP,
6
+  API_ACTIVITY_FAVOR,
7
+  API_ACTIVITY_SAVE,
8
+  API_ACTIVITY_UV,
9
+  API_ACTIVITY_SHARE,
10
+  API_HELP_SHARE,
11
+  API_GROUP_SHARE,
12
+  API_HFIVE_SHARE,
13
+  API_ACTNEW_LIST,
14
+  API_HELP_DETAIL,
15
+  API_HELP_CREATE,
16
+  API_HELP_FRIEND,
17
+  API_HELP_LIST,
18
+  API_GROUP_LIST,
19
+  API_GROUP_DETAIL,
20
+  API_GROUP_JOIN,
21
+  API_GROUP_CREATE,
22
+} from '@/constants/api'
23
+
24
+/**
25
+ * 项目uv埋点
26
+ * @param {*} id  项目id
27
+ */
28
+export const addActivityUv = id => fetch({ url: `${API_ACTIVITY_UV}/${id}`, method: 'POST' })
29
+
30
+
31
+/**
32
+ * 普通活动分享埋点
33
+ * @param {*} id  名片id
34
+ */
35
+export const addActivityShareNum = id => fetch({ url: `${API_ACTIVITY_SHARE}/${id}`, method: 'POST' })
36
+/**
37
+ * 助力分享埋点
38
+ * @param {*} id  名片id
39
+ */
40
+export const addHelpShareNum = id => fetch({ url: `${API_HELP_SHARE}/${id}`, method: 'POST' })
41
+/**
42
+ * 拼团分享埋点
43
+ * @param {*} id  名片id
44
+ */
45
+export const addGroupShareNum = id => fetch({ url: `${API_GROUP_SHARE}/${id}`, method: 'POST' })
46
+/**
47
+ * h5分享埋点
48
+ * @param {*} id  名片id
49
+ */
50
+export const addHFiveShareNum = id => fetch({ url: `${API_HFIVE_SHARE}/${id}`, method: 'POST' })
51
+
52
+/**
53
+ * 获取活动列表
54
+ * @param {*} payload
55
+ */
56
+export const queryActivityList = payload => fetch({ url: API_ACTIVITY_LIST, payload })
57
+/**
58
+ * 获取拼团列表
59
+ * @param {*} payload
60
+ */
61
+export const queryGroupList = payload => fetch({ url: API_GROUP_LIST, payload })
62
+/**
63
+ * 获取助力列表
64
+ * @param {*} payload
65
+ */
66
+export const queryHelpList = payload => fetch({ url: API_HELP_LIST, payload })
67
+
68
+/**
69
+ * 已收藏活动列表
70
+ * @param {*} payload
71
+ */
72
+export const buildingDynamiceList = payload => fetch({ url: API_ACTIVITY_SAVE, payload })
73
+
74
+/**
75
+ * 获取活动详情 
76
+ * @param {*} id
77
+ */
78
+export const queryActivityDetail = (id, payload, header) => fetch({ url: `${API_ACTIVITY_DETAIL}/${id}`, payload, header })
79
+
80
+/**
81
+ * 活动报名
82
+ * @param {*} payload 
83
+ */
84
+export const signupActivity = payload => fetch({ url: API_ACTIVITY_SIGNUP, payload, method: 'POST' })
85
+
86
+
87
+/**
88
+ * 活动收藏
89
+ * @param {*} payload 
90
+ */
91
+export const favorActivity = id => fetch({ url: `${API_ACTIVITY_FAVOR}/${id}`, method: 'POST' })
92
+
93
+
94
+/**
95
+ * 取消活动收藏
96
+ * @param {*} payload 
97
+ */
98
+export const cancelFavorActivity = id => fetch({ url: `${API_ACTIVITY_FAVOR}/${id}`, method: 'DELETE' })
99
+
100
+/**
101
+ * 获取活动列表
102
+ * @param {*} payload 
103
+ */
104
+export const getActNewList = payload => fetch({ url: API_ACTNEW_LIST, payload })
105
+
106
+export const getHelpDetail = (id, initiateId, payload, header) => fetch({ url: `${API_HELP_DETAIL}/${id}${initiateId ? '?initiateId=' + initiateId : ''}`, payload, method: 'GET', header })
107
+export const createHelpActivity = payload => fetch({ url: API_HELP_CREATE, method: 'POST', payload })
108
+export const giveFriendHelp = payload => fetch({ url: API_HELP_FRIEND, method: 'POST', payload })
109
+
110
+export const getGroupDetail = (id, recordId, payload, header) => fetch({ url: `${API_GROUP_DETAIL}/${id}${recordId ? '?recordId=' + recordId : ''}`, payload, method: 'GET', header })
111
+export const createGroupActivity = payload => fetch({ url: API_GROUP_CREATE, method: 'POST', payload })
112
+export const joinGroupBuy = payload => fetch({ url: API_GROUP_JOIN, method: 'POST', payload })

+ 43
- 0
src/services/agent.js Vedi File

1
+
2
+import { fetch } from '@/utils/request'
3
+import {
4
+  API_AGENT_LIST,
5
+  API_REGISTER_AGENT,
6
+  API_AGENT_CHANNEL,
7
+  API_AGENT_CURRENT,
8
+  API_EDIT_AGENT
9
+
10
+} from '@/constants/api'
11
+
12
+
13
+/**
14
+ * 推荐经纪人列表
15
+ * @param {*} payload
16
+ */
17
+export const getAgentList = payload => fetch({ url: API_AGENT_LIST, payload })
18
+
19
+/**
20
+ * 成为经纪人
21
+ * @param {*} payload
22
+ */
23
+export const registerAgent = payload => fetch({ url: `${API_REGISTER_AGENT}?recommendAgentCode=${payload.recommendAgentCode}&&channelCode=${payload.channelCode}`,method: 'PUT' })
24
+
25
+/**
26
+ * 变更经纪人类型 
27
+ * @param {*} payload
28
+ */
29
+export const becomeChannel = payload => fetch({ url: `${API_AGENT_CHANNEL}?channelCode=${payload.channelCode}&&personType=${payload.personType}`, method: 'PUT' })
30
+
31
+/**
32
+ * 我的主页
33
+ * @param {*} payload
34
+ */
35
+export const agentCurrent = payload => fetch({ url: API_AGENT_CURRENT, payload })
36
+
37
+
38
+/**
39
+ * 修改经纪人
40
+ * @param {*} payload
41
+ */
42
+export const editAgent = payload => fetch({ url: `${API_EDIT_AGENT}?name=${payload.name}&&avatar=${payload.avatar}&&phone=${payload.phone}`, method: 'PUT' })
43
+

+ 91
- 0
src/services/card.js Vedi File

1
+
2
+import { fetch } from '@/utils/request'
3
+import {
4
+  API_CARDS_LIST,
5
+  API_CARDS_APPLY,
6
+  API_CARDS_UV,
7
+  API_CARDS_LIKE,
8
+  API_FORM_ID,
9
+  API_CARDS_SHARE,
10
+  API_CARD_FAVOR,
11
+  API_UPDATE_PHOTO
12
+} from '@/constants/api'
13
+
14
+
15
+/**
16
+ * 获取名片列表
17
+ * @param {*} payload 
18
+ */
19
+export const getCardList = payload => fetch({ url: API_CARDS_LIST, payload })
20
+
21
+
22
+/**
23
+ * 获取名片详情
24
+ * @param {*} id
25
+ */
26
+export const getCardDetail = id => fetch({ url: `${API_CARDS_LIST}/${id}` })
27
+
28
+/**
29
+ * 置业顾问名片绑定
30
+ * @param {*} payload
31
+ */
32
+export const applyCard = payload => fetch({ url: API_CARDS_APPLY, payload, method: 'POST' })
33
+
34
+/**
35
+ * 名片uv埋点
36
+ * @param {*} id  名片id
37
+ */
38
+export const addCardUv = id => fetch({ url: `${API_CARDS_UV}/${id}`, method: 'POST' })
39
+
40
+/**
41
+ * 名片点赞
42
+ * @param {*} id  名片id
43
+ */
44
+export const addLike = id => fetch({ url: `${API_CARDS_LIKE}/${id}`, method: 'POST' })
45
+
46
+/**
47
+ * 置业顾问换头像
48
+ * @param {*} payload
49
+ */
50
+export const updatePhoto = payload => fetch({ url: API_UPDATE_PHOTO, payload, method: 'PUT' })
51
+
52
+/**
53
+ * 名片取消点赞
54
+ * @param {*} id  名片id
55
+ */
56
+export const cancelLike = id => fetch({ url: `${API_CARDS_LIKE}/${id}`, method: 'DELETE' })
57
+
58
+/**
59
+ * 获取formid
60
+ * @param {*} payload
61
+ */
62
+export const postFormId = payload => fetch({ url: API_FORM_ID, payload, method: 'POST' })
63
+
64
+/**
65
+ * 名片粉丝列表
66
+ * @param {*} id  名片id
67
+ */
68
+export const queryCardFansList = (id, payload) => fetch({ url: `${API_CARDS_UV}/${id}`, payload })
69
+
70
+
71
+
72
+/**
73
+ * 名片分享埋点
74
+ * @param {*} id  名片id
75
+ */
76
+export const addCardShareNum = id => fetch({ url: `${API_CARDS_SHARE}/${id}`, method: 'POST' })
77
+
78
+
79
+
80
+/**
81
+ * 名片收藏
82
+ * @param {*} payload 
83
+ */
84
+export const favorCard = id => fetch({ url: `${API_CARD_FAVOR}/${id}`, method: 'POST' })
85
+
86
+
87
+/**
88
+ * 取消名片收藏
89
+ * @param {*} payload 
90
+ */
91
+export const cancelFavorCard = id => fetch({ url: `${API_CARD_FAVOR}/${id}`, method: 'DELETE' })

+ 40
- 0
src/services/chat.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_CHAT_SEND,
4
+  API_CHAT_HISTORY,
5
+  API_CHAT_FRIENDS,
6
+  API_UPLOAD_IMAGE,
7
+  API_CHAT_READED,
8
+} from '@/constants/api'
9
+
10
+
11
+/**
12
+ * 聊天发送消息
13
+ * @param {*} payload 
14
+ */
15
+
16
+export const sendMsg = payload => fetch({ url: API_CHAT_SEND, method: 'POST', payload })
17
+
18
+/**
19
+ * 获取聊天记录
20
+ * @param {*} payload
21
+ */
22
+export const queryChatHistory = payload => fetch({ url: API_CHAT_HISTORY, payload })
23
+
24
+/**
25
+ * 获取好友列表 
26
+ * @param {*} payload
27
+ */
28
+export const queryChatFriends = payload => fetch({ url: API_CHAT_FRIENDS, payload })
29
+
30
+/**
31
+ * 上传图片 
32
+ * @param {*} payload
33
+ */
34
+export const uploadImage = payload => fetch({ url: API_UPLOAD_IMAGE, payload })
35
+
36
+/**
37
+ * 更新消息为已读
38
+ * @param {*} payload 
39
+ */
40
+export const setMessageReaded = chatID => fetch({ url: `${API_CHAT_READED}/${chatID}`, method: 'PUT' })

+ 22
- 0
src/services/checkin.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_CHECKIN_DETAILS,
4
+  API_CHECKIN_ACTIVE
5
+} from '@/constants/api'
6
+
7
+
8
+
9
+/**
10
+ * 获取签到详情
11
+ */
12
+export const checkinDetails = (id, type) => fetch({ url: `${API_CHECKIN_DETAILS}/${id}?type=${type}`, method: 'GET' })
13
+
14
+
15
+
16
+/**
17
+ * 签到
18
+ * @param {*} enlistId 
19
+ */
20
+export const checkinActive = enlistId => fetch({ url: `${API_CHECKIN_ACTIVE}/${enlistId}`, method: 'PUT' })
21
+
22
+// /wx/buildingDynamicCheckin/{enlistId} 扫码活动签到 PUT

+ 35
- 0
src/services/client.js Vedi File

1
+
2
+import { fetch } from '@/utils/request'
3
+import {
4
+  API_CLIENT_LIST,
5
+  API_RECOMENT_CLIENT,
6
+  API_CLIENT_PROGRESS,
7
+  API_TYPE_DATA
8
+
9
+} from '@/constants/api'
10
+
11
+
12
+/**
13
+ * 客户列表
14
+ * @param {*} payload 
15
+ */
16
+export const getClientList = payload => fetch({ url: API_CLIENT_LIST, payload })
17
+
18
+
19
+/**
20
+ * 推荐客户
21
+ * @param {*} payload 
22
+ */
23
+export const recommendClient = payload => fetch({ url: API_RECOMENT_CLIENT, method: 'POST',payload })
24
+
25
+/**
26
+ * 客户进度详情
27
+ * @param {*} id 
28
+ */
29
+export const clientProgress = id => fetch({ url: `${API_CLIENT_PROGRESS}/${id}` })
30
+
31
+/**
32
+ * 选项数据查询
33
+ * @param {*} payload 
34
+ */
35
+export const getTypeData = payload => fetch({ url: API_TYPE_DATA, payload })

+ 90
- 0
src/services/common.js Vedi File

1
+import { fetch } from "@/utils/request";
2
+import {
3
+  API_PRELOAD,
4
+  API_QRCODE,
5
+  API_BANNER_LIST,
6
+  API_QUERY_CODE_SCENE,
7
+  API_BURIED_POINT,
8
+  API_CITY_LIST,
9
+  API_TEMPLATE_TYPE,
10
+  API_INDEX_ICONS
11
+} from "@/constants/api";
12
+
13
+/**
14
+ * 预加载数据
15
+ *  @param {*} payload
16
+ *
17
+ */
18
+export const getPreloadData = payload =>
19
+  fetch({ url: API_PRELOAD, payload, method: "GET" });
20
+
21
+/**
22
+ * 获取二维码
23
+ *  @param {*} payload
24
+ *
25
+ */
26
+export const getMiniQrcode = payload =>
27
+  fetch({ url: API_QRCODE, payload, method: "POST" });
28
+
29
+/**
30
+ * 获取二维码参数
31
+ *  @param {*} scene
32
+ *
33
+ */
34
+export const getCodeScene = scene =>
35
+  fetch({ url: `${API_QUERY_CODE_SCENE}/${scene}` });
36
+
37
+/**
38
+ * 获取banner列表
39
+ *  @param {*} type 打开方式, 这里值为 banner(轮播图) 或者 screen(首屏广告)
40
+ *  @param {*} payload
41
+ *
42
+ *
43
+ */
44
+export const queryBanners = (type, payload) =>
45
+  fetch({ url: `${API_BANNER_LIST}/${type}`, payload });
46
+
47
+/**
48
+ * 获取 banner , 首屏等一些信息
49
+ * @param {*} payload
50
+ */
51
+export const queryExtContents = payload =>
52
+  fetch({ url: API_BANNER_LIST, payload });
53
+
54
+/**
55
+ * 获取 首页图标
56
+ * @param {*} payload
57
+ */
58
+export const queryIndexIcons = payload =>
59
+  fetch({ url: API_INDEX_ICONS, payload });
60
+
61
+/**
62
+ * 新增埋点
63
+ * @param {*} payload
64
+ */
65
+export const savePoint = payload =>
66
+  fetch(
67
+    { url: API_BURIED_POINT, payload, method: "POST", showToast: false },
68
+    2
69
+  );
70
+
71
+/**
72
+ * 更新埋点
73
+ * @param {*} id
74
+ * @param {*} payload
75
+ */
76
+export const updatePoint = (id, payload) =>
77
+  fetch({ url: `${API_BURIED_POINT}/${id}`, payload, method: "PUT" }, 2);
78
+
79
+/**
80
+ * 获取城市列表
81
+ * @param {*}
82
+ */
83
+export const queryCityList = () => fetch({ url: API_CITY_LIST });
84
+
85
+/**
86
+ * 获取消息模板
87
+ * @param {*}
88
+ */
89
+export const queryMessageTPL = type =>
90
+  fetch({ url: `${API_TEMPLATE_TYPE}/${type}` });

+ 10
- 0
src/services/feedback.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_FEEDBACK_SUBMIT
4
+} from '@/constants/api'
5
+
6
+/**
7
+ * 提交用户反馈
8
+ * @param {*} payload 
9
+ */
10
+export const submitFeedBack = payload => fetch({ url: API_FEEDBACK_SUBMIT, payload, method: 'POST' })

+ 20
- 0
src/services/getCode.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_GET_CODE,
4
+  API_PUT_REGISTER,
5
+  API_PUT_REGISTERCONSULTANT,
6
+  API_CHECK_CODE
7
+} from '@/constants/api'
8
+
9
+/**
10
+ * 提交用户反馈
11
+ * @param {*} payload
12
+ */
13
+export const getCodeMessage = tel => fetch({ url: `${API_GET_CODE}?tel=${tel}`, method: 'POST' })
14
+
15
+export const checkCaptcha = (tel, captcha) => fetch({ url: `${API_CHECK_CODE}?tel=${tel}&captcha=${captcha}`, method: 'POST' })
16
+
17
+export const putRegister = payload => fetch({ url: `${API_PUT_REGISTER}?phone=${payload.tel}&&code=${payload.code}`, payload, method: 'PUT' })
18
+
19
+export const putRegisterConsultant = payload => fetch({ url: `${API_PUT_REGISTERCONSULTANT}`, method: 'PUT' })
20
+// /wx/registerConsultantOneClick

+ 3
- 0
src/services/house.js Vedi File

1
+import { fetch, apis } from '@/utils/request'
2
+
3
+export const checkRaise = houseIdList => fetch({ url: `${apis.API_RAISE_CHECK}?houseIds=${houseIdList.join(',')}`, method: 'GET' })

+ 110
- 0
src/services/item.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_ITEMS_LIST,
4
+  API_ITEMS_DETAIL,
5
+  API_ITEMS_UV,
6
+  API_ITEMS_LIKE,
7
+  API_ITEMS_SHARE,
8
+  API_ITEMS_TYPE,
9
+  API_PROJECT_FAVOR,
10
+  API_GOODS_BUILDING,
11
+  API_GOODS_LIST,
12
+  API_LIVE_DEATIL,
13
+  API_ADDLIVE_NUM
14
+} from '@/constants/api'
15
+
16
+/**
17
+ * 获取项目列表
18
+ * @param {*} payload 
19
+ */
20
+export const getItemList = payload => fetch({ url: API_ITEMS_LIST, payload })
21
+/**
22
+ * 获取楼盘商品列表
23
+ * @param {*} payload 
24
+ */
25
+export const getGoodsBuilding = payload => fetch({ url: API_GOODS_BUILDING, payload })
26
+/**
27
+ * 获取楼盘商品列表
28
+ * @param {*} payload 
29
+ */
30
+export const getGoodsList = payload => fetch({ url: API_GOODS_LIST, payload })
31
+/**
32
+ * 商品列表
33
+ * @param {*} payload
34
+ */
35
+
36
+
37
+/**
38
+ * 获取项目详情
39
+ * @param {*} id 
40
+ */
41
+export const getItemDetail = id => fetch({ url: `${API_ITEMS_DETAIL}/${id}` })
42
+
43
+/**
44
+ * 项目uv埋点
45
+ * @param {*} id  项目id
46
+ */
47
+export const addItemUv = id => fetch({ url: `${API_ITEMS_UV}/${id}`, method: 'POST' })
48
+
49
+/**
50
+ * 项目点赞
51
+ * @param {*} id  名片id
52
+ */
53
+export const addLike = id => fetch({ url: `${API_ITEMS_LIKE}/${id}`, method: 'POST' })
54
+
55
+/**
56
+ * 项目取消点赞
57
+ * @param {*} id  名片id
58
+ */
59
+export const cancelLike = id => fetch({ url: `${API_ITEMS_LIKE}/${id}`, method: 'DELETE' })
60
+
61
+/**
62
+ *项目收藏
63
+ * @param {*} payload 
64
+ */
65
+export const favorProject = id => fetch({ url: `${API_PROJECT_FAVOR}/${id}`, method: 'POST' })
66
+
67
+
68
+/**
69
+ * 取消项目收藏
70
+ * @param {*} payload 
71
+ */
72
+export const cancelFavorProject = id => fetch({ url: `${API_PROJECT_FAVOR}/${id}`, method: 'DELETE' })
73
+
74
+/**
75
+ * 项目粉丝列表
76
+ * @param {*} id  名片id
77
+ */
78
+export const queryItemFansList = (id, payload) => fetch({ url: `${API_ITEMS_UV}/${id}`, payload })
79
+
80
+
81
+/**
82
+ * 项目分享埋点
83
+ * @param {*} id  名片id
84
+ */
85
+export const addItemShareNum = id => fetch({ url: `${API_ITEMS_SHARE}/${id}`, method: 'POST' })
86
+
87
+/**
88
+ * 直播页详情
89
+ * @param {*} id 
90
+ */
91
+export const queryLiveDetail = (id, payload, header) => fetch({ url: `${API_LIVE_DEATIL}/${id}`, payload, header })
92
+
93
+/**
94
+ * 项目详情直播列表
95
+ * @param {*} payload 
96
+ */
97
+export const queryLiveList = payload => fetch({ url: API_LIVE_DEATIL, payload })
98
+/**
99
+ * 增加直播点击量
100
+ * @param {*} id
101
+ */
102
+// export const addLiveNum = payload => fetch({ url: API_ADDLIVE_NUM, payload, method: 'PUT' })
103
+export const addLiveNum = id => fetch({ url: `${API_ADDLIVE_NUM}?id=${id}`, method: 'PUT' })
104
+
105
+
106
+/**
107
+ * 项目类型列表
108
+ */
109
+export const queryItemTypeList = () => fetch({ url: API_ITEMS_TYPE })
110
+

+ 14
- 0
src/services/login.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import Qs from 'qs'
3
+import {
4
+  API_USER_LOGIN
5
+} from '@/constants/api'
6
+
7
+
8
+/**
9
+ * 获取用户openid等信息
10
+ * @param {*} payload 
11
+ */
12
+export const wxLogin = (payload, showToast) => {
13
+  return fetch({ url: `${API_USER_LOGIN}?${Qs.stringify(payload)}`, method: 'POST', showToast })
14
+}

+ 12
- 0
src/services/map.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_LOCATION_CITYP
4
+
5
+} from '@/constants/api'
6
+
7
+
8
+/**
9
+ * 获取名片列表
10
+ * @param {*} payload 
11
+ */
12
+export const getLocationCity = payload => fetch({ url: API_LOCATION_CITYP, payload })

+ 85
- 0
src/services/news.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_NEWS_LIST,
4
+  API_NEWS_FAVOR,
5
+  API_NEWS_UV,
6
+  API_NEWS_SHARE,
7
+  API_HOUSE_SHARE,
8
+  API_HOUSE_POSTER,
9
+  API_LIVE_SHARE,
10
+  API_LIVE_POSTER,
11
+  API_ACTIVITY_GROUP,
12
+  API_INDEX_SHARE,
13
+} from '@/constants/api'
14
+
15
+/**
16
+ * 首页分享埋点
17
+ * @param {*} id  名片id
18
+ */
19
+export const addIndexShareNum = id => fetch({ url: `${API_INDEX_SHARE}/${id}`, method: 'POST' })
20
+
21
+
22
+/**
23
+ * 项目uv埋点
24
+ * @param {*} id  项目id
25
+ */
26
+export const addNewsUv = id => fetch({ url: `${API_NEWS_UV}/${id}`, method: 'PUT' })
27
+
28
+/**
29
+ * 资讯分享埋点
30
+ * @param {*} id  名片id
31
+ */
32
+export const addNewsShareNum = id => fetch({ url: `${API_NEWS_SHARE}/${id}`, method: 'POST' })
33
+
34
+/**
35
+ * 房源列表分享埋点(海报)
36
+ * @param {*} id  id
37
+ */
38
+export const addHousePosterNum = id => fetch({ url: `${API_HOUSE_POSTER}/${id}`, method: 'POST' })
39
+/**
40
+ * 房源列表分享埋点(小程序)
41
+ * @param {*} id  id
42
+ */
43
+export const addHouseShareNum = id => fetch({ url: `${API_HOUSE_SHARE}/${id}`, method: 'POST' })
44
+/**
45
+ * 直播详情分享埋点(海报)
46
+ * @param {*} id  id
47
+ */
48
+export const addLivePosterNum = id => fetch({ url: `${API_LIVE_POSTER}/${id}`, method: 'POST' })
49
+/**
50
+ * 直播详情分享埋点(小程序)
51
+ * @param {*} id  id
52
+ */
53
+export const addLiveShareNum = id => fetch({ url: `${API_LIVE_SHARE}/${id}`, method: 'POST' })
54
+
55
+/**
56
+ * 获取资讯列表
57
+ * @param {*} payload
58
+ */
59
+export const queryNewsList = payload => fetch({ url: API_NEWS_LIST, payload })
60
+
61
+/**
62
+ * 获取资讯详情 
63
+ * @param {*} id
64
+ */
65
+export const queryNewsDetail = (id, payload, header) => fetch({ url: `${API_NEWS_LIST}/${id}`, payload, header })
66
+
67
+/**
68
+ * 首页获取助力拼团 
69
+ * @param {*} payload 
70
+ */
71
+export const queryHelpGroup = payload => fetch({ url: API_ACTIVITY_GROUP, payload })
72
+
73
+
74
+/**
75
+ *资讯收藏
76
+ * @param {*} payload 
77
+ */
78
+export const favorNews = id => fetch({ url: `${API_NEWS_FAVOR}/${id}`, method: 'POST' })
79
+
80
+
81
+/**
82
+ * 取消资讯收藏
83
+ * @param {*} payload 
84
+ */
85
+export const cancelFavorNews = id => fetch({ url: `${API_NEWS_FAVOR}/${id}`, method: 'DELETE' })

+ 111
- 0
src/services/person.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_MY_CUSTOMER,
4
+  API_CUSTOMER_LIST,
5
+  API_CUSTOMER_DETAIL,
6
+  API_VISIT_RECORD,
7
+  API_ACTIVITY_LIST_CUSTOMER,
8
+  API_FOLLOW_LIST,
9
+  API_SEX_INFO,
10
+  API_ECHERTS_DAILY,
11
+  API_ECHERTS_MONTH,
12
+  API_BUILDING_TYPE,
13
+  API_CONSULTANT_VISIT_RECORD,
14
+  API_MORE_ACTIVITY,
15
+  API_SHARE_LIST,
16
+  API_SHARE_INFOLIST,
17
+  API_BIND_CUSTOMER
18
+} from '@/constants/api'
19
+
20
+
21
+/**
22
+ * 获取客户分析性别数据
23
+ * @param {*} type
24
+ */
25
+export const querySexInfo = (type, payload) => fetch({ url: `${API_SEX_INFO}/${type}`, payload })
26
+/**
27
+ * 获取客户图表日数据
28
+ * @param {*} type
29
+ */
30
+export const getEchartDailyInfo = (type, payload) => fetch({ url: `${API_ECHERTS_DAILY}/${type}`, payload })
31
+/**
32
+ * 获取客户图表月数据
33
+ * @param {*} type
34
+ */
35
+export const getEchartMonthInfo = (type, payload) => fetch({ url: `${API_ECHERTS_MONTH}/${type}`, payload })
36
+
37
+/**
38
+ * 获取我的客户数据
39
+ * @param {*} payload
40
+ */
41
+export const queryMyCustomer = payload => fetch({ url: API_MY_CUSTOMER, payload })
42
+
43
+/**
44
+ * 获取客户列表
45
+ * @param {*} type  
46
+ */
47
+export const queryCustomerList = (type, payload) => fetch({ url: `${API_CUSTOMER_LIST}/${type}`, payload })
48
+/**
49
+ * 获取项目类型
50
+ * @param {*} buildingId 
51
+ */
52
+export const getBuildingType = (buildingId, payload) => fetch({ url: `${API_BUILDING_TYPE}/${buildingId}`, payload })
53
+/**
54
+ * 获取客户详情
55
+ * @param {*} customerId  
56
+ */
57
+export const getCustomerDetail = (customerId, payload) => fetch({ url: `${API_CUSTOMER_DETAIL}/${customerId}`, payload })
58
+/**
59
+ * 完善客户信息
60
+ * @param {*} customerId  
61
+ */
62
+export const commitCustomerInfo = (customerId, payload) => fetch({ url: `${API_CUSTOMER_DETAIL}/${customerId}`, payload, method: 'PUT' })
63
+/**
64
+ * 获取访问记录
65
+ * @param {*} payload  
66
+ */
67
+export const getVisitRecord = (payload) => fetch({ url: API_VISIT_RECORD, payload })
68
+/**
69
+ * 获取活动信息
70
+ * @param {*} payload  
71
+ */
72
+export const getActivityList = (payload) => fetch({ url: API_ACTIVITY_LIST_CUSTOMER, payload })
73
+/**
74
+ * 获取跟进记录
75
+ * @param {*} payload  
76
+ */
77
+export const getFollowRecord = (payload) => fetch({ url: API_FOLLOW_LIST, payload })
78
+
79
+/**
80
+ * 添加跟进记录
81
+ * @param {*} payload  
82
+ */
83
+export const addFollowRecord = (payload) => fetch({ url: API_FOLLOW_LIST, payload, method: 'POST' })
84
+/**
85
+ * 获取访客信息
86
+ * @param {*} payload  
87
+ */
88
+export const getConsulantVisitRecord = (payload) => fetch({ url: API_CONSULTANT_VISIT_RECORD, payload })
89
+/**
90
+ * 获取访问记录
91
+ * @param {*} payload  
92
+ */
93
+export const getMoreVisitRecord = (payload) => fetch({ url: API_MORE_ACTIVITY, payload })
94
+/**
95
+ * 获取分享记录
96
+ * @param {*} payload  
97
+ */
98
+export const getSharePersonList = (payload) => fetch({ url: API_SHARE_LIST, payload })
99
+/**
100
+ * 获取分享人的详细信息
101
+ * @param {*} payload  
102
+ */
103
+export const judgeBindCustomer = (payload) => fetch({ url: API_BIND_CUSTOMER, payload })
104
+/**
105
+ * 获取访问人列表
106
+ * @param {*} payload  
107
+ */
108
+export const getSharePersonInfoList = (payload) => fetch({ url: API_SHARE_INFOLIST, payload })
109
+
110
+
111
+

+ 18
- 0
src/services/policy.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_POLICY_LIST,
4
+} from '@/constants/api'
5
+
6
+
7
+/**
8
+ * 获取列表
9
+ * @param {*} payload
10
+ */
11
+export const queryPolicyList = payload => fetch({ url: API_POLICY_LIST, payload })
12
+
13
+
14
+/**
15
+ * 获取详情 
16
+ * @param {*} id
17
+ */
18
+export const queryPolicyDetail = id => fetch({ url: `${API_POLICY_LIST}/${id}` })

+ 131
- 0
src/services/project.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_HOUSE_LIST,
4
+  API_PRESELECTION_RECORD,
5
+  API_SALESBATCH_LIST,
6
+  API_RATSE_RECORD,
7
+  API_HOUSE_DETAIL,
8
+  API_ADD_PRESELECTION,
9
+  API_CANCEL_PRESELECTION,
10
+  API_APARTMENT_TYPE,
11
+  API_NOTICE_INFO,
12
+  API_SALES_BATCH,
13
+  API_RATSE_DETAIL,
14
+  API_RATSE_ORDER,
15
+  API_CANCEL_ORDER,
16
+  API_CONTRACT_USER,
17
+  API_CONTRACT_GET,
18
+  API_CONTRACT_AUTO,
19
+  API_CONTRACT_MANUAL,
20
+  API_CONTRACT_CHECK,
21
+  API_INDEX_CUSTOMER
22
+
23
+} from '@/constants/api'
24
+
25
+
26
+/**
27
+ * 首页绑定私客
28
+ * @param {*} payload
29
+ */
30
+export const reportIndexCustomer = (payload, header) => fetch({ url: API_INDEX_CUSTOMER, payload, header, method: 'POST' })
31
+/**
32
+ * 获取房源列表
33
+ * @param {*} payload
34
+ */
35
+export const queryHouseList = (payload, header) => fetch({ url: API_HOUSE_LIST, payload, header })
36
+
37
+/**
38
+ * 获取房源分享信息
39
+ * @param {*} id
40
+ */
41
+export const querySalesInfo = id => fetch({ url: `${API_SALES_BATCH}/${id}` })
42
+/**
43
+ * 获取认筹单详情
44
+ * @param {*} id
45
+ */
46
+export const queryRaiseDetail = id => fetch({ url: `${API_RATSE_DETAIL}/${id}` })
47
+/**
48
+ * 认筹单线下缴费
49
+ * @param {*} id
50
+ */
51
+export const raiseOffline = id => fetch({ url: `${API_RATSE_DETAIL}/${id}`, method: 'PUT' })
52
+/**
53
+ * 获取房源列表滚动提示
54
+ * @param {*} id
55
+ */
56
+export const queryNoticeInfo = id => fetch({ url: `${API_NOTICE_INFO}/${id}` })
57
+
58
+/**
59
+ * 预选房源
60
+ * @param {*} payload
61
+ */
62
+export const addPreselection = payload => fetch({ url: API_ADD_PRESELECTION, payload, method: 'POST' })
63
+/**
64
+ * 取消预选房源
65
+ * @param {*} payload
66
+ */
67
+export const cancelPreselection = payload => fetch({ url: `${API_CANCEL_PRESELECTION}?${'houseId=' + payload.houseId}&${'personId=' + payload.personId}`, method: 'DELETE' })
68
+/**
69
+ * 获取房源详情
70
+ * @param {*} payload
71
+ */
72
+export const queryHouseDetail = payload => fetch({ url: API_HOUSE_DETAIL, payload })
73
+
74
+/**
75
+ * 获取选房记录
76
+ * @param {*} payload
77
+ */
78
+export const queryPreselectionRecord = payload => fetch({ url: API_PRESELECTION_RECORD, payload })
79
+/**
80
+ * 获取认筹记录
81
+ * @param {*} payload
82
+ */
83
+export const queryRaiseRecord = payload => fetch({ url: API_RATSE_RECORD, payload })
84
+/**
85
+ * 获取销售批次列表
86
+ * @param {*} payload
87
+ */
88
+export const querySalesList = payload => fetch({ url: API_SALESBATCH_LIST, payload })
89
+/**
90
+ * 获取某销售批次下所有房源户型
91
+ * @param {*} payload
92
+ */
93
+export const queryApartmentType = payload => fetch({ url: API_APARTMENT_TYPE, payload })
94
+/**
95
+ *认筹下单接口
96
+ * @param {*} payload
97
+ */
98
+export const raiseOrder = payload => fetch({ url: API_RATSE_ORDER, payload, method: 'POST' })
99
+/**
100
+ *认筹单取消支付接口
101
+ * @param {*} payload
102
+ */
103
+export const cancelOrder = payload => fetch({ url: API_CANCEL_ORDER, payload, method: 'POST' })
104
+/**
105
+ *获取签约信息
106
+ * @param {*} payload
107
+ */
108
+export const contractUser = payload => fetch({ url: API_CONTRACT_USER, payload, method: 'POST' })
109
+/**
110
+ *获取签约信息
111
+ * @param {*} payload
112
+ */
113
+export const contractGet = payload => fetch({ url: API_CONTRACT_GET, payload })
114
+/**
115
+ *自动签署
116
+ * @param {*} payload
117
+ */
118
+export const contractAuto = payload => fetch({ url: API_CONTRACT_AUTO, payload, method: 'POST' })
119
+/**
120
+ *手动签署
121
+ * @param {*} payload
122
+ */
123
+export const contractManual = payload => fetch({ url: API_CONTRACT_MANUAL, payload, method: 'POST' })
124
+/**
125
+ *手动签署结果
126
+ * @param {*} payload
127
+ */
128
+export const contractCheck = payload => fetch({ url: API_CONTRACT_CHECK, payload, method: 'POST' })
129
+
130
+
131
+

+ 33
- 0
src/services/report.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_REPORT_LIST,
4
+  API_REPORT_CLIENT,
5
+  API_RECOMMEND_GET,
6
+  API_RECOMMEND_EDIT
7
+} from '@/constants/api'
8
+
9
+
10
+/**
11
+ * 获取报备客户列表
12
+ * @param {*} payload
13
+ */
14
+export const queryReportList = payload => fetch({ url: API_REPORT_LIST, payload })
15
+
16
+
17
+/**
18
+ * 报备客户
19
+ * @param {*} payload
20
+ */
21
+export const reportClient = payload => fetch({ url: API_REPORT_CLIENT, payload, method: 'POST' })
22
+
23
+/**
24
+ * 获取客户详情
25
+ * @param {*} payload
26
+ */
27
+export const customerGet = customerId => fetch({ url: `${API_RECOMMEND_GET}/${customerId}`, method: 'GET' })
28
+
29
+/**
30
+ * 修改客户信息
31
+ * @param {*} payload
32
+ */
33
+export const customerEdit = (payload) => fetch({ url: `${API_RECOMMEND_EDIT}/${payload.customerId}`,payload, method: 'PUT' })

+ 81
- 0
src/services/user.js Vedi File

1
+import { fetch } from '@/utils/request'
2
+import {
3
+  API_USER_INFO,
4
+  API_USER_PHONE,
5
+  API_USER_SIGNIN,
6
+  API_QUERY_USER_INFO,
7
+  API_QUERY_DOCUMENTVERIFY,
8
+  API_QUERY_DOCUMENTVERIFY_list,
9
+  API_QUERY_TADRAINGE,
10
+  API_TACUSTOMIMG,
11
+  API_POINTS_RULE
12
+} from '@/constants/api'
13
+
14
+/**
15
+ * 更新用户信息
16
+ * @param {*} payload 
17
+ */
18
+export const updateUserInfo = payload => fetch({ url: API_USER_INFO, payload, method: 'POST' })
19
+
20
+/**
21
+ * 获取用户手机号
22
+ * @param {*} payload 
23
+ */
24
+export const queryUserPhone = payload => fetch({ url: API_USER_PHONE, payload, method: 'POST' })
25
+
26
+/**
27
+ * 获取用户积分 推荐客户 收藏数等
28
+ * @param {*} payload 
29
+ */
30
+export const queryUserInfo = payload => fetch({ url: API_QUERY_USER_INFO, payload })
31
+
32
+/**
33
+ * 获取我的资料
34
+ * @param {*} payload
35
+ */
36
+export const getDocumentVerify = payload => fetch({ url: API_QUERY_DOCUMENTVERIFY, payload })
37
+
38
+/**
39
+ * 获取我的资料审核列表
40
+ * @param {*} payload
41
+ */
42
+export const getVerifyList = payload => fetch({ url: API_QUERY_DOCUMENTVERIFY_list, payload })
43
+/**
44
+ * 提交我的资料 (首次)
45
+ * @param {*} payload
46
+ */
47
+export const commitDocumentVerify = payload => fetch({ url: API_QUERY_DOCUMENTVERIFY, payload, method: 'POST' })
48
+/**
49
+ * 提交我的资料 (非首次)
50
+ * @param {*} payload
51
+ */
52
+export const editDocumentVerify = payload => fetch({ url: `${API_QUERY_DOCUMENTVERIFY}/${payload.id}`, payload, method: 'PUT' })
53
+
54
+/**
55
+ * 获取审核资料详情
56
+ *  * @param {*} payload
57
+ */
58
+export const getProfileDetail = payload => fetch({ url: `${API_QUERY_DOCUMENTVERIFY}/${payload}`, payload })
59
+
60
+/**
61
+ * 用户签到
62
+ * @param {*} payload 
63
+ */
64
+export const doUserSignin = payload => fetch({ url: API_USER_SIGNIN, payload, method: 'POST' })
65
+
66
+/**
67
+ * 获取h5中间页信息
68
+ * @param {*} id 
69
+ */
70
+export const getHFiveDetail = (id, payload, header) => fetch({ url: `${API_QUERY_TADRAINGE}/${id}`, payload, header })
71
+/**
72
+ * 获取首页分享信息
73
+ * @param {*} payload
74
+ */
75
+export const getIndexShare = payload => fetch({ url: API_TACUSTOMIMG, payload })
76
+/**
77
+ * 获取积分规则
78
+ * @param {*} payload
79
+ */
80
+export const getPointsRule = payload => fetch({ url: API_POINTS_RULE, payload })
81
+

+ 2
- 4
src/store/index.js Vedi File

22
   // other store enhancers if any
22
   // other store enhancers if any
23
 )
23
 )
24
 
24
 
25
-export default function configStore () {
26
-  const store = createStore(rootReducer, enhancer)
27
-  return store
28
-}
25
+const store = createStore(rootReducer, enhancer)
26
+export default store

+ 50
- 0
src/utils/login.js Vedi File

1
+import Taro from '@tarojs/taro';
2
+import store from "@/store";
3
+import { dispatchCitySelected } from '@/actions/city'
4
+import { USER_INFO, ASSIGN_UNREADNUM } from '@/constants/user'
5
+import { ifNull } from '@/utils/tools'
6
+import { wxLogin } from '@/services/login'
7
+import { queryUserInfo } from '@/services/user'
8
+
9
+export default (payload) => {
10
+  return new Promise((resolve, reject) => {
11
+    const { path, scene, ...params } = payload
12
+  
13
+    // 获取 code
14
+    Taro.login({
15
+      success: ({ code }) => {
16
+        params.code = code
17
+  
18
+        // 转换 undefined 为 ''
19
+        const loginParams = Object.keys(params).reduce((acc, k) => ({ ...acc, [`${k}`]: ifNull(params[k], '') }), {})
20
+  
21
+        // 远程登录获取人员
22
+        wxLogin(loginParams, false).then(data => {
23
+  
24
+          const { extraInfo, miniApp, person, city } = data
25
+          const { token, sessionKey } = miniApp
26
+          const { dispatch, getState } = store
27
+  
28
+          Taro.setStorageSync('token', token)
29
+          Taro.setStorageSync('sessionKey', sessionKey)
30
+  
31
+          dispatch({ type: USER_INFO, payload: { extraInfo, person, miniApp } })
32
+          const { city: { curCity } } = getState()
33
+  
34
+          if (!curCity || Object.keys(curCity).length == 0) {
35
+            if (city) {
36
+              dispatchCitySelected(city)(dispatch)
37
+            }
38
+          }
39
+
40
+          // 获取人员详细信息
41
+          queryUserInfo(person.personId).then(info => {
42
+            const { unReadNum } = info
43
+            dispatch({ type: ASSIGN_UNREADNUM, payload: { unReadNum } });
44
+            resolve(data)
45
+          }).catch(reject)
46
+        }).catch(reject)
47
+      }
48
+    })
49
+  })
50
+}

+ 81
- 20
src/utils/tools.js Vedi File

1
-import Taro from "@tarojs/taro";
2
-import store from "../store";
3
-import rtLog from "./rtLog";
1
+import Taro, { getCurrentInstance } from "@tarojs/taro";
2
+import { getCodeScene } from '@/services/common';
3
+import store from "@/store";
4
 
4
 
5
 /**
5
 /**
6
  * 是否为空
6
  * 是否为空
93
   return res;
93
   return res;
94
 }
94
 }
95
 
95
 
96
+// eslint-disable-next-line no-undef
96
 const ossPath = OSS_PATH;
97
 const ossPath = OSS_PATH;
98
+// eslint-disable-next-line no-undef
97
 const ossFastPath = OSS_FAST_PATH;
99
 const ossFastPath = OSS_FAST_PATH;
98
 
100
 
99
 /**
101
 /**
261
   }
263
   }
262
 }
264
 }
263
 
265
 
264
-export function getDownloadURL(url, type) {
265
-  if (!url) return url;
266
-
267
-  switch (type) {
268
-    case "avatar":
269
-      return url
270
-        .replace("https://wx.qlogo.cn/", `${HOST}/qlogo/`)
271
-        .replace("https://thirdwx.qlogo.cn/", `${HOST}/thirdwx/`);
272
-    case "alioss":
273
-      return url
274
-        .replace(ossPath, `${HOST}/alioss/`)
275
-        .replace(ossFastPath, `${HOST}/alioss/`);
276
-    default:
277
-      return url;
278
-  }
279
-}
280
-
281
 /**
266
 /**
282
  * @description 获取当前页url
267
  * @description 获取当前页url
283
  */
268
  */
315
 
300
 
316
   return cloneObj;
301
   return cloneObj;
317
 };
302
 };
303
+
304
+export const getLocation = () => {
305
+  return new Promise((resolve) => {
306
+    Taro.getLocation().then(location => {
307
+      Taro.setStorageSync('lat', location.latitude)
308
+      Taro.setStorageSync('lon', location.longitude)
309
+
310
+      resolve({ lon: location.longitude, lat: location.latitude })
311
+    }).catch(err => {
312
+      if (err.errMsg === 'getLocation:fail auth deny') {
313
+        Taro.showModal({
314
+          content: '请同意授权您的定位功能',
315
+          showCancel: false,
316
+          duration: 3000,
317
+        })
318
+      } else {
319
+        Taro.showToast({
320
+          title: `定位失败, 请手动选择城市: ${err.errMsg}`,
321
+          icon: 'none',
322
+          duration: 3000,
323
+        })
324
+      }
325
+
326
+      console.error(err)
327
+      resolve()
328
+    })
329
+  })
330
+}
331
+
332
+export const getRouterParams = (options) => {
333
+  return new Promise(resolve => {
334
+    const router = options || getCurrentInstance().router
335
+    const originQuery = { ...router.query };
336
+    let { query: { scene: paramsId }, scene } = router
337
+
338
+    // query 里面如果跟同级场景一样, 说明是小程序原生场景值
339
+    if (paramsId === scene) {
340
+      paramsId = undefined
341
+    }
342
+
343
+    if (paramsId) {
344
+      // 扫码进入
345
+      getCodeScene(paramsId).then(res => {
346
+        let params = JSON.parse(res).scene
347
+
348
+        let { from: _from, recommender: _recommender, consultant, id, ...left } = parseQueryString(params) || {}
349
+
350
+        router.query = Object.assign(router.query, {
351
+          originQuery,
352
+          id,
353
+          paramsId,
354
+          from: _from,
355
+          recommender: _recommender,
356
+          consultant,
357
+          params,
358
+          targetId: id,
359
+          ...left,
360
+        })
361
+        Taro.setStorageSync('recommender', router.query.recommender)
362
+        Taro.setStorageSync('consultantId', router.query.consultant)
363
+        resolve(router)
364
+      })
365
+    } else {
366
+      router.query = Object.assign(router.query, {
367
+        originQuery,
368
+        paramsId: router.query.id || '',
369
+        from: router.query.from || 'search',
370
+        recommender: router.query.recommender || '',
371
+        targetId: router.query.id || '',
372
+        consultant: router.query.consultant || '',
373
+      })
374
+
375
+      resolve(router)
376
+    }
377
+  })
378
+}