入学课程学习

This commit is contained in:
zhanglipeng 2021-10-18 09:08:50 +08:00
parent 808273c513
commit bae9689b76
9 changed files with 354 additions and 0 deletions

View File

@ -9,6 +9,14 @@ export function listAdmissioncourse(query) {
});
}
// 查询流程下拉树结构
export function treeselect() {
return request({
url: '/benyi/admissioncourse/treeselect',
method: 'get'
})
}
// 查询入学准备课程详细
export function getAdmissioncourse(id) {
return request({

View File

@ -0,0 +1,170 @@
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="4" :xs="24">
<div class="head-container">
<el-input
v-model="name"
placeholder="请输入名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="treeOptions"
:props="defaultProps"
:expand-on-click-node="true"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="20" :xs="24">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span class="box-card-title">{{ title }}</span>
</div>
<div class="text item">
<div class="pad-left" v-html="content"></div>
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { listDayflowtask } from "@/api/benyi/dayflow/dayflowtask";
import { listStandard } from "@/api/benyi/dayflow/biaozhun/standard";
import { listUnscramble } from "@/api/benyi/dayflow/unscramble";
import { treeselect, getAdmissioncourse } from "@/api/benyi/admissioncourse";
export default {
name: "Admissioncoursestudy",
data() {
return {
//
name: undefined,
// id
id: undefined,
//
title: "入学准备课程",
//
content: "",
//
treeOptions: [],
//
defaultProps: {
children: "children",
label: "label",
},
//
queryParams: {
detailId: undefined,
},
};
},
watch: {
//
name(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.getTreeselect();
},
methods: {
/** 查询部门下拉树结构 */
getTreeselect() {
treeselect().then((response) => {
this.treeOptions = response.data;
});
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.detailId = data.id;
getAdmissioncourse(this.queryParams.detailId).then((response) => {
this.content = response.data.content;
});
},
},
};
</script>
<style lang="scss" scoped>
.text {
font-size: 14px;
}
.item {
margin-bottom: 18px;
line-height: 22px;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both;
}
.box-card-title {
display: flex;
align-items: center;
font-size: 16px;
&::before {
content: "";
margin-right: 8px;
width: 4px;
height: 16px;
background: #1890ff;
}
&.mr {
margin: 10px 0;
}
}
.box-card-case {
margin: 0;
font-size: 14px;
font-weight: 700;
display: flex;
align-items: center;
&::before {
content: "";
margin-right: 8px;
width: 4px;
height: 14px;
background: #2c3e50;
}
&.mr {
margin: 10px 0;
}
}
.box-card-info {
font-size: 14px;
font-weight: 700;
}
.pad-left {
padding-left: 15px;
}
//
div {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>

View File

@ -73,6 +73,14 @@ public class TreeSelect implements Serializable
this.children = byMicrocourse.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
//下拉树构造器
public TreeSelect(ByAdmissioncourse byAdmissioncourse) {
this.id = byAdmissioncourse.getId();
this.label = byAdmissioncourse.getTitlename();
this.children = byAdmissioncourse.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
//下拉树构造器
public TreeSelect(ByFamilyedu byFamilyedu) {

View File

@ -44,6 +44,16 @@ public class ByAdmissioncourseController extends BaseController {
return getDataTable(list);
}
/**
* 查询入学准备课程列表
*/
@Log(title = "入学准备课程学习", businessType = BusinessType.QUERY)
@GetMapping("/treeselect")
public AjaxResult treeselect(ByAdmissioncourse byAdmissioncourse) {
List<ByAdmissioncourse> list = byAdmissioncourseService.selectByAdmissioncourseListTree(byAdmissioncourse);
return AjaxResult.success(byAdmissioncourseService.buildByAdmissioncourseTreeSelect(list));
}
/**
* 导出入学准备课程列表
*/

View File

@ -5,6 +5,9 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 入学准备课程对象 by_admissioncourse
*
@ -43,6 +46,19 @@ public class ByAdmissioncourse extends BaseEntity {
@Excel(name = "序号")
private Long sort;
public List<ByAdmissioncourse> getChildren() {
return children;
}
public void setChildren(List<ByAdmissioncourse> children) {
this.children = children;
}
/**
* 树状子类
*/
private List<ByAdmissioncourse> children = new ArrayList<ByAdmissioncourse>();
public void setId(Long id) {
this.id = id;
}

View File

@ -27,6 +27,14 @@ public interface ByAdmissioncourseMapper {
*/
public List<ByAdmissioncourse> selectByAdmissioncourseList(ByAdmissioncourse byAdmissioncourse);
/**
* 查询入学准备课程列表
*
* @param byAdmissioncourse 入学准备课程
* @return 入学准备课程程集合
*/
public List<ByAdmissioncourse> selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse);
/**
* 新增入学准备课程
*

View File

@ -2,7 +2,9 @@ package com.ruoyi.project.benyi.service;
import java.util.List;
import com.ruoyi.framework.web.domain.TreeSelect;
import com.ruoyi.project.benyi.domain.ByAdmissioncourse;
import com.ruoyi.project.benyi.domain.ByMicrocourse;
/**
* 入学准备课程Service接口
@ -27,6 +29,30 @@ public interface IByAdmissioncourseService {
*/
public List<ByAdmissioncourse> selectByAdmissioncourseList(ByAdmissioncourse byAdmissioncourse);
/**
* 查询入学准备课程列表
*
* @param byAdmissioncourse 入学准备课程
* @return 入学准备课程程集合
*/
public List<ByAdmissioncourse> selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse);
/**
* 构建前端所需要树结构
*
* @param byAdmissioncourses 部门列表
* @return 树结构列表
*/
public List<ByAdmissioncourse> buildByAdmissioncourseDetailTree(List<ByAdmissioncourse> byAdmissioncourses);
/**
* 构建前端所需要下拉树结构
*
* @param byAdmissioncourses 部门列表
* @return 下拉树结构列表
*/
public List<TreeSelect> buildByAdmissioncourseTreeSelect(List<ByAdmissioncourse> byAdmissioncourses);
/**
* 新增入学准备课程
*

View File

@ -1,8 +1,14 @@
package com.ruoyi.project.benyi.service.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.TreeSelect;
import com.ruoyi.project.benyi.domain.ByMicrocourse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.benyi.mapper.ByAdmissioncourseMapper;
@ -42,6 +48,100 @@ public class ByAdmissioncourseServiceImpl implements IByAdmissioncourseService {
return byAdmissioncourseMapper.selectByAdmissioncourseList(byAdmissioncourse);
}
/**
* 查询入学准备课程列表
*
* @param byAdmissioncourse 入学准备课程
* @return 入学准备课程程集合
*/
public List<ByAdmissioncourse> selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse){
return byAdmissioncourseMapper.selectByAdmissioncourseListTree(byAdmissioncourse);
}
/**
* 构建前端所需要树结构
*
* @param byAdmissioncourses 部门列表
* @return 树结构列表
*/
@Override
public List<ByAdmissioncourse> buildByAdmissioncourseDetailTree(List<ByAdmissioncourse> byAdmissioncourses) {
//System.out.println("start---");
List<ByAdmissioncourse> returnList = new ArrayList<ByAdmissioncourse>();
List<Long> tempList = new ArrayList<Long>();
for (ByAdmissioncourse item : byAdmissioncourses) {
tempList.add(item.getId());
}
for (Iterator<ByAdmissioncourse> iterator = byAdmissioncourses.iterator(); iterator.hasNext(); ) {
ByAdmissioncourse item = (ByAdmissioncourse) iterator.next();
//System.out.println("test==="+!tempList.contains(item.getParentId()));
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(item.getParentId())) {
recursionFn(byAdmissioncourses, item);
returnList.add(item);
}
}
if (returnList.isEmpty()) {
returnList = byAdmissioncourses;
}
return returnList;
}
/**
* 构建前端所需要下拉树结构
*
* @param byAdmissioncourses 部门列表
* @return 下拉树结构列表
*/
@Override
public List<TreeSelect> buildByAdmissioncourseTreeSelect(List<ByAdmissioncourse> byAdmissioncourses) {
List<ByAdmissioncourse> byAdmissioncourseTrees = buildByAdmissioncourseDetailTree(byAdmissioncourses);
return byAdmissioncourseTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
}
/**
* 递归列表
*/
private void recursionFn(List<ByAdmissioncourse> list, ByAdmissioncourse t) {
// 得到子节点列表
List<ByAdmissioncourse> childList = getChildList(list, t);
t.setChildren(childList);
for (ByAdmissioncourse tChild : childList) {
if (hasChild(list, tChild)) {
// 判断是否有子节点
Iterator<ByAdmissioncourse> it = childList.iterator();
while (it.hasNext()) {
ByAdmissioncourse n = (ByAdmissioncourse) it.next();
recursionFn(list, n);
}
}
}
}
/**
* 得到子节点列表
*/
private List<ByAdmissioncourse> getChildList(List<ByAdmissioncourse> list, ByAdmissioncourse t) {
List<ByAdmissioncourse> tlist = new ArrayList<ByAdmissioncourse>();
Iterator<ByAdmissioncourse> it = list.iterator();
while (it.hasNext()) {
ByAdmissioncourse n = (ByAdmissioncourse) it.next();
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) {
//System.out.println("parentid="+n.getParentId().longValue()+"---"+t.getId().longValue());
tlist.add(n);
}
}
return tlist;
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<ByAdmissioncourse> list, ByAdmissioncourse t) {
return getChildList(list, t).size() > 0 ? true : false;
}
/**
* 新增入学准备课程
*

View File

@ -27,6 +27,14 @@
</where>
</select>
<select id="selectByAdmissioncourseListTree" parameterType="ByAdmissioncourse" resultMap="ByAdmissioncourseResult">
<include refid="selectByAdmissioncourseVo"/>
<where>
<if test="titlename != null and titlename != ''">and titlename like concat('%', #{titlename}, '%')</if>
</where>
order by sort
</select>
<select id="selectByAdmissioncourseById" parameterType="Long" resultMap="ByAdmissioncourseResult">
<include refid="selectByAdmissioncourseVo"/>
where id = #{id}