/**
* 获取指定周期的开始和结束时间
* @param year
* @param cycle
* @param month
* @param week
* @return
*/
@GetMapping(path = "/getStartAndEndTime")
public AjaxResult getStartAndEndTime(String year,String cycle,String month,String week) {
if(org.apache.commons.lang.StringUtils.isNotBlank(week)){
DateTime dateTime = DateUtil.beginOfWeek(DateUtil.parse(week, "yyyy-MM-dd"));
DateTime dateTime1 = DateUtil.endOfWeek(DateUtil.parse(week, "yyyy-MM-dd"));
return AjaxResult.success("获取成功",new String[]{DateUtil.format(dateTime, "yyyy-MM-dd"),DateUtil.format(dateTime1, "yyyy-MM-dd")});
}
if(org.apache.commons.lang.StringUtils.isNotBlank(month)){
DateTime dateTime = DateUtil.beginOfMonth(DateUtil.parse(month, "yyyy-MM-dd"));
DateTime dateTime1 = DateUtil.endOfMonth(DateUtil.parse(month, "yyyy-MM-dd"));
return AjaxResult.success("获取成功",new String[]{DateUtil.format(dateTime, "yyyy-MM-dd"),DateUtil.format(dateTime1, "yyyy-MM-dd")});
}
if(org.apache.commons.lang.StringUtils.isNotBlank(year) && org.apache.commons.lang.StringUtils.isNotBlank(cycle)){
//调整日历
Calendar calendar = Calendar.getInstance();
calendar.set(Integer.valueOf(year), (Integer.valueOf(cycle) - 1) * 3 + 0, 1);//获取指定年和季度的大致开始时间
//计算开始和结束时间
DateTime dateTime = DateUtil.beginOfQuarter(calendar.getTime());
DateTime dateTime1 = DateUtil.endOfQuarter(calendar.getTime());
return AjaxResult.success("获取成功",new String[]{DateUtil.format(dateTime, "yyyy-MM-dd"),DateUtil.format(dateTime1, "yyyy-MM-dd")});
}else if(org.apache.commons.lang.StringUtils.isNotBlank(year)){
DateTime dateTime = DateUtil.beginOfYear(DateUtil.parse(year, "yyyy"));
DateTime dateTime1 = DateUtil.endOfYear(DateUtil.parse(year, "yyyy"));
return AjaxResult.success("获取成功",new String[]{DateUtil.format(dateTime, "yyyy-MM-dd"),DateUtil.format(dateTime1, "yyyy-MM-dd")});
}
return AjaxResult.error("参数错误,请重新选择");
}
<el-dialog
title="计算周期开始结束时间"
:visible.sync="cycleData.show"
width="25%"
append-to-body
>
<el-form ref="cycleData" :model="cycleData" label-width="80px">
<el-form-item label="年">
<el-date-picker
v-model="cycleData.year"
type="year"
format="yyyy"
value-format="yyyy"
placeholder="选择年"
>
</el-date-picker>
</el-form-item>
<el-form-item label="季度">
<el-select v-model="cycleData.cycle" placeholder="请选择">
<el-option
v-for="item in cycleData.cycleOptions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="月">
<el-date-picker
v-model="cycleData.month"
type="month"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择月"
>
</el-date-picker>
</el-form-item>
<el-form-item label="星期">
<el-date-picker
v-model="cycleData.week"
type="week"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
:picker-options="{ firstDayOfWeek: 1 }"
placeholder="选择周"
>
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="getStartAndEndTime">确 定</el-button>
<el-button @click="cycleData.show = false">取 消</el-button>
</div>
</el-dialog>
cycleData: {
show: false,
year: "",
cycle: "", //季度
month: "",
week: "",
cycleOptions: [
{ id: 1, name: "第一季度" },
{ id: 2, name: "第二季度" },
{ id: 3, name: "第三季度" },
{ id: 4, name: "第四季度" },
],
},
openCycle() {
this.cycleData.show = true;
},
getStartAndEndTime() {
getStartAndEndTime(
this.cycleData.year == null ? "" : this.cycleData.year,
this.cycleData.cycle == null ? "" : this.cycleData.cycle,
this.cycleData.month == null ? "" : this.cycleData.month,
this.cycleData.week == null ? "" : this.cycleData.week
).then((response) => {
this.searchDate = response.data;
this.cycleData.show = false;
});
},