Lou
2023-11-03 c247a506d95bbe4ec66d92d08096c7107e799e21
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_app
9 files modified
967 ■■■■■ changed files
api/doorplateAddress/doorplateAddress.js 200 ●●●● patch | view | raw | blame | history
pages/home/index.vue 15 ●●●● patch | view | raw | blame | history
subPackage/bs/components/list/rentList.vue 79 ●●●●● patch | view | raw | blame | history
subPackage/bs/views/rentDetail.vue 27 ●●●●● patch | view | raw | blame | history
subPackage/bs/views/zhsb.vue 9 ●●●● patch | view | raw | blame | history
subPackage/house/family/index.vue 21 ●●●● patch | view | raw | blame | history
subPackage/house/list/index.vue 6 ●●●●● patch | view | raw | blame | history
subPackage/house/roomControl/index.vue 505 ●●●● patch | view | raw | blame | history
subPackage/house/roomDetails/index.vue 105 ●●●● patch | view | raw | blame | history
api/doorplateAddress/doorplateAddress.js
@@ -1,98 +1,108 @@
import http from '@/http/api.js'
import {
    devUrl,
    prodUrl,
    contentType
} from '@/common/setting'
export const getDoorplateAddressList = (code, type) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getDoorplateAddressList',
        method: 'GET',
        params: {
            code,
            type
        }
    })
}
export const getFuncList = (type, roleName) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getFuncList',
        method: 'GET',
        params: {
            type,
            roleName
        }
    })
}
// 获取社区信息
export const getHouseList = (param) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getHousesList',
        method: 'GET',
        params: param
    })
}
// 获取当前房屋出租信息
export const getHouseRentInfo = (code) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getHouseRentInfo',
        method: 'GET',
        params: {
            code
        }
    })
}
// 获取房屋标签信息
export const getHouseLabelList = () => {
    return http.request({
        url: 'blade-label/label/getLabelList',
        method: 'GET',
        params: {
            parentId: 1001
        }
    })
}
// 获取房屋详细信息
export const getHouseDetail = (houseCode) => {
    return http.request({
        url: 'blade-house/house/getHouseDetail',
        method: 'GET',
        params: {
            houseCode
        }
    })
}
// 获取房屋详细信息
export const addHouseRental = (data) => {
    return http.request({
        url: 'blade-houseRental/houseRental/add',
        method: 'POST',
        data
    })
}
export const uploadFile = (data) => {
    return http.request({
        url: 'blade-resource/oss/endpoint/put-file',
        method: 'post',
        custom: {
            Authorization: true
        },
        data
    })
}
// 获取门牌地址
export const getDoorplateAddressDetail = (params) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getDoorplateAddressDetail',
        method: 'GET',
        params: {
            ...params
        }
    })
import {
    clientId,
    clientSecret
} from '@/common/setting'
export const getDoorplateAddressList = (code, type) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getDoorplateAddressList',
        method: 'GET',
        params: {
            code,
            type
        }
    })
}
export const getFuncList = (type, roleName) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getFuncList',
        method: 'GET',
        params: {
            type,
            roleName
        }
    })
}
// 获取社区信息
export const getHouseList = (param) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getHousesList',
        method: 'GET',
        params: param
    })
}
// 获取当前房屋出租信息
export const getHouseRentInfo = (code) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getHouseRentInfo',
        method: 'GET',
        params: {
            code
        }
    })
}
// 获取房屋标签信息
export const getHouseLabelList = () => {
    return http.request({
        url: 'blade-label/label/getLabelList',
        method: 'GET',
        params: {
            parentId: 1001
        }
    })
}
// 获取房屋详细信息
export const getHouseDetail = (houseCode) => {
    return http.request({
        url: 'blade-house/house/getHouseDetail',
        method: 'GET',
        params: {
            houseCode
        }
    })
}
// 获取房屋详细信息
export const addHouseRental = (data) => {
    return http.request({
        url: 'blade-houseRental/houseRental/add',
        method: 'POST',
        data
    })
}
export const uploadFile = (file) => {
    return uni.uploadFile({
        url: (process.env.NODE_ENV === 'development' ? devUrl : prodUrl ) + '/blade-resource/oss/endpoint/put-file',
        filePath: file,
        name: 'file',
        header: {
            Authorization: uni.getStorageSync('accessToken')
        }
    })
}
// 获取门牌地址
export const getDoorplateAddressDetail = (params) => {
    return http.request({
        url: 'blade-doorplateAddress/doorplateAddress/getDoorplateAddressDetail',
        method: 'GET',
        params: {
            ...params
        }
    })
}
pages/home/index.vue
@@ -301,9 +301,9 @@
                    title: '-',
                    useSlot: true
                }],
                menuList: [],
                curHouseCode: ''
                menuList: [],
                curHouseCode: ''
            }
        },
@@ -421,7 +421,7 @@
                console.log('confirm', e)
                this.curSelectSite = e.value[e.value.length - 1]
                this.selectBoxShow = false
                this.getHouseDataList(e.value[1]?.id)
                this.getHouseDataList(e.value[1]?.id)
                this.curHouseCode = e.value[0].id
                console.log("curSite=>", this.curSelectSite);
            },
@@ -525,6 +525,13 @@
            navTo() {
                if (this.curHouseCode === '') {
                    uni.showToast({
                        title: "请选择地址",
                        icon: "error"
                    })
                    return
                }
                this.$u.func.globalNavigator(`/subPackage/bs/views/zhsb?houseCode=${this.curHouseCode}`, "navTo")
            },
subPackage/bs/components/list/rentList.vue
@@ -11,7 +11,7 @@
            <view class="line">
                <view class="l">{{item.rentalTime}} - {{item.dueTime}}</view>
                <view class="r status">
                <view class="r status">
                    {{ findObjValue(item.status, status) }}
                </view>
            </view>
@@ -22,7 +22,7 @@
                <u-button icon="calendar" class="btn-item" type="primary" plain text="续租"
                    @click="xzHandleClick(item)"></u-button>
                <u-button icon="order" class="btn-item" type="primary" plain text="终止"
                    @click="terminate(item)"></u-button>
                    :disabled="item.status == 1 || item.status == 2" @click="terminate(item)"></u-button>
            </view>
        </view>
@@ -57,29 +57,28 @@
                isPickerShow: false,
                istPickerShow: false,
                currentRentalId: '',
                isModelShow: false,
                status: [
                    {
                        name: '未到期',
                        value: 0
                    },
                    {
                        name: '已到期',
                        value: 1
                    },
                    {
                        name: '已终止',
                        value: 2
                    },
                isModelShow: false,
                status: [{
                        name: '未到期',
                        value: 0
                    },
                    {
                        name: '已到期',
                        value: 1
                    },
                    {
                        name: '已终止',
                        value: 2
                    },
                ]
            }
        },
        methods: {
            findObjValue(value, obj) {
                const res = obj.find(item => {
                    return item.value == value
                })
                return res.name
        methods: {
            findObjValue(value, obj) {
                const res = obj.find(item => {
                    return item.value == value
                })
                return res.name
            },
            deleteRental(item) {
                this.currentRentalId = item.housingRentalId
@@ -89,9 +88,17 @@
                const {
                    code,
                    data
                } = await deleteRentalInfo(this.currentRentalId)
                console.log(code, data)
                } = await deleteRentalInfo(this.currentRentalId)
                if (code !== 200) {
                    uni.showToast({
                        title: "删除失败",
                        icon: "error",
                        duration: 1500
                    })
                    return
                }
                this.isModelShow = false
                this.$emit('refreshData')
            },
            pushPage(item) {
                const {
@@ -113,9 +120,18 @@
                    id: this.currentRentalId,
                    dueTime: time
                })
                if (res.code !== 200) {
                    uni.showToast({
                        title: "续租失败",
                        icon: "error",
                        duration: 1500
                    })
                    return
                }
                this.isPickerShow = false
                this.$emit('refreshData')
            },
            async terminate(item) {
            terminate(item) {
                this.currentRentalId = item.housingRentalId
                this.istPickerShow = true
            },
@@ -124,8 +140,17 @@
                const res = await updateDueTime({
                    id: this.currentRentalId,
                    terminationTime: time
                })
                this.isPickerShow = false
                })
                if (res.code !== 200) {
                    uni.showToast({
                        title: "终止失败",
                        icon: "error",
                        duration: 1500
                    })
                    return
                }
                this.istPickerShow = false
                this.$emit('refreshData')
            }
        }
    }
subPackage/bs/views/rentDetail.vue
@@ -9,13 +9,13 @@
                    <u-icon slot="right" name="arrow-right"></u-icon>
                </u-form-item>
                <u-form-item @click="showSelectBus(dataList.houseType, '房屋状态', 'houseTypeName', 'houseType')"
                    class="form-item" labelWidth="100" label="房屋状态:" required prop="houseType">
                    class="form-item" labelWidth="100" label="房屋状态:" required prop="houseTypeName">
                    <u--input border="none" v-model="houseTypeName" disabled disabledColor="#ffffff" placeholder="请选择">
                    </u--input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
                </u-form-item>
                <u-form-item @click="showSelectBus(dataList.rentalUse, '租房用途', 'rentalUseName', 'rentalUse')"
                    class="form-item" labelWidth="100" label="租房用途:" required prop="rentalUse">
                    class="form-item" labelWidth="100" label="租房用途:" required prop="rentalUseName">
                    <u--input border="none" v-model="rentalUseName" disabled disabledColor="#ffffff" placeholder="请选择">
                    </u--input>
                    <u-icon slot="right" name="arrow-right"></u-icon>
@@ -106,7 +106,9 @@
                currentRole: '',
                form: {
                    relation: "",
                    rentTime: "",
                    rentTime: "",
                    houseTypeName: "",
                    rentalUseName: "",
                    dueTime: "",
                },
                imagesList: [],
@@ -115,11 +117,11 @@
                        required: true,
                        message: '请选择租客关系'
                    }],
                    houseType: [{
                    houseTypeName: [{
                        required: true,
                        message: '请选择房屋状态'
                    }],
                    rentalUse: [{
                    rentalUseName: [{
                        required: true,
                        message: '请选择房屋用途'
                    }],
@@ -225,10 +227,8 @@
                this.dueTimeShow = false
            },
            async afterReadImg(e) {
                // const formData = new FormData()
                // const { file } = e
                // formData.append('file', file[0])
                // const res = await uploadFile(formData)
                console.log(this.$store);
            },
            addRentForm() {
                this.rentFormNum++
@@ -252,12 +252,13 @@
                }catch(e){
                    uni.showToast({
                        title: "删除失败",
                        icon: "success",
                        icon: "error",
                        duration: 1500
                    })
                }
            },
            saveOrUpdate() {
            saveOrUpdate() {
                console.log(this.rentalUseName, this.houseTypeName);
                this.$refs.form.validate().then(res => {
                    let rentFormValidGroup = []
                    this.$refs.rentform.forEach(item => {
@@ -375,7 +376,9 @@
                this.form = {
                    relation: tenantRelationship,
                    rentTime: rentalTime,
                    dueTime: dueTime,
                    dueTime: dueTime,
                    houseTypeName: houseStatus,
                    rentalUseName: rentalUse
                }
                this.rentalUseName = this.findObjValue(rentalUse, this.dataList.rentalUse)
                this.relationName = this.findObjValue(tenantRelationship, this.dataList.relation)
subPackage/bs/views/zhsb.vue
@@ -22,7 +22,7 @@
                <view class="title">出租管理</view>
            </view>
            <view class="list">
                <rentList :list="rentList"></rentList>
                <rentList :list="rentList" @refreshData="refreshData"></rentList>
            </view>
        </view>
@@ -79,19 +79,24 @@
            } = res.data
            this.rentList = []
            this.location = (!!aoiName ? aoiName : '') + buildingName
            this.room = (!!unitName ? unitName : '') + doorplateName + "室"
            this.room = (!!unitName ? unitName : '') + doorplateName + "室"
            this.num = 0
            houseRentalList !== 0 && houseRentalList.forEach(item => {
                const { houseTenantVOList, dueTime, rentalTime } = item
                item.num = houseTenantVOList.length
                this.num += item.num
                if (item.num !== 0) {
                    item.name = houseTenantVOList[0].name
                    item.housingRentalId = houseTenantVOList[0].housingRentalId
                }
                this.rentList = houseRentalList
            })
        },
        addRent() {
            this.$u.func.globalNavigator("/subPackage/bs/views/rentDetail?houseCode=" + this.houseCode)
        },
        refreshData() {
            this.getHouseRent()
        }
    }
}
subPackage/house/family/index.vue
@@ -47,13 +47,13 @@
                            </view>
                        </view>
                    </u-collapse-item>
                    <u-collapse-item v-show="isShowShop" style="border: none;" title="商铺"
                    <u-collapse-item class="sp-list" v-show="isShowShop" style="border: none;" title="商铺"
                        >
                        <view class="house-list-box" v-for="(item, index) in shopList" :name="index" :key="index" @click.native="pushShopPage(item)">
                        <view class="house-list-box flex" v-for="(item, index) in shopList" :name="index" :key="index" @click.native="pushShopPage(item)">
                            <view class="l">
                                <u-icon name="home" color="#fff"></u-icon>
                            </view>
                            <view class="r">
                            <view class="r nowrap-ellipsis-hidden">
                                {{item.floor}}
                            </view>
                        </view>
@@ -105,7 +105,7 @@
                    type:3,
                    code:this.currentId,
                    name: this.addressType==1?"":this.neiCode,
                    addressType :this.addressType
                    addressType :this.addressType==3?2:1
                }
                const res = await getHouseList(param)
                const aoiList = res.data.aoiList
@@ -219,7 +219,20 @@
                color: #fff;
                background: linear-gradient(to right, #417BE9, #6D9FFB);
                box-sizing: border-box;
                .r {
                    width: 0;
                    flex: 1;
                }
            }
        }
    }
    .sp-list {
        /deep/ .u-collapse-item__content__text {
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
        }
    }
</style>
subPackage/house/list/index.vue
@@ -92,14 +92,16 @@
            },
            pushPage(value) {
                const { id, title,addressType } = value
                if(addressType == 1){
                // addressType == 3 街路巷
                if(addressType == 1 || addressType == 3){
                    if (id !== void 0) {
                        let url = `/subPackage/house/family/index?id=${id}&housingName=${this.curHouseTitle}
                        &buildingName=${title}&addressType=${addressType}&neiCode=${this.currentId}`
                        this.$u.func.globalNavigator(url, "navTo")
                    }
                }else{
                    // 跳转场所页面
                    // 跳转场所页面 addressType == 2
                }
            }
        }
subPackage/house/roomControl/index.vue
@@ -1,247 +1,260 @@
<template>
    <view class="container">
        <view class="main">
            <view class="content">
                <u-form labelWidth="70" :model="form" ref="form">
                    <box-title title=""></box-title>
                    <view class="basic-info mt-20">
                        <u-form-item class="form-item" labelWidth="100" label="绑定手机" required>
                            <u--input border="none" v-model="form.phone" placeholder="请输入">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="地址" required>
                            <u--input border="none" v-model="form.address">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="物业月费" required>
                            <u--input border="none" v-model="form.property_price">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="到期时间" required>
                            <u--input border="none" v-model="form.service_due">
                            </u--input>
                        </u-form-item>
                    </view>
                    <box-title class="mt-20" title="房屋外观"></box-title>
                    <view class="pic mt-20">
                        <u-upload :fileList="form.image_urls" :previewFullImage="uploadConfig.previewFullImage"
                            :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                            :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg"
                            @delete="deletePic">
                        </u-upload>
                    </view>
                    <box-title title="房屋标签"></box-title>
                    <view class="mt-20 flex label-btn-box b-c-w">
                        <view v-for="(item, index) in labelBtnList" :key="index">
                            <u-button color="#000" size="mini" type="primary" :plain="true" :text="item.name" @click="showLabelPopup(item)"></u-button>
                        </view>
                    </view>
                </u-form>
            </view>
            <view class="edit-btn">
                <u-button type="primary" text="修改数据"></u-button>
            </view>
        </view>
        <u-modal style="flex: none;" :show="popupShow" :closeOnClickOverlay="true" showCancelButton @cancel="popupShow = false" @confirm="popupConfirm">
            <view class="slot-content">
                <view class="flex_base">
                    {{ labelModelInfo.title }}
                </view>
                <u-radio-group class="mt-40" v-model="labelValue" placement="row">
                    <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in labelList" :key="index"
                        :label="item.name" :name="item.name" :activeColor="item.color" @change="radioChange(item)">
                    </u-radio>
                </u-radio-group>
                <u--textarea class="mt-40" v-model="value1" placeholder="请输入内容"></u--textarea>
            </view>
        </u-modal>
        <!-- 租客关系下拉框 -->
        <my-select v-if="showList.relation" :show="showList.relation" v-model="form.relation" type="radio"
            popupTitle="请选择租客关系" :dataLists="dataList.relation" @cancel="showList.relation = false">
        </my-select>
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        getHouseDetail,
        getHouseLabelList
    } from "@/api/doorplateAddress/doorplateAddress";
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                houseCode: '',
                form: {
                    phone: "",
                    address: "",
                    property_price: "",
                    service_due: "",
                    image_urls: []
                },
                showList: {
                    relation: false
                },
                nameList: {
                    relation: ""
                },
                dataList: {
                    relation: []
                },
                popupShow: false,
                labelBtnList: [],
                // 安置房弹框中
                labelList: [{
                        name: '撤销',
                        disabled: false,
                        color: '#EBEDF0'
                    },
                    {
                        name: '绿',
                        disabled: false,
                        color: '#07C160'
                    },
                    {
                        name: '黄',
                        disabled: false,
                        color: '#FF976A'
                    }, {
                        name: '红',
                        disabled: false,
                        color: '#EE0A24'
                    }
                ],
                labelModelInfo: {
                    title: '',
                    selectedColor: ''
                },
                labelValue: '苹果',
                value1: ''
            }
        },
        created() {
        },
        mounted() {
        },
        onLoad(option) {
            const { code } = option
            this.houseCode = code
        },
        onShow() {
            this.getLabelList()
            this.getHouseDetailInfo()
        },
        methods: {
            showLabelPopup(item) {
                this.popupShow = true
                this.labelModelInfo.title = item.name
            },
            popupConfirm(){
                this.popupShow = false
            },
            radioChange(item) {
            },
            async getHouseDetailInfo() {
                const res = await getHouseDetail()
                // const { phone, address, property_price, service_due, image_urls } = res.data
                // this.form = {
                //     phone,
                //     address,
                //     property_price,
                //     service_due,
                //     image_urls: [
                //         image_urls
                //     ]
                // }
            },
            async getLabelList() {
                const res = await getHouseLabelList()
                this.labelBtnList = res.data
            }
        }
    }
</script>
<style scoped lang="scss">
    .container {
        position: relative;
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: column;
        background: #F9F9FA;
        .main {
            position: relative;
            height: 0;
            flex: 1;
            display: flex;
            flex-direction: column;
            .content {
                height: 0;
                flex: 1;
                overflow-y: auto;
                .basic-info {
                    .form-item {
                        background-color: #ffffff;
                        padding: 5rpx 20rpx;
                        border-bottom: 1px solid #eff1f3;
                    }
                }
                .pic {
                    background-color: #ffffff;
                    padding: 40rpx 30rpx;
                }
                .label-btn-box {
                    padding: 10rpx 0;
                    &>view {
                        margin: 0 10rpx;
                        .u-button {
                            padding: 6rpx 8rpx;
                        }
                    }
                }
            }
            .edit-btn {
                padding: 0 20rpx;
                height: 116rpx;
                display: flex;
                justify-content: space-around;
                align-items: center;
                background: #fff;
                border-top: 1rpx solid #ccc;
            }
        }
    }
<template>
    <view class="container">
        <view class="main">
            <view class="content">
                <u-form labelWidth="70" :model="form" ref="form">
                    <box-title title=""></box-title>
                    <view class="basic-info mt-20">
                        <u-form-item class="form-item" labelWidth="100" label="绑定手机" required>
                            <u--input border="none" v-model="form.phone" placeholder="请输入">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="地址" required>
                            <u--input border="none" v-model="form.address" disabled>
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="物业月费" required>
                            <u--input border="none" v-model="form.property_price" disabled>
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="到期时间" required>
                            <u--input border="none" v-model="form.service_due" disabled>
                            </u--input>
                        </u-form-item>
                    </view>
                    <box-title class="mt-20" title="房屋外观"></box-title>
                    <view class="pic mt-20">
                        <u-upload :fileList="form.image_urls" :previewFullImage="uploadConfig.previewFullImage"
                            :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                            :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg"
                            @delete="deletePic">
                        </u-upload>
                    </view>
                    <box-title title="房屋标签"></box-title>
                    <view class="mt-20 flex label-btn-box b-c-w">
                        <view v-for="(item, index) in labelBtnList" :key="index">
                            <u-button color="#000" size="mini" type="primary" :plain="true" :text="item.name"
                                @click="showLabelPopup(item)"></u-button>
                        </view>
                    </view>
                </u-form>
            </view>
            <view class="edit-btn">
                <u-button type="primary" text="修改数据"></u-button>
            </view>
        </view>
        <u-modal style="flex: none;" :show="popupShow" :closeOnClickOverlay="true" showCancelButton
            @cancel="popupShow = false" @confirm="popupConfirm">
            <view class="slot-content">
                <view class="flex_base">
                    {{ labelModelInfo.title }}
                </view>
                <u-radio-group class="mt-40" v-model="labelValue" placement="row">
                    <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in labelList" :key="index"
                        :label="item.name" :name="item.name" :activeColor="item.color" @change="radioChange(item)">
                    </u-radio>
                </u-radio-group>
                <u--textarea class="mt-40" v-model="value1" placeholder="请输入内容"></u--textarea>
            </view>
        </u-modal>
        <!-- 租客关系下拉框 -->
        <my-select v-if="showList.relation" :show="showList.relation" v-model="form.relation" type="radio"
            popupTitle="请选择租客关系" :dataLists="dataList.relation" @cancel="showList.relation = false">
        </my-select>
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        getHouseDetail,
        getHouseLabelList,
        uploadFile
    } from "@/api/doorplateAddress/doorplateAddress";
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                houseCode: '',
                form: {
                    phone: "",
                    address: "",
                    property_price: "",
                    service_due: "",
                    image_urls: []
                },
                showList: {
                    relation: false
                },
                nameList: {
                    relation: ""
                },
                dataList: {
                    relation: []
                },
                popupShow: false,
                labelBtnList: [],
                // 安置房弹框中
                labelList: [{
                        name: '撤销',
                        disabled: false,
                        color: '#EBEDF0'
                    },
                    {
                        name: '绿',
                        disabled: false,
                        color: '#07C160'
                    },
                    {
                        name: '黄',
                        disabled: false,
                        color: '#FF976A'
                    }, {
                        name: '红',
                        disabled: false,
                        color: '#EE0A24'
                    }
                ],
                labelModelInfo: {
                    title: '',
                    selectedColor: ''
                },
                labelValue: '苹果',
                value1: ''
            }
        },
        created() {
        },
        mounted() {
        },
        onLoad(option) {
            const {
                code
            } = option
            this.houseCode = code
        },
        onShow() {
            this.getLabelList()
            this.getHouseDetailInfo()
        },
        methods: {
            showLabelPopup(item) {
                this.popupShow = true
                this.labelModelInfo.title = item.name
            },
            popupConfirm() {
                this.popupShow = false
            },
            radioChange(item) {
            },
            async getHouseDetailInfo() {
                const res = await getHouseDetail()
                // const { phone, address, property_price, service_due, image_urls } = res.data
                // this.form = {
                //     phone,
                //     address,
                //     property_price,
                //     service_due,
                //     image_urls: [
                //         image_urls
                //     ]
                // }
            },
            async getLabelList() {
                const res = await getHouseLabelList()
                this.labelBtnList = res.data
            },
            async afterReadImg(event) {
                let lists = [].concat(event.file)
                lists.forEach(item => {
                    const { url } = item
                    uploadFile(item)
                })
            }
        }
    }
</script>
<style scoped lang="scss">
    .container {
        position: relative;
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: column;
        background: #F9F9FA;
        .main {
            position: relative;
            height: 0;
            flex: 1;
            display: flex;
            flex-direction: column;
            .content {
                height: 0;
                flex: 1;
                overflow-y: auto;
                .basic-info {
                    .form-item {
                        background-color: #ffffff;
                        padding: 5rpx 20rpx;
                        border-bottom: 1px solid #eff1f3;
                    }
                }
                .pic {
                    background-color: #ffffff;
                    padding: 40rpx 30rpx;
                }
                .label-btn-box {
                    padding: 10rpx 0;
                    &>view {
                        margin: 0 10rpx;
                        .u-button {
                            padding: 6rpx 8rpx;
                        }
                    }
                }
            }
            .edit-btn {
                padding: 0 20rpx;
                height: 116rpx;
                display: flex;
                justify-content: space-around;
                align-items: center;
                background: #fff;
                border-top: 1rpx solid #ccc;
            }
        }
    }
</style>
subPackage/house/roomDetails/index.vue
@@ -22,7 +22,7 @@
                        <view class="l flex-1 flex">
                            <view class="flex_base">
                                <view class="head-img flex_base">
                                    <u--image shape="circle" :showLoading="true" :src="item.src" width="120rpx"
                                    <u--image shape="circle" :showLoading="true" :src="item.src|| '/static/icon/user-01.png'"  width="120rpx"
                                        height="120rpx"></u--image>
                                </view>
                            </view>
@@ -77,17 +77,20 @@
                                {{item.rentalTime}} - {{item.dueTime}}
                            </view>
                            <view class="r">
                                {{item.status == 1 ? '已到期' : '未到期'}}
                                {{findObjValue(item.status, status)}}
                            </view>
                        </view>
                        <view class="btn-box flex j-c-s-a">
                            <u-button color="#CDF3DF" text="修改"></u-button>
                            <u-button color="#DAE7FF" text="续租"></u-button>
                            <u-button color="#FCCED3" text="终止"></u-button>
                            <u-button color="#CDF3DF" text="修改" @click="editRent(item)"></u-button>
                            <u-button color="#DAE7FF" text="续租" @click="reletRent(item)"></u-button>
                            <u-button color="#FCCED3" text="终止" @click="deleteRent(item)"></u-button>
                        </view>
                    </view>
                </view>
                <u-datetime-picker :show="isPickerShow" @cancel="isPickerShow = false" mode="date"
                    @confirm="dueTimeConfirm"></u-datetime-picker>
                <u-datetime-picker :show="istPickerShow" @cancel="istPickerShow = false" mode="date"
                    @confirm="terminateTimeConfirm"></u-datetime-picker>
                <u-divider text="已经到底了"></u-divider>
            </view>
@@ -100,14 +103,19 @@
                    <u-button type="primary" :plain="true" text="添加租赁信息" @click="addRental"></u-button>
                </view>
            </view>
        </view>
        </view>
    </view>
</template>
<script>
    import {
        getHouseRentInfo
    } from "@/api/doorplateAddress/doorplateAddress";
    } from "@/api/doorplateAddress/doorplateAddress";
    import {
        deleteRentalInfo,
        updateDueTime
    } from "@/api/houseRental/houseRental.js";
    export default {
        components: {},
@@ -125,7 +133,24 @@
                    allNum: 0
                },
                ownerInfoList: [],
                rentOutList: []
                rentOutList: [],
                isPickerShow: false,
                istPickerShow: false,
                currentRentalId: '',
                isModelShow: false,
                status: [{
                        name: '未到期',
                        value: 0
                    },
                    {
                        name: '已到期',
                        value: 1
                    },
                    {
                        name: '已终止',
                        value: 2
                    },
                ]
            }
        },
@@ -157,14 +182,15 @@
                    houseName,
                    unitName,
                    houseRentalList,
                    householdList
                    householdList,
                    subAoi
                } = res.data
                this.houseCode = addressCode
                this.rentOutList = houseRentalList
                this.ownerInfoList = householdList
                this.houseInfo.houseName = houseName
                this.houseInfo.unitName = unitName
                this.houseInfo.houseTitle = aoiName + ':' + buildingName
                this.houseInfo.houseTitle =( aoiName || subAoi) + ':' + buildingName
                // 判断当前租客有没有过期
                this.rentOutList.forEach(item => {
                    // 事件格式处理
@@ -174,6 +200,7 @@
                    item.allNum = item.houseTenantVOList.length
                    // 多人个租客将第一个作为显示
                    item.tenant = item.houseTenantVOList.length > 0 ? item.houseTenantVOList[0].name : ''
                    item.housingRentalId = item.houseTenantVOList[0]?.housingRentalId
                })
                this.houseInfo.allNum = householdList.length
@@ -188,7 +215,61 @@
            },
            addMember() {
                this.$u.func.globalNavigator('/subPackage/house/member/index')
            }
            },
            editRent(item) {
                const { houseCode, id } = item
                this.$u.func.globalNavigator(`/subPackage/bs/views/rentDetail?houseCode=${houseCode}&id=${id}`)
            },
            reletRent(item) {
                console.log(item);
                this.currentRentalId = item.housingRentalId
                this.isPickerShow = true
            },
            deleteRent(item) {
                this.currentRentalId = item.housingRentalId
                this.istPickerShow = true
            },
            async dueTimeConfirm(e) {
                const time = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
                const res = await updateDueTime({
                    id: this.currentRentalId,
                    dueTime: time
                })
                if (res.code !== 200) {
                    uni.showToast({
                        title: "续租失败",
                        icon: "error",
                        duration: 1500
                    })
                    return
                }
                this.isPickerShow = false
                this.getHouseRentInfoList()
            },
            async terminateTimeConfirm(e) {
                const time = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
                const res = await updateDueTime({
                    id: this.currentRentalId,
                    terminationTime: time
                })
                if (res.code !== 200) {
                    uni.showToast({
                        title: "终止失败",
                        icon: "error",
                        duration: 1500
                    })
                    return
                }
                this.istPickerShow = false
                this.getHouseRentInfoList()
            },
            findObjValue(value, obj) {
                const res = obj.find(item => {
                    return item.value == value
                })
                return res.name
            },
        }
    }
</script>