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