dbcgit 5 жил өмнө
parent
commit
87bd45b1b0

+ 82 - 74
backend/src/dashoo.cn/modi_webapi/app/api/course/course.go

@@ -1,76 +1,112 @@
 package course
 
 import (
-	"dashoo.cn/micro_libary/response"
 	"dashoo.cn/modi_webapi/app/model/course"
 	service "dashoo.cn/modi_webapi/app/service/course"
 
+	"dashoo.cn/modi_webapi/library/request"
+	"dashoo.cn/modi_webapi/library/response"
+	"fmt"
 	"github.com/gogf/gf/net/ghttp"
+	"github.com/gogf/gf/os/glog"
+	"github.com/gogf/gf/os/gtime"
+	"github.com/gogf/gf/util/gvalid"
 )
 
 // 课程管理API管理对象
 type Controller struct {
 }
 
-// 注册请求参数,用于前后端交互参数格式约定
-type GetListRequest struct {
-	course.AddOrUpdateReq
+//  添加一条课程信息
+func (c *Controller) AddCourse(r *ghttp.Request){
+	Course := new(course.Entity)
+	if err := r.Parse(Course); err != nil {
+		// 数据验证错误
+		if v, ok := err.(*gvalid.Error); ok {
+			response.Json(r, 1, v.FirstString())
+			r.ExitAll()
+		}
+		// 其他错误
+		response.Json(r, 1, err.Error())
+		r.ExitAll()
+	}
+	realName := r.GetParamVar("realname").String()
+	currentTime := gtime.Now()
+	Course.CreatedTime = currentTime
+	Course.UpdatedBy = realName
+
+	if result,err := course.Insert(Course); err != nil {
+		response.Json(r, 1, err.Error())
+	} else {
+		var records response.PagedRecords
+		id, _ := result.LastInsertId()
+		Course.Id = int(id)
+		records.Records = Course
+		response.Json(r, 0, "", records)
+	}
 }
 
-// 保存课程信息
-func (c *Controller) Save(r *ghttp.Request) {
-	// tenant 租户模式
-	tenant := r.Header.Get("Tenant")
-	var addOrUpdateReq *course.AddOrUpdateReq
-	// 赋值并// 校验参数
-	if err := r.Parse(&addOrUpdateReq); err != nil {
+//  获取课程管理列表
+func (c *Controller) GetAllCourse(r *ghttp.Request){
+	page := request.GetPageInfo(r)
+	where := ""
+
+	if year := r.GetInt("Year"); year != 0 {
+		if where == ""{
+			where = fmt.Sprintf(" Year = %v", year)
+		} else {
+			where += fmt.Sprintf(" AND Year = %v", year)
+		}
+	}
+
+	if term := r.GetInt("Term"); term != 0 {
+		if where == ""{
+			where = fmt.Sprintf(" Term LIKE '%%%v%%'", term)
+		} else {
+			where += fmt.Sprintf(" AND Term LIKE '%%%v%%'", term)
+		}
+	}
+
+	var result []course.Entity
+	if err := course.GetAllCourse(page, where, &result); err != nil{
+		if err.Error() == "sql: no rows in result set"{
+			response.Json(r, 0, "")
+			return
+		}
 		response.Json(r, -1, err.Error())
+	}else {
+		count, err1 := course.FindCourseCount(where)
+		if err1 != nil {
+			response.Json(r, -1, err1.Error())
+		} else {
+			var records response.PagedRecords
+			records.Total = count
+			records.Records = result
+			response.Json(r, 0, "", records)
+		}
 	}
+}
+
+// Delete 删除课程主表信息
+func (c *Controller) DeleteCourse(r *ghttp.Request) {
+	// tenant 租户模式
+	tenant := r.Header.Get("Tenant")
+	id := r.GetInt("id")
+	glog.Info(id)
 
-	// 初始化
+	// 初始化学生service
 	servcie, err := service.NewCourseService(tenant)
 	if err != nil {
 		response.Json(r, 1, err.Error())
 	}
 
-	// 判断是新增还是删除,获取的id为空新增,不为空则更新
-	if addOrUpdateReq.Id > 0 {
-		if newStudent, err := servcie.Update(addOrUpdateReq); err != nil {
-			response.Json(r, 1, err.Error())
-		} else {
-			response.Json(r, 0, "更新成功", newStudent)
-		}
+	if err := servcie.Delete(id); err != nil {
+		response.Json(r, 1, err.Error())
 	} else {
-		addOrUpdateReq.Id = 0
-		if newId, err := servcie.Add(addOrUpdateReq); err != nil {
-			response.Json(r, 1, err.Error())
-		} else {
-			response.Json(r, 0, "新建成功", newId)
-		}
+		response.Json(r, 0, "删除成功")
 	}
-
 }
 
-// DeleteStudentById 删除信息,更新信息删除状态isDel=1
-//func (c *Controller) DeleteById(r *ghttp.Request) {
-//	// tenant 租户模式
-//	tenant := r.Header.Get("Tenant")
-//	id := r.GetInt("id")
-//	glog.Info(id)
-//
-//	// 初始化学生service
-//	servcie, err := service.NewInformationService(tenant)
-//	if err != nil {
-//		response.Json(r, 1, err.Error())
-//	}
-//
-//	if err := servcie.Delete(id); err != nil {
-//		response.Json(r, 1, err.Error())
-//	} else {
-//		response.Json(r, 0, "删除成功")
-//	}
-//}
-//
 //// GetDetailById 根据id信息详情
 //func (c *Controller) GetDetailById(r *ghttp.Request) {
 //	// tenant 租户模式
@@ -92,31 +128,3 @@ func (c *Controller) Save(r *ghttp.Request) {
 //
 //}
 //
-//// GetPageList 分页查询信息列表
-//func (c *Controller) GetPageList(r *ghttp.Request) {
-//	// tenant 租户模式
-//	tenant := r.Header.Get("Tenant")
-//	// 初始化service
-//	servcie, err := service.NewCourseService(tenant)
-//	if err != nil {
-//		response.Json(r, 1, err.Error())
-//	}
-//	// 分页查询信息列表
-//	var selectPageReq information.SelectPageReq
-//	// 赋值并// 校验参数
-//	if err := r.Parse(&selectPageReq); err != nil {
-//		response.Json(r, -1, err.Error())
-//	}
-//	if informationList, total, err := servcie.GetPageList(&selectPageReq); err != nil {
-//		response.Json(r, -1, err.Error())
-//	} else {
-//		var records response.PagedRecords
-//		records.Current = selectPageReq.Page.Current
-//		records.Size = selectPageReq.Page.Size
-//		if total > 0 {
-//			records.Total = total
-//			records.Records = informationList
-//		}
-//		response.Json(r, 0, "ok", records)
-//	}
-//}

+ 1 - 22
backend/src/dashoo.cn/modi_webapi/app/model/course/course.go

@@ -3,7 +3,6 @@ package course
 import (
 	"dashoo.cn/modi_webapi/library/request"
 	"github.com/gogf/gf/frame/g"
-	"github.com/gogf/gf/os/gtime"
 )
 
 
@@ -19,24 +18,4 @@ func GetAllCourse(page request.PageInfo, where string, result *[]Entity)(err err
 func FindCourseCount(where string)(int, error){
 	return recordsTable.Where(where).Count()
 }
-// 新增/修改课程参数
-type AddOrUpdateReq struct {
-	Id         int         `json:"id"`
-	CourseId   int         `json:"courseId"`               // 课程表ID
-	Year       int         `json:"year"`                   // 学年
-	Term       int         `json:"term"`                   // 学期
-	CourseName string      `json:"coursename"`             // 课程名
-	Teacher    int         `json:"teacher"`                // 授课老师
-	Local      int         `json:"local"`                  // 实验地点
-	Class      int         `json:"class"`                  // 授课班级
-	Mark       int         `json:"mark"`                   // 学分
-	Num        int         `json:"num"`                    // 人数
-	WeekTitle  string      `json:"weektitle"`              // 教学周
-	DayOfWeek  int         `json:"dayofweek"`              // 周次1-7
-	Time       string      `json:"time"`                   // 节次
-	Status     int         `v:"required"     json:"status"`// 状态 发布状态
-	IsDel      int         `orm:"IsDel"`                     // 是否删除 0未删除 1已删除
-	Content    string      `v:"required"     json:"content"` // 信息内容
-	CreateTime *gtime.Time `orm:"CreatedTime"`               //
-	UpdateTime *gtime.Time `orm:"UpdatedTime"`               //
-}
+

+ 30 - 11
backend/src/dashoo.cn/modi_webapi/app/model/course/course_entity.go

@@ -12,17 +12,36 @@ import (
 
 // Entity is the golang structure for table class.
 type Entity struct {
-	Id              int            `orm:"id,primary"         json:"id"`                 //
-	Name            string         `orm:"name"               json:"name"`               // 班级名称
-	Year            int            `orm:"year"               json:"year"`               // 学年
-	Term            int            `orm:"term"               json:"term"`               // 学期
-	ClassId         int            `orm:"class_id"           json:"class_id"`           //班级Id
-	CourseWeek      string         `orm:"course_week"        json:"course_week"`        // 班级名称
-	Title           string         `orm:"title"              json:"title"`              // 标题
-	Status          string         `orm:"status"             json:"status"`             // 状态
-	IsDel           int            `orm:"is_del"             json:"is_del"`             // 是否删除:1删除0未删除
-	CreateTime      *gtime.Time    `orm:"create_time"        json:"create_time"`        // 创建时间
-	UpdateTime      *gtime.Time    `orm:"update_time"        json:"update_time"`        // 更新时间
+	Id              int                          //
+	Year            int                          // 学年
+	Term            int                          // 学期
+	ClassId         int                          //班级Id
+	CourseWeek      string                       // 班级名称
+	Title           string                       // 标题
+	Status          string                       // 状态
+	CreatedBy       string                       // 创建人
+	CreatedTime      *gtime.Time                  // 创建时间
+	UpdatedBy               string                                // 更新人
+}
+type SubEntity struct {
+	Id         int            `orm:"id,primary"         json:"id"`                 //
+	CourseId   int                 `json:"courseId"`                                         // 课程表ID
+	Year       int                 `json:"year"`                                             // 学年
+	Term       int                 `json:"term"`                                             // 学期
+	CourseName string              `json:"coursename"`                                       // 课程名
+	Teacher    int                 `json:"teacher"`                                          // 授课老师
+	Local      int                 `json:"local"`                                            // 实验地点
+	Class      int                 `json:"class"`                                            // 授课班级
+	Mark       int                 `json:"mark"`                                             // 学分
+	Num        int                 `json:"num"`                                              // 人数
+	WeekTitle  string              `json:"weektitle"`                                        // 教学周
+	DayOfWeek  int                 `json:"dayofweek"`                                        // 周次1-7
+	Time       string              `json:"time"`                                            // 节次
+	Status     int                  `v:"required"            json:"status"`                 // 状态 发布状态
+	IsDel           int            `orm:"is_del"             json:"is_del"`                 // 是否删除:1删除0未删除
+	CreateTime      *gtime.Time                                                            // 创建时间
+	UpdateTime      *gtime.Time                                                            // 更新时间
+	UpdatedBy               string        `xorm:"VARCHAR(32)"`                   // 更新人
 }
 
 // OmitEmpty sets OPTION_OMITEMPTY option for the model, which automatically filers

+ 0 - 73
backend/src/dashoo.cn/modi_webapi/app/service/course/course.go

@@ -4,11 +4,6 @@ import (
 	"dashoo.cn/micro_libary/db"
 	"dashoo.cn/modi_webapi/app/common"
 	"dashoo.cn/modi_webapi/app/model/course"
-	"dashoo.cn/modi_webapi/app/model/information"
-	"database/sql"
-	"fmt"
-	"github.com/gogf/gf/errors/gerror"
-	"github.com/gogf/gf/os/gtime"
 )
 
 // 课程定义
@@ -23,63 +18,6 @@ func NewCourseService(tenant string) (CourseService, error) {
 	return servcie, err
 }
 
-// GetPageList 分页信息列表
-func (s CourseService) GetPageList(param *course.AddOrUpdateReq) (list []*course.AddOrUpdateReq, total int, err error) {
-
-	where := common.WhereString.ValidWhere
-	if year := param.Year; year != 0 {
-		where += fmt.Sprintf(" AND year LIKE '%%%v%%'", year)
-	}
-	if term := param.Term; term != 0 {
-		where += fmt.Sprintf(" AND term LIKE '%%%v%%'", term)
-	}
-	//if status := param.Status; status > -1 {
-	//	where += fmt.Sprintf(" AND Status = %v", param.Status)
-	//}
-	// 查询总数
-	total, err = s.SafeModel.Where(where).Count()
-	if err != nil {
-		return nil, -1, gerror.New("读取行数失败")
-	}
-	// todo more 增加查询条件
-	// 查询列表
-	model := s.SafeModel.Page(int(param.Page.Current), int(param.Page.Size)).Where(where)
-	var result []*course.AddOrUpdateReq
-	err = model.Structs(&result)
-	// 如果未查到列表返回空
-	if err == sql.ErrNoRows {
-		return nil, 0, nil
-	}
-	return result, total, err
-
-}
-
-// Update 更新信息
-func (s CourseService) Update(param *course.AddOrUpdateReq) (*information.SearchEntity, error) {
-	information, err := s.GetByID(param.Id)
-	if err != nil {
-		return nil, err
-	}
-
-	// 设置更新时间
-	param.UpdateTime = gtime.Now()
-	param.CreateTime = information.CreateTime
-	if _, err = s.SafeModel.WherePri(param.Id).Update(param); err != nil {
-		return nil, err
-	}
-	return information, nil
-}
-
-// GetByID 通过id获取信息
-func (s CourseService) GetByID(id int) (res *course.SearchEntity, err error) {
-	// 关联查询
-	where := common.WhereString.ValidWhere
-	model := s.SafeModel.Where("id", id).Where(where)
-	var result *information.SearchEntity
-	err = model.Struct(&result)
-	return result, nil
-}
-
 // 删除信息
 func (s CourseService) Delete(id int) error {
 	//设置更新时间
@@ -88,14 +26,3 @@ func (s CourseService) Delete(id int) error {
 	}
 	return nil
 }
-
-// Add 新增信息
-func (s CourseService) Add(param *course.AddOrUpdateReq) (id int64, err error) {
-	param.CreateTime = gtime.Now()
-	if result, err := s.SafeModel.Insert(param); err != nil {
-		return 0, err
-	} else {
-		id, _ = result.LastInsertId()
-	}
-	return id, nil
-}

+ 3 - 0
backend/src/dashoo.cn/modi_webapi/router/router.go

@@ -2,6 +2,7 @@ package router
 
 import (
 	"dashoo.cn/modi_webapi/app/api/class"
+	"dashoo.cn/modi_webapi/app/api/course"
 	"dashoo.cn/modi_webapi/app/api/duty"
 	"dashoo.cn/modi_webapi/app/api/information"
 	"dashoo.cn/modi_webapi/app/api/instrument"
@@ -54,6 +55,8 @@ func init() {
 		{"All", "/class", new(class.Controller)},
 		// 值班表管理
 		{"All", "/duty", new(duty.Controller)},
+		// 课程管理
+		{"All", "/course", new(course.Controller)},
 		// 配置测试路由
 		//{"ALL", "/class", new(demo.ClassController)},
 		//{"ALL", "/student", new(demo.StudentController)},

+ 9 - 18
frontend_web/src/api/course.js

@@ -4,36 +4,27 @@ export default {
    // 获取课程列表
    getPageList(params) {
     return request({
-      url: process.env.VUE_APP_API + 'course/getpagelist',
+      url: process.env.VUE_APP_API + 'course/getallcourse',
       method: 'get', 
       params: params
     })
   },
 
-  getById(params) {
+   // 新增课程管理信息
+   addCourse(data) {
     return request({
-      url: process.env.VUE_APP_API + 'information/getdetailbyid',
-      method: 'get', 
-      params: params
+      url: process.env.VUE_APP_API + 'course/addcourse',
+      method: 'post',
+      data: data
     })
   },
-
-  //删除产品信息
-   delete(params) {
+   // 删除主表课程信息
+   deleteCourse(params) {
     return request({
-      url: process.env.VUE_APP_API + 'information/deletebyid',
+      url: process.env.VUE_APP_API02 + 'course/deletecourse',
       method: 'delete',
       params: params
     })
-  },
-  
-   // 保存产品方案
-  save(data) {
-    return request({
-      url: process.env.VUE_APP_API + 'course/save',
-      method: 'post',
-      data: data
-    })
   }
   
 }

+ 42 - 89
frontend_web/src/views/course/components/courseInfoDialog.vue

@@ -3,17 +3,22 @@
              :visible.sync="dialogvisible"
              @opened="dialogOpen"
              @closed="dialogClose"
-             width="65%">
+             width="60%">
     <el-form size="mini"
              :model="course"
-             label-width="100px"
+             label-width="120px"
              ref="courseForm">
-      <el-row :gutter="24"
-              class="donorsaddformcss">
-
+      <el-row class="courseaddformcss">
+        <el-col :span="6">
+          <el-form-item label="标题"
+                        prop="Title">
+            <el-input v-model="course.Title"
+                      placeholder="请输入"></el-input>
+          </el-form-item>
+        </el-col>
         <el-col :span="6">
           <el-form-item label="学年"
-                        prop="content">
+                        prop="Year">
             <el-input v-model="course.Year"
                       placeholder="请输入"></el-input>
           </el-form-item>
@@ -34,62 +39,32 @@
           </el-form-item>
         </el-col>
       </el-row>
+      <el-row class="courseaddformcss">
+        <el-col :span="6">
+          <el-form-item label="教学周"
+                        prop="title">
+            <el-input v-model="course.CourseWeek"
+                      placeholder="请输入"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="状态"
+                        label-width="120px"
+                        style="margin-top:-5px;">
+            <el-radio-group v-model="course.Status">
+              <el-radio class="radio"
+                        label="1">发布</el-radio>
+              <el-radio class="radio"
+                        label="0">草稿</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
     </el-form>
-    <el-table ref="multipleTable"
-              :data="activities"
-              border
-              fit
-              tooltip-effect="dark"
-              style="width: 100%"
-              @sort-change="orderby"
-              height="100%">
-      <el-table-column prop="title"
-                       fit
-                       min-width="80px"
-                       label="教学周"
-                       align="center"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="content"
-                       label="周次"
-                       align="center"
-                       min-width="160px"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="content"
-                       label="节次"
-                       align="center"
-                       min-width="160px"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="content"
-                       label="实验课程名称"
-                       align="center"
-                       min-width="160px"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="status"
-                       align="center"
-                       min-width="40px"
-                       label="学分"
-                       show-overflow-tooltip
-                       :formatter="formatStatus"></el-table-column>
-      <el-table-column prop="createdtime"
-                       align="center"
-                       min-width="120px"
-                       label="授课老师"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="createdtime"
-                       align="center"
-                       min-width="120px"
-                       label="人数"
-                       show-overflow-tooltip></el-table-column>
-      <el-table-column prop="createdtime"
-                       align="center"
-                       min-width="120px"
-                       label="实验地点"
-                       show-overflow-tooltip></el-table-column>
-    </el-table>
 
     <span slot="footer">
       <el-button size="mini"
-                 @click="save(0)">保存</el-button>
+                 @click="save()">保存</el-button>
       <el-button size="mini"
                  @click="dialogClose">关闭</el-button>
 
@@ -103,51 +78,40 @@ import CourseApi from '@/api/course'
 export default {
   name: 'courseInfoDialog',
   props: {
-    informationId: Number
   },
   data () {
     return {
+      checkAll: false,
       dialogvisible: false,
+      fileList: [],
       course: {
-        CourseId: '',
         Year: '',
         Term: '',
-        CourseName: '',
-        Teacher: '',
-        Local: '',
-        Class: '',
-        Mark: '',
-        Num: '',
-        WeekTitle: '',
-        DayOfWeek: '',
-        Time: '',
-        Status: ''
+        CourseWeek: '',
+        Title: '',
+        Status: 1,
+        CreatedTime: ''
       },
 
     }
   },
   created () {
-    this.getData()
   },
   methods: {
     dialogOpen () {
       this.course = {}
-      console.log("informationId:" + this.informationId)
       this.$refs.courseForm.resetFields()
-      this.getData()
     },
     dialogClose () {
       this.course = {}
-      console.log("informationId:" + this.informationId)
       this.$refs.courseForm.resetFields()
       this.$emit('handleClose')
       this.dialogVisible = false
     },
-    save (flag) {
+    save () {
       this.$refs.courseForm.validate(valid => {
         if (valid) {
-          this.course.status = flag
-          InformationApi.save(this.course, {})
+          CourseApi.addCourse(this.course, {})
             .then(res => {
               this.$emit('handleClose')
               this.dialogvisible = false
@@ -162,17 +126,6 @@ export default {
         }
       });
 
-    },
-    getData () {
-      if (this.informationId > 0) {
-        var id = {
-          id: this.informationId
-        }
-        InformationApi.getById(id)
-          .then(res => {
-            this.course = res
-          })
-      }
     }
   }
 }
@@ -185,7 +138,7 @@ export default {
   float: right;
 }
 
-.donorsaddformcss .el-col-8 {
+.courseaddformcss .el-col-8 {
   height: 58px;
 }
 </style>

+ 14 - 9
frontend_web/src/views/course/index.vue

@@ -71,29 +71,34 @@
           <el-button size="mini"
                      type="danger"
                      title="删除"
-                     @click="deleteinformation(scope.row)"
+                     @click="delete(scope.row)"
                      style="margin-left:5px;"
                      icon="el-icon-delete"
                      circle></el-button>
 
         </template>
       </el-table-column>
-      <el-table-column prop="title"
+      <el-table-column prop="Year"
                        fit
                        min-width="80px"
                        label="学年"
                        align="center"
                        show-overflow-tooltip></el-table-column>
-      <el-table-column prop="content"
+      <el-table-column prop="Term"
                        label="学期"
                        align="center"
                        min-width="160px"
                        show-overflow-tooltip></el-table-column>
-      <el-table-column prop="content"
+      <el-table-column prop="Title"
                        label="标题"
                        align="center"
                        min-width="160px"
                        show-overflow-tooltip></el-table-column>
+      <el-table-column prop="CourseWeek"
+                       label="教学周"
+                       align="center"
+                       min-width="160px"
+                       show-overflow-tooltip></el-table-column>
       <el-table-column prop="content"
                        label="班级"
                        align="center"
@@ -149,7 +154,8 @@ export default {
       search: {
         Term: '',
         Year: '',
-        title: '',
+        Title: '',
+        CourseWeek: '',
         status: -1,
         content: '',
         page: {
@@ -219,7 +225,6 @@ export default {
       this.$refs.informationDialog.dialogvisible = false
       this.initPageInfo()
       this.initDatas()
-      console.log("handleClose informationId" + this.informationId)
     },
     publish (information) {
       information.status = 1
@@ -243,8 +248,8 @@ export default {
       this.initDatas()
     },
 
-
-    deleteinformation (val) {
+    //  删除课程
+    delete (val) {
       let _this = this
       let params = {
         id: val.id
@@ -255,7 +260,7 @@ export default {
         type: 'warning'
       }).then(() => {
         console.log(JSON.stringify(params))
-        InformationApi.delete(params)
+        CourseApi.deleteCourse(params)
           .then(data => {
             _this.initDatas()
           })