前提需求:后台得到的数据对象中的某个值没有。会提示undefined,此时可以作为if 条件语句的判断,在条件判断中 undefined 的作用=false
具体业务:已报价时间为空且截至报价时间大于等于此刻的时间-----可报价
具体代码:
export default{
data(){
return{
allow:false //控制是否可以报价
}
},
methods:{
getData(){
//后台请求得到数据后
// 判断报价单,是否允许报价
if (!this.Data.qDate) { //Data 为后台得到数据 qDate为报价时间,没有undefined=false
const oDateTime = new Date().getTime(); //此刻的时间 转为时间戳
let pqExpiryDate = oDateTime;
if (this.Data.expiryDate) { //expiryDate为截至时间 有的话
ExpiryDate = dateUtil.strToDate(this.Data.expiryDate).getTime();
//转为时间戳
//dateUtil.strToDate是一个日期转换的方法js(见下面代码)
}
if (oDateTime <= pqExpiryDate) { //比较
this.allowQuotation = true; //允许报价
}
}
}
}
}
时间,日期转换util
/**
* 字符串转换为日期对象
* @param dateStr string 格式为yyyy-MM-dd HH:mm:ss,必须按年月日时分秒的顺序,中间分隔符不限制
*/
export function strToDate(dateStr) { //dateStr:'2021-03-23 16:36:00'
return strFormatToDate('yyyy-MM-dd HH:mm:ss', dateStr);
}
**
* 把指定格式的字符串转换为日期对象yyyy-MM-dd HH:mm:ss
*
*/
export function strFormatToDate(formatStr, dateStr) {
let year = 0;
let start = -1;
let len = (dateStr|| '').length;
if ((start = formatStr.indexOf('yyyy')) > -1 && start < len) {
year = dateStr.substr(start, 4);
}
let month = 0;
if ((start = formatStr.indexOf('MM')) > -1 && start < len) {
month = parseInt(dateStr.substr(start, 2)) - 1;
}
let day = 0;
if ((start = formatStr.indexOf('dd')) > -1 && start < len) {
day = parseInt(dateStr.substr(start, 2));
}
let hour = 0;
if (((start = formatStr.indexOf('HH')) > -1 || (start = formatStr.indexOf('hh')) > 1) && start < len) {
hour = parseInt(dateStr.substr(start, 2));
}
let minute = 0;
if ((start = formatStr.indexOf('mm')) > -1 && start < len) {
minute = dateStr.substr(start, 2);
}
let second = 0;
if ((start = formatStr.indexOf('ss')) > -1 && start < len) {
second = dateStr.substr(start, 2);
}
return new Date(year, month, day, hour, minute, second);
}