4 files modified
8 files added
| | |
| | | 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
|
| | | })
|
| | | } |
| New file |
| | |
| | | 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 |
| | | } |
| | | }) |
| | | } |
| New file |
| | |
| | | <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> |
| | |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | }, |
| | | { |
| | | "path": "views/auditRental", |
| | | "style": { |
| | | "navigationBarTitleText": "出租屋详情", |
| | | "enablePullDownRefresh": false, |
| | | "navigationBarBackgroundColor": "#fff", |
| | | "navigationBarTextStyle": "black" |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | |
| | | ] |
| | | }, |
| | | |
| | | { |
| | | "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", |
| | |
| | | {
|
| | | 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: '社区服务',
|
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| New file |
| | |
| | | <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> |
| | |
| | | </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>
|
| | |
| | | uni.navigateTo({
|
| | | url: `/subPackage/task/workLogList?code=${code}`
|
| | | })
|
| | | },
|
| | |
|
| | | navTo({
|
| | | houseCode,
|
| | | id
|
| | | }) {
|
| | | uni.navigateTo({
|
| | | url: `auditRental?houseCode=${houseCode}&id=${id}`
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|