index.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. import houseApi from '../../apis/house'
  2. import cityApi from '../../apis/city'
  3. import {
  4. isPhoneX
  5. } from '../../utils/tools'
  6. import {
  7. bindInput
  8. } from '../../utils/utils'
  9. const app = getApp();
  10. const panelData = {
  11. 'region': [{
  12. id: 'quyu',
  13. items: [{
  14. name: '',
  15. id: ''
  16. }]
  17. },
  18. {
  19. id: 'didian',
  20. items: [{
  21. name: '不限',
  22. id: ''
  23. }]
  24. },
  25. {
  26. id: 'xianshi',
  27. items: [{
  28. name: '不限',
  29. id: ''
  30. }]
  31. }
  32. ],
  33. 'jiage': [{
  34. id: 'jiage',
  35. filter: '价格',
  36. items: [{
  37. name: '不限',
  38. id: ''
  39. }, {
  40. name: '50万以下',
  41. id: '0#50'
  42. }, {
  43. name: '50万-100万',
  44. id: '50#100'
  45. }, {
  46. name: '100万-150万',
  47. id: '100#150'
  48. }, {
  49. name: '150万-200万',
  50. id: '150#200'
  51. }, {
  52. name: '200万-250万',
  53. id: '200#250'
  54. }, {
  55. name: '250万-300万',
  56. id: '250#300'
  57. }]
  58. }],
  59. 'woshi': [{
  60. id: 'jushi',
  61. filter: '卧室',
  62. items: [{
  63. name: '不限',
  64. id: ''
  65. }, {
  66. name: '1',
  67. id: '1'
  68. }, {
  69. name: '2',
  70. id: '2'
  71. }, {
  72. name: '3',
  73. id: '3'
  74. }, {
  75. name: '4',
  76. id: '4'
  77. }]
  78. }],
  79. 'yushi': [{
  80. id: 'yushi',
  81. filter: '浴室',
  82. items: [{
  83. name: '不限',
  84. id: ''
  85. }, {
  86. name: '1',
  87. id: '1'
  88. }, {
  89. name: '2',
  90. id: '2'
  91. }, {
  92. name: '3',
  93. id: '3'
  94. }, {
  95. name: '4',
  96. id: '4'
  97. }]
  98. }]
  99. }
  100. let type_acive = ''
  101. const LD = {
  102. agencyId: '',
  103. id: '',
  104. name: "不限",
  105. parentId: '',
  106. type: ''
  107. }
  108. Page({
  109. /**
  110. * 组件的属性列表
  111. */
  112. bindInput,
  113. data: {
  114. houses: [],
  115. type_acive,
  116. tab_panel: panelData[type_acive] || [],
  117. icon_list: [{
  118. name: '总价',
  119. icon: 'edit',
  120. type: "jiage"
  121. },
  122. {
  123. name: '卧室',
  124. icon: 'write',
  125. type: "woshi"
  126. },
  127. {
  128. name: '浴室',
  129. icon: 'write',
  130. type: "yushi"
  131. }
  132. ],
  133. fetcherData: {
  134. page_num: 1,
  135. city: '',
  136. page_size: 10,
  137. saleState: 1,
  138. district: '',
  139. price_s: '',
  140. rooms: '',
  141. bathRooms: '',
  142. },
  143. has_next: true,
  144. navbarInitTop: 80,
  145. seachKey: '',
  146. currentCity: '珠海市'
  147. // currentCity:''
  148. },
  149. changeListType(e) {
  150. let {
  151. type
  152. } = e.currentTarget.dataset
  153. let obj = {
  154. type_acive: type,
  155. tab_panel: panelData[type]
  156. }
  157. if (type === this.data.type_acive) {
  158. obj['type_acive'] = ''
  159. }
  160. this.setData({
  161. type_acive: '',
  162. tab_panel: []
  163. })
  164. this.setData(obj)
  165. },
  166. getCityListByProv() {
  167. // app.wxshowloading('拼命加载中...');
  168. var province = app.globalData.province;
  169. cityApi.getCityListByProv(province).then(res => {
  170. let items = res.data
  171. let quyu = panelData['region'].find(item => item.id === 'quyu')
  172. quyu['items'] = items
  173. let city = items.find(sub => sub.name === this.data.currentCity)
  174. city && this.getSubList({
  175. selectObj: {
  176. didian: LD,
  177. xianshi: LD,
  178. quyu: city
  179. },
  180. type: 'quyu'
  181. })
  182. }).finally(() => {
  183. // wx.hideLoading()
  184. })
  185. },
  186. getSubList(data) {
  187. let {
  188. selectObj,
  189. type
  190. } = data
  191. let current = selectObj[type]
  192. cityApi.getSubList(current.id).then(res => {
  193. let items = res.data
  194. let tmp = []
  195. if (type === 'quyu') {
  196. tmp = panelData['region'].find(item => item.id === 'didian')
  197. let sub = panelData['region'].find(item => item.id === 'xianshi')
  198. sub['items'] = [LD]
  199. }
  200. if (type === 'didian') {
  201. tmp = panelData['region'].find(item => item.id === 'xianshi')
  202. }
  203. items.unshift(LD)
  204. tmp['items'] = tmp['items'] && items
  205. this.setData({
  206. tab_panel: panelData['region']
  207. })
  208. }).finally(() => {
  209. // wx.hideLoading()
  210. })
  211. },
  212. comfirmhandle(e) {
  213. let data = e.detail
  214. let fetData = this.data.fetcherData
  215. console.log(data.jushi)
  216. let tmp = Object.assign(fetData, {
  217. price_s: data.jiage || fetData.price || '',
  218. room_s: data.jushi || '',
  219. bathRoom_s: data.yushi || ''
  220. })
  221. this.closeTypeActive()
  222. this.setData({
  223. fetcherData: tmp
  224. })
  225. this.closeTypeActive()
  226. this.getHouseList()
  227. },
  228. selecthandle(e) {
  229. let {
  230. selectObj,
  231. type
  232. } = e.detail
  233. console.log(e.detail)
  234. if (type === 'quyu' || type === 'xianshi' || type === 'didian') {
  235. this.getSubList(e.detail)
  236. }
  237. console.log(selectObj)
  238. console.log(selectObj.jushi)
  239. let tmp = Object.assign(this.data.fetcherData, {
  240. // district:selectObj.didian.name,
  241. price_s: selectObj.jiage ? selectObj.jiage.id : '',
  242. rooms: selectObj.jushi ? selectObj.jushi.id : '',
  243. bathRooms: selectObj.yushi ? selectObj.yushi.id : '',
  244. // city: selectObj.quyu.name.replace('市', '')
  245. city: ''
  246. })
  247. this.setData({
  248. fetcherData: tmp
  249. })
  250. if (type !== 'quyu' && type !== 'didian') {
  251. this.closeTypeActive()
  252. }
  253. this.getHouseList()
  254. },
  255. bindInputValue(e) {
  256. const {
  257. value
  258. } = e.detail
  259. this.setData({
  260. seachKey: value
  261. })
  262. },
  263. tapSearch() {
  264. this.setData({
  265. 'fetcherData.title': this.data.seachKey
  266. })
  267. this.getHouseList()
  268. },
  269. closeTypeActive() {
  270. this.setData({
  271. type_acive: ''
  272. })
  273. },
  274. // onReachBottomDistance: 50,
  275. // onReachBottom: function () {
  276. // let page = this.data.fetcherData.page++
  277. // this.setData({
  278. // 'fetcherData.page': page
  279. // })
  280. // this.getHouseList()
  281. // },
  282. onShow: function () {
  283. this.getInitData()
  284. },
  285. getInitData() {
  286. this.getHouseList()
  287. this.getCityListByProv()
  288. },
  289. getHouseList: function () {
  290. // app.wxshowloading('拼加载中...');
  291. this.data.fetcherData.agency_user_id = getApp().globalData.userinfo.user_id
  292. houseApi.fetchAgencyHouseList(this.data.fetcherData).then(res => {
  293. this.setData({
  294. houses: res.data.list.map(item => {
  295. item.cover_image += '?x-oss-process=image/resize,w_210,limit_0'
  296. return item
  297. })
  298. })
  299. }).finally(() => {
  300. // wx.hideLoading()
  301. })
  302. },
  303. onLoad: function (options) {
  304. // this.getInitData()
  305. isPhoneX().then(res => {
  306. this.setData({
  307. isIphoneX: res
  308. })
  309. })
  310. },
  311. onShow: function () {
  312. //订阅状态查询
  313. if (getApp().globalData.token) {
  314. wx.getSetting({
  315. withSubscriptions: true,
  316. success: (setting) => {
  317. if (setting.subscriptionsSetting.itemSettings && setting.subscriptionsSetting.itemSettings['zWTBJFpALA3KR3qx1keYJCzJdVtRjFbxrnOJc_Htn-g']) {} else {
  318. wx.showToast({
  319. title: '请前往【我的】-【消息订阅】订阅带看提醒,否则无法带看。',
  320. icon: 'none'
  321. })
  322. }
  323. },
  324. })
  325. }
  326. },
  327. stop() {
  328. return
  329. },
  330. onShareAppMessage: function (res) {
  331. var path = '/pages/index/index'
  332. return {
  333. title: 'RealtorEasier,海量复刻真房源',
  334. path: path,
  335. imageUrl: 'https://usa-4dkankan-project.oss-us-west-1.aliyuncs.com/4dHouse/share.png', // 分享的封面图
  336. }
  337. },
  338. getPermission: function () {
  339. var that = this;
  340. return new Promise((resolve, reject) => {
  341. wx.getLocation({
  342. type: 'wgs84',
  343. success: function (res) {
  344. var latitude = res.latitude;
  345. var longitude = res.longitude;
  346. app.globalData.qqmapsdk.reverseGeocoder({
  347. location: {
  348. latitude: latitude,
  349. longitude: longitude
  350. },
  351. success: function (res) {
  352. var ad_info = res.result.ad_info;
  353. let province = ad_info.province;
  354. let city = ad_info.city.replace('市', '');
  355. let district = ad_info.district;
  356. app.SetProvinceCity(province, city, district);
  357. that.setData({
  358. // 'fetcherData.city': city
  359. })
  360. that.getInitData()
  361. app.ShowToast('定位城市:' + city)
  362. },
  363. fail: function (res) {
  364. wx.showModal({
  365. title: '定位失败,请手动选择城市',
  366. });
  367. that.getInitData()
  368. }
  369. });
  370. },
  371. fail(err) {
  372. wx.showModal({
  373. title: '定位失败,请手动选择城市',
  374. });
  375. }
  376. })
  377. })
  378. }
  379. });