// components/detail-basis/datail-basis.js const $api = require('../../utils/api').API; const measure = require('../../utils/measure') Component({ options: { addGlobalClass: true }, /** * 组件的属性列表 */ properties: { mid: { type: String, }, //测算数据 info: { type: Object, value: {} }, //基础数据 dataInfo: { type: Object, value: {} }, // 查询数据 orgiData: { type: Object, value: {} } }, /** * 组件的初始数据 */ data: { 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, forecastFloorPrice: null,//预测楼面价 }, tabHDate: ['土地价格', '楼面价', '土地总价', '净利率', '溢价率'], // 标题内容 tabW: ['167', '114', '157', '134', '120'], rowKey: ['Tprice', 'Lprice', 'AllPrice', 'Interest', 'PremiumRate'], tabInput: [false, true, false, false, false], rowData: [{ Tprice: '起拍价', Lprice: 0, AllPrice: 0, Interest: 0, PremiumRate: 0 }, { Tprice: '预测成交价', Lprice: null, AllPrice: 0, Interest: 0, PremiumRate: 0 }, ], isMeasure: false, parking_sale_rate: '', measureDataId: '', 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() { //回填数据 $api.AJAX('GET', 'applets/measuredata/' + this.properties.mid, true).then(res => { if (res.data && res.data.measureType == 0) { this.setData({ 'priceData.housingPrice': res.data.housingPrice, 'priceData.commercePrice': res.data.commercePrice, 'priceData.businessPrice': res.data.businessPrice, 'priceData.parkingPrice': res.data.parkingPrice, 'priceData.parkingAllocation': res.data.parkingAllocation, 'priceData.singleIndicator': res.data.singleIndicator, 'priceData.singlePrimeCost': res.data.singlePrimeCost, 'priceData.manageFeeRate': res.data.manageFeeRate, 'priceData.salesRate': res.data.salesRate, 'priceData.financialRate': res.data.financialRate, }) } if (this.data.dataInfo) { // console.log(this.data); // console.log(this.data.dataInfo); // console.log(this.data.dataInfo.bizSpace); // console.log(this.data.dataInfo.totalConsArea); // console.log(this.data.dataInfo.bizSpace / this.data.dataInfo.totalConsArea); // console.log(parseFloat(this.data.dataInfo.bizSpace) / parseFloat(this.data.dataInfo.totalConsArea)); this.setData({ 'priceData.commerceRate': (((parseFloat(this.data.dataInfo.bizSpace) / parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3)) * 100).toFixed(2), 'priceData.businessRate': (((parseFloat(this.data.dataInfo.bizSpace) / parseFloat(this.data.dataInfo.totalConsArea)).toFixed(3)) * 100).toFixed(2), '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), }) console.log(this.data.priceData); if (this.data.orgiData && this.data.orgiData.measureType === 0) { let data = JSON.parse(JSON.stringify(this.data.orgiData)) this.data.measureDataId = data.measureDataId 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] }) } } } } 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 // }) // }) }, /** * 组件的方法列表 */ methods: { 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'); console.log(table.data.myData) if (table.data.myData) { this.setData({ 'priceData.forecastFloorPrice': table.data.myData }) } else if (this.data.measureData.forecastFloorPrice) { table.data.myData = this.data.measureData.forecastFloorPrice console.log(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]) { 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() }, //保存 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)) console.log(data); if (this.data.measureDataId) { data.measureDataId = this.data.measureDataId } data.landListedId = this.data.dataInfo.landListedId; data.statusCd = 1100; data.measureType = 0; $api.measureData(data).then(res => { if (res.msg == 'ok') { wx.showToast({ title: '提交成功', icon: 'none', duration: 2000 }) } else { wx.showToast({ title: res.msg, 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 = 0; $api.measureData(data).then(res => { if (res.msg == 'ok') { wx.showToast({ title: '提交成功', icon: 'none', duration: 2000 }) } else { wx.showToast({ title: res.msg, 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, }) } } })