From e697d545706a3d95f4f9c02d112901d5afac3bf0 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Wed, 20 Mar 2024 18:36:54 +0800
Subject: [PATCH] 更新

---
 subPackage/reside/list.vue                   |  287 +++++++++
 subPackage/workbench/components/rentForm.vue |   82 ++
 subPackage/workbench/views/rental.vue        |   13 
 subPackage/reside/detail.vue                 |  122 ++++
 subPackage/reside/edit.vue                   |  216 +++++++
 api/reside/reside.js                         |   55 +
 pages/home/index.vue                         |   14 
 pages.json                                   |   50 +
 subPackage/reside/record.vue                 |  109 +++
 components/btn/actionBtn.vue                 |  118 +++
 subPackage/workbench/views/auditRental.vue   |  691 +++++++++++++++++++++++
 api/houseRental/houseRental.js               |   26 
 12 files changed, 1,769 insertions(+), 14 deletions(-)

diff --git a/api/houseRental/houseRental.js b/api/houseRental/houseRental.js
index ebb3ff4..85776b1 100644
--- a/api/houseRental/houseRental.js
+++ b/api/houseRental/houseRental.js
@@ -75,12 +75,22 @@
 		method: 'GET',
 		params
 	})
-}
-
-export const confirmHouseRental = (data) => {
-	return http.request({
-		url: 'blade-houseRental/houseRental/confirmHouseRental',
-		method: 'POST',
-		data
-	})
+}
+
+//出租房审核
+export const confirmHouseRental = (data) => {
+	return http.request({
+		url: 'blade-houseRental/houseRental/confirmHouseRental',
+		method: 'POST',
+		data
+	})
+}
+
+//出租房审核
+export const getRentalDetail = (params) => {
+	return http.request({
+		url: 'blade-houseTenant/houseTenant/detail',
+		method: 'GET',
+		params
+	})
 }
\ No newline at end of file
diff --git a/api/reside/reside.js b/api/reside/reside.js
new file mode 100644
index 0000000..c129012
--- /dev/null
+++ b/api/reside/reside.js
@@ -0,0 +1,55 @@
+import http from '@/http/api.js'
+
+//获取居住证申请列表
+export const getResideApplyList = (params) => {
+	return http.request({
+		url: '/blade-taskResidencePermitApply/taskResidencePermitApply/page',
+		method: 'get',
+		params: {
+			...params
+		}
+	})
+}
+
+//添加居住证申请
+export const saveResideApply = (data) => {
+	return http.request({
+		url: '/blade-taskResidencePermitApply/taskResidencePermitApply/save',
+		method: 'POST',
+		data: data
+	})
+}
+
+
+//获取居住证申请详情
+export const getResideApplyDetail = (params) => {
+	return http.request({
+		url: '/blade-taskResidencePermitApply/taskResidencePermitApply/detail',
+		method: 'get',
+		params: {
+			...params
+		}
+	})
+}
+
+
+//审核居住证申请
+export const auditResideApply = (data) => {
+	return http.request({
+		url: '/blade-taskResidencePermitApply/taskResidencePermitApply/auditing',
+		method: 'POST',
+		data: data
+	})
+}
+
+
+//获取居住证申请提交记录列表
+export const getResideApplyRecord = (params) => {
+	return http.request({
+		url: '/blade-taskResidencePermitApply/taskResidencePermitApply/list',
+		method: 'get',
+		params: {
+			...params
+		}
+	})
+}
\ No newline at end of file
diff --git a/components/btn/actionBtn.vue b/components/btn/actionBtn.vue
new file mode 100644
index 0000000..d1a7c78
--- /dev/null
+++ b/components/btn/actionBtn.vue
@@ -0,0 +1,118 @@
+<template>
+	<view class="">
+		<view class="footer flex a-i-c j-c-s-b">
+			<button class="footer-btn" @click="submit(2)">通过</button>
+			<button class="footer-btn" @click="open()">驳回</button>
+		</view>
+		<u-modal :show="isShowModal" title="备注" :showConfirmButton="false">
+			<view class="modal-content">
+				<u-textarea v-model="remark" placeholder="请输入驳回原因"></u-textarea>
+				<view class="modal-btn flex j-c-s-b a-i-c" slot="confirmButton">
+					<button class="modal-btn-item c-main f-30" @click="isShowModal = false">取消</button>
+					<button class="modal-btn-item bgc-main f-30 c-ff" @click="submit(3)">确定</button>
+				</view>
+			</view>
+		</u-modal>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "auditAction",
+		data() {
+			return {
+				isShowModal: false,
+				remark: ""
+			}
+		},
+		methods: {
+			open() {
+				this.isShowModal = true;
+			},
+			close() {
+				this.isShowModal = false;
+			},
+
+			submit(type) {
+				let data = {
+					type,
+					remark: this.remark
+				}
+
+				if (type == 3 && !this.remark) {
+					uni.showToast({
+						title: "请输入驳回原因",
+						icon: "none"
+					})
+					return
+				}
+
+				this.$emit("handle", data)
+				if (type == 3) {
+					this.close()
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.footer {
+		width: 100%;
+		padding: 20rpx 30rpx;
+		box-sizing: border-box;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		background-color: #fff;
+		z-index: 10;
+		padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx);
+		z-index: 999;
+		background-color: #fff;
+		box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
+
+		.footer-btn {
+			width: 300rpx;
+			height: 78rpx;
+			border-radius: 8rpx;
+			font-size: 32rpx;
+			color: #fff;
+			border: none;
+			background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
+		}
+
+		.footer-btn:after {
+			border: none;
+		}
+
+	}
+
+	.modal-content {
+		width: 100%;
+
+		.modal-btn {
+			width: 100%;
+			padding: 40rpx 0 0;
+
+			.modal-btn-item {
+				width: 240rpx;
+				height: 74rpx;
+				line-height: 74rpx;
+				border-radius: 35rpx;
+				border: none;
+				padding: 0;
+				margin: 0;
+			}
+
+			.modal-btn-item:first-child {
+				border: 1px solid currentColor;
+				background: transparent;
+			}
+
+		}
+	}
+
+	/deep/ .u-modal__content {
+		padding-bottom: 20rpx !important;
+	}
+</style>
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 8f27adf..6339ae2 100644
--- a/pages.json
+++ b/pages.json
@@ -686,6 +686,15 @@
 						"navigationBarBackgroundColor": "#fff",
 						"navigationBarTextStyle": "black"
 					}
+				},
+				{
+					"path": "views/auditRental",
+					"style": {
+						"navigationBarTitleText": "出租屋详情",
+						"enablePullDownRefresh": false,
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black"
+					}
 				}
 			]
 		},
@@ -947,7 +956,48 @@
 			]
 		},
 
+		{
+			"root": "subPackage/reside",
+			"pages": [{
+					"path": "list",
+					"style": {
+						"navigationBarTitleText": "居住证管理",
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "edit",
+					"style": {
+						"navigationBarTitleText": "居住证申请",
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black",
+						"enablePullDownRefresh": false
+					}
+				},
 
+				{
+					"path": "detail",
+					"style": {
+						"navigationBarTitleText": "居住证详情",
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "record",
+					"style": {
+						"navigationBarTitleText": "居住证列表",
+						"navigationBarBackgroundColor": "#fff",
+						"navigationBarTextStyle": "black",
+						"enablePullDownRefresh": false
+					}
+				}
+
+			]
+		},
 
 		{
 			"root": "subPackage/people",
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 28d5bc9..5509c2a 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -418,10 +418,16 @@
 					{
 						name: '生活服务',
 						list: [{
-							text: "租客上报",
-							path: "/subPackage/bs/views/zhsb",
-							icon: "/static/icon/nav-04.png"
-						}]
+								text: "租客上报",
+								path: "/subPackage/bs/views/zhsb",
+								icon: "/static/icon/nav-04.png"
+							},
+							{
+								text: "居住证申请",
+								path: "/subPackage/reside/edit",
+								icon: "/static/icon/nav-04.png"
+							}
+						]
 					},
 					{
 						name: '社区服务',
diff --git a/subPackage/reside/detail.vue b/subPackage/reside/detail.vue
new file mode 100644
index 0000000..1c4130c
--- /dev/null
+++ b/subPackage/reside/detail.vue
@@ -0,0 +1,122 @@
+<template>
+	<view class="">
+
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>姓名</text>
+			<text>{{info.name}}</text>
+		</view>
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>电话号码</text>
+			<text>{{info.phone}}</text>
+		</view>
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>身份证号码</text>
+			<text>{{info.idCard}}</text>
+		</view>
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>地址</text>
+			<text class="item-content">{{info.address}}</text>
+		</view>
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>申请事由</text>
+			<text class="item-content">{{info.remark}}</text>
+		</view>
+
+		<view class="item-row flex j-c-s-b a-i-c" v-if="info.confirmFlag == 4">
+			<text>驳回原因</text>
+			<text>{{info.confirmNotion}}</text>
+		</view>
+
+		<view class="item-row flex j-c-s-b a-i-c">
+			<text>申请时间</text>
+			<text>{{info.createTime}}</text>
+		</view>
+
+
+		<audit-action @handle="submit" v-if="roleType == 2 && info.confirmFlag == 1"></audit-action>
+
+	</view>
+
+
+</template>
+
+<script>
+	import auditAction from '@/components/btn/actionBtn.vue'
+	import {
+		getResideApplyDetail,
+		auditResideApply
+	} from "@/api/reside/reside.js"
+	export default {
+		components: {
+			auditAction
+		},
+		data() {
+			return {
+				info: {},
+				roleType: 1
+			}
+		},
+
+
+		onLoad(option) {
+			if (uni.getStorageSync("activeRole").roleName == "民警") {
+				this.roleType = 2;
+			} else {
+				this.roleType = 1;
+			}
+			this.getDetail(option.id)
+		},
+
+		methods: {
+			getDetail(id) {
+				getResideApplyDetail({
+					id
+				}).then(res => {
+					this.info = res.data;
+				})
+			},
+
+			submit(val) {
+				let data = {
+					confirmFlag: val.type == 2 ? 3 : 4,
+				}
+				if (val.type == 3) {
+					data.confirmNotion = val.remark;
+				}
+				auditResideApply(val).then(res => {
+					if (res.code == 200) {
+						this.$showTips("操作成功", "success");
+						setTimeout(() => {
+							uni.navigateBack();
+						}, 300)
+					}
+				})
+			}
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #f5f5f5;
+	}
+
+	.item-row {
+		width: 100%;
+		padding: 30rpx;
+		box-sizing: border-box;
+		border-bottom: 1px solid #f5f5f5;
+		font-size: 28rpx;
+		background-color: #fff;
+
+		.item-content {
+			width: 70%;
+			text-align: right;
+		}
+
+		.item-left {
+			width: 70%;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/reside/edit.vue b/subPackage/reside/edit.vue
new file mode 100644
index 0000000..5f184d4
--- /dev/null
+++ b/subPackage/reside/edit.vue
@@ -0,0 +1,216 @@
+<template>
+	<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="info.name" borderBottom>
+					<u-input v-model="info.name" border="none" placeholder="请输入姓名" placeholderClass="f-28 c-99"
+						inputAlign="right"></u-input>
+				</u-form-item>
+
+				<u-form-item label="电话" prop="info.phone" borderBottom>
+					<u-input v-model="info.phone" type="number" border="none" placeholder="请输入电话"
+						placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+				</u-form-item>
+
+				<u-form-item label="身份证号码" prop="info.name" borderBottom>
+					<u-input v-model="info.idCard" type="idcard" border="none" placeholder="请输入身份证号码"
+						placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+				</u-form-item>
+
+				<u-form-item label="地址" prop="info.address" borderBottom>
+					<u-textarea v-model="info.address" border="none" placeholder="请输入地址" placeholderClass="f-28 c-99"
+						inputAlign="right"></u-textarea>
+				</u-form-item>
+
+				<u-form-item label="申请事由" prop="info.workContent" :borderBottom="false" ref="item1">
+					<u-textarea v-model="info.remark" border="none" placeholder="请输入申请事由" placeholderClass="f-28 c-99"
+						inputAlign="right"></u-textarea>
+				</u-form-item>
+			</u-form>
+		</view>
+
+
+
+		<button class="submit-btn" @click="sumitInfo">提交</button>
+		<button class="list-btn" @click="navigatorPage">我申请的记录</button>
+
+
+	</view>
+
+</template>
+
+<script>
+	import uploadMixin from "@/mixin/uploadMixin";
+	import {
+		saveResideApply
+	} from "@/api/reside/reside.js"
+
+
+
+	export default {
+		mixins: [uploadMixin],
+		data() {
+			return {
+				info: {
+					name: "",
+					phone: "",
+					idCard: "",
+					address: ""
+				},
+				form: {
+					images: []
+				},
+				rules: {
+					'name': {
+						type: 'string',
+						required: true,
+						message: '请输入姓名',
+						trigger: ['blur', 'change']
+					},
+					'phone': [{
+							type: 'string',
+							required: true,
+							message: '请输入手机号',
+							trigger: ['blur', 'change']
+						},
+
+						{
+
+							validator: (rule, value, callback) => {
+								return uni.$u.test.mobile(value);
+							},
+							message: '手机号码不正确',
+							trigger: ['change', 'blur']
+
+						}
+
+					],
+					'address': {
+						type: 'string',
+						required: true,
+						message: '请选择地址',
+						trigger: ['blur', 'change']
+					},
+				},
+			}
+		},
+
+
+		methods: {
+			getLocation() {
+				uni.chooseLocation({
+					success: (res) => {
+						this.$set(this.info, "address", res.address);
+						this.$set(this.info, "lat", res.latitude);
+						this.$set(this.info, "lng", res.longitude)
+					}
+				})
+			},
+
+			sumitInfo() {
+				this.$refs.form.validate().then(valid => {
+					let data = this.info;
+					data.houseCode = uni.getStorageSync("siteInfo").houseCode
+					saveResideApply(data).then(res => {
+						if (res.code == 200) {
+							this.$showTips("提交成功", "success")
+							setTimeout(() => {
+								uni.navigateBack();
+							}, 300)
+						}
+					})
+				})
+			},
+
+			navigatorPage() {
+				uni.navigateTo({
+					url: "record"
+				})
+			}
+
+		}
+	}
+</script>
+
+<style lang="less">
+	page {
+		background-color: #F5F5F5;
+	}
+
+	.content {
+		margin: 20rpx 30rpx;
+		padding: 0 30rpx;
+	}
+
+	.row {
+		padding: 20rpx 0;
+		border-bottom: 1px solid
+	}
+
+	.location-btn {
+		width: 116rpx;
+		height: 46rpx;
+		line-height: 46rpx;
+		border-radius: 4rpx;
+		border: 1px solid currentColor;
+		padding: 0;
+		background-color: #fff;
+	}
+
+	.upload {
+		margin: 0 30rpx;
+		padding: 30rpx;
+
+		.upload-item {
+			width: 140rpx;
+			height: 140rpx;
+			border: 1px solid #EEEEEE;
+		}
+	}
+
+	.address-row {
+		flex: 1;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.address-content {
+		width: calc(100% - 116rpx - 20rpx);
+		margin-right: 20rpx;
+		text-align: right;
+	}
+
+	.location-btn {
+		width: 116rpx;
+		height: 46rpx;
+		line-height: 46rpx;
+		border-radius: 4rpx;
+		border: 1px solid currentColor;
+		padding: 0;
+		background-color: #fff;
+		text-align: center;
+	}
+
+	.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/reside/list.vue b/subPackage/reside/list.vue
new file mode 100644
index 0000000..fa6d049
--- /dev/null
+++ b/subPackage/reside/list.vue
@@ -0,0 +1,287 @@
+<template>
+	<view>
+		<u-sticky>
+			<view class="hander">
+				<view class="tab">
+					<u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
+						:activeStyle="{color:'#017BFC'}" :scrollable="false">
+					</u-tabs>
+				</view>
+
+				<view class="search flex j-c-s-b a-i-c">
+					<view class="tab-filter flex j-c-c a-i-c" slot="right" @click="showDateModal">
+						<text class="f-28">时间筛选</text>
+						<u-icon name="arrow-down"></u-icon>
+					</view>
+					<u-search placeholder="请输入姓名" v-model="keyWord" :clearabled="true" :showAction="true"
+						:animation="true" @search="searchConfirm" @clear="clearConfirm"
+						@custom="searchConfirm"></u-search>
+				</view>
+
+			</view>
+		</u-sticky>
+		<view class="list">
+			<view class="list-item bgc-ff mb-20" v-for="item in siteList" :key="item.id" @click="pushPage(item.id)">
+				<view class="item-title flex a-i-c j-c-s-b mb-20">
+					<text class="f-32 fw">{{ item.name}}</text>
+					<!-- <u-tag text="待审批" type="warning" plain plainFill></u-tag> -->
+					<u-tag class="u_tag" size="mini" :text="findObjValue(item.confirmFlag, tabList).name"
+						:type="findObjValue(item.confirmFlag, tabList).type" plain plainFill></u-tag>
+					<!-- <u-tag text="审核拒绝" type="error" plain plainFill></u-tag> -->
+				</view>
+
+				<view class="item-row flex a-i-c j-c-s-b">
+					<text class="f-28">电话号码</text>
+					<text class="address f-28 c-66">{{ item.phone}}</text>
+				</view>
+
+				<view class="item-row flex a-i-c j-c-s-b">
+					<text class="f-28">地址</text>
+					<text class="address f-28 c-66">{{ item.address}}</text>
+				</view>
+				<!-- <view class="item-row flex a-i-c j-c-s-b">
+					<text class="f-28">法人信息</text>
+					<text class="f-28 c-66">{{ item.legalPerson  ? item.legalPerson : '未完善'}}</text>
+				</view> -->
+				<view class="item-row flex a-i-c j-c-s-b f-28">
+					<text>时间</text>
+					<text class="c-66">{{item.createTime}}</text>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast"></u-toast>
+		<u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+
+
+
+
+
+		<date-range-modal ref="dateRane" @comfirm="handleComfirmDate" @rest="handleRestDate" />
+	</view>
+</template>
+
+<script>
+	import dateRangeModal from '@/components/dateRangeModal/modal.vue';
+	import {
+		getResideApplyList
+	} from '@/api/reside/reside.js'
+	export default {
+		components: {
+			dateRangeModal
+		},
+		data() {
+			return {
+				siteList: [],
+				pagingParams: {
+					current: 1,
+					size: 10
+				},
+				tabList: [{
+						name: "全部",
+						status: "",
+					},
+					{
+						name: "待审核",
+						status: 1,
+						type: 'warning'
+					},
+					{
+						name: "审核通过",
+						status: 3,
+						type: 'success'
+					},
+					{
+						name: "已拒绝",
+						status: 4,
+						type: 'error'
+					},
+				],
+				tabIndex: 0,
+				tabStatus: "",
+				keyWord: '',
+				loadingStatus: 'nomore',
+				clickInfo: {},
+				currentRole: {},
+				selectDate: [],
+			}
+		},
+
+
+		onLoad(option) {
+			if (option.from) {
+				this.tabIndex = 1;
+				this.tabStatus = 1;
+			}
+			if (option.placeId) {
+				this.pagingParams.placeId = option.placeId
+			}
+		},
+
+		onShow() {
+			this.currentRole = uni.getStorageSync("activeRole")
+			this.resetParams()
+			this.getSiteList()
+		},
+		onReachBottom() {
+			this.pagingParams.current++
+			this.getSiteList()
+		},
+
+
+		methods: {
+
+
+			async getSiteList() {
+				this.$nextTick(() => {
+					this.$refs.uToast.show({
+						type: 'loading',
+						message: '正在加载',
+						duration: 9999999
+					})
+					this.loadingStatus = 'loadingmore'
+				})
+
+				const params = {
+					name: this.keyWord,
+					confirmFlag: this.tabStatus
+				}
+				if (this.selectDate.length) {
+					params.startTime = this.selectDate[0],
+						params.endTime = this.selectDate[1]
+				}
+				const {
+					roleName
+				} = this.currentRole
+
+				const res = await getResideApplyList({
+					...params,
+					roleName,
+					...this.pagingParams
+				})
+				console.log(res);
+				const {
+					code,
+					data: {
+						records
+					}
+				} = res
+				if (code !== 200) {
+					uni.showToast({
+						title: '数据请求失败',
+						icon: 'error'
+					})
+					return
+				}
+				this.siteList = [...this.siteList, ...records]
+				this.$nextTick(() => {
+					this.$refs.uToast.isShow = false
+				})
+				this.loadingStatus = 'nomore'
+			},
+			changeTab(e) {
+				this.tabStatus = e.status;
+				this.resetParams()
+				this.getSiteList()
+			},
+			searchConfirm() {
+				this.resetParams()
+				this.getSiteList()
+			},
+			clearConfirm() {
+				this.keyWord = ''
+				this.resetParams()
+				this.searchConfirm()
+			},
+
+
+			showDateModal() {
+				this.$refs.dateRane.open();
+			},
+
+
+			resetParams() {
+				this.siteList = []
+				this.pagingParams.current = 1
+			},
+			findObjValue(value, obj) {
+				const res = obj.find(item => {
+					return item.status == value
+				})
+				return res
+			},
+			pushPage(id) {
+				const {
+					roleAlias
+				} = this.currentRole
+				if (roleAlias === "inhabitant") {
+					return
+				}
+				uni.navigateTo({
+					url: `detail?id=${id}`
+				})
+
+
+				// this.$u.func.globalNavigator(`/subPackage/workbench/views/examine?id=${id}&placeId=${placeId}`)
+			},
+
+			handleRestDate() {
+				this.selectDate = [];
+				this.resetParams();
+				this.getSiteList()
+			},
+			handleComfirmDate(val) {
+				this.selectDate = val;
+				this.resetParams();
+				this.getSiteList()
+			}
+
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F5F5F5;
+	}
+
+	.hander {
+		background-color: #fff;
+
+		.tab {
+			width: 100%;
+		}
+
+		.tab-filter {
+			padding: 0 20rpx;
+		}
+
+
+		.search {
+			padding: 20rpx 30rpx;
+		}
+	}
+
+	.list {
+		margin: 20rpx 30rpx 0;
+	}
+
+	.list-item {
+		padding: 0 30rpx 20rpx;
+		border-radius: 8rpx;
+
+		.item-title {
+			padding: 30rpx 0;
+			border-bottom: 1px solid #F5F5F5;
+		}
+
+		.item-row {
+			padding: 10rpx 0;
+
+			.address {
+				width: 65%;
+				text-align: right;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/reside/record.vue b/subPackage/reside/record.vue
new file mode 100644
index 0000000..e131dfd
--- /dev/null
+++ b/subPackage/reside/record.vue
@@ -0,0 +1,109 @@
+<template>
+	<view class="">
+		<view class="list">
+			<view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.taskId)">
+				<view class="item-title flex a-i-c j-c-s-b mb-20">
+					<!-- <text class="f-32 fw" v-if="i.type == 7">消防检查</text> -->
+					<text class="f-32 fw">{{i.name}}</text>
+					<u-tag v-if="i.confirmFlag == 1" text="待审批" type="warning" plain plainFill></u-tag>
+					<u-tag v-if="i.confirmFlag == 3" text="审核通过" type="success" plain plainFill></u-tag>
+					<u-tag v-if="i.confirmFlag == 4" text="审核拒绝" type="error" plain plainFill></u-tag>
+				</view>
+				<view class="item-row flex a-i-c j-c-s-b">
+					<text class="f-28">时间</text>
+					<text class="f-28 c-66">{{i.createTime}}</text>
+				</view>
+			</view>
+		</view>
+		<u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+	import {
+		getResideApplyRecord
+	} from "@/api/reside/reside.js"
+	export default {
+		data() {
+			return {
+				list: [],
+				currentPage: 1,
+				loadingStatus: 'nomore',
+			}
+		},
+
+		onLoad() {
+			this.getList()
+		},
+		onReachBottom() {
+			this.currentPage++
+			this.getList()
+		},
+
+		methods: {
+			getList() {
+				this.$nextTick(() => {
+					this.loadingStatus = 'loadmore'
+					this.$refs.uToast.show({
+						type: 'loading',
+						message: '正在加载',
+						duration: 9999999
+					})
+				})
+				getResideApplyRecord({
+					// checkUserId: uni.getStorageSync("userInfo").user_id,
+					page: this.currentPage,
+					size: 10
+				}).then(res => {
+					if (res.code != 200) {
+						uni.showToast({
+							title: '数据请求失败',
+							icon: 'error'
+						})
+						return
+					}
+					let records = res.data.records;
+					this.list = [...this.list, ...records]
+					this.$nextTick(() => {
+						this.$refs.uToast.isShow = false
+					})
+					this.loadingStatus = 'nomore'
+				})
+			},
+			navTo(id) {
+				uni.navigateTo({
+					url: `detail?id=${id}`
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F5F5F5;
+	}
+
+	.list {
+		margin: 20rpx 30rpx 0;
+	}
+
+	.list-item {
+		padding: 0 30rpx 20rpx;
+		border-radius: 8rpx;
+
+		.item-title {
+			padding: 30rpx 0;
+			border-bottom: 1px solid #F5F5F5;
+		}
+
+		.item-row {
+			padding: 10rpx 0;
+
+			.address {
+				width: 65%;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/components/rentForm.vue b/subPackage/workbench/components/rentForm.vue
new file mode 100644
index 0000000..1511a30
--- /dev/null
+++ b/subPackage/workbench/components/rentForm.vue
@@ -0,0 +1,82 @@
+<template>
+	<u-form :model="form" class="form-box" :rules="rules" ref="refForm">
+		<u-form-item class="form-item" label="姓名" required prop="name" labelWidth="80">
+			<u-input v-model="form.name" border="none" placeholder="姓名" />
+		</u-form-item>
+		<u-form-item class="form-item" label="联系方式" required prop="phoneNumber" labelWidth="80">
+			<u-input type="number" v-model="form.phoneNumber" border="none" placeholder="联系方式" />
+		</u-form-item>
+		<u-form-item class="form-item" label="身份证号码" required prop="idCard" labelWidth="80">
+			<u-input type="idcard" v-model="form.idCard" border="none" placeholder="身份证号码" />
+		</u-form-item>
+		<u-form-item class="form-item" label="户籍地址" labelWidth="80">
+			<u-input v-model="form.hukouRegistration" border="none" placeholder="选填" />
+		</u-form-item>
+		<u-form-item class="form-item" label="工作单位" labelWidth="80">
+			<u-input v-model="form.employer" border="none" placeholder="选填" />
+		</u-form-item>
+	</u-form>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				form: {
+					name: '',
+					phoneNumber: '',
+					idCard: '',
+					hukouRegistration: '',
+					employer: ''
+				},
+				rules: {
+					name: [{
+						required: true,
+						message: '请输入姓名',
+						// 可以单个或者同时写两个触发验证方式 
+						trigger: ['change', 'blur'],
+					}],
+					phoneNumber: [{
+							required: true,
+							message: '请输入联系方式',
+							// 可以单个或者同时写两个触发验证方式 
+							trigger: ['change', 'blur'],
+						},
+						{
+							validator: (rule, value, callback) => {
+								return uni.$u.test.mobile(value);
+							},
+							message: '手机号码不正确',
+							trigger: ['change', 'blur']
+						}
+					],
+					idCard: [{
+						required: true,
+						message: '请输入身份证号',
+						// 可以单个或者同时写两个触发验证方式 
+						trigger: ['change', 'blur'],
+					}, {
+						// 自定义验证函数,见上说明
+						validator: (rule, value, callback) => {
+							const reg =
+								/^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/
+							if (reg.test(value)) {
+								return true
+							}
+							return false
+						},
+						message: '请输入正确的身份证号',
+						// 触发器可以同时用blur和change
+						trigger: ['change', 'blur'],
+					}]
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.form-box {
+		background: #fff;
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/auditRental.vue b/subPackage/workbench/views/auditRental.vue
new file mode 100644
index 0000000..0bfde65
--- /dev/null
+++ b/subPackage/workbench/views/auditRental.vue
@@ -0,0 +1,691 @@
+<template>
+	<view class="container">
+		<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
+			<view class="basic-info">
+				<u-form-item class="form-item" labelWidth="100" label="租客关系" required prop="relation">
+					<u--input border="none" v-model="relationName" disabled disabledColor="#ffffff" placeholder="请选择">
+					</u--input>
+					<!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
+				</u-form-item>
+				<u-form-item 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 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> -->
+				</u-form-item>
+				<u-form-item class="form-item" labelWidth="100" label="租房时间:" required prop="rentTime">
+					<u--input border="none" v-model="form.rentTime" disabled disabledColor="#ffffff" placeholder="请选择">
+					</u--input>
+					<!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
+				</u-form-item>
+				<u-form-item class="form-item" labelWidth="100" label="到期时间:" required prop="dueTime">
+					<u--input border="none" v-model="form.dueTime" disabled disabledColor="#ffffff" placeholder="请选择">
+					</u--input>
+					<!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
+				</u-form-item>
+				<view class="pic">
+					<view class="title">合同上传</view>
+					<u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+						:accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+						uploadIcon="/static/icon/upload.png" :maxCount="uploadConfig.maxCount"
+						:capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
+					</u-upload>
+				</view>
+			</view>
+			<view class="rent-info">
+				<view v-for="(item, index) in rentFormNum" :key="item" class="rent-box">
+					<view class="box-title">
+						<view class="l">
+							<view class="line"></view>
+							<view class="title">{{ '租客信息-#' + (index + 1)  }}</view>
+						</view>
+						<view class="r" v-if="(index+1) > 1">
+							<u-icon name="trash-fill" color="#ff0000" size="20" @click="decRentForm(index)"></u-icon>
+						</view>
+					</view>
+					<rentForm ref="rentform" />
+				</view>
+				<!-- <view class="addPerson-box">
+					<u-button class="btn-item" color="#2CD5C0" plain style="width: 300rpx;"
+						@click="addRentForm">再加一人</u-button>
+				</view> -->
+			</view>
+		</u-form>
+		<!-- 事件类型下拉框 -->
+		<!-- <select-bus v-if="typeShow" :show="typeShow" v-model="form[selectBusModel]" type="radio"
+			:popupTitle="selectBusTitle" :dataLists="selectBusList" @cancel="typeShow = false" @submit="typeSelect">
+		</select-bus> -->
+		<u-picker :defaultIndex="[selectDefaultIndex[selectBusKey]]" :closeOnClickOverlay="true" v-if="typeShow"
+			:show="typeShow" :columns="[selectBusList]" @close="typeShow = false" @cancel="typeShow = false"
+			keyName="name" @confirm="typeSelect"></u-picker>
+		<!--出租时间选择-->
+		<u-datetime-picker v-model="currentTime" v-if="rentTimeShow" :closeOnClickOverlay="true"
+			@close="rentTimeShow = false" :show="rentTimeShow" mode="date" @confirm="rentTimeConfirm"
+			@cancel="rentTimeShow = false"></u-datetime-picker>
+		<u-datetime-picker v-model="currentTime" v-if="dueTimeShow" :closeOnClickOverlay="true"
+			@close="dueTimeShow = false" :show="dueTimeShow" mode="date" @confirm="dueTimeConfirm"
+			@cancel="dueTimeShow = false"></u-datetime-picker>
+
+		<!-- <view class="bottom-tools">
+			<u-button class="btn-item" color="#2CD5C0" plain style="width: 300rpx;" @click="addRentForm">再加一人</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="verifyConfirm" v-if="btnControls.verifyBtn">确认</u-button>
+			<u-button class="btn-item" color="linear-gradient(to right, #06B0FD, #027BFE)" @click="saveOrUpdate">
+				{{ rentId === '' ? "保存" : "确认修改" }}</u-button>
+		</view> -->
+
+		<footer-btn text="审核" @click="verifyConfirm" v-if="btnControls.verifyBtn" />
+
+		<u-modal :show="isModelShow" width="auto" :showCancelButton="true" title="提示" content="请确认是否删除当前租户信息"
+			@cancel="isModelShow = false" @confirm="deleteRent"></u-modal>
+		<u-picker v-if="isAuditShow" :closeOnClickOverlay="true" @close="isAuditShow = false" :columns="auditColumns"
+			:show="isAuditShow" @confirm="verifyConfirm" keyName="name" @cancel="isAuditShow = false"></u-picker>
+	</view>
+</template>
+
+<script>
+	import selectBus from "@/components/my-components/selectBus.vue"
+	import rentForm from '../components/rentForm.vue'
+	import uploadMixin from "@/mixin/uploadMixin";
+	import {
+		uploadFile,
+		getHouseRentInfo,
+	} from "@/api/doorplateAddress/doorplateAddress";
+	import {
+		addHouseRental,
+		updateRetalInfo,
+		deleteRentalInfo,
+		confirmHouseRental
+	} from '@/api/houseRental/houseRental.js'
+	import {
+		data
+	} from "uview-ui/libs/mixin/mixin";
+	import {
+		update
+	} from "../../../api/system/role";
+	import {
+		minioBaseUrl
+	} from '@/common/setting'
+	export default {
+		mixins: [uploadMixin],
+		components: {
+			selectBus,
+			rentForm
+		},
+		data() {
+			return {
+				currentRole: '',
+				form: {
+					relation: "",
+					rentTime: "",
+					houseTypeName: "",
+					rentalUseName: "",
+					dueTime: "",
+					fileUrls: "",
+					images: []
+				},
+				imagesList: [],
+				rules: {
+					relation: [{
+						required: true,
+						message: '请选择租客关系'
+					}],
+					houseTypeName: [{
+						required: true,
+						message: '请选择房屋状态'
+					}],
+					rentalUseName: [{
+						required: true,
+						message: '请选择房屋用途'
+					}],
+					rentTime: [{
+						required: true,
+						message: '请选择租房时间'
+					}],
+					dueTime: [{
+						required: true,
+						message: '请选择到期时间'
+					}]
+				},
+				rentTimeShow: false,
+				dueTimeShow: false,
+				rentFormNum: 1,
+				relationName: "",
+				houseTypeName: "",
+				rentalUseName: "",
+				dataList: {
+					relation: [{
+							name: "同一户",
+							value: "1"
+						},
+						{
+							name: "不同户",
+							value: "2"
+						}
+					],
+					houseType: [{
+							name: "部分出租",
+							value: "1"
+						},
+						{
+							name: "全部出租",
+							value: "2"
+						}
+					],
+					rentalUse: [{
+							name: "仓库",
+							value: "1"
+						},
+						{
+							name: "办公",
+							value: "2"
+						},
+						{
+							name: "商用",
+							value: "3"
+						},
+						{
+							name: "居住",
+							value: "4"
+						}
+					]
+				},
+				isAuditShow: false,
+				auditColumns: [
+					[{
+							name: "待确认",
+							status: 0
+						},
+						{
+							name: "已确认",
+							status: 1
+						},
+					]
+				],
+				selectBusList: [],
+				selectBusTitle: '',
+				selectBusModel: '',
+				selectBusKey: '',
+				typeShow: false,
+				houseCode: '',
+				rentId: '',
+				auditStatus: null,
+				currentTime: Number(new Date()),
+				isModelShow: false,
+				btnControls: {
+					deleteBtn: false,
+					verifyBtn: false
+				},
+				selectDefaultIndex: {
+					rentalUse: 0,
+					relation: 0,
+					houseType: 0
+				}
+			}
+		},
+		onLoad(option) {
+			const {
+				id,
+				houseCode
+			} = option
+			this.houseCode = houseCode
+			this.currentRole = uni.getStorageSync("activeRole")
+			// 使用id来判断是不是修改
+			if (id !== void 0) {
+				this.rentId = id
+				this.getCurrentRentInfo()
+			}
+		},
+		methods: {
+			showSelectBus(data, title, model, key) {
+				this.selectBusList = data
+				this.selectBusTitle = title
+				this.selectBusModel = model
+				this.selectBusKey = key
+				this.typeShow = true
+			},
+			//类型选择确认
+			typeSelect(e) {
+				const [result] = e.value;
+				this[this.selectBusModel] = result.name
+				this.form[this.selectBusKey] = result.value
+				this.selectDefaultIndex[this.selectBusKey] = e.indexs[0];
+				this.typeShow = !this.typeShow
+			},
+			rentTimeClick() {
+				this.currentTime = Number(new Date(this.form.rentTime)) || Number(new Date())
+				this.rentTimeShow = true
+			},
+			rentTimeConfirm(e) {
+				const time = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
+				this.form.rentTime = time
+				this.rentTimeShow = false
+			},
+			dueTimeClick() {
+				this.currentTime = Number(new Date(this.form.dueTime)) || Number(new Date())
+				this.dueTimeShow = true
+			},
+			dueTimeConfirm(e) {
+				const time = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
+				this.form.dueTime = time
+				this.dueTimeShow = false
+			},
+			addRentForm() {
+				this.rentFormNum++
+			},
+			decRentForm(i) {
+				try {
+					let formData = []
+					this.$refs.rentform.forEach(vc => {
+						formData.push(vc.form)
+					})
+					formData.splice(i, 1)
+					formData.forEach((sform, i) => {
+						this.$refs.rentform[i].form = sform
+					})
+					this.rentFormNum > 1 && this.rentFormNum--
+					uni.showToast({
+						title: "删除成功",
+						icon: "success",
+						duration: 1500
+					})
+				} catch (e) {
+					uni.showToast({
+						title: "删除失败",
+						icon: "error",
+						duration: 1500
+					})
+				}
+			},
+			saveOrUpdate() {
+				this.form.houseTypeName = this.houseTypeName
+				this.form.rentalUseName = this.rentalUseName
+				this.$refs.form.validate().then(res => {
+					let rentFormValidGroup = []
+					this.$refs.rentform.forEach(item => {
+						rentFormValidGroup.push(item.$refs.refForm.validate());
+					})
+					Promise.all(rentFormValidGroup).then(result => {
+						if (this.rentId === '') {
+							this.save()
+							return
+						}
+						this.update()
+					})
+				})
+			},
+			// 新增操作
+			async save() {
+				let householdVOList = []
+				this.$refs.rentform.forEach(item => {
+					householdVOList.push(item.form)
+				})
+				if (this.form.images.length > 0) {
+					let urls = []
+					this.form.images.forEach(e => {
+						urls.push(e.name)
+					})
+					this.form.fileUrls = urls.join(",")
+				}
+				const relationIndex = this.dataList.relation.findIndex(item => item.name === this.relationName)
+				const statusIndex = this.dataList.houseType.findIndex(item => item.name === this.houseTypeName)
+				const rentalIndex = this.dataList.rentalUse.findIndex(item => item.name === this.rentalUseName)
+				let params = {
+					audit_status: this.currentRole.roleAlias === 'inhabitant' ? 0 : 1,
+					houseCode: this.houseCode,
+					tenantRelationship: this.dataList.relation[relationIndex].value,
+					rentalTime: this.form.rentTime,
+					dueTime: this.form.dueTime,
+					houseStatus: this.dataList.houseType[statusIndex].value,
+					rentalUse: this.dataList.rentalUse[rentalIndex].value,
+					fileUrls: this.form.fileUrls,
+					householdVOList,
+					roleName: uni.getStorageSync("activeRole").roleName
+				}
+				const {
+					code,
+					data
+				} = await addHouseRental(params)
+				if (code !== 200) {
+					uni.showToast({
+						title: "添加租户信息失败",
+						icon: "error",
+						duration: 1500
+					})
+					return
+				}
+				uni.showToast({
+					title: "添加租户信息成功",
+					icon: "success",
+					duration: 1500,
+					success: () => {
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 1500)
+					}
+				})
+			},
+			// 确认操作
+			verify() {
+				this.isAuditShow = true
+			},
+			verifyConfirm() {
+				// const auditStatus = e.value[0].status
+
+
+
+				uni.showModal({
+					title: "提示",
+					content: "是否确认该租户?",
+					success: (res) => {
+						if (res.confirm) {
+							this.confirmRequest();
+						}
+					}
+				})
+
+
+			},
+
+			confirmRequest() {
+				confirmHouseRental({
+					id: this.rentId,
+					auditStatus: 1
+				}).then(res => {
+					const {
+						code,
+						data
+					} = res
+					if (code !== 200) {
+						this.$showTips("确认失败", 'error')
+						return
+					}
+					this.$showTips("确认成功", 'success')
+					// this.isAuditShow = false
+					this.getCurrentRentInfo()
+				})
+			},
+
+
+			// 更新操作
+			async update() {
+				let householdVOList = []
+				this.$refs.rentform.forEach(item => {
+					householdVOList.push(item.form)
+				})
+				if (this.form.images.length > 0) {
+					let urls = []
+					this.form.images.forEach(e => {
+						urls.push(e.name)
+					})
+					this.form.fileUrls = urls.join(",")
+				}
+				const relationIndex = this.dataList.relation.findIndex(item => item.name === this.relationName)
+				const statusIndex = this.dataList.houseType.findIndex(item => item.name === this.houseTypeName)
+				const rentalIndex = this.dataList.rentalUse.findIndex(item => item.name === this.rentalUseName)
+				let data = {
+					id: this.rentId,
+					houseCode: this.houseCode,
+					tenantRelationship: this.dataList.relation[relationIndex].value,
+					rentalTime: this.form.rentTime,
+					dueTime: this.form.dueTime,
+					houseStatus: this.dataList.houseType[statusIndex].value,
+					rentalUse: this.dataList.rentalUse[rentalIndex].value,
+					fileUrls: this.form.fileUrls,
+					householdVOList
+				}
+				const res = await updateRetalInfo(data)
+				if (res.code !== 200) {
+					uni.showToast({
+						title: "修改租户信息失败",
+						icon: "error",
+						duration: 1500
+					})
+					return
+				}
+				uni.showToast({
+					title: "修改租户信息成功",
+					icon: "success",
+					duration: 1500,
+					success: () => {
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 1500)
+					}
+				})
+			},
+			findObjValue(value, obj) {
+				// const res = obj.find(item => {
+				// 	return item.value == value
+				// })
+				// return res.name
+
+				let data = {
+					index: "",
+					name: ""
+				}
+				for (let i = 0, ii = obj.length; i < ii; i++) {
+					if (value == obj[i].value) {
+						data.index = i;
+						data.name = obj[i].name;
+					}
+				}
+				return data;
+
+
+			},
+			// 获取租赁相关信息
+			async getCurrentRentInfo() {
+				const {
+					code,
+					data: {
+						houseRentalList
+					}
+				} = await getHouseRentInfo(this.houseCode)
+				this.auditStatus = houseRentalList[0].auditStatus
+				console.log(this.auditStatus);
+				const images = []
+				const {
+					houseStatus,
+					tenantRelationship,
+					rentalUse,
+					rentalTime,
+					dueTime,
+					householdVOList,
+					fileUrls
+				} = houseRentalList.find(item => item.id === this.rentId)
+				// 合同展示处理
+				if (fileUrls != null && fileUrls.length > 0) {
+					const urls = fileUrls.split(',')
+					// 遍历
+					urls.forEach(e => {
+						images.push({
+							url: minioBaseUrl + e,
+							name: e
+						})
+					})
+				}
+				this.form = {
+					relation: tenantRelationship,
+					rentTime: rentalTime,
+					dueTime: dueTime,
+					houseTypeName: houseStatus,
+					rentalUseName: rentalUse,
+					images: images
+				}
+				// this.rentalUseName = this.findObjValue(rentalUse, this.dataList.rentalUse)
+				// this.relationName = this.findObjValue(tenantRelationship, this.dataList.relation)
+				// this.houseTypeName = this.findObjValue(houseStatus, this.dataList.houseType)
+
+				this.rentalUseName = this.findObjValue(rentalUse, this.dataList.rentalUse).name
+				this.selectDefaultIndex.rentalUse = this.findObjValue(rentalUse, this.dataList.rentalUse).index;
+				this.relationName = this.findObjValue(tenantRelationship, this.dataList.relation).name
+				this.selectDefaultIndex.relation = this.findObjValue(tenantRelationship, this.dataList.relation).index;
+				this.houseTypeName = this.findObjValue(houseStatus, this.dataList.houseType).name
+				this.selectDefaultIndex.houseType = this.findObjValue(houseStatus, this.dataList.houseType).index
+
+				this.rentFormNum = householdVOList.length
+				this.$nextTick(() => {
+					householdVOList.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 {
+					code,
+					data
+				} = await deleteRentalInfo(this.rentId)
+				if (code !== 200) {
+					uni.showToast({
+						title: "删除失败",
+						icon: "error",
+						duration: 1500
+					})
+					return
+				}
+				this.isModelShow = false
+				uni.showToast({
+					title: '删除成功',
+					icon: 'success',
+					duration: 1000,
+					complete: () => {
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 1000)
+					}
+				})
+			},
+
+			auditInfo() {
+
+
+
+			}
+
+		}
+	}
+</script>
+
+<style>
+	page {
+		background: #F5F5F5;
+	}
+</style>
+<style scoped lang="scss">
+	.container {
+		position: relative;
+		display: flex;
+		flex-direction: column;
+		padding: 20rpx 30rpx;
+		padding-bottom: 200rpx;
+
+		.basic-info {
+			background-color: #ffffff;
+			padding: 30rpx;
+			border-radius: 8rpx;
+
+
+
+			.pic {
+
+
+				// padding: 40rpx 30rpx;
+				.title {
+					font-size: 30rpx;
+					margin: 20rpx 0;
+				}
+
+				/deep/ .u-upload__button {
+					border: 1rpx solid #EEEEEE;
+					background-color: #fff;
+				}
+			}
+		}
+
+		.rent-info {
+			.addPerson-box {
+				margin-top: 30rpx;
+			}
+
+			.rent-box {
+				padding: 30rpx;
+				background-color: #ffffff;
+				margin-top: 30rpx;
+				border-radius: 8rpx;
+
+				.box-title {
+					display: flex;
+					justify-content: space-between;
+
+					.l {
+						display: flex;
+						align-items: center;
+
+						.line {
+							width: 6rpx;
+							height: 60%;
+							margin-right: 10rpx;
+							background-color: #017BFC;
+						}
+
+						.title {
+							font-size: 30rpx;
+							font-weight: 700;
+						}
+					}
+				}
+			}
+		}
+
+
+		.btn-group {
+			padding: 30rpx;
+			position: absolute;
+			bottom: 28rpx;
+			width: calc(100% - 60rpx);
+
+			.btn {
+				margin-bottom: 30rpx;
+			}
+		}
+
+		.bottom-tools {
+			display: flex;
+			background-color: #ffffff;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: calc(100% - 40rpx);
+			// border-top: 1rpx solid #e4e4e4;
+			z-index: 999;
+			padding: 20rpx;
+			padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx);
+
+			/deep/ .u-button {
+				color: #ffffff;
+				font-weight: 700;
+				border: 0;
+				margin-left: 30rpx;
+
+				&:first-child {
+					margin-left: 0rpx;
+				}
+			}
+		}
+	}
+
+	/deep/ .u-form-item {
+		padding: 5rpx 20rpx;
+		border-bottom: 1px solid #eff1f3;
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/rental.vue b/subPackage/workbench/views/rental.vue
index e01b12b..334ef2f 100644
--- a/subPackage/workbench/views/rental.vue
+++ b/subPackage/workbench/views/rental.vue
@@ -43,10 +43,10 @@
 				</view>
 			</view>
 
-			<view class="list bgc-ff" v-for="(records,index) in tenantList" :key="index">
+			<view class="list bgc-ff" v-for="(records,index) in tenantList" :key="index" @click="navTo(records)">
 				<view class="flex j-c-s-b a-i-c">
 					<view class="flex a-i-c">
-						<text class="f-32 mr-50">{{ records.tenantName }}</text>
+						<text class="f-32 mr-50">{{ records.tenantName || "" }}</text>
 						<view class="flex a-i-c">
 							<u-icon name="phone-fill" color="#017BFC"></u-icon>
 							<text class="f-28 ml-10">{{ records.phone || '未填写' }}</text>
@@ -371,6 +371,15 @@
 				uni.navigateTo({
 					url: `/subPackage/task/workLogList?code=${code}`
 				})
+			},
+
+			navTo({
+				houseCode,
+				id
+			}) {
+				uni.navigateTo({
+					url: `auditRental?houseCode=${houseCode}&id=${id}`
+				})
 			}
 		}
 	}

--
Gitblit v1.9.3