房源信息模块

This commit is contained in:
gxwebsoft
2023-08-08 20:02:22 +08:00
parent 1b923e5cff
commit 93e0876e13
11 changed files with 343 additions and 146 deletions

View File

@@ -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('校验失败')
})
},
}

View File

@@ -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() {

View File

@@ -17,7 +17,7 @@
</u-form-item>
<u-form-item prop="area">
<u-cell title="城市" @click="onArea" :isLink="true">
<u-input slot="value" class="input" v-model="form.area" inputAlign="right" maxlength="30"
<u-input slot="value" class="input" v-model="form.city" inputAlign="right" maxlength="30"
:border="false" placeholder="请选择所在城市" />
</u-cell>
</u-form-item>
@@ -129,7 +129,7 @@
<view class="form-wrapper">
<view class="images">
<u-upload :fileList="fileList1" :maxSize="3145728" :width="72" :height="72"
@afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="6"></u-upload>
@afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9"></u-upload>
</view>
</view>
</u-form-item>
@@ -180,7 +180,7 @@
<!-- 操作按钮 -->
<view class="footer">
<view class="btn-wrapper">
<u-button text="发布" color="linear-gradient(to bottom, #27b0fd, #3f72f4)" :disabled="disabled"
<u-button text="保存" color="linear-gradient(to bottom, #27b0fd, #3f72f4)" :disabled="disabled"
shape="circle" @click="handleSubmit()"></u-button>
</view>
</view>
@@ -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)
})

View File

@@ -3,17 +3,17 @@
<!-- 幻灯片 -->
<view class="swiper">
<u-swiper :list="form.files" :height="250" :radius="0" @change="e => currentNum = e.current"
<u-swiper :list="swiperList" :height="250" :radius="0" @change="e => currentNum = e.current"
indicatorStyle="right: 20px; bottom: 50px" @click="click">
<view slot="indicator" class="indicator-num">
<text class="indicator-num__text">{{ currentNum + 1 }}/{{ swiperList.length + 1 }}</text>
<text class="indicator-num__text">{{ currentNum + 1 }}/{{ swiperList.length }}</text>
</view>
</u-swiper>
<!-- 房源参数 -->
<view class="house-info">
<view class="title">
{{ form.houseTitle }}
{{ form.houseTitle || '' }}
<!-- 五象航洋城三室一厅采光好新房精装修三房一厅 采光好乘诚意出售 -->
</view>
<view class="label">
@@ -23,19 +23,19 @@
</view>
<view class="dict">
<view class="dict-item">
<text class="title">{{ form.monthlyRent }}/</text>
<text class="title">{{ form.monthlyRent || 0 }}/</text>
<text class="desc">月租</text>
</view>
<view class="dict-item">
<text class="title">{{ form.extent }}</text>
<text class="title">{{ form.extent || 0 }}</text>
<text class="desc">建筑面积</text>
</view>
<view class="dict-item">
<text class="title">{{ form.houseType }}</text>
<text class="title">{{ form.houseType || '' }}</text>
<text class="desc">户型</text>
</view>
<view class="dict-item">
<text class="title">{{ form.floor }}</text>
<text class="title">{{ form.floor || '' }}</text>
<text class="desc">楼层</text>
</view>
</view>
@@ -50,24 +50,32 @@
</view>
<view class="field-list">
<view class="item col-2">
城市{{ form.city }}
城市{{ form.city || '' }}
</view>
<view class="item col-2">
/{{ form.region }}
/{{ form.region || '' }}
</view>
<view class="item col-1">
详细地址{{ form.address }}
详细地址{{ form.address || '' }}
</view>
<view class="item col-2">
租金(/){{ form.rent }}
租金(/){{ form.rent || '' }}
</view>
<view class="item col-2">
房号{{ form.roomNumber }}
房号{{ form.roomNumber || '' }}
</view>
<view class="item col-2">
密码{{ form.password }}
密码{{ form.password || '' }}
</view>
<view class="item col-2">业主电话{{ form.phone || '' }}</view>
<view class="item col-2">物业费{{ form.propertyFees || '' }}</view>
<view class="item col-2">租期{{ form.tenancy || '' }}</view>
<view class="item col-2" v-if="form.gradeName == '公司员工'">
佣金{{ form.commission || '' }}
</view>
<view class="item col-2" v-if="form.gradeName == '公司员工'">
是否可溢价{{ form.premium || '' }}
</view>
<view class="item col-2">业主电话{{ form.phone }}</view>
</view>
</view>
@@ -115,9 +123,7 @@
<u-gap></u-gap>
<view class="user-card">
<u-cell :title="`${form.nickname}`" :label="`发布房源10套`" :border="false">
<u-avatar slot="icon" size="50"
:src="form.avatar"
customStyle="margin: -3px 5px -3px 0"></u-avatar>
<u-avatar slot="icon" size="50" :src="form.avatar" customStyle="margin: -3px 5px -3px 0"></u-avatar>
<!-- <view solt="label">
<text class="desc-text">{{ `ID${item.userId}` }}</text>
<text class="desc-text">{{ `粉丝:${item.id}` }}</text>
@@ -141,7 +147,7 @@
<view class="item" @click="$push('sub_pages/checkout/checkout?id=' + form.houseId)">
<u-button icon="map" type="error" text="预约看房"></u-button>
</view>
<view class="item" @click="onCall">
<view class="item" @click="onCall(form.phone)">
<u-button icon="phone" type="primary" text="电话咨询"></u-button>
</view>
</view>
@@ -265,10 +271,7 @@
form: {
},
swiperList: [
'https://file.wsdns.cn/20230802/f33f5ac239c843438b36f40941d946ef.png',
'https://file.wsdns.cn/20230802/1116a02b07904991b2ebdc2c3da4a691.png',
],
swiperList: [],
menu,
region,
price,
@@ -318,6 +321,7 @@
HouseInfoApi.getHouseInfo(houseId).then(res => {
app.form = res.data
app.form.files = JSON.parse(res.data.files) || []
app.swiperList = app.form.files
app.form.houseLabel = JSON.parse(res.data.houseLabel) || []
// app.form.supporting = JSON.parse(res.data.supporting) || []
}).catch(err => {
@@ -327,9 +331,12 @@
onHeart() {
this.heart = !this.heart
},
onCall() {
onCall(phone) {
if (!phone) {
return false
}
uni.makePhoneCall({
phoneNumber: '15878179339'
phoneNumber: phone
})
}
},

View File

@@ -7,20 +7,25 @@
:actionStyle="actionStyle"></u-search>
</view>
</u-sticky>
{{ select }}
<view class="order-total">
<view class="pay-btn">
<view class="btn">
<u-button text="上架" plain size="small" @click="onPay(item.logId)"></u-button>
<u-button text="上架" plain size="small" @click="onStatus(0)"></u-button>
</view>
<view class="btn">
<u-button text="下架" plain size="small" @click="onPay(item.logId)"></u-button>
<u-button text="下架" plain size="small" @click="onStatus(1)"></u-button>
</view>
<view class="btn">
<u-button text="删除" plain size="small" @click="onPay(item.logId)"></u-button>
<u-button text="删除" plain size="small" @click="onDel()"></u-button>
</view>
<view class="btn">
<u-button text="编辑" plain size="small" @click="onEdit()"></u-button>
</view>
<!-- <view class="btn">
<u-button text="分享" plain size="small" @click="onPay(item.logId)"></u-button>
</view>
</view> -->
<!-- <view class="btn" v-if="item.payStatus == 10">
<u-button text="取消订单" size="small" @click="onRemove(item.logId)"></u-button>
</view> -->
@@ -33,39 +38,19 @@
</u-radio-group>
</view>
<view class="list">
<view class="item" @click="$push('sub_pages/house/detail?id=')">
<view class="badge" @click="onBadge(1)"><u-badge :isDot="true" type="info" :bgColor="bgColor"></u-badge></view>
<image class="image" src="https://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com/v2_rwr9ba.jpg"></image>
<view class="info">
<view class="title">整租·万科云城 2室1厅1卫</view>
<view class="desc"><text>50.8|</text></view>
<view class="price">6600/</view>
<block v-for="(item,index) in list" :key="index">
<view class="item" @click="$push('sub_pages/house/add?id=' + item.houseId)">
<view class="badge" @click.stop="onBadge(item.houseId)"><u-badge :isDot="true" type="info" :bgColor="item.houseId == selectId ? bgColor : ''"></u-badge></view>
<image class="image" :src="item.files[0].url" mode="widthFix"></image>
<view class="info">
<view class="title">{{ item.houseTitle }}</view>
<view class="desc"><text>{{ item.extent }}|{{ item.toward }}</text></view>
<view class="price">{{ item.rent }}/</view>
</view>
</view>
</view>
<view class="item" @click="$push('sub_pages/house/detail?id=')">
<image class="image" src="https://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com/v2_rwr9ba.jpg"></image>
<view class="info">
<view class="title">整租·万科云城 2室1厅1卫</view>
<view class="desc"><text>50.8|</text></view>
<view class="price">6600/</view>
</view>
</view>
<view class="item" @click="$push('sub_pages/house/detail?id=')">
<image class="image" src="https://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com/v2_rwr9ba.jpg"></image>
<view class="info">
<view class="title">整租·万科云城 2室1厅1卫</view>
<view class="desc"><text>50.8|</text></view>
<view class="price">6600/</view>
</view>
</view>
<view class="item" @click="$push('sub_pages/house/detail?id=')">
<image class="image" src="https://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com/v2_rwr9ba.jpg"></image>
<view class="info">
<view class="title">整租·万科云城 2室1厅1卫</view>
<view class="desc"><text>50.8|</text></view>
<view class="price">6600/</view>
</view>
</view>
</block>
<u-empty mode="data" icon="https://file.wsdns.cn/empty/data.png" v-if="list.length == 0">
</u-empty>
</view>
</view>
<u-gap></u-gap>
@@ -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 @@
</style>
<style lang="scss" scoped>
.container {}
.search-wrapper {
display: flex;
height: 64rpx;