forked from Open-CT/OpenPBL
feat: add skills and subjects
This commit is contained in:
parent
9b1daab60b
commit
0dadbb1457
|
@ -508,4 +508,34 @@ func (p *ProjectController) RemoveFavouriteProject() {
|
|||
}
|
||||
}
|
||||
p.ServeJSON()
|
||||
}
|
||||
|
||||
type SubjectsAndSkillsResponse struct {
|
||||
Code int `json:"code"`
|
||||
Subjects []string `json:"subjects"`
|
||||
Skills []string `json:"skills"`
|
||||
}
|
||||
|
||||
// GetProjectSubjectsAndSkills
|
||||
// @Title
|
||||
// @Description
|
||||
// @Param id path string true "project id"
|
||||
// @Success 200 {object} models.TeacherProject
|
||||
// @Failure 400
|
||||
// @router /:id/subjects-skills [get]
|
||||
func (p *ProjectController) GetProjectSubjectsAndSkills() {
|
||||
subjects, err := models.GetSubjects()
|
||||
skills, err := models.GetSkills()
|
||||
if err != nil {
|
||||
p.Data["json"] = SubjectsAndSkillsResponse{
|
||||
Code: 400,
|
||||
}
|
||||
} else {
|
||||
p.Data["json"] = SubjectsAndSkillsResponse{
|
||||
Code: 200,
|
||||
Subjects: subjects,
|
||||
Skills: skills,
|
||||
}
|
||||
}
|
||||
p.ServeJSON()
|
||||
}
|
|
@ -209,4 +209,19 @@ func RemoveFavourite(uid string, pid int64) (err error) {
|
|||
UserId: uid,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func GetSubjects() (subjects []string, err error) {
|
||||
err = (&ProjectSubject{}).GetEngine().
|
||||
Cols("subject").
|
||||
Distinct("subject").
|
||||
Find(&subjects)
|
||||
return
|
||||
}
|
||||
func GetSkills() (skills []string, err error) {
|
||||
err = (&ProjectSkill{}).GetEngine().
|
||||
Cols("skill").
|
||||
Distinct("skill").
|
||||
Find(&skills)
|
||||
return
|
||||
}
|
|
@ -85,6 +85,12 @@ const ProjectApi = {
|
|||
url: `/project/${pid}/favourite/remove`,
|
||||
method: 'post',
|
||||
})
|
||||
},
|
||||
getSubjectsAndSkills(pid) {
|
||||
return request({
|
||||
url: `/project/${pid}/subjects-skills`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,8 +9,10 @@ import ProjectApi from "../../../../../api/ProjectApi";
|
|||
function InfoEditPage(obj) {
|
||||
const pid = obj.pid
|
||||
|
||||
const subjects = ['语文', '数学', '英语', '科学']
|
||||
const skills = ['学习与创新技能', '信息、媒体与技术技能', '生活与职业技能']
|
||||
const iniSubjects = ['语文', '数学', '英语', '科学', '政治', '历史', '地理', '化学', '生物', '美术', '音乐']
|
||||
const iniSkills = ['信息、媒体与技术技能', '生活与职业技能', '文化理解与传承素养', '审辨思维', '创新素养', '沟通素养', '合作素养']
|
||||
const [subjects, setSubjects] = useState(iniSubjects)
|
||||
const [skills, setSkills] = useState(iniSkills)
|
||||
|
||||
const [change, setChange] = useState(false)
|
||||
|
||||
|
@ -29,6 +31,7 @@ function InfoEditPage(obj) {
|
|||
return str.split(',')
|
||||
}
|
||||
useEffect(() => {
|
||||
loadSubjectsAndSkills()
|
||||
ProjectApi.getProjectDetail(pid)
|
||||
.then((res) => {
|
||||
if (res.data.code === 200) {
|
||||
|
@ -45,6 +48,33 @@ function InfoEditPage(obj) {
|
|||
})
|
||||
}, [])
|
||||
|
||||
const loadSubjectsAndSkills = () => {
|
||||
ProjectApi.getSubjectsAndSkills(pid)
|
||||
.then(res=>{
|
||||
if (res.data.code === 200) {
|
||||
if (res.data.subjects !== null) {
|
||||
let s = res.data.subjects
|
||||
for (let i=0; i<iniSubjects.length; i++) {
|
||||
if (s.indexOf(iniSubjects[i]) < 0) {
|
||||
s.push(iniSubjects[i])
|
||||
}
|
||||
}
|
||||
setSubjects(s)
|
||||
}
|
||||
if (res.data.skills !== null) {
|
||||
let s = res.data.skills
|
||||
for (let i=0; i<iniSkills.length; i++) {
|
||||
if (s.indexOf(iniSkills[i]) < 0) {
|
||||
s.push(iniSkills[i])
|
||||
}
|
||||
}
|
||||
setSkills(s)
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(e=>{console.log(e)})
|
||||
}
|
||||
|
||||
const changeTitle = value => {
|
||||
setChange(true)
|
||||
setProjectTitle(value.target.value)
|
||||
|
@ -203,7 +233,7 @@ function InfoEditPage(obj) {
|
|||
<Col span={16}>
|
||||
<Select
|
||||
showArrow
|
||||
mode="multiple"
|
||||
mode="tags"
|
||||
placeholder="选择学科"
|
||||
value={selectedSubjects}
|
||||
onChange={handleSubjectsChange}
|
||||
|
|
Loading…
Reference in New Issue