| api/article/article.js | ●●●●● patch | view | raw | blame | history | |
| pages.json | ●●●●● patch | view | raw | blame | history | |
| pages/home/index.vue | ●●●●● patch | view | raw | blame | history | |
| static/icon/delete.png | patch | view | raw | blame | history | |
| static/icon/group.png | patch | view | raw | blame | history | |
| static/icon/map.png | patch | view | raw | blame | history | |
| static/icon/person.png | patch | view | raw | blame | history | |
| static/icon/selected.png | patch | view | raw | blame | history | |
| subPackage/article/detail.vue | patch | view | raw | blame | history | |
| subPackage/article/list.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/house/family/index.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/house/list/index.vue | ●●●●● patch | view | raw | blame | history | |
| subPackage/house/roomDetails/index.vue | ●●●●● patch | view | raw | blame | history |
api/article/article.js
File was renamed from api/notice/notice.js @@ -2,7 +2,7 @@ export const getPage = (params) => { return http.request({ url: '/blade-notice/notice/page', url: '/blade-article/article/page', method: 'GET', params: { ...params pages.json
@@ -69,7 +69,7 @@ //公告 { "root": "subPackage/notice", "root": "subPackage/article", "pages": [{ "path": "list", "style": { @@ -373,8 +373,8 @@ "path": "list/index", "style": { "navigationBarTitleText": "楼栋列表", "navigationBarBackgroundColor": "#5887f9", "navigationBarTextStyle": "white", "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "enablePullDownRefresh": false } }, @@ -382,8 +382,8 @@ "path": "family/index", "style": { "navigationBarTitleText": "楼盘", "navigationBarBackgroundColor": "#5887f9", "navigationBarTextStyle": "white", "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "enablePullDownRefresh": false } }, @@ -391,8 +391,8 @@ "path": "roomDetails/index", "style": { "navigationBarTitleText": "房屋详情", "navigationBarBackgroundColor": "#5887f9", "navigationBarTextStyle": "white", "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "enablePullDownRefresh": false } }, pages/home/index.vue
@@ -137,7 +137,7 @@ </view> <view class="notic" v-if="roleType == 2"> <view class="caption flex a-i-c j-c-s-b" @click="navigatorPage('/subPackage/notice/list')"> <view class="caption flex a-i-c j-c-s-b" @click="navigatorPage('/subPackage/article/list')"> <view class="flex a-i-c"> <view class="line"></view> <text class="f-32">通知公告</text> @@ -146,7 +146,7 @@ </view> <view v-for="(item,index) in notice" :key="index"> <view class="notic-list" @click="navigatorPage('/subPackage/notice/detail')"> <view class="notic-list" @click="navigatorPage('/subPackage/article/detail')"> <view class="f-28 mb-30"> {{item.title}} </view> @@ -183,7 +183,7 @@ import { getPage } from "@/api/notice/notice"; } from "@/api/article/article"; export default { data() { return { @@ -385,7 +385,7 @@ } const res = await getPage(param) this.notice = res.data.records // console.table(JSON.stringify(res.data.records)) console.table(JSON.stringify(res.data.records)) }, @@ -761,4 +761,4 @@ border-radius: 16rpx 16rpx 16rpx 16rpx; } } </style> </style> static/icon/delete.png
static/icon/group.png
static/icon/map.png
static/icon/person.png
static/icon/selected.png
subPackage/article/detail.vue
subPackage/article/list.vue
File was renamed from subPackage/notice/list.vue @@ -28,7 +28,7 @@ <script> import { getPage } from "@/api/notice/notice"; } from "@/api/article/article.js"; export default { data(){ return { subPackage/house/family/index.vue
@@ -2,42 +2,50 @@ <view class="container"> <view class="flex f-d-c main"> <view class="cur-header"> <u-icon name="home" color="#fff"></u-icon> {{housingName}}/{{buildingName}} <u-icon name="/static/icon/map.png" width="15" height="18"></u-icon> <view>{{ curSelectSite.name }}/{{housingName}}{{buildingName}}</view> </view> <view class="h0 flex-1 build-list-box"> <view class="h0 flex-1 build-list-box content"> <u-collapse :border="false"> <u-collapse-item v-show="isShowBuild" style="border: none;" :title="item.unitName" :name="index" v-for="(item, index) in buildingList" :key="index"> <view class="flex floor-content" v-for="(cItem, cIndex) in item.children" :key="cIndex"> <u-collapse-item v-show="isShowBuild" style="border: none;" :name="index" v-for="(item, index) in buildingList" :key="index"> <!-- :title="item.unitName" --> <view slot="title" class="flex"> <u-icon name="/static/icon/group.png" size="16"></u-icon> <view style="margin-left: 17rpx;">{{ item.unitName }}</view> </view> <view class="flex floor-content" v-for="(cItem, cIndex) in item.children" :key="cIndex"> <view class="floor-num-box flex a-i-c j-c-c"> {{cItem.floor}} {{cItem.floor}}层 </view> <view class="room-content"> <u-grid class="flex flex-wrap" col="2" :border="true"> <u-grid-item v-for="(scItem, scIndex) in cItem.children" :key="scItem.id" @click.native="pushPage(scItem)"> <u-grid-item v-for="(scItem, scIndex) in cItem.children" :key="scItem.id" @click.native="pushPage(scItem)"> <view class="room-box flex f-d-c"> <view class="flex a-i-c j-c-s-b"> <view class="l">{{scItem.realName}}</view> <view class="flex a-i-c j-c-s-b"> <view class="l"> <u-icon name="/static/icon/person.png" size="16"></u-icon> </view> <view class="r flex"> <view v-show="scItem.residentialStatus"> <u-icon name="photo"></u-icon> <view class="resident-box"> 主 </view> </view> <view v-show="!!scItem.roleType == 1"> <u-icon name="photo"></u-icon> <u-icon name="/static/icon/selected.png" size="16"></u-icon> </view> </view> </view> <view class="flex"> <view class="l flex"> <u-icon name="home" color="blue"></u-icon> {{scItem.houseNo}} <view class="flex floor-info-box"> <view class="l flex proprietor-box"> {{scItem.realName}} </view> <view class="r"> <view class="r floor-box"> {{scItem.houseNo}} </view> </view> @@ -47,11 +55,15 @@ </view> </view> </u-collapse-item> <u-collapse-item class="sp-list" v-show="isShowShop" style="border: none;" title="商铺" > <view class="house-list-box flex" v-for="(item, index) in shopList" :name="index" :key="index" @click.native="pushShopPage(item)"> <u-collapse-item class="sp-list" v-show="isShowShop" style="border: none;"> <view slot="title" class="flex"> <u-icon name="/static/icon/group.png" size="16"></u-icon> <view style="margin-left: 17rpx;">商铺</view> </view> <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> <u-icon name="/static/icon/store.png" width="15" height="18"></u-icon> </view> <view class="r nowrap-ellipsis-hidden"> {{item.floor}} @@ -66,17 +78,17 @@ </view> </template> <script> import { getHouseList <script> import { getHouseList } from "@/api/doorplateAddress/doorplateAddress"; export default { components: {}, data() { return { isShowBuild:false, isShowShop:false, isShowBuild: false, isShowShop: false, currentId: '', housingName: '', buildingName: 0, @@ -84,33 +96,41 @@ // 社区编号 neiCode: "", buildingList: [], shopList:[] shopList: [], curSelectSite: {} } }, onLoad(e) { const { id, housingName, buildingName,addressType, neiCode} = e this.currentId = id this.housingName = housingName this.buildingName = buildingName this.addressType = addressType this.neiCode = neiCode onLoad(e) { const { id, housingName, buildingName, addressType, neiCode } = e this.currentId = id this.housingName = housingName this.buildingName = buildingName this.addressType = addressType this.neiCode = neiCode }, onShow() { this.getBuildingList() onShow() { this.getBuildingList() this.curSelectSite = uni.getStorageSync('curSelectSite') }, methods: { async getBuildingList() { const param = { type:3, code:this.currentId, name: this.addressType==1?"":this.neiCode, addressType :this.addressType==3?2:1 } type: 3, code: this.currentId, name: this.addressType == 1 ? "" : this.neiCode, addressType: this.addressType == 3 ? 2 : 1 } const res = await getHouseList(param) const aoiList = res.data.aoiList const shopList = res.data.shopList if(aoiList.length>0){ if (aoiList.length > 0) { this.isShowBuild = true // 正常展示户室数据 aoiList.forEach(item => { @@ -118,21 +138,25 @@ }) this.buildingList = aoiList || [] } if(shopList.length>0){ if (shopList.length > 0) { this.isShowShop = true this.shopList = shopList || [] } }, pushPage(value) { const { addressCode } = value let url = `/subPackage/house/roomDetails/index?id=${addressCode}` this.$u.func.globalNavigator(url, "navTo") } }, pushPage(value) { const { addressCode } = value let url = `/subPackage/house/roomDetails/index?id=${addressCode}` this.$u.func.globalNavigator(url, "navTo") }, // 跳转到商铺页面 pushShopPage(e){ console.log(e,8888) const { addressCode } = e let url = `/subPackage/house/houseNumber/index?stdId=${addressCode}` pushShopPage(e) { console.log(e, 8888) const { addressCode } = e let url = `/subPackage/house/houseNumber/index?stdId=${addressCode}` this.$u.func.globalNavigator(url, "navTo") } } @@ -155,20 +179,57 @@ height: 0; flex: 1; overflow-y: auto; .content { margin-top: 20rpx; background-color: #fff; .floor-info-box { margin-top: 30rpx; justify-content: space-between; .proprietor-box { color: #333333; } .floor-box { color: #017BFC; font-weight: 700; } } .resident-box { background-color: #30D17C; border-radius: 50%; color: #fff; width: 35rpx; height: 35rpx; text-align: center; line-height: 35rpx; font-size: 20rpx; font-weight: 700; } } .cur-header { padding-left: 16rpx; padding: 20rpx 18rpx; display: flex; align-items: center; min-height: 96rpx; color: #fff; background: #6A9DFD; color: #333333; background: #fff; min-height: 38rpx; view { margin-left: 15rpx; } } .build-list-box { /deep/ .u-cell { background: #A0C0FC !important; } // /deep/ .u-cell { // background: #fff !important; // } /deep/ .u-collapse-item__content__text { padding: 0 !important; @@ -176,25 +237,28 @@ } /deep/ .floor-content { border-bottom: 1rpx solid #ccc; border-bottom: 1rpx solid #f5f5f5; .floor-num-box { width: 50rpx; padding: 0 20rpx !important; background: #EAECF0; background: #FAFBFE; } .room-content { width: 0; flex: 1; background: #FEFEFF; padding: 15rpx; .room-box { padding: 8rpx; padding: 12rpx; justify-content: center; align-items: center; width: 100%; width: calc(100% - 30rpx); min-height: 116rpx; box-sizing: border-box; box-sizing: border-box; background-color: #FAFBFE; margin: 15rpx; &>view { margin: auto; @@ -202,12 +266,12 @@ } } .u-grid-item:nth-child(2n-1) { border-right: 1rpx solid #dadbde !important; .u-grid-item { border: none; } } } .house-list-box { margin: 16rpx; padding: 0 16rpx; @@ -216,11 +280,12 @@ align-items: center; width: calc((100% - 96rpx) / 3); height: 68rpx; border-radius: 34rpx; color: #fff; background: linear-gradient(to right, #417BE9, #6D9FFB); border-radius: 5rpx; color: #333; background: #FAFBFE; box-sizing: border-box; text-align: right; .r { width: 0; flex: 1; @@ -228,7 +293,7 @@ } } } .sp-list { /deep/ .u-collapse-item__content__text { display: flex; subPackage/house/list/index.vue
@@ -1,7 +1,8 @@ <template> <view class="container"> <view class="header"> <u-icon name="map" size="32"></u-icon> <u-icon name="/static/icon/map.png" width="15" height="18"></u-icon> <text>{{ curSelectSite.name }}/{{ curHouseTitle }}</text> </view> <view class="flex f-d-c main"> <view class="flex house-container"> @@ -10,13 +11,13 @@ <u-icon name="/static/icon/blue_floor.png"></u-icon> </view> <view class="r"> {{item.title}}栋 {{item.title}} </view> </view> <!-- 商铺 --> <view class="house-list-box" v-if="isShowShop" v-for="(item, index) in shopList" @click="pushPage(item)"> <view class="l"> <u-icon name="home" color="#fff"></u-icon> <u-icon name="/static/icon/store.png"></u-icon> </view> <view class="r"> {{item.title}} @@ -40,7 +41,8 @@ return { isShowAoi:false, isShowShop:false, currentId: '', currentId: '', curSelectSite: {}, curHouseTitle: '', houseList: [{ title: '-' @@ -59,7 +61,8 @@ }, onShow() { this.getHouseInfo() this.getHouseInfo() this.curSelectSite = uni.getStorageSync('curSelectSite') }, methods: { @@ -72,12 +75,9 @@ const aoiList = res.data.aoiList const shopList = res.data.shopList if(aoiList.length>0){ this.isShowAoi =true // 删除栋字 const reg = new RegExp('栋', 'g') aoiList.forEach(item => { item.title = item['name'].replace(reg, '') delete item.name this.isShowAoi =true aoiList.forEach(item => { item.title = item.name }) this.houseList = aoiList || [{ title: '-' @@ -87,14 +87,18 @@ this.isShowShop =true shopList.forEach(item => { item.title = item.name delete item.name }) this.shopList = shopList this.shopList = shopList || [{ title: '-' }] } }, pushPage(value) { const { id, title,addressType } = value const { id, title,addressType } = value if (!id) { return } // addressType == 3 街路巷 if(addressType == 1 || addressType == 3){ if (id !== void 0) { @@ -114,31 +118,38 @@ } </script> <style lang="scss" scoped> page { background-color: #f6f6f6; <style lang="scss" scoped> page { background-color: #f5f5f5; } .container { width: 100%; height: 100%; display: flex; flex-direction: column; background: #F9F9FA; font-size: 26rpx; .header { background-color: #fff; background-color: #fff; padding: 20rpx 30rpx; display: flex; color: #333333; text { margin-left: 15rpx; } } .main { border: 1px solid red; position: relative; height: 0; flex: 1; overflow-y: auto; overflow-y: auto; margin-top: 20rpx; background-color: #fff; .house-container { flex-wrap: wrap; flex-wrap: wrap; padding: 14rpx; .house-list-box { margin: 16rpx; @@ -148,9 +159,9 @@ align-items: center; width: calc((100% - 96rpx) / 3); height: 68rpx; border-radius: 34rpx; color: #fff; background: linear-gradient(to right, #417BE9, #6D9FFB); border-radius: 5rpx; color: #333333; background: #FAFBFE; box-sizing: border-box; } } subPackage/house/roomDetails/index.vue
@@ -3,25 +3,29 @@ <view class="main"> <view class="content"> <view class="base b-c-w"> <view class="flex a-i-c"> <u-icon name="photo"></u-icon> {{ houseInfo.houseTitle }} <view class="flex a-i-c header"> <u-icon name="/static/icon/map.png" width="15" height="18"></u-icon> <view class="text"> <text>当前小区:</text> {{ houseInfo.houseTitle }} </view> </view> <view class="flex j-c-s-b"> <view> {{ houseInfo.unitName }}单元 {{ houseInfo.houseName }}室(共{{ houseInfo.allNum }}人) <view class="flex j-c-s-b info-content"> <view class="house-info"> {{ houseInfo.unitName }}单元 {{ houseInfo.houseName }}室 <text>(共{{ houseInfo.allNum }}人)</text> </view> <view class="flex a-i-c"> <u-button @click="rommManage" size='small' shape="circle" type="primary" :plain="true" text="房屋管理"></u-button> <u-button @click="rommManage" size='small' class="u_btn_blue" text="房屋管理"></u-button> </view> </view> </view> <view class="mt-40 owner-box b-c-w" v-for="(item, index) in ownerInfoList" :key="index"> <view class="flex"> <view class="card-box"> <view class="l flex-1 flex"> <view class="flex_base"> <view class="head-img flex_base"> <view> <view class="head-img"> <u--image shape="circle" :showLoading="true" :src="item.src|| '/static/icon/user-01.png'" width="120rpx" height="120rpx"></u--image> @@ -30,35 +34,38 @@ <view class="info"> <view>姓名:{{item.name}}</view> <view class="flex"> 手机:{{item.phoneNumber}} <u-icon name="phone-fill" color="#4586FE"></u-icon> 手机:{{item.phoneNumber}} <!-- <u-icon name="phone-fill" color="#4586FE"></u-icon> --> </view> <view class="flex"> 关系: <view class="flex a-i-c"> <u-tag :text="item.roleRelationName" size="mini" :bgColor="item.relationship == 1 ? '#07C160' : '#1989FA'"></u-tag> :borderColor="item.relationship == 1 ? '#F2BF42' : '#1989FA'" :bgColor="item.relationship == 1 ? '#F2BF42' : '#1989FA'"></u-tag> </view> </view> </view> </view> <view class="r flex f-d-c j-c-s-a"> <view> <u-button size='small' type="primary" :plain="true" text="资料管理" <u-button size='small' class="u_btn_blue" text="资料管理" @click="addOrupdateMember(2,item)"></u-button> </view> <view> <u-button size='small' type="primary" :plain="true" text="标签管理" <u-button size='small' class="u_btn_blue" text="标签管理" @click="goToHouseholdLabel(item)"></u-button> </view> </view> </view> <view class="flex a-i-c j-c-s-b"> <view class="flex a-i-c j-c-s-b btm-box"> <view class="l flex"> <u-icon name="photo"></u-icon> <u-icon name="photo"></u-icon> <u-icon name="/static/icon/selected.png" size="16"></u-icon> <!-- u-icon name="photo"></u-icon> --> <view class="owner-img-box">主</view> </view> <view class="r"> <u-icon name="trash-fill" color="red" @click="removeHouseholdSub(item)"></u-icon> <u-icon name="/static/icon/delete.png" size="16" @click="removeHouseholdSub(item)"></u-icon> </view> </view> @@ -68,15 +75,16 @@ @confirm="deleteHousehold()"></u-modal> <view class="mt-20 rent-out-box"> <box-title :title="'出租管理'"></box-title> <!-- <box-title :title="'出租管理'"></box-title> --> <view class="mt-40 rent-out-list b-c-w" v-for="(item, index) in rentOutList" :key="index"> <view class="mt-40 rent-out-list b-c-w rent-out-content" v-for="(item, index) in rentOutList" :key="index"> <view class="t flex j-c-s-b a-i-c"> <view class="l"> 租客:{{item.tenant}}(共{{item.allNum}}人) </view> <view class="r"> <u-icon name="trash-fill" color="red" @click="deleteRent(item)"></u-icon> <u-icon name="/static/icon/delete.png" color="red" @click="deleteRent(item)"></u-icon> </view> </view> <view class="t flex j-c-s-b a-i-c"> @@ -110,11 +118,13 @@ <view class="edit-btn"> <view> <u-button type="primary" text="添加成员" @click="addOrupdateMember(1,{})"></u-button> <u-button type="primary" text="添加成员" color="linear-gradient(163deg, #23C7B4 0%, #2DD3C2 99%)" @click="addOrupdateMember(1,{})"></u-button> </view> <view> <u-button type="primary" :plain="true" text="添加租赁信息" @click="addRental"></u-button> <u-button type="primary" text="添加租赁信息" color="linear-gradient(163deg, #01BDFC 0%, #017BFC 100%)" @click="addRental"></u-button> </view> </view> @@ -239,7 +249,7 @@ this.ownerInfoList = householdList this.houseInfo.houseName = houseName this.houseInfo.unitName = unitName this.houseInfo.houseTitle = (aoiName || subAoi) + ':' + buildingName this.houseInfo.houseTitle = aoiName || subAoi // 判断当前租客有没有过期 this.rentOutList.forEach(item => { // 事件格式处理 @@ -360,12 +370,10 @@ .container { width: 100%; height: 100%; display: flex; flex-direction: column; background: #F9F9FA; background: #F5F5F5; font-size: 26rpx; .main { position: relative; @@ -373,6 +381,8 @@ flex: 1; display: flex; flex-direction: column; padding: 20rpx 30rpx; padding-bottom: 120rpx; .content { height: 0; @@ -380,24 +390,51 @@ overflow-y: auto; .base { &>view { padding: 0 10rpx; height: 96rpx; line-height: 96rpx; border-bottom: 1rpx solid #EBEDF0; padding: 30rpx; border-radius: 8rpx; .header { border-bottom: 1rpx solid #f6f6f6; padding-bottom: 20rpx; .text { color: #333; margin-left: 17rpx; text { color: #AAAAAA; } } } .info-content { padding-top: 20rpx; display: flex; align-items: center; .house-info { font-weight: 700; text { color: #AAAAAA; } } } } .owner-box { border-radius: 8rpx; padding: 30rpx; .card-box { padding: 0; display: flex; } .l { align-items: center; .head-img { width: 164rpx; height: 164rpx; background: #EBEDF0; border-radius: 50%; } @@ -417,11 +454,16 @@ &>view:last-child { height: 44rpx; border-top: 1rpx solid #EBEDF0; border-top: 1rpx solid #f6f6f6; } } .rent-out-box { .rent-out-content { padding: 30rpx !important; border-radius: 8rpx; } .rent-out-list { padding: 20rpx 16rpx; @@ -445,16 +487,55 @@ } } } .btm-box { padding: 20rpx 0 0 0 !important; .owner-img-box { margin-left: 10rpx; background-color: #30D17C; border-radius: 50%; color: #fff; width: 34rpx; height: 34rpx; text-align: center; line-height: 34rpx; font-size: 20rpx; font-weight: 700; } } } .edit-btn { width: 100%; height: 116rpx; display: flex; justify-content: space-around; align-items: center; background: #fff; border-top: 1rpx solid #ccc; position: fixed; left: 0; bottom: 0; view { margin: 20rpx; &:first-child { flex: 1; margin-right: 0; } &:last-child { flex: 2; } } } } .u_btn_blue { font-weight: 700; background-color: #017BFC; color: #fff; border: 0; } } </style>