Kaynağa Gözat

城市选择页面数据调整,可以使用

ZhangWenQiang 6 yıl önce
ebeveyn
işleme
c5cc9b367a
5 değiştirilmiş dosya ile 1490 ekleme ve 80 silme
  1. 1387 24
      pages/city/city.js
  2. 46 13
      pages/city/index.js
  3. 31 36
      pages/city/index.wxml
  4. 20 7
      pages/index/index.js
  5. 6 0
      pages/index/index.wxss

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1387 - 24
pages/city/city.js


+ 46 - 13
pages/city/index.js

@@ -14,23 +14,27 @@ Page({
     isShowLetter: false,
     scrollTop: 0,
     city: "",
+    cityCode: "",
     hotList: [],
+    hotCodeList: [],
     inputValue: "",
     searchList: []
   },
   onLoad: function(options) {
     var pcity = wx.getStorageSync('city') || '无锡'
     var hotList = ['北京', '上海', '南京', '杭州', '厦门', '南昌', '武汉']
+    var hotCodeList = ['110000', '310000', '320100', '330100', '350200', '360100', '420100']
     this.setData({
       city: pcity,
-      hotList: hotList
+      hotList: hotList,
+      hotCodeList: hotCodeList
     })
     // 生命周期函数--监听页面加载
     var searchLetter = city.searchLetter;
     var cityList = city.cityList();
     this.data.cityNameList = city.cityNameList();
 
-    // console.log(cityInfo);
+    console.log("cityinfo", cityList);
 
     var sysInfo = wx.getSystemInfoSync();
     console.log(sysInfo);
@@ -49,7 +53,6 @@ Page({
       tempObj.push(temp)
     }
 
-
     this.setData({
       winHeight: winHeight,
       itemH: itemH,
@@ -58,6 +61,7 @@ Page({
     })
 
   },
+
   searchStart: function(e) {
     var showLetter = e.currentTarget.dataset.letter;
     var pageY = e.touches[0].pageY;
@@ -69,6 +73,7 @@ Page({
       isShowLetter: true,
     })
   },
+
   searchMove: function(e) {
     var pageY = e.touches[0].pageY;
     var startPageY = this.data.startPageY;
@@ -88,6 +93,7 @@ Page({
       }
     }
   },
+
   searchEnd: function(e) {
     // console.log(e);
     // var showLetter=e.currentTarget.dataset.letter;
@@ -112,9 +118,7 @@ Page({
         break;
       }
     }
-
     this.setScrollTop(that, showLetter);
-
     that.setData({
       bHeight: bHeight,
       tHeight: tHeight,
@@ -131,7 +135,7 @@ Page({
     var cityCount = 0;
     var initialCount = 0;
     for (var i = 0; i < cityList.length; i++) {
-      if (showLetter == cityList[i].initial) {
+      if (showLetter == cityList[i].firstNameLetter) {
         scrollTop = initialCount * 30 + cityCount * 41;
         break;
       } else {
@@ -149,15 +153,28 @@ Page({
       city: city
     })
   },
+
   wxSortPickerViewItemTap: function(e) {
     var city = e.target.dataset.text;
+    var cityCode = e.target.dataset.code;
     console.log('选择了城市:', city);
+    console.log('选择了城市的code:', cityCode);
     wx.setStorageSync('city', city)
+    wx.setStorageSync('cityCode', cityCode)
     this.setData({
-      city: city
+      city: city,
+      cityCode: cityCode
+    })
+    var pages = getCurrentPages();
+    var currPage = pages[pages.length - 1]; //当前页面
+    var prevPage = pages[pages.length - 2]; //上一个页面
+
+    prevPage.setData({
+      hasLocation1: true
     })
     wx.navigateBack()
   },
+
   cxgps: function(e) {
     var that = this;
     wx.showLoading({
@@ -173,7 +190,7 @@ Page({
             content: '当前服务需要获取您的位置信息,请确认授权',
             confirmText: '去授权',
             cancelText: '暂不授权',
-            success: function (res) {
+            success: function(res) {
               if (res.confirm) {
                 wx.openSetting();
               } else if (res.cancel) {
@@ -186,11 +203,14 @@ Page({
             success(data) {
               wx.hideLoading();
               var data = data[0],
-                city = data.regeocodeData.addressComponent.city || "无锡";
+                city = data.regeocodeData.addressComponent.city || "无锡",
+                cityCode = data.regeocodeData.addressComponent.adcode.substring(0, 4) + "00";
               that.setData({
-                city: city
+                city: city,
+                cityCode: cityCode
               })
               wx.setStorageSync('city', city)
+              wx.setStorageSync('cityCode', cityCode)
             }
           })
         }
@@ -217,9 +237,23 @@ Page({
       // console.log(name)
       return name.indexOf(text) !== -1
     })
-    console.log(searchList)
+    var cityList = this.data.cityList;
+    var resultList = [];
+    for (var k = 0; k < searchList.length; k++) {
+      for (var i = 0; i < cityList.length; i++) {
+        for (var j = 0; j < cityList[i].cityInfo.length; j++) {
+          var resultArr = {};
+          if (searchList[k] == cityList[i].cityInfo[j].cityName) {
+            resultArr.cityCode = cityList[i].cityInfo[j].cityCode
+            resultArr.cityName = cityList[i].cityInfo[j].cityName
+            resultList.push(resultArr)
+          }
+        }
+      }
+    }
+    console.log("searchList", resultList)
     this.setData({
-      searchList: searchList
+      searchList: resultList
     })
   },
   onError(err) {
@@ -233,7 +267,6 @@ Page({
 function ajaxGes(lat, lng) {
   //TODO:自己的定位接口
   var url = '';
-
   return new Promise(function(resolve, reject) {
     wx.request({
       url: url,

+ 31 - 36
pages/city/index.wxml

@@ -1,52 +1,47 @@
 <view class='action-panel'>
   <view class='search-box'>
     <view class='search'>
-      <i-icon type="search" size='20' color='#cbcdd3'/>
-      <input class='search-input' confirm-type="search" value="{{inputValue}}" bindblur='bindKeyInput' placeholder="输出城市名快速查找" placeholder-style="color:#cbcdd3;"/>
+      <i-icon type="search" size='20' color='#cbcdd3' />
+      <input class='search-input' confirm-type="search" value="{{inputValue}}" bindblur='bindKeyInput' placeholder="输出城市名快速查找" placeholder-style="color:#cbcdd3;" />
     </view>
-    <navigator open-type='navigateBack'><text>取消</text></navigator>
-  </view>  
+    <navigator open-type='navigateBack'>
+      <text>取消</text>
+    </navigator>
+  </view>
 </view>
-
 <view hidden='{{inputValue}}'>
   <block wx:if="{{isShowLetter}}">
-      <view class="showSlectedLetter">
-          {{showLetter}}
-      </view>
+    <view class="showSlectedLetter">
+      {{showLetter}}
+    </view>
   </block>
-
-  <view class="searchLetter touchClass" >
-      <view wx:for="{{searchLetter}}" style="height:{{itemH}}px" wx:key="index" data-letter="{{item.name}}" catchtouchstart="searchStart" catchtouchmove="searchMove" catchtouchend="searchEnd">{{item.name}}</view>
+  <view class="searchLetter touchClass">
+    <view wx:for="{{searchLetter}}" style="height:{{itemH}}px" wx:key="index" data-letter="{{item.name}}" catchtouchstart="searchStart" catchtouchmove="searchMove" catchtouchend="searchEnd">{{item.name}}</view>
   </view>
-
-  <scroll-view scroll-y="true" style="height:{{winHeight}}px" bindscroll="bindScroll"  scroll-into-view="{{showLetter}}">
-
-      <view class="selection" wx:for="{{cityList}}" wx:key="{{item.initial}}"  id="{{item.initial}}">
-        <block wx:if="{{index===0}}" >
-          <view class='panel'>定位城市</view>
-
-          <view class='location_city'>
-            <view class="btn active" data-text="{{city}}" bindtap = "wxSortPickerViewItemTap">{{city}}</view>
-            <view class='position' catchtap ="cxgps">
-              <i-icon type="refresh" />
-              <text>重新定位</text>
-            </view>
+  <scroll-view scroll-y="true" style="height:{{winHeight}}px" bindscroll="bindScroll" scroll-into-view="{{showLetter}}">
+    <view class="selection" wx:for="{{cityList}}" wx:key="{{item.firstNameLetter}}" id="{{item.firstNameLetter}}">
+      <block wx:if="{{index===0}}">
+        <view class='panel'>定位城市</view>
+        <view class='location_city'>
+          <view class="btn active" data-text="{{city}}" data-code="{{cityCode}}" bindtap="wxSortPickerViewItemTap">{{city}}</view>
+          <view class='position' catchtap="cxgps">
+            <i-icon type="refresh" />
+            <text>重新定位</text>
           </view>
-
-          <view class='panel' wx:if="{{hotList.length}}">热门城市</view>
-          <view class='hot_city' wx:if="{{hotList.length}}">
-            <view class="btn" wx:for="{{hotList}}" wx:key="*this" wx:for-item="cityName" data-text="{{cityName}}" bindtap = "wxSortPickerViewItemTap">{{cityName}}</view> 
-          </view>
-        </block>
-
-        <view class="item_letter">{{item.initial}}</view>
-        <view class="item_city" wx:for="{{item.cityInfo}}" wx:for-item="ct" wx:key="{{ct.id}}" wx:for-index="idx"  data-text="{{ct.city}}" bindtap = "wxSortPickerViewItemTap">
-            {{ct.city}}
         </view>
+        <view class='panel' wx:if="{{hotList.length}}">热门城市</view>
+        <view class='hot_city' wx:if="{{hotList.length}}">
+          <view class="btn" wx:for="{{hotList}}" wx:key="*this" wx:for-index="idx" wx:for-item="cityName" data-text="{{cityName}}" data-code="{{hotCodeList[idx]}}" bindtap="wxSortPickerViewItemTap">{{cityName}}</view>
+        </view>
+      </block>
+
+      <view class="item_letter">{{item.firstNameLetter}}</view>
+      <view class="item_city" wx:for="{{item.cityInfo}}" wx:for-item="ct" wx:key="{{ct.cityCode}}" wx:for-index="idx" data-text="{{ct.cityName}}" data-code='{{ct.cityCode}}' bindtap="wxSortPickerViewItemTap">
+        {{ct.cityName}}
       </view>
+    </view>
   </scroll-view>
 </view>
-
 <view class='result-list' wx:if="{{inputValue}}" style="margin-top:20px">
-  <view class="item_city" wx:for="{{searchList}}" wx:key="*this" data-text="{{item}}" bindtap="wxSortPickerViewItemTap">{{item}}</view>
+  <view class="item_city" wx:for="{{searchList}}" wx:key="*this" data-text="{{item.cityName}}" data-code="{{item.cityCode}}" bindtap="wxSortPickerViewItemTap">{{item.cityName}}</view>
 </view>

+ 20 - 7
pages/index/index.js

@@ -59,7 +59,7 @@ Page({
       '厉害了!用户李丽刚刚完善了个人简历,好工作正在赶来的路上!'
     ],
     imgServerUrl: imgServerUrl,
-    
+    hasLocation1: false,
   },
   onLoad: function(options) {
     if (app.globalData.userInfo) {
@@ -83,18 +83,31 @@ Page({
         }
       })
     }
-
   },
   start() {
-    this.fetchBanner();
-    this.fetchList();
-  },
-  onShow: function() {
     let cityName = wx.getStorageSync('city') || app.globalData.userInfo.city || '无锡'
+    let cityCode = wx.getStorageSync('cityCode') || '320200';
     console.log(cityName)
+    console.log(cityCode)
     this.setData({
-      cityName: cityName
+      cityName: cityName,
+      cityCode: cityCode
     })
+    this.fetchBanner();
+    this.fetchList();
+  },
+  onShow: function() {
+    var self = this;
+    if (self.data.hasLocation1) {
+      self.setData({
+        pageNo: 1, //当前分页
+        isScroll: true, //是否可以滚动
+        filter: -1, //岗位类型
+        list: [],
+        hasLocation1: false
+      })
+      self.start();
+    }
   },
   //下拉刷新
   onPullDownRefresh: function() {

+ 6 - 0
pages/index/index.wxss

@@ -31,6 +31,12 @@
 
 .map .cityname {
   color: #232327;
+  max-width: 120rpx;
+  -webkit-line-clamp: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -webkit-box-orient: vertical;
+  word-break: break-all;
 }
 
 .arrow-down {