From 1fa5d1c27506623db4be7fa9d3f517acb6988c2c Mon Sep 17 00:00:00 2001
From: GULIMMO <2820890765@qq.com>
Date: Sat, 11 Nov 2023 16:21:35 +0800
Subject: [PATCH] 租客详情、公共维修、标签管理更新
---
pages.json | 16
subPackage/bs/views/rentDetail.vue | 69 +-
subPackage/bs/views/repair.vue | 3
subPackage/house/member/householdLabel.vue | 675 ++++++++++++++++---------------
subPackage/house/roomControl/index.vue | 81 ++-
subPackage/bs/views/addRepair.vue | 364 ++++++++--------
components/boxTitle/index2.vue | 45 ++
7 files changed, 676 insertions(+), 577 deletions(-)
diff --git a/components/boxTitle/index2.vue b/components/boxTitle/index2.vue
new file mode 100644
index 0000000..e325043
--- /dev/null
+++ b/components/boxTitle/index2.vue
@@ -0,0 +1,45 @@
+<template>
+ <view class="box-title">
+ <view class="line">
+
+ </view>
+ <view class="text">
+ {{ title }}
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ title: {
+ type: String,
+ default: ''
+ }
+ },
+
+ data() {
+ return {
+
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .box-title {
+ display: flex;
+ align-items: center;
+ color: #333;
+ margin-bottom: 30rpx;
+ .line {
+ width: 6rpx;
+ height: 30rpx;
+ margin-right: 10rpx;
+ background-color: #017BFC;
+ }
+ .text {
+ font-size: 32rpx;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 0635d60..1748f03 100644
--- a/pages.json
+++ b/pages.json
@@ -180,7 +180,7 @@
"pages": [{
"path": "views/cscj",
"style": {
- "navigationBarTitleText": "场所维护",
+ "navigationBarTitleText": "场所采集",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#4586fe",
"navigationBarTextStyle": "white"
@@ -209,7 +209,7 @@
{
"path": "views/audit",
"style": {
- "navigationBarTitleText": "网格任务审核",
+ "navigationBarTitleText": "标签事件",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
@@ -219,7 +219,7 @@
"path": "views/cshw",
"style": {
"onReachBottomDistance": 10,
- "navigationBarTitleText": "网格任务审核",
+ "navigationBarTitleText": "场所维护",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
@@ -246,7 +246,7 @@
{
"path": "views/report",
"style": {
- "navigationBarTitleText": "网格任务审核",
+ "navigationBarTitleText": "保修报事",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
@@ -409,8 +409,8 @@
"path": "member/householdLabel",
"style": {
"navigationBarTitleText": "标签管理",
- "navigationBarBackgroundColor": "#5887f9",
- "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
"enablePullDownRefresh": false
}
},
@@ -418,8 +418,8 @@
"path": "roomControl/index",
"style": {
"navigationBarTitleText": "房屋管理",
- "navigationBarBackgroundColor": "#5887f9",
- "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
"enablePullDownRefresh": false
}
},
diff --git a/subPackage/bs/views/addRepair.vue b/subPackage/bs/views/addRepair.vue
index 88bc6d4..86ba038 100644
--- a/subPackage/bs/views/addRepair.vue
+++ b/subPackage/bs/views/addRepair.vue
@@ -1,182 +1,184 @@
-<template>
- <view class="">
- <view class="site-box bgc-ff flex">
- <view class="flex a-i-c">
- <u-icon name="map-fill" color="#AAAAAA"></u-icon>
- <text class="f-28 c-aa ml-20">当前小区:</text>
- </view>
-
- <text class="address f-28">{{ curSelectSite.name }}</text>
- </view>
- <view class="content bgc-ff">
- <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
- :labelStyle="{fontSize:'28rpx'}">
- <u-form-item label="姓名" prop="realName" borderBottom ref="realName">
- <u-input v-model="info.realName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
- <u-form-item label="手机" prop="phone" :borderBottom="false" ref="phone">
- <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
- </u-form-item>
- </u-form>
- </view>
-
- <view class="upload bgc-ff">
- <view class="f-28 mb-20">描述</view>
- <u-textarea v-model="info.remark" placeholder="请输入内容" border="none"
- placeholderClass="c-99 f-26"></u-textarea>
- <view class="mt-20">
- <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
- :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
- :capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
- <view class="upload-item upload-icon flex_base">
- <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
- </view>
- </u-upload>
- </view>
- </view>
-
-
- <button class="submit-btn" @click="sumitInfo">提交</button>
- <button class="list-btn" @click="navigatorPage">我上报的事件</button>
-
- </view>
-</template>
-
-<script>
- import uploadMixin from "@/mixin/uploadMixin";
- import {
- save
- } from "@/api/task/taskReportForRepairs";
- export default {
- mixins: [uploadMixin],
- data() {
- return {
- info: {
- realName: "",
- phone: "",
- remark: "",
- type: -1,
- },
- rules: {
- 'realName': {
- type: 'string',
- required: true,
- message: '请输入姓名',
- trigger: ['blur', 'change']
- },
- 'phone': {
- type: 'string',
- required: true,
- message: '请输入手机号',
- trigger: ['blur', 'change']
- },
- },
- desc: "",
- title: "",
- curSelectSite: {}
- }
- },
- onLoad(option) {
- this.title = option.title
- uni.setNavigationBarTitle({
- title: this.title
- })
- this.info.type = option.type
- },
- onShow() {
- this.curSelectSite = uni.getStorageSync('curSelectSite')
- },
- methods: {
- sumitInfo() {
- const that = this
- this.$refs.form.validate().then(valid => {
- if (this.form.images.length > 0) {
- let urls = []
- this.form.images.forEach(e => {
- urls.push(e.name)
- })
- this.info.imageUrls = urls.join(",")
- }
- save(that.info).then(res => {
- uni.showToast({
- icon: 'success',
- title: '提交成功',
- success() {
- setTimeout(() => {
- that.$u.func.globalNavigator("", "navBack")
- }, 1000)
- }
- })
- })
- })
- },
- navigatorPage() {
- let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
- this.$u.func.globalNavigator(url, "navTo")
- }
- }
- }
-</script>
-
-<style lang="less">
- page {
- background-color: #F5F5F5;
- }
-
- .content {
- margin: 20rpx 30rpx;
- padding: 0 30rpx;
- }
-
- .site-box {
- padding: 30rpx;
- margin: 20rpx 30rpx;
- border-radius: 4rpx;
-
- .c-aa {
- color: #aaa;
- }
-
- .address {
- width: 60%;
- margin-left: 25rpx;
- }
- }
-
- .upload-item {
- width: 140rpx;
- height: 140rpx;
- border: 1px solid #EEEEEE;
- }
-
- .upload {
- margin: 0 30rpx;
- padding: 30rpx;
-
-
- }
-
- .submit-btn {
- width: 690rpx;
- height: 78rpx;
- line-height: 78rpx;
- background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
- border-radius: 8rpx 8rpx 8rpx 8rpx;
- font-size: 32rpx;
- color: #fff;
- margin-top: 50rpx;
- }
-
- .list-btn {
- width: 690rpx;
- height: 78rpx;
- line-height: 78rpx;
- background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%);
- border-radius: 8rpx 8rpx 8rpx 8rpx;
- font-size: 32rpx;
- color: #fff;
- margin-top: 50rpx;
- }
+<template>
+ <view class="">
+ <view class="site-box bgc-ff flex">
+ <view class="flex a-i-c">
+ <u-icon name="map-fill" color="#AAAAAA"></u-icon>
+ <text class="f-28 c-aa ml-20">当前小区:</text>
+ </view>
+
+ <text class="address f-28">{{ curSelectSite.name }}</text>
+ </view>
+ <view class="content bgc-ff">
+ <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
+ :labelStyle="{fontSize:'28rpx'}">
+ <u-form-item label="姓名" prop="realName" borderBottom ref="realName">
+ <u-input v-model="info.realName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="手机" prop="phone" :borderBottom="false" ref="phone">
+ <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ </u-form>
+ </view>
+
+ <view class="upload bgc-ff">
+ <view class="f-28 mb-20">描述</view>
+ <u-textarea v-model="info.remark" placeholder="请输入内容" border="none"
+ placeholderClass="c-99 f-26"></u-textarea>
+ <view class="mt-20">
+ <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
+ :capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
+ <view class="upload-item upload-icon flex_base">
+ <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
+ </view>
+ </u-upload>
+ </view>
+ </view>
+
+
+ <button class="submit-btn" @click="sumitInfo">提交</button>
+ <button class="list-btn" @click="navigatorPage">我上报的事件</button>
+
+ </view>
+</template>
+
+<script>
+ import uploadMixin from "@/mixin/uploadMixin";
+ import {
+ save
+ } from "@/api/task/taskReportForRepairs";
+ export default {
+ mixins: [uploadMixin],
+ data() {
+ return {
+ info: {
+ realName: "",
+ phone: "",
+ remark: "",
+ type: -1,
+ },
+ rules: {
+ 'realName': {
+ type: 'string',
+ required: true,
+ message: '请输入姓名',
+ trigger: ['blur', 'change']
+ },
+ 'phone': {
+ type: 'string',
+ required: true,
+ message: '请输入手机号',
+ trigger: ['blur', 'change']
+ },
+ },
+ desc: "",
+ title: "",
+ curSelectSite: {}
+ }
+ },
+ onLoad(option) {
+ this.title = option.title
+ uni.setNavigationBarTitle({
+ title: this.title
+ })
+ this.info.type = option.type
+ },
+ onShow() {
+ this.curSelectSite = uni.getStorageSync('curSelectSite')
+ this.info.addressCode = this.curSelectSite.id
+ console.log(this.curSelectSite);
+ },
+ methods: {
+ sumitInfo() {
+ const that = this
+ this.$refs.form.validate().then(valid => {
+ if (this.form.images.length > 0) {
+ let urls = []
+ this.form.images.forEach(e => {
+ urls.push(e.name)
+ })
+ this.info.imageUrls = urls.join(",")
+ }
+ save(that.info).then(res => {
+ uni.showToast({
+ icon: 'success',
+ title: '提交成功',
+ success() {
+ setTimeout(() => {
+ that.$u.func.globalNavigator("", "navBack")
+ }, 1000)
+ }
+ })
+ })
+ })
+ },
+ navigatorPage() {
+ let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
+ this.$u.func.globalNavigator(url, "navTo")
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .content {
+ margin: 20rpx 30rpx;
+ padding: 0 30rpx;
+ }
+
+ .site-box {
+ padding: 30rpx;
+ margin: 20rpx 30rpx;
+ border-radius: 4rpx;
+
+ .c-aa {
+ color: #aaa;
+ }
+
+ .address {
+ width: 60%;
+ margin-left: 25rpx;
+ }
+ }
+
+ .upload-item {
+ width: 140rpx;
+ height: 140rpx;
+ border: 1px solid #EEEEEE;
+ }
+
+ .upload {
+ margin: 0 30rpx;
+ padding: 30rpx;
+
+
+ }
+
+ .submit-btn {
+ width: 690rpx;
+ height: 78rpx;
+ line-height: 78rpx;
+ background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
+ border-radius: 8rpx 8rpx 8rpx 8rpx;
+ font-size: 32rpx;
+ color: #fff;
+ margin-top: 50rpx;
+ }
+
+ .list-btn {
+ width: 690rpx;
+ height: 78rpx;
+ line-height: 78rpx;
+ background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%);
+ border-radius: 8rpx 8rpx 8rpx 8rpx;
+ font-size: 32rpx;
+ color: #fff;
+ margin-top: 50rpx;
+ }
</style>
\ No newline at end of file
diff --git a/subPackage/bs/views/rentDetail.vue b/subPackage/bs/views/rentDetail.vue
index 7ae1785..31b04ae 100644
--- a/subPackage/bs/views/rentDetail.vue
+++ b/subPackage/bs/views/rentDetail.vue
@@ -73,9 +73,9 @@
@cancel="dueTimeShow = false"></u-datetime-picker>
<view class="bottom-tools">
- <u-button class="btn-item" type="error" @click="isModelShow = true" v-if="rentId !== ''">删除</u-button>
- <u-button class="btn-item" type="success" @click="verify"
- v-if="!auditStatus && currentRole.roleAlias === 'wgy'">确认</u-button>
+ <u-button class="btn-item" type="error" @click="isModelShow = true"
+ v-if="btnControls.deleteBtn">删除</u-button>
+ <u-button class="btn-item" type="success" @click="verify" v-if="btnControls.verifyBtn">确认</u-button>
<u-button class="btn-item" color="linear-gradient(to right, #06B0FD, #027BFE)"
@click="saveOrUpdate">{{ rentId === '' ? "保存" : "确认修改" }}</u-button>
</view>
@@ -215,6 +215,10 @@
auditStatus: null,
currentTime: Number(new Date()),
isModelShow: false,
+ btnControls: {
+ deleteBtn: false,
+ verifyBtn: false
+ }
}
},
@@ -223,16 +227,13 @@
id,
houseCode
} = option
- this.houseCode = houseCode
+ this.houseCode = houseCode
+ this.currentRole = uni.getStorageSync("activeRole")
// 使用id来判断是不是修改
if (id !== void 0) {
this.rentId = id
this.getCurrentRentInfo()
}
- },
- mounted() {
- this.currentRole = uni.getStorageSync("activeRole")
- console.log(this.currentRole);
},
methods: {
showSelectBus(data, title, model, key) {
@@ -363,25 +364,28 @@
this.isAuditShow = true
},
verifyConfirm(e) {
- const auditStatus = e.value[0].status
- confirmHouseRental({
- id: this.rentId,
- auditStatus
- }).then(res => {
- const { code, data } = res
- if (code !== 200) {
- uni.showToast({
- title: "确认失败",
- icon: 'error'
- })
- return
- }
- uni.showToast({
- title: "确认成功",
- icon: 'success'
- })
- this.isAuditShow = false
- this.getCurrentRentInfo()
+ const auditStatus = e.value[0].status
+ confirmHouseRental({
+ id: this.rentId,
+ auditStatus
+ }).then(res => {
+ const {
+ code,
+ data
+ } = res
+ if (code !== 200) {
+ uni.showToast({
+ title: "确认失败",
+ icon: 'error'
+ })
+ return
+ }
+ uni.showToast({
+ title: "确认成功",
+ icon: 'success'
+ })
+ this.isAuditShow = false
+ this.getCurrentRentInfo()
})
},
// 更新操作
@@ -445,7 +449,7 @@
houseRentalList
}
} = await getHouseRentInfo(this.houseCode)
- this.auditStatus = houseRentalList[0].auditStatus
+ this.auditStatus = houseRentalList[0].auditStatus
console.log(this.auditStatus);
const images = []
const {
@@ -484,7 +488,11 @@
houseTenantVOList.forEach((item, index) => {
this.$refs.rentform[index].form = item
})
- })
+ })
+ this.btnControls = {
+ deleteBtn: this.rentId !== '',
+ verifyBtn: !this.auditStatus && !!this.rentId && this.currentRole.roleAlias === 'wgy'
+ }
},
async deleteRent() {
const {
@@ -560,8 +568,9 @@
.l {
display: flex;
align-items: center;
+
.line {
- width: 6rpx;
+ width: 6rpx;
height: 60%;
margin-right: 10rpx;
background-color: #017BFC;
diff --git a/subPackage/bs/views/repair.vue b/subPackage/bs/views/repair.vue
index 22fe06a..e3460b6 100644
--- a/subPackage/bs/views/repair.vue
+++ b/subPackage/bs/views/repair.vue
@@ -74,7 +74,7 @@
title: "公共维修",
type: 1,
bgImg: "/static/icon/nav-bg-06.png",
- path: "addRepair",
+ path: `addRepair`,
background: "#63C875"
},
{
@@ -115,6 +115,7 @@
onShow() {
this.getStatistics()
this.curSelectSite = uni.getStorageSync('curSelectSite')
+ console.log(this.curSelectSite);
},
methods: {
diff --git a/subPackage/house/member/householdLabel.vue b/subPackage/house/member/householdLabel.vue
index 5a047ca..597d0c9 100644
--- a/subPackage/house/member/householdLabel.vue
+++ b/subPackage/house/member/householdLabel.vue
@@ -1,333 +1,346 @@
-<template>
- <view class="container">
- <view class="main">
- <view class="content">
- <view class="base b-c-w">
- <u-icon name="photo"></u-icon> {{ houseAddress}}
- </view>
- <view class="l flex-1 flex">
- <view class="flex_base">
- <view class="head-img flex_base">
- <u--image shape="circle" :showLoading="true" src="/static/icon/user-01.png" width="120rpx"
- height="120rpx"></u--image>
- </view>
- </view>
- <view class="info">
- <view>姓名:{{householdInfo.name}}</view>
- <view class="flex">
- 手机:{{householdInfo.phoneNumber}} <u-icon name="phone-fill" color="#4586FE"></u-icon>
- </view>
- </view>
- </view>
- <view v-for="(item, index) in labelBtnList" :key="index">
- <box-title :title="item.name"></box-title>
- <view class="mt-20 flex label-btn-box b-c-w">
- <view v-for="(item, k) in item.children" :key="k">
- <u-button color="#000" size="mini" type="primary"
- :style="{background: item.color}"
- :plain="true" :text="item.name"
- @click="showLabelPopup(item)"></u-button>
- </view>
- </view>
- </view>
- </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="remark" placeholder="请输入内容"></u--textarea>
- </view>
- </u-modal>
- </view>
-</template>
-
-<script>
- import uploadMixin from "@/mixin/uploadMixin";
-
- import {
- getLabelListByParentId
- } from "@/api/label/label.js";
- import {
- getDetail
- } from "@/api/doorplateAddress/doorplateAddress.js";
- import {saveOrUpdateHouseholdLabel,removeHouseholdLabel} from "@/api/house/householdLabel.js"
- import { getHouseholdDetail } from "@/api/house/household.js"
-
- export default {
- mixins: [uploadMixin],
- data() {
- return {
- houseAddress:"",
- houseInfo:{},
- householdInfo:{},
- houseCode:"",
- popupShow: false,
- labelBtnList: [],
- // 安置房弹框中
- labelList: [{
- name: '撤销',
- disabled: false,
- color: '#EBEDF0'
- },
- {
- name: '绿',
- disabled: false,
- color: '#07C160'
- },
- {
- name: '黄',
- disabled: false,
- color: '#FF976A'
- }, {
- name: '红',
- disabled: false,
- color: '#EE0A24'
- }
- ],
- currentLabelInfo: {},
- currentColorInfo: {},
- labelModelInfo: {
- title: '',
- selectedColor: ''
- },
- labelValue: '',
- remark: '',
- // 标记
- number:0
- }
- },
- created() {
- },
- mounted() {
- },
- onLoad(option) {
- const data = JSON.parse(option.data);
- this.householdInfo = data;
- this.houseCode = data.houseCode
- this.getDoorPlateAddressDetail()
- },
- onShow() {
- this.getLabelList()
- },
- methods: {
- // 获取房屋详情
- async getDoorPlateAddressDetail() {
- const param = {
- addressCode : this.houseCode
- }
- const res = await getDetail(param)
- this.houseInfo = res.data
- const aoiName = ( this.houseInfo.aoiName || this.houseInfo.subAoi)
- const unitName = this.houseInfo.unitName == null ?"":this.houseInfo.unitName
- this.houseAddress = aoiName +
- this.houseInfo.buildingName + unitName + this.houseInfo.houseName + "室"
-
- },
- // 获取房屋标签信息
- async getLabelList() {
- const param = {
- id : this.householdInfo.id
- }
- const res = await getHouseholdDetail(param)
- this.householdInfo = res.data
- const householdLabelList = this.householdInfo.householdLabelList
- // 房屋标签处理
- const labelParam = {
- parentId:1000
- }
- const resLabel = await getLabelListByParentId(labelParam)
- this.labelBtnList = resLabel.data
- const labelChildAll = []
- // 将细类放到一起
- this.labelBtnList.forEach(e=>{
- e.children.forEach(f=>{
- labelChildAll.push(f)
- })
- })
- if(householdLabelList.length>0){
- labelChildAll.forEach(e=>{
- householdLabelList.forEach(f=>{
- if(Number(e.id) == f.labelId){
- e['color'] = f.color
- e['remark'] = f.remark
- }
- })
- })
- }
- },
- // 房屋弹窗
- showLabelPopup(item) {
- // 先清空
- this.number = 0
- this.labelValue = ""
- this.remark = ""
- this.popupShow = true
- this.labelModelInfo.title = item.name
- this.currentLabelInfo = item
- // 遍历标签集合
- this.labelList.forEach(e=>{
- if(e.color == item.color){
- this.labelValue = e.name
- this.remark = item.remark
- this.number = 1
- }
- })
- },
- popupConfirm() {
- this.popupShow = false
- },
- radioChange(item) {
- this.currentColorInfo = item
- },
- // 更新房屋标签
- async popupConfirm() {
- const {
- id
- } = this.currentLabelInfo
- const {
- color,
- name
- } = this.currentColorInfo
- let res = null
- if (name === '撤销') {
- if(this.number==1){
- const data = {
- labelId:id,
- householdId: this.householdInfo.id
- }
- res = await removeHouseholdLabel(data)
- }else{
- uni.showToast({
- title: "无可撤销项",
- icon: "error",
- duration: 1500
- })
- return
- }
- } else {
- res = await saveOrUpdateHouseholdLabel({
- householdId: this.householdInfo.id,
- labelId: id,
- remark:this.remark,
- color
- })
- }
- if (res.code !== 200) {
- uni.showToast({
- title: "修改失败",
- icon: "error",
- duration: 1500
- })
- return
- }
- // 刷新页面
- this.getLabelList()
- this.popupShow = false
- },
-
- }
- }
-</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;
-
- .base{
- padding-left: 20rpx;
- background-color:#ffffff;
- display: flex;
- flex-direction: row;
- align-items: center;
- height: 90rpx;
- font-size: 32rpx;
- letter-spacing: 3rpx;
- border-bottom: 1rpx solid #EBEDF0;
- }
-
- .l {
- height: 170rpx;
- background-color: #ffffff;
- align-items: center;
-
- .head-img {
- margin-left: 20rpx;
- width: 124rpx;
- height: 124rpx;
- background: #EBEDF0;
- border-radius: 50%;
- }
-
- .info {
- margin-left: 20rpx;
- font-size: 24rpx;
-
+<template>
+ <view class="container">
+ <view class="main">
+ <view class="base b-c-w">
+ <u-icon name="/static/icon/map.png" width="15" height="18"></u-icon>
+ <view>{{ houseAddress}}</view>
+ </view>
+ <view class="content">
+ <view class="l flex-1 flex">
+ <view class="flex_base">
+ <view class="head-img flex_base">
+ <u--image shape="circle" :showLoading="true" src="/static/icon/user-01.png" width="120rpx"
+ height="120rpx"></u--image>
+ </view>
+ </view>
+ <view class="info">
+ <view>姓名:{{householdInfo.name}}</view>
+ <view class="flex">
+ 手机:{{householdInfo.phoneNumber}} <u-icon name="phone-fill" color="#4586FE"></u-icon>
+ </view>
+ </view>
+ </view>
+ <view v-for="(item, index) in labelBtnList" :key="index" class="label-crad">
+ <newBoxTitle :title="item.name"></newBoxTitle>
+ <view class="label-btn-box">
+ <view v-for="(item, k) in item.children" :key="k">
+ <u-button color="#000" size="mini" type="primary" :style="{background: item.color}"
+ :plain="true" :text="item.name" @click="showLabelPopup(item)"></u-button>
+ </view>
+ </view>
+ </view>
+ </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" :labelColor="item.color" :style="{color: item.color && '#fff'}" :name="item.name" :activeColor="item.color" @change="radioChange(item)">
+ </u-radio>
+ </u-radio-group>
+
+ <u--textarea class="mt-40" v-model="remark" placeholder="请输入内容"></u--textarea>
+ </view>
+ </u-modal>
+ </view>
+</template>
+
+<script>
+ import uploadMixin from "@/mixin/uploadMixin";
+ import newBoxTitle from '@/components/boxTitle/index2.vue'
+ import {
+ getLabelListByParentId
+ } from "@/api/label/label.js";
+ import {
+ getDetail
+ } from "@/api/doorplateAddress/doorplateAddress.js";
+ import {
+ saveOrUpdateHouseholdLabel,
+ removeHouseholdLabel
+ } from "@/api/house/householdLabel.js"
+ import {
+ getHouseholdDetail
+ } from "@/api/house/household.js"
+
+ export default {
+ mixins: [uploadMixin],
+ components: {
+ newBoxTitle
+ },
+ data() {
+ return {
+ houseAddress: "",
+ houseInfo: {},
+ householdInfo: {},
+ houseCode: "",
+ popupShow: false,
+ labelBtnList: [],
+ // 安置房弹框中
+ labelList: [{
+ name: '撤销',
+ disabled: false,
+ color: '#EBEDF0'
+ },
+ {
+ name: '绿',
+ disabled: false,
+ color: '#30D17C'
+ },
+ {
+ name: '黄',
+ disabled: false,
+ color: '#FFB42B'
+ }, {
+ name: '红',
+ disabled: false,
+ color: '#EA1F1F'
+ }
+ ],
+ currentLabelInfo: {},
+ currentColorInfo: {},
+ labelModelInfo: {
+ title: '',
+ selectedColor: ''
+ },
+ labelValue: '',
+ remark: '',
+ // 标记
+ number: 0
+ }
+ },
+ created() {},
+ mounted() {},
+ onLoad(option) {
+ const data = JSON.parse(option.data);
+ this.householdInfo = data;
+ this.houseCode = data.houseCode
+ this.getDoorPlateAddressDetail()
+ },
+ onShow() {
+ this.getLabelList()
+ },
+ methods: {
+ // 获取房屋详情
+ async getDoorPlateAddressDetail() {
+ const param = {
+ addressCode: this.houseCode
+ }
+ const res = await getDetail(param)
+ this.houseInfo = res.data
+ const aoiName = (this.houseInfo.aoiName || this.houseInfo.subAoi)
+ const unitName = this.houseInfo.unitName == null ? "" : this.houseInfo.unitName
+ this.houseAddress = aoiName +
+ this.houseInfo.buildingName + unitName + this.houseInfo.houseName + "室"
+
+ },
+ // 获取房屋标签信息
+ async getLabelList() {
+ const param = {
+ id: this.householdInfo.id
+ }
+ const res = await getHouseholdDetail(param)
+ this.householdInfo = res.data
+ const householdLabelList = this.householdInfo.householdLabelList
+ // 房屋标签处理
+ const labelParam = {
+ parentId: 1000
+ }
+ const resLabel = await getLabelListByParentId(labelParam)
+ this.labelBtnList = resLabel.data
+ const labelChildAll = []
+ // 将细类放到一起
+ this.labelBtnList.forEach(e => {
+ e.children.forEach(f => {
+ labelChildAll.push(f)
+ })
+ })
+ if (householdLabelList.length > 0) {
+ labelChildAll.forEach(e => {
+ householdLabelList.forEach(f => {
+ if (Number(e.id) == f.labelId) {
+ e['color'] = f.color
+ e['remark'] = f.remark
+ }
+ })
+ })
+ }
+ },
+ // 房屋弹窗
+ showLabelPopup(item) {
+ // 先清空
+ this.number = 0
+ this.labelValue = ""
+ this.remark = ""
+ this.popupShow = true
+ this.labelModelInfo.title = item.name
+ this.currentLabelInfo = item
+ // 遍历标签集合
+ this.labelList.forEach(e => {
+ if (e.color == item.color) {
+ this.labelValue = e.name
+ this.remark = item.remark
+ this.number = 1
+ }
+ })
+ },
+ popupConfirm() {
+ this.popupShow = false
+ },
+ radioChange(item) {
+ this.currentColorInfo = item
+ },
+ // 更新房屋标签
+ async popupConfirm() {
+ const {
+ id
+ } = this.currentLabelInfo
+ const {
+ color,
+ name
+ } = this.currentColorInfo
+ let res = null
+ if (name === '撤销') {
+ if (this.number == 1) {
+ const data = {
+ labelId: id,
+ householdId: this.householdInfo.id
+ }
+ res = await removeHouseholdLabel(data)
+ } else {
+ uni.showToast({
+ title: "无可撤销项",
+ icon: "error",
+ duration: 1500
+ })
+ return
+ }
+ } else {
+ res = await saveOrUpdateHouseholdLabel({
+ householdId: this.householdInfo.id,
+ labelId: id,
+ remark: this.remark,
+ color
+ })
+ }
+ if (res.code !== 200) {
+ uni.showToast({
+ title: "修改失败",
+ icon: "error",
+ duration: 1500
+ })
+ return
+ }
+ // 刷新页面
+ this.getLabelList()
+ this.popupShow = false
+ },
+
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .container {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ background: #f6f6f6;
+
+ .main {
+ position: relative;
+ height: 0;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .base {
+ padding: 20rpx 18rpx;
+ display: flex;
+ color: #333333;
+ background: #fff;
+ min-height: 38rpx;
+ font-size: 30rpx;
+
+ view {
+ margin-left: 15rpx;
+ }
+ }
+
+ .content {
+ height: 0;
+ flex: 1;
+ overflow-y: auto;
+ margin: 20rpx 30rpx;
+
+ .l {
+ background-color: #ffffff;
+ align-items: center;
+ padding: 30rpx 30rpx;
+ border-radius: 8rpx;
+
+ .head-img {
+ width: 124rpx;
+ height: 124rpx;
+ border-radius: 50%;
+ }
+
+ .info {
+ margin-left: 20rpx;
+ font-size: 24rpx;
+
+ &>view {
+ height: 56rpx;
+ line-height: 56rpx;
+ }
+ }
+ }
+
+ .basic-info {
+ .form-item {
+ background-color: #ffffff;
+ padding: 5rpx 20rpx;
+ }
+ }
+
+ .pic {
+ background-color: #ffffff;
+ padding: 40rpx 30rpx;
+ }
+
+ .label-crad {
+ background-color: #fff;
+ margin-top: 20rpx;
+ padding: 30rpx;
+ border-radius: 8rpx;
+ .label-btn-box {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
&>view {
- height: 56rpx;
- line-height: 56rpx;
- }
- }
- }
-
- .basic-info {
- .form-item {
- background-color: #ffffff;
- padding: 5rpx 20rpx;
- }
- }
-
- .pic {
- background-color: #ffffff;
- padding: 40rpx 30rpx;
- }
-
- .label-btn-box {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- padding: 10rpx 0;
-
-
- &>view {
- margin: 10rpx 10rpx;
-
- .u-button {
- padding: 6rpx 8rpx;
- border-width: 0 !important;
- background-color: #EFEFF0;
- }
- }
- }
-
- }
- }
- }
+ margin: 0 20rpx 20rpx 0;
+
+ .u-button {
+ padding: 6rpx 8rpx;
+ border-width: 0 !important;
+ background-color: #EFEFF0;
+ color: #999999 !important;
+
+ }
+ }
+ }
+ }
+
+
+
+ }
+ }
+ }
</style>
\ No newline at end of file
diff --git a/subPackage/house/roomControl/index.vue b/subPackage/house/roomControl/index.vue
index 9cc6754..d455b56 100644
--- a/subPackage/house/roomControl/index.vue
+++ b/subPackage/house/roomControl/index.vue
@@ -3,9 +3,7 @@
<view class="main">
<view class="content">
<u-form labelWidth="70" :model="form" ref="form" :rules="rules">
- <box-title title=""></box-title>
-
- <view class="basic-info mt-20">
+ <view class="basic-info">
<u-form-item class="form-item" labelWidth="100" label="绑定手机" required prop="phone">
<u--input border="none" v-model="form.phone" placeholder="请输入">
</u--input>
@@ -27,27 +25,28 @@
</u-form-item>
</view>
- <box-title class="mt-20" title="房屋外观"></box-title>
- <view class="pic mt-20">
+ <view class="pic">
+ <newBoxTitle title="房屋外观"></newBoxTitle>
<u-upload :fileList="form.images" :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" :style="{background: item.color}"
- :plain="true" :text="item.name" @click="showLabelPopup(item)"></u-button>
+ <view class=" flex label-btn-box b-c-w">
+ <newBoxTitle title="房屋标签"></newBoxTitle>
+ <view class="list">
+ <view v-for="(item, index) in labelBtnList" :key="index">
+ <u-button size="mini" type="primary" :style="{background: item.color, color: item.color && '#fff'}"
+ :plain="true" :text="item.name" @click="showLabelPopup(item)"></u-button>
+ </view>
</view>
</view>
</u-form>
</view>
<view class="edit-btn">
- <u-button type="primary" text="修改数据" @click="updateHouseInfo(item)"></u-button>
+ <u-button type="primary" color="linear-gradient(163deg, #01BDFC 0%, #017BFC 100%)" text="修改数据" @click="updateHouseInfo(item)"></u-button>
</view>
</view>
@@ -60,7 +59,7 @@
<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)">
+ :label="item.name" :labelColor="item.color" :name="item.name" :activeColor="item.color" @change="radioChange(item)">
</u-radio>
</u-radio-group>
@@ -78,6 +77,7 @@
<script>
import uploadMixin from "@/mixin/uploadMixin";
+ import newBoxTitle from '@/components/boxTitle/index2.vue'
import {
uploadFile
} from "@/api/doorplateAddress/doorplateAddress";
@@ -100,6 +100,9 @@
} from "echarts";
export default {
mixins: [uploadMixin],
+ components: {
+ newBoxTitle
+ },
data() {
return {
houseCode: '',
@@ -113,7 +116,7 @@
rules: {
phone: [{
- required: true,
+ required: true,
message: '请输入手机号',
// 可以单个或者同时写两个触发验证方式
trigger: ['change', 'blur'],
@@ -157,16 +160,16 @@
{
name: '绿',
disabled: false,
- color: '#07C160'
+ color: '#30D17C'
},
{
name: '黄',
disabled: false,
- color: '#FF976A'
+ color: '#FFB42B'
}, {
name: '红',
disabled: false,
- color: '#EE0A24'
+ color: '#EA1F1F'
}
],
currentLabelInfo: {},
@@ -380,6 +383,7 @@
display: flex;
flex-direction: column;
background: #F9F9FA;
+ font-size: 30rpx;
.main {
position: relative;
@@ -392,32 +396,57 @@
height: 0;
flex: 1;
overflow-y: auto;
+ padding: 20rpx 30rpx;
.basic-info {
+ background-color: #fff;
+ padding: 30rpx;
.form-item {
background-color: #ffffff;
padding: 5rpx 20rpx;
border-bottom: 1px solid #eff1f3;
+
+ &:first-child {
+ padding-top: 0;
+ }
+
+ &:last-child {
+ padding-bottom: 0;
+ }
}
}
.pic {
background-color: #ffffff;
- padding: 40rpx 30rpx;
+ padding: 30rpx;
+ margin-top: 20rpx;
}
.label-btn-box {
- padding: 10rpx 0;
-
- &>view {
- margin: 0 10rpx;
-
- .u-button {
- padding: 6rpx 8rpx;
+ padding: 30rpx;
+ margin-top: 20rpx;
+ display: flex;
+ flex-direction: column;
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+ &>view {
+ width: calc((100% - 80rpx) / 5);
+ margin: 0 20rpx 20rpx 0;
+ &:nth-child(5n) {
+ margin-right: 0;
+ }
+ .u-button {
+ padding: 6rpx 8rpx;
+ border-width: 0 !important;
+ background-color: #F5F5F5;
+ color: #999999;
+ }
}
}
+
}
}
@@ -429,7 +458,7 @@
justify-content: space-around;
align-items: center;
background: #fff;
- border-top: 1rpx solid #ccc;
+ box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
}
}
}
--
Gitblit v1.9.3