<template> <!-- 附加页面 --> <div> <!-- 页面左半部分 --> <el-form :model="model" ref="modelForm" label-position="left" label-width="90px" size="small" :rules="rules" style="height:600px" > <el-col :span="10"> <el-col :span="22"> <el-form-item label="标准月数1" prop="month1"> <c-input v-model="model.month1" maxlength="4" required placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="标准月数2" prop="month2"> <c-input v-model="model.month2" maxlength="4" required placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="标准天数1" prop="days1"> <c-input v-model="model.days1" maxlength="32" disabled></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="标准天数2" prop="days2"> <c-input v-model="model.days2" maxlength="32" disabled></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="价格1" prop="price1"> <c-input-number v-model="model.price1" :max="999999999999999999.99" :precision="4" placeholder="请输入" ></c-input-number> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="价格2" prop="price2"> <c-input-number v-model="model.price2" :max="999999999999999999.99" :precision="4" placeholder="请输入" ></c-input-number> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="开始日期" prop="bgnIntDay"> <c-date-picker v-model="model.bgnIntDay" type="date" placeholder="选择日期" :picker-options="bgnIntDay" @blur="isholiday1()" :append-to-body="false" style="width:180px !important;" ></c-date-picker> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="结束日期" prop="dueDate"> <c-date-picker v-model="model.dueDate" type="date" placeholder="选择日期" :picker-options="dueDate" @blur="isholiday2()" :append-to-body="false" style="width:180px !important;" ></c-date-picker> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="周几" prop="weekday1"> <c-input v-model="model.weekday1" disabled placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="周几" prop="weekday2"> <c-input v-model="model.weekday2" disabled placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="节假日" prop="holiday1"> <c-input v-model="model.holiday1" disabled placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="节假日" prop="holiday2"> <c-input v-model="model.holiday2" disabled placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="实际天数" prop="realdays"> <c-input v-model="model.realdays" required maxlength="4" placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="插值价" prop="guidePrice"> <c-input-number v-model="model.guidePrice" :max="999999999999999999.9999" :precision="4" disabled placeholder="请输入" ></c-input-number>% </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="报价" prop="offer"> <c-input-number v-model="model.offer" :max="999999999999999999.9999" :precision="4" placeholder="请输入" ></c-input-number>% </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="税率" prop="tax"> <div> <c-input-number v-model="model.tax" maxlength="100" :precision="4" :step="0.1" :max="99.9999" placeholder="请输入" ></c-input-number>% </div> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="FTP" prop="ftp"> <div> <c-input-number v-model="model.ftp" :precision="4" :max="99.9999" placeholder="请输入"></c-input-number>% </div> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="税后FTP" prop="taxBehindOffer"> <c-input-number v-model="model.taxBehindOffer" :precision="4" disabled placeholder="请输入" :max="999999999999999999.9999" ></c-input-number>% </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="收益点" prop="profit"> <c-input-number v-model="model.profit" :precision="4" disabled placeholder="请输入"></c-input-number>% </el-form-item> </el-col> </el-col> </el-form> </div> </template> <script> import moment from "moment"; import Api from "~/service/Api"; import Calculator from "./Calculator"; export default { data() { return { bgnIntDay: { // 结束日期大于开始日期 disabledDate: time => { return time.getTime() > moment(this.model.dueDate); } }, dueDate: { // 结束日期大于开始日期 disabledDate: time => { return time.getTime() < moment(this.model.bgnIntDay); } }, model: new Calculator().data, rules: { month1: [ { required: true } ], month2: [ { required: true } ], price1: [ { required: true } ], price2: [ { required: true } ], realdays: [ { required: true } ] } }; }, // props: ["model", "codes"], methods: { //判断当前日期是否是节假日,是周几 async isholiday1() { // this.$refs.modelForm.validate(async valid => { // if (!valid) return; if (this.model.bgnIntDay !== null) { this.model.queryDate = this.model.bgnIntDay; let rtnmsg = await Api.post("v1/pm/isholiday", this.model); // this.model.holiday1 = rtnmsg.data; if (rtnmsg.data.isHolidayFlag == "0") { this.model.holiday1 = "否"; } else { this.model.holiday1 = "是"; } this.model.weekday1 = this.getWeekNo(this.model.bgnIntDay); if (this.model.bgnIntDay != null && this.model.dueDate != null) { let days = this.getBusinessDay( this.model.bgnIntDay, this.model.dueDate ); this.model.realdays = days; } } // }); }, //判断到期日是否是节假日 async isholiday2() { // this.$refs.modelForm.validate(async valid => { // if (!valid) return; if (this.model.dueDate !== null) { this.model.queryDate = this.model.dueDate; let rtnmsg = await Api.post("v1/pm/isholiday", this.model); // this.model.holiday2 = rtnmsg.data; if (rtnmsg.data.isHolidayFlag == "0") { this.model.holiday2 = "否"; } else { this.model.holiday2 = "是"; } this.model.weekday2 = this.getWeekNo(this.model.dueDate); if (this.model.bgnIntDay != null && this.model.dueDate != null) { let days = this.getBusinessDay( this.model.bgnIntDay, this.model.dueDate ); this.model.realdays = days; } } // }); }, //计算当前日期是周几 getWeekNo(date) { let week = moment(date).day(); if (week === 0) { debugger; return "7"; } else { return week; } }, //计算业务天数:获取两个字符串日期的天数差 getBusinessDay(startDate, endDate) { let days = moment(endDate).diff(moment(startDate), "days"); return days; } }, computed: { // 标准天数=标准月数x30 days1: function() { return this.model.month1 * 30; }, days2() { return this.model.month2 * 30; }, guidePrice() { //多出低档=实际天数-标准天数1 let lowLevel = this.model.realdays - this.model.days1; //间隔天数=标准天数2-标准天数1 let days = this.model.days2 - this.model.days1; let rate; // 多出占间距比例=多出低档/间隔天数 if (days !== 0) { rate = lowLevel / days; } else { rate = 0; } //间隔价格: let invPrice; if (this.model.price2 > this.model.price1) { debugger; invPrice = this.model.price2 - this.model.price1; } else { invPrice = this.model.price1 - this.model.price2; } // 插值指导价=指导价1+间隔价格x多出占间距比例 return this.model.price1 + invPrice * rate; }, taxBehindOffer() { //税后报价=FTP*(1+税率) return (this.model.ftp )* (1 + this.model.tax/100); }, profit() { // 收益点=税后报价-报价 return this.model.offer-this.taxBehindOffer; } }, watch: { days1: function() { this.model.days1 = this.days1; }, days2() { this.model.days2 = this.days2; }, guidePrice() { this.model.guidePrice = this.guidePrice; }, taxBehindOffer() { this.model.taxBehindOffer = this.taxBehindOffer; }, profit() { this.model.profit = this.profit; } } }; </script>