// components/detail-senior/detail-senior.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: { 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() { //回填数据 $api.AJAX('GET', 'applets/measuredata/' + this.properties.mid, true).then(res => { if (res.data && res.data.measureType == 1) { 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, 'priceData.loansRate': res.data.loansRate, 'priceData.financingInterest': res.data.financingInterest, 'priceData.loansInterest': res.data.loansInterest, 'priceData.financingPeriod': res.data.financingPeriod, 'priceData.loansPeriod': res.data.loansPeriod, 'priceData.freeHousingRate': res.data.freeHousingRate, 'priceData.freeCommerceRate': res.data.freeCommerceRate, 'priceData.freeBusinessRate': res.data.freeBusinessRate, 'priceData.selfHousingRate': res.data.selfHousingRate, 'priceData.selfHousingPrice': res.data.selfHousingPrice, 'priceData.selfCommerceRate': res.data.selfCommerceRate, 'priceData.selfCommercePrice': res.data.selfCommercePrice, 'priceData.selfBusinessRate': res.data.selfBusinessRate, 'priceData.selfBusinessPrice': res.data.selfBusinessPrice, }) } if (this.data.dataInfo) { 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), }) 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: '', }, }) } } })