|
@ -14,32 +14,38 @@ |
|
|
v-for="(item, index) in dataList" |
|
|
v-for="(item, index) in dataList" |
|
|
:key="index" |
|
|
:key="index" |
|
|
> |
|
|
> |
|
|
<div |
|
|
<div class="el-flex el-flex-y-center" v-if="item.isShow"> |
|
|
class="tit el-flex el-flex-y-center model" |
|
|
<div |
|
|
:style="{ backgroundColor: item.bgColor }" |
|
|
class="tit el-flex el-flex-y-center model" |
|
|
> |
|
|
:style="{ backgroundColor: item.bgColor }" |
|
|
<el-image |
|
|
> |
|
|
style="height: 28px; margin-right: 13px" |
|
|
<el-image |
|
|
:src="item.imageSrc" |
|
|
style="height: 28px; margin-right: 13px" |
|
|
></el-image |
|
|
:src="item.imageSrc" |
|
|
><span>{{ item.title }}</span> |
|
|
></el-image |
|
|
<div class="checkout-process-container"> |
|
|
><span>{{ item.title }}</span> |
|
|
|
|
|
<div class="checkout-process-container"> |
|
|
|
|
|
<el-image |
|
|
|
|
|
class="el-flex el-flex-y-center el-flex-center checkout-process" |
|
|
|
|
|
style="height: 26px" |
|
|
|
|
|
:src="susIcon" |
|
|
|
|
|
v-if="stepCompleted[index]" |
|
|
|
|
|
></el-image> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="arrow-container"> |
|
|
<el-image |
|
|
<el-image |
|
|
class="el-flex el-flex-y-center el-flex-center checkout-process" |
|
|
class="el-flex el-flex-y-center el-flex-center" |
|
|
style="height: 26px" |
|
|
style="height: 28px; margin-left: 13px" |
|
|
:src="susIcon" |
|
|
:src="stepCompleted[index] ? arrowActive : arrow" |
|
|
v-if="stepCompleted[index]" |
|
|
v-if=" |
|
|
|
|
|
index < dataList.length - 1 && |
|
|
|
|
|
(index !== dataList.length - 2 || |
|
|
|
|
|
dataList[dataList.length - 1].isShow) |
|
|
|
|
|
" |
|
|
></el-image> |
|
|
></el-image> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="arrow-container"> |
|
|
|
|
|
<el-image |
|
|
|
|
|
class="el-flex el-flex-y-center el-flex-center" |
|
|
|
|
|
style="height: 28px; margin-left: 13px" |
|
|
|
|
|
:src="stepCompleted[index] ? arrowActive : arrow" |
|
|
|
|
|
v-if="index < dataList.length - 1" |
|
|
|
|
|
></el-image> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 信息确认 --> |
|
|
<!-- 信息确认 --> |
|
@ -89,9 +95,9 @@ |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
|
|
|
|
|
|
<el-form-item> |
|
|
<el-form-item v-if="Object.keys(baseInfo).length > 0"> |
|
|
<el-row :gutter="30"> |
|
|
<el-row :gutter="30"> |
|
|
<el-col :span="6"> 姓名:{{ baseInfo.graduateName }} </el-col> |
|
|
<el-col :span="6"> 姓名: {{ baseInfo.graduateName }} </el-col> |
|
|
<el-col :span="6"> |
|
|
<el-col :span="6"> |
|
|
性别:{{ |
|
|
性别:{{ |
|
|
baseInfo.gender === 1 |
|
|
baseInfo.gender === 1 |
|
@ -124,7 +130,7 @@ |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-row> |
|
|
<el-row v-if="Object.keys(baseInfo).length > 0"> |
|
|
<el-col :span="24"> |
|
|
<el-col :span="24"> |
|
|
<el-form-item class="el-ml-3" label="退房类型"> |
|
|
<el-form-item class="el-ml-3" label="退房类型"> |
|
|
<el-radio-group v-model="queryParams.checkOutType"> |
|
|
<el-radio-group v-model="queryParams.checkOutType"> |
|
@ -157,7 +163,7 @@ |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<el-col :span="24" v-if="queryParams.checkOutType === 1"> |
|
|
<el-col :span="24" v-if="queryParams.checkOutType === 1"> |
|
|
<el-form-item label="备注"> |
|
|
<el-form-item label="备注" prop="forceCheckoutDesc"> |
|
|
<el-input |
|
|
<el-input |
|
|
type="textarea" |
|
|
type="textarea" |
|
|
v-model="queryParams.forceCheckoutDesc" |
|
|
v-model="queryParams.forceCheckoutDesc" |
|
@ -172,33 +178,53 @@ |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 房间检查 --> |
|
|
<!-- 房间检查 --> |
|
|
<el-form size="small" label-width="80px"> |
|
|
<el-form |
|
|
<div v-if="currentStep === 2 || currentStep === 3 || currentStep === 4"> |
|
|
size="small" |
|
|
|
|
|
label-width="80px" |
|
|
|
|
|
ref="checkForm" |
|
|
|
|
|
:model="form" |
|
|
|
|
|
:rules="checkrules" |
|
|
|
|
|
> |
|
|
|
|
|
<div v-if="currentStep != 1"> |
|
|
<div class="el-my-3"> |
|
|
<div class="el-my-3"> |
|
|
<CommonTitle>退房信息</CommonTitle> |
|
|
<CommonTitle>退房信息</CommonTitle> |
|
|
</div> |
|
|
</div> |
|
|
<el-form-item> |
|
|
<el-form-item> |
|
|
<el-row :gutter="30"> |
|
|
<el-row :gutter="30" style="margin-bottom: 52px"> |
|
|
<el-col :span="8"> |
|
|
<el-col :span="7"> |
|
|
入住房间:{{ |
|
|
入住房间:{{ |
|
|
(baseInfo.apartmentName || "") + |
|
|
(baseInfo.apartmentName || "") + |
|
|
(baseInfo.buildingName || "") + |
|
|
(baseInfo.buildingName || "") + |
|
|
(baseInfo.unit_name || "") + |
|
|
(baseInfo.unit_name || "") + |
|
|
(baseInfo.houseName || "") + |
|
|
(baseInfo.houseName || "") + |
|
|
(baseInfo.roomTypeName || "") |
|
|
(baseInfo.roomTypeName || "") || |
|
|
|
|
|
$route.query.userInfo.roomNamePath |
|
|
}} |
|
|
}} |
|
|
</el-col> |
|
|
</el-col> |
|
|
<el-col :span="3"> 姓名:{{ baseInfo.graduateName }} </el-col> |
|
|
|
|
|
<el-col :span="3"> |
|
|
<el-col :span="3"> |
|
|
|
|
|
姓名:{{ |
|
|
|
|
|
baseInfo.graduateName || $route.query.userInfo.graduateName |
|
|
|
|
|
}} |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="2"> |
|
|
性别:{{ |
|
|
性别:{{ |
|
|
baseInfo.gender === 1 |
|
|
baseInfo.gender === 1 || $route.query.userInfo.gender == 1 |
|
|
? "男" |
|
|
? "男" |
|
|
: baseInfo.gender === 2 |
|
|
: baseInfo.gender === 2 |
|
|
? "女" |
|
|
? "女" |
|
|
: "" |
|
|
: "" |
|
|
}} |
|
|
}} |
|
|
</el-col> |
|
|
</el-col> |
|
|
<el-col :span="6"> 手机号:{{ baseInfo.telephone }}</el-col> |
|
|
<el-col :span="6"> |
|
|
|
|
|
手机号:{{ |
|
|
|
|
|
baseInfo.telephone || $route.query.userInfo.telephone |
|
|
|
|
|
}}</el-col |
|
|
|
|
|
> |
|
|
|
|
|
<el-col :span="6" |
|
|
|
|
|
>身份证号:{{ |
|
|
|
|
|
baseInfo.idCard || $route.query.userInfo.idCard |
|
|
|
|
|
}}</el-col |
|
|
|
|
|
> |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</div> |
|
|
</div> |
|
@ -247,6 +273,9 @@ |
|
|
:before-remove="beforeRemove" |
|
|
:before-remove="beforeRemove" |
|
|
> |
|
|
> |
|
|
<i slot="default" class="el-icon-plus"></i> |
|
|
<i slot="default" class="el-icon-plus"></i> |
|
|
|
|
|
<div slot="tip" class="el-upload__tip"> |
|
|
|
|
|
最多上传10个附件,支持上传图片和视频。 |
|
|
|
|
|
</div> |
|
|
<div slot="file" slot-scope="{ file }"> |
|
|
<div slot="file" slot-scope="{ file }"> |
|
|
<img |
|
|
<img |
|
|
class="el-upload-list__item-thumbnail" |
|
|
class="el-upload-list__item-thumbnail" |
|
@ -337,104 +366,11 @@ |
|
|
></video> |
|
|
></video> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<!-- 上传附件 --> |
|
|
<el-form-item prop="agree"> |
|
|
<!-- <el-form-item label="上传附件"> |
|
|
<el-checkbox v-model="form.agree" |
|
|
<el-upload |
|
|
>确认以上信息无误,生成“房屋交割单”,由毕业生在微信小程序端签字确认。</el-checkbox |
|
|
:file-list="state.photoList" |
|
|
|
|
|
:action="state.uploadUrl" |
|
|
|
|
|
accept=".jpg,.png,.jpeg,.mp4,.mov,.avi" |
|
|
|
|
|
list-type="picture-card" |
|
|
|
|
|
:limit="10" |
|
|
|
|
|
:on-success="handleUpload" |
|
|
|
|
|
:class="state.photoList.length === 10 ? 'hideUpload' : ''" |
|
|
|
|
|
> |
|
|
> |
|
|
<i slot="default" class="el-icon-plus"></i> |
|
|
</el-form-item> |
|
|
<!~~ <template #file="{ file }"> ~~> |
|
|
|
|
|
<div slot="file" slot-scope="{file}"> |
|
|
|
|
|
<img |
|
|
|
|
|
v-if=" |
|
|
|
|
|
file && |
|
|
|
|
|
file.name && |
|
|
|
|
|
typeof file.name === 'string' && |
|
|
|
|
|
(file.name.indexOf('.jpg') > -1 || |
|
|
|
|
|
file.name.indexOf('.png') > -1 || |
|
|
|
|
|
file.name.indexOf('.jpeg') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
:src="file.url" |
|
|
|
|
|
alt="" |
|
|
|
|
|
class="el-upload-list__item-thumbnail" |
|
|
|
|
|
/> |
|
|
|
|
|
<video |
|
|
|
|
|
v-else-if=" |
|
|
|
|
|
file && |
|
|
|
|
|
file.name && |
|
|
|
|
|
typeof file.name === 'string' && |
|
|
|
|
|
(file.name.indexOf('.mp4') > -1 || |
|
|
|
|
|
file.name.indexOf('.mov') > -1 || |
|
|
|
|
|
file.name.indexOf('.avi') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
class="el-upload-list__item-thumbnail" |
|
|
|
|
|
style="width: 100%; height: 100%" |
|
|
|
|
|
autoplay |
|
|
|
|
|
:src="file.url" |
|
|
|
|
|
> |
|
|
|
|
|
<source :src="file.url" type="video/mp4" /> |
|
|
|
|
|
<source :src="file.url" type="video/mov" /> |
|
|
|
|
|
<source :src="file.url" type="video/avi" /> |
|
|
|
|
|
</video> |
|
|
|
|
|
<span class="el-upload-list__item-actions"> |
|
|
|
|
|
<span |
|
|
|
|
|
class="el-upload-list__item-preview" |
|
|
|
|
|
@click="handlePreview(file)" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-zoom-in"></i> |
|
|
|
|
|
</span> |
|
|
|
|
|
<span |
|
|
|
|
|
v-if="!state.disabledBtn" |
|
|
|
|
|
class="el-upload-list__item-delete" |
|
|
|
|
|
@click="handleRemove(file)" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-delete"></i> |
|
|
|
|
|
</span> |
|
|
|
|
|
</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<!~~ </template> ~~> |
|
|
|
|
|
</el-upload> |
|
|
|
|
|
<el-dialog v-model="state.dialogVisible"> |
|
|
|
|
|
<img |
|
|
|
|
|
w-full |
|
|
|
|
|
:src="state.dialogImageFile.url" |
|
|
|
|
|
alt="" |
|
|
|
|
|
v-if=" |
|
|
|
|
|
state.dialogImageFile && |
|
|
|
|
|
state.dialogImageFile.name && |
|
|
|
|
|
typeof state.dialogImageFile.name === 'string' && |
|
|
|
|
|
(state.dialogImageFile.name.indexOf('.jpg') > -1 || |
|
|
|
|
|
state.dialogImageFile.name.indexOf('.png') > -1 || |
|
|
|
|
|
state.dialogImageFile.name.indexOf('.jpeg') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
/> |
|
|
|
|
|
<video |
|
|
|
|
|
v-else-if=" |
|
|
|
|
|
state.dialogImageFile && |
|
|
|
|
|
state.dialogImageFile.name && |
|
|
|
|
|
typeof state.dialogImageFile.name === 'string' && |
|
|
|
|
|
(state.dialogImageFile.name.indexOf('.mp4') > -1 || |
|
|
|
|
|
state.dialogImageFile.name.indexOf('.mov') > -1 || |
|
|
|
|
|
state.dialogImageFile.name.indexOf('.avi') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
w-full |
|
|
|
|
|
style="width: 100%; height: 100%" |
|
|
|
|
|
controls |
|
|
|
|
|
autoplay |
|
|
|
|
|
:src="state.dialogImageFile.url" |
|
|
|
|
|
> |
|
|
|
|
|
<source :src="state.dialogImageFile.url" type="video/mp4" /> |
|
|
|
|
|
<source :src="state.dialogImageFile.url" type="video/mov" /> |
|
|
|
|
|
<source :src="state.dialogImageFile.url" type="video/avi" /> |
|
|
|
|
|
</video> |
|
|
|
|
|
</el-dialog> |
|
|
|
|
|
</el-form-item>--> |
|
|
|
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
</div> |
|
|
</div> |
|
@ -533,7 +469,12 @@ |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<!-- 释放房源 --> |
|
|
<!-- 释放房源 --> |
|
|
<!-- <el-form size="small" label-width="120px" v-if="currentStep === 4"> |
|
|
<el-form |
|
|
|
|
|
size="small" |
|
|
|
|
|
label-width="120px" |
|
|
|
|
|
ref="relaseForm" |
|
|
|
|
|
v-if="currentStep === 5" |
|
|
|
|
|
> |
|
|
<div class="el-my-3 el-flex"> |
|
|
<div class="el-my-3 el-flex"> |
|
|
<CommonTitle>释放房源</CommonTitle> |
|
|
<CommonTitle>释放房源</CommonTitle> |
|
|
<span style="color: red; font-size: 14px" |
|
|
<span style="color: red; font-size: 14px" |
|
@ -541,48 +482,85 @@ |
|
|
> |
|
|
> |
|
|
</div> |
|
|
</div> |
|
|
<el-row> |
|
|
<el-row> |
|
|
<el-col v-for="(item, index) in checkItems" :key="index" :span="6"> |
|
|
<el-col |
|
|
<el-form-item :label="item"> |
|
|
v-for="(item, index) in relaseForm.facilitiesCheckResults" |
|
|
|
|
|
:key="index" |
|
|
|
|
|
:span="6" |
|
|
|
|
|
> |
|
|
|
|
|
<el-form-item :label="item.facilityId"> |
|
|
<el-select |
|
|
<el-select |
|
|
v-model="checkStatus[`${item}Status`]" |
|
|
v-model="releaseCheckStatus[index]" |
|
|
placeholder="请选择" |
|
|
placeholder="请选择" |
|
|
> |
|
|
> |
|
|
<el-option label="完好" value="intact"></el-option> |
|
|
<el-option label="完好" value="1"></el-option> |
|
|
<el-option label="破损" value="damaged"></el-option> |
|
|
<el-option label="破损" value="2"></el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<!~~ 其他说明 ~~> |
|
|
<!-- 其他说明 --> |
|
|
<el-col :span="16"> |
|
|
<el-col :span="16"> |
|
|
<el-form-item label="其他说明"> |
|
|
<el-form-item label="其他说明"> |
|
|
<el-input |
|
|
<el-input |
|
|
type="textarea" |
|
|
type="textarea" |
|
|
v-model="form.remark" |
|
|
v-model="relaseForm.facilitiesCheckDesc" |
|
|
placeholder="其他详细说明(不超过500字)" |
|
|
placeholder="其他详细说明(不超过500字)" |
|
|
clearable |
|
|
clearable |
|
|
|
|
|
disabled |
|
|
style="width: 240px" |
|
|
style="width: 240px" |
|
|
/> |
|
|
/> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<!~~ 查看附件 ~~> |
|
|
<!-- 查看附件 --> |
|
|
<el-col :span="24"> |
|
|
<el-col :span="24"> |
|
|
<el-form-item label="查看附件"> |
|
|
<el-form-item label="查看附件"> |
|
|
<el-upload |
|
|
<el-upload |
|
|
action="#" |
|
|
class="disable" |
|
|
|
|
|
action="uploadUlr" |
|
|
list-type="picture-card" |
|
|
list-type="picture-card" |
|
|
:auto-upload="false" |
|
|
:auto-upload="false" |
|
|
|
|
|
:disabled="true" |
|
|
|
|
|
:headers="$getElUploadHeaders()" |
|
|
:on-exceed="handleExceed" |
|
|
:on-exceed="handleExceed" |
|
|
:limit="10" |
|
|
:limit="10" |
|
|
:file-list="fileList" |
|
|
:file-list="relaseForm.facilitiesCheckImages" |
|
|
accept="image/*,video/*" |
|
|
accept="image/*,video/*" |
|
|
> |
|
|
> |
|
|
<i slot="default" class="el-icon-plus"></i> |
|
|
<!-- <i slot="default" class="el-icon-plus"></i> --> |
|
|
|
|
|
<template #default></template> |
|
|
<div slot="file" slot-scope="{ file }"> |
|
|
<div slot="file" slot-scope="{ file }"> |
|
|
<img |
|
|
<img |
|
|
class="el-upload-list__item-thumbnail" |
|
|
class="el-upload-list__item-thumbnail" |
|
|
|
|
|
v-if=" |
|
|
|
|
|
file && |
|
|
|
|
|
file.name && |
|
|
|
|
|
typeof file.name === 'string' && |
|
|
|
|
|
(file.name.indexOf('.jpg') > -1 || |
|
|
|
|
|
file.name.indexOf('.png') > -1 || |
|
|
|
|
|
file.name.indexOf('.jpeg') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
style="width: 100%; height: 100%" |
|
|
:src="file.url" |
|
|
:src="file.url" |
|
|
alt="" |
|
|
alt="" |
|
|
/> |
|
|
/> |
|
|
|
|
|
<video |
|
|
|
|
|
v-else-if=" |
|
|
|
|
|
file && |
|
|
|
|
|
file.name && |
|
|
|
|
|
typeof file.name === 'string' && |
|
|
|
|
|
(file.name.indexOf('.mp4') > -1 || |
|
|
|
|
|
file.name.indexOf('.mov') > -1 || |
|
|
|
|
|
file.name.indexOf('.avi') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
class="el-upload-list__item-thumbnail" |
|
|
|
|
|
style="width: 100%; height: 100%" |
|
|
|
|
|
:autoplay="false" |
|
|
|
|
|
:src="file.url" |
|
|
|
|
|
controls="controls" |
|
|
|
|
|
> |
|
|
|
|
|
<source :src="file.url" type="video/mp4" /> |
|
|
|
|
|
<source :src="file.url" type="video/mov" /> |
|
|
|
|
|
<source :src="file.url" type="video/avi" /> |
|
|
|
|
|
</video> |
|
|
<span class="el-upload-list__item-actions"> |
|
|
<span class="el-upload-list__item-actions"> |
|
|
<span |
|
|
<span |
|
|
class="el-upload-list__item-preview" |
|
|
class="el-upload-list__item-preview" |
|
@ -590,52 +568,81 @@ |
|
|
> |
|
|
> |
|
|
<i class="el-icon-zoom-in"></i> |
|
|
<i class="el-icon-zoom-in"></i> |
|
|
</span> |
|
|
</span> |
|
|
<!~~ <span |
|
|
<!-- <span |
|
|
v-if="!disabled" |
|
|
v-if="!disabled" |
|
|
class="el-upload-list__item-delete" |
|
|
class="el-upload-list__item-delete" |
|
|
@click="handleDownload(file)" |
|
|
@click="handleDownload(file)" |
|
|
> |
|
|
> |
|
|
<i class="el-icon-download"></i> |
|
|
<i class="el-icon-download"></i> |
|
|
</span> ~~> |
|
|
</span> --> |
|
|
<span |
|
|
<!-- <span |
|
|
v-if="!disabled" |
|
|
v-if="!disabled" |
|
|
class="el-upload-list__item-delete" |
|
|
class="el-upload-list__item-delete" |
|
|
@click="handleRemove(file)" |
|
|
@click="handleRemoveA(file)" |
|
|
> |
|
|
> |
|
|
<i class="el-icon-delete"></i> |
|
|
<i class="el-icon-delete"></i> |
|
|
</span> |
|
|
</span> --> |
|
|
</span> |
|
|
</span> |
|
|
</div> |
|
|
</div> |
|
|
</el-upload> |
|
|
</el-upload> |
|
|
|
|
|
<el-dialog :visible.sync="dialogVisible"> |
|
|
|
|
|
<img |
|
|
|
|
|
v-if=" |
|
|
|
|
|
dialogImageUrl && |
|
|
|
|
|
dialogImageUrl.name && |
|
|
|
|
|
typeof dialogImageUrl.name === 'string' && |
|
|
|
|
|
(dialogImageUrl.name.indexOf('.jpg') > -1 || |
|
|
|
|
|
dialogImageUrl.name.indexOf('.png') > -1 || |
|
|
|
|
|
dialogImageUrl.name.indexOf('.jpeg') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
width="50%" |
|
|
|
|
|
height="50%" |
|
|
|
|
|
:src="dialogImageUrl.url" |
|
|
|
|
|
alt="" |
|
|
|
|
|
/> |
|
|
|
|
|
<video |
|
|
|
|
|
v-if=" |
|
|
|
|
|
dialogImageUrl && |
|
|
|
|
|
dialogImageUrl.name && |
|
|
|
|
|
typeof dialogImageUrl.name === 'string' && |
|
|
|
|
|
(dialogImageUrl.name.indexOf('.mp4') > -1 || |
|
|
|
|
|
dialogImageUrl.name.indexOf('.mov') > -1 || |
|
|
|
|
|
dialogImageUrl.name.indexOf('.avi') > -1) |
|
|
|
|
|
" |
|
|
|
|
|
class="el-upload-list__item-thumbnail" |
|
|
|
|
|
style="width: 50%; height: 50%" |
|
|
|
|
|
autoplay |
|
|
|
|
|
:src="dialogImageUrl.url" |
|
|
|
|
|
controls="controls" |
|
|
|
|
|
></video> |
|
|
|
|
|
</el-dialog> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<!~~ 房间卫生 选择器~~> |
|
|
<!-- 房间卫生 选择器--> |
|
|
<el-col :span="24"> |
|
|
<el-col :span="24"> |
|
|
<el-form-item label="房间卫生"> |
|
|
<el-form-item label="房间卫生"> |
|
|
<el-select v-model="form.forceClearReason" placeholder="请选择"> |
|
|
<el-select v-model="relaseForm.cleaned" placeholder="请选择"> |
|
|
<el-option label="已打扫" value="1"></el-option> |
|
|
<el-option label="已打扫" value="1"></el-option> |
|
|
<el-option label="未打扫" value="2"></el-option> |
|
|
<el-option label="未打扫" value="2"></el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
</el-form>--> |
|
|
</el-form> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 添加按钮 --> |
|
|
<!-- 添加按钮 --> |
|
|
<div class="button-group el-flex el-flex-end"> |
|
|
<div class="button-group el-flex el-flex-end"> |
|
|
<el-button @click="currentStep === 1 ? handleCancel() : handlePrevStep()"> |
|
|
<el-button @click="currentStep === 1 ? handleCancel() : handlePrevStep()"> |
|
|
{{ currentStep === 1 ? "取消" : "上一步" }} |
|
|
{{ currentStep === 1 ? "取消" : "上一步" }} |
|
|
</el-button> |
|
|
</el-button> |
|
|
{{ currentStep }}--{{ dataList.length }} |
|
|
{{ currentStep }}-{{ dataList.length }} |
|
|
<el-button |
|
|
<el-button |
|
|
type="primary" |
|
|
type="primary" |
|
|
@click=" |
|
|
@click=" |
|
|
currentStep === dataList.length - 1 |
|
|
currentStep === dataList.length - 2 ? handleSuc() : handleNextStep() |
|
|
? handleReleaseHouse() |
|
|
|
|
|
: handleNextStep() |
|
|
|
|
|
" |
|
|
" |
|
|
> |
|
|
> |
|
|
{{ currentStep === dataList.length - 1 ? "办理完成" : "下一步" }} |
|
|
{{ currentStep === dataList.length - 2 ? "办理完成" : "下一步" }} |
|
|
</el-button> |
|
|
</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
@ -647,6 +654,8 @@ import { |
|
|
getResidentInfo, |
|
|
getResidentInfo, |
|
|
submitCheckout, |
|
|
submitCheckout, |
|
|
getRoomFacilities, |
|
|
getRoomFacilities, |
|
|
|
|
|
getRoomCheckRecDetail, |
|
|
|
|
|
releaseRoom, |
|
|
} from "@/api/residence/checkout"; |
|
|
} from "@/api/residence/checkout"; |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
@ -663,38 +672,47 @@ export default { |
|
|
title: "信息确认", |
|
|
title: "信息确认", |
|
|
imageSrc: require("@/assets/images/address-card.png"), |
|
|
imageSrc: require("@/assets/images/address-card.png"), |
|
|
bgColor: "#FBEDC8", |
|
|
bgColor: "#FBEDC8", |
|
|
|
|
|
isShow: true, |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: "房间检查", |
|
|
title: "房间检查", |
|
|
imageSrc: require("@/assets/images/home-smile.png"), |
|
|
imageSrc: require("@/assets/images/home-smile.png"), |
|
|
bgColor: "#FBD5D5", |
|
|
bgColor: "#FBD5D5", |
|
|
|
|
|
isShow: true, |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: "房屋交割单", |
|
|
title: "房屋交割单", |
|
|
imageSrc: require("@/assets/images/md-beenhere.png"), |
|
|
imageSrc: require("@/assets/images/md-beenhere.png"), |
|
|
bgColor: "#C4DEFB ", |
|
|
bgColor: "#C4DEFB ", |
|
|
|
|
|
isShow: true, |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: "退还保证金", |
|
|
title: "退还保证金", |
|
|
imageSrc: require("@/assets/images/pay-circle.png"), |
|
|
imageSrc: require("@/assets/images/pay-circle.png"), |
|
|
bgColor: "#8BFDD3 ", |
|
|
bgColor: "#8BFDD3 ", |
|
|
|
|
|
isShow: true, |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: "办理完成", |
|
|
title: "办理完成", |
|
|
imageSrc: require("@/assets/images/check_circle.png"), |
|
|
imageSrc: require("@/assets/images/check_circle.png"), |
|
|
bgColor: "#CFCDFB ", |
|
|
bgColor: "#CFCDFB ", |
|
|
|
|
|
isShow: true, |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
title: "释放房源", |
|
|
|
|
|
imageSrc: require("@/assets/images/md-beenhere.png"), |
|
|
|
|
|
bgColor: "#C4DEFB ", |
|
|
|
|
|
isShow: false, |
|
|
}, |
|
|
}, |
|
|
], |
|
|
], |
|
|
susIcon: require("@/assets/images/check-circle-fas.png"), |
|
|
susIcon: require("@/assets/images/check-circle-fas.png"), |
|
|
arrow: require("@/assets/images/arrow_forward.png"), |
|
|
arrow: require("@/assets/images/arrow_forward.png"), |
|
|
arrowActive: require("@/assets/images/arrow_forward_a.png"), |
|
|
arrowActive: require("@/assets/images/arrow_forward_a.png"), |
|
|
// 基本信息 |
|
|
// 基本信息 |
|
|
baseInfo: { |
|
|
baseInfo: {}, |
|
|
houseId: "", // 房屋ID |
|
|
|
|
|
}, |
|
|
|
|
|
//查询参数 |
|
|
//查询参数 |
|
|
queryParams: { |
|
|
queryParams: { |
|
|
idCard: "370222199101070707", |
|
|
idCard: "", |
|
|
telphone: "", |
|
|
telphone: "", |
|
|
checkOutType: 0, // 默认选中正常退房 |
|
|
checkOutType: 0, // 默认选中正常退房 |
|
|
}, |
|
|
}, |
|
@ -706,21 +724,22 @@ export default { |
|
|
}, //表单参数 |
|
|
}, //表单参数 |
|
|
// 表单验证规则 |
|
|
// 表单验证规则 |
|
|
rules: { |
|
|
rules: { |
|
|
forceClearReason: [ |
|
|
forceCheckoutReason: [ |
|
|
{ required: true, message: "请选择强制清退原因", trigger: "change" }, |
|
|
{ required: true, message: "请选择强制清退原因", trigger: "change" }, |
|
|
], |
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
checkrules: { |
|
|
|
|
|
agree: [{ required: true, message: "请确认勾选", trigger: "change" }], |
|
|
|
|
|
}, |
|
|
// 显示搜索条件 |
|
|
// 显示搜索条件 |
|
|
showSearch: true, |
|
|
showSearch: true, |
|
|
// 退房类型: 1-正常退房 2-强制退房 |
|
|
// 退房类型: 1-正常退房 2-强制退房 |
|
|
checkOutType: [ |
|
|
checkOutType: [ |
|
|
{ label: "正常退房", value:0 }, |
|
|
{ label: "正常退房", value: 0 }, |
|
|
{ label: "强制退房", value: 1 }, |
|
|
{ label: "强制退房", value: 1 }, |
|
|
], |
|
|
], |
|
|
// 强制清退原因 |
|
|
// 强制清退原因 |
|
|
forceClearReason: [ |
|
|
forceClearReason: [{ label: "违法居住条款,故意破坏房间设施", value: 1 }], |
|
|
{ label: "违法居住条款,故意破坏房间设施", value: 1 }, |
|
|
|
|
|
], |
|
|
|
|
|
currentStep: 1, // 当前步骤 |
|
|
currentStep: 1, // 当前步骤 |
|
|
checkItems: [], |
|
|
checkItems: [], |
|
|
checkStatus: [ |
|
|
checkStatus: [ |
|
@ -747,8 +766,27 @@ export default { |
|
|
dialogImageUrl: "", // 图片预览对话框的图片 URL |
|
|
dialogImageUrl: "", // 图片预览对话框的图片 URL |
|
|
disabled: false, // 是否禁用上传附件 |
|
|
disabled: false, // 是否禁用上传附件 |
|
|
formDataList: [], // 新增:用于存储每一步的表单数据 |
|
|
formDataList: [], // 新增:用于存储每一步的表单数据 |
|
|
|
|
|
relaseForm: [], //释放房源表单 |
|
|
|
|
|
releaseCheckStatus: [], |
|
|
}; |
|
|
}; |
|
|
}, |
|
|
}, |
|
|
|
|
|
created() { |
|
|
|
|
|
const { showReleaseStep, roomId, userInfo } = this.$route.query; |
|
|
|
|
|
if (showReleaseStep) { |
|
|
|
|
|
this.currentStep = this.dataList.length - 1; |
|
|
|
|
|
this.dataList[this.dataList.length - 1].isShow = true; |
|
|
|
|
|
this.stepCompleted = this.dataList.map( |
|
|
|
|
|
(_, index) => index < this.currentStep - 1 |
|
|
|
|
|
); |
|
|
|
|
|
this.getRoomCheckoutDetail(roomId); |
|
|
|
|
|
} |
|
|
|
|
|
console.log("userInfo::", userInfo); |
|
|
|
|
|
|
|
|
|
|
|
if (userInfo) { |
|
|
|
|
|
this.queryParams.idCard = userInfo.idCard; |
|
|
|
|
|
this.handleQuery(); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
goBack() { |
|
|
goBack() { |
|
|
this.$router.push({ path: "/" }); |
|
|
this.$router.push({ path: "/" }); |
|
@ -760,7 +798,7 @@ export default { |
|
|
getResidentInfo({ idCard, telphone }).then((res) => { |
|
|
getResidentInfo({ idCard, telphone }).then((res) => { |
|
|
if (res.code === 200) { |
|
|
if (res.code === 200) { |
|
|
this.baseInfo = res.data; |
|
|
this.baseInfo = res.data; |
|
|
// this.baseInfo.houseId = res.data.houseId |
|
|
this.baseInfo.roomId = res.data.roomId; |
|
|
this.ongetRoomFacilities(res.data.houseId); |
|
|
this.ongetRoomFacilities(res.data.houseId); |
|
|
} |
|
|
} |
|
|
console.log("查询结果:", res); |
|
|
console.log("查询结果:", res); |
|
@ -790,49 +828,68 @@ export default { |
|
|
// 下一步操作 |
|
|
// 下一步操作 |
|
|
handleNextStep() { |
|
|
handleNextStep() { |
|
|
if (this.currentStep < this.dataList.length) { |
|
|
if (this.currentStep < this.dataList.length) { |
|
|
this.currentStep++; |
|
|
|
|
|
|
|
|
|
|
|
let currentFormData = {}; |
|
|
let currentFormData = {}; |
|
|
console.log("当前步骤:", this.currentStep); |
|
|
console.log("当前步骤:", this.currentStep); |
|
|
switch (this.currentStep) { |
|
|
if (this.currentStep === 1) { |
|
|
case 1: |
|
|
if (Object.keys(this.baseInfo).length === 0) { |
|
|
currentFormData = { ...this.queryParams }; |
|
|
this.$message.error("请输入身份证或手机号查询信息"); |
|
|
break; |
|
|
return; |
|
|
|
|
|
} |
|
|
case 2: |
|
|
if (this.queryParams.checkOutType === 1) { |
|
|
const facilitiesCheckResults = this.checkItems.map( |
|
|
this.$refs["queryForm"].validate(async (valid) => { |
|
|
(item, index) => ({ |
|
|
if (!valid) { |
|
|
facilityId: item.id, |
|
|
this.$message.error("请选择强制清退原因"); |
|
|
checkResult: this.checkStatus[index], |
|
|
return; |
|
|
}) |
|
|
} else { |
|
|
); |
|
|
this.currentStep++; |
|
|
currentFormData = { |
|
|
} |
|
|
...this.form, |
|
|
}); |
|
|
facilitiesCheckResults, |
|
|
} else { |
|
|
}; |
|
|
this.currentStep++; |
|
|
|
|
|
} |
|
|
break; |
|
|
currentFormData = { ...this.queryParams }; |
|
|
case 3: |
|
|
} else if (this.currentStep === 2) { |
|
|
currentFormData = { ...this.form }; |
|
|
this.$refs["checkForm"].validate(async (valid) => { |
|
|
break; |
|
|
console.log("valid::", valid); |
|
|
case 4: |
|
|
if (!valid) { |
|
|
currentFormData = { |
|
|
this.$message.error("请勾选同意"); |
|
|
...this.queryParams, |
|
|
return; |
|
|
...this.form, |
|
|
} else { |
|
|
}; |
|
|
const facilitiesCheckResults = this.checkItems.map( |
|
|
break; |
|
|
(item, index) => ({ |
|
|
|
|
|
facilityId: item.id, |
|
|
|
|
|
checkResult: this.checkStatus[index], |
|
|
|
|
|
}) |
|
|
|
|
|
); |
|
|
|
|
|
currentFormData = { |
|
|
|
|
|
...this.queryParams, |
|
|
|
|
|
...this.form, |
|
|
|
|
|
facilitiesCheckResults, |
|
|
|
|
|
}; |
|
|
|
|
|
console.log("currentFormData::", currentFormData); |
|
|
|
|
|
this.submitCheckoutForm(currentFormData); |
|
|
|
|
|
this.currentStep++; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} else if (this.currentStep === 3) { |
|
|
|
|
|
this.currentStep++; |
|
|
|
|
|
} else if (this.currentStep === 4) { |
|
|
|
|
|
// this.currentStep++; |
|
|
|
|
|
// currentFormData = { |
|
|
|
|
|
// ...this.queryParams, |
|
|
|
|
|
// ...this.form, |
|
|
|
|
|
// }; |
|
|
} |
|
|
} |
|
|
|
|
|
// console.log("currentFormData::", currentFormData); |
|
|
|
|
|
|
|
|
console.log("currentFormData::", currentFormData); |
|
|
// this.formDataList[this.currentStep] = currentFormData; |
|
|
|
|
|
|
|
|
this.formDataList[this.currentStep] = currentFormData; |
|
|
|
|
|
|
|
|
|
|
|
console.log("formDataList::", this.formDataList); |
|
|
// console.log("formDataList::", this.formDataList); |
|
|
const finalData = Object.assign({}, ...this.formDataList); |
|
|
// const finalData = Object.assign({}, ...this.formDataList); |
|
|
console.log("finalData", finalData); |
|
|
// console.log("finalData", finalData); |
|
|
if (this.currentStep > 1) { |
|
|
if (this.currentStep > 1) { |
|
|
this.stepCompleted[this.currentStep - 2] = true; |
|
|
this.stepCompleted[this.currentStep - 2] = true; |
|
|
// if (this.currentStep === 4) { |
|
|
// if (this.currentStep === 5) { |
|
|
// this.stepCompleted[this.currentStep - 1] = true; |
|
|
// this.stepCompleted[this.currentStep - 1] = true; |
|
|
// } |
|
|
// } |
|
|
console.log("stepCompleted下::", this.stepCompleted); |
|
|
console.log("stepCompleted下::", this.stepCompleted); |
|
@ -849,32 +906,46 @@ export default { |
|
|
console.log("获取房间设施"); |
|
|
console.log("获取房间设施"); |
|
|
}, |
|
|
}, |
|
|
// 提交表单 |
|
|
// 提交表单 |
|
|
submitCheckoutForm() { |
|
|
submitCheckoutForm(formData) { |
|
|
console.log("this.formDataList", this.formDataList); |
|
|
console.log("formParams", formData); |
|
|
const facilitiesCheckResults = this.checkItems.map((item, index) => ({ |
|
|
let formParams = {}; |
|
|
facilityId: item.id, |
|
|
if (!formData) { |
|
|
checkResult: this.checkStatus[index], |
|
|
const facilitiesCheckResults = this.checkItems.map((item, index) => ({ |
|
|
})); |
|
|
facilityId: item.id, |
|
|
const formData = { |
|
|
checkResult: this.checkStatus[index], |
|
|
...this.queryParams, |
|
|
})); |
|
|
facilitiesCheckResults, |
|
|
formParams = { |
|
|
...this.form, |
|
|
...this.queryParams, |
|
|
}; |
|
|
facilitiesCheckResults, |
|
|
console.log("formData", formData); |
|
|
...this.form, |
|
|
|
|
|
}; |
|
|
|
|
|
} else { |
|
|
|
|
|
formParams = formData; |
|
|
|
|
|
} |
|
|
|
|
|
console.log("formParams::", formParams); |
|
|
// const finalData = Object.assign({}, ...this.formDataList); |
|
|
// const finalData = Object.assign({}, ...this.formDataList); |
|
|
// console.log("finalData", finalData); |
|
|
// console.log("finalData", finalData); |
|
|
submitCheckout(formData).then((response) => { |
|
|
submitCheckout(formParams).then((response) => { |
|
|
console.log("提交结果:", response); |
|
|
console.log("提交结果:", response); |
|
|
if (response.code === 200) { |
|
|
if (response.code === 200) { |
|
|
this.$message.success("提交成功"); |
|
|
this.$message.success("提交成功"); |
|
|
this.$router.push({ path: "/" }); |
|
|
// 设置办理完成步骤对应的 stepCompleted 为 true |
|
|
} |
|
|
const lastIndex = this.dataList.length - 1; |
|
|
|
|
|
this.stepCompleted[lastIndex] = true; |
|
|
|
|
|
this.$router.push({ path: "/" }); |
|
|
|
|
|
} |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
// 办理完成 |
|
|
|
|
|
handleSuc() { |
|
|
|
|
|
this.submitCheckoutForm(); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// 释放房源操作 |
|
|
// 释放房源操作 |
|
|
handleReleaseHouse() { |
|
|
handleReleaseHouse() { |
|
|
this.submitCheckoutForm(); |
|
|
console.log(this.relaseForm); |
|
|
|
|
|
|
|
|
|
|
|
releaseRoom(this.relaseForm).then((res) => {}); |
|
|
console.log("释放房源操作"); |
|
|
console.log("释放房源操作"); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
@ -952,6 +1023,24 @@ export default { |
|
|
console.log("实际赔付金额变为:", value); |
|
|
console.log("实际赔付金额变为:", value); |
|
|
this.form.marginActualCompensation = value; |
|
|
this.form.marginActualCompensation = value; |
|
|
}, |
|
|
}, |
|
|
|
|
|
// 房间检查结果 |
|
|
|
|
|
async getRoomCheckoutDetail(roomId) { |
|
|
|
|
|
try { |
|
|
|
|
|
const res = await getRoomCheckRecDetail({ |
|
|
|
|
|
roomId: roomId, |
|
|
|
|
|
}); |
|
|
|
|
|
if (res.code === 200) { |
|
|
|
|
|
this.relaseForm = res.data; |
|
|
|
|
|
this.releaseCheckStatus = this.relaseForm.facilitiesCheckResults.map( |
|
|
|
|
|
(item) => item.checkResult.toString() |
|
|
|
|
|
); |
|
|
|
|
|
console.log("房间检查结果:", res); |
|
|
|
|
|
console.log("房间检查结果:", res); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.log(error); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
}, |
|
|
}, |
|
|
computed: { |
|
|
computed: { |
|
|
// 这里可以定义计算属性 |
|
|
// 这里可以定义计算属性 |
|
@ -984,7 +1073,7 @@ export default { |
|
|
margin-top: 20px; |
|
|
margin-top: 20px; |
|
|
|
|
|
|
|
|
.tit { |
|
|
.tit { |
|
|
padding: 15px 24px; |
|
|
padding: 15px 22px; |
|
|
border-radius: 4px; |
|
|
border-radius: 4px; |
|
|
} |
|
|
} |
|
|
.model { |
|
|
.model { |
|
@ -1006,7 +1095,7 @@ export default { |
|
|
.arrow-container { |
|
|
.arrow-container { |
|
|
width: 42px; |
|
|
width: 42px; |
|
|
height: 28px; |
|
|
height: 28px; |
|
|
margin-left: 13px; |
|
|
//margin-left: 13px; |
|
|
display: inline-flex; |
|
|
display: inline-flex; |
|
|
justify-content: center; |
|
|
justify-content: center; |
|
|
align-items: center; |
|
|
align-items: center; |
|
@ -1038,7 +1127,10 @@ export default { |
|
|
justify-content: center; |
|
|
justify-content: center; |
|
|
align-content: center; |
|
|
align-content: center; |
|
|
} |
|
|
} |
|
|
:v-deep el-textarea__inner { |
|
|
::v-deep el-textarea__inner { |
|
|
min-height: 200px !important; |
|
|
min-height: 200px !important; |
|
|
} |
|
|
} |
|
|
|
|
|
::v-deep .disable .el-upload--picture-card { |
|
|
|
|
|
display: none; |
|
|
|
|
|
} |
|
|
</style> |
|
|
</style> |
|
|