|
|
|
// components/detail-senior/detail-senior.js
|
|
|
|
const $api = require('../../utils/api').API;
|
|
|
|
const measure=require('../../utils/measure')
|
|
|
|
Component({
|
|
|
|
options: {
|
|
|
|
addGlobalClass: true
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 组件的属性列表
|
|
|
|
*/
|
|
|
|
properties: {
|
|
|
|
//测算数据
|
|
|
|
info:{
|
|
|
|
type:Object,
|
|
|
|
value:{}
|
|
|
|
},
|
|
|
|
//基础数据
|
|
|
|
dataInfo:{
|
|
|
|
type:Object,
|
|
|
|
value:{}
|
|
|
|
},
|
|
|
|
// 查询数据
|
|
|
|
orgiData:{
|
|
|
|
type:Object,
|
|
|
|
value:{}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 组件的初始数据
|
|
|
|
*/
|
|
|
|
data: {
|
|
|
|
tabInput:[false,true,false,false,false],
|
|
|
|
priceData:{
|
|
|
|
housingPrice:null,
|
|
|
|
commercePrice:null,
|
|
|
|
businessPrice:null,
|
|
|
|
parkingPrice:null,
|
|
|
|
parkingAllocation:null,
|
|
|
|
singleIndicator:null,
|
|
|
|
parkingSaleRate:null,
|
|
|
|
singlePrimeCost:null,
|
|
|
|
commerceRate:null,
|
|
|
|
businessRate:null,
|
|
|
|
manageFeeRate:null,
|
|
|
|
salesRate:null,
|
|
|
|
financialRate:null,
|
|
|
|
financingRate:null,
|
|
|
|
loansRate:null,
|
|
|
|
financingInterest:null,
|
|
|
|
loansInterest:null,
|
|
|
|
financingPeriod:null,
|
|
|
|
loansPeriod:null,
|
|
|
|
freeHousingRate:null,
|
|
|
|
freeCommerceRate:null,
|
|
|
|
freeBusinessRate:null,
|
|
|
|
selfHousingRate:null,
|
|
|
|
selfHousingPrice:null,
|
|
|
|
selfCommerceRate:null,
|
|
|
|
selfCommercePrice:null,
|
|
|
|
selfBusinessRate:null,
|
|
|
|
selfBusinessPrice:null,
|
|
|
|
selfBusinessSale:null,
|
|
|
|
selfCommerceSale:null,
|
|
|
|
selfHousingSale:null,
|
|
|
|
forecastFloorPrice:null,//预测楼面价
|
|
|
|
},
|
|
|
|
tabHDate: ['土地价格', '楼面价', '土地总价', '净利率', '溢价率'], // 标题内容
|
|
|
|
tabW: ['167', '114', '157', '134', '120'],
|
|
|
|
rowKey: ['Tprice', 'Lprice', 'AllPrice', 'Interest', 'PremiumRate'],
|
|
|
|
rowData: [{
|
|
|
|
Tprice: '起拍价',
|
|
|
|
Lprice: 0,
|
|
|
|
AllPrice: 0,
|
|
|
|
Interest: 0,
|
|
|
|
PremiumRate: 0
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Tprice: '预测成交价',
|
|
|
|
Lprice: null,
|
|
|
|
AllPrice: 0,
|
|
|
|
Interest: 0,
|
|
|
|
PremiumRate: 0
|
|
|
|
},
|
|
|
|
],
|
|
|
|
isMeasure:false,
|
|
|
|
params:{selfHousingSale:'',
|
|
|
|
selfCommerceSale:'',
|
|
|
|
selfBusinessSale:'',
|
|
|
|
},
|
|
|
|
arr:[
|
|
|
|
{label:'否',value:'0'},
|
|
|
|
{label:'是',value:'1'},
|
|
|
|
],
|
|
|
|
measureDataId:'',
|
|
|
|
parking_sale_rate:'',
|
|
|
|
finance_rate:'',
|
|
|
|
measureData:{
|
|
|
|
"landListedId":null,
|
|
|
|
"businessPrice": 0,//商务定价
|
|
|
|
"businessRate": 0,//商务配比
|
|
|
|
"commercePrice": 0,//商业定价
|
|
|
|
"commerceRate": 0,//商业配比
|
|
|
|
"errorAbsoluteValue": 0,//误差绝对值
|
|
|
|
"financialRate": 0,//财务费率
|
|
|
|
"financingInterest": 0,//前融利率
|
|
|
|
"financingPeriod": 0,//前融周期
|
|
|
|
"financingRate": 0,//前融比例
|
|
|
|
"floorPrice": 0,//起拍楼面价
|
|
|
|
"forecastFloorPrice": 0,//预测楼面价
|
|
|
|
"forecastLandTotalPrice": 0,//预测土地总价
|
|
|
|
"forecastNetProfitRatio": 0,//预测净利率
|
|
|
|
"forecastPremiumRate": 0,// 预测溢价率
|
|
|
|
"freeBusinessRate": 0,//无偿移交商务计容占比
|
|
|
|
"freeCommerceRate": 0,//无偿移交商业计容占比
|
|
|
|
"freeHousingRate": 0,//无偿移交住宅计容占比
|
|
|
|
"housingPrice": 0,//住宅定价
|
|
|
|
"landTotalPrice": 0,// 土地总价
|
|
|
|
"loansInterest": 0,// 开发贷利率
|
|
|
|
"loansPeriod": 0,//开发贷周期
|
|
|
|
"loansRate": 0,//开发贷比例
|
|
|
|
"manageFeeRate": 0,//管理费率
|
|
|
|
// "measureDataId": 0,// 测算数据id
|
|
|
|
"measureType": 0,// 测算类型(0:基础,1:高级)
|
|
|
|
"netProfitRatio": 0,//净利率
|
|
|
|
"parkingAllocation": 0,//车位配比(个/100㎡)
|
|
|
|
"parkingPrice": 0,//车位定价
|
|
|
|
"parkingSaleRate": 0,// 车位可售
|
|
|
|
"premiumRate": 0,//溢价率
|
|
|
|
"salesRate": 0,//销售费率
|
|
|
|
"selfBusinessSale": 0,//
|
|
|
|
"selfBusinessPrice": 0,//商务可售价格
|
|
|
|
"selfBusinessRate": 0,// 自持商务计容占比
|
|
|
|
"selfCommerceSale": 0,//
|
|
|
|
"selfCommercePrice": 0,//商业可售价格
|
|
|
|
"selfCommerceRate": 0,//自持商业计容占比
|
|
|
|
"selfHousingSale": 0,//
|
|
|
|
"selfHousingPrice": 0,//住宅可售价格
|
|
|
|
"selfHousingRate": 0,//自持住宅计容占比
|
|
|
|
"singleIndicator": 0,// 单车指标
|
|
|
|
"singlePrimeCost": 0,//单方成本
|
|
|
|
"transactionFloorPrice": 0,// 成交楼面价
|
|
|
|
"statusCd":1000
|
|
|
|
}
|
|
|
|
},
|
|
|
|
ready(){
|
|
|
|
if(this.data.dataInfo){
|
|
|
|
this.setData({
|
|
|
|
'priceData.commerceRate':(parseFloat(this.data.dataInfo.bizSpace)/parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3),
|
|
|
|
'priceData.businessRate':(parseFloat(this.data.dataInfo.bizSpace)/parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3),
|
|
|
|
'rowData[0].Lprice':this.data.dataInfo.floorPrice?parseFloat(this.data.dataInfo.floorPrice).toFixed(3):0,//transferPrice
|
|
|
|
'rowData[0].AllPrice':parseFloat(this.data.dataInfo.transferPrice).toFixed(3),
|
|
|
|
'rowData[1].AllPrice':parseFloat(this.data.dataInfo.transferPrice).toFixed(3),
|
|
|
|
})
|
|
|
|
if(this.data.orgiData&&this.data.orgiData.measureType===1){
|
|
|
|
let data=JSON.parse(JSON.stringify(this.data.orgiData))
|
|
|
|
this.data.measureDataId=data.measureDataId;
|
|
|
|
this.data.isMeasure=true;
|
|
|
|
this.setData({
|
|
|
|
params:{
|
|
|
|
selfHousingSale:data.selfHousingSale===1?'是':'否',
|
|
|
|
selfCommerceSale:data.selfCommerceSale===1?'是':'否',
|
|
|
|
selfBusinessSale:data.selfBusinessSale===1?'是':'否',
|
|
|
|
}
|
|
|
|
})
|
|
|
|
for(let key in data){
|
|
|
|
for(let key2 in this.data.measureData){
|
|
|
|
if(key==key2){
|
|
|
|
if(!data[key]){
|
|
|
|
this.data.measureData[key2]=0
|
|
|
|
}else{
|
|
|
|
this.data.measureData[key2]=data[key]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(let key3 in this.data.priceData){
|
|
|
|
if(key==key3){
|
|
|
|
if(!data[key]){
|
|
|
|
this.setData({
|
|
|
|
[`priceData.${key3}`]:0
|
|
|
|
})
|
|
|
|
// this.data.priceData[key3]=0
|
|
|
|
}else{
|
|
|
|
this.setData({
|
|
|
|
[`priceData.${key3}`]:data[key]
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(this.data.priceData)
|
|
|
|
this.setData({
|
|
|
|
'rowData[0].Interest':this.data.measureData.netProfitRatio,
|
|
|
|
'rowData[1].Interest':this.data.measureData.forecastNetProfitRatio,
|
|
|
|
'rowData[1].Lprice':this.data.measureData.forecastFloorPrice,
|
|
|
|
'rowData[1].PremiumRate':this.data.measureData.forecastPremiumRate,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//车位配比
|
|
|
|
$api.getDict('parking_sale_rate').then(res=>{
|
|
|
|
this.setData({
|
|
|
|
parking_sale_rate:res.data[0].value,
|
|
|
|
'priceData.parkingSaleRate':res.data[0].value
|
|
|
|
})
|
|
|
|
})
|
|
|
|
//财务费率
|
|
|
|
$api.getDict('finance_rate').then(res=>{
|
|
|
|
this.setData({
|
|
|
|
finance_rate:res.data[0].value,
|
|
|
|
'priceData.financialRate':res.data[0].value
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 组件的方法列表
|
|
|
|
*/
|
|
|
|
methods: {
|
|
|
|
bindChange(e){
|
|
|
|
let type=e.currentTarget.dataset.type;
|
|
|
|
// console.log(type)
|
|
|
|
for(let key in this.data.params){
|
|
|
|
if(key==type){
|
|
|
|
this.setData({
|
|
|
|
[`params.${key}`]:this.data.arr[e.detail.value].label
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(let key in this.data.priceData){
|
|
|
|
if(key==type){
|
|
|
|
this.setData({
|
|
|
|
[`priceData.${key}`]:this.data.arr[e.detail.value].value
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(this.data.priceData)
|
|
|
|
},
|
|
|
|
vmodel(e){
|
|
|
|
for(let key in this.data.priceData){
|
|
|
|
if(key==e.currentTarget.dataset.type){
|
|
|
|
this.data.priceData[key]=e.detail.value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(this.data.priceData)
|
|
|
|
},
|
|
|
|
calculate(){
|
|
|
|
let table=this.selectComponent('#table');
|
|
|
|
if(table.data.myData){
|
|
|
|
this.setData({
|
|
|
|
'priceData.forecastFloorPrice':table.data.myData
|
|
|
|
})
|
|
|
|
}else if(this.data.measureData.forecastFloorPrice){
|
|
|
|
table.data.myData=this.data.measureData.forecastFloorPrice
|
|
|
|
this.setData({
|
|
|
|
'priceData.forecastFloorPrice':this.data.measureData.forecastFloorPrice
|
|
|
|
})
|
|
|
|
}
|
|
|
|
console.log(this.data.priceData)
|
|
|
|
for(let key in this.data.priceData){
|
|
|
|
if(!this.data.priceData[key]&&this.data.priceData[key]!=0){
|
|
|
|
console.log(key)
|
|
|
|
wx.showToast({
|
|
|
|
title: '请确定输入是否完整',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(let key in this.data.measureData){
|
|
|
|
for(let key2 in this.data.priceData){
|
|
|
|
if(typeof this.data.priceData[key2]=='string'){
|
|
|
|
this.data.priceData[key2]=parseFloat(this.data.priceData[key2])
|
|
|
|
}
|
|
|
|
if(key2==key){
|
|
|
|
this.data.measureData[key]=this.data.priceData[key2]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.setData({
|
|
|
|
'rowData[0].Interest':(measure(this.data.measureData,parseFloat(this.data.dataInfo.totalConsArea),parseFloat(this.data.dataInfo.startingFloorPrice),parseFloat(this.data.dataInfo.allocationCapacity),parseFloat(this.data.dataInfo.allocationNotCapacity))).toFixed(3),
|
|
|
|
'rowData[1].Interest':(measure(this.data.measureData,parseFloat(this.data.dataInfo.totalConsArea),parseFloat(table.data.myData),parseFloat(this.data.dataInfo.allocationCapacity),parseFloat(this.data.dataInfo.allocationNotCapacity))).toFixed(3),
|
|
|
|
'rowData[1].Lprice':table.data.myData,
|
|
|
|
'rowData[1].PremiumRate':((parseFloat(table.data.myData)-parseFloat(this.data.dataInfo.startingFloorPrice))/parseFloat(this.data.dataInfo.startingFloorPrice)).toFixed(3),
|
|
|
|
})
|
|
|
|
this.data.measureData.netProfitRatio=parseFloat(this.data.rowData[0].Interest);
|
|
|
|
this.data.measureData.forecastNetProfitRatio=parseFloat(this.data.rowData[1].Interest);
|
|
|
|
this.data.measureData.premiumRate=parseFloat(this.data.rowData[0].PremiumRate);
|
|
|
|
this.data.measureData.forecastPremiumRate=parseFloat(this.data.rowData[1].PremiumRate);
|
|
|
|
this.data.isMeasure=true;
|
|
|
|
// measure()
|
|
|
|
// console.log(this.data.dataInfo)
|
|
|
|
},
|
|
|
|
save(){
|
|
|
|
if(!this.data.isMeasure){
|
|
|
|
wx.showToast({
|
|
|
|
title: '请先完成数据测算',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if(this.data.orgiData&&this.data.orgiData.statusCd=='1100'){
|
|
|
|
wx.showToast({
|
|
|
|
title: '该测算数据已被保存',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
let data=JSON.parse(JSON.stringify(this.data.measureData))
|
|
|
|
if(this.data.measureDataId){
|
|
|
|
data.measureDataId=this.data.measureDataId
|
|
|
|
}
|
|
|
|
data.landListedId=this.data.dataInfo.landListedId;
|
|
|
|
data.statusCd=1100;
|
|
|
|
data.measureType=1;
|
|
|
|
$api.measureData(data).then(res=>{
|
|
|
|
if(res.msg=='ok'){
|
|
|
|
wx.showToast({
|
|
|
|
title: '保存成功',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
console.log(this.data.measureData)
|
|
|
|
},
|
|
|
|
submit(){
|
|
|
|
if(!this.data.isMeasure){
|
|
|
|
wx.showToast({
|
|
|
|
title: '请先完成数据测算',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if(this.data.orgiData&&this.data.orgiData.statusCd=='1100'){
|
|
|
|
wx.showToast({
|
|
|
|
title: '该测算数据已被保存',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
let data=JSON.parse(JSON.stringify(this.data.measureData))
|
|
|
|
if(this.data.measureDataId){
|
|
|
|
data.measureDataId=this.data.measureDataId
|
|
|
|
}
|
|
|
|
data.landListedId=this.data.dataInfo.landListedId;
|
|
|
|
data.statusCd=1000;
|
|
|
|
data.measureType=1;
|
|
|
|
$api.measureData(data).then(res=>{
|
|
|
|
console.log(res)
|
|
|
|
if(res.msg=='ok'){
|
|
|
|
wx.showToast({
|
|
|
|
title: '提交成功',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//重做
|
|
|
|
clearData(){
|
|
|
|
this.setData({
|
|
|
|
priceData:{
|
|
|
|
housingPrice:null,
|
|
|
|
commercePrice:null,
|
|
|
|
businessPrice:null,
|
|
|
|
parkingPrice:null,
|
|
|
|
parkingAllocation:null,
|
|
|
|
singleIndicator:null,
|
|
|
|
parkingSaleRate:this.data.parking_sale_rate,
|
|
|
|
singlePrimeCost:null,
|
|
|
|
commerceRate:(parseFloat(this.data.dataInfo.bizSpace)/parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3),
|
|
|
|
businessRate:(parseFloat(this.data.dataInfo.bizSpace)/parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3),
|
|
|
|
manageFeeRate:null,
|
|
|
|
salesRate:null,
|
|
|
|
financialRate:this.data.finance_rate,
|
|
|
|
financingRate:null,
|
|
|
|
loansRate:null,
|
|
|
|
financingInterest:null,
|
|
|
|
loansInterest:null,
|
|
|
|
financingPeriod:null,
|
|
|
|
loansPeriod:null,
|
|
|
|
freeHousingRate:null,
|
|
|
|
freeCommerceRate:null,
|
|
|
|
freeBusinessRate:null,
|
|
|
|
selfHousingRate:null,
|
|
|
|
selfHousingPrice:null,
|
|
|
|
selfCommerceRate:null,
|
|
|
|
selfCommercePrice:null,
|
|
|
|
selfBusinessRate:null,
|
|
|
|
selfBusinessPrice:null,
|
|
|
|
selfBusinessSale:null,
|
|
|
|
selfCommerceSale:null,
|
|
|
|
selfHousingSale:null,
|
|
|
|
forecastFloorPrice:null,//预测楼面价
|
|
|
|
},
|
|
|
|
rowData: [{
|
|
|
|
Tprice: '起拍价',
|
|
|
|
Lprice: this.data.dataInfo.floorPrice?parseFloat(this.data.dataInfo.floorPrice).toFixed(3):0,//transferPrice,
|
|
|
|
AllPrice: parseFloat(this.data.dataInfo.transferPrice).toFixed(3),
|
|
|
|
Interest: 0,
|
|
|
|
PremiumRate: 0
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Tprice: '预测成交价',
|
|
|
|
Lprice: null,
|
|
|
|
AllPrice: parseFloat(this.data.dataInfo.transferPrice).toFixed(3),
|
|
|
|
Interest: 0,
|
|
|
|
PremiumRate: 0
|
|
|
|
},
|
|
|
|
],
|
|
|
|
isMeasure:false,
|
|
|
|
params:{selfHousingSale:'',
|
|
|
|
selfCommerceSale:'',
|
|
|
|
selfBusinessSale:'',
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|