Преглед изворни кода

Merge branch 'master' of http://git.ycjcjy.com/whole-estate/wxmini

zjxpcyc пре 6 година
родитељ
комит
03e7c06f76

+ 12
- 1
app.js Прегледај датотеку

@@ -2,6 +2,9 @@
2 2
 import fetch from '/utils/http'
3 3
 const $api = require('/config/api.js').$api
4 4
 
5
+const HttpSever = require('./utils/http.js').HttpSever;
6
+const $api = require('./config/api.js').$api;
7
+
5 8
 App({
6 9
   onLaunch: function() {
7 10
     let _self = this
@@ -48,6 +51,13 @@ App({
48 51
         }
49 52
       }
50 53
     })
54
+
55
+    HttpSever.Ajax({
56
+      url: $api.dict.list.url,
57
+      method: $api.dict.list.method,
58
+    }).then((data) => {
59
+      _self.globalData.Dict = data.data
60
+    })
51 61
   },
52 62
   globalData: {
53 63
     UserInfo: {
@@ -60,6 +70,7 @@ App({
60 70
       openid: '',
61 71
       avatar: '',
62 72
     },
63
-    ScreenBottomHeight: 0
73
+    ScreenBottomHeight: 0,
74
+    Dict: []
64 75
   }
65 76
 })

+ 10
- 0
config/api.js Прегледај датотеку

@@ -19,6 +19,12 @@ const $api = {
19 19
       url: `${BaseAPIURl}wx/user`
20 20
     }
21 21
   },
22
+  dict: {
23
+    list: {
24
+      methods: 'GET',
25
+      url: `${BaseAPIURl}/dict`
26
+    }
27
+  },
22 28
   banner: {
23 29
     list: {
24 30
       method: 'GET',
@@ -30,6 +36,10 @@ const $api = {
30 36
       method: 'GET',
31 37
       url: `${BaseAPIURl}wx/building/list`
32 38
     },
39
+    detail: {
40
+      methods: 'GET',
41
+      url: `${BaseAPIURl}/wx/buildingSelectId/:id`
42
+    }
33 43
   },
34 44
   dynamic: { // 项目
35 45
     list: { // 项目列表

+ 16
- 33
pages/AppointmentTime/index.js Прегледај датотеку

@@ -2,35 +2,32 @@
2 2
 //获取应用实例
3 3
 const app = getApp()
4 4
 
5
+const page = require('../../utils/page.js');
6
+const HttpSever = require('../../utils/http.js').HttpSever;
7
+const $api = require('../../config/api.js').$api;
8
+
5 9
 Page({
6 10
   onShow() {
7 11
     wx.setNavigationBarTitle({
8 12
       title: '填写预约信息'
9 13
     })
14
+    this.setData({
15
+      BuildingId: page.getCurrentPageOptions().id,
16
+      BuildingName: page.getCurrentPageOptions().name
17
+    })
10 18
   },
11 19
   data: {
12 20
     UserInfo: app.globalData.UserInfo, // 用户信息
13 21
     SubmitOff: true, // 提交判重开关
22
+    BuildingId: '',
23
+    BuildingName: '',
14 24
     FormData: { // 提交表单数据
15
-      EstateId: '', // 楼盘id
16 25
       AppointmentDate: '', // 预约时间戳
17 26
       Name: '', // 姓名
18 27
       PhoneNum: '', // 手机号
19 28
       Remark: '' // 备注
20 29
     },
21 30
     AppointmentDate: '', // 预约时间
22
-    EstateName: '', // 楼盘名称
23
-    EstateList: [{ // 楼盘列表数据
24
-      value: '示例楼盘A',
25
-      id: '1'
26
-    }, {
27
-      value: '示例楼盘B',
28
-      id: '2'
29
-    }, {
30
-      value: '示例楼盘C',
31
-      id: '3'
32
-    }],
33
-    TriggerSelectEstate: false, // 显隐楼盘选择器
34 31
     MinDate: new Date().getTime(),
35 32
     TriggerSelectAppointmentDate: false // 显隐预约时间选择器
36 33
   },
@@ -39,6 +36,12 @@ Page({
39 36
       this.setData({
40 37
         SubmitOff: false
41 38
       })
39
+      if (this.FormData)
40
+      HttpSever.Ajax({
41
+        url: $api.building.detail.url.replace(':id', id),
42
+        method: $api.building.detail.method,
43
+      }).then((data) => {})
44
+
42 45
     }
43 46
   },
44 47
   FormInput(e) { // 表单输入数据绑定
@@ -73,25 +76,5 @@ Page({
73 76
       MinDate: new Date().getTime(),
74 77
       TriggerSelectAppointmentDate: true
75 78
     })
76
-  },
77
-  SelectEstateConfirm(e) { // 确认选择楼盘
78
-    this.setData({
79
-      FormData: {
80
-        ...this.data.FormData,
81
-        EstateId: e.detail.value.id
82
-      },
83
-      EstateName: e.detail.value.value,
84
-      TriggerSelectEstate: false
85
-    })
86
-  },
87
-  SelectEstateCancel() { // 取消选择楼盘
88
-    this.setData({
89
-      TriggerSelectEstate: false
90
-    })
91
-  },
92
-  SelectEstate() { // 打开楼盘选择器
93
-    this.setData({
94
-      TriggerSelectEstate: true
95
-    })
96 79
   }
97 80
 })

+ 1
- 6
pages/AppointmentTime/index.wxml Прегледај датотеку

@@ -4,7 +4,7 @@
4 4
     <view class="flex-h">
5 5
       <text><text>*</text>具体楼盘:</text>
6 6
       <view class="flex-item"></view>
7
-      <text bindtap="SelectEstate">{{EstateName === '' ? '请选择楼盘' : EstateName}}</text>
7
+      <text>{{BuildingName}}</text>
8 8
       <image mode="widthFix" src="/assets/images/icon12.png" style="width: 22rpx;"></image>
9 9
     </view>
10 10
     <view class="flex-h">
@@ -38,11 +38,6 @@
38 38
   <view class="btn" bindtap="MakeAnAppointment">
39 39
     <text>预约</text>
40 40
   </view>
41
-  <view class="popup" hidden="{{!TriggerSelectEstate}}">
42
-    <view>
43
-      <van-picker show-toolbar columns="{{ EstateList }}" value-key="value" bind:cancel="SelectEstateCancel" bind:confirm="SelectEstateConfirm" />
44
-    </view>
45
-  </view>
46 41
   <view class="popup" hidden="{{!TriggerSelectAppointmentDate}}">
47 42
     <view>
48 43
       <van-datetime-picker min-date="{{MinDate}}" type="datetime" bind:cancel="SelectAppointmentDateCancel" bind:confirm="SelectAppointmentDateConfirm" />

+ 33
- 30
pages/EstateDetail/index.js Прегледај датотеку

@@ -2,48 +2,51 @@
2 2
 //获取应用实例
3 3
 const app = getApp()
4 4
 
5
+const page = require('../../utils/page.js');
6
+const HttpSever = require('../../utils/http.js').HttpSever;
7
+const $api = require('../../config/api.js').$api;
8
+
5 9
 Page({
6 10
   onShow() {
7 11
     wx.setNavigationBarTitle({
8 12
       title: '楼盘详情'
9 13
     })
10 14
   },
15
+  onLoad: function (options) {
16
+    const id = page.getCurrentPageOptions().id
17
+    const _that = this
18
+    HttpSever.Ajax({
19
+      url: $api.building.detail.url.replace(':id', id),
20
+      method: $api.building.detail.method,
21
+    }).then((data) => {
22
+      const dicts = app.globalData.Dict
23
+      const apart = data.data.buildingApartment.map(x => {
24
+        return {
25
+          ...x,
26
+          imgUrl: (x.buildingImgList[0] || {}).url,
27
+          marketStatus: (dicts.filter(d => d.id == x.marketStatus)[0] || {}).name
28
+        }
29
+      })
30
+      let propertyType = ''
31
+      data.data.propertyType.split(',').map(x => {
32
+        const f = dicts.filter(d => d.id == x)
33
+        if (f.length > 0) {
34
+          propertyType += (propertyType === '' ? '' : ',') + f[0].name
35
+        }
36
+      })
37
+      _that.setData({
38
+        EstateDetail: { ...data.data, propertyType: propertyType, buildingApartment: apart}
39
+      })
40
+    })
41
+  },
11 42
   data: {
12 43
     UserInfo: app.globalData.UserInfo,
13 44
     ScreenBottomHeight: app.globalData.ScreenBottomHeight,
14
-    EstateDetail: {
15
-      Name: '楼盘名称', // 楼盘名称
16
-      Price: '14000', // 均价
17
-      Remark: '备注', // 备注
18
-      ImgList: ['/assets/images/img5.jpg', '/assets/images/img5.jpg', '/assets/images/img5.jpg', '/assets/images/img5.jpg'], // banner
19
-      OpenDate: '2016-02-02', // 开盘日期
20
-      Address: '江苏省南京市某某路xx号', // 项目地址
21
-      Type: '叠墅', // 物业类型
22
-      News: '即将开放', // 最新动态
23
-      IsCollect: false, // 是否已收藏
24
-      PhoneNum: '', // 联系电话
25
-      Id: '', // 楼盘id
26
-      RoomTypeList: [{
27
-        Img: '/assets/images/img1.jpg',
28
-        Type: '商住',
29
-        AreaNum: '33',
30
-        State: '在售'
31
-      }, {
32
-        Img: '/assets/images/img1.jpg',
33
-        Type: '商住',
34
-        AreaNum: '33',
35
-        State: '在售'
36
-      }, {
37
-        Img: '/assets/images/img1.jpg',
38
-        Type: '商住',
39
-        AreaNum: '33',
40
-        State: '在售'
41
-      }] // 户型
42
-    }
45
+    EstateDetail: {}
43 46
   },
44 47
   MakeAnAppointment() { // 预约看房
45 48
     wx.navigateTo({
46
-      url: '/pages/AppointmentTime/index?id='
49
+      url: '/pages/AppointmentTime/index?id=' + this.data.EstateDetail.buildingId + '&name=' + this.data.EstateDetail.buildingName
47 50
     })
48 51
   },
49 52
   OpenPhone() { // 电话咨询

+ 15
- 15
pages/EstateDetail/index.wxml Прегледај датотеку

@@ -7,10 +7,10 @@
7 7
       <view class="banner">
8 8
         <view class="imgContent">
9 9
           <swiper autoplay="{{true}}" indicator-dots="{{true}}" indicator-color="#83837d" indicator-active-color="#e23838">
10
-            <block wx:for="{{EstateDetail.ImgList}}" wx:for-item="item" wx:for-index="index" wx:key="key">
10
+            <block wx:for="{{EstateDetail.buildingImg}}" wx:for-item="item" wx:for-index="index" wx:key="key">
11 11
               <swiper-item>
12 12
                 <view class="swiper-item">
13
-                  <image mode="aspectFill" src="{{item}}" class="centerLabel cover"></image>
13
+                  <image mode="aspectFill" src="{{item.url}}" class="centerLabel cover"></image>
14 14
                 </view>
15 15
               </swiper-item>
16 16
             </block>
@@ -19,10 +19,10 @@
19 19
         <view class="remark">
20 20
           <view class="centerLabel">
21 21
             <view class="flex-h">
22
-              <text class="name flex-item">{{EstateDetail.Name}}</text>
23
-              <text class="price">均价:{{EstateDetail.Price}}元/m²</text>
22
+              <text class="name flex-item">{{EstateDetail.buildingName}}</text>
23
+              <text class="price">均价:{{EstateDetail.price}}</text>
24 24
             </view>
25
-            <text>{{EstateDetail.Remark}}</text>
25
+            <text>别名:{{EstateDetail.name}}</text>
26 26
           </view>
27 27
         </view>
28 28
       </view>
@@ -33,36 +33,36 @@
33 33
         <view class="list">
34 34
           <view class="flex-h">
35 35
             <text>开盘时间</text>
36
-            <text class="flex-item">{{EstateDetail.OpenDate}}</text>
36
+            <text class="flex-item">{{EstateDetail.openingDate}}</text>
37 37
           </view>
38 38
           <view class="flex-h">
39 39
             <text>项目地址</text>
40
-            <text class="flex-item">{{EstateDetail.Address}}</text>
40
+            <text class="flex-item">{{EstateDetail.address}}</text>
41 41
           </view>
42 42
           <view class="flex-h">
43 43
             <text>物业类型</text>
44
-            <text class="flex-item">{{EstateDetail.Type}}</text>
44
+            <text class="flex-item">{{EstateDetail.propertyType}}</text>
45 45
           </view>
46 46
           <view class="flex-h">
47 47
             <text>最新动态</text>
48
-            <text class="flex-item">{{EstateDetail.News}}</text>
48
+            <text class="flex-item">{{EstateDetail.dynamic}}</text>
49 49
           </view>
50 50
         </view>
51 51
       </view>
52 52
 
53 53
       <!-- 户型 -->
54 54
       <view class="roomType subContent">
55
-        <text class="title">户型({{EstateDetail.RoomTypeList.length}})</text>
55
+        <text class="title">户型({{EstateDetail.buildingApartment.length}})</text>
56 56
         <view class="list">
57
-          <view class="item" wx:for="{{EstateDetail.RoomTypeList}}" wx:for-item="item" wx:for-index="idx" wx:key="key">
57
+          <view class="item" wx:for="{{EstateDetail.buildingApartment}}" wx:for-item="item" wx:for-index="idx" wx:key="key">
58 58
             <view class="img">
59
-              <image mode="aspectFill" src="{{item.Img}}" class="centerLabel cover"></image>
59
+              <image mode="aspectFill" src="{{item.imgUrl}}" class="centerLabel cover"></image>
60 60
             </view>
61 61
             <view class="info">
62
-              <text>{{item.Type}}</text>
63
-              <text>{{item.AreaNum}}m²</text>
62
+              <text>{{item.apartmentName}}</text>
63
+              <text>{{item.remark}}</text>
64 64
             </view>
65
-            <text>{{item.State}}</text>
65
+            <text>{{item.marketStatus}}</text>
66 66
           </view>
67 67
         </view>
68 68
       </view>

+ 10
- 24
pages/components/Estate/index.js Прегледај датотеку

@@ -11,25 +11,7 @@ Component({
11 11
   properties: {},
12 12
   data: {
13 13
     UserInfo: app.globalData.UserInfo,
14
-    EstateList: [{
15
-      Name: '示例数据',
16
-      Address: '江北 白马路',
17
-      Distance: '21',
18
-      Price: '1.8',
19
-      Img: '/assets/images/img1.jpg'
20
-    }, {
21
-      Name: '示例数据',
22
-      Address: '江北 白马路',
23
-      Distance: '21',
24
-      Price: '1.8',
25
-      Img: '/assets/images/img1.jpg'
26
-    }, {
27
-      Name: '示例数据',
28
-      Address: '江北 白马路',
29
-      Distance: '21',
30
-      Price: '1.8',
31
-      Img: '/assets/images/img1.jpg'
32
-    }]
14
+    EstateList: []
33 15
   },
34 16
   lifetimes: {},
35 17
   ready: function() {
@@ -53,9 +35,9 @@ Component({
53 35
     show: function() {},
54 36
   },
55 37
   methods: {
56
-    ListTap() { // 跳转楼盘详情
38
+    ListTap(e) { // 跳转楼盘详情
57 39
       wx.navigateTo({
58
-        url: '/pages/EstateDetail/index?id='
40
+        url: '/pages/EstateDetail/index?id=' + e.currentTarget.dataset.id
59 41
       })
60 42
     },
61 43
     GetGreatCircleDistance(lat1, lng1, lat2, lng2) {
@@ -71,27 +53,31 @@ Component({
71 53
       var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)))
72 54
       s = s * EARTH_RADIUS
73 55
       s = Math.round(s * 10000) / 10000.0
74
-      console.log(s)
75
-      return s
56
+      return s/100
76 57
     },
77 58
     ShowLocation() {
78 59
       const _that = this
79 60
       wx.getLocation({
80 61
         type: 'wgs84',
81 62
         success(res) {
63
+<<<<<<< HEAD
64
+          HttpSever.Ajax({
65
+=======
82 66
           console.log(res)
83 67
           fetch({
68
+>>>>>>> 02bbb13da6392818f573d7fc66c72524bffeb347
84 69
             url: $api.building.list.url,
85 70
             method: $api.building.list.method,
86 71
           }).then((data) => {
87 72
             const eslist = data.data.map(x => {
88 73
               const distance = parseInt(_that.GetGreatCircleDistance(res.latitude, res.longitude, x.coordinate.split(',')[0], x.coordinate.split(',')[1] || res.longitude))
89 74
               return {
75
+                buildingId: x.buildingId,
90 76
                 buildingName: x.buildingName,
91 77
                 price: x.price,
92 78
                 address: x.address,
93 79
                 buildingImg: (x.buildingImg[0] || {}).url,
94
-                distance: distance / 1000
80
+                distance: distance / 10
95 81
               }
96 82
             })
97 83
             _that.setData({

+ 1
- 1
pages/components/Estate/index.wxml Прегледај датотеку

@@ -8,7 +8,7 @@
8 8
   <view class="EstateList">
9 9
     <text>附近楼盘</text>
10 10
     <view class="list">
11
-      <view wx:for="{{EstateList}}" wx:for-item="item" wx:for-index="index" wx:key="key" bindtap="ListTap">
11
+      <view wx:for="{{EstateList}}" wx:for-item="item" wx:for-index="index" wx:key="key" data-id="{{item.buildingId}}" bindtap="ListTap">
12 12
         <image mode="aspectFill" src="{{item.buildingImg}}" class="centerLabel cover"></image>
13 13
         <text class="price">均价:{{item.price}}</text>
14 14
         <text class="name">{{item.buildingName}}</text>

+ 27
- 0
utils/http.js Прегледај датотеку

@@ -1,5 +1,31 @@
1 1
 import { apiCode } from '../config/code'
2 2
 
3
+<<<<<<< HEAD
4
+$HttpSever.prototype = {
5
+  /**
6
+   *  通用请求方法
7
+   * 
8
+   * @param {any} [config={}] 
9
+   * @returns 
10
+   */
11
+  Ajax(config = {}) {
12
+    return new Promise((resolve, reject) => {
13
+      wx.request({
14
+        url: config.url,
15
+        method: config.method,
16
+        data: {
17
+          ...config.data
18
+        },
19
+        success(res) {
20
+          if (res.statusCode && res.statusCode === apiCode.common.successCode) {
21
+            resolve(res.data)
22
+          } else {
23
+            resolve(res.data.message + "失败")
24
+          }
25
+        },
26
+        error(msg) {
27
+          reject(msg)
28
+=======
3 29
 export default (config = {}) => {
4 30
   return new Promise((resolve, reject) => {
5 31
     wx.request({
@@ -14,6 +40,7 @@ export default (config = {}) => {
14 40
           resolve(res.data)
15 41
         } else {
16 42
           resolve(res.data.message + "失败")
43
+>>>>>>> 02bbb13da6392818f573d7fc66c72524bffeb347
17 44
         }
18 45
       },
19 46
       error(msg) {

+ 39
- 0
utils/page.js Прегледај датотеку

@@ -0,0 +1,39 @@
1
+/*获取当前页url*/
2
+function getCurrentPageUrl() {
3
+  var pages = getCurrentPages()    //获取加载的页面
4
+  var currentPage = pages[pages.length - 1]    //获取当前页面的对象
5
+  var url = currentPage.route    //当前页面url
6
+  return url
7
+}
8
+
9
+/*获取当前页参数*/
10
+function getCurrentPageOptions() {
11
+  var pages = getCurrentPages()    //获取加载的页面
12
+  var currentPage = pages[pages.length - 1]    //获取当前页面的对象
13
+  var options = currentPage.options    //当前页面所有参数
14
+  return options
15
+}
16
+
17
+/*获取当前页带参数的url*/
18
+function getCurrentPageUrlWithArgs() {
19
+  var pages = getCurrentPages()    //获取加载的页面
20
+  var currentPage = pages[pages.length - 1]    //获取当前页面的对象
21
+  var url = currentPage.route    //当前页面url
22
+  var options = currentPage.options    //如果要获取url中所带的参数可以查看options
23
+
24
+  //拼接url的参数
25
+  var urlWithArgs = url + '?'
26
+  for (var key in options) {
27
+    var value = options[key]
28
+    urlWithArgs += key + '=' + value + '&'
29
+  }
30
+  urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
31
+
32
+  return urlWithArgs
33
+} 
34
+
35
+module.exports = {
36
+  getCurrentPageUrl: getCurrentPageUrl,
37
+  getCurrentPageUrlWithArgs: getCurrentPageUrlWithArgs,
38
+  getCurrentPageOptions: getCurrentPageOptions
39
+}