From 93e0876e13b939016a735f624a8f6fb37795364d Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Tue, 8 Aug 2023 20:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E6=BA=90=E4=BF=A1=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/house-info.js | 6 +- config.js | 4 +- pages/house/house.vue | 156 ++++++++++++------ pages/index/index.vue | 73 ++++++-- pages/user/user.vue | 18 +- sub_pages/checkout/checkout.vue | 5 +- sub_pages/feedback/feedback.vue | 2 +- sub_pages/house/add.vue | 33 +++- sub_pages/house/detail.vue | 55 +++--- sub_pages/house/house.vue | 133 ++++++++++----- .../uni-data-select/uni-data-select.vue | 4 +- 11 files changed, 343 insertions(+), 146 deletions(-) diff --git a/api/house-info.js b/api/house-info.js index dac6828..c47f889 100644 --- a/api/house-info.js +++ b/api/house-info.js @@ -15,14 +15,18 @@ export const getUserDetail = (userId) => http.get('/house/info/detail/' + userId // 新增房源信息 export const addHouseInfo = (data) => http.post('/house/info', data) +// 编辑房源信息 +export const updateHouseInfo = (data) => http.put('/house/info', data) + // 删除房源信息 -export const removeHouseInfo = (id) => http.get('/house/info/remove/' + id) +export const removeHouseInfo = (id) => http.delete('/house/info/' + id) export default { pageHouseInfo, listHouseInfo, getHouseInfo, getUserDetail, + updateHouseInfo, removeHouseInfo, addHouseInfo } diff --git a/config.js b/config.js index fe3ca80..45357d2 100755 --- a/config.js +++ b/config.js @@ -9,12 +9,12 @@ module.exports = { appSecret: '1f1d186d98ea4620ac65afbf34940051', // 开发环境 - // apiUrl: "http://127.0.0.1:9090/api", + apiUrl: "http://127.0.0.1:9090/api", // socketUrl: 'ws://localhost:9190', // fileUrl: 'https://file.wsdns.cn', // 测试环境 - apiUrl: 'https://server.gxwebsoft.com/api', + // apiUrl: 'https://server.gxwebsoft.com/api', socketUrl: 'wss://server.gxwebsoft.com', fileUrl: 'https://file.wsdns.cn', diff --git a/pages/house/house.vue b/pages/house/house.vue index cff4d24..73542e6 100644 --- a/pages/house/house.vue +++ b/pages/house/house.vue @@ -3,8 +3,8 @@ - + @@ -13,15 +13,15 @@ @change="onSearch"> - - - @@ -35,12 +35,10 @@ {{ item.houseTitle }} {{ item.extent }}m²|{{ item.toward }} - {{ item.rent }}元/月 + {{ item.monthlyRent }}元/月 - - + + @@ -61,6 +61,7 @@ import * as Util from '@/utils/util.js' import store from '@/store' import storage from '@/utils/storage' + import * as DictApi from '@/api/dict.js' import * as HouseInfoApi from '@/api/house-info.js' const menu = [{ @@ -72,42 +73,10 @@ reset: false } ]; - const region = [{ - value: 0, - text: "青秀区" - }, - { - value: 1, - text: "兴宁区" - } - ]; - const price = [{ - value: 0, - text: "3000" - }, - { - value: 1, - text: "4000" - } - ]; - const extent = [{ - value: 0, - text: "200平" - }, - { - value: 1, - text: "300平" - } - ]; - const sort = [{ - value: 0, - text: "升序" - }, - { - value: 1, - text: "降序" - } - ]; + const region = []; + const price = []; + const extent = []; + const sort = []; const loginUserId = uni.getStorageSync('userId') export default { @@ -118,6 +87,8 @@ status: '加载更多', page: 1, where: {}, + dict: null, + cityList: [], // 控制onShow事件是否刷新订单列表 canReset: false, disabled: false, @@ -130,6 +101,7 @@ price, extent, sort, + // priceScene: null, scrollTop: 0, old: { scrollTop: 0 @@ -144,6 +116,7 @@ }, onLoad() { + this.getDict() this.list = [] this.onRefreshList() }, @@ -169,6 +142,11 @@ const app = this const userId = uni.getStorageSync('userId') app.where.page = app.page + // if (app.priceScene) { + // app.where.monthlyRentStart = app.priceScene + // app.where.monthlyRentEnd = app.priceScene + // } + console.log('app: ',app.where); return new Promise((resolve, reject) => { HouseInfoApi.pageHouseInfo(app.where) .then(result => { @@ -183,11 +161,89 @@ } else { app.canReset = false } - console.log("app.list: ",app.list); + console.log("app.list: ", app.list); resolve(list) }) }) }, + getDict() { + const app = this + DictApi.listDictionary().then(res => { + app.dict = res.data + + app.price = res.data.price[0].map(d => { + return { + value: d, + text: d + } + }) + app.extent = res.data.extent[0].map(d => { + return { + value: d, + text: d + } + }) + app.sort = res.data.sort[0].map(d => { + console.log('d: ',d); + return { + value: d, + text: d + } + }) + + uni.request({ + url: 'https://file.wsdns.cn/json/city.js', + success(res) { + res.data.map(e => { + if(e.value == '450000'){ + e.children.map(city => { + if(city.value == '450100'){ + app.region = city.children.map(r => { + return { + value: r.label, + text: r.label + } + }) + } + }) + } + }); + } + }) + }) + }, + onSearch(text) { + this.list = [] + this.page = 1 + console.log('extentScene: ',this.where.extentScene); + if(text == '0-100㎡'){ + this.where.extentScene = '100' + } + if(text == '100-150㎡'){ + this.where.extentScene = '100-150' + } + if(text == '150-200㎡'){ + this.where.extentScene = '150-200' + } + if(text == '200-300㎡'){ + this.where.extentScene = '200-300' + } + if(text == '300-400㎡'){ + this.where.extentScene = '300-400' + } + if(text == '400-600㎡'){ + this.where.extentScene = '400-600' + } + if(text == '600-1000㎡'){ + this.where.extentScene = '600-1000' + } + if(text == '1000㎡以上'){ + this.where.extentScene = '1000' + } + + this.onRefreshList() + // this.$push('/sub_pages/member/member', this.where) + }, }, watch: { @@ -202,7 +258,7 @@ display: flex; .search { - width: 690rpx; + width: 710rpx; margin: 15rpx auto; display: flex; justify-content: space-between; @@ -211,14 +267,18 @@ } .search-tools { - width: 700rpx; + width: 720rpx; margin: auto; display: flex; justify-content: space-around; + font-size: 22rpx; .region { - width: 170rpx; + width: 178rpx; background-color: #ffffff; + * { + font-size: 22rpx; + } } } diff --git a/pages/index/index.vue b/pages/index/index.vue index 8d47ff4..e5c90b2 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -4,17 +4,21 @@ - 青秀区 + + - + - 青秀区 + + - + @@ -25,7 +29,7 @@ - + @@ -52,6 +56,7 @@ import * as Util from '@/utils/util.js' import store from '@/store' import storage from '@/utils/storage' + import * as DictApi from '@/api/dict.js' import * as HouseInfoApi from '@/api/house-info.js' const menu = [{ @@ -72,7 +77,10 @@ loadMore: true, status: '加载更多', page: 1, - where: {}, + where: { + recommend: 1 + }, + region: [], // 控制onShow事件是否刷新订单列表 canReset: false, disabled: false, @@ -80,6 +88,10 @@ 'https://file.wsdns.cn/20230802/f33f5ac239c843438b36f40941d946ef.png', 'https://file.wsdns.cn/20230802/1116a02b07904991b2ebdc2c3da4a691.png', ], + hotKeywords: [ + '五象航洋城', + '富雅国际金融中心' + ], menu, scrollTop: 0, old: { @@ -89,6 +101,7 @@ }, onLoad() { + this.getDict() this.list = [] this.onRefreshList() }, @@ -110,6 +123,18 @@ } }, methods: { + getDict() { + DictApi.getDictionaryOptions({ + dictCode: 'region' + }).then(res => { + this.region = res.data.map(d => { + return { + value: d.dictDataCode, + text: d.dictDataName + } + }) + }) + }, onRefreshList() { const app = this const userId = uni.getStorageSync('userId') @@ -132,6 +157,28 @@ }) }) }, + onClick(e){ + const index = e.index + this.where = {} + if(index == 0){ + this.where.recommend = 1 + } + if(index == 1){ + this.where.mustSee = 1 + } + this.onSearch() + }, + onNoticeBar(index){ + // console.log('this.hotKeywords[index]: ',this.hotKeywords[index]); + this.where.keywords = this.hotKeywords[index] + this.onSearch() + }, + onSearch() { + this.list = [] + this.page = 1 + this.onRefreshList() + // this.$push('/sub_pages/member/member', this.where) + }, }, watch: { @@ -141,7 +188,7 @@ \ No newline at end of file diff --git a/pages/user/user.vue b/pages/user/user.vue index c282f0d..6bf95cc 100644 --- a/pages/user/user.vue +++ b/pages/user/user.vue @@ -120,17 +120,17 @@ - - - - + + + + - - - - + + + + @@ -445,6 +445,8 @@ app.form = res.data app.userInfo = res.data store.dispatch('setUserInfo', res.data) + // uni.setStorageSync('gradeId',res.data.gradeId) + // uni.setStorageSync('gradeName',res.data.gradeName) app.isLogin = true diff --git a/sub_pages/checkout/checkout.vue b/sub_pages/checkout/checkout.vue index 8b17d30..b7158ae 100644 --- a/sub_pages/checkout/checkout.vue +++ b/sub_pages/checkout/checkout.vue @@ -161,11 +161,10 @@ HouseReservationApi.addHouseReservation(app.form).then(result => { app.$toast(result.message) }).catch(err => { - uni.$u.toast(err) + uni.$u.toast(err.message) }) }).catch(errors => { - console.log("errors: ",errors); - uni.$u.toast('校验失败') + // uni.$u.toast('校验失败') }) }, } diff --git a/sub_pages/feedback/feedback.vue b/sub_pages/feedback/feedback.vue index 59b6dab..d8a35d7 100644 --- a/sub_pages/feedback/feedback.vue +++ b/sub_pages/feedback/feedback.vue @@ -44,7 +44,7 @@ import * as UserProfileApi from '@/api/love-user-profile.js' import * as UploadApi from '@/api/upload' import * as UserFeedbackApi from '@/api/user-feedback.js' - import dict, * as DictApi from '@/api/dict.js' + import * as DictApi from '@/api/dict.js' export default { data() { diff --git a/sub_pages/house/add.vue b/sub_pages/house/add.vue index 7415e16..487829c 100644 --- a/sub_pages/house/add.vue +++ b/sub_pages/house/add.vue @@ -17,7 +17,7 @@ - @@ -129,7 +129,7 @@ + @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9"> @@ -180,7 +180,7 @@ - @@ -196,7 +196,7 @@ dateFormat } from '@/utils/util.js' import * as UserApi from '@/api/user' - import * as HouseInfoApi from '@/api/house-info.js' + import { updateHouseInfo,getHouseInfo } from '@/api/house-info.js' import * as UploadApi from '@/api/upload' import * as DictApi from '@/api/dict.js' @@ -212,6 +212,7 @@ export default { data() { return { + selectId : 0, tabs, tabIndex: 10, dict: null, @@ -270,7 +271,14 @@ /** * 生命周期函数--监听页面加载 */ - onLoad() { + onLoad(options) { + if(options.id > 0){ + uni.setNavigationBarTitle({ + title: '编辑房源' + }) + this.selectId = options.id + this.getHouse(options.id) + } this.getDict() }, @@ -287,6 +295,16 @@ this.dict = res.data; }) }, + getHouse(id){ + const app = this + console.log('id: ',id); + getHouseInfo(id).then(res => { + console.log('res: ',res); + app.form = res.data + app.houseLabel = JSON.parse(app.form.houseLabel) || [] + app.fileList1 = JSON.parse(app.form.files) || [] + }) + }, onChangeTab(e) { const app = this app.tabIndex = e.value @@ -393,8 +411,9 @@ this.$refs.uForm.validate().then(() => { app.form.houseLabel = JSON.stringify(app.houseLabel) app.form.files = JSON.stringify(app.fileList1) - HouseInfoApi.addHouseInfo(app.form).then(result => { - app.$toast(result.message) + const saveOrUpdate = app.selectId > 0 ? updateHouseInfo : addHouseInfo; + saveOrUpdate(app.form).then(result => { + app.$toast('保存成功') }).catch(err => { uni.$u.toast(err) }) diff --git a/sub_pages/house/detail.vue b/sub_pages/house/detail.vue index 2e96386..47547c5 100644 --- a/sub_pages/house/detail.vue +++ b/sub_pages/house/detail.vue @@ -3,17 +3,17 @@ - - {{ currentNum + 1 }}/{{ swiperList.length + 1 }} + {{ currentNum + 1 }}/{{ swiperList.length }} - {{ form.houseTitle }} + {{ form.houseTitle || '' }} @@ -23,19 +23,19 @@ - {{ form.monthlyRent }}元/月 + {{ form.monthlyRent || 0 }}元/月 月租 - {{ form.extent }}m² + {{ form.extent || 0 }}m² 建筑面积 - {{ form.houseType }} + {{ form.houseType || '' }} 户型 - {{ form.floor }} + {{ form.floor || '' }} 楼层 @@ -50,24 +50,32 @@ - 城市:{{ form.city }} + 城市:{{ form.city || '' }} - 区/县:{{ form.region }} + 区/县:{{ form.region || '' }} - 详细地址:{{ form.address }} + 详细地址:{{ form.address || '' }} - 租金(元/m²):{{ form.rent }} + 租金(元/m²):{{ form.rent || '' }} - 房号:{{ form.roomNumber }} + 房号:{{ form.roomNumber || '' }} - 密码:{{ form.password }} + 密码:{{ form.password || '' }} + + 业主电话:{{ form.phone || '' }} + 物业费:{{ form.propertyFees || '' }} + 租期:{{ form.tenancy || '' }} + + 佣金:{{ form.commission || '' }} + + + 是否可溢价:{{ form.premium || '' }} - 业主电话:{{ form.phone }} @@ -115,9 +123,7 @@ - + @@ -33,39 +38,19 @@ - - - - - 整租·万科云城 2室1厅1卫 - 50.8m²|南 - 6600元/月 + + + + + + {{ item.houseTitle }} + {{ item.extent }}m²|{{ item.toward }} + {{ item.rent }}元/月 + - - - - - 整租·万科云城 2室1厅1卫 - 50.8m²|南 - 6600元/月 - - - - - - 整租·万科云城 2室1厅1卫 - 50.8m²|南 - 6600元/月 - - - - - - 整租·万科云城 2室1厅1卫 - 50.8m²|南 - 6600元/月 - - + + + @@ -89,12 +74,19 @@ import * as UserProfileApi from '@/api/love-user-profile.js' import * as UploadApi from '@/api/upload' import * as DictApi from '@/api/dict.js' + import * as HouseInfoApi from '@/api/house-info.js' export default { data() { return { + list: [], + loadMore: true, + status: '加载更多', + page: 1, + where: {}, select: [], - bgColor: '#ffffff' + bgColor: '#ffffff', + selectId: 0 } }, @@ -102,6 +94,8 @@ * 生命周期函数--监听页面加载 */ onLoad() { + this.list = [] + this.onRefreshList() // this.getDict() }, @@ -112,13 +106,74 @@ // this.$refs.datetimePicker.setFormatter(this.formatter) }, + // 触底函数 + onReachBottom() { + console.log("触底函数: "); + const app = this + if (app.loadMore) { + app.page = ++app.page; + app.onRefreshList() + } + }, methods: { + onRefreshList() { + const app = this + const userId = uni.getStorageSync('userId') + app.where.page = app.page + app.where.userId = userId + return new Promise((resolve, reject) => { + HouseInfoApi.pageHouseInfo(app.where) + .then(result => { + const list = result.data.list.map(d => { + d.files = JSON.parse(d.files) || [] + return d + }) + // 合并新数据 + app.list = app.list.concat(list) + if (result.data.count > app.list.length) { + app.canReset = true + } else { + app.canReset = false + } + console.log("app.list: ",app.list); + resolve(list) + }) + }) + }, + + onEdit(){ + const { selectId } = this + if(selectId > 0){ + this.$push('sub_pages/house/add?id=' + selectId) + } + + }, + + onDel(){ + const app = this + const { selectId } = this + if(selectId > 0){ + HouseInfoApi.removeHouseInfo(selectId).then(res => { + + }) + } + }, + onStatus(status){ + console.log('this.select: ',this.select); + }, onSearch() { - this.$push('/sub_pages/member/member', this.where) + console.log('this.where: ',this.where); + this.list = [] + this.page = 1 + this.onRefreshList() + // this.$push('/sub_pages/member/member', this.where) }, onBadge(id){ + this.selectId = id this.bgColor = '#ff0000' + this.select.push(id) + console.log('this.select: ',this.select); } } } @@ -131,8 +186,6 @@