张延森 5 年之前
父節點
當前提交
09ffb6734f

+ 3
- 0
src/actions/house.js 查看文件

@@ -3,6 +3,7 @@ import { API_CARDS_LIST, API_PRESELECTION_RECORD } from '@/constants/api'
3 3
 import {
4 4
   ADD_CART,
5 5
   SUB_CART,
6
+  FLUSH_TO_CART,
6 7
   ADD_CONSULTANT,
7 8
   CHOOSE_CONSULTANT,
8 9
   MY_PRESELECT_RECORD,
@@ -12,6 +13,8 @@ import {
12 13
 export const dispatchAddCart = payload => createActionNormal({ type: ADD_CART, payload })
13 14
 // 删减临时车
14 15
 export const dispatchSubCart = payload => createActionNormal({ type: SUB_CART, payload })
16
+// 全部进入临时车
17
+export const dispatchFlush2Cart = payload => createActionNormal({ type: FLUSH_TO_CART, payload })
15 18
 // 获取置业顾问
16 19
 export const dispatchGetConsultants = payload => createAction({
17 20
   type: ADD_CONSULTANT,

+ 3
- 0
src/constants/house.js 查看文件

@@ -5,6 +5,9 @@ export const ADD_CART = 'ADD_CART'
5 5
 // 取消选择-暂存
6 6
 export const SUB_CART = 'SUB_CART'
7 7
 
8
+// 所有进入-暂存
9
+export const FLUSH_TO_CART = 'FLUSH_TO_CART'
10
+
8 11
 // 置业顾问列表
9 12
 export const ADD_CONSULTANT = 'ADD_CONSULTANT'
10 13
 

+ 7
- 1
src/onlineSelling/components/HouseGrid/Floor.js 查看文件

@@ -12,7 +12,13 @@ export default function Floor(props) {
12 12
         {roomList.map((room) => {
13 13
           return (
14 14
             <View className="item" key={room.houseId} >
15
-              <Room dataset={room} onClick={props.onRoomClick} onActionClick={props.onActionClick}/>
15
+              <Room
16
+                dataset={room}
17
+                showDataType={props.showDataType}
18
+                onClick={props.onRoomClick}
19
+                showAction={props.showAction}
20
+                onActionClick={props.onActionClick}
21
+              />
16 22
             </View>
17 23
           )
18 24
         })}

+ 46
- 29
src/onlineSelling/components/HouseGrid/Room.js 查看文件

@@ -1,54 +1,71 @@
1
+import Taro, { Component } from '@tarojs/taro'
1 2
 import { View } from "@tarojs/components";
2 3
 import HotBlock from "../HotBlock";
3 4
 import './room.scss'
4 5
 import lockImg from '../../assets/lock.png'
5 6
 import preselectionImg from '../../assets/preselection.png'
6 7
 import chipsImg from '../../assets/chips.png'
8
+import { connect } from '@tarojs/redux'
7 9
 
8
-export default function Room(props) {
9
-  const { roomName, heat, realHeat, status, raiseHeat, raiseRealHeat, showAction, ownerd, houseLockingStatus, mineLocked, minePreselection, mineRaise } = props.dataset || {}
10
-  // const personNum = `(${realHeat + heat + 0}人)`
11
-  const { currentHot = 0 } = props
12
-  const personNum = realHeat + heat + 0
13
-  const raisePersonNum = raiseHeat + raiseRealHeat + 0
14
-
15
-  const handleClick = () => {
16
-    if (props.onClick) {
17
-      props.onClick(props.dataset || {})
10
+@connect(({ house }) => { house })
11
+export default class Room extends Component {
12
+  handleClick = () => {
13
+    const { onClick, dataset } = this.props
14
+    if (onClick) {
15
+      onClick(dataset || {})
18 16
     }
19 17
   }
20 18
 
21
-  const actionIcon = ownerd ? 'subtract-circle' : 'add-circle'
19
+  handleActionClick = () => {
20
+    const { onActionClick, showAction, dataset } = this.props
22 21
 
23
-  const handleActionClick = () => {
24
-    if (showAction && props.onActionClick) {
25
-      props.onActionClick(props.dataset || {})
22
+    if (showAction && onActionClick) {
23
+      onActionClick(dataset || {})
26 24
     }
27 25
   }
28 26
 
29
-  return (
30
-    <HotBlock number={currentHot == '0' ? personNum : raisePersonNum}>
31
-      {
32
-        status == '1' &&
33
-        (<View className="room">
27
+  render() {
28
+    const { dataset, showAction, house, showDataType = 1 } = this.props
29
+
30
+    const {
31
+      houseId,
32
+      roomName,
33
+      heat,
34
+      realHeat,
35
+      raiseHeat,
36
+      raiseRealHeat,
37
+      houseLockingStatus,
38
+      mineLocked,
39
+      minePreselection,
40
+      mineRaise
41
+    } = dataset || {}
42
+
43
+    // const personNum = `(${realHeat + heat + 0}人)`
44
+    const personNum = realHeat + heat + 0
45
+    const raisePersonNum = raiseHeat + raiseRealHeat + 0
46
+    
47
+    const actionIcon = (house.raiseCart || []).filter(x => x.houseId == houseId)[0] ? 'subtract-circle' : 'add-circle'
48
+    
49
+    return (
50
+      <HotBlock number={showDataType === 1 ? personNum : raisePersonNum}>
51
+        <View className="room">
34 52
           <View onClick={handleClick}>
35 53
             <View className="roomname">{roomName || ''}</View>
36 54
             <View className="yuxuan">{personNum}预选</View>
37 55
             <View className="yuxuan">{raisePersonNum}认筹</View>
38
-            {minePreselection && <Image src={preselectionImg} className="preselection-img"></Image>}
39
-            {mineRaise && <Image src={chipsImg} className="chips-img"></Image>}
40
-            {houseLockingStatus == 'locked' && <Image src={lockImg} style={mineLocked ? 'position: absolute; right: 2px;bottom: 3px;' : ''} className="lock-img"></Image>}
56
+            {!showAction && minePreselection && <Image src={preselectionImg} className="preselection-img"></Image>}
57
+            {!showAction && mineRaise && <Image src={chipsImg} className="chips-img"></Image>}
58
+            {!showAction && houseLockingStatus == 'locked' && <Image src={lockImg} style={mineLocked ? 'position: absolute; right: 2px;bottom: 3px;' : ''} className="lock-img"></Image>}
41 59
           </View>
42 60
           {
43
-            !showAction && (
44
-              <View className="action" onClick="handleActionClick">
61
+            showAction && (
62
+              <View className="action" onClick={this.handleActionClick.bind(this)}>
45 63
                 <View className={`at-icon at-icon-${actionIcon}`}></View>
46 64
               </View>
47 65
             )
48 66
           }
49
-        </View>)
50
-      }
51
-
52
-    </HotBlock>
53
-  )
67
+        </View>
68
+      </HotBlock>
69
+    )
70
+  }
54 71
 }

+ 9
- 1
src/onlineSelling/components/HouseGrid/Unit.js 查看文件

@@ -29,7 +29,15 @@ export default class Unit extends Component {
29 29
         </View>
30 30
         <View className="body" >
31 31
           {!noshow && floorList.map((floor) => {
32
-            return <Floor key={floor.floorId} dataset={floor} onRoomClick={this.props.onRoomClick} onActionClick={this.props.onActionClick} />
32
+            return (
33
+              <Floor
34
+                key={floor.floorId}
35
+                dataset={floor}
36
+                showDataType={this.props.showDataType}
37
+                onRoomClick={this.props.onRoomClick}
38
+                showAction={this.props.showAction}
39
+                onActionClick={this.props.onActionClick}                
40
+              />)
33 41
           })}
34 42
         </View>
35 43
       </View>

+ 11
- 3
src/onlineSelling/components/HouseGrid/index.js 查看文件

@@ -9,9 +9,17 @@ export default (props) => {
9 9
   return (
10 10
     <Block>
11 11
       {
12
-        unitList.map((unit) => (<Unit key={unit.unitId} dataset={unit} onRoomClick={handleRoomClick} onActionClick={handleActionClick} />))
12
+        unitList.map((unit) => (
13
+          <Unit
14
+            key={unit.unitId}
15
+            dataset={unit}
16
+            showDataType={props.showDataType}
17
+            onRoomClick={handleRoomClick}
18
+            showAction={props.showAction}
19
+            onActionClick={handleActionClick}
20
+          />
21
+        ))
13 22
       }
14 23
     </Block>
15 24
   )
16
-
17
-}
25
+}

+ 31
- 13
src/onlineSelling/pages/addHouse/index.js 查看文件

@@ -18,24 +18,37 @@ export default class extends Component {
18 18
     navigationBarTitleText: '添加预选房源',
19 19
   }
20 20
 
21
-  state = {}
21
+  state = {
22
+    chooseList: [],
23
+  }
22 24
 
23 25
   componentWillMount() {
24 26
     ready.queue(() => {
25 27
       const { userInfo, house } = this.props
26
-      const { salesBatchId } = this.$router.params
28
+      const { id: salesBatchId } = this.$router.params
29
+
30
+      this.props.dispatchGetMySelection({
31
+        salesBatchId,
32
+        personId: userInfo.person.personId,
33
+      })
27 34
 
28
-      if (!house.mySelectHouses || !house.mySelectHouses.length) {
29
-        this.props.dispatchGetMySelection({
30
-          salesBatchId,
31
-          personId: userInfo.person.personId,
32
-        })
35
+      if (house.raiseCart && house.raiseCart.length) {
36
+        this.setState({ chooseList: house.raiseCart })
33 37
       }
34 38
     })
35 39
   }
36 40
 
37 41
   handleCheckboxChange = (e) => {
38
-    console.log('------------->', e)
42
+    const { house } = this.props
43
+    const houseIdList = e.detail.value
44
+    const chooseList = (house.mySelectHouses || []).filter(x => houseIdList.indexOf(x.houseId) > -1).map(x => x.housingInfo)
45
+
46
+    this.setState({ chooseList })
47
+  }
48
+
49
+  handleSubmit = () => {
50
+    this.props.dispatchFlush2Cart(this.state.chooseList)
51
+    Taro.navigateBack({ delta: 1 })
39 52
   }
40 53
 
41 54
   renderHead() {
@@ -45,16 +58,19 @@ export default class extends Component {
45 58
   }
46 59
 
47 60
   renderHouses() {
61
+    const { chooseList } = this.state
48 62
     const { house } = this.props
49
-    const hasData = house.mySelectHouses && house.mySelectHouses.length
63
+    
64
+    // 从预选记录中过滤出来, 状态正常且未锁定的房源
65
+    const houseList = (house.mySelectHouses || []).map(x => x.housingInfo).filter(x => x.status == 1 && x.houseLockingStatus != 'locked')
50 66
 
51
-    return hasData && (
67
+    return houseList.length && (
52 68
       <Block>
53 69
         <ScrollView scrollY className="container">
54 70
           <CheckboxGroup onChange={this.handleCheckboxChange}>
55 71
             {
56
-              house.mySelectHouses.map((item) => {
57
-                const checked = !!house.raiseCart.filter(x => x.houseId == item.houseId)[0]
72
+              houseList.map((item) => {
73
+                const checked = !!chooseList.filter(x => x.houseId == item.houseId)[0]
58 74
                 return (
59 75
                   <Label class="checkbox" key={item.houseId}>
60 76
                     <Checkbox value={item.houseId} checked={checked} >
@@ -68,7 +84,9 @@ export default class extends Component {
68 84
             }
69 85
           </CheckboxGroup>
70 86
         </ScrollView >
71
-        <View className="raise-box"> <View className="raise-btn">确认以上选择</View></View>
87
+        <View className="raise-box">
88
+          <View className="raise-btn" onClick={this.handleSubmit}>确认以上选择</View>
89
+        </View>
72 90
       </Block>
73 91
     )
74 92
   }

+ 88
- 3
src/onlineSelling/pages/houseCart/index.js 查看文件

@@ -4,20 +4,105 @@ import { View, ScrollView } from '@tarojs/components'
4 4
 import './index.scss'
5 5
 import Blank from '../../components/Blank'
6 6
 import HouseGrid from '../../components/HouseGrid'
7
+import { queryHouseList } from '@/services/project'
7 8
 
9
+import ready from '@/utils/ready'
10
+import { connect } from '@tarojs/redux'
11
+import * as houseActions from '@/actions/house'
12
+
13
+@connect(
14
+  ({ user, house }) => ({ ...user, house }),
15
+  {...houseActions}
16
+)
8 17
 export default class extends Component {
9 18
   config = {
10 19
     navigationBarTitleText: '添加其他房源',
11 20
   }
12 21
 
13 22
   state = {
23
+    loading: true,
14 24
     dataType: 1, // maybe need change  1 预选, 2 认筹
15 25
     houseList: [ { name: '1期1栋1单元1楼101户' } ],
16 26
     chooseList: [ { name: '1期1栋1单元1楼101户' }, { name: '1期1栋1单元1楼102户' } ], // 已经选择的房源列表
17 27
     collapsed: true, // 已选列表默认关闭, true 关闭, false 开启 
18 28
   }
19 29
 
20
-  componentWillMount () {}
30
+  componentWillMount () {
31
+    ready.queue(() => {
32
+      const { userInfo, house } = this.props
33
+      const { id: salesBatchId } = this.$router.params
34
+
35
+      const params = {
36
+        salesBatchId,
37
+        pageNum: 1,
38
+        pageSize: 9999,
39
+      }
40
+      queryHouseList(params).then(res => {
41
+        this.setState({
42
+          houseList: this.groupHouseList(res) || [],
43
+          loading: false,
44
+        })
45
+      })
46
+
47
+      if (house.raiseCart && house.raiseCart.length) {
48
+        this.setState({ chooseList: house.raiseCart })
49
+      }
50
+    })
51
+  }
52
+  
53
+  groupHouseList(houseList = []) {
54
+    // 先按照楼层分组
55
+    const floorList = houseList.reduce((list, room) => {
56
+      let found = false
57
+
58
+      list.forEach((floor) => {
59
+        if (floor.floorId === room.floorId) {
60
+          found = true
61
+          floor.roomList.push(room)
62
+        }
63
+      })
64
+
65
+      if (!found) {
66
+        list.push({ ...room, roomList: [room] })
67
+      }
68
+
69
+      return list
70
+    }, [])
71
+
72
+    // 再按照单元分组
73
+    const unitList = floorList.reduce((list, floor) => {
74
+      let found = false
75
+      list.forEach((unit) => {
76
+        if (unit.unitId === floor.unitId) {
77
+          found = true
78
+          unit.floorList.push(floor)
79
+        }
80
+      })
81
+
82
+      if (!found) {
83
+        list.push({ ...floor, floorList: [floor] })
84
+      }
85
+
86
+      return list
87
+    }, [])
88
+
89
+    // 最后按照楼栋分组
90
+    return unitList.reduce((list, unit) => {
91
+      let found = false
92
+      list.forEach((block) => {
93
+        if (block.blockId === unit.blockId) {
94
+          found = true
95
+          block.unitList.push(unit)
96
+        }
97
+      })
98
+
99
+      if (!found) {
100
+        list.push({ ...unit, unitList: [unit] })
101
+      }
102
+
103
+      return list
104
+    }, [])
105
+  }
21 106
 
22 107
   changeShowData = (dataType) => {
23 108
     // 此处需要按照 dataType 去切换数据
@@ -75,14 +160,14 @@ export default class extends Component {
75 160
   }
76 161
 
77 162
   renderHouses() {
78
-    const { houseList } = this.state
163
+    const { houseList, dataType } = this.state
79 164
     const hasData = houseList && houseList.length
80 165
 
81 166
     return hasData && (
82 167
       <ScrollView className="body" scrollY>
83 168
       {
84 169
         houseList.map((item) => {
85
-          return <HouseGrid key={item.unitId} dataset={item} onRoomClick={this.handleRoomClick} onActionClick={this.add2Cart} />
170
+          return <HouseGrid showAction showDataType={dataType} key={item.unitId} dataset={item} onRoomClick={this.handleRoomClick} onActionClick={this.add2Cart} />
86 171
         })
87 172
       }
88 173
       </ScrollView>

+ 8
- 11
src/onlineSelling/pages/houseList/index.js 查看文件

@@ -61,7 +61,7 @@ export default class HouseList extends Component {
61 61
     consultShow: false,  // 置业顾问悬浮框显示隐藏
62 62
     noRecord: false,
63 63
     loading: true,
64
-    currentHot: 0,
64
+    dataType: 1,
65 65
   }
66 66
 
67 67
 
@@ -127,7 +127,7 @@ export default class HouseList extends Component {
127 127
       endPrice,
128 128
       apartmentId,
129 129
       pageNum: 1,
130
-      pageSize: 999,
130
+      pageSize: 9999,
131 131
     }
132 132
     queryHouseList(params).then(res => {
133 133
       this.setState({
@@ -393,13 +393,13 @@ export default class HouseList extends Component {
393 393
   }
394 394
 
395 395
   renderHouses() {
396
-    const { houseList,currentHot } = this.state
396
+    const { houseList,dataType } = this.state
397 397
 
398 398
     return (
399 399
       <ScrollView className="container" scrollY scrollWithAnimation>
400 400
         {
401 401
           houseList.map((item) => {
402
-            return <HouseGrid key={item.unitId} currentHot={currentHot} dataset={item} onRoomClick={this.handleRoomClick} />
402
+            return <HouseGrid key={item.unitId} showDataType={dataType} dataset={item} onRoomClick={this.handleRoomClick} />
403 403
           })
404 404
         }
405 405
       </ScrollView>
@@ -593,10 +593,7 @@ export default class HouseList extends Component {
593 593
     this.goto(`/pages/project/detail/index?id=${buildingId}`)
594 594
   }
595 595
   handleScreen(value) {
596
-    console.log(value,"valueffffffffffffffffffffffffffff")
597
-    this.setState({
598
-      currentHot: value,
599
-    })
596
+    this.setState({ dataType: value })
600 597
   }
601 598
 
602 599
   render() {
@@ -612,7 +609,7 @@ export default class HouseList extends Component {
612 609
       noRecord,
613 610
       loading,
614 611
       salesBatchDetail,
615
-      currentHot
612
+      dataType
616 613
     } = this.state
617 614
 
618 615
     if (loading) {
@@ -624,7 +621,7 @@ export default class HouseList extends Component {
624 621
     const showCircleBtn = posterData && posterData.qrcode
625 622
     console.log('==============>', posterData, showPoster, posterConfig)
626 623
 
627
-    const screenList = [{ title: '预选热度图', value: 0 }, { title: '认筹热度图', value: 1 }]
624
+    const screenList = [{ title: '预选热度图', value: 1 }, { title: '认筹热度图', value: 2 }]
628 625
     return (
629 626
       <Block>
630 627
         {conditionVisible && this.renderCondition()}
@@ -648,7 +645,7 @@ export default class HouseList extends Component {
648 645
 
649 646
                 <View className="screen-flex" >
650 647
                   {screenList.map(item => (
651
-                    <View key={item.value} onClick={() => this.handleScreen(item.value)} className={currentHot == item.value ? 'top-item active' : 'top-item'}>
648
+                    <View key={item.value} onClick={() => this.handleScreen(item.value)} className={dataType == item.value ? 'top-item active' : 'top-item'}>
652 649
                       {item.title}
653 650
                     </View>
654 651
                   ))}

+ 5
- 4
src/onlineSelling/pages/raiseMoney/index.js 查看文件

@@ -111,9 +111,11 @@ export default class raiseMoney extends Component {
111 111
   }
112 112
 
113 113
   gotoHouseSelect = (pageType) => {
114
+    const { raiseProfile } = this.state
115
+
114 116
     const url = pageType == 'all' ?
115
-      `/onlineSelling/pages/houseCart/index` :
116
-      `/onlineSelling/pages/addHouse/index`
117
+      `/onlineSelling/pages/houseCart/index?id=${raiseProfile.id}` :
118
+      `/onlineSelling/pages/addHouse/index?id=${raiseProfile.salesBatchId}`
117 119
 
118 120
     Taro.navigateTo({ url })
119 121
   }
@@ -156,8 +158,7 @@ export default class raiseMoney extends Component {
156 158
             <View key={item.houseId} >
157 159
               <RaiseCard type="raiseMoney" summary={item} onCancel={this.handleCancel} />
158 160
             </View>
159
-          )
160
-          )
161
+          ))
161 162
         }
162 163
         <View className="addhouse">从 <Text style="color:#F3B82E" onClick={this.gotoHouseSelect.bind(this, 'all')}>房源列表</Text> 中添加其他房源</View>
163 164
         <View className="addhouse">从 <Text style="color:#BB9C79" onClick={this.gotoHouseSelect.bind(this, 'select')}>预选记录</Text> 中添加其他房源</View>

+ 10
- 2
src/reducers/house.js 查看文件

@@ -5,6 +5,7 @@
5 5
  import {
6 6
    ADD_CART,
7 7
    SUB_CART,
8
+   FLUSH_TO_CART,
8 9
    ADD_CONSULTANT,
9 10
    CHOOSE_CONSULTANT,
10 11
    MY_PRESELECT_RECORD,
@@ -32,14 +33,21 @@ export default function(state = INITIAL_STATE, action) {
32 33
     case ADD_CART:
33 34
       return {
34 35
         ...state,
35
-        raiseCart: state.raiseCart.filter(x => x.houseId !== payload.houseId).concat(payload),
36
+        raiseCart: state.raiseCart.filter(x => x.houseId != payload.houseId).concat(payload),
36 37
       };
37 38
 
38 39
     // 取消临时选择
39 40
     case SUB_CART:
40 41
       return {
41 42
         ...state,
42
-        raiseCart: state.raiseCart.filter(x => x.houseId !== payload.houseId),
43
+        raiseCart: state.raiseCart.filter(x => x.houseId != payload.houseId),
44
+      };
45
+
46
+    //
47
+    case FLUSH_TO_CART:
48
+      return {
49
+        ...state,
50
+        raiseCart: payload,
43 51
       };
44 52
 
45 53
     case ADD_CONSULTANT: