Bläddra i källkod

feat:更新代码

jinx 4 år sedan
förälder
incheckning
f3b8df72e7

+ 16 - 18
app.json

@@ -2,12 +2,13 @@
   "pages": [
     "pages/index/index",
     "pages/store/store",
+    "pages/searchRoom/searchRoom",
     "pages/city/city",
     "pages/user/user",
     "pages/discover/discover",
+    "pages/webview/index",
     "pages/ncategory/category",
     "pages/ucenter/index/index",
-    "pages/searchRoom/searchRoom",
     "pages/catalog/catalog",
     "pages/coupon/coupon",
     "pages/offline/offline",
@@ -61,28 +62,25 @@
     "navigationBarTextStyle": "black",
     "enablePullDownRefresh": true
   },
-  "subpackages": [
-    {
-      "root": "dataReport",
-      "pages": [
-        "pages/data-report/data-report"
-      ],
-      "plugins": {
-        "ykfchat": {
-          "version": "2.0.7",
-          "provider": "wx1fdc8c9f3a3a05e4"
-        }
-      },
-      "independent": false
-    }
-  ],
+  "subpackages": [{
+    "root": "dataReport",
+    "pages": [
+      "pages/data-report/data-report"
+    ],
+    "plugins": {
+      "ykfchat": {
+        "version": "2.0.7",
+        "provider": "wx1fdc8c9f3a3a05e4"
+      }
+    },
+    "independent": false
+  }],
   "tabBar": {
     "backgroundColor": "#fff",
     "borderStyle": "white",
     "selectedColor": "#333333",
     "color": "#AFAFAF",
-    "list": [
-      {
+    "list": [{
         "pagePath": "pages/index/index",
         "iconPath": "static/images/icon/home_normal@2x.png",
         "selectedIconPath": "static/images/icon/home_selected@2x.png",

+ 17 - 2
component/roomItem/roomItem.js

@@ -6,7 +6,9 @@ Component({
   properties: {
     room: Object
   },
-
+  options: {
+    addGlobalClass: true,
+  },
   /**
    * 组件的初始数据
    */
@@ -18,6 +20,19 @@ Component({
    * 组件的方法列表
    */
   methods: {
+    gotoWV(e) {
+      let {
+        id
+      } = e.currentTarget.dataset
+      console.log(id)
+      this.triggerEvent('gotoWV', id)
+
+
+      // wx.navigateTo({
+      //   url: `/pages/webview/index?id=${id}`,
+      //   // url: `/pages/share/share?id=${id}`,
+      // })
+    }
     // toDetail () {
     //   getApp().autoSubcrebe && getApp().autoSubcrebe()
     //   getApp().globalData.lastHouse = this.properties.house
@@ -27,4 +42,4 @@ Component({
     //   })
     // }
   }
-})
+})

+ 10 - 10
component/roomItem/roomItem.wxml

@@ -1,24 +1,24 @@
-<view class="tj_listItem">
+<view class="tj_listItem" data-id="{{room.id}}" bindtap="gotoWV">
 				<view class="tj_listItemCover">
-					<image mode="heightFix"
-						src="https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg"></image>
+					<image mode="aspectFill"
+						src="{{room.appListPicUrl}}"></image>
 				</view>
 				<view class="tj_listItemMsg">
 					<p class="tj_listItemTitle">
-						格力海岸第三期3室2厅如果这个名字超级长就这样
+					{{room.name}}
 					</p>
 					<view class="tj_listItemTip">
 						<view>
-							<text>香洲区</text>
-							<text> | </text>
+							<text>{{room.address}}</text>
+							<!-- <text> | </text> -->
 						</view>
-						<view>
+						<!-- <view>
 							<text>唐家湾镇</text>
 							<text> | </text>
 						</view>
 						<view>
 							<text>格力海岸</text>
-						</view>
+						</view> -->
 					</view>
 
 
@@ -38,8 +38,8 @@
 
 
 					<view class="tj_listItemPrice">
-							<text class="unitPrice">平均43,388元/平</text>
-							<text class="totalPrice">525万</text>
+							<text class="unitPrice">平均{{room.averagePrice}}元/平</text>
+							<text class="totalPrice">{{room.retailPrice}}万</text>
 
 					</view>
 				</view>

+ 7 - 0
component/roomItem/roomItem.wxss

@@ -5,8 +5,10 @@
   justify-content: flex-start;
   padding: 20rpx 0;
   border-bottom: 2rpx solid #EDEDED;
+  background: #fff;
 }
 
+
 .tj_listItem .tj_listItemCover {
   width: 210rpx;
   height: 210rpx;
@@ -46,6 +48,11 @@
 .tj_listItemMsg .tj_listItemTip text {
   font-size: 20rpx;
   color: #666;
+  overflow: hidden; 
+  text-overflow: ellipsis; 
+  display: -webkit-box;
+  -webkit-line-clamp: 1; 
+  -webkit-box-orient: vertical;
 }
 
 .tj_listItemMsg .tj_listItemTag {

+ 8 - 8
component/storeItem/storeItem.js

@@ -18,13 +18,13 @@ Component({
    * 组件的方法列表
    */
   methods: {
-    // toDetail () {
-    //   getApp().autoSubcrebe && getApp().autoSubcrebe()
-    //   getApp().globalData.lastHouse = this.properties.house
-    //   console.log(this.properties.house)
-    //   wx.navigateTo({
-    //     url: `/pages/detail/detail?house_id=${this.properties.house.house_id}`
-    //   })
-    // }
+    gotoWV(e) {
+      let {
+       id
+     } = e.currentTarget.dataset
+     console.log(id)
+     this.triggerEvent('gotoWV',id)
+    
+   }
   }
 })

+ 4 - 4
component/storeItem/storeItem.wxml

@@ -1,11 +1,11 @@
 <!--component/storeItem/storeItem.wxml-->
-<view class="storeBox">
+<view class="storeBox" data-id="{{store.id}}" bindtap="gotoWV">
   <view class="storeCover">
-    <image mode="widthFix"
-      src="https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg"></image>
+    <image mode="aspectFill"
+      src="{{store.appListPicUrl}}"></image>
   </view>
   <view class="storeTitle">
-    Adidas阿迪达斯富华里官方旗舰店Adidas阿迪达斯富华里官方旗舰店
+    {{store.name}}
   </view>
   <view class="storeView">
     6.8w 人浏览过

+ 5 - 0
component/storeItem/storeItem.wxss

@@ -12,6 +12,11 @@
   overflow: hidden;
 }
 
+.storeBox .storeCover image {
+  width: 334rpx;
+  /* height: 334rpx; */
+}
+
 .storeTitle {
   padding: 0 20rpx;
   box-sizing: border-box;

+ 2 - 1
config.js

@@ -1,6 +1,7 @@
 const dev = {
   socketHost: 'wss://testshop.4dkankan.com',
-  requestHost: 'https://testzhifangbao.4dage.com',
+  // requestHost: 'https://testzhifangbao.4dage.com',
+  requestHost: 'https://plaza.4dkankan.com',
   // 容器地址
   // viewHost: 'http://192.168.0.112:8081',
   // 发现地址

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 6
pages/city/json/cites.js


+ 122 - 64
pages/index/index.js

@@ -11,6 +11,7 @@ Router({
   data: {
     // 头部导航栏的高度
     statusBarHeight: app.globalData.statusBarHeight,
+    hasData: true,
     classifyList: [{
         type: 0,
         title: '新房',
@@ -38,7 +39,7 @@ Router({
         icon: "../../static/images/icon/community@2x.png",
       },
     ],
-    type:'',
+    type: '',
     middleType: 11,
     // type :-1:所有;0:新房;1:二手房;2:公寓;3:民宿;4:社区
     // 11:新上房源;12:热门房源;13:热门企业;
@@ -57,16 +58,18 @@ Router({
         title: '热门企业'
       },
     ],
-    middleList: [{
-      url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
-      title: '华发水岸1'
-    }, {
-      url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
-      title: '华发水岸1'
-    }, {
-      url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
-      title: '华发水岸1'
-    }, ],
+    middleList: {},
+    middleEmptyLength: 0,
+    // middleList: [{
+    //   url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
+    //   title: '华发水岸1'
+    // }, {
+    //   url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
+    //   title: '华发水岸1'
+    // }, {
+    //   url: 'https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg',
+    //   title: '华发水岸1'
+    // }, ],
     roomTabList: [{
         type: 0,
         title: '新房'
@@ -81,13 +84,14 @@ Router({
       },
     ],
     roomType: 0,
+    roomList: [],
     city: app.globalData.city,
     fetcherData: {
-      type:'',
-      city: '',
-      page_num: 1,
-      page_size: 20,
-      name:''
+      type: '',
+      address: '',
+      page: 1,
+      size: 20,
+      name: ''
     }
 
   },
@@ -97,16 +101,33 @@ Router({
       path: '/pages/index/index'
     }
   },
-
+  middle_gotoWV: function (event) {
+    let {
+      id
+    } = event.currentTarget.dataset
+    console.log(id)
+    wx.navigateTo({
+      url: `/pages/webview/index?id=${id}`,
+    })
+  },
+  gotoWV: function (event) {
+    let id = event.detail
+    wx.navigateTo({
+      url: `/pages/webview/index?id=${id}`,
+    })
+  },
   onPullDownRefresh() {
-    // this.setData({
-    //   brandList: this.data.brandList.slice(0, 10),
-    //   currentPage: 1
-    // });
-    // this.getBrandList(1, false, true);
+    this.setData({
+      roomList: [],
+      'fetcherData.page': 1,
+      hasData: true
+    });
+    this.getRoomList()
+
     app.onPullDownRefresh()
   },
   onReachBottom: function () {
+    this.getRoomList()
     console.log('onReachBottom')
   },
   inputFocus: function () {},
@@ -117,52 +138,79 @@ Router({
     })
 
   },
-  chengeRoomType(e) {
+  changeRoomType(e) {
     let type = e.currentTarget.dataset.type
     this.setData({
-      roomType: type
+      roomType: type,
+      roomList: [],
+      'fetcherData.page': 1,
+      hasData: true
     })
+    this.getRoomList()
   },
 
-  getRoomList(){
-    this.setData({
-      'fetcherData.type':this.data.roomType,
-    })
-    if(app.globalData.city=='全国'){
-      this.setData({
-        'fetcherData.city':'',
-      })
-    
-    }else{
+  getRoomList() {
+    if (this.data.hasData) {
       this.setData({
-        'fetcherData.city':app.globalData.city,
+        'fetcherData.type': this.data.roomType,
       })
-    }
-    util.request(api.OrderList, this.data.fetcherData).then( (res)=> {
-      console.log(res)
-      if (res.errno === 0) {
-      
+      if (app.globalData.city == '全国') {
+        this.setData({
+          'fetcherData.address': '',
+        })
+
+      } else {
+        this.setData({
+          'fetcherData.address': app.globalData.city,
+        })
       }
-    });
+
+      util.request(api.BrandList, this.data.fetcherData).then((res) => {
+        console.log(res)
+        if (res.errno === 0) {
+          if (res.data.data.length != 0) {
+            this.setData({
+              roomList: this.data.roomList.concat(res.data.data),
+              'fetcherData.page': this.data.fetcherData.page + 1
+            })
+
+          } else {
+            this.setData({
+              hasData: false
+            })
+          }
+        }
+      });
+    } else {
+      console.log('没有更多数据')
+    }
+
   },
-  getMiddleList(){
-    this.setData({
-      'fetcherData.type':this.data.middleType,
-    })
-    if(app.globalData.city=='全国'){
-      this.setData({
-        'fetcherData.city':'',
-      })
-    
-    }else{
-      this.setData({
-        'fetcherData.city':app.globalData.city,
-      })
+  getMiddleList(type) {
+    let address
+    if (app.globalData.city == '全国') {
+      address = ''
+    } else {
+      address = app.globalData.city
     }
-    util.request(api.OrderList, this.data.fetcherData).then( (res)=> {
+    util.request(api.BrandList, {
+      type: type,
+      address: address,
+      page: 1,
+      size: 3,
+      name: '',
+    }).then((res) => {
       console.log(res)
       if (res.errno === 0) {
-      
+        if (res.data.data.length == 0) {
+          this.setData({
+            middleEmptyLength: this.data.middleEmptyLength + 1
+          })
+        }
+        let value = `middleList.${type}`
+        this.setData({
+          [value]: res.data.data
+        })
       }
     });
   },
@@ -173,13 +221,21 @@ Router({
     })
   },
   toSearch(e) {
-    var id = e.currentTarget.dataset.id
+    var type = e.currentTarget.dataset.type
+    console.log(type)
     wx.navigateTo({
-      url: `/pages/searchRoom/searchRoom?id=` + id
+      url: `/pages/searchRoom/searchRoom?type=` + type
     })
   },
+
   onLoad: async function (options) {
 
+    app.checkNetStatu();
+    // 页面渲染完成
+    this.getRoomList()
+    for (let i = 0; i < this.data.middleTabList.length; i++) {
+      this.getMiddleList(this.data.middleTabList[i].type)
+    }
   },
 
 
@@ -187,22 +243,24 @@ Router({
 
 
   onReady: function () {
-    // 页面渲染完成
-    this.getRoomList()
-    this.getMiddleList()
+    console.log(2)
+
   },
 
   onShow: function (options) {
-  
-    console.log(app.globalData.city)
+    console.log(3)
+
     // 页面显示
     let city = app.globalData.city
     if (city != this.data.city) {
       this.setData({
         'city': app.globalData.city,
+        middleEmptyLength: 0
       })
       this.getRoomList()
-      this.getMiddleList()
+      for (let i = 0; i < this.data.middleTabList.length; i++) {
+        this.getMiddleList(this.data.middleTabList[i].type)
+      }
     }
 
 

+ 21 - 14
pages/index/index.wxml

@@ -11,7 +11,8 @@
 						</view>
 
 					</view>
-					<input placeholder='请输入VR场景名称' placeholder-class='none'
+
+					<input disabled="true" placeholder='请输入VR场景名称' data-type="-1" bindtap="toSearch" placeholder-class='none'
 						placeholder-style='color:#b3b3b3;font-size:22rpx;'></input>
 				</view>
 			</view>
@@ -24,8 +25,7 @@
 	<!-- 头图 -->
 	<view class="banner">
 		<view class="headerImage">
-			<image mode="widthFix"
-				src="https://m4.publicimg.browser.qq.com/publicimg/pcqb/ewtab_yunying/477_266_datu_20210802.jpg"></image>
+			<image mode="widthFix" src="../../static/images/icon/banner.png"></image>
 		</view>
 	</view>
 
@@ -33,7 +33,7 @@
 	<!-- 分类 -->
 	<view class="fl_content">
 		<view class="fl_list">
-			<view class="fl_item" wx:for="{{classifyList}}" data-id='{{item.id}}' bindtap="toSearch">
+			<view class="fl_item" wx:for="{{classifyList}}" data-type='{{item.type}}' bindtap="toSearch">
 				<image wx:if='{{item.icon}}' src="{{item.icon}}"></image>
 				<text class="fl_name">{{item.title}}</text>
 			</view>
@@ -43,20 +43,21 @@
 	<!-- 中间tab -->
 	<view>
 		<view class="middleTab">
-			<view class="middletabContent">
-				<view class="middleTabItem {{middleType==item.type?'active':''}}" data-type="{{item.type}}"
+			<view class="middletabContent {{middleEmptyLength==middleTabList.length?'none':''}}">
+				<view wx:if="{{middleList[item.type].length>0}}" class="middleTabItem {{middleType==item.type?'active':''}}" data-type="{{item.type}}"
 					bindtap="changeMiddleTab" wx:for="{{middleTabList}}">
 					<text>{{item.title}}</text>
 				</view>
 			</view>
 		</view>
 
-		<view class="middleList">
-			<view class="middleList_item" wx:for="{{middleList}}">
+		<view class="middleList" wx:for="{{middleTabList}}" wx:for-item="i" wx:if="{{middleType==i.type && middleList[i.type].length>0 }}">
+			<view class="middleList_item" bindtap="middle_gotoWV" data-id="{{j.id}}" wx:for="{{middleList[i.type]}}" wx:for-item="j">
 				<view class="middleList_cover">
-					<image mode="heightFix" src="{{item.url}}"></image>
+					<image mode="heightFix" src="{{j.appListPicUrl}}"></image>
 				</view>
-				<text class="middleList_title">{{item.title}}</text>
+				<text class="middleList_title">{{j.name}}</text>
+				{{item.type}}
 			</view>
 		</view>
 	</view>
@@ -66,18 +67,24 @@
 		<view class="tj_header">
 			<view class="tj_title">为您推荐</view>
 			<view class="tj_tabbar">
-				<view class="tj_tabItem {{roomType==item.type?'active':''}}" 	bindtap="chengeRoomType" data-type="{{item.type}}" wx:for="{{roomTabList}}">
+				<view class="tj_tabItem {{roomType==item.type?'active':''}}" bindtap="changeRoomType" data-type="{{item.type}}"
+					wx:for="{{roomTabList}}">
 					<text>{{item.title}}</text>
 				</view>
 
 			</view>
 		</view>
 
-		<view class="tj_list">
-			<view wx:for="{{10}}" wx:key class="house-list">
-				<roomItem house="{{item}}"></roomItem>
+		<view class="tj_list" wx:if="{{roomList.length!=0}}">
+			<view wx:for="{{roomList}}" wx:key class="house-list">
+				<roomItem room="{{item}}" bindgotoWV="gotoWV"></roomItem>
 			</view>
 		</view>
+
+		<view class="unbrand" wx:else>
+			<image src="/static/images/img_nodata@2x.png"></image>
+			<view class="text">暂无相关数据</view>
+		</view>
 	</view>
 
 

+ 34 - 5
pages/index/index.wxss

@@ -86,7 +86,7 @@
   width: 100%;
   height: 58rpx;
   background: #eeeeee;
-  font-size: 22rpx;
+  font-size: 24rpx;
   padding: 0 12rpx;
   box-sizing: border-box;
 }
@@ -185,17 +185,26 @@
   border-bottom: 2rpx solid #EDEDED;
   display: flex;
   align-items: center;
-  justify-content: center;
+  justify-content: flex-start;
+  text-align: center;
+}
+.none{
+  border-bottom: 2rpx solid transparent;
 }
 
 .middletabContent .middleTabItem {
-  margin-right: 100rpx;
-  color: #999;
-  font-size: 32rpx;
+  /* margin-right: 100rpx; */
+  width: 33.3%;
   padding-bottom: 16rpx;
   position: relative;
 }
 
+.middletabContent .middleTabItem text {
+  font-weight: bold;
+  color: #999;
+  font-size: 32rpx;
+}
+
 .middletabContent .middleTabItem.active::after {
   content: '';
   position: absolute;
@@ -270,6 +279,7 @@
 .tj_header .tj_title {
   color: #333333;
   font-size: 32rpx;
+  font-weight: bold;
 }
 
 .tj_header .tj_tabbar {
@@ -285,6 +295,7 @@
 .tj_tabItem text {
   font-size: 24rpx;
   color: #999;
+  font-weight: bold;
 }
 
 .tj_header .tj_tabbar .tj_tabItem.active text {
@@ -420,4 +431,22 @@
   font-size: 28rpx;
   color: #0075DC;
   font-weight: bold;
+}
+
+.unbrand {
+  margin-top: 80rpx;
+  text-align: center;
+  margin-bottom: 50rpx;
+}
+
+.unbrand image {
+  display: inline-block;
+  width: 250rpx;
+  height: 274rpx;
+}
+
+.unbrand .text {
+  color: #666C7D;
+  font-size: 30rpx;
+  margin-top: 40rpx;
 }

+ 82 - 4
pages/searchRoom/searchRoom.js

@@ -1,4 +1,7 @@
 // pages/searchRoom/searchRoom.js
+const util = require('../../utils/util.js');
+const api = require('../../config/api.js');
+const app = getApp()
 Page({
 
   /**
@@ -6,13 +9,90 @@ Page({
    */
   data: {
 
+    searchKey: '',
+    roomList: [],
+    storeList: [],
+    isSearch: false,
+    fetcherData: {
+      type: null,
+      address: app.globalData.city,
+      page: 1,
+      size: 100,
+      name: ''
+    }
+  },
+  gotoWV: function (event) {
+    let id = event.detail
+    wx.navigateTo({
+      url: `/pages/webview/index?id=${id}`,
+    })
+  },
+  inputChange(e) {
+    this.setData({
+      'fetcherData.name': e.detail.value,
+    });
+  },
+  search() {
+    if (this.data.fetcherData.name != '') {
+      // console.log(this.data.searchKey)
+      this.setData({
+        isSearch: true
+      })
+      this.getRoomList()
+    } else {
+      wx.showToast({
+        title: '请输入VR场景名称',
+        icon: 'none'
+      })
+
+    }
+
   },
 
+  getRoomList() {
+    if (this.data.fetcherData.type == '21') { //商家
+      this.setData({
+        'fetcherData.address': '',
+      })
+    } else {
+      if (app.globalData.city == '全国') {
+        this.setData({
+          'fetcherData.address': '',
+        })
+      } else {
+        this.setData({
+          'fetcherData.address': app.globalData.city,
+        })
+      }
+    }
+
+    util.request(api.BrandList, this.data.fetcherData).then((res) => {
+      console.log(res)
+      if (res.errno === 0) {
+        if (this.data.fetcherData.type == '21') {
+        
+          this.setData({
+            storeList: res.data.data,
+          })
+        } else {
+        
+          this.setData({
+            roomList: res.data.data,
+          })
+        }
+
+
+      }
+    });
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
-
+    getApp().checkNetStatu();
+    this.setData({
+      'fetcherData.type': options.type || 21
+    })
   },
 
   /**
@@ -53,9 +133,7 @@ Page({
   /**
    * 页面上拉触底事件的处理函数
    */
-  onReachBottom: function () {
-
-  },
+  onReachBottom: function () {},
 
   /**
    * 用户点击右上角分享

+ 4 - 1
pages/searchRoom/searchRoom.json

@@ -1,5 +1,8 @@
 {
+  "navigationBarTitleText": "搜索",
+  "enablePullDownRefresh": false,
   "usingComponents": {
-    "roomItem": "../../component/roomItem/roomItem"
+    "roomItem": "../../component/roomItem/roomItem",
+    "storeItem": "../../component/storeItem/storeItem"
   }
 }

+ 21 - 6
pages/searchRoom/searchRoom.wxml

@@ -2,18 +2,33 @@
   <view class="storeContent">
     <view class="storeSearch">
       <image src="../../static/images/icon/search@2x.png"></image>
-      <input type="text" placeholder="请输入VR场景名称" placeholder-class="placeholderStyle" />
+      <input focus="true" bindinput="inputChange" type="text" placeholder="请输入VR场景名称"
+        placeholder-class="placeholderStyle" />
     </view>
-    <view class="searchBtn">搜索</view>
+    <view class="searchBtn" bindtap="search">搜索</view>
   </view>
-  <view style="height: 64rpx;"></view>
+  <view style="height: 74rpx;"></view>
   <view class="resulst">
-    <view wx:for="{{10}}" wx:key class="house-list">
-      <roomItem house="{{item}}"></roomItem>
+
+
+
+
+    <view wx:if="{{fetcherData.type=='21'}}" class="storeList">
+      <view wx:for="{{storeList}}">
+        <storeItem store="{{item}}"  bindgotoWV="gotoWV"></storeItem>
+      </view>
     </view>
+    <view wx:else>
+      <view wx:for="{{roomList}}"  wx:key class="house-list">
+        <roomItem room="{{item}}"  bindgotoWV="gotoWV"></roomItem>
+      </view>
+    </view>
+
+
 
   </view>
-  <view class="unbrand">
+  <view class="unbrand"
+    wx:if="{{fetcherData.type=='21' && isSearch&& storeList.length==0 || fetcherData.type!='21' && isSearch&& roomList.length==0 }}">
     <image src="/static/images/img_nodata@2x.png"></image>
     <view class="text">暂无相关数据</view>
   </view>

+ 32 - 1
pages/searchRoom/searchRoom.wxss

@@ -45,8 +45,9 @@
   width: 60rpx;
 }
 .resulst{
-  padding: 10rpx 32rpx;
+  padding: 10rpx 32rpx 0;
   box-sizing: border-box;
+  background: #fff;
 }
 
 
@@ -65,4 +66,34 @@
   color: #666C7D;
   font-size: 30rpx;
   margin-top: 40rpx;
+}
+
+.storeList {
+  width: 100%;
+  /* padding: 0 32rpx; */
+  box-sizing: border-box;
+  /* display: flex;
+  align-items: center;
+  justify-content: center; */
+  margin-top: 20rpx;
+  overflow: hidden;
+}
+
+.storeList>view {
+  overflow: hidden;
+  width: 334rpx;
+  float: left;
+}
+
+.storeList>view:nth-of-type(odd){
+  margin-right: 18rpx;
+}
+
+page{
+  background: #F6F6F6;
+  width: 100%;
+  height: 100%;
+}
+.house-list:last-of-type roomItem .tj_listItem{
+  border-bottom: 2rpx solid transparent;
 }

+ 78 - 10
pages/sence/sence.js

@@ -1,29 +1,101 @@
 // pages/sence/sence.js
 var util = require('./../../utils/util.js');
 var api = require('./../../config/api.js');
+const app = getApp()
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
+    roomList: [],
+    hasData: true,
+    fetcherData: {
+      type: null,
+      address: '',
+      page: 1,
+      size: 20,
+      name: ''
+    }
+  },
+  inputChange(e) {
+    this.setData({
+      'fetcherData.name': e.detail.value,
+    });
+  },
+  search() {
+    if (this.data.fetcherData.name != '') {
+      // console.log(this.data.searchKey)
+      this.searchRoomList()
+    } else {
+      wx.showToast({
+        title: '请输入VR场景名称',
+        icon: 'none'
+      })
+
+    }
 
   },
+  getRoomList() {
+    if (this.data.hasData) {
+      util.request(api.BrandList, this.data.fetcherData).then((res) => {
+        console.log(res)
+        if (res.errno === 0) {
+          if (res.data.data.length != 0) {
+            this.setData({
+              roomList: this.data.roomList.concat(res.data.data),
+              'fetcherData.page': this.data.fetcherData.page + 1
+            })
+
+          } else {
+            this.setData({
+              hasData: false
+            })
+          }
+        }
+      });
+    } else {
+      console.log('没有更多数据')
+    }
+
+  },
+  searchRoomList() {
+    util.request(api.BrandList, this.data.fetcherData).then((res) => {
+      console.log(res)
+      if (res.errno === 0) {
+        this.setData({
+          roomList: res.data.data,
+        })
 
+      }
+    });
+  },
+  gotoWV: function (event) {
+    let id = event.detail
+    wx.navigateTo({
+      url: `/pages/webview/index?id=${id}`,
+    })
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
+    getApp().checkNetStatu();
     console.log(options)
-    if(options.type==1){
+    this.setData({
+      'fetcherData.type': options.type
+    })
+    if (options.type == 31) {
       wx.setNavigationBarTitle({
-        title: 'VR场景' 
+        title: 'VR场景'
       })
-    }else{
+
+    } else {
       wx.setNavigationBarTitle({
-        title: 'VR场景直播间' 
+        title: 'VR场景直播间'
       })
     }
+
   },
 
   /**
@@ -37,11 +109,7 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow: function () {
-    util.request(api.OrderList, { page: 1, size: 1, orderStatus: 1}).then(function (res) {
-      if (res.errno === 0) {
-      
-      }
-    });
+    this.getRoomList()
   },
 
   /**
@@ -69,7 +137,7 @@ Page({
    * 页面上拉触底事件的处理函数
    */
   onReachBottom: function () {
-
+    this.getRoomList()
   },
 
   /**

+ 1 - 0
pages/sence/sence.json

@@ -1,5 +1,6 @@
 {
   "navigationBarTitleText": "VR场景",
+  "enablePullDownRefresh": false,
   "usingComponents": {
     "roomItem": "../../component/roomItem/roomItem"
   }

+ 6 - 7
pages/sence/sence.wxml

@@ -4,19 +4,18 @@
   <view class="storeContent">
     <view class="storeSearch">
       <image src="../../static/images/icon/search@2x.png"></image>
-      <input type="text" placeholder="请输入VR场景名称" placeholder-class="placeholderStyle" />
+      <input bindinput="inputChange" type="text" placeholder="请输入VR场景名称" placeholder-class="placeholderStyle" />
     </view>
-    <view class="searchBtn">搜索</view>
+    <view class="searchBtn"  bindtap="search">搜索</view>
   </view>
   <view style="height: 64rpx;"></view>
-  <view class="resulst">
-    <view wx:for="{{10}}" wx:key class="house-list">
-      <roomItem house="{{item}}"></roomItem>
+  <view class="resulst" wx:if="{{roomList.length>0}}">
+    <view wx:for="{{roomList}}" wx:key class="house-list">
+      <roomItem room="{{item}}" bindgotoWV="gotoWV"></roomItem>
     </view>
-
   </view>
 
-  <view class="unbrand">
+  <view class="unbrand" wx:else>
     <image src="/static/images/img_nodata@2x.png"></image>
     <view class="text">暂无相关数据</view>
   </view>

+ 61 - 9
pages/store/store.js

@@ -1,18 +1,67 @@
 // pages/store/store.js
+const util = require('../../utils/util.js');
+const api = require('../../config/api.js');
+const app = getApp()
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-    type: 21
+    type: 21,
+    storeList: [],
+    hasData: true,
+    fetcherData: {
+      type: 21,
+      address: '',
+      page: 1,
+      size: 20,
+      name: ''
+    }
   },
+  gotoWV: function (event) {
+    let id = event.detail
+    wx.navigateTo({
+      url: `/pages/webview/index?id=${id}`,
+    })
+  },
+  toSearch(e) {
+    var type = e.currentTarget.dataset.type
+    console.log(type)
+    wx.navigateTo({
+      url: `/pages/searchRoom/searchRoom?type=` + type
+    })
+  },
+  getStoreList() {
+    if (this.data.hasData) {
+      util.request(api.BrandList, this.data.fetcherData).then((res) => {
+        console.log(res)
+        if (res.errno === 0) {
+          if (res.data.data.length != 0) {
+            this.setData({
+              storeList: this.data.storeList.concat(res.data.data),
+              'fetcherData.page': this.data.fetcherData.page + 1
+            })
+
+          } else {
+            this.setData({
+              hasData: false
+            })
+
+          }
+        }
+      });
+    } else {
+      console.log('没有更多数据')
+    }
 
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
-
+    getApp().checkNetStatu();
+    this.getStoreList()
   },
 
   /**
@@ -46,15 +95,18 @@ Page({
   /**
    * 页面相关事件处理函数--监听用户下拉动作
    */
-  onPullDownRefresh: function () {
-
+  onPullDownRefresh() {
+    this.setData({
+      storeList: [],
+      'fetcherData.page': 1,
+      hasData: true
+    });
+    this.getStoreList()
+    app.onPullDownRefresh()
   },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
   onReachBottom: function () {
-
+    this.getStoreList()
+    console.log('onReachBottom')
   },
 
   /**

+ 1 - 0
pages/store/store.json

@@ -3,4 +3,5 @@
   "usingComponents": {
     "storeItem": "../../component/storeItem/storeItem"
   }
+
 }

+ 8 - 6
pages/store/store.wxml

@@ -2,17 +2,19 @@
   <view class="storeContent">
     <view class="storeSearch">
       <image src="../../static/images/icon/search@2x.png"></image>
-      <input type="text" placeholder="请输入VR场景名称" placeholder-class="placeholderStyle" />
+      <input type="text" disabled="true" placeholder='请输入VR场景名称' data-type="21" bindtap="toSearch"
+        placeholder-class="placeholderStyle" />
     </view>
+    <!-- <view class="searchBtn">搜索</view> -->
   </view>
-  <view style="height: 64rpx;"></view>
-  <view class="storeList">
-    <view wx:for="{{10}}">
-      <storeItem></storeItem>
+  <view style="height: 74rpx;"></view>
+  <view class="storeList" wx:if="{{storeList.length>0}}">
+    <view wx:for="{{storeList}}">
+      <storeItem store="{{item}}"  bindgotoWV="gotoWV"></storeItem>
     </view>
   </view>
 
-  <view class="unbrand">
+  <view class="unbrand" wx:else>
     <image src="/static/images/img_nodata@2x.png"></image>
     <view class="text">暂无相关数据</view>
   </view>

+ 1 - 1
pages/store/store.wxss

@@ -1,7 +1,7 @@
 /* pages/store/store.wxss */
 .storeContent {
   width: 100%;
-  padding: 0 32rpx;
+  padding: 0 32rpx 10rpx;
   box-sizing: border-box;
   position: fixed;
   top: 0;

+ 1 - 1
pages/ucenter/index/index.wxml

@@ -5,7 +5,7 @@
   <view class="userinfo">
     <image src="../../../static/images/ucenterbg.png" class="user-bg"></image>
     <view class="u-avatar"  bindtap="tapByIdx" data-url="/pages/user/user">
-      <button class="btn-cls" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo"></button>
+      <!-- <button class="btn-cls" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo"></button> -->
       <image  class="userinfo-avatar" src="{{ userInfo.avatarUrl }}" background-size="cover"></image>
       <text class="userinfo-nickname">{{userInfo.nickName}}</text>
     </view>

+ 215 - 0
pages/webview/index.js

@@ -0,0 +1,215 @@
+// pages/webview/index.js
+const api = require('../../config/api.js');
+const util = require('../../utils/util.js');
+import socketApi from '../../socket'
+
+const URL = 'https://www.4dkankan.com/mallscene.html?m='
+
+Page({
+
+  ...socketApi,
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    sendShare: false,
+    loadUrl: false,
+    goodsCount: 0,
+    canIUse: wx.canIUse('button.open-type.getUserInfo'),
+    rnd:'',
+    temp:'',
+    live_base_url: 'rtmp://120.24.85.77:1935/hls',
+    peopleCount: 5,
+    surplus: 5
+    // url: 'https://www.4dkankan.com/showProPC.html?m=vroMUXdx&origin=4Dplaza&sid=1046051&room_id=1596785144930&user_id=44'
+  },
+
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: async function (options) {
+    getApp().checkNetStatu();
+
+    
+    // setTimeout(() => this.login(), 3000)
+    this.setData({
+      join: false,
+      imgServer: util.imgServer,
+      showGuide: false,
+      showCommodity: false,
+      showInvitation: false,
+      showEnd: false,
+      showAlert: false,
+      sendShare: false,
+      showPacked: false,
+      showIsEnd: false,
+      showCoupon: false,
+      showContact: false,
+      showCommodityCtrl: false,
+      recordStatus: 0,
+      commoditys: [],
+      coupons: [],
+      userAuth: false,
+      count: 0,
+      goodsList: [],
+      page: 1,
+      size: 1000
+    })
+    
+    // console.log(options)
+    // options.id = '1046098'
+
+    if (this.options.roomId) {
+      this.data.join = true
+    }
+
+    if (this.data.join) {
+      this.role = 'customer'
+    } else {
+      this.role = 'leader'
+    }
+
+    if (options.many !== void 0) {
+      this.data.many = options.many
+    }
+
+    socketApi.onShow.call(this)
+    this.urlPj = '&brandId=' + this.options.id
+  },
+
+  async init() {
+    let options = this.options
+
+    let {url: base, obj: m } = await new Promise(r => this.getBrandDetail(options.id, (url, obj)  => r({url, obj})))
+
+    this.getBrand(options.id, m)
+    this.mcode = m
+    let socketOptions = await this.socketStart({sceneId: this.mcode, roomId: options.roomId})
+    let url = this.getUrl(base, socketOptions, this.data.join) + this.urlPj
+
+    this.base = base
+
+    this.setData({urlTemp: url.split('').join(' ')})
+    this.setData({ url, loadUrl: true, socketOptions, reload: true, hideWebView: false })
+    this.recorderManager = wx.getRecorderManager()
+
+    this.brandId = options.id
+    this.joinUrl()
+    // this.mic()
+  },
+
+  hideInvitation() {
+    this.setData({ showInvitation: false })
+    this.exit()
+  },
+
+  hideGuide() {
+    this.setData({ showGuide: false })
+  },
+
+  hideEnd() {
+    this.setData({ showEnd: false })
+  },
+
+  hideAlert() {
+    this.setData({ showAlert: false })
+  },
+
+  // exit() {
+  //   this.stopCall()
+  //   this.socketStop && this.socketStop()
+  //   wx.navigateBack()
+  // },
+  
+  hidePacked() {
+    this.setData({ showPacked: false })
+  },
+  
+  hideIsEnd() {
+    this.setData({ showIsEnd: false })
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+    
+  },
+
+  
+
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: async function () {
+    getApp().updateCardCount()
+
+    
+    
+    // this.options.join = true
+    // this.getCartList()
+    
+    let userInfo = wx.getStorageSync('userInfo');
+    let token = wx.getStorageSync('token');
+
+    if (!(userInfo && userInfo.userId && token)) {
+      return;
+      // return wx.navigateTo({
+      //   url: '/pages/auth/btnAuth/btnAuth',
+      // })
+      if (this.options.join) {
+        getApp().setLoginProps(false)
+      } else {
+        this.socketStop && this.socketStop()
+        this.init()
+      }
+    } else if (this.token !== wx.getStorageSync('token')) {
+      if (this.data.join) {
+        let res = await util.request(api.UserInfo)
+        if (res.errno === 401) {
+          return getApp().setLoginProps(false)
+        }
+      }
+      this.token = wx.getStorageSync('token')
+      if (this.socketStop) {
+        this.socketStop()
+        this.setData({
+          hideWebView: true,
+          webviewUrl: null
+        })
+        setTimeout(() => {
+          this.setData({ hideWebView: false })
+          this.init()
+        }, 500)
+      } else {
+        this.init()
+      }
+    } else {
+      socketApi.onShow.call(this)
+    }
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+    socketApi.onHide.call(this)
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+    getApp().onPullDownRefresh()
+  },
+
+  
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  }
+})

+ 3 - 0
pages/webview/index.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "指房宝"
+}

+ 254 - 0
pages/webview/index.wxml

@@ -0,0 +1,254 @@
+<view class="web-view">
+	<lip-sync />
+	<auth bindlogin="onShow" />
+	
+	<!-- {{url}} -->
+	<!-- -->
+	<block wx:if="{{!hideWebView}}">
+		<web-view src="{{webviewUrl}}" bindmessage="webmessage"></web-view>
+	</block>
+	<cover-view class="mo" bindtap="hideCS" wx:if="{{showCoupon || showContact}}"></cover-view>
+
+	<cover-view class="bgd" wx:if="{{sendShare}}"></cover-view>
+
+	<cover-view class="dialog guide-view" wx:if="{{showGuide}}">
+		<cover-view class="title">操作提示</cover-view>
+		<cover-view class="content">
+			<cover-view class="guide-item">
+				<cover-image wx:if="{{imgServer}}" src="../../static/images/gesture_roam.png"></cover-image>
+				<cover-view>
+					<cover-view class="text">行走</cover-view>
+					<cover-view class="text">点击任意方向移动</cover-view>
+				</cover-view>
+			</cover-view>
+			<cover-view class="guide-item">
+				<cover-image wx:if="{{imgServer}}" src="../../static/images/gesture_roam.png"></cover-image>
+				<cover-view>
+					<cover-view class="text">旋转视角</cover-view>
+					<cover-view class="text">左右滑动屏幕,旋转视觉</cover-view>
+				</cover-view>
+			</cover-view>
+			<cover-view class="guide-item">
+				<cover-image wx:if="{{imgServer}}" src="../../static/images/gesture_roam.png"></cover-image>
+				<cover-view>
+					<cover-view class="text">缩放</cover-view>
+					<cover-view class="text">双指滑动放大或缩小视图</cover-view>
+				</cover-view>
+			</cover-view>
+		</cover-view>
+		<cover-view class="button">
+			<button bindtap="hideGuide" class="btn">我知道了</button>
+		</cover-view>
+	</cover-view>
+
+
+	<cover-view class="commodity-ctrl" bindtap="showCommodityFn" wx:if="{{!showCommodity && showCommodityCtrl && goodsCount > 0}}">
+		<cover-image src="../../static/images/scene_listbg@3x.png" class="bg"></cover-image>
+		<cover-image src="../../static/images/scene_shop_list.png" class="ig"></cover-image>
+		<cover-view>商品({{goodsCount > 100 ? '99+' : goodsCount}})</cover-view>
+		<!-- <cover-view>商品({{goodsCount < 100 ? '99+' : goodsCount}})</cover-view> -->
+	</cover-view>
+
+	<!-- <cover-view class="bottom-dialog commodity-view" wx:if="{{!showCommodity}}">
+		<cover-view class="title">
+			<cover-view class="text">店铺中的商品</cover-view>
+			<cover-view class="icon" bindtap="hideComodity">
+				<cover-image src="../../static/images/list_close.png"></cover-image>
+			</cover-view>
+		</cover-view>
+		<cover-view class="content">
+			<cover-view class="tabs">
+				<cover-view style="width: {{ comWidth }}px">
+					<cover-view style="width: {{item.width }}px" wx:for="{{thumComtypes ? thumComtypes : comtypes}}" wx:key="item.category_id" class="text {{currTypeId == item.category_id ? 'active': ''}}" data-item="{{item}}" bindtap="selectType">
+						{{item.name}}{{'('+item.num+')'}}
+						<cover-view></cover-view>
+					</cover-view>
+				</cover-view>
+
+				<block wx:if="{{thumComtypes}}">
+					<cover-view class="tabctrl" bindtap="changeShowComtypesAllTab" data-show="{{true}}">
+						<cover-image src="/static/images/shoplist_open@3x.png"></cover-image>
+					</cover-view>
+				</block>
+			</cover-view>
+
+			<block wx:if="{{thumComtypes && showComtypesAllTab}}">
+        <cover-view class="zz" bindtap="changeShowComtypesAllTab" data-show="{{false}}"></cover-view>
+				<cover-view class="dialog-layer">
+					<cover-view class="dialog-tabs">
+						<cover-view wx:for="{{comtypes}}" wx:key="item.category_id" class="text {{currTypeId == item.category_id ? 'active': ''}}" data-item="{{item}}" bindtap="selectType">
+							{{item.name}}{{'('+item.num+')'}}
+							<cover-view></cover-view>
+						</cover-view>
+					</cover-view>
+					<cover-view class="tabctrl"  bindtap="changeShowComtypesAllTab" data-show="{{false}}">
+						<cover-image src="/static/images/shoplist_retract@3x.png"></cover-image>
+					</cover-view>
+				</cover-view>
+			</block>
+			<cover-view class="commoditys">
+				<cover-view class="commodity-item" wx:for="{{goodsList}}" key="{{item.id}}" bindtap="gotoGoods" data-item="{{item}}">
+					<cover-image class="cover" src="{{item.list_pic_url}}"></cover-image>
+					<cover-image class="scene-icon" src="/static/images/img_shop_scene@2x.png"></cover-image>
+					<cover-view class="item-content">
+						<cover-view class="desc">{{item.name}}</cover-view>
+						<cover-view class="item-info">
+							<cover-view class="money">
+								<cover-view class="text">¥</cover-view>
+								<cover-view class="text">{{item.retail_price}}</cover-view>
+							</cover-view>
+							<cover-view class="oper">
+								<cover-view class="oper-btn" catchtap="addCard" data-id="{{item.id}}">加入购物车</cover-view>
+								<cover-view class="oper-btn" catchtap="buyGoods" data-id="{{item.id}}">立即购买</cover-view>
+							</cover-view>
+						</cover-view>
+					</cover-view>
+				</cover-view>
+			</cover-view>
+		</cover-view>
+	</cover-view> -->
+
+	<cover-view class="bottom-dialog coupon-view" wx:if="{{showCoupon}}">
+		<cover-view class="title">
+			<cover-view class="text">店铺中的优惠券</cover-view>
+			<cover-view class="icon" bindtap="hideCoupon">
+				<cover-image src="../../static/images/list_close.png"></cover-image>
+			</cover-view>
+		</cover-view>
+		<cover-view class="layer">
+			<cover-view class="content">
+				<cover-view wx:if="{{coupons.length !== 0}}">
+					<cover-view wx:for="{{coupons}}" wx:key="{{item.id}}" class="{{item.hasReceived ? 'coupon-item' : item.number <= item.receiveNumber ? 'coupon-item diswan' : 'coupon-item'}}">
+						<cover-view class="item-before"></cover-view>
+						<cover-view class="item-after"></cover-view>
+						<cover-view class="info-before"></cover-view>
+						<cover-view class="info-after"></cover-view>
+
+						<cover-view class="{{item.hasReceived ? 'used' : ''}} "></cover-view>
+						<cover-view class="money">
+							<cover-view class="poa" style="{{'font-size:' + item.fontSize }}">
+								<cover-view class="money-before">¥</cover-view>
+								{{item.typeMoney}}
+								<!-- <cover-view class="money-after"></cover-view> -->
+							</cover-view>
+						</cover-view>
+						<cover-view class="info">
+							<cover-view class="full">{{item.name}}</cover-view>
+							<button>
+								{{
+                  item.sendType == 0 ? '全场赠券' : 
+                  item.sendType == 1 ? '会员赠券' : 
+                  item.sendType == 2 ? '购物赠券' : 
+                  item.sendType == 3 ? '注册赠' : ''
+                }}
+							</button>
+							<cover-view class="date">{{item.useStartDate}}-{{item.useEndDate}}</cover-view>
+						</cover-view>
+						<cover-view class="oper">
+							<cover-image class="dotted" src="/static/images/img_cpline@3x.png"></cover-image>
+							<cover-image src="/static/images/img_tabs_lack.png" wx:if="{{!item.hasReceived && item.number <= item.receiveNumber}}" class="lack"></cover-image>
+
+							<cover-view wx:else bindtap="receive" data-item="{{item}}">{{item.hasReceived ? '已领取'  : item.number <= item.receiveNumber ? '' : '立即领取'}}</cover-view>
+						</cover-view>
+					</cover-view>
+				</cover-view>
+				<cover-view wx:else class="un-content">
+					<cover-view class="lay">
+						<cover-image src="/static/images/img_nocoupon@2x.png"></cover-image>
+						<cover-view class="text">暂无优惠券</cover-view>
+					</cover-view>
+				</cover-view>
+			</cover-view>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{showInvitation}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">
+			{{surplus ? '邀请好友一起逛,最多可邀请'+surplus+'位好友哦' : '邀请好友已达到上线哦'}}</cover-view>
+		<cover-view class="btns">
+			<button class="btn" wx:if="surplus">微信邀请</button>
+			<button class="cancel btn" bindtap="hideInvitation">取消</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{showEnd}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">确定要结束“一起逛”吗?</cover-view>
+		<cover-view class="btns">
+			<button class="btn" bindtap="hideEnd">继续逛</button>
+			<button class="cancel btn">结束</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{showAlert}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">发起人已结束一起逛模式,房间即将关闭</cover-view>
+		<cover-view class="btns">
+			<button class="btn" bindtap="hideAlert">确定</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{showPacked}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">一起逛房间已满人,是否继续逛</cover-view>
+		<cover-view class="btns">
+			<button class="btn" bindtap="hidePacked">继续逛</button>
+			<button class="cancel btn">取消</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{showIsEnd}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">一起逛已结束了,是否继续逛</cover-view>
+		<cover-view class="btns">
+			<button class="btn" bindtap="hideIsEnd">继续逛</button>
+			<button class="cancel btn">取消</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog concat-view" wx:if="{{showContact}}">
+		<cover-view class="icon" bindtap="hideContact">
+			<cover-image src="../../static/images/list_close.png"></cover-image>
+		</cover-view>
+
+		<cover-view class="title ">联系我们</cover-view>
+		<cover-view class="item" wx:if="{{contractPhone}}">
+			<button class="btn call-phone" bindtap="callPhone">拨打电话</button>
+			<!-- <cover-view class="desc">服务时间:09:00 - 21:00</cover-view> -->
+		</cover-view>
+		<cover-view class="item">
+			<button class="cancel btn" open-type="contact" bindtap="contactKf">联系在线客服</button>
+			<cover-view class="desc tp10">联系指房宝在线客服</cover-view>
+			<!-- <cover-view class="desc tp10">服务时间:24小时</cover-view> -->
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="dialog invitation-view" wx:if="{{sendShare}}">
+		<cover-view class="title">温馨提示</cover-view>
+		<cover-view class="content">{{surplus ? '邀请好友一起逛,最多可邀请'+surplus+'位好友哦' : '邀请好友已达到上线哦'}}</cover-view>
+		<cover-view class="btns" wx:if="{{surplus}}">
+			<button class="btn" open-type="share">微信邀请</button>
+			<button class="cancel btn" bindtap="calcShare">取消</button>
+		</cover-view>
+		<cover-view class="btns" wx:if="{{!surplus}}">
+			<button class="btn" bindtap="calcShare">确定</button>
+		</cover-view>
+	</cover-view>
+
+	<cover-view class="auth-user" wx:if="{{userAuth}}">
+		<cover-view class="layer">
+			<cover-view class="title">授权登录</cover-view>
+			<cover-image class="logo" src="../../static/images/img_empower_logo@2x.png"></cover-image>
+			<cover-view class="desc">四维时代网络科技有限公司申请获取以下权限</cover-view>
+			<cover-view class="content">·获得您的公开信息(昵称、头像等)</cover-view>
+			<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" wx:if="{{canIUse}}">授权登录</button>
+			<cover-view wx:else>请升级微信版本</cover-view>
+		</cover-view>
+	</cover-view>
+	
+	<cover-view style="position: fixed; background-color: rgba(0,0,0,0.5); color: #fff;white-space:pre-wrap;z-index:989999" wx:if="{{debugerInfo}}">
+    {{debugerInfo}}
+		<cover-view bindtap="clearDebuger">清除</cover-view>
+  </cover-view>
+</view>

+ 798 - 0
pages/webview/index.wxss

@@ -0,0 +1,798 @@
+/* pages/webview/index.wxss */
+.web-view {
+  /* background-color: #000; */
+}
+
+.bgd {
+  position: fixed;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 0;
+}
+
+.btn {
+  width: 100%;
+  background-color: #fff;
+  border-radius: 4px;
+  height: 90rpx;
+  line-height: 90rpx;
+  font-size: 36rpx;
+  color: #131D34;
+  text-align: center;
+  padding: 0;
+}
+
+.call-phone {
+  background-color: rgb(237,93,24);
+  color: #fff;
+}
+
+.dialog {
+  position: fixed;
+  left: 10%;
+  right: 10%;
+  background-color: rgba(0, 0, 0, 1);
+  opacity: .9;
+  color: #fff;
+  z-index: 9999;
+  border-radius: 5px;
+  padding: 70rpx;
+}
+
+
+.guide-view {
+  top: 10%;
+  bottom: 20%;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.guide-view .title {
+  font-size: 36rpx;
+  color: rgba(255, 255, 255, 0.88);
+  text-align: center;
+}
+
+.guide-view .content {
+  display: flex;
+  flex: 1;
+  flex-direction: column;
+  justify-content: space-around;
+}
+
+.guide-item {
+  padding-left: 100rpx;
+  position: relative;
+}
+
+.guide-item cover-image {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 77rpx;
+  height: 96rpx;
+}
+
+.guide-item .text {
+  line-height: 48rpx;
+  font-size: 30rpx;
+  display: block;
+  color: #fff;
+}
+
+.guide-view .title,
+.guide-view .button {
+  max-height: 300rpx;
+}
+
+.bottom-dialog {
+  position: fixed;
+  top: 23%;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  z-index: 99;
+  background-color: #fff;
+  border-radius: 14px 14px 0 0;
+  display: flex;
+  flex-direction: column;
+}
+
+.bottom-dialog .title {
+  flex: 0 0 auto;
+  padding: 36rpx 32rpx;
+  border-bottom: 1px solid rgb(236, 236, 236);
+  position: relative;
+}
+
+.bottom-dialog .title .text {
+  font-size: 32rpx;
+  color: #131D34;
+  font-weight: bold;
+}
+
+.bottom-dialog .icon {
+  position: absolute;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 27rpx;
+  height: 27rpx;
+  padding: 32rpx;
+  right: 0;
+}
+
+
+.commodity-view {
+  position: fixed;
+  top: 23%;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  z-index: 99;
+  background-color: #fff;
+  border-radius: 14px 14px 0 0;
+  display: flex;
+  flex-direction: column;
+}
+
+.commodity-view .content {
+  flex: 1;
+  padding: 0 32rpx;
+  position: relative;
+  /* display: flex;
+  flex-direction: column; */
+}
+
+.commodity-view .scene-icon {
+  position: absolute;
+  left: 2rpx;
+  bottom: 2rpx;
+  width: 40rpx;
+  height: 40rpx;
+  z-index: 3;
+}
+
+
+.commodity-view .tabs {
+  flex: 0 0 auto;
+  height: 76rpx;
+  width: 100%;
+  overflow-x: scroll;
+  padding-bottom: 4px;
+  position: relative;
+}
+
+.commodity-view .tabs .text {
+  float: left;
+  height: 76rpx;
+  line-height: 76rpx;
+  color: #131D34;
+  font-size: 16px;
+  margin-right: 10px;
+  text-align: center;
+}
+
+.commodity-view .tabs .text.active {
+  color: #ED5D18;
+  font-size: 16px;
+  position: relative;
+}
+
+.commodity-view .tabs .text.active cover-view {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  height: 4rpx;
+  background-color: #ED5D18;
+  margin: 0 20rpx;
+}
+
+.commodity-view .current-tab {
+  flex: 0 0 auto;
+  height: 60rpx;
+  margin-left: -32rpx;
+  width: calc(100% + 64rpx);
+  background-color: #F8F8F8;
+  padding: 0 32rpx;
+  line-height: 60rpx;
+  font-size: 26rpx;
+  color: #999999;
+}
+
+.commoditys {
+  position: absolute;
+  left: 32rpx;
+  right: 32rpx;
+  top: 76rpx;
+  bottom: 0;
+  height: calc(100% - 100rpx);
+  overflow-y: scroll;
+}
+
+.commodity-item {
+  margin-top: 34rpx;
+  display: flex;
+  align-items: center;
+  position: relative;
+}
+
+.commodity-view .cover {
+  flex: 0 0 auto;
+  width: 180rpx;
+  height: 180rpx;
+}
+
+.commodity-view .item-content {
+  flex: 1;
+  margin-left: 28rpx;
+}
+
+.commodity-view .item-content .desc {
+  font-size: 14px;
+  color: #131D34;
+  line-height: 40rpx;
+  white-space: pre-wrap;
+}
+
+.commodity-view .item-info {
+  margin-top: 32rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  height: 54rpx;
+}
+
+.commodity-view .item-info>.money {
+  flex: 0 0 auto;
+}
+
+.commodity-view .item-info>.oper {
+  flex: 1;
+  text-align: right;
+  position: relative;
+}
+
+.oper .lack {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+  width: 200rpx;
+  height: 200rpx;
+}
+
+.commodity-view .money .text {
+  display: inline;
+  color: #ED5D18;
+}
+
+.commodity-view .money .text:nth-child(1),
+.money .text:nth-child(3) {
+  font-size: 24rpx;
+  margin-right: 10rpx;
+  vertical-align: baseline;
+}
+
+.commodity-view .money .text:nth-child(2) {
+  font-size: 36rpx;
+  vertical-align: baseline;
+}
+
+.oper-btn {
+  display: inline-block;
+  border-radius: 4px;
+  height: 52rpx;
+  line-height: 52rpx;
+  padding: 0 16rpx !important;
+  color: #fff;
+  font-size: 24rpx;
+}
+
+.commodity-view .oper {
+  height: 54rpx;
+  display: flex;
+}
+
+.commodity-view .oper-btn:nth-child(1) {
+  background-color: #FFCD3C;
+  margin-right: 10rpx;
+}
+
+.commodity-view .oper-btn:nth-child(2) {
+  background-color: #ED5D18;
+}
+
+
+.invitation-view {
+  top: 50%;
+  transform: translateY(-50%);
+  color: rgba(255, 255, 255, 0.88);
+  /* height: 420rpx; */
+}
+
+.invitation-view .title {
+  font-size: 36rpx;
+  font-weight: bold;
+  margin-bottom: 40rpx;
+}
+
+.invitation-view .content {
+  font-size: 30rpx;
+  line-height: 36rpx;
+  margin-bottom: 40rpx;
+  white-space: pre-wrap;
+}
+
+.invitation-view .btns {
+  text-align: center;
+  height: 200rpx;
+}
+
+.cancel {
+  line-height: 86rpx;
+  margin-top: 20rpx;
+  background-color: rgba(0, 0, 0, 0);
+  color: #fff;
+  border: 1px solid #fff;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+
+
+.coupon-view .layer {
+  flex: 1;
+  overflow-y: scroll;
+}
+
+.coupon-view .content {
+  padding: 0 34rpx;
+}
+
+.coupon-item {
+  height: 185rpx;
+  padding-right: 30rpx;
+  background: #EF9B3A;
+  border-radius: 4px;
+  margin-top: 34rpx;
+  display: flex;
+  position: relative;
+  align-items: center;
+}
+
+.coupon-item .item-before,
+.coupon-item .item-after {
+  position: absolute;
+  border-radius: 50%;
+  background-color: rgba(255, 255, 255, 0.16);
+  z-index: 1;
+}
+
+.coupon-item .item-before {
+  width: 88rpx;
+  height: 106rpx;
+  left: 0;
+  top: 0;
+  transform: translate(-50%, -50%);
+}
+
+.coupon-item .item-after {
+  width: 140rpx;
+  height: 186rpx;
+  right: 0;
+  bottom: 0;
+  transform: translate(40%, 50%);
+}
+
+.coupon-item .info-before,
+.coupon-item .info-after {
+  position: absolute;
+  background-color: #fff;
+  z-index: 99;
+  width: 40rpx;
+  height: 40rpx;
+  border-radius: 50%;
+  right: 196rpx;
+  transform: translateX(50%);
+}
+
+.coupon-item .info-before {
+  top: 0;
+  margin-top: -20rpx;
+}
+
+.coupon-item .info-after {
+  bottom: 0;
+  margin-bottom: -20rpx;
+}
+
+.coupon-item .money {
+  flex: 0 0 auto;
+  width: 230rpx;
+  font-size: 138rpx;
+  color: #fff;
+  font-weight: bold;
+  position: relative;
+  /* height: 130rpx;
+  line-height: 138rpx; */
+  text-align: center;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: auto;
+  height: 138rpx;
+}
+
+.poa {
+  width: 100%;
+  text-align: center;
+  font-size: 26rpx;
+}
+
+
+.coupon-item .used {
+  position: absolute;
+  z-index: 99;
+  background-color: rgba(255, 255, 255, 0.6);
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+}
+
+.coupon-item .money-before {
+  display: inline;
+  font-size: 26rpx;
+  /* width: 40rpx;
+  height: 40rpx;
+  text-align: center;
+  line-height: 40rpx;
+  border: 1px solid #EF9B3A;
+  color:#EF9B3A;
+  border-radius: 50%;
+  position: absolute;
+  bottom: 0;
+  right: 0rpx;
+  font-size: 26rpx;
+  background-color: #fff; */
+}
+
+.coupon-item .info {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  padding: 25rpx 10rpx 10rpx;
+  height: 92rpx;
+}
+
+.coupon-item .info .full {
+  font-size: 30rpx;
+  color: #fff;
+  width: 100%;
+  height: 52rpx;
+  margin: 0;
+  line-height: 32rpx;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.coupon-item .info button {
+  width: 168rpx;
+  color: #EF533A;
+  text-align: center;
+  height: 38rpx;
+  line-height: 32rpx;
+  border-radius: 19rpx;
+  font-size: 22rpx;
+  margin: 10rpx 0;
+}
+
+.coupon-item .info .date {
+  height: 28rpx;
+  font-size: 16rpx;
+  color: #fff;
+  margin: 0;
+  line-height: 22rpx;
+  width: 100%;
+}
+
+.coupon-item .oper {
+  flex: 0 0 auto;
+  font-size: 34rpx;
+  color: #fff;
+  width: 166rpx;
+  text-align: right;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+  position: relative;
+}
+
+.coupon-item .oper .dotted {
+  position: absolute;
+  width: 1px;
+  left: 0;
+  top: 20%;
+  height: 60%;
+  z-index: 9999999;
+}
+
+.coupon-item .oper cover-view {
+  z-index: 2;
+}
+
+
+
+.concat-view {
+  top: 20%;
+}
+
+
+.concat-view .icon {
+  position: absolute;
+  right: 6rpx;
+  top: 6rpx;
+  width: 27rpx;
+  height: 27rpx;
+  padding: 30rpx;
+}
+
+.concat-view .title {
+  font-size: 36rpx;
+  font-weight: bold;
+  margin-bottom: 40rpx;
+}
+
+.concat-view .item:nth-last-child(1) {
+  margin-top: 34rpx;
+}
+
+.concat-view .item .desc {
+  line-height: 40rpx;
+  text-align: center;
+  font-size: 24rpx;
+}
+
+.commodity-ctrl {
+  position: fixed;
+  bottom: 218rpx;
+  right: 40rpx;
+  width: 140rpx;
+  height: 140rpx;
+  border-radius: 50%;
+  /* background:rgba(237,93,24,1);
+  box-shadow:0px 1px 6px rgba(0,0,0,0.16); */
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.commodity-ctrl .bg {
+  width: 130rpx;
+  height: 130rpx;
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  z-index: -1;
+  transform: translate(-50%, -50%);
+}
+
+.commodity-ctrl .ig {
+  width: 18px;
+  height: 18px;
+}
+
+.commodity-ctrl cover-view {
+  font-size: 20rpx;
+  color: rgba(255, 255, 255, 0.88);
+  line-height: 26rpx;
+  width: 100%;
+  text-align: center;
+}
+
+.auth-user {
+  position: fixed;
+  left: 0;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 8;
+  background-color: rgba(0, 0, 0, 0.3);
+}
+
+.auth-user .layer {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  background-color: #fff;
+  border-radius: 8px 8px 0 0;
+  padding: 52rpx 36rpx;
+}
+
+.auth-user .layer .title {
+  font-size: 24rpx;
+  color: #131D34;
+  font-size: 30rpx;
+  line-height: 42rpx;
+  color: #111111;
+}
+
+.auth-user .layer .logo {
+  display: block;
+  width: 165rpx;
+  height: 120rpx;
+  margin: 0 auto;
+}
+
+.auth-user .layer .desc {
+  text-align: center;
+  color: #111111;
+  font-size: 26rpx;
+  padding: 28rpx 0 36rpx;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+.auth-user .layer .content {
+  text-align: center;
+  padding: 32rpx 0 86rpx;
+  font-size: 26rpx;
+  color: #79868F;
+}
+
+.auth-user .layer button {
+  color: #fff;
+  width: 100%;
+  font-size: 30rpx;
+  height: 80rpx;
+  line-height: 80rpx;
+  background-color: #ED5D18;
+}
+
+
+.aaaaa {
+  position: fixed;
+  z-index: 999;
+  left: 50%;
+  top: 50%;
+  transform: translate(-50%, -50%);
+  color: #fff;
+  background-color: rgba(0, 0, 0, 0.7);
+  z-index: 99999;
+}
+
+.test {
+  z-index: 999;
+  background-color: #000;
+  color: #fff;
+  white-space: pre-wrap;
+}
+
+.tp10 {
+  margin-top: 15rpx;
+}
+
+
+.mo {
+  position: fixed;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.6);
+  z-index: 5;
+}
+
+.content .diswan {
+  background: #EBEBEB;
+}
+
+.content .diswan .money {
+  color: #999999;
+}
+
+.content .diswan .info .full {
+  color: #999999
+}
+
+.content .diswan .info button {
+  opacity: 0.7;
+  color: #999;
+}
+
+.content .diswan .info .date {
+  color: #999;
+}
+
+.un-content {
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+
+.lay {
+  margin-top: 180rpx;
+}
+
+.un-content cover-image {
+  display: inline-block;
+  width: 250rpx;
+  height: 274rpx;
+}
+
+.un-content .text {
+  color: #666C7D;
+  font-size: 30rpx;
+  margin-top: 40rpx;
+}
+
+.commodity-view .zz {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.6);
+  z-index: 999;
+}
+
+.commodity-view .dialog-layer {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  padding: 0 32rpx 10rpx;
+  box-sizing: border-box;
+  background-color: #fff;
+  z-index: 9999;
+}
+
+.commodity-view .dialog-layer .tabctrl {
+  right: 32rpx;
+}
+
+.commodity-view .dialog-layer .dialog-tabs {
+  padding-right: 86rpx;
+  overflow: hidden;
+}
+
+.commodity-view .dialog-layer .dialog-tabs .text {
+  float: left;
+  width: calc(33% - 10rpx);
+  text-align: center;
+  padding: 14rpx 0;
+  font-size: 24rpx;
+  color: #131D34;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+  margin: 10rpx 0;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.commodity-view .dialog-layer .dialog-tabs .text.active {
+  background-color: rgba(237, 93, 24, 1);
+  border-color: rgba(237, 93, 24, 1);
+  color: #fff;
+}
+
+.commodity-view .dialog-layer .dialog-tabs .text:nth-child(3n-1) {
+  margin: 10rpx;
+}
+
+.commodity-view .tabctrl {
+  position: absolute;
+  right: 0;
+  top: 0;
+  height: 76rpx;
+  width: 76rpx;
+  color: #000;
+}

BIN
static/images/icon/banner.png