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

503 lines
15 KiB
Vue
Raw 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 class="inquiry-container">
<view class="uni-flex uni-row uni-mb-4">
<view class="flex-item "><button size="mini" type="primary" @click="newInquiry()">发起询价</button></view>
<!-- <view class="flex-item "> <button size="mini" type="primary" @click="openFilter()">展示全部</button> </view> -->
<view class="flex-item" style="margin-top: 10rpx; margin-left: 80rpx; text-align: center; color: cornflowerblue; width: 350rpx;height: 50rpx;" > 过滤 能提升速度 </view>
<view class="flex-item "><button style="background-color:blue" size="mini" type="primary" @click="openFilter()">过滤</button></view>
</view>
<uni-card>
<view class="uni-flex uni-row uni-mb-4">
<view class="uni-list-cell-left" style="margin-top: 20rpx;">
<text style="color: blue;" >询价开始日期</text>
</view>
<view class="uni-list-cell-db">
<picker mode="date" :value="inquiryRequest.start_time" :start="startDate" :end="endDate" @change="onChangeSelect($event, 'InquirDate',0,inquiryRequest)">
<view class="uni-input" style="color: blue; border-radius: 10rpx; border: 1rpx solid #999999 ;margin-left: 10rpx; margin-top: 0rpx; width: 280rpx;height: 80rpx;text-align: center;" >{{inquiryRequest.start_time}}</view>
</picker>
</view>
</view>
<view class="uni-flex uni-row uni-mb-4">
<view class="uni-list-cell-left" style="margin-top: 20rpx;">
<text >询价结束日期</text>
</view>
<view class="uni-list-cell-db">
<picker mode="date" :value="inquiryRequest.end_time" :start="startDate" :end="endDate" @change="onChangeSelect($event, 'InquiryEndDate',0,inquiryRequest)">
<view class="uni-input" style=" border-radius: 10rpx; border: 1rpx solid #999999 ;margin-left: 10rpx; margin-top: 0rpx; width: 280rpx;height: 80rpx;text-align: center;" >{{inquiryRequest.end_time}}</view>
</picker>
</view>
</view>
<view class="uni-flex uni-row uni-mb-4">
<view class="flex-item" style="border-radius: 10rpx; margin-left: 23rpx; border: 1rpx solid #dddddd ; text-align: center; width: 480rpx;height: 70rpx;" >
<input class="uni-input" style="margin-left: 5rpx;width:460rpx;height: 65rpx" v-model="keyword" placeholder="搜索 物业名 / 银行" /></view>
</view>
</uni-card>
<view class="uni-flex uni-row uni-mb-4">
<view class="flex-item" style="margin-left: 530rpx;margin-top: 0rpx;">
<button size="mini" type="primary" @click="search()">搜索</button></view>
</view>
<view class="uni-flex uni-row uni-mb-4">
<view class="flex-item" style=" margin-left: 40rpx; text-align: left;width: 450rpx;height: 30rpx;font-weight: 700;" >询价量{{ total==0?"加载中...":pageInfo.limit>total?total:pageInfo.limit}} / {{total==0?"":total}} </view>
</view>
<view v-for="(item, findex) in list" :key="findex">
<uni-card>
<view class="detail" @click="goToDetail(item)">
<view class="uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;">
<view >{{item.order_no}}</view>
<view class="btnInquiry" >{{item.status_str}}</view>
</view>
<view class="line" ></view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">物业名称:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.property_full_name}}</view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">询价套数:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.is_multi_str}}</view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">所属银行:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.bank_name +'-'+ item.bank_branch_name + "-"+ item.bank_sub_name}}</view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">客户经理:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.bank_customer_mgr_name}}</view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">评估目的:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.eva_purpose}}</view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">面积(M):</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.size}}</view>
</view>
<view v-if="item.eva_unit_price!=0" class="uni-flex uni-row">
<view style="min-width: 150rpx;">评估单价:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.eva_unit_price}} /</view>
</view>
<view v-if="item.eva_total_value!=0" class="uni-flex uni-row">
<view style="width: 150rpx;">评估总值:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.eva_total_value}} </view>
</view>
<!--<view v-if="item.eva_net_value!=0" class="uni-flex uni-row">
<view style="width: 150rpx;">评估净值 1:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.eva_net_value}} </view>
</view>
<view v-if="item.eva_net_value2!=0" class="uni-flex uni-row">
<view style="width: 150rpx;">评估净值 2:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.eva_net_value2}} </view>
</view>
<view class="uni-flex uni-row">
<view style="width: 150rpx;">询价员:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.response_username}}</view>
</view>-->
<view class="uni-flex uni-row">
<view style="width: 150rpx;">询价时间:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.create_time}}</view>
</view>
<view v-if="item.maker!=null" class="uni-flex uni-row">
<view style="width: 150rpx;">报告制作人:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.maker}}</view>
</view>
<view v-if="item.estimate_no!=null" class="uni-flex uni-row">
<view style="width: 200rpx;">电子档提取码:</view>
<view style="-webkit-flex: 1;flex: 1;">{{item.estimate_no}}</view>
</view>
</view>
<view class="uni-flex uni-row uni-mb-4">
<view v-if="item.status == 2" class="flex-item "><button size="mini" style="width: 180rpx;background-color: #CC985E;" type="primary" @click="newSurvey(item)">发起查勘</button></view>
<!-- <view v-if="item.status == 4 || item.status == 5" class="flex-item "><view class="btn"><text @click="createReport(item)">申请生成报告</text></view></view>-->
<!-- <view class="flex-item "><view class="btn"><text @click="cancelInquiry()">撤单</text></view></view>
<view class="flex-item "><view class="btn"><text @click="uploadCertificate()">上传产证</text></view></view>
<view class="flex-item "><view class="btn"><text @click="adjustInquiry()">调价</text></view></view> -->
</view>
<!-- <view class="line2" v-if="findex !== list.length - 1"></view> -->
</uni-card>
</view>
<uni-popup ref="filterPopup" type="right">
<view>
<uni-card @click="closePopup">
<uni-data-checkbox mode="tag" selectedColor="red" @change="filterInquiry"
v-model="filterStatus"
:localdata="inquiryStatus">
</uni-data-checkbox>
</uni-card>
</view>
</uni-popup>
</view>
</template>
<script>
import { getUserID } from '@/utils/auth'
import { waitReturnPrice,getOfficialResultStatus } from '../../api/inquiry/inquiry'
export default {
data() {
return {
keyword:'',
filterStatus:'0',
pageInfo:null,
inquiryRequest:{
"page": "1",
"limit": "20",
"bank_id": "",
"status": "0",
"type": "",
"start_time": this.getPastDate(10),
"end_time": this.getPastDate(0),
"eva_purpose": "",
"search_text": "",
"user_id": getUserID(),
"response_username": "",
"start_time_length": "",
"end_time_length": "",
},
inquiryStatus:[
{
"value": "0",
"text": "所有 "
},
{
"value": "-1",
"text": "已撤单(未申请出报告)"
},
{
"value": "-2",
"text": "已撤单(已申请出报告)"
},
{
"value": "1",
"text": "待回价"
},
{
"value": "2",
"text": "待业务确认"
},
{
"value": "3",
"text": "查勘待派单"
},
{
"value": "4",
"text": "查勘待完成"
},
{
"value": "5",
"text": "待生成报告"
},
{
"value": "6",
"text": "报告制作中"
},
{
"value": "7",
"text": "报告待审核"
},
{
"value": "8",
"text": "报告已完成"
}
],
currentItem:{},
list: [],
total:0,
}
},
mounted() {
this.getWaitReturnPriceList({});
},
computed: {
startDate() {
return this.getDate('start');
},
endDate() {
return this.getDate('end');
}
},
created() {
//this.filterStatus ="1"
//console.log('created', this.filterStatus )
},
methods: {
closePopup() {
this.$refs.filterPopup.close()
} ,
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 100;
} else if (type === 'end') {
year = year + 100;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
},
filterInquiry(e) {
this.inquiryRequest.status = this.filterStatus
this.getWaitReturnPriceList(this.inquiryRequest);
/*
if(this.filterStatus == "0") {
let item = {"status=0": this.filterStatus}
this.getWaitReturnPriceList({});
}else {
let item = {"status": this.filterStatus}
this.getWaitReturnPriceList(item);
}*/
this.$refs.filterPopup.close()
},
cancelFilter(){
this.$refs.filterPopup.close()
},
openFilter(){
this.$refs.filterPopup.open()
},
createReport(item) {
this.$tab.navigateTo(`/pages/inquiry/createReportApply?order_no=${item.order_no}&inquiry_id=${item.quot_id}&city_id=${item.city_id}&bank_name=${item.bank_name}&inquiryStatus=${item.status}`)
},
newSurvey(item) {
console.log('newSurvey: item:',item,item.quot_id)
this.$tab.navigateTo(`/pages/inquiry/surveyApply?order_no=${item.order_no}&inquiry_id=${item.quot_id}&city_id=${item.city_id}`)
},
cancelInquiry() {
},
uploadCertificate() {
},
adjustInquiry() {
},
search() {
let item = {"search_text": this.keyword}
this.inquiryRequest.search_text = this.keyword
let start_date = new Date(this.inquiryRequest.start_time)
let end_date = new Date(this.inquiryRequest.end_time)
let gap = start_date.getTime() - end_date.getTime()
if( gap > 0)
{
uni.showToast({
title:"询价开始时间不能大于当前时间!"
})
return
}
this.getWaitReturnPriceList(item);
},
newInquiry() {
this.$tab.navigateTo('/pages/inquiry/addInquiry')
},
// 跳到详情页
goToDetail( item ) {
let evaList = this.evaluatePurposeList;
this.$tab.navigateTo('/pages/inquiry/detail?inquir_detail_item='+ encodeURIComponent(JSON.stringify(item)) );
},
// 日期计算函数获取当前时间往前days天的日期格式为 2024-1-1
getPastDate(days) {
const currentDate = new Date();
const pastDate = new Date(currentDate.getTime() - days * 24 * 60 * 60 * 1000); // 一天的毫秒数
const year = pastDate.getFullYear();
const month = ("0" + (pastDate.getMonth() + 1)).slice(-2); // 月份从0开始所以需要+1并且前面补0
const day = ("0" + pastDate.getDate()).slice(-2); // 日前面补0
return `${year}-${month}-${day}`;
},
//询价待回价
getWaitReturnPriceList(item) {
let params = Object.assign({}, params, item)
params = this.inquiryRequest
params.user_id = getUserID()
this.pageInfo = this.inquiryRequest//params;
//console.log("getWaitReturnPriceList:",params,item)
uni.showLoading({})
// console.log('getWaitReturnPriceList param',params )
waitReturnPrice(params).then(res => {
window.console.log('waitReturnPrice:',res)
this.initialStatus( res.data.data )
this.list = res.data.data
this.total = res.data.count
if(this.total == 0 )
{
uni.showToast({title:'找不到询价数据!\r\n 您可调整[ 询价开始日期 ],扩大您的搜索范围。', icon:'error',duration:3000})
}
uni.hideLoading()
}).catch((r) => {
console.log('waitReturnPrice Error:',r)
})
},
initialStatus( list )
{
console.log( 'list length:',list.length)
for( let i=0; i<list.length; ++i)
{
let item = list[i];
//console.log('for ',item.status_str)
if( item.bank_name == "中国银行" && item.status_str == "报告已完成")
{
setTimeout(() => {
// 在这里执行你的函数
let params = { pre_estimate_no:item.estimate_no }
getOfficialResultStatus(params).then( res =>{
list[i].status_str = this.getStatueStr( item.bank_name, item.status_str , res.data ) ;
console.log("initialStatus : response getOfficalresut status",item.status_str )
this.$forceUpdate() ;
})
}, 200);
}
}
},
// 获取处理状态数据
getStatueStr( bankNameStr , statusStr,handle_str ) {
// 只有中国银行有是否提交报告
// if( '中国银行'== bankNameStr)
// {
// if( '报告已完成' == statusStr )
// {
// if( 1 == handle_str)
// {
// return statusStr+'(已传中行)'
// }
// else{
// return statusStr+'(未传中行)'
// }
// }
// }
// else{
return statusStr;
// }
},
handleClick(item) {
this.currentItem = item
this.$refs.surveyType.open()
//this.$tab.navigateTo(`/pages/survey/detail?order_no==${item.order_no}&id=${item.id}&survey_id=${item.survey_id}&survey_type=${item.survey_type}`)
},
onChangeSelect(event, name, index, item) {
if (!event) {
return
}
switch (name) {
case 'InquirDate':
this.inquiryRequest.start_time = event.detail.value
this.search()
break;
case 'InquiryEndDate':
console.log('end date', event.detail.value)
this.inquiryRequest.end_time = event.detail.value
this.search()
break;
}
},
navSurvey(surveyType) {
let item = this.currentItem
if(surveyType == 'house') {
this.$tab.navigateTo(`/pages/survey/houseDetail?order_no==${item.order_no}&id=${item.id}&survey_id=${item.survey_id}&survey_type=1`)
}else if (surveyType == 'shop') {
this.$tab.navigateTo(`/pages/survey/shopDetail?order_no==${item.order_no}&id=${item.id}&survey_id=${item.survey_id}&survey_type=2`)
}
}
}
}
</script>
<style lang="scss" scoped>
page {
background-color: #f8f8f8;
}
.inquiry-container {
margin-bottom: 100rpx;
padding: 20rpx;
}
.toolbar {
margin-bottom: 50rpx;
padding: 10rpx;
}
.btn {
color: #007aff;
margin: 10rpx;
border-color: blue;
background-color: #F5F5F5;
}
.btnInquiry {
color: #ff6a00;
}
.line {
width: 100%;
height: 5rpx;
background-color: #E6E6E6;
}
.line2 {
width: 100%;
height: 20rpx;
background-color: #F5F5F5;
}
.text-title {
color: #303133;
font-size: 32rpx;
font-weight: bold;
margin-left: 10rpx;
.iconfont {
font-size: 16px;
margin-right: 10rpx;
}
}
.text-item {
font-size: 28rpx;
padding: 24rpx;
}
.flex-item {
width: 33.3%;
height: 50rpx;
text-align: center;
//line-height: 200rpx;
}
.button-sp-area {
margin: 0 auto;
width: 80%;
}
.mini-btn {
margin-right: 20rpx;
}
</style>