feat: add skills and subjects

This commit is contained in:
lbaf23 2021-08-14 13:50:37 +08:00
parent 9b1daab60b
commit 0dadbb1457
4 changed files with 84 additions and 3 deletions

View File

@ -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()
}

View File

@ -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
}

View File

@ -85,6 +85,12 @@ const ProjectApi = {
url: `/project/${pid}/favourite/remove`,
method: 'post',
})
},
getSubjectsAndSkills(pid) {
return request({
url: `/project/${pid}/subjects-skills`,
method: 'get'
})
}
}

View File

@ -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}