Files
pgserver3.0/pgapp/pages/inquiry/surveyApply.vue
annnj-company 130c1026c4 first commit
2026-04-17 18:29:53 +08:00

275 lines
7.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view>
<view class="uni-list" v-for="(item, findex) in surveyModalForm.details" :key="findex">
<view class="uni-list-cell">
<view class="uni-list-cell-left">
物业<text class="require">*</text>
</view>
<view class="uni-list-cell-db">
<text class="cu-tag">{{estateNameList[findex]}}</text>
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
联系人<text class="require">*</text>
</view>
<view class="uni-list-cell-db">
<input v-model="surveyModalForm.details[findex].contact_name" maxlength="20" placeholder="请输入最多50字" />
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
联系人电话<text class="require">*</text>
</view>
<view class="uni-list-cell-db">
<input v-model="surveyModalForm.details[findex].contact_phone" />
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
小片区<text class="require">*</text>
</view>
<view class="uni-list-cell-db" v-if="smallAreaList.length > 0">
<picker @change="onChangeSelect($event, 'small_area',findex)" :value="selectSmallAreaIndex[findex].index" range-key="name"
:range="smallAreaList">
<view>
{{smallAreaList[selectSmallAreaIndex[findex].index]?smallAreaList[selectSmallAreaIndex[findex].index].name:''}}
</view>
</picker>
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
查勘员<text class="require">*</text>
</view>
<view class="uni-list-cell-db">
<picker @change="onChangeSelect($event, 'surveyor',findex)" :value="selectSurveyorIndex[findex].index" range-key="userNickName"
:range="surveyorList">
<view>{{surveyorList[selectSurveyorIndex[findex].index]?surveyorList[selectSurveyorIndex[findex].index].userNickName:''}}
</view>
</picker>
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
查勘备注
</view>
<view class="uni-list-cell-db">
<view class="uni-list-cell-db">
<textarea class="uni-input" v-model="surveyModalForm.details[findex].remark" auto-height=true maxlength="150"
placeholder="请输入" />
</view>
</view>
</view>
<view class='line'></view>
</view>
<view class="button-sp-area">
<button class='mini-btn' @click='cancel()' type="primary" size='mini'>取消</button>
<button class='mini-btn' @click='suveryApply()' type="primary" size='mini'>提交</button>
</view>
</view>
</template>
<script>
import {
reqPropertyInfo,
getSmallArea,
getRole,
askSurvey
} from '@/api/inquiry/inquiry'
import { toast } from '@/utils/common'
export default {
data() {
return {
estateNameList:[],
surveyModalForm: {
//order_no: this.$route.query.order_no,
order_no: this.$route.query.order_no,
details: [
{
property_cert_info_id: '',
contact_name: '',
contact_phone: '',
area: '',
area_id: '',
remark: '',
survey_user_id: '',
survey_user_name: ''
}
]
},
selectSmallAreaIndex: [{index:0}],
selectSurveyorIndex: [{index:0}],
smallAreaList: [],
surveyorList: []
}
},
async created() {
await this.initSmallArea(this.$route.query.city_id);
await this.initSurveyor();
await this.initEstateInfo(this.$route.query.inquiry_id);
},
methods: {
async initSurveyor() {
let params = {roleCode:"Surveyor"}
await getRole(params).then(res => {
if (res.code === 1) {
this.surveyorList = res.data
} else {
toast(res.msg)
}
})
},
async initEstateInfo(inquiry_id) {
let params = {quot_id:inquiry_id}
await reqPropertyInfo(params).then(res => {
if (res.code === 1) {
let estateList = res.data
console.log("initEstateInfo initEstateInfo:",estateList );
estateList.forEach((item,index)=>{
this.estateNameList.push(item.building_name)
if(index == 0) {
this.surveyModalForm.details[0].property_cert_info_id = item.id
this.surveyModalForm.details[0].area = this.smallAreaList[0].name
this.surveyModalForm.details[0].area_id = this.smallAreaList[0].id
this.surveyModalForm.details[0].survey_user_id = this.surveyorList[0].userId
this.surveyModalForm.details[0].survey_user_name = this.surveyorList[0].userNickName
}else {
this.selectSmallAreaIndex.push({index:0})
this.selectSurveyorIndex.push({index:0})
this.surveyModalForm.details.push({
property_cert_info_id: item.id,
contact_name: '',
contact_phone: '',
area: this.smallAreaList[0].name,
area_id: this.smallAreaList[0].id,
remark: '',
survey_user_id: this.surveyorList[0].userId,
survey_user_name: this.surveyorList[0].userNickName
})
}
})
} else {
toast(res.msg)
}
})
},
async initSmallArea(city_id) {
let params = {id:city_id}
await getSmallArea(params).then(res => {
if (res.code === 1) {
let samllAreaObj = res.data
for (let i in samllAreaObj) {
let id = i;
let name = samllAreaObj[i];
this.smallAreaList.push({id:id,name:name});
}
} else {
toast(res.msg)
}
})
},
suveryApply() {
askSurvey(this.surveyModalForm).then(res => {
if (res.code === 1) {
this.$tab.navigateTo('/pages/inquiry/index')
} else {
toast(res.msg)
}
})
},
cancel() {
this.$tab.navigateTo('/pages/inquiry/index')
},
onChangeSelect(event, name, index, item) {
if (!event) {
return
}
switch (name) {
case 'small_area':
this.selectSmallAreaIndex[index].index = event.detail.value
this.surveyModalForm.details[index].area = this.smallAreaList[this.selectSmallAreaIndex[index].index].name
this.surveyModalForm.details[index].area_id = this.smallAreaList[this.selectSmallAreaIndex[index].index].id
break
case 'surveyor':
this.selectSurveyorIndex[index].index = event.detail.value
this.surveyModalForm.details[index].survey_user_id = this.surveyorList[this.selectSurveyorIndex[index].index].userId
this.surveyModalForm.details[index].survey_user_name = this.surveyorList[this.selectSurveyorIndex[index].index].userNickName
}
},
}
}
</script>
<style>
/* 将 mask 缩小到一行 */
.uni-popup-mask {
height: 1px;
}
/* 将 mask 演示为浅蓝色 */
.uni-popup-mask::before {
background-color: #e6f1ff;
}
.uni-list-cell {
line-height: 90rpx;
display: flex;
align-items: center;
}
.btn {
color: #ff6a00;
border: 1px;
border-color: blue;
}
.require {
color: red;
}
.line {
width: 100%;
height: 5rpx;
background-color: #E6E6E6;
}
.line2 {
width: 100%;
height: 20rpx;
background-color: #F5F5F5;
}
.button-sp-area {
margin: 0 auto;
width: 80%;
text-align: center;
}
.mini-btn {
margin-right: 20rpx;
}
</style>