先上圖:
實現這個回顯有兩種實現方式:
第一種:在java后台實現:
@Override
public Page<LogQueryVo> query( PageQueryParam<LogQueryDto> pageQueryParam,
String collegeId) {
if (StringUtils.isNotEmpty(collegeId)) {
collegeId = collegeId.replaceAll(" GLDWH ", " KKDWH ");
}
String yearTerm = pageQueryParam.getParam().getYearTerm();
//一進入查詢主頁按當前選課學年學期查詢
if (yearTerm == "") {
String semester = courseHeatStatisticsMapper.getSemester(); // 查詢選課學年學期
pageQueryParam.getParam().setYearTerm(semester); // 設置選課學年學期
}
// 分頁和排序
PageHelper.startPage(pageQueryParam.getPageNo(), pageQueryParam.getPageSize());
List<LogQueryVo> logQueryVolist = logQueryMapper.select(pageQueryParam.getParam(), collegeId);
PageInfo<LogQueryVo> pageInfo = new PageInfo<LogQueryVo>(logQueryVolist);
Page<LogQueryVo> page = new Page<LogQueryVo>();
page.setTotal((int) pageInfo.getTotal());
page.setRows(pageInfo.getList());
return page;
}
顯示學年學期只需要在前端發送一個請求就可以了。
但是這種做法可能效率比較低。
=============================================================================================
在前端處理顯示當前的學年學期,然后每次改變學年學期下拉框時,再重新發送請求到后台查詢數據,這樣不用每次查詢時都要在后台查詢一次學年學期。
前端代碼:
class ProcessLogQueryBox extends Component {
constructor(props) {
super(props);
this.state = {
display: 'block',
iconCX: 'caret-down',
yearTermList: [] , //學年學期下拉
yearTerm:'',
nowYearTerm:'' //默認選中當前學年學期
}
}
componentWillMount(){
//獲取當前學年學期
post("/choose-course-manage-server/courseHeatStatistics/selectSemester").then((reData) => {
this.setState({
nowYearTerm:reData.data
})
this.props.modifySearchParam("yearTerm", reData.data)
this.onSearch();
});
}
//收縮查詢條件
handleClickShow = () => {
if (this.state.display == 'block') {
this.setState({display: 'none', iconCX: 'caret-up'})
} else {
this.setState({display: 'block', iconCX: 'caret-down'})
}
}
//查詢
onSearch=(val)=>{
this.props.onSearch(val);
}
//重置
reset = () => {
this.setState({
nowYearTerm:''
})
//清空表單中的數據的功能,不過本組件功能的實現因為是使用的子組件的表單在修改值onChange的時候就改了父組件的state,所以重置值需要在父組件的重置方法中加上searchParam:{},
this.props.form.resetFields();
//調用父組件的方法。使用this.props表示父組件的屬性
this.props.resetSearchParam();
}
//獲取學年學期下拉框
getYearTermList = () => {
CollegeGradeProAxios.getAcadYear(data => {
this.setState({yearTermList: data});
});
}
//渲染頁面
render() {
const span = 6;
const formItemLayout = {
labelCol: {span: 8},
wrapperCol: {span: 16}
}
const {getFieldDecorator} = this.props.form;
return (
<div className="manage-main">
{/*======================================查詢條件============================================*/}
<Form layout="inline" className="manage-form">
<Row gutter={24} className="manage-form-default">
<Col span={span}>
<FormItem {...formItemLayout} label="學年學期">
{getFieldDecorator('yearTerm',{initialValue:this.state.nowYearTerm})(
<ComSelect
showSearch
placeholder="請選擇"
allowClear
optionFilterProp="children"
onChange={(value) => this.props.modifySearchParam("yearTerm", value)}
onFocus={this.getYearTermList}
>
{this.state.yearTermList.map(val =>
<Option key={val.acadYearSemester}>{val.acadYearSemester}</Option>
)}
</ComSelect>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="學號">
{getFieldDecorator('stuNum')(
<Input
onChange={(e) => this.props.modifySearchParam("stuNum", e.target.value)}
/>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="課程名稱">
{getFieldDecorator('courseName')(
<Input
onChange={(e) => this.props.modifySearchParam("courseName", e.target.value)}
/>
)}
</FormItem>
</Col>
<Col span={span}>
<div className="manage-form-default-btn">
<Button type="primary" htmlType="submit"
onClick={this.onSearch}>查詢</Button>
<Button htmlType="submit"
onClick={this.reset}>重置</Button>
<span onClick={() => this.setState({iconCX: !this.state.iconCX})}
className="manage-form-default-icon">
{this.state.iconCX ? '展開' : '收起'}
<Icon type={this.state.iconCX ? 'down' : 'up'}/>
</span>
</div>
</Col>
</Row>
<Row gutter={24} className="manage-form-bot"
style={{display: this.state.iconCX ? 'none' : 'block'}}>
<Col span={span}>
<FormItem {...formItemLayout} label="IP地址">
{getFieldDecorator('ipAddress')(
<Input
onChange={(e) => this.props.modifySearchParam("ipAddress", e.target.value)}
/>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="第幾志願">
{getFieldDecorator('volunteerNum')(
<Input
onChange={(e) => this.props.modifySearchParam("volunteerNum", e.target.value)}
/>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="選課方式">
{getFieldDecorator('electiveWay')(
<ComSelect placeholder="請選擇"
allowClear
optionFilterProp="children"
onChange={(value) => this.props.modifySearchParam("electiveWay", value)}
>
<Option key={'0'}>搶選</Option>
<Option key={'1'}>篩選</Option>
<Option key={'2'}>志願(體育)</Option>
</ComSelect>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="是否跨校區選課">
{getFieldDecorator('crossCampus')(
<ComSelect placeholder="請選擇"
allowClear
optionFilterProp="children"
onChange={(value) => this.props.modifySearchParam("crossCampus", value)}
>
<Option key={1} value="1">{"是"}</Option>
<Option key={0} value="0">{"否"}</Option>
</ComSelect>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="是否跨專業選課">
{getFieldDecorator('crossProfessional')(
<ComSelect placeholder="請選擇"
allowClear
optionFilterProp="children"
onChange={(value) => this.props.modifySearchParam("crossProfessional", value)}
>
<Option key={1}>{"是"}</Option>
<Option key={0}>{"否"}</Option>
</ComSelect>
)}
</FormItem>
</Col>
<Col span={span}>
<FormItem {...formItemLayout} label="選課成功標志">
{getFieldDecorator('successFlag')(
<ComSelect placeholder="請選擇"
allowClear
optionFilterProp="children"
onChange={(value) => this.props.modifySearchParam("successFlag", value)}
>
<Option key={1}>{"退選"}</Option>
<Option key={2}>{"失敗"}</Option>
<Option key={3}>{"待篩選"}</Option>
<Option key={4}>{"已選"}</Option>
</ComSelect>
)}
</FormItem>
</Col>
</Row>
</Form>
</div>
)
}
}
const ProcessLogQueryBoxForm = Form.create()(ProcessLogQueryBox);
export default ProcessLogQueryBoxForm
