<template> <!-- 附加页面 --> <div> <el-form :model="model" ref="modelForm" label-position="left" label-width="70px" size="small" :rules="rules" style="height:600px" > <!-- 页面左半部分 --> <el-col :span="10"> <el-col :span="22"> <el-form-item label="本金" prop="prin"> <c-input-number v-model="model.prin" placeholder="请输入" :precision="4"></c-input-number> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="利率" prop="intRate"> <div> <c-input-number v-model="model.intRate" :precision="2" :max="99.99" placeholder="请输入"></c-input-number>% </div> </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" ></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" ></c-date-picker> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="周几" prop="weekday"> <c-input v-model="model.weekday1" maxlength="32" placeholder disabled></c-input> <!-- :style="{'width':'80px', 'margin':'0px','padding' :'0px'}" --> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="周几" prop="weekday"> <c-input v-model="model.weekday2" maxlength="32" placeholder disabled></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="20"> <el-form-item label="节假日" prop="holiday"> <c-input v-model="model.holiday1" maxlength="32" placeholder disabled></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="20"> <el-form-item label="节假日" prop="holiday"> <c-input v-model="model.holiday2" maxlength="32" placeholder disabled></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="业务天数" prop="busiDayNum"> <c-input v-model="model.busiDayNum" maxlength="32" placeholder disabled @blur="calculateBusinessDays()" ></c-input> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="年度天数" prop="annlDayNum"> <c-input v-model="model.annlDayNum" maxlength="100" placeholder="请输入"></c-input> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="付息" prop="payInt"> <c-input-number v-model="model.payInt" :precision="4" placeholder disabled></c-input-number> </el-form-item> </el-col> </el-col> <el-col :span="12"> <el-col :span="22"> <el-form-item label="应付金额" prop="payblAmt"> <c-input-number v-model="model.payblAmt" :precision="4" placeholder disabled></c-input-number> </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="税率" prop="tax"> <div> <c-input-number v-model="model.tax" placeholder="选输" :precision="4" :step="0.1" :max="99.9999" ></c-input-number>% </div> </el-form-item> </el-col> </el-col> <el-col :span="10"> <el-col :span="22"> <el-form-item label="收益点" prop="profit"> <div> <c-input-number v-model="model.profit" :precision="4" placeholder disabled></c-input-number>% </div> </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 { month: moment(new Date()).format("YYYYMMDD"), 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: { prin: [ { required: true, trigger: "blur" } ], intRate: [ { required: true, message: "输入有误", trigger: "blur" } ], bgnIntDay: [ { required: true } ], dueDate: [ { required: true } ], annlDayNum: [ { required: true } ] } }; }, 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); 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.busiDayNum = days; } } // }); }, //判断到期日是否是节假日 async isholiday2() { // this.$refs.modelForm.validate(async valid => { // if (valid) { 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 = "是"; } console.log(rtnmsg.msg); 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.busiDayNum = days; } } // } // }); }, //计算当前日期是周几 getWeekNo(date) { let week = moment(date).day(); if (week === 0) { return "7"; } else { return week; } }, //计算业务天数:获取两个字符串日期的天数差 getBusinessDay(startDate, endDate) { let days = moment(endDate).diff(moment(startDate), "days"); return days; } }, //计算:付息=本金x(利率/100/年度天数)x(到息日-起息日) computed: { payInt: function() { if (this.model.annlDayNum !== 0) { let time = this.model.prin * (this.model.intRate / 100 / this.model.annlDayNum) * this.model.busiDayNum; return time; console.log(time); } }, //计算:应付金额=本金+付息 payblAmt: function() { return this.model.prin + this.model.payInt; }, //监听利率的变化,计算:收益点=利率/(1+税点)-FTP profit: function() { return ( (this.model.intRate / 100 / (1 + this.model.tax / 100) - this.model.ftp / 100) * 100 ); } }, watch: { profit: function() { this.model.profit = this.profit; }, payInt: function() { this.model.payInt = this.payInt; }, payblAmt: function() { this.model.payblAmt = this.payblAmt; }, busiDayNum: function() { this.model.busiDayNum = this.busiDayNum; } } }; </script>